diff --git a/vendor/.htaccess b/vendor/.htaccess
deleted file mode 100644
index 698196ae..00000000
--- a/vendor/.htaccess
+++ /dev/null
@@ -1 +0,0 @@
-Deny from all
\ No newline at end of file
diff --git a/vendor/autoload.php b/vendor/autoload.php
deleted file mode 100644
index 97db69ce..00000000
--- a/vendor/autoload.php
+++ /dev/null
@@ -1,7 +0,0 @@
-=5.3.3"
- }
-}
diff --git a/vendor/brandonwamboldt/utilphp/docs/css/docs.css b/vendor/brandonwamboldt/utilphp/docs/css/docs.css
deleted file mode 100644
index 77993435..00000000
--- a/vendor/brandonwamboldt/utilphp/docs/css/docs.css
+++ /dev/null
@@ -1,168 +0,0 @@
-body {
- background: #f4f4f4 url('../images/background.png');
- color: #333;
- font: 18px/30px "Droid Serif", "Helvetica Neue", Helvetica, Arial;
-}
-
-a {
- text-decoration: none;
- color: #f00;
- padding: 2px;
-}
-
-a:hover {
- background: #277585;
- color: #fff;
- border-radius: 3px;
-}
-
-h1, h2, h3, h4, h5, h6 {
- padding-top: 20px;
-}
-
-h2 {
- font-size: 40px;
- font-weight: normal;
- margin: 0 0 15px;
-}
-
-p {
- margin: 20px 0;
- min-width: 550px;
- max-width: 900px;
-}
-
-table, tr, td {
- margin: 0; padding: 0;
-}
-
-td {
- padding: 2px 12px 2px 0;
-}
-
-ul {
- list-style-type: circle;
- padding: 0 0 0 20px;
-}
-
-li {
- width: 500px;
- margin-bottom: 10px;
-}
-
-code, pre, tt {
- font-family: Monaco, Consolas, "Lucida Console", monospace;
- font-size: 12px;
- line-height: 18px;
- font-style: normal;
-}
-
-tt {
- padding: 0px 3px;
- background: #fff;
- border: 1px solid #ddd;
- zoom: 1;
-}
-
-code {
- margin-left: 20px;
-}
-
-pre {
- font-size: 12px;
- padding: 12px;
- background: #fff;
- margin: 0px 0 30px;
- border-radius: 0 0 2px 2px;
- box-shadow: inset 0 0 0 1px rgba(0,0,0,.15);
-}
-
-span.header {
- font-size: 24px;
- line-height: 30px;
- border-left: 10px solid #ddd;
- padding-left: 10px;
-}
-
-.desc-text code {
- margin-left: 0;
- font-size: 18px;
- color: #0E04C8;
-}
-
-#sidebar {
- background: #fff;
- position: fixed;
- top: 0; left: 0; bottom: 0;
- width: 220px;
- overflow-y: auto;
- overflow-x: hidden;
- padding: 5px 0 30px 10px;
- border-right: 1px solid #bbb;
-
- box-shadow: 0 0 20px #ccc;
- -webkit-box-shadow: 0 0 20px #ccc;
- -moz-box-shadow: 0 0 20px #ccc;
- -webkit-overflow-scrolling: touch;
-}
-
-.toc_title, .toc_title:visited {
- display: block;
- color: #000;
- margin-top: 15px;
-}
-
-.toc_title:hover {
- background: none;
- color: #f00;
-}
-
-.toc_title .version {
- font-size: 12px;
- font-weight: normal;
-}
-
-.toc_section {
- font-size: 14px;
- line-height: 24px;
- margin: 5px 0 0 0;
- padding-left: 10px;
- list-style-type: none;
-}
-
-.toc_section li {
- cursor: pointer;
- margin: 0 0 3px 0;
-}
-
-.toc_section li a {
- text-decoration: none;
- color: black;
-}
-
-.toc_section li a:hover {
- background: none;
- color: #f00;
-}
-
-.container {
- min-width: 550px;
- max-width: 1000px;
- margin: 40px 0 50px 260px;
-}
-
-#documentation section > article > p > code {
- color: #999;
-}
-
-#documentation section > article > p > code > .util_class {
- color: #bbb;
-}
-
-#documentation section > article > p > code > .func_name {
- color: #0E04C8;
-}
-
-#documentation section > article > p > code > .param {
- color: #DA72F3;
-}
diff --git a/vendor/brandonwamboldt/utilphp/docs/favicon.png b/vendor/brandonwamboldt/utilphp/docs/favicon.png
deleted file mode 100644
index 5f17cf1d..00000000
Binary files a/vendor/brandonwamboldt/utilphp/docs/favicon.png and /dev/null differ
diff --git a/vendor/brandonwamboldt/utilphp/docs/images/awesome_var_dump.jpg b/vendor/brandonwamboldt/utilphp/docs/images/awesome_var_dump.jpg
deleted file mode 100644
index a697c734..00000000
Binary files a/vendor/brandonwamboldt/utilphp/docs/images/awesome_var_dump.jpg and /dev/null differ
diff --git a/vendor/brandonwamboldt/utilphp/docs/images/background.png b/vendor/brandonwamboldt/utilphp/docs/images/background.png
deleted file mode 100644
index 1e6fddd7..00000000
Binary files a/vendor/brandonwamboldt/utilphp/docs/images/background.png and /dev/null differ
diff --git a/vendor/brandonwamboldt/utilphp/docs/images/utility_logo.png b/vendor/brandonwamboldt/utilphp/docs/images/utility_logo.png
deleted file mode 100644
index 434c7bc5..00000000
Binary files a/vendor/brandonwamboldt/utilphp/docs/images/utility_logo.png and /dev/null differ
diff --git a/vendor/brandonwamboldt/utilphp/docs/index.html b/vendor/brandonwamboldt/utilphp/docs/index.html
deleted file mode 100644
index 3b47bba7..00000000
--- a/vendor/brandonwamboldt/utilphp/docs/index.html
+++ /dev/null
@@ -1,1234 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- util.php - The PHP programmers best friend - UtilityPHP
-
-
-
-
-
-
-
-
-
-
-
- util.php is a collection of useful functions and snippets
- that you need or could use every day. It's implemented as a class with static methods, to avoid conflicts with your
- existing code-base. Just drop it in and start using it immediately.
-
-
-
- Included are 60+ functions that provide you with the ability to do common tasks much easier and more efficiently,
- without having to find that one comment on php.net where you know its been done already. Access superglobals
- without checking to see if certain indexes are set first and pass default values, use a nicely formatted var dump,
- validate emails, generate random strings, flatten an array, pull a single column out of a multidimensional array
- and much more.
-
-
-
- Although it's implemented as one giant class, util.php has extensive documentation and a full suite of unit tests
- to avoid breaking backwards-compatibility unintentionally.
-
-
-
- The project is hosted on GitHub .
- You can report bugs and discuss features on the
- issues page ,
- or send tweets to @brandonwamboldt .
-
-
-
Downloads (Right-click, and use "Save As")
-
-
- Stable Version (1.1.0)
- Unstable Version (master)
-
-
-
Installation
-
-
-
-
-
-
-
-
- Simply drop util.php in any project and call include 'util.php'; in your project.
- You can then access the Util class.
-
-
-
-
-
- Add the following dependency to your composer.json:
-
-
"brandonwamboldt/utilphp": "1.1.*"
-
- When used with composer, the class is namespaced (
\utilphp\util) instead of
- just
util.
-
-
-
-
Debugging Functions
-
-
-
-
-
-
- util:: var_dump (mixed $var [, bool $return = FALSE])
-
-
-
-
- Nicely prints out the contents of a passed variable. Booleans are properly displayed as 'true' or 'false',
- null values are shown as 'NULL', variable types are displayed, and arrays and objects are displayed as a
- collapsible tree powered by JavaScript.
-
-
- Usage:
-
- util::var_dump($var);
-
-
-
-
-
-
Array/Object Functions
-
-
-
-
-
-
- util:: array_first (array $array )
-
-
-
-
- Retrieve the first value from an array. Can be run on function callbacks, and it will not modify the pointer
- of the source array unlike most other methods of doing this.
-
-
- Usage:
-
- util::array_first( ['a', 'b', 'c'] ); => Returns 'a'
-
-
-
-
-
-
- util:: array_first_key (array $array )
-
-
-
-
- Retrieve the first key from an array. Can be run on function callbacks, and it will not modify the pointer of
- the source array unlike most other methods of doing this.
-
-
- Usage:
-
- util::array_first_key( $users ); => Returns 'brandon'
-
-
-
-
-
-
- util:: array_flatten (array $array [, bool $preserve_keys = TRUE])
-
-
-
- Flattens a multi-dimensional array into a one dimensional array
-
- Usage:
-
- util::array_flatten( [ 'a', 'b', [ 'c', 'd', 'e', [ 'f', 'g', [ [ [ [ 'h', 'i', 'j' ] ] ] ] ] ] ] );
-=> Returns [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' ]
-
-
-
-
-
-
- util:: array_get ($var [, mixed $default = NULL])
-
-
-
- Retrieve a value from an array, or return a given default if the index isn't set
-
- Usage:
-
- util::array_get($_POST['action'], 'index');
-=> If $_POST['action'] is set, returns its value, otherwise returns 'index'
-util::array_get($_POST['action']['do'], 'index');
-=> Returns the value of $_POST['action']['do'] or 'index'
-
-
-
-
-
-
- util:: array_last (array $array )
-
-
-
-
- Retrieve the last value from an array. Can be run on function callbacks, and it will not modify the pointer
- of the source array unlike most other methods of doing this.
-
-
- Usage:
-
- util::array_last( [ 'a', 'b', 'c'] );
-=> Returns 'c'
-
-
-
-
-
-
- util:: array_last_key (array $array )
-
-
-
-
- Retrieve the last key from an array. Can be run on function callbacks, and it will not modify the pointer of
- the source array unlike most other methods of doing this.
-
-
- Usage:
-
- util::array_last_key( $users );
-=> Returns 'zane'
-
-
-
-
-
-
- util:: array_map_deep (array $array , callable $callback [, bool $on_nonscalar = FALSE])
-
-
-
-
- Returns an array containing all the elements of $array after applying the callback function to each one recursively.
- Particularly useful for avoiding errors when calling functions that only accept scalar values on an array that could
- contain nested arrays, such as $_GET or $_POST.
-
-
- Usage:
-
- util::array_map_deep($_POST, 'htmlentities');
-=> Recursively escapes each scalar value in $_POST
-util::array_map_deep($_POST, 'htmlentities', TRUE);
-=> Recursively escapes each value in $_POST regardless of its type
-
-
-
-
-
-
- util:: array_pluck (array $array , string $field [, bool $preserve_keys , bool $remove_nomatches ])
-
-
-
-
- Replaces each value in an array with the specified field of the array or object that used to be the value. Very
- useful when you have an array of objects or arrays from a database, and you only want one specific field. For
- example, you want an array of emails from an array of users.
-
-
- Usage:
-
- util::array_pluck([['val' => 1], ['val' => 2], ['val' => 3]], 'val');
-=> Returns [1, 2, 3]
-util::array_pluck($users, 'email');
-=> Returns an array of email addresses for each user
-
-
-
-
-
-
- util:: array_search_deep (array $array , mixed $search [, string $field = FALSE])
-
-
-
-
- Allows you to search for a value in an array of arrays or an array of objects, and return the key of the value
- that matches the search criteria. If $field is unspecified, the entire array/object is searched.
-
-
- Usage:
-
- util::array_search_deep($_POST, 'delete_post');
-=> Might return 'do' if $_POST['do']['action'] = 'delete_post'
-util::array_search_deep($users, 'rogue_coder', 'username');
-=> Might return 5 if $users[5]->username = 'rogue_coder'
-
-
-
-
-
-
- util:: array_clean (array $array )
-
-
-
-
- Remove all null/empty/false values from the given array.
-
-
- Usage:
-
- util::array_clean( array( 'a', 'b', '', null, false, 0) ); => Returns array('a', 'b');
-
-
-
-
-
URL Functions
-
-
-
-
-
-
- util:: add_query_arg ()
-
-
-
- Adds one ore more query args to the query string of the current URL or a given URL
-
- Usage:
-
- util::add_query_arg( 'user', '5', '/admin/users?action=edit' );
-=> Returns '/admin/users?action=edit&user=5'
-util::add_query_arg( [ 'user' => 5, 'action' => 'edit' ], '/admin/users' );
-=> Returns '/admin/users?user=5&action=edit'
-
-
-
-
-
-
- util:: get_current_url ()
-
-
-
- Returns the current URL with hostname
-
- Usage:
-
- util::get_current_url();
-=> Returns 'http://brandonwamboldt.ca/utilphp/'
-
-
-
-
-
-
- util:: is_https ()
-
-
-
- Returns true if the current page is being loaded over https, false if it isn't
-
- Usage:
-
- util::is_https();
-=> Returns false
-
-
-
-
-
-
- util:: http_build_url ([mixed $url[, mixed $parts[, int $flags = HTTP_URL_REPLACE[, array &amo;$new_url]]]])
-
-
-
-
- Pure PHP implementation/polyfill for http_build_url
- which requires pecl_http to be installed.
-
-
- Usage:
-
- echo util::http_build_url("http://user@www.example.com/pub/index.php?a=b#files",
- array(
- "scheme" => "ftp",
- "host" => "ftp.example.com",
- "path" => "files/current/",
- "query" => "a=c"
- ),
- HTTP_URL_STRIP_AUTH | HTTP_URL_JOIN_PATH | HTTP_URL_JOIN_QUERY | HTTP_URL_STRIP_FRAGMENT
-);
-
- The above example will output:
-
- ftp://ftp.example.com/pub/files/current/?a=c
-
-
-
-
-
-
- util:: is_https ()
-
-
-
- Returns true if the current page is being loaded over https, false if it isn't
-
- Usage:
-
- util::is_https();
-=> Returns false
-
-
-
-
-
-
- util:: remove_query_arg ( array|string $query_args [, string $url ])
-
-
-
- Removes one ore more query args from the query string of the current URL or a given URL
-
- Usage:
-
- util::remove_query_arg( 'action', '/admin/users?action=edit&user=5' );
-=> Returns '/admin/users?user=5'
-util::remove_query_arg( [ 'user', 'action'], '/admin/users?action=edit&user=5' );
-=> Returns '/admin/users'
-
-
-
-
-
-
- util:: slugify (string $string [, string $separator = "-", bool $css_mode = FALSE])
-
-
-
-
- Generate a string safe for use in URLs from any given string. Converts any accent characters
- to their equivalent normal characters and converts any other non-alphanumeric characters to
- dashes, then converts any sequence of two or more dashes to a single dash. This function
- generates slugs safe for use as URLs, and if you pass TRUE as the second parameter, it will
- create strings safe for use as CSS classes or IDs.
-
-
- Usage:
-
- util::slugify('This is a random --string with an Ãccent');
-=> Returns 'this-is-a-random-string-with-an-accent'
-util::slugify('Another String', '.');
-=> Returns 'another.string'
-
-
-
-
String Functions
-
-
-
-
-
-
- util:: htmlentities (string $string [, bool $preserve_encoded_entities = FALSE])
-
-
-
-
- Executes htmlentities with ENT_QUOTES set by default. However, if you pass TRUE as
- the second parameter, it will not re-encode entities that are already encoded.
-
-
- Usage:
-
- util::htmlentities('this string < this string', TRUE);
-=> Returns 'this string < this string'
-
-
-
-
-
-
- util:: htmlspecialchars (string $string [, bool $preserve_encoded_entities = FALSE])
-
-
-
-
- Executes htmlspecialchars with ENT_QUOTES set by default. However, if you pass TRUE as
- the second parameter, it will not re-encode entities that are already encoded.
-
-
- Usage:
-
- util::htmlspecialchars('this string < this string', TRUE);
-=> Returns 'this string < this string'
-
-
-
-
-
-
- util:: linkify (string $text )
-
-
-
- Find's any URLs in the specified text and wraps them with HTML anchor tags
-
- Usage:
-
- util::linkify('this string has a link to www.google.com');
-=> Returns 'this string has a link to <a href="http://wwww.google.com/">www.google.com</a>'
-
-
-
-
-
-
- util:: match_string (string $pattern , string $string [, bool $caseSensitive = true])
-
-
-
-
- Check if a string matches a given pattern. You can use '*' as a wildcard character.
-
-
- Usage:
-
- util::match_string("test/*", "test/my/test");
-=> Returns true
-util::match_string("test/", "test/my/test");
-=> Returns false
-
-
-
-
-
-
- util:: random_string (int $length [, bool $human_friendly = TRUE, bool $include_symbols = FALSE, bool $no_duplicate_chars = FALSE])
-
-
-
-
- Generates a random string of the specified length. Human friendly mode
- will exclude characters that can be confused with other characters, such
- as 0 (zero) and O (capital o), 1 (one) and l (lowercase L).
-
-
- Usage:
-
- util::random_string(8);
-=> Returns 'a6BiF4UW'
-
-
-
-
-
-
- util:: number_to_word (int|float $number )
-
-
-
- Converts a number into its text equivalent. For example, 56 becomes fifty-six.
-
- util::number_to_word(512.5);
-=> Returns 'five hundred and twelve point five'
-
-
-
-
-
-
- util:: ordinal (int $number )
-
-
-
- Returns the ordinal version of a number (appends th, st, nd, rd)
-
- Usage:
-
- util::ordinal(22);
-=> Returns '22nd'
-
-
-
-
-
-
- util:: remove_accents (string $string )
-
-
-
- Converts all accent characters to their ASCII equivalents
-
- Usage:
-
- util::remove_accents('Àccent');
-=> Returns 'Accent'
-
-
-
-
-
-
- util:: secure_random_string (int $length )
-
-
-
- Generate a random string of characters. Will attempt to use a secure source (openssl).
-
- Usage:
-
- util::secure_random_string(16);
-=> Returns '5bB1RJH0cQhNjviT'
-
-
-
-
-
-
- util:: seems_utf8 (string $string )
-
-
-
- Checks to see if a given string is UTF-8 encoded/safe
-
- Usage:
-
- util::seems_utf8('This is some random string user input');
-=> Returns true
-
-
-
-
-
-
- util:: safe_truncate (string $string , int $length [, string $append = '...'])
-
-
-
- Truncate a string to a specified length without cutting a word off
-
- Usage:
-
- util::safe_truncate('The quick brown fox jumps over the lazy dog', 24);
-=> Returns 'The quick brown fox...'
-
-
-
-
-
-
- util:: size_format (int $bytes [, int $decimals = 0])
-
-
-
- Formats an integer as a human friendly size string, such as 4 KiB.
-
- Usage:
-
- util::size_format( 25151251, 2 );
-=> Returns '23.99 MiB'
-
-
-
-
-
-
- util:: str_to_bool (string $string )
-
-
-
- Converts a string to boolean, looking for yes/no words like 'yes', 'no', 'true', 'false', 'y', 'n', etc
-
- Usage:
-
- util::str_to_bool('yes');
-=> Returns true
-
-
-
-
-
-
- util:: zero_pad (int $number , int $length )
-
-
-
- Pads a given number with zeroes on the left
-
- Usage:
-
- util::zero_pad(341, 8);
-=> Returns '00000341'
-
-
-
-
-
-
- util:: strip_space (string $string )
-
-
-
- Strip all withspace from the given string
-
- Usage:
-
- util::strip_space(' The quick brown fox jumps over the lazy dog ');
-=> Returns 'Thequickbrownfoxjumpsoverthelazydog'
-
-
-
-
-
-
- util:: sanitize_string (string $string )
-
-
-
-
- Sanitize a string by performing the following operation :
-
- Remove accents
- Lower the string
- Remove punctuation characters
- Strip whitespaces
-
-
-
- Usage:
-
- util::sanitize_string(' Benoit! à New-York? j’ai perçu 1 % : Qu’as-tu "gagné" chez M. V. Noël? Dix francs.');
-=> Returns 'benoitanewyorkjaipercu1quastugagnechezmvnoeldixfrancs'
-
-
-
-
Files
-
-
-
-
-
-
- util:: full_permissions (string $file )
-
-
-
- Returns the file permissions as a nice string, like -rw-r--r--
-
- Usage:
-
- util::full_permissions('/etc/passwd');
-=> Returns '-rw-r--r--'
-
-
-
-
-
-
- util:: rmdir (string $dir [, bool $traverseSymlinks = false])
-
-
-
- Recursively deletes a directories (including all contents).
-
- Usage:
-
- util::rmdir('/tmp/working/dir');
-=> Returns true
-
-
-
-
Serialization
-
-
-
-
-
-
- util:: is_serialized (mixed $data )
-
-
-
- Checks to see if a given variable is a seralized data structure
-
- Usage:
-
- util::is_serialized( 'a:0:{}' );
-=> Returns true
-
-
-
-
-
-
- util:: maybe_serialize (mixed $data )
-
-
-
- Serialize data, if needed to store in plaintext (Arrays or objects)
-
- Usage:
-
- util::maybe_serialize( 5 );
-=> Returns 5
-util::maybe_serialize( array() );
-=> Returns 'a:0:{}'
-
-
-
-
-
-
- util:: maybe_unserialize (mixed $data )
-
-
-
- Unserialize data, if it's a serialized string
-
- Usage:
-
- util::maybe_unserialize(5);
-=> Returns 5
-util::maybe_unserialize("a:0:{}");
-=> Returns array()
-
-
-
-
-
-
- util:: fix_broken_serialization (mixed $data )
-
-
-
-
- Attempt to fix a broken serialization string (e.g. where string offsets are incorrect). Can fix
- errors that frequently occur with mismatched character sets or higher-than-ASCII characters.
-
-
- Usage:
-
- util::fix_broken_serialization('a:1:{s:4:"test";s:4:"abc";}');
-=> Returns 'a:1:{s:4:"test";s:3:"abc";}'
-
-
-
-
Other
-
-
-
-
-
-
- util:: force_download (string $filename , string $content = FALSE)
-
-
-
-
- Transmit headers that force a browser to display the download file dialog. Cross
- browser compatible. Only fires if headers have not already been sent.
-
-
- Usage:
-
- util::force_download( 'export.csv', file_get_contents( 'securefile.csv' ) );
-=> The user will be prompted to download the file
-
-
-
-
-
-
- util:: get_client_ip (bool $trust_proxy_headers = FALSE)
-
-
-
-
- Returns the IP address of the client. Only enable $trust_proxy_headers if your server is behind a proxy
- that sets the HTTP_CLIENT_IP and HTTP_X_FORWARDED_FOR headers.
-
-
- Usage:
-
- util::get_client_ip();
-=> Returns '12.123.12.100'
-
-
-
-
-
-
- util:: get_gravatar (string $email , int $size = 32)
-
-
-
- Return the URL to a user's gravatar
-
- Usage:
-
- util::get_gravatar('brandon.wamboldt@gmail.com');
-=> Returns 'http://www.gravatar.com/avatar/46679faeb6780ecb1ea57527fdc66eb3?s=32'
-
-
-
-
-
-
- util:: human_time_diff (int $from , int $to = '', int $as_text = FALSE, string $suffix = ' ago')
-
-
-
- Converts a unix timestamp to a relative time string, such as "3 days ago" or "2 weeks ago"
-
- Usage:
-
- util::human_time_diff(time() - 7400);
-=> Returns '2 hours ago'
-util::human_time_diff(time() - 7400, '', TRUE);
-=> Returns 'two hours ago'
-
-
-
-
-
-
-
-
-
-
- util:: validate_email (string $possible_email )
-
-
-
- Validate an email address
-
- Usage:
-
- util::validate_email( 'brandon.wamboldt@gmail.com' );
-=> Returns true
-util::validate_email( 'not an email' );
-=> Returns false
-
-
-
-
Constants
-
-
-
-
-
-
- util:: SECONDS_IN_A_MINUTE
-
-
-
- The number of seconds in a minute, useful for making code more verbose
-
-
-
-
-
-
- util:: SECONDS_IN_AN_HOUR
-
-
-
- The number of seconds in an hour, useful for making code more verbose
-
-
-
-
-
-
- util:: SECONDS_IN_A_DAY
-
-
-
- The number of seconds in a day, useful for making code more verbose
-
-
-
-
-
-
- util:: SECONDS_IN_A_WEEK
-
-
-
- The number of seconds in a week (7 days), useful for making code more verbose
-
-
-
-
-
-
- util:: SECONDS_IN_A_MONTH
-
-
-
- The number of seconds in a month (30 days), useful for making code more verbose
-
-
-
-
-
-
- util:: SECONDS_IN_A_YEAR
-
-
-
- The number of seconds in a year (365 days), useful for making code more verbose
-
-
-
-
Change Log
-
-
-
-
-
-
- This release introduces a deprecation notice for slugify(), please update your code.
-
- - Added a cryptographically secure random string function secure_random_string. Thanks to @abhimanyusharma003 via Pull Request #53
- - Added limit_characters and limit_words functions. Thanks to @abhimanyusharma003 via Pull Request #55
- - Added rmdir method to recursively delete a directory. Thanks to @ARACOOOL via Pull Request #56
- - Added set_executable, set_readable, set_writable, directory_size, directory_contents and get_user_dir functions. Thanks to @sergserg via Pull Request #70
- - Changed parameter ordering for slugify, $css_mode is now the third argument. For backwards compatibility, the old order will still work but it will generate an E_USER_DEPRECATED warning. Thanks to @abhimanyusharma003 via Pull Request #71
- - Added match_string method. Thanks to @abhimanyusharma003 via Pull Request #72
- - Renamed internal methods (protected ones) for PSR-2 compliance
- - General performance improvements, code quality improvements, and increased unit test coverage (special thanks to @hopeseekr for getting us near 100% coverage)
-
-
-
-
- - Added fix_broken_serialization to fix broken serialized strings (Thanks to @hopeseekr via Pull Request #48 )
- - Fixed get_current_url appending port 80 or 443 when not needed (Thanks to @scottchiefbaker via Pull Request #49 )
- - var_dump can now handle recursive data structures without crashing
- - var_dump code was minified and cleaned up
- - array_flatten was optimized (thanks to @hopeseekr via Pull Request #47 )
- - remove_accents was completely rewritten and is now ~4x faster
-
-
-
-
- - Added start_with function
- - Added ends_with function
- - Added str_contains function
- - Added str_icontains function
- - Added get_file_ext function
- - Fixing permissions on the files & directories
- - Fixing a bug with the include path of util.php
-
-
-
-
- - Issue #29 Fixed error in var_dump if mbstring extension wasn't present
- - Adding Composer support
- - Updating license from GPL to MIT
- - Adding Changelog to project
- - Bumping minimum version to PHP 5.3.3
-
-
-
-
- - Issue #22 Removed all superglobal *_get functions, you can use the modified array_get now
- - Issue #22 Modifed the behaviour of array_get, see documentation
- - Pull Request #21 Added multibyte support to html* functions
- - Issue #9 Removed the str_to_utf8 function
- - Issue #3 Removed the absint function
- - Removed declare() from util.php to avoid errors
- - Updated PHPUnit tests to use PHPUnit 3.6
-
-
-
-
- - Issue #16 Improved performance of slugify
- - Issue #14 Modified the regex for seems_utf8 to be more accurate
- - Issue #13 Changed validate_email to be wrapper for filter_var
- - Added 'ok' to the list of yes words for str_to_bool
- - str_to_bool matches no followed by any number of 'o's
-
-
-
-
- - Issue #12 get_current_url now includes the port and user/password if required
- - Issue #11 human_time_diff now uses the DateTime functions
- - Issue #10 is_https no longer checks the port as well
-
-
-
-
- - Issue #7 Added the $trust_proxy_headers parameter to get_client_ip
- - Issue #6 Removed is_isset as the function did not work as intended
- - Issue #6 Removed is_empty as it is redundant, use ! with function calls instead
- - Fixed a bug with get_gravatar
-
-
-
-
- Initial release of util.php.
-
-
-
-
-
-
diff --git a/vendor/brandonwamboldt/utilphp/phpunit.xml.dist b/vendor/brandonwamboldt/utilphp/phpunit.xml.dist
deleted file mode 100644
index d4b9366c..00000000
--- a/vendor/brandonwamboldt/utilphp/phpunit.xml.dist
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
- ./tests
-
-
-
-
- ./src
-
-
-
-
-
-
\ No newline at end of file
diff --git a/vendor/brandonwamboldt/utilphp/src/utilphp/util.php b/vendor/brandonwamboldt/utilphp/src/utilphp/util.php
deleted file mode 100644
index 7d6d0f00..00000000
--- a/vendor/brandonwamboldt/utilphp/src/utilphp/util.php
+++ /dev/null
@@ -1,2535 +0,0 @@
-
- * @link http://github.com/brandonwamboldt/utilphp/ Official Documentation
- */
-class util
-{
- /**
- * A constant representing the number of seconds in a minute, for
- * making code more verbose
- *
- * @var integer
- */
- const SECONDS_IN_A_MINUTE = 60;
-
- /**
- * A constant representing the number of seconds in an hour, for making
- * code more verbose
- *
- * @var integer
- */
- const SECONDS_IN_A_HOUR = 3600;
- const SECONDS_IN_AN_HOUR = 3600;
-
- /**
- * A constant representing the number of seconds in a day, for making
- * code more verbose
- *
- * @var integer
- */
- const SECONDS_IN_A_DAY = 86400;
-
- /**
- * A constant representing the number of seconds in a week, for making
- * code more verbose
- *
- * @var integer
- */
- const SECONDS_IN_A_WEEK = 604800;
-
- /**
- * A constant representing the number of seconds in a month (30 days),
- * for making code more verbose
- *
- * @var integer
- */
- const SECONDS_IN_A_MONTH = 2592000;
-
- /**
- * A constant representing the number of seconds in a year (365 days),
- * for making code more verbose
- *
- * @var integer
- */
- const SECONDS_IN_A_YEAR = 31536000;
-
- /**
- * URL constants as defined in the PHP Manual under "Constants usable with
- * http_build_url()".
- *
- * @see http://us2.php.net/manual/en/http.constants.php#http.constants.url
- */
- const HTTP_URL_REPLACE = 1;
- const HTTP_URL_JOIN_PATH = 2;
- const HTTP_URL_JOIN_QUERY = 4;
- const HTTP_URL_STRIP_USER = 8;
- const HTTP_URL_STRIP_PASS = 16;
- const HTTP_URL_STRIP_AUTH = 32;
- const HTTP_URL_STRIP_PORT = 64;
- const HTTP_URL_STRIP_PATH = 128;
- const HTTP_URL_STRIP_QUERY = 256;
- const HTTP_URL_STRIP_FRAGMENT = 512;
- const HTTP_URL_STRIP_ALL = 1024;
-
- /**
- * A collapse icon, using in the dump_var function to allow collapsing
- * an array or object
- *
- * @var string
- */
- public static $icon_collapse = 'iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAMAAADXT/YiAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo3MjlFRjQ2NkM5QzJFMTExOTA0MzkwRkI0M0ZCODY4RCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFNzFDNDQyNEMyQzkxMUUxOTU4MEM4M0UxRDA0MUVGNSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFNzFDNDQyM0MyQzkxMUUxOTU4MEM4M0UxRDA0MUVGNSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NDlFRjQ2NkM5QzJFMTExOTA0MzkwRkI0M0ZCODY4RCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3MjlFRjQ2NkM5QzJFMTExOTA0MzkwRkI0M0ZCODY4RCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuF4AWkAAAA2UExURU9t2DBStczM/1h16DNmzHiW7iNFrypMvrnD52yJ4ezs7Onp6ejo6P///+Tk5GSG7D9h5SRGq0Q2K74AAAA/SURBVHjaLMhZDsAgDANRY3ZISnP/y1ZWeV+jAeuRSky6cKL4ryDdSggP8UC7r6GvR1YHxjazPQDmVzI/AQYAnFQDdVSJ80EAAAAASUVORK5CYII=';
-
- /**
- * A collapse icon, using in the dump_var function to allow collapsing
- * an array or object
- *
- * @var string
- */
- public static $icon_expand = 'iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAMAAADXT/YiAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo3MTlFRjQ2NkM5QzJFMTExOTA0MzkwRkI0M0ZCODY4RCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFQzZERTJDNEMyQzkxMUUxODRCQzgyRUNDMzZEQkZFQiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFQzZERTJDM0MyQzkxMUUxODRCQzgyRUNDMzZEQkZFQiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3MzlFRjQ2NkM5QzJFMTExOTA0MzkwRkI0M0ZCODY4RCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3MTlFRjQ2NkM5QzJFMTExOTA0MzkwRkI0M0ZCODY4RCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkmDvWIAAABIUExURU9t2MzM/3iW7ubm59/f5urq85mZzOvr6////9ra38zMzObm5rfB8FZz5myJ4SNFrypMvjBStTNmzOvr+mSG7OXl8T9h5SRGq/OfqCEAAABKSURBVHjaFMlbEoAwCEPRULXF2jdW9r9T4czcyUdA4XWB0IgdNSybxU9amMzHzDlPKKu7Fd1e6+wY195jW0ARYZECxPq5Gn8BBgCr0gQmxpjKAwAAAABJRU5ErkJggg==';
-
- private static $hasArray = false;
-
- /**
- * Map of special non-ASCII characters and suitable ASCII replacement
- * characters.
- *
- * Part of the URLify.php Project
- *
- * @see https://github.com/jbroadway/urlify/blob/master/URLify.php
- */
- public static $maps = array(
- 'de' => array(/* German */
- 'Ä' => 'Ae', 'Ö' => 'Oe', 'Ü' => 'Ue', 'ä' => 'ae', 'ö' => 'oe', 'ü' => 'ue', 'ß' => 'ss',
- 'ẞ' => 'SS'
- ),
- 'latin' => array(
- 'À' => 'A', 'Á' => 'A', 'Â' => 'A', 'Ã' => 'A', 'Ä' => 'A', 'Å' => 'A','Ă' => 'A', 'Æ' => 'AE', 'Ç' =>
- 'C', 'È' => 'E', 'É' => 'E', 'Ê' => 'E', 'Ë' => 'E', 'Ì' => 'I', 'Í' => 'I', 'Î' => 'I',
- 'Ï' => 'I', 'Ð' => 'D', 'Ñ' => 'N', 'Ò' => 'O', 'Ó' => 'O', 'Ô' => 'O', 'Õ' => 'O', 'Ö' =>
- 'O', 'Ő' => 'O', 'Ø' => 'O','Ș' => 'S','Ț' => 'T', 'Ù' => 'U', 'Ú' => 'U', 'Û' => 'U', 'Ü' => 'U', 'Ű' => 'U',
- 'Ý' => 'Y', 'Þ' => 'TH', 'ß' => 'ss', 'à' => 'a', 'á' => 'a', 'â' => 'a', 'ã' => 'a', 'ä' =>
- 'a', 'å' => 'a', 'ă' => 'a', 'æ' => 'ae', 'ç' => 'c', 'è' => 'e', 'é' => 'e', 'ê' => 'e', 'ë' => 'e',
- 'ì' => 'i', 'í' => 'i', 'î' => 'i', 'ï' => 'i', 'ð' => 'd', 'ñ' => 'n', 'ò' => 'o', 'ó' =>
- 'o', 'ô' => 'o', 'õ' => 'o', 'ö' => 'o', 'ő' => 'o', 'ø' => 'o', 'ș' => 's', 'ț' => 't', 'ù' => 'u', 'ú' => 'u',
- 'û' => 'u', 'ü' => 'u', 'ű' => 'u', 'ý' => 'y', 'þ' => 'th', 'ÿ' => 'y'
- ),
- 'latin_symbols' => array(
- '©' => '(c)'
- ),
- 'el' => array(/* Greek */
- 'α' => 'a', 'β' => 'b', 'γ' => 'g', 'δ' => 'd', 'ε' => 'e', 'ζ' => 'z', 'η' => 'h', 'θ' => '8',
- 'ι' => 'i', 'κ' => 'k', 'λ' => 'l', 'μ' => 'm', 'ν' => 'n', 'ξ' => '3', 'ο' => 'o', 'π' => 'p',
- 'ρ' => 'r', 'σ' => 's', 'τ' => 't', 'υ' => 'y', 'φ' => 'f', 'χ' => 'x', 'ψ' => 'ps', 'ω' => 'w',
- 'ά' => 'a', 'έ' => 'e', 'ί' => 'i', 'ό' => 'o', 'ύ' => 'y', 'ή' => 'h', 'ώ' => 'w', 'ς' => 's',
- 'ϊ' => 'i', 'ΰ' => 'y', 'ϋ' => 'y', 'ΐ' => 'i',
- 'Α' => 'A', 'Β' => 'B', 'Γ' => 'G', 'Δ' => 'D', 'Ε' => 'E', 'Ζ' => 'Z', 'Η' => 'H', 'Θ' => '8',
- 'Ι' => 'I', 'Κ' => 'K', 'Λ' => 'L', 'Μ' => 'M', 'Ν' => 'N', 'Ξ' => '3', 'Ο' => 'O', 'Π' => 'P',
- 'Ρ' => 'R', 'Σ' => 'S', 'Τ' => 'T', 'Υ' => 'Y', 'Φ' => 'F', 'Χ' => 'X', 'Ψ' => 'PS', 'Ω' => 'W',
- 'Ά' => 'A', 'Έ' => 'E', 'Ί' => 'I', 'Ό' => 'O', 'Ύ' => 'Y', 'Ή' => 'H', 'Ώ' => 'W', 'Ϊ' => 'I',
- 'Ϋ' => 'Y'
- ),
- 'tr' => array(/* Turkish */
- 'ş' => 's', 'Ş' => 'S', 'ı' => 'i', 'İ' => 'I', 'ç' => 'c', 'Ç' => 'C', 'ü' => 'u', 'Ü' => 'U',
- 'ö' => 'o', 'Ö' => 'O', 'ğ' => 'g', 'Ğ' => 'G'
- ),
- 'ru' => array(/* Russian */
- 'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'yo', 'ж' => 'zh',
- 'з' => 'z', 'и' => 'i', 'й' => 'j', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o',
- 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c',
- 'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sh', 'ъ' => '', 'ы' => 'y', 'ь' => '', 'э' => 'e', 'ю' => 'yu',
- 'я' => 'ya',
- 'А' => 'A', 'Б' => 'B', 'В' => 'V', 'Г' => 'G', 'Д' => 'D', 'Е' => 'E', 'Ё' => 'Yo', 'Ж' => 'Zh',
- 'З' => 'Z', 'И' => 'I', 'Й' => 'J', 'К' => 'K', 'Л' => 'L', 'М' => 'M', 'Н' => 'N', 'О' => 'O',
- 'П' => 'P', 'Р' => 'R', 'С' => 'S', 'Т' => 'T', 'У' => 'U', 'Ф' => 'F', 'Х' => 'H', 'Ц' => 'C',
- 'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Sh', 'Ъ' => '', 'Ы' => 'Y', 'Ь' => '', 'Э' => 'E', 'Ю' => 'Yu',
- 'Я' => 'Ya',
- '№' => ''
- ),
- 'uk' => array(/* Ukrainian */
- 'Є' => 'Ye', 'І' => 'I', 'Ї' => 'Yi', 'Ґ' => 'G', 'є' => 'ye', 'і' => 'i', 'ї' => 'yi', 'ґ' => 'g'
- ),
- 'cs' => array(/* Czech */
- 'č' => 'c', 'ď' => 'd', 'ě' => 'e', 'ň' => 'n', 'ř' => 'r', 'š' => 's', 'ť' => 't', 'ů' => 'u',
- 'ž' => 'z', 'Č' => 'C', 'Ď' => 'D', 'Ě' => 'E', 'Ň' => 'N', 'Ř' => 'R', 'Š' => 'S', 'Ť' => 'T',
- 'Ů' => 'U', 'Ž' => 'Z'
- ),
- 'pl' => array(/* Polish */
- 'ą' => 'a', 'ć' => 'c', 'ę' => 'e', 'ł' => 'l', 'ń' => 'n', 'ó' => 'o', 'ś' => 's', 'ź' => 'z',
- 'ż' => 'z', 'Ą' => 'A', 'Ć' => 'C', 'Ę' => 'e', 'Ł' => 'L', 'Ń' => 'N', 'Ó' => 'O', 'Ś' => 'S',
- 'Ź' => 'Z', 'Ż' => 'Z'
- ),
- 'ro' => array(/* Romanian */
- 'ă' => 'a', 'â' => 'a', 'î' => 'i', 'ș' => 's', 'ț' => 't', 'Ţ' => 'T', 'ţ' => 't'
- ),
- 'lv' => array(/* Latvian */
- 'ā' => 'a', 'č' => 'c', 'ē' => 'e', 'ģ' => 'g', 'ī' => 'i', 'ķ' => 'k', 'ļ' => 'l', 'ņ' => 'n',
- 'š' => 's', 'ū' => 'u', 'ž' => 'z', 'Ā' => 'A', 'Č' => 'C', 'Ē' => 'E', 'Ģ' => 'G', 'Ī' => 'i',
- 'Ķ' => 'k', 'Ļ' => 'L', 'Ņ' => 'N', 'Š' => 'S', 'Ū' => 'u', 'Ž' => 'Z'
- ),
- 'lt' => array(/* Lithuanian */
- 'ą' => 'a', 'č' => 'c', 'ę' => 'e', 'ė' => 'e', 'į' => 'i', 'š' => 's', 'ų' => 'u', 'ū' => 'u', 'ž' => 'z',
- 'Ą' => 'A', 'Č' => 'C', 'Ę' => 'E', 'Ė' => 'E', 'Į' => 'I', 'Š' => 'S', 'Ų' => 'U', 'Ū' => 'U', 'Ž' => 'Z'
- ),
- 'vn' => array(/* Vietnamese */
- 'Á' => 'A', 'À' => 'A', 'Ả' => 'A', 'Ã' => 'A', 'Ạ' => 'A', 'Ă' => 'A', 'Ắ' => 'A', 'Ằ' => 'A', 'Ẳ' => 'A', 'Ẵ' => 'A', 'Ặ' => 'A', 'Â' => 'A', 'Ấ' => 'A', 'Ầ' => 'A', 'Ẩ' => 'A', 'Ẫ' => 'A', 'Ậ' => 'A',
- 'á' => 'a', 'à' => 'a', 'ả' => 'a', 'ã' => 'a', 'ạ' => 'a', 'ă' => 'a', 'ắ' => 'a', 'ằ' => 'a', 'ẳ' => 'a', 'ẵ' => 'a', 'ặ' => 'a', 'â' => 'a', 'ấ' => 'a', 'ầ' => 'a', 'ẩ' => 'a', 'ẫ' => 'a', 'ậ' => 'a',
- 'É' => 'E', 'È' => 'E', 'Ẻ' => 'E', 'Ẽ' => 'E', 'Ẹ' => 'E', 'Ê' => 'E', 'Ế' => 'E', 'Ề' => 'E', 'Ể' => 'E', 'Ễ' => 'E', 'Ệ' => 'E',
- 'é' => 'e', 'è' => 'e', 'ẻ' => 'e', 'ẽ' => 'e', 'ẹ' => 'e', 'ê' => 'e', 'ế' => 'e', 'ề' => 'e', 'ể' => 'e', 'ễ' => 'e', 'ệ' => 'e',
- 'Í' => 'I', 'Ì' => 'I', 'Ỉ' => 'I', 'Ĩ' => 'I', 'Ị' => 'I', 'í' => 'i', 'ì' => 'i', 'ỉ' => 'i', 'ĩ' => 'i', 'ị' => 'i',
- 'Ó' => 'O', 'Ò' => 'O', 'Ỏ' => 'O', 'Õ' => 'O', 'Ọ' => 'O', 'Ô' => 'O', 'Ố' => 'O', 'Ồ' => 'O', 'Ổ' => 'O', 'Ỗ' => 'O', 'Ộ' => 'O', 'Ơ' => 'O', 'Ớ' => 'O', 'Ờ' => 'O', 'Ở' => 'O', 'Ỡ' => 'O', 'Ợ' => 'O',
- 'ó' => 'o', 'ò' => 'o', 'ỏ' => 'o', 'õ' => 'o', 'ọ' => 'o', 'ô' => 'o', 'ố' => 'o', 'ồ' => 'o', 'ổ' => 'o', 'ỗ' => 'o', 'ộ' => 'o', 'ơ' => 'o', 'ớ' => 'o', 'ờ' => 'o', 'ở' => 'o', 'ỡ' => 'o', 'ợ' => 'o',
- 'Ú' => 'U', 'Ù' => 'U', 'Ủ' => 'U', 'Ũ' => 'U', 'Ụ' => 'U', 'Ư' => 'U', 'Ứ' => 'U', 'Ừ' => 'U', 'Ử' => 'U', 'Ữ' => 'U', 'Ự' => 'U',
- 'ú' => 'u', 'ù' => 'u', 'ủ' => 'u', 'ũ' => 'u', 'ụ' => 'u', 'ư' => 'u', 'ứ' => 'u', 'ừ' => 'u', 'ử' => 'u', 'ữ' => 'u', 'ự' => 'u',
- 'Ý' => 'Y', 'Ỳ' => 'Y', 'Ỷ' => 'Y', 'Ỹ' => 'Y', 'Ỵ' => 'Y', 'ý' => 'y', 'ỳ' => 'y', 'ỷ' => 'y', 'ỹ' => 'y', 'ỵ' => 'y',
- 'Đ' => 'D', 'đ' => 'd'
- ),
- 'ar' => array(/* Arabic */
- 'أ' => 'a', 'ب' => 'b', 'ت' => 't', 'ث' => 'th', 'ج' => 'g', 'ح' => 'h', 'خ' => 'kh', 'د' => 'd',
- 'ذ' => 'th', 'ر' => 'r', 'ز' => 'z', 'س' => 's', 'ش' => 'sh', 'ص' => 's', 'ض' => 'd', 'ط' => 't',
- 'ظ' => 'th', 'ع' => 'aa', 'غ' => 'gh', 'ف' => 'f', 'ق' => 'k', 'ك' => 'k', 'ل' => 'l', 'م' => 'm',
- 'ن' => 'n', 'ه' => 'h', 'و' => 'o', 'ي' => 'y'
- ),
- 'sr' => array(/* Serbian */
- 'ђ' => 'dj', 'ј' => 'j', 'љ' => 'lj', 'њ' => 'nj', 'ћ' => 'c', 'џ' => 'dz', 'đ' => 'dj',
- 'Ђ' => 'Dj', 'Ј' => 'j', 'Љ' => 'Lj', 'Њ' => 'Nj', 'Ћ' => 'C', 'Џ' => 'Dz', 'Đ' => 'Dj'
- ),
- 'az' => array(/* Azerbaijani */
- 'ç' => 'c', 'ə' => 'e', 'ğ' => 'g', 'ı' => 'i', 'ö' => 'o', 'ş' => 's', 'ü' => 'u',
- 'Ç' => 'C', 'Ə' => 'E', 'Ğ' => 'G', 'İ' => 'I', 'Ö' => 'O', 'Ş' => 'S', 'Ü' => 'U'
- ),
- );
-
- /**
- * The character map for the designated language
- *
- * @see https://github.com/jbroadway/urlify/blob/master/URLify.php
- */
- private static $map = array();
-
- /**
- * The character list as a string.
- *
- * @see https://github.com/jbroadway/urlify/blob/master/URLify.php
- */
- private static $chars = '';
-
- /**
- * The character list as a regular expression.
- *
- * @see https://github.com/jbroadway/urlify/blob/master/URLify.php
- */
- private static $regex = '';
-
- /**
- * The current language
- *
- * @see https://github.com/jbroadway/urlify/blob/master/URLify.php
- */
- private static $language = '';
-
- /**
- * Initializes the character map.
- *
- * Part of the URLify.php Project
- *
- * @see https://github.com/jbroadway/urlify/blob/master/URLify.php
- */
- private static function initLanguageMap($language = '')
- {
- if (count(self::$map) > 0 && (($language == '') || ($language == self::$language))) {
- return;
- }
-
- // Is a specific map associated with $language?
- if (isset(self::$maps[$language]) && is_array(self::$maps[$language])) {
- // Move this map to end. This means it will have priority over others
- $m = self::$maps[$language];
- unset(self::$maps[$language]);
- self::$maps[$language] = $m;
- }
-
- // Reset static vars
- self::$language = $language;
- self::$map = array();
- self::$chars = '';
-
- foreach (self::$maps as $map) {
- foreach ($map as $orig => $conv) {
- self::$map[$orig] = $conv;
- self::$chars .= $orig;
- }
- }
-
- self::$regex = '/[' . self::$chars . ']/u';
- }
-
-
- /**
- * Access an array index, retrieving the value stored there if it
- * exists or a default if it does not. This function allows you to
- * concisely access an index which may or may not exist without
- * raising a warning.
- *
- * @param mixed $var Array value to access
- * @param mixed $default Default value to return if the key is not
- * present in the array
- * @return mixed
- */
- public static function array_get(&$var, $default = null)
- {
- if (isset($var)) {
- return $var;
- }
-
- return $default;
- }
-
- /**
- * Display a variable's contents using nice HTML formatting and will
- * properly display the value of booleans as true or false
- *
- * @see var_dump_plain()
- *
- * @param mixed $var The variable to dump
- * @return string
- */
- public static function var_dump($var, $return = false, $expandLevel = 1)
- {
- self::$hasArray = false;
- $toggScript = 'var colToggle = function(toggID) {var img = document.getElementById(toggID);if (document.getElementById(toggID + "-collapsable").style.display == "none") {document.getElementById(toggID + "-collapsable").style.display = "inline";setImg(toggID, 0);var previousSibling = document.getElementById(toggID + "-collapsable").previousSibling;while (previousSibling != null && (previousSibling.nodeType != 1 || previousSibling.tagName.toLowerCase() != "br")) {previousSibling = previousSibling.previousSibling;}} else {document.getElementById(toggID + "-collapsable").style.display = "none";setImg(toggID, 1);var previousSibling = document.getElementById(toggID + "-collapsable").previousSibling; while (previousSibling != null && (previousSibling.nodeType != 1 || previousSibling.tagName.toLowerCase() != "br")) {previousSibling = previousSibling.previousSibling;}}};';
- $imgScript = 'var setImg = function(objID,imgID,addStyle) {var imgStore = ["data:image/png;base64,' . self::$icon_collapse . '", "data:image/png;base64,' . self::$icon_expand . '"];if (objID) {document.getElementById(objID).setAttribute("src", imgStore[imgID]);if (addStyle){document.getElementById(objID).setAttribute("style", "position:relative;left:-5px;top:-1px;cursor:pointer;");}}};';
- $jsCode = preg_replace('/ +/', ' ', '');
- $html = '';
- $done = array();
- $html .= self::var_dump_plain($var, intval($expandLevel), 0, $done);
- $html .= ' ';
-
- if (self::$hasArray) {
- $html = $jsCode . $html;
- }
-
- if (!$return) {
- echo $html;
- }
-
- return $html;
- }
-
- /**
- * Display a variable's contents using nice HTML formatting (Without
- * the tag) and will properly display the values of variables
- * like booleans and resources. Supports collapsable arrays and objects
- * as well.
- *
- * @param mixed $var The variable to dump
- * @return string
- */
- public static function var_dump_plain($var, $expLevel, $depth = 0, $done = array())
- {
- $html = '';
-
- if ($expLevel > 0) {
- $expLevel--;
- $setImg = 0;
- $setStyle = 'display:inline;';
- } elseif ($expLevel == 0) {
- $setImg = 1;
- $setStyle='display:none;';
- } elseif ($expLevel < 0) {
- $setImg = 0;
- $setStyle = 'display:inline;';
- }
-
- if (is_bool($var)) {
- $html .= 'bool ( ' . (($var) ? 'true' : 'false') . ' ) ';
- } elseif (is_int($var)) {
- $html .= 'int ( ' . $var . ' ) ';
- } elseif (is_float($var)) {
- $html .= 'float ( ' . $var . ' ) ';
- } elseif (is_string($var)) {
- $html .= 'string ( ' . strlen($var) . ') "' . self::htmlentities($var) . '" ';
- } elseif (is_null($var)) {
- $html .= 'NULL ';
- } elseif (is_resource($var)) {
- $html .= 'resource ("' . get_resource_type($var) . '") "' . $var . '" ';
- } elseif (is_array($var)) {
- // Check for recursion
- if ($depth > 0) {
- foreach ($done as $prev) {
- if ($prev === $var) {
- $html .= 'array (' . count($var) . ') *RECURSION DETECTED*';
- return $html;
- }
- }
-
- // Keep track of variables we have already processed to detect recursion
- $done[] = &$var;
- }
-
- self::$hasArray = true;
- $uuid = 'include-php-' . uniqid() . mt_rand(1, 1000000);
-
- $html .= (!empty($var) ? ' ' : '') . 'array (' . count($var) . ')';
- if (!empty($var)) {
- $html .= ' [ ';
-
- $indent = 4;
- $longest_key = 0;
-
- foreach ($var as $key => $value) {
- if (is_string($key)) {
- $longest_key = max($longest_key, strlen($key) + 2);
- } else {
- $longest_key = max($longest_key, strlen($key));
- }
- }
-
- foreach ($var as $key => $value) {
- if (is_numeric($key)) {
- $html .= str_repeat(' ', $indent) . str_pad($key, $longest_key, ' ');
- } else {
- $html .= str_repeat(' ', $indent) . str_pad('"' . self::htmlentities($key) . '"', $longest_key, ' ');
- }
-
- $html .= ' => ';
-
- $value = explode(' ', self::var_dump_plain($value, $expLevel, $depth + 1, $done));
-
- foreach ($value as $line => $val) {
- if ($line != 0) {
- $value[$line] = str_repeat(' ', $indent * 2) . $val;
- }
- }
-
- $html .= implode(' ', $value) . ' ';
- }
-
- $html .= '] ';
- }
- } elseif (is_object($var)) {
- // Check for recursion
- foreach ($done as $prev) {
- if ($prev === $var) {
- $html .= 'object (' . get_class($var) . ') *RECURSION DETECTED*';
- return $html;
- }
- }
-
- // Keep track of variables we have already processed to detect recursion
- $done[] = &$var;
-
- self::$hasArray=true;
- $uuid = 'include-php-' . uniqid() . mt_rand(1, 1000000);
-
- $html .= ' object (' . get_class($var) . ') [ ';
-
- $varArray = (array) $var;
-
- $indent = 4;
- $longest_key = 0;
-
- foreach ($varArray as $key => $value) {
- if (substr($key, 0, 2) == "\0*") {
- unset($varArray[$key]);
- $key = 'protected:' . substr($key, 3);
- $varArray[$key] = $value;
- } elseif (substr($key, 0, 1) == "\0") {
- unset($varArray[$key]);
- $key = 'private:' . substr($key, 1, strpos(substr($key, 1), "\0")) . ':' . substr($key, strpos(substr($key, 1), "\0") + 2);
- $varArray[$key] = $value;
- }
-
- if (is_string($key)) {
- $longest_key = max($longest_key, strlen($key) + 2);
- } else {
- $longest_key = max($longest_key, strlen($key));
- }
- }
-
- foreach ($varArray as $key => $value) {
- if (is_numeric($key)) {
- $html .= str_repeat(' ', $indent) . str_pad($key, $longest_key, ' ');
- } else {
- $html .= str_repeat(' ', $indent) . str_pad('"' . self::htmlentities($key) . '"', $longest_key, ' ');
- }
-
- $html .= ' => ';
-
- $value = explode(' ', self::var_dump_plain($value, $expLevel, $depth + 1, $done));
-
- foreach ($value as $line => $val) {
- if ($line != 0) {
- $value[$line] = str_repeat(' ', $indent * 2) . $val;
- }
- }
-
- $html .= implode(' ', $value) . ' ';
- }
-
- $html .= '] ';
- }
-
- return $html;
- }
-
- /**
- * Converts any accent characters to their equivalent normal characters
- * and converts any other non-alphanumeric characters to dashes, then
- * converts any sequence of two or more dashes to a single dash. This
- * function generates slugs safe for use as URLs, and if you pass true
- * as the second parameter, it will create strings safe for use as CSS
- * classes or IDs.
- *
- * @param string $string A string to convert to a slug
- * @param string $separator The string to separate words with
- * @param boolean $css_mode Whether or not to generate strings safe for
- * CSS classes/IDs (Default to false)
- * @return string
- */
- public static function slugify($string, $separator = '-', $css_mode = false)
- {
- // Compatibility with 1.0.* parameter ordering for semvar
- if ($separator === true || $separator === false) {
- $css_mode = $separator;
- $separator = '-';
-
- // Raise deprecation error
- trigger_error(
- 'util::slugify() now takes $css_mode as the third parameter, please update your code',
- E_USER_DEPRECATED
- );
- }
-
- $slug = preg_replace('/([^a-z0-9]+)/', $separator, strtolower(self::remove_accents($string)));
-
- if ($css_mode) {
- $digits = array('zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine');
-
- if (is_numeric(substr($slug, 0, 1))) {
- $slug = $digits[substr($slug, 0, 1)] . substr($slug, 1);
- }
- }
-
- return $slug;
- }
-
- /**
- * Checks to see if a string is utf8 encoded.
- *
- * NOTE: This function checks for 5-Byte sequences, UTF8
- * has Bytes Sequences with a maximum length of 4.
- *
- * Written by Tony Ferrara
- *
- * @param string $string The string to be checked
- * @return boolean
- */
- public static function seems_utf8($string)
- {
- if (function_exists('mb_check_encoding')) {
- // If mbstring is available, this is significantly faster than
- // using PHP regexps.
- return mb_check_encoding($string, 'UTF-8');
- }
-
- // @codeCoverageIgnoreStart
- return self::seemsUtf8Regex($string);
- // @codeCoverageIgnoreEnd
- }
-
- /**
- * A non-Mbstring UTF-8 checker.
- *
- * @param $string
- * @return bool
- */
- protected static function seemsUtf8Regex($string)
- {
- // Obtained from http://stackoverflow.com/a/11709412/430062 with permission.
- $regex = '/(
- [\xC0-\xC1] # Invalid UTF-8 Bytes
- | [\xF5-\xFF] # Invalid UTF-8 Bytes
- | \xE0[\x80-\x9F] # Overlong encoding of prior code point
- | \xF0[\x80-\x8F] # Overlong encoding of prior code point
- | [\xC2-\xDF](?![\x80-\xBF]) # Invalid UTF-8 Sequence Start
- | [\xE0-\xEF](?![\x80-\xBF]{2}) # Invalid UTF-8 Sequence Start
- | [\xF0-\xF4](?![\x80-\xBF]{3}) # Invalid UTF-8 Sequence Start
- | (?<=[\x0-\x7F\xF5-\xFF])[\x80-\xBF] # Invalid UTF-8 Sequence Middle
- | (?
- *
- * @param string $brokenSerializedData
- * @return string
- */
- public static function fix_broken_serialization($brokenSerializedData)
- {
- $fixdSerializedData = preg_replace_callback('!s:(\d+):"(.*?)";!', function($matches) {
- $snip = $matches[2];
- return 's:' . strlen($snip) . ':"' . $snip . '";';
- }, $brokenSerializedData);
-
- return $fixdSerializedData;
- }
-
- /**
- * Checks to see if the page is being server over SSL or not
- *
- * @return boolean
- */
- public static function is_https()
- {
- return isset($_SERVER['HTTPS']) && !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off';
- }
-
- /**
- * Add or remove query arguments to the URL.
- *
- * @param mixed $newKey Either newkey or an associative array
- * @param mixed $newValue Either newvalue or oldquery or uri
- * @param mixed $uri URI or URL to append the queru/queries to.
- * @return string
- */
- public static function add_query_arg($newKey, $newValue = null, $uri = null)
- {
- // Was an associative array of key => value pairs passed?
- if (is_array($newKey)) {
- $newParams = $newKey;
-
- // Was the URL passed as an argument?
- if (!is_null($newValue)) {
- $uri = $newValue;
- } elseif (!is_null($uri)) {
- $uri = $uri;
- } else {
- $uri = self::array_get($_SERVER['REQUEST_URI'], '');
- }
- } else {
- $newParams = array($newKey => $newValue);
-
- // Was the URL passed as an argument?
- $uri = is_null($uri) ? self::array_get($_SERVER['REQUEST_URI'], '') : $uri;
- }
-
- // Parse the URI into it's components
- $puri = parse_url($uri);
-
- if (isset($puri['query'])) {
- parse_str($puri['query'], $queryParams);
- $queryParams = array_merge($queryParams, $newParams);
- } elseif (isset($puri['path']) && strstr($puri['path'], '=') !== false) {
- $puri['query'] = $puri['path'];
- unset($puri['path']);
- parse_str($puri['query'], $queryParams);
- $queryParams = array_merge($queryParams, $newParams);
- } else {
- $queryParams = $newParams;
- }
-
- // Strip out any query params that are set to false
- foreach ($queryParams as $param => $value) {
- if ($value === false) {
- unset($queryParams[$param]);
- }
- }
-
- // Re-construct the query string
- $puri['query'] = http_build_query($queryParams);
-
- // Re-construct the entire URL
- $nuri = self::http_build_url($puri);
-
- // Make the URI consistent with our input
- if ($nuri[0] === '/' && strstr($uri, '/') === false) {
- $nuri = substr($nuri, 1);
- }
-
- if ($nuri[0] === '?' && strstr($uri, '?') === false) {
- $nuri = substr($nuri, 1);
- }
-
- return rtrim($nuri, '?');
- }
-
- /**
- * Removes an item or list from the query string.
- *
- * @param string|array $keys Query key or keys to remove.
- * @param bool $uri When false uses the $_SERVER value
- * @return string
- */
- public static function remove_query_arg($keys, $uri = null)
- {
- if (is_array($keys)) {
- return self::add_query_arg(array_combine($keys, array_fill(0, count($keys), null)), $uri);
- }
-
- return self::add_query_arg(array($keys => null), $uri);
- }
-
- /**
- * Build a URL.
- *
- * The parts of the second URL will be merged into the first according to
- * the flags argument.
- *
- * @author Jake Smith
- * @see https://github.com/jakeasmith/http_build_url/
- *
- * @param mixed $url (part(s) of) an URL in form of a string or
- * associative array like parse_url() returns
- * @param mixed $parts same as the first argument
- * @param int $flags a bitmask of binary or'ed HTTP_URL constants;
- * HTTP_URL_REPLACE is the default
- * @param array $new_url if set, it will be filled with the parts of the
- * composed url like parse_url() would return
- * @return string
- */
- public static function http_build_url($url, $parts = array(), $flags = self::HTTP_URL_REPLACE, &$new_url = array())
- {
- is_array($url) || $url = parse_url($url);
- is_array($parts) || $parts = parse_url($parts);
-
- isset($url['query']) && is_string($url['query']) || $url['query'] = null;
- isset($parts['query']) && is_string($parts['query']) || $parts['query'] = null;
-
- $keys = array('user', 'pass', 'port', 'path', 'query', 'fragment');
-
- // HTTP_URL_STRIP_ALL and HTTP_URL_STRIP_AUTH cover several other flags.
- if ($flags & self::HTTP_URL_STRIP_ALL) {
- $flags |= self::HTTP_URL_STRIP_USER | self::HTTP_URL_STRIP_PASS
- | self::HTTP_URL_STRIP_PORT | self::HTTP_URL_STRIP_PATH
- | self::HTTP_URL_STRIP_QUERY | self::HTTP_URL_STRIP_FRAGMENT;
- } elseif ($flags & self::HTTP_URL_STRIP_AUTH) {
- $flags |= self::HTTP_URL_STRIP_USER | self::HTTP_URL_STRIP_PASS;
- }
-
- // Schema and host are alwasy replaced
- foreach (array('scheme', 'host') as $part) {
- if (isset($parts[$part])) {
- $url[$part] = $parts[$part];
- }
- }
-
- if ($flags & self::HTTP_URL_REPLACE) {
- foreach ($keys as $key) {
- if (isset($parts[$key])) {
- $url[$key] = $parts[$key];
- }
- }
- } else {
- if (isset($parts['path']) && ($flags & self::HTTP_URL_JOIN_PATH)) {
- if (isset($url['path']) && substr($parts['path'], 0, 1) !== '/') {
- $url['path'] = rtrim(
- str_replace(basename($url['path']), '', $url['path']),
- '/'
- ) . '/' . ltrim($parts['path'], '/');
- } else {
- $url['path'] = $parts['path'];
- }
- }
-
- if (isset($parts['query']) && ($flags & self::HTTP_URL_JOIN_QUERY)) {
- if (isset($url['query'])) {
- parse_str($url['query'], $url_query);
- parse_str($parts['query'], $parts_query);
-
- $url['query'] = http_build_query(
- array_replace_recursive(
- $url_query,
- $parts_query
- )
- );
- } else {
- $url['query'] = $parts['query'];
- }
- }
- }
-
- if (isset($url['path']) && substr($url['path'], 0, 1) !== '/') {
- $url['path'] = '/' . $url['path'];
- }
-
- foreach ($keys as $key) {
- $strip = 'HTTP_URL_STRIP_' . strtoupper($key);
- if ($flags & constant('utilphp\\util::' . $strip)) {
- unset($url[$key]);
- }
- }
-
- $parsed_string = '';
-
- if (isset($url['scheme'])) {
- $parsed_string .= $url['scheme'] . '://';
- }
-
- if (isset($url['user'])) {
- $parsed_string .= $url['user'];
-
- if (isset($url['pass'])) {
- $parsed_string .= ':' . $url['pass'];
- }
-
- $parsed_string .= '@';
- }
-
- if (isset($url['host'])) {
- $parsed_string .= $url['host'];
- }
-
- if (isset($url['port'])) {
- $parsed_string .= ':' . $url['port'];
- }
-
- if (!empty($url['path'])) {
- $parsed_string .= $url['path'];
- } else {
- $parsed_string .= '/';
- }
-
- if (isset($url['query'])) {
- $parsed_string .= '?' . $url['query'];
- }
-
- if (isset($url['fragment'])) {
- $parsed_string .= '#' . $url['fragment'];
- }
-
- $new_url = $url;
-
- return $parsed_string;
- }
-
- /**
- * Converts many english words that equate to true or false to boolean.
- *
- * Supports 'y', 'n', 'yes', 'no' and a few other variations.
- *
- * @param string $string The string to convert to boolean
- * @param bool $default The value to return if we can't match any
- * yes/no words
- * @return boolean
- */
- public static function str_to_bool($string, $default = false)
- {
- $yes_words = 'affirmative|all right|aye|indubitably|most assuredly|ok|of course|okay|sure thing|y|yes+|yea|yep|sure|yeah|true|t|on|1|oui|vrai';
- $no_words = 'no*|no way|nope|nah|na|never|absolutely not|by no means|negative|never ever|false|f|off|0|non|faux';
-
- if (preg_match('/^(' . $yes_words . ')$/i', $string)) {
- return true;
- } elseif (preg_match('/^(' . $no_words . ')$/i', $string)) {
- return false;
- }
-
- return $default;
- }
-
- /**
- * Check if a string starts with the given string.
- *
- * @param string $string
- * @param string $starts_with
- * @return boolean
- */
- public static function starts_with($string, $starts_with)
- {
- return str_starts_with($string, $starts_with);
- }
-
- /**
- * Check if a string ends with the given string.
- *
- * @param string $string
- * @param string $starts_with
- * @return boolean
- */
- public static function ends_with($string, $ends_with)
- {
- return substr($string, -strlen($ends_with)) === $ends_with;
- }
-
- /**
- * Check if a string contains another string.
- *
- * @param string $haystack
- * @param string $needle
- * @return boolean
- */
- public static function str_contains($haystack, $needle)
- {
- return strpos($haystack, $needle) !== false;
- }
-
- /**
- * Check if a string contains another string. This version is case
- * insensitive.
- *
- * @param string $haystack
- * @param string $needle
- * @return boolean
- */
- public static function str_icontains($haystack, $needle)
- {
- return stripos($haystack, $needle) !== false;
- }
-
- /**
- * Return the file extension of the given filename.
- *
- * @param string $filename
- * @return string
- */
- public static function get_file_ext($filename)
- {
- return pathinfo($filename, PATHINFO_EXTENSION);
- }
-
- /**
- * Removes a directory (and its contents) recursively.
- *
- * Contributed by Askar (ARACOOL)
- *
- * @param string $dir The directory to be deleted recursively
- * @param bool $traverseSymlinks Delete contents of symlinks recursively
- * @return bool
- * @throws \RuntimeException
- */
- public static function rmdir($dir, $traverseSymlinks = false)
- {
- if (!file_exists($dir)) {
- return true;
- } elseif (!is_dir($dir)) {
- throw new \RuntimeException('Given path is not a directory');
- }
-
- if (!is_link($dir) || $traverseSymlinks) {
- foreach (scandir($dir) as $file) {
- if ($file === '.' || $file === '..') {
- continue;
- }
-
- $currentPath = $dir . '/' . $file;
-
- if (is_dir($currentPath)) {
- self::rmdir($currentPath, $traverseSymlinks);
- } elseif (!unlink($currentPath)) {
- // @codeCoverageIgnoreStart
- throw new \RuntimeException('Unable to delete ' . $currentPath);
- // @codeCoverageIgnoreEnd
- }
- }
- }
-
- // Windows treats removing directory symlinks identically to removing directories.
- if (is_link($dir) && !defined('PHP_WINDOWS_VERSION_MAJOR')) {
- if (!unlink($dir)) {
- // @codeCoverageIgnoreStart
- throw new \RuntimeException('Unable to delete ' . $dir);
- // @codeCoverageIgnoreEnd
- }
- } else {
- if (!rmdir($dir)) {
- // @codeCoverageIgnoreStart
- throw new \RuntimeException('Unable to delete ' . $dir);
- // @codeCoverageIgnoreEnd
- }
- }
-
- return true;
- }
-
- /**
- * Convert entities, while preserving already-encoded entities.
- *
- * @param string $string The text to be converted
- * @return string
- */
- public static function htmlentities($string, $preserve_encoded_entities = false)
- {
- if ($preserve_encoded_entities) {
- // @codeCoverageIgnoreStart
- if (defined('HHVM_VERSION')) {
- $translation_table = get_html_translation_table(HTML_ENTITIES, ENT_QUOTES);
- } else {
- $translation_table = get_html_translation_table(HTML_ENTITIES, ENT_QUOTES, self::mbInternalEncoding());
- }
- // @codeCoverageIgnoreEnd
-
- $translation_table[chr(38)] = '&';
- return preg_replace('/&(?![A-Za-z]{0,4}\w{2,3};|#[0-9]{2,3};)/', '&', strtr($string, $translation_table));
- }
-
- return htmlentities($string, ENT_QUOTES, self::mbInternalEncoding());
- }
-
- /**
- * Convert >, <, ', " and & to html entities, but preserves entities that
- * are already encoded.
- *
- * @param string $string The text to be converted
- * @return string
- */
- public static function htmlspecialchars($string, $preserve_encoded_entities = false)
- {
- if ($preserve_encoded_entities) {
- // @codeCoverageIgnoreStart
- if (defined('HHVM_VERSION')) {
- $translation_table = get_html_translation_table(HTML_SPECIALCHARS, ENT_QUOTES);
- } else {
- $translation_table = get_html_translation_table(HTML_SPECIALCHARS, ENT_QUOTES, self::mbInternalEncoding());
- }
- // @codeCoverageIgnoreEnd
-
- $translation_table[chr(38)] = '&';
-
- return preg_replace('/&(?![A-Za-z]{0,4}\w{2,3};|#[0-9]{2,3};)/', '&', strtr($string, $translation_table));
- }
-
- return htmlentities($string, ENT_QUOTES, self::mbInternalEncoding());
- }
-
- /**
- * Transliterates characters to their ASCII equivalents.
- *
- * Part of the URLify.php Project
- *
- * @see https://github.com/jbroadway/urlify/blob/master/URLify.php
- *
- * @param string $text Text that might have not-ASCII characters
- * @param string $language Specifies a priority for a specific language.
- * @return string Filtered string with replaced "nice" characters
- */
- public static function downcode($text, $language = '')
- {
- self::initLanguageMap($language);
-
- if (self::seems_utf8($text)) {
- if (preg_match_all(self::$regex, $text, $matches)) {
- for ($i = 0; $i < count($matches[0]); $i++) {
- $char = $matches[0][$i];
- if (isset(self::$map[$char])) {
- $text = str_replace($char, self::$map[$char], $text);
- }
- }
- }
- } else {
- // Not a UTF-8 string so we assume its ISO-8859-1
- $search = "\x80\x83\x8a\x8e\x9a\x9e\x9f\xa2\xa5\xb5\xc0\xc1\xc2\xc3\xc4\xc5\xc7\xc8\xc9\xca\xcb\xcc\xcd";
- $search .= "\xce\xcf\xd1\xd2\xd3\xd4\xd5\xd6\xd8\xd9\xda\xdb\xdc\xdd\xe0\xe1\xe2\xe3\xe4\xe5\xe7\xe8\xe9";
- $search .= "\xea\xeb\xec\xed\xee\xef\xf1\xf2\xf3\xf4\xf5\xf6\xf8\xf9\xfa\xfb\xfc\xfd\xff";
- $text = strtr($text, $search, 'EfSZszYcYuAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy');
-
- // These latin characters should be represented by two characters so
- // we can't use strtr
- $complexSearch = array("\x8c", "\x9c", "\xc6", "\xd0", "\xde", "\xdf", "\xe6", "\xf0", "\xfe");
- $complexReplace = array('OE', 'oe', 'AE', 'DH', 'TH', 'ss', 'ae', 'dh', 'th');
- $text = str_replace($complexSearch, $complexReplace, $text);
- }
-
- return $text;
- }
-
- /**
- * Converts all accent characters to ASCII characters.
- *
- * If there are no accent characters, then the string given is just
- * returned.
- *
- * @param string $string Text that might have accent characters
- * @param string $language Specifies a priority for a specific language.
- * @return string Filtered string with replaced "nice" characters
- */
- public static function remove_accents($string, $language = '')
- {
- if (!preg_match('/[\x80-\xff]/', $string)) {
- return $string;
- }
-
- return self::downcode($string, $language);
- }
-
- /**
- * Strip all witespaces from the given string.
- *
- * @param string $string The string to strip
- * @return string
- */
- public static function strip_space($string)
- {
- return preg_replace('/\s+/', '', $string);
- }
-
- /**
- * Sanitize a string by performing the following operation :
- * - Remove accents
- * - Lower the string
- * - Remove punctuation characters
- * - Strip whitespaces
- *
- * @param string $string the string to sanitize
- * @return string
- */
- public static function sanitize_string($string)
- {
- $string = self::remove_accents($string);
- $string = strtolower($string);
- $string = preg_replace('/[^a-zA-Z 0-9]+/', '', $string);
- $string = self::strip_space($string);
-
- return $string;
- }
-
- /**
- * Pads a given string with zeroes on the left.
- *
- * @param int $number The number to pad
- * @param int $length The total length of the desired string
- * @return string
- */
- public static function zero_pad($number, $length)
- {
- return str_pad($number, $length, '0', STR_PAD_LEFT);
- }
-
- /**
- * Converts a unix timestamp to a relative time string, such as "3 days ago"
- * or "2 weeks ago".
- *
- * @param int $from The date to use as a starting point
- * @param int $to The date to compare to, defaults to now
- * @param string $suffix The string to add to the end, defaults to " ago"
- * @return string
- */
- public static function human_time_diff($from, $to = '', $as_text = false, $suffix = ' ago')
- {
- if ($to == '') {
- $to = time();
- }
-
- $from = new \DateTime(date('Y-m-d H:i:s', $from));
- $to = new \DateTime(date('Y-m-d H:i:s', $to));
- $diff = $from->diff($to);
-
- if ($diff->y > 1) {
- $text = $diff->y . ' years';
- } elseif ($diff->y == 1) {
- $text = '1 year';
- } elseif ($diff->m > 1) {
- $text = $diff->m . ' months';
- } elseif ($diff->m == 1) {
- $text = '1 month';
- } elseif ($diff->d > 7) {
- $text = ceil($diff->d / 7) . ' weeks';
- } elseif ($diff->d == 7) {
- $text = '1 week';
- } elseif ($diff->d > 1) {
- $text = $diff->d . ' days';
- } elseif ($diff->d == 1) {
- $text = '1 day';
- } elseif ($diff->h > 1) {
- $text = $diff->h . ' hours';
- } elseif ($diff->h == 1) {
- $text = ' 1 hour';
- } elseif ($diff->i > 1) {
- $text = $diff->i . ' minutes';
- } elseif ($diff->i == 1) {
- $text = '1 minute';
- } elseif ($diff->s > 1) {
- $text = $diff->s . ' seconds';
- } else {
- $text = '1 second';
- }
-
- if ($as_text) {
- $text = explode(' ', $text, 2);
- $text = self::number_to_word($text[0]) . ' ' . $text[1];
- }
-
- return trim($text) . $suffix;
- }
-
- /**
- * Converts a number into the text equivalent. For example, 456 becomes four
- * hundred and fifty-six.
- *
- * Part of the IntToWords Project.
- *
- * @param int|float $number The number to convert into text
- * @return string
- */
- public static function number_to_word($number)
- {
- $number = (string) $number;
-
- if (strpos($number, '.') !== false) {
- list($number, $decimal) = explode('.', $number);
- } else {
- $decimal = false;
- }
-
- $output = '';
-
- if ($number[0] == '-') {
- $output = 'negative ';
- $number = ltrim($number, '-');
- } elseif ($number[0] == '+') {
- $output = 'positive ';
- $number = ltrim($number, '+');
- }
-
- if ($number[0] == '0') {
- $output .= 'zero';
- } else {
- $length = 19;
- $number = str_pad($number, 60, '0', STR_PAD_LEFT);
- $group = rtrim(chunk_split($number, 3, ' '), ' ');
- $groups = explode(' ', $group);
- $groups2 = array();
-
- foreach ($groups as $group) {
- $group[1] = isset($group[1]) ? $group[1] : null;
- $group[2] = isset($group[2]) ? $group[2] : null;
- $groups2[] = self::numberToWordThreeDigits($group[0], $group[1], $group[2]);
- }
-
- for ($z = 0; $z < count($groups2); $z++) {
- if ($groups2[$z] != '') {
- $output .= $groups2[$z] . self::numberToWordConvertGroup($length - $z);
- $output .= ($z < $length && ! array_search('', array_slice($groups2, $z + 1, -1)) && $groups2[$length] != '' && $groups[$length][0] == '0' ? ' and ' : ', ');
- }
- }
-
- $output = rtrim($output, ', ');
- }
-
- if ($decimal > 0) {
- $output .= ' point';
-
- for ($i = 0; $i < strlen($decimal); $i++) {
- $output .= ' ' . self::numberToWordConvertDigit($decimal[$i]);
- }
- }
-
- return $output;
- }
-
- protected static function numberToWordConvertGroup($index)
- {
- switch($index) {
- case 11:
- return ' decillion';
- case 10:
- return ' nonillion';
- case 9:
- return ' octillion';
- case 8:
- return ' septillion';
- case 7:
- return ' sextillion';
- case 6:
- return ' quintrillion';
- case 5:
- return ' quadrillion';
- case 4:
- return ' trillion';
- case 3:
- return ' billion';
- case 2:
- return ' million';
- case 1:
- return ' thousand';
- case 0:
- return '';
- }
-
- return '';
- }
-
- protected static function numberToWordThreeDigits($digit1, $digit2, $digit3)
- {
- $output = '';
-
- if ($digit1 == '0' && $digit2 == '0' && $digit3 == '0') {
- return '';
- }
-
- if ($digit1 != '0') {
- $output .= self::numberToWordConvertDigit($digit1) . ' hundred';
-
- if ($digit2 != '0' || $digit3 != '0') {
- $output .= ' and ';
- }
- }
- if ($digit2 != '0') {
- $output .= self::numberToWordTwoDigits($digit2, $digit3);
- } elseif ($digit3 != '0') {
- $output .= self::numberToWordConvertDigit($digit3);
- }
-
- return $output;
- }
-
- protected static function numberToWordTwoDigits($digit1, $digit2)
- {
- if ($digit2 == '0') {
- switch ($digit1) {
- case '1':
- return 'ten';
- case '2':
- return 'twenty';
- case '3':
- return 'thirty';
- case '4':
- return 'forty';
- case '5':
- return 'fifty';
- case '6':
- return 'sixty';
- case '7':
- return 'seventy';
- case '8':
- return 'eighty';
- case '9':
- return 'ninety';
- }
- } elseif ($digit1 == '1') {
- switch ($digit2) {
- case '1':
- return 'eleven';
- case '2':
- return 'twelve';
- case '3':
- return 'thirteen';
- case '4':
- return 'fourteen';
- case '5':
- return 'fifteen';
- case '6':
- return 'sixteen';
- case '7':
- return 'seventeen';
- case '8':
- return 'eighteen';
- case '9':
- return 'nineteen';
- }
- } else {
- $second_digit = self::numberToWordConvertDigit($digit2);
-
- switch ($digit1) {
- case '2':
- return "twenty-{$second_digit}";
- case '3':
- return "thirty-{$second_digit}";
- case '4':
- return "forty-{$second_digit}";
- case '5':
- return "fifty-{$second_digit}";
- case '6':
- return "sixty-{$second_digit}";
- case '7':
- return "seventy-{$second_digit}";
- case '8':
- return "eighty-{$second_digit}";
- case '9':
- return "ninety-{$second_digit}";
- }
- }
- }
-
- /**
- * @param $digit
- * @return string
- * @throws \LogicException
- */
- protected static function numberToWordConvertDigit($digit)
- {
- switch ($digit) {
- case '0':
- return 'zero';
- case '1':
- return 'one';
- case '2':
- return 'two';
- case '3':
- return 'three';
- case '4':
- return 'four';
- case '5':
- return 'five';
- case '6':
- return 'six';
- case '7':
- return 'seven';
- case '8':
- return 'eight';
- case '9':
- return 'nine';
- default:
- throw new \LogicException('Not a number');
- }
- }
-
- /**
- * Transmit UTF-8 content headers if the headers haven't already been sent.
- *
- * @param string $content_type The content type to send out
- * @return boolean
- */
- public static function utf8_headers($content_type = 'text/html')
- {
- // @codeCoverageIgnoreStart
- if (!headers_sent()) {
- header('Content-type: ' . $content_type . '; charset=utf-8');
-
- return true;
- }
-
- return false;
- // @codeCoverageIgnoreEnd
- }
-
- /**
- * Transmit headers that force a browser to display the download file
- * dialog. Cross browser compatible. Only fires if headers have not
- * already been sent.
- *
- * @param string $filename The name of the filename to display to
- * browsers
- * @param string $content The content to output for the download.
- * If you don't specify this, just the
- * headers will be sent
- * @return boolean
- */
- public static function force_download($filename, $content = false)
- {
- // @codeCoverageIgnoreStart
- if (!headers_sent()) {
- // Required for some browsers
- if (ini_get('zlib.output_compression')) {
- @ini_set('zlib.output_compression', 'Off');
- }
-
- header('Pragma: public');
- header('Expires: 0');
- header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
-
- // Required for certain browsers
- header('Cache-Control: private', false);
-
- header('Content-Disposition: attachment; filename="' . basename(str_replace('"', '', $filename)) . '";');
- header('Content-Type: application/force-download');
- header('Content-Transfer-Encoding: binary');
-
- if ($content) {
- header('Content-Length: ' . strlen($content));
- }
-
- ob_clean();
- flush();
-
- if ($content) {
- echo $content;
- }
-
- return true;
- }
-
- return false;
- // @codeCoverageIgnoreEnd
- }
-
- /**
- * Sets the headers to prevent caching for the different browsers.
- *
- * Different browsers support different nocache headers, so several
- * headers must be sent so that all of them get the point that no
- * caching should occur
- *
- * @return boolean
- */
- public static function nocache_headers()
- {
- // @codeCoverageIgnoreStart
- if (!headers_sent()) {
- header('Expires: Wed, 11 Jan 1984 05:00:00 GMT');
- header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
- header('Cache-Control: no-cache, must-revalidate, max-age=0');
- header('Pragma: no-cache');
-
- return true;
- }
-
- return false;
- // @codeCoverageIgnoreEnd
- }
-
- /**
- * Generates a string of random characters.
- *
- * @throws LengthException If $length is bigger than the available
- * character pool and $no_duplicate_chars is
- * enabled
- *
- * @param integer $length The length of the string to
- * generate
- * @param boolean $human_friendly Whether or not to make the
- * string human friendly by
- * removing characters that can be
- * confused with other characters (
- * O and 0, l and 1, etc)
- * @param boolean $include_symbols Whether or not to include
- * symbols in the string. Can not
- * be enabled if $human_friendly is
- * true
- * @param boolean $no_duplicate_chars Whether or not to only use
- * characters once in the string.
- * @return string
- */
- public static function random_string($length = 16, $human_friendly = true, $include_symbols = false, $no_duplicate_chars = false)
- {
- $nice_chars = 'ABCDEFGHJKLMNPQRSTUVWXYZabcdefhjkmnprstuvwxyz23456789';
- $all_an = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890';
- $symbols = '!@#$%^&*()~_-=+{}[]|:;<>,.?/"\'\\`';
- $string = '';
-
- // Determine the pool of available characters based on the given parameters
- if ($human_friendly) {
- $pool = $nice_chars;
- } else {
- $pool = $all_an;
-
- if ($include_symbols) {
- $pool .= $symbols;
- }
- }
-
- if (!$no_duplicate_chars) {
- return substr(str_shuffle(str_repeat($pool, $length)), 0, $length);
- }
-
- // Don't allow duplicate letters to be disabled if the length is
- // longer than the available characters
- if ($no_duplicate_chars && strlen($pool) < $length) {
- throw new \LengthException('$length exceeds the size of the pool and $no_duplicate_chars is enabled');
- }
-
- // Convert the pool of characters into an array of characters and
- // shuffle the array
- $pool = str_split($pool);
- $poolLength = count($pool);
- $rand = mt_rand(0, $poolLength - 1);
-
- // Generate our string
- for ($i = 0; $i < $length; $i++) {
- $string .= $pool[$rand];
-
- // Remove the character from the array to avoid duplicates
- array_splice($pool, $rand, 1);
-
- // Generate a new number
- if (($poolLength - 2 - $i) > 0) {
- $rand = mt_rand(0, $poolLength - 2 - $i);
- } else {
- $rand = 0;
- }
- }
-
- return $string;
- }
-
- /**
- * Generate secure random string of given length
- * If 'openssl_random_pseudo_bytes' is not available
- * then generate random string using default function
- *
- * Part of the Laravel Project
- *
- * @param int $length length of string
- * @return bool
- */
- public static function secure_random_string($length = 16)
- {
- if (function_exists('openssl_random_pseudo_bytes')) {
- $bytes = openssl_random_pseudo_bytes($length * 2);
-
- if ($bytes === false) {
- throw new \LengthException('$length is not accurate, unable to generate random string');
- }
-
- return substr(str_replace(array('/', '+', '='), '', base64_encode($bytes)), 0, $length);
- }
-
- // @codeCoverageIgnoreStart
- return static::random_string($length);
- // @codeCoverageIgnoreEnd
- }
-
- /**
- * Check if a given string matches a given pattern.
- *
- * Contributed by Abhimanyu Sharma
- *
- * @param string $pattern Parttern of string exptected
- * @param string $string String that need to be matched
- * @return bool
- */
- public static function match_string($pattern, $string, $caseSensitive = true)
- {
- if ($pattern == $string) {
- return true;
- }
-
- // Preg flags
- $flags = $caseSensitive ? '' : 'i';
-
- // Escape any regex special characters
- $pattern = preg_quote($pattern, '#');
-
- // Unescape * which is our wildcard character and change it to .*
- $pattern = str_replace('\*', '.*', $pattern);
-
- return (bool) preg_match('#^' . $pattern . '$#' . $flags, $string);
- }
-
- /**
- * Validate an email address.
- *
- * @param string $possible_email An email address to validate
- * @return bool
- */
- public static function validate_email($possible_email)
- {
- return (bool) filter_var($possible_email, FILTER_VALIDATE_EMAIL);
- }
-
- /**
- * Return the URL to a user's gravatar.
- *
- * @param string $email The email of the user
- * @param integer $size The size of the gravatar
- * @return string
- */
- public static function get_gravatar($email, $size = 32)
- {
- if (self::is_https()) {
- $url = 'https://secure.gravatar.com/';
- } else {
- $url = 'http://www.gravatar.com/';
- }
-
- $url .= 'avatar/' . md5($email) . '?s=' . (int) abs($size);
-
- return $url;
- }
-
- /**
- * Turns all of the links in a string into HTML links.
- *
- * Part of the LinkifyURL Project
- *
- * @param string $text The string to parse
- * @return string
- */
- public static function linkify($text)
- {
- $text = preg_replace('/'/', ''', $text); // IE does not handle ' entity!
- $section_html_pattern = '%# Rev:20100913_0900 github.com/jmrware/LinkifyURL
- # Section text into HTML tags and everything else.
- ( # $1: Everything not HTML tag.
- [^<]+(?:(?! ... tag.
- ]*> # opening tag.
- [^<]*(?:(?! # closing tag.
- ) # End $2:
- %ix';
-
- return preg_replace_callback($section_html_pattern, array(__CLASS__, 'linkifyCallback'), $text);
- }
-
- /**
- * Callback for the preg_replace in the linkify() method.
- *
- * Part of the LinkifyURL Project
- *
- * @param array $matches Matches from the preg_ function
- * @return string
- */
- protected static function linkifyRegex($text)
- {
- $url_pattern = '/# Rev:20100913_0900 github.com\/jmrware\/LinkifyURL
- # Match http & ftp URL that is not already linkified.
- # Alternative 1: URL delimited by (parentheses).
- (\() # $1 "(" start delimiter.
- ((?:ht|f)tps?:\/\/[a-z0-9\-._~!$&\'()*+,;=:\/?#[\]@%]+) # $2: URL.
- (\)) # $3: ")" end delimiter.
- | # Alternative 2: URL delimited by [square brackets].
- (\[) # $4: "[" start delimiter.
- ((?:ht|f)tps?:\/\/[a-z0-9\-._~!$&\'()*+,;=:\/?#[\]@%]+) # $5: URL.
- (\]) # $6: "]" end delimiter.
- | # Alternative 3: URL delimited by {curly braces}.
- (\{) # $7: "{" start delimiter.
- ((?:ht|f)tps?:\/\/[a-z0-9\-._~!$&\'()*+,;=:\/?#[\]@%]+) # $8: URL.
- (\}) # $9: "}" end delimiter.
- | # Alternative 4: URL delimited by .
- (<|&(?:lt|\#60|\#x3c);) # $10: "<" start delimiter (or HTML entity).
- ((?:ht|f)tps?:\/\/[a-z0-9\-._~!$&\'()*+,;=:\/?#[\]@%]+) # $11: URL.
- (>|&(?:gt|\#62|\#x3e);) # $12: ">" end delimiter (or HTML entity).
- | # Alternative 5: URL not delimited by (), [], {} or <>.
- (# $13: Prefix proving URL not already linked.
- (?: ^ # Can be a beginning of line or string, or
- | [^=\s\'"\]] # a non-"=", non-quote, non-"]", followed by
- ) \s*[\'"]? # optional whitespace and optional quote;
- | [^=\s]\s+ # or... a non-equals sign followed by whitespace.
- ) # End $13. Non-prelinkified-proof prefix.
- (\b # $14: Other non-delimited URL.
- (?:ht|f)tps?:\/\/ # Required literal http, https, ftp or ftps prefix.
- [a-z0-9\-._~!$\'()*+,;=:\/?#[\]@%]+ # All URI chars except "&" (normal*).
- (?: # Either on a "&" or at the end of URI.
- (?! # Allow a "&" char only if not start of an...
- &(?:gt|\#0*62|\#x0*3e); # HTML ">" entity, or
- | &(?:amp|apos|quot|\#0*3[49]|\#x0*2[27]); # a [&\'"] entity if
- [.!&\',:?;]? # followed by optional punctuation then
- (?:[^a-z0-9\-._~!$&\'()*+,;=:\/?#[\]@%]|$) # a non-URI char or EOS.
- ) & # If neg-assertion true, match "&" (special).
- [a-z0-9\-._~!$\'()*+,;=:\/?#[\]@%]* # More non-& URI chars (normal*).
- )* # Unroll-the-loop (special normal*)*.
- [a-z0-9\-_~$()*+=\/#[\]@%] # Last char can\'t be [.!&\',;:?]
- ) # End $14. Other non-delimited URL.
- /imx';
-
- $url_replace = '$1$4$7$10$13$2$5$8$11$14 $3$6$9$12';
-
- return preg_replace($url_pattern, $url_replace, $text);
- }
-
- /**
- * Callback for the preg_replace in the linkify() method.
- *
- * Part of the LinkifyURL Project
- *
- * @param array $matches Matches from the preg_ function
- * @return string
- */
- protected static function linkifyCallback($matches)
- {
- if (isset($matches[2])) {
- return $matches[2];
- }
-
- return self::linkifyRegex($matches[1]);
- }
-
- /**
- * Return the current URL.
- *
- * @return string
- */
- public static function get_current_url()
- {
- $url = '';
-
- // Check to see if it's over https
- $is_https = self::is_https();
- if ($is_https) {
- $url .= 'https://';
- } else {
- $url .= 'http://';
- }
-
- // Was a username or password passed?
- if (isset($_SERVER['PHP_AUTH_USER'])) {
- $url .= $_SERVER['PHP_AUTH_USER'];
-
- if (isset($_SERVER['PHP_AUTH_PW'])) {
- $url .= ':' . $_SERVER['PHP_AUTH_PW'];
- }
-
- $url .= '@';
- }
-
-
- // We want the user to stay on the same host they are currently on,
- // but beware of security issues
- // see http://shiflett.org/blog/2006/mar/server-name-versus-http-host
- $url .= $_SERVER['HTTP_HOST'];
-
- $port = $_SERVER['SERVER_PORT'];
-
- // Is it on a non standard port?
- if ($is_https && ($port != 443)) {
- $url .= ':' . $_SERVER['SERVER_PORT'];
- } elseif (!$is_https && ($port != 80)) {
- $url .= ':' . $_SERVER['SERVER_PORT'];
- }
-
- // Get the rest of the URL
- if (!isset($_SERVER['REQUEST_URI'])) {
- // Microsoft IIS doesn't set REQUEST_URI by default
- $url .= $_SERVER['PHP_SELF'];
-
- if (isset($_SERVER['QUERY_STRING'])) {
- $url .= '?' . $_SERVER['QUERY_STRING'];
- }
- } else {
- $url .= $_SERVER['REQUEST_URI'];
- }
-
- return $url;
- }
-
- /**
- * Returns the IP address of the client.
- *
- * @param boolean $trust_proxy_headers Whether or not to trust the
- * proxy headers HTTP_CLIENT_IP
- * and HTTP_X_FORWARDED_FOR. ONLY
- * use if your server is behind a
- * proxy that sets these values
- * @return string
- */
- public static function get_client_ip($trust_proxy_headers = false)
- {
- if (!$trust_proxy_headers) {
- return $_SERVER['REMOTE_ADDR'];
- }
-
- if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
- $ip = $_SERVER['HTTP_CLIENT_IP'];
- } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
- $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
- } else {
- $ip = $_SERVER['REMOTE_ADDR'];
- }
-
- return $ip;
- }
-
- /**
- * Truncate a string to a specified length without cutting a word off.
- *
- * @param string $string The string to truncate
- * @param integer $length The length to truncate the string to
- * @param string $append Text to append to the string IF it gets
- * truncated, defaults to '...'
- * @return string
- */
- public static function safe_truncate($string, $length, $append = '...')
- {
- $ret = substr($string, 0, $length);
- $last_space = strrpos($ret, ' ');
-
- if ($last_space !== false && $string != $ret) {
- $ret = substr($ret, 0, $last_space);
- }
-
- if ($ret != $string) {
- $ret .= $append;
- }
-
- return $ret;
- }
-
-
- /**
- * Truncate the string to given length of charactes.
- *
- * @param $string
- * @param $limit
- * @param string $append
- * @return string
- */
- public static function limit_characters($string, $limit = 100, $append = '...')
- {
- if (mb_strlen($string) <= $limit) {
- return $string;
- }
-
- return rtrim(mb_substr($string, 0, $limit, 'UTF-8')) . $append;
- }
-
- /**
- * Truncate the string to given length of words.
- *
- * @param $string
- * @param $limit
- * @param string $append
- * @return string
- */
- public static function limit_words($string, $limit = 100, $append = '...')
- {
- preg_match('/^\s*+(?:\S++\s*+){1,' . $limit . '}/u', $string, $matches);
-
- if (!isset($matches[0]) || strlen($string) === strlen($matches[0])) {
- return $string;
- }
-
- return rtrim($matches[0]).$append;
- }
-
- /**
- * Returns the ordinal version of a number (appends th, st, nd, rd).
- *
- * @param string $number The number to append an ordinal suffix to
- * @return string
- */
- public static function ordinal($number)
- {
- $test_c = abs($number) % 10;
- $ext = ((abs($number) % 100 < 21 && abs($number) % 100 > 4) ? 'th' : (($test_c < 4) ? ($test_c < 3) ? ($test_c < 2) ? ($test_c < 1) ? 'th' : 'st' : 'nd' : 'rd' : 'th'));
-
- return $number . $ext;
- }
-
- /**
- * Returns the file permissions as a nice string, like -rw-r--r-- or false
- * if the file is not found.
- *
- * @param string $file The name of the file to get permissions form
- * @param int $perms Numerical value of permissions to display as text.
- * @return string
- */
- public static function full_permissions($file, $perms = null)
- {
- if (is_null($perms)) {
- if (!file_exists($file)) {
- return false;
- }
- $perms = fileperms($file);
- }
-
- if (($perms & 0xC000) == 0xC000) {
- // Socket
- $info = 's';
- } elseif (($perms & 0xA000) == 0xA000) {
- // Symbolic Link
- $info = 'l';
- } elseif (($perms & 0x8000) == 0x8000) {
- // Regular
- $info = '-';
- } elseif (($perms & 0x6000) == 0x6000) {
- // Block special
- $info = 'b';
- } elseif (($perms & 0x4000) == 0x4000) {
- // Directory
- $info = 'd';
- } elseif (($perms & 0x2000) == 0x2000) {
- // Character special
- $info = 'c';
- } elseif (($perms & 0x1000) == 0x1000) {
- // FIFO pipe
- $info = 'p';
- } else {
- // Unknown
- $info = 'u';
- }
-
- // Owner
- $info .= (($perms & 0x0100) ? 'r' : '-');
- $info .= (($perms & 0x0080) ? 'w' : '-');
- $info .= (($perms & 0x0040) ?
- (($perms & 0x0800) ? 's' : 'x') :
- (($perms & 0x0800) ? 'S' : '-'));
-
- // Group
- $info .= (($perms & 0x0020) ? 'r' : '-');
- $info .= (($perms & 0x0010) ? 'w' : '-');
- $info .= (($perms & 0x0008) ?
- (($perms & 0x0400) ? 's' : 'x') :
- (($perms & 0x0400) ? 'S' : '-'));
-
- // World
- $info .= (($perms & 0x0004) ? 'r' : '-');
- $info .= (($perms & 0x0002) ? 'w' : '-');
- $info .= (($perms & 0x0001) ?
- (($perms & 0x0200) ? 't' : 'x') :
- (($perms & 0x0200) ? 'T' : '-'));
-
- return $info;
- }
-
- /**
- * Returns the first element in an array.
- *
- * @param array $array
- * @return mixed
- */
- public static function array_first(array $array)
- {
- return reset($array);
- }
-
- /**
- * Returns the last element in an array.
- *
- * @param array $array
- * @return mixed
- */
- public static function array_last(array $array)
- {
- return end($array);
- }
-
- /**
- * Returns the first key in an array.
- *
- * @param array $array
- * @return int|string
- */
- public static function array_first_key(array $array)
- {
- reset($array);
-
- return key($array);
- }
-
- /**
- * Returns the last key in an array.
- *
- * @param array $array
- * @return int|string
- */
- public static function array_last_key(array $array)
- {
- end($array);
-
- return key($array);
- }
-
- /**
- * Flatten a multi-dimensional array into a one dimensional array.
- *
- * Contributed by Theodore R. Smith of PHP Experts, Inc.
- *
- * @param array $array The array to flatten
- * @param boolean $preserve_keys Whether or not to preserve array keys.
- * Keys from deeply nested arrays will
- * overwrite keys from shallowy nested arrays
- * @return array
- */
- public static function array_flatten(array $array, $preserve_keys = true)
- {
- $flattened = array();
-
- array_walk_recursive($array, function($value, $key) use (&$flattened, $preserve_keys) {
- if ($preserve_keys && !is_int($key)) {
- $flattened[$key] = $value;
- } else {
- $flattened[] = $value;
- }
- });
-
- return $flattened;
- }
-
- /**
- * Accepts an array, and returns an array of values from that array as
- * specified by $field. For example, if the array is full of objects
- * and you call util::array_pluck($array, 'name'), the function will
- * return an array of values from $array[]->name.
- *
- * @param array $array An array
- * @param string $field The field to get values from
- * @param boolean $preserve_keys Whether or not to preserve the
- * array keys
- * @param boolean $remove_nomatches If the field doesn't appear to be set,
- * remove it from the array
- * @return array
- */
- public static function array_pluck(array $array, $field, $preserve_keys = true, $remove_nomatches = true)
- {
- $new_list = array();
-
- foreach ($array as $key => $value) {
- if (is_object($value)) {
- if (isset($value->{$field})) {
- if ($preserve_keys) {
- $new_list[$key] = $value->{$field};
- } else {
- $new_list[] = $value->{$field};
- }
- } elseif (!$remove_nomatches) {
- $new_list[$key] = $value;
- }
- } else {
- if (isset($value[$field])) {
- if ($preserve_keys) {
- $new_list[$key] = $value[$field];
- } else {
- $new_list[] = $value[$field];
- }
- } elseif (!$remove_nomatches) {
- $new_list[$key] = $value;
- }
- }
- }
-
- return $new_list;
- }
-
- /**
- * Searches for a given value in an array of arrays, objects and scalar
- * values. You can optionally specify a field of the nested arrays and
- * objects to search in.
- *
- * @param array $array The array to search
- * @param scalar $search The value to search for
- * @param string $field The field to search in, if not specified
- * all fields will be searched
- * @return boolean|scalar False on failure or the array key on success
- */
- public static function array_search_deep(array $array, $search, $field = false)
- {
- // *grumbles* stupid PHP type system
- $search = (string) $search;
-
- foreach ($array as $key => $elem) {
- // *grumbles* stupid PHP type system
- $key = (string) $key;
-
- if ($field) {
- if (is_object($elem) && $elem->{$field} === $search) {
- return $key;
- } elseif (is_array($elem) && $elem[$field] === $search) {
- return $key;
- } elseif (is_scalar($elem) && $elem === $search) {
- return $key;
- }
- } else {
- if (is_object($elem)) {
- $elem = (array) $elem;
-
- if (in_array($search, $elem)) {
- return $key;
- }
- } elseif (is_array($elem) && in_array($search, $elem)) {
- return $key;
- } elseif (is_scalar($elem) && $elem === $search) {
- return $key;
- }
- }
- }
-
- return false;
- }
-
- /**
- * Returns an array containing all the elements of arr1 after applying
- * the callback function to each one.
- *
- * @param string $callback Callback function to run for each
- * element in each array
- * @param array $array An array to run through the callback
- * function
- * @param boolean $on_nonscalar Whether or not to call the callback
- * function on nonscalar values
- * (Objects, resources, etc)
- * @return array
- */
- public static function array_map_deep(array $array, $callback, $on_nonscalar = false)
- {
- foreach ($array as $key => $value) {
- if (is_array($value)) {
- $args = array($value, $callback, $on_nonscalar);
- $array[$key] = call_user_func_array(array(__CLASS__, __FUNCTION__), $args);
- } elseif (is_scalar($value) || $on_nonscalar) {
- $array[$key] = call_user_func($callback, $value);
- }
- }
-
- return $array;
- }
-
- public static function array_clean(array $array)
- {
- return array_filter($array);
- }
-
- /**
- * Wrapper to prevent errors if the user doesn't have the mbstring
- * extension installed.
- *
- * @param string $encoding
- * @return string
- */
- protected static function mbInternalEncoding($encoding = null)
- {
- if (function_exists('mb_internal_encoding')) {
- return $encoding ? mb_internal_encoding($encoding) : mb_internal_encoding();
- }
-
- // @codeCoverageIgnoreStart
- return 'UTF-8';
- // @codeCoverageIgnoreEnd
- }
-
- /**
- * Set the writable bit on a file to the minimum value that allows the user
- * running PHP to write to it.
- *
- * @param string $filename The filename to set the writable bit on
- * @param boolean $writable Whether to make the file writable or not
- * @return boolean
- */
- public static function set_writable($filename, $writable = true)
- {
- $stat = @stat($filename);
-
- if ($stat === false) {
- return false;
- }
-
- // We're on Windows
- if (strncasecmp(PHP_OS, 'WIN', 3) === 0) {
- return true;
- }
-
- list($myuid, $mygid) = array(posix_geteuid(), posix_getgid());
-
- if ($writable) {
- // Set only the user writable bit (file is owned by us)
- if ($stat['uid'] == $myuid) {
- return chmod($filename, fileperms($filename) | 0200);
- }
-
- // Set only the group writable bit (file group is the same as us)
- if ($stat['gid'] == $mygid) {
- return chmod($filename, fileperms($filename) | 0220);
- }
-
- // Set the world writable bit (file isn't owned or grouped by us)
- return chmod($filename, fileperms($filename) | 0222);
- } else {
- // Set only the user writable bit (file is owned by us)
- if ($stat['uid'] == $myuid) {
- return chmod($filename, (fileperms($filename) | 0222) ^ 0222);
- }
-
- // Set only the group writable bit (file group is the same as us)
- if ($stat['gid'] == $mygid) {
- return chmod($filename, (fileperms($filename) | 0222) ^ 0022);
- }
-
- // Set the world writable bit (file isn't owned or grouped by us)
- return chmod($filename, (fileperms($filename) | 0222) ^ 0002);
- }
- }
-
- /**
- * Set the readable bit on a file to the minimum value that allows the user
- * running PHP to read to it.
- *
- * @param string $filename The filename to set the readable bit on
- * @param boolean $readable Whether to make the file readable or not
- * @return boolean
- */
- public static function set_readable($filename, $readable = true)
- {
- $stat = @stat($filename);
-
- if ($stat === false) {
- return false;
- }
-
- // We're on Windows
- if (strncasecmp(PHP_OS, 'WIN', 3) === 0) {
- return true;
- }
-
- list($myuid, $mygid) = array(posix_geteuid(), posix_getgid());
-
- if ($readable) {
- // Set only the user readable bit (file is owned by us)
- if ($stat['uid'] == $myuid) {
- return chmod($filename, fileperms($filename) | 0400);
- }
-
- // Set only the group readable bit (file group is the same as us)
- if ($stat['gid'] == $mygid) {
- return chmod($filename, fileperms($filename) | 0440);
- }
-
- // Set the world readable bit (file isn't owned or grouped by us)
- return chmod($filename, fileperms($filename) | 0444);
- } else {
- // Set only the user readable bit (file is owned by us)
- if ($stat['uid'] == $myuid) {
- return chmod($filename, (fileperms($filename) | 0444) ^ 0444);
- }
-
- // Set only the group readable bit (file group is the same as us)
- if ($stat['gid'] == $mygid) {
- return chmod($filename, (fileperms($filename) | 0444) ^ 0044);
- }
-
- // Set the world readable bit (file isn't owned or grouped by us)
- return chmod($filename, (fileperms($filename) | 0444) ^ 0004);
- }
- }
-
- /**
- * Set the executable bit on a file to the minimum value that allows the
- * user running PHP to read to it.
- *
- * @param string $filename The filename to set the executable bit on
- * @param boolean $executable Whether to make the file executable or not
- * @return boolean
- */
- public static function set_executable($filename, $executable = true)
- {
- $stat = @stat($filename);
-
- if ($stat === false) {
- return false;
- }
-
- // We're on Windows
- if (strncasecmp(PHP_OS, 'WIN', 3) === 0) {
- return true;
- }
-
- list($myuid, $mygid) = array(posix_geteuid(), posix_getgid());
-
- if ($executable) {
- // Set only the user readable bit (file is owned by us)
- if ($stat['uid'] == $myuid) {
- return chmod($filename, fileperms($filename) | 0100);
- }
-
- // Set only the group readable bit (file group is the same as us)
- if ($stat['gid'] == $mygid) {
- return chmod($filename, fileperms($filename) | 0110);
- }
-
- // Set the world readable bit (file isn't owned or grouped by us)
- return chmod($filename, fileperms($filename) | 0111);
- } else {
- // Set only the user readable bit (file is owned by us)
- if ($stat['uid'] == $myuid) {
- return chmod($filename, (fileperms($filename) | 0111) ^ 0111);
- }
-
- // Set only the group readable bit (file group is the same as us)
- if ($stat['gid'] == $mygid) {
- return chmod($filename, (fileperms($filename) | 0111) ^ 0011);
- }
-
- // Set the world readable bit (file isn't owned or grouped by us)
- return chmod($filename, (fileperms($filename) | 0111) ^ 0001);
- }
- }
-
- /**
- * Returns size of a given directory in bytes.
- *
- * @param string $dir
- * @return integer
- */
- public static function directory_size($dir)
- {
- $size = 0;
- foreach(new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($dir, \FilesystemIterator::CURRENT_AS_FILEINFO | \FilesystemIterator::SKIP_DOTS)) as $file => $key) {
- if ($key->isFile()) {
- $size += $key->getSize();
- }
- }
- return $size;
- }
-
- /**
- * Returns a home directory of current user.
- *
- * @return string
- */
- public static function get_user_directory()
- {
- if (isset($_SERVER['HOMEDRIVE'])) return $_SERVER['HOMEDRIVE'] . $_SERVER['HOMEPATH'];
- else return $_SERVER['HOME'];
- }
-
- /**
- * Returns all paths inside a directory.
- *
- * @param string $dir
- * @return array
- */
- public static function directory_contents($dir)
- {
- $contents = array();
- foreach(new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($dir, \FilesystemIterator::KEY_AS_PATHNAME | \FilesystemIterator::CURRENT_AS_FILEINFO | \FilesystemIterator::SKIP_DOTS)) as $pathname => $fi) {
- $contents[] = $pathname;
- }
- natsort($contents);
- return $contents;
- }
-}
diff --git a/vendor/brandonwamboldt/utilphp/tests/README.md b/vendor/brandonwamboldt/utilphp/tests/README.md
deleted file mode 100644
index e81d26c3..00000000
--- a/vendor/brandonwamboldt/utilphp/tests/README.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# UtilityPHP Unit Tests #
-
-### Introduction
-
-This is the testing documentation for util.php. The unit tests require PHPUnit,
-and can be run in your web browser.
-
-### Requirements
-
-PHP Unit >= 3.5.6
-
-#### Installation of PHPUnit
-
- # Download the PHPUnit phar.
- wget https://phar.phpunit.de/phpunit.phar
-
- # You can just run it locally. (Preferred for Windows)
- php phpunit.phar --version
-
- # Or install it system-wide.
- mv phpunit.phar phpunit
- chmod +x phpunit
- sudo mv phpunit /usr/local/bin
- phpunit --version
-
-## Test Suites:
-
-util.php includes a phpunit config file, so just run `phpunit` from the working
-directory to run the test suite.
-
-```
-phpunit
-```
-
-If you want code coverage reports, use the following:
-
-```
-phpunit --coverage-html ./report
-```
diff --git a/vendor/brandonwamboldt/utilphp/tests/UtilTest.php b/vendor/brandonwamboldt/utilphp/tests/UtilTest.php
deleted file mode 100644
index 404cf7bd..00000000
--- a/vendor/brandonwamboldt/utilphp/tests/UtilTest.php
+++ /dev/null
@@ -1,1183 +0,0 @@
-data = (object)array('a', 'b', 'c');
- }
-}
-
-/**
- * PHPUnit test case for the util.php library
- *
- * @author Brandon Wamboldt
- * @since 1.0.000
- */
-class UtilityPHPTest extends PHPUnit_Framework_TestCase
-{
- /**
- * Allows for the testing of private and protected methods.
- *
- * @param $name
- * @return \ReflectionMethod
- */
- protected static function getMethod($name)
- {
- $class = new \ReflectionClass('util');
- $method = $class->getMethod($name);
- $method->setAccessible(true);
- return $method;
- }
-
- public function test_array_get()
- {
- $_GET = array();
- $_GET['abc'] = 'def';
- $_GET['nested'] = array( 'key1' => 'val1', 'key2' => 'val2', 'key3' => 'val3' );
-
- // Looks for $array['abc']
- $this->assertEquals( 'def', util::array_get( $_GET['abc'] ) );
-
- // Looks for $array['nested']['key2']
- $this->assertEquals( 'val2', util::array_get( $_GET['nested']['key2'] ) );
-
- // Looks for $array['doesnotexist']
- $this->assertEquals( 'defaultval', util::array_get( $_GET['doesnotexist'], 'defaultval' ) );
- }
-
- public function test_slugify()
- {
- $this->assertEquals( 'a-simple-title', util::slugify( 'A simple title' ) );
- $this->assertEquals( 'this-post-it-has-a-dash', util::slugify( 'This post -- it has a dash' ) );
- $this->assertEquals( '123-1251251', util::slugify( '123----1251251' ) );
- $this->assertEquals( 'one23-1251251', util::slugify( '123----1251251', '-', true ) );
-
- $this->assertEquals( 'a-simple-title', util::slugify( 'A simple title', '-' ) );
- $this->assertEquals( 'this-post-it-has-a-dash', util::slugify( 'This post -- it has a dash', '-' ) );
- $this->assertEquals( '123-1251251', util::slugify( '123----1251251', '-' ) );
- $this->assertEquals( 'one23-1251251', util::slugify( '123----1251251', '-', true ) );
-
- $this->assertEquals( 'a_simple_title', util::slugify( 'A simple title', '_' ) );
- $this->assertEquals( 'this_post_it_has_a_dash', util::slugify( 'This post -- it has a dash', '_' ) );
- $this->assertEquals( '123_1251251', util::slugify( '123----1251251', '_' ) );
- $this->assertEquals( 'one23_1251251', util::slugify( '123----1251251', '_', true ) );
-
- // Blank seperator test
- $this->assertEquals( 'asimpletitle', util::slugify( 'A simple title', '' ) );
- $this->assertEquals( 'thispostithasadash', util::slugify( 'This post -- it has a dash', '' ) );
- $this->assertEquals( '1231251251', util::slugify( '123----1251251', '' ) );
- $this->assertEquals( 'one231251251', util::slugify( '123----1251251', '', true ) );
-
- // Test old parameter ordering for backwards compatability
- error_reporting(E_ALL ^ E_USER_DEPRECATED);
- $this->assertEquals( 'one23-1251251', util::slugify( '123----1251251', true ) );
- $this->assertEquals( '123-1251251', util::slugify( '123----1251251', false ) );
- }
-
- public function test_seems_utf8()
- {
- // Test a valid UTF-8 sequence: "ÜTF-8 Fµñ".
- $validUTF8 = "\xC3\x9CTF-8 F\xC2\xB5\xC3\xB1";
- $this->assertTrue( util::seems_utf8( $validUTF8 ) );
-
- $this->assertTrue( util::seems_utf8( "\xEF\xBF\xBD this has \xEF\xBF\xBD\xEF\xBF\xBD some invalid utf8 \xEF\xBF\xBD" ) );
-
- // Test invalid UTF-8 sequences
- $invalidUTF8 = "\xc3 this has \xe6\x9d some invalid utf8 \xe6";
- $this->assertFalse( util::seems_utf8( $invalidUTF8 ) );
-
- // And test some plain ASCII
- $this->assertTrue( util::seems_utf8( 'The quick brown fox jumps over the lazy dog' ) );
-
- // Test an invalid non-UTF-8 string.
- if (function_exists('mb_convert_encoding')) {
- mb_internal_encoding('UTF-8');
- // Converts the 'ç' UTF-8 character to UCS-2LE
- $utf8Char = pack('n', 50087);
- $ucsChar = mb_convert_encoding($utf8Char, 'UCS-2LE', 'UTF-8');
-
- // Ensure that PHP's internal encoding system isn't malconfigured.
- $this->assertEquals( $utf8Char, 'ç', 'This PHP system\'s internal character set is not properly set as UTF-8.' );
- $this->assertEquals( $utf8Char, pack('n', 50087), 'Something is wrong with your ICU unicode library.' );
-
- // Test for not UTF-8.
- $this->assertFalse( util::seems_utf8( $ucsChar) );
-
- // Test the worker method.
- $method = self::getMethod('seemsUtf8Regex');
- $this->assertFalse($method->invoke(null, $invalidUTF8), 'util::seemsUtf8Regex did not properly detect invalid UTF-8.');
- $this->assertTrue($method->invoke(null, $validUTF8), 'util::seemsUtf8Regex did not properly detect valid UTF-8.');
- }
- }
-
- public function test_size_format()
- {
- $size = util::size_format( 512, 0 );
- $this->assertEquals( '512 B', $size );
-
- $size = util::size_format( 2048, 1 );
- $this->assertEquals( '2.0 KiB', $size );
-
- $size = util::size_format( 25151251, 2 );
- $this->assertEquals( '23.99 MiB', $size );
-
- $size = util::size_format( 19971597926, 2 );
- $this->assertEquals( '18.60 GiB', $size );
-
- $size = util::size_format( 2748779069440, 1 );
- $this->assertEquals( '2.5 TiB', $size );
-
- $size = util::size_format( 2.81475e15, 1 );
- $this->assertEquals( '2.5 PiB', $size );
-
- $size = util::size_format( 2.81475e19, 1 );
- $this->assertEquals( '25000.0 PiB', $size );
- }
-
- public function test_maybe_serialize()
- {
- $obj = new stdClass();
- $obj->prop1 = 'Hello';
- $obj->prop2 = 'World';
-
- $this->assertEquals( 'This is a string', util::maybe_serialize( 'This is a string' ) );
- $this->assertEquals( 5.81, util::maybe_serialize( 5.81 ) );
- $this->assertEquals( 'a:0:{}', util::maybe_serialize( array() ) );
- $this->assertEquals( 'O:8:"stdClass":2:{s:5:"prop1";s:5:"Hello";s:5:"prop2";s:5:"World";}', util::maybe_serialize( $obj ) );
- $this->assertEquals( 'a:4:{i:0;s:4:"test";i:1;s:4:"blah";s:5:"hello";s:5:"world";s:5:"array";O:8:"stdClass":2:{s:5:"prop1";s:5:"Hello";s:5:"prop2";s:5:"World";}}', util::maybe_serialize( array( 'test', 'blah', 'hello' => 'world', 'array' => $obj ) ) );
- }
-
- public function test_maybe_unserialize()
- {
- $obj = new stdClass();
- $obj->prop1 = 'Hello';
- $obj->prop2 = 'World';
-
- $this->assertNull(util::maybe_unserialize(serialize(null)));
- $this->assertFalse(util::maybe_unserialize(serialize(false)));
-
- $this->assertEquals( 'This is a string', util::maybe_unserialize( 'This is a string' ) );
- $this->assertEquals( 5.81, util::maybe_unserialize( 5.81 ) );
- $this->assertEquals( array(), util::maybe_unserialize( 'a:0:{}' ) );
- $this->assertEquals( $obj, util::maybe_unserialize( 'O:8:"stdClass":2:{s:5:"prop1";s:5:"Hello";s:5:"prop2";s:5:"World";}' ) );
- $this->assertEquals( array( 'test', 'blah', 'hello' => 'world', 'array' => $obj ), util::maybe_unserialize( 'a:4:{i:0;s:4:"test";i:1;s:4:"blah";s:5:"hello";s:5:"world";s:5:"array";O:8:"stdClass":2:{s:5:"prop1";s:5:"Hello";s:5:"prop2";s:5:"World";}}' ) );
-
- // Test a broken serialization.
- $expectedData = array(
- 'Normal',
- 'High-value Char: '.chr(231).'a-va?', // High-value Char: ça-va? [in ISO-8859-1]
- );
-
- $brokenSerialization = 'a:2:{i:0;s:6:"Normal";i:1;s:23:"High-value Char: ▒a-va?";}';
-
- $unserializedData = util::maybe_unserialize($brokenSerialization);
- $this->assertEquals($expectedData[0], $unserializedData[0], 'Did not properly fix the broken serialized data.');
- $this->assertEquals(substr($expectedData[1], 0, 10), substr($unserializedData[1], 0, 10), 'Did not properly fix the broken serialized data.');
-
- // Test unfixable serialization.
- $unfixableSerialization = 'a:2:{i:0;s:6:"Normal";}';
- $this->assertEquals($unfixableSerialization, util::maybe_unserialize($unfixableSerialization), 'Somehow the [previously?] impossible happened and utilphp thinks it has unserialized an unfixable serialization.');
- }
-
- public function test_is_serialized()
- {
- $this->assertFalse( util::is_serialized(1) );
- $this->assertFalse( util::is_serialized(null) );
- $this->assertFalse( util::is_serialized( 's:4:"test;' ) );
- $this->assertFalse( util::is_serialized( 'a:0:{}!' ) );
- $this->assertFalse( util::is_serialized( 'a:0' ) );
- $this->assertFalse( util::is_serialized( 'This is a string' ) );
- $this->assertFalse( util::is_serialized( 'a string' ) );
- $this->assertFalse( util::is_serialized( 'z:0;' ) );
- $this->assertTrue( util::is_serialized( 'N;' ) );
- $this->assertTrue( util::is_serialized( 'b:1;' ) );
- $this->assertTrue( util::is_serialized( 'a:0:{}' ) );
- $this->assertTrue( util::is_serialized( 'O:8:"stdClass":2:{s:5:"prop1";s:5:"Hello";s:5:"prop2";s:5:"World";}' ) );
- }
-
- public function test_fix_broken_serialization()
- {
- $expectedData = array(
- 'Normal',
- 'High-value Char: '.chr(231).'a-va?', // High-value Char: ça-va? [in ISO-8859-1]
- );
-
- $brokenSerialization = 'a:2:{i:0;s:6:"Normal";i:1;s:23:"High-value Char: ▒a-va?";}';
-
- // Temporarily override error handling to ensure that this is, in fact, [still] a broken serialization.
- {
- $expectedError = array(
- 'errno' => 8,
- 'errstr' => 'unserialize(): Error at offset 55 of 60 bytes'
- );
-
- $reportedError = array();
- set_error_handler(function ($errno, $errstr, $errfile, $errline, $errcontext) use (&$reportedError) {
- $reportedError = compact('errno', 'errstr');
- });
-
- unserialize($brokenSerialization);
-
- $this->assertEquals($expectedError['errno'], $reportedError['errno']);
- // Because HHVM's unserialize() error message does not contain enough info to properly test.
- if (!defined('HHVM_VERSION')) {
- $this->assertEquals($expectedError['errstr'], $reportedError['errstr']);
- }
- restore_error_handler();
- }
-
- $fixedSerialization = util::fix_broken_serialization($brokenSerialization);
- $unserializedData = unserialize($fixedSerialization);
- $this->assertEquals($expectedData[0], $unserializedData[0], 'Did not properly fix the broken serialized data.');
-
- $this->assertEquals(substr($expectedData[1], 0, 10), substr($unserializedData[1], 0, 10), 'Did not properly fix the broken serialized data.');
- }
-
- public function test_is_https()
- {
- $_SERVER['HTTPS'] = null;
-
- $this->assertFalse( util::is_https() );
-
- $_SERVER['HTTPS'] = 'on';
-
- $this->assertTrue( util::is_https() );
- }
-
- public function test_add_query_arg()
- {
- // Regular tests
- $this->assertEquals( '/app/admin/users?user=5', util::add_query_arg( 'user', 5, '/app/admin/users' ) );
- $this->assertEquals( '/app/admin/users?user=5', util::add_query_arg( array( 'user' => 5 ), '/app/admin/users' ) );
- $this->assertEquals( '/app/admin/users?user=5', util::add_query_arg( array( 'user' => 5 ), null, '/app/admin/users' ) );
- $this->assertEquals( '/app/admin/users?action=edit&user=5', util::add_query_arg( 'user', 5, '/app/admin/users?action=edit' ) );
- $this->assertEquals( '/app/admin/users?action=edit&user=5', util::add_query_arg( array( 'user' => 5 ), '/app/admin/users?action=edit' ) );
- $this->assertEquals( '/app/admin/users?action=edit&tab=personal&user=5', util::add_query_arg( 'user', 5, '/app/admin/users?action=edit&tab=personal' ) );
- $this->assertEquals( '/app/admin/users?action=edit&tab=personal&user=5', util::add_query_arg( array( 'user' => 5 ), '/app/admin/users?action=edit&tab=personal' ) );
-
- // Ensure strips false.
- $this->assertEquals('/index.php', util::add_query_arg('debug', false, '/index.php'));
-
- // With a URL fragment
- $this->assertEquals( '/app/admin/users?user=5#test', util::add_query_arg( 'user', 5, '/app/admin/users#test' ) );
-
- // Full URL
- $this->assertEquals( 'http://example.com/?a=b', util::add_query_arg( 'a', 'b', 'http://example.com' ) );
-
- // Only the query string
- $this->assertEquals( '?a=b&c=d', util::add_query_arg( 'c', 'd', '?a=b' ) );
- $this->assertEquals( 'a=b&c=d', util::add_query_arg( 'c', 'd', 'a=b' ) );
-
- // Url encoding test
- $this->assertEquals( '/app/admin/users?param=containsa%26sym', util::add_query_arg( 'param', 'containsa&sym', '/app/admin/users' ) );
-
- // If not provided, grab the URI from the server.
- $_SERVER['REQUEST_URI'] = '/app/admin/users';
- $this->assertEquals( '/app/admin/users?user=6', util::add_query_arg( array( 'user' => 6 ) ) );
- $this->assertEquals( '/app/admin/users?user=7', util::add_query_arg( 'user', 7 ) );
- }
-
- public function test_remove_query_arg()
- {
- $this->assertEquals( '/app/admin/users', util::remove_query_arg( 'user', '/app/admin/users?user=5' ) );
- $this->assertEquals( '/app/admin/users?action=edit', util::remove_query_arg( 'user', '/app/admin/users?action=edit&user=5' ) );
- $this->assertEquals( '/app/admin/users?user=5', util::remove_query_arg( array( 'tab', 'action' ), '/app/admin/users?action=edit&tab=personal&user=5' ) );
- }
-
- public function test_http_build_url()
- {
- $url = 'http://user:pass@example.com:8080/path/?query#fragment';
-
- $expected = 'http://example.com/';
- $actual = util::http_build_url($url, array(), util::HTTP_URL_STRIP_ALL);
- $this->assertEquals($expected, $actual);
-
- $expected = 'http://example.com:8080/path/?query#fragment';
- $actual = util::http_build_url($url, array(), util::HTTP_URL_STRIP_AUTH);
- $this->assertEquals($expected, $actual);
-
- $this->assertEquals('https://dev.example.com/', util::http_build_url('http://example.com/', array('scheme' => 'https', 'host' => 'dev.example.com')));
- $this->assertEquals('http://example.com/#hi', util::http_build_url('http://example.com/', array('fragment' => 'hi'), util::HTTP_URL_REPLACE));
- $this->assertEquals('http://example.com/page', util::http_build_url('http://example.com/', array('path' => 'page'), util::HTTP_URL_JOIN_PATH));
- $this->assertEquals('http://example.com/page', util::http_build_url('http://example.com', array('path' => 'page'), util::HTTP_URL_JOIN_PATH));
- $this->assertEquals('http://example.com/?hi=Bro', util::http_build_url('http://example.com/', array('query' => 'hi=Bro'), util::HTTP_URL_JOIN_QUERY));
- $this->assertEquals('http://example.com/?show=1&hi=Bro', util::http_build_url('http://example.com/?show=1', array('query' => 'hi=Bro'), util::HTTP_URL_JOIN_QUERY));
-
- $this->assertEquals('http://admin@example.com/', util::http_build_url('http://example.com/', array('user' => 'admin')));
- $this->assertEquals('http://admin:1@example.com/', util::http_build_url('http://example.com/', array('user' => 'admin', 'pass' => '1')));
- }
-
- public function test_str_to_bool()
- {
- $this->assertTrue( util::str_to_bool( 'true' ) );
- $this->assertTrue( util::str_to_bool( 'yes' ) );
- $this->assertTrue( util::str_to_bool( 'y' ) );
- $this->assertTrue( util::str_to_bool( 'oui' ) );
- $this->assertTrue( util::str_to_bool( 'vrai' ) );
-
- $this->assertFalse( util::str_to_bool( 'false' ) );
- $this->assertFalse( util::str_to_bool( 'no' ) );
- $this->assertFalse( util::str_to_bool( 'n' ) );
- $this->assertFalse( util::str_to_bool( 'non' ) );
- $this->assertFalse( util::str_to_bool( 'faux' ) );
-
- $this->assertFalse( util::str_to_bool( 'test' , false) );
-
- }
-
- public function test_array_pluck()
- {
- $array = array(
- array(
- 'name' => 'Bob',
- 'age' => 37
- ),
- array(
- 'name' => 'Fred',
- 'age' => 37
- ),
- array(
- 'name' => 'Jane',
- 'age' => 29
- ),
- array(
- 'name' => 'Brandon',
- 'age' => 20
- ),
- array(
- 'age' => 41
- )
- );
-
- $obj_array = array(
- 'bob' => (object) array(
- 'name' => 'Bob',
- 'age' => 37
- ),
- 'fred' => (object) array(
- 'name' => 'Fred',
- 'age' => 37
- ),
- 'jane' => (object) array(
- 'name' => 'Jane',
- 'age' => 29
- ),
- 'brandon' => (object) array(
- 'name' => 'Brandon',
- 'age' => 20
- ),
- 'invalid' => (object) array(
- 'age' => 41
- )
- );
-
- $obj_array_expect = array(
- 'bob' => 'Bob',
- 'fred' => 'Fred',
- 'jane' => 'Jane',
- 'brandon' => 'Brandon'
- );
-
- $this->assertEquals( array( 'Bob', 'Fred', 'Jane', 'Brandon' ), util::array_pluck( $array, 'name' ) );
- $this->assertEquals( array( 'Bob', 'Fred', 'Jane', 'Brandon', array( 'age' => 41 ) ), util::array_pluck( $array, 'name', TRUE, FALSE ) );
- $this->assertEquals( $obj_array_expect, util::array_pluck( $obj_array, 'name' ) );
- $this->assertEquals( array( 'Bob', 'Fred', 'Jane', 'Brandon' ), util::array_pluck( $obj_array, 'name', FALSE ) );
-
- $expected = array('Bob', 'Fred', 'Jane', 'Brandon', 'invalid' => (object)array('age' => 41));
- $this->assertEquals($expected, util::array_pluck($obj_array, 'name', FALSE, FALSE));
- $expected = array('Bob', 'Fred', 'Jane', 'Brandon', array('age' => 41));
- $this->assertEquals($expected, util::array_pluck($array, 'name', false, false));
- }
-
- public function test_htmlentities()
- {
- $this->assertEquals( 'One & Two', util::htmlentities( 'One & Two' ) );
- $this->assertEquals( 'One & Two', util::htmlentities( 'One & Two', TRUE ) );
- }
-
- public function test_htmlspecialchars()
- {
- $this->assertEquals( 'One & Two', util::htmlspecialchars( 'One & Two' ) );
- $this->assertEquals( 'One & Two', util::htmlspecialchars( 'One & Two', TRUE ) );
- }
-
- public function test_remove_accents()
- {
- $this->assertEquals( 'A', util::remove_accents( "\xC3\x81" ) );
- $this->assertEquals( 'e', util::remove_accents( "\xC4\x97" ) );
- $this->assertEquals( 'U', util::remove_accents( "\xC3\x9C" ) );
- $this->assertEquals( 'Ae', util::remove_accents( "Ä", 'de' ) );
- $this->assertEquals( 'OEoeAEDHTHssaedhth', util::remove_accents(chr(140) . chr(156) . chr(198) . chr(208) . chr(222) . chr(223) . chr(230) . chr(240) . chr(254)));
- }
-
- public function test_zero_pad()
- {
- $this->assertEquals( '00000341', util::zero_pad( 341, 8 ) );
- $this->assertEquals( '341', util::zero_pad( 341, 1 ) );
- }
-
- public function test_human_time_diff()
- {
- $this->assertEquals( '1 second ago', util::human_time_diff( time() - 1 ) );
- $this->assertEquals( '30 seconds ago', util::human_time_diff( time() - 30 ) );
- $this->assertEquals( '1 minute ago', util::human_time_diff( time() - ( util::SECONDS_IN_A_MINUTE * 1.4 ) ) );
- $this->assertEquals( '5 minutes ago', util::human_time_diff( time() - ( util::SECONDS_IN_A_MINUTE * 5 ) ) );
- $this->assertEquals( '1 hour ago', util::human_time_diff( time() - ( util::SECONDS_IN_AN_HOUR ) ) );
- $this->assertEquals( '2 hours ago', util::human_time_diff( time() - ( util::SECONDS_IN_AN_HOUR * 2 ) ) );
- $this->assertEquals( '1 day ago', util::human_time_diff( time() - ( util::SECONDS_IN_AN_HOUR * 24 ) ) );
- $this->assertEquals( '5 days ago', util::human_time_diff( time() - ( util::SECONDS_IN_AN_HOUR * 24 * 5 ) ) );
- $this->assertEquals( '1 week ago', util::human_time_diff( time() - ( util::SECONDS_IN_AN_HOUR * 24 * 7 ) ) );
- $this->assertEquals( '2 weeks ago', util::human_time_diff( time() - ( util::SECONDS_IN_AN_HOUR * 24 * 14 ) ) );
- $this->assertEquals( '1 month ago', util::human_time_diff( time() - ( util::SECONDS_IN_A_WEEK * 5 ) ) );
- $this->assertEquals( '2 months ago', util::human_time_diff( time() - ( util::SECONDS_IN_A_WEEK * 10 ) ) );
- $this->assertEquals( '1 year ago', util::human_time_diff( time() - ( util::SECONDS_IN_A_MONTH * 15 ) ) );
- $this->assertEquals( '2 years ago', util::human_time_diff( time() - ( util::SECONDS_IN_A_MONTH * 36 ) ) );
- $this->assertEquals( '11 years ago', util::human_time_diff( time() - ( util::SECONDS_IN_A_MONTH * 140 ) ) );
-
- $this->assertEquals( 'fifteen minutes ago', util::human_time_diff( time() - ( util::SECONDS_IN_A_MINUTE * 15 ), '', TRUE ) );
- }
-
- public function test_number_to_word()
- {
- try {
- util::number_to_word('junk data');
- $this->fail('Accepted junk data');
- } catch(\LogicException $e) {
- $this->assertEquals('Not a number', $e->getMessage());
- }
-
- // Partially numeric.
- $this->assertEquals('', util::number_to_word('1a'));
-
- // Decimals
- $this->assertEquals( 'five point zero five', util::number_to_word('5.05') );
- $this->assertEquals( 'zero point eight', util::number_to_word( 0.8 ) );
-
- // Integers
- $this->assertEquals( 'positive one', util::number_to_word( '+1' ) );
- $this->assertEquals( 'negative twelve', util::number_to_word( -12 ) );
- $this->assertEquals( 'one', util::number_to_word( 1 ) );
- $this->assertEquals( 'five', util::number_to_word( 5 ) );
- $this->assertEquals( 'fifteen', util::number_to_word( 15 ) );
- $this->assertEquals( 'twenty-one', util::number_to_word( 21 ) );
- $this->assertEquals( 'thirty-two', util::number_to_word( 32 ) );
- $this->assertEquals( 'forty-three', util::number_to_word( 43 ) );
- $this->assertEquals( 'fifty-four', util::number_to_word( 54 ) );
- $this->assertEquals( 'sixty-six', util::number_to_word( 66 ) );
- $this->assertEquals( 'seventy-seven', util::number_to_word( 77 ) );
- $this->assertEquals( 'eighty-eight', util::number_to_word( 88 ) );
- $this->assertEquals( 'ninety-nine', util::number_to_word( 99 ) );
- $this->assertEquals( 'one hundred and thirty-six', util::number_to_word( 136 ) );
- $this->assertEquals( 'ten', util::number_to_word( 10 ) );
- $this->assertEquals( 'twenty', util::number_to_word( 20 ) );
- $this->assertEquals( 'thirty', util::number_to_word( 30 ) );
- $this->assertEquals( 'forty', util::number_to_word( 40 ) );
- $this->assertEquals( 'fifty', util::number_to_word( 50 ) );
- $this->assertEquals( 'sixty', util::number_to_word( 60 ) );
- $this->assertEquals( 'seventy', util::number_to_word( 70 ) );
- $this->assertEquals( 'eighty', util::number_to_word( 80 ) );
- $this->assertEquals( 'ninety', util::number_to_word( 90 ) );
- $this->assertEquals( 'eleven', util::number_to_word( 11 ) );
- $this->assertEquals( 'thirteen', util::number_to_word( 13 ) );
- $this->assertEquals( 'fourteen', util::number_to_word( 14 ) );
- $this->assertEquals( 'fifteen', util::number_to_word( 15 ) );
- $this->assertEquals( 'sixteen', util::number_to_word( 16 ) );
- $this->assertEquals( 'seventeen', util::number_to_word( 17 ) );
- $this->assertEquals( 'eighteen', util::number_to_word( 18 ) );
- $this->assertEquals( 'nineteen', util::number_to_word( 19 ) );
- $this->assertEquals( 'one thousand', util::number_to_word( 1000 ) );
- $this->assertEquals( 'one million', util::number_to_word( 1000000 ) );
- $this->assertEquals( 'one billion', util::number_to_word( 1000000000 ) );
- $this->assertEquals( 'one trillion', util::number_to_word( 1000000000000 ) );
- $this->assertEquals( 'one quadrillion', util::number_to_word( '1000000000000000' ) );
- $this->assertEquals( 'one quintrillion', util::number_to_word( '1000000000000000000' ) );
- $this->assertEquals( 'one sextillion', util::number_to_word( '1000000000000000000000' ) );
- $this->assertEquals( 'one septillion', util::number_to_word( '1000000000000000000000000' ) );
- $this->assertEquals( 'one octillion', util::number_to_word( '1000000000000000000000000000' ) );
- $this->assertEquals( 'one nonillion', util::number_to_word( '1000000000000000000000000000000' ) );
- $this->assertEquals( 'one decillion', util::number_to_word( '1000000000000000000000000000000000' ) );
- $this->assertEquals( 'one', util::number_to_word( '1000000000000000000000000000000000000000000' ) );
-
- }
-
- public function test_array_search_deep()
- {
- $users = array(
- 1 => (object) array( 'username' => 'brandon', 'age' => 20 ),
- 2 => (object) array( 'username' => 'matt', 'age' => 27 ),
- 3 => (object) array( 'username' => 'jane', 'age' => 53 ),
- 4 => (object) array( 'username' => 'john', 'age' => 41 ),
- 5 => (object) array( 'username' => 'steve', 'age' => 11 ),
- 6 => (object) array( 'username' => 'fred', 'age' => 42 ),
- 7 => (object) array( 'username' => 'rasmus', 'age' => 21 ),
- 8 => (object) array( 'username' => 'don', 'age' => 15 ),
- 9 => array( 'username' => 'darcy', 'age' => 33 ),
- );
-
- $test = array(
- 1 => 'brandon',
- 2 => 'devon',
- 3 => array( 'troy' ),
- 4 => 'annie'
- );
-
- $this->assertFalse( util::array_search_deep( $test, 'bob' ) );
- $this->assertEquals( 3, util::array_search_deep( $test, 'troy' ) );
- $this->assertEquals( 4, util::array_search_deep( $test, 'annie' ) );
- $this->assertEquals( 2, util::array_search_deep( $test, 'devon', 'devon' ) );
- $this->assertEquals( 7, util::array_search_deep( $users, 'rasmus', 'username' ) );
- $this->assertEquals( 9, util::array_search_deep( $users, 'darcy', 'username' ) );
- $this->assertEquals( 1, util::array_search_deep( $users, 'brandon' ) );
- }
-
- public function test_array_map_deep()
- {
- $input = array(
- '<',
- 'abc',
- '>',
- 'def',
- array( '&', 'test', '123' ),
- (object) array( 'hey', '<>' )
- );
-
- $expect = array(
- '<',
- 'abc',
- '>',
- 'def',
- array( '&', 'test', '123' ),
- (object) array( 'hey', '<>' )
- );
-
- $this->assertEquals( $expect, util::array_map_deep( $input, 'htmlentities' ) );
- }
-
- public function test_random_string()
- {
- // Make sure the generated string contains only human friendly characters and is 30 characters long
- $str = util::random_string( 30 );
- $this->assertTrue( (bool) preg_match( '/^([ABCDEFGHJKLMNPQRSTUVWXYZabcdefhjkmnprstuvwxyz23456789]{30})$/', $str ) );
-
- // Make sure the generated string is 30 characters long
- $str = util::random_string( 30, false, true );
- $this->assertTrue( strlen( $str ) === 30, 'random_string produced an invalid length string' );
-
- // Make sure the generated string is 120 characters long
- $str = util::random_string( 120 );
- $this->assertTrue(strlen( $str ) === 120, 'random_string produced an invalid length string');
-
- // Make sure the string doesn't contain duplicate letters
- $str = util::random_string( 53, true, false, true );
- $this->assertTrue(strlen($str) === 53, 'random_string produced an invalid length string');
- $this->assertTrue(count(array_unique(str_split($str))) === strlen($str), 'random_string produced a string with duplicate characters');
-
- // Longer length than characters available
- try {
- $str = util::random_string( 55, true, false, true );
- $this->assertTrue( false );
- } catch (Exception $e) {
- $this->assertTrue( true );
- }
-
- // Test secure variant
- $str = util::secure_random_string(16);
- $this->assertTrue(strlen($str) === 16);
-
- // Longer length than characters available
- try {
- $str = util::secure_random_string(0);
- $this->assertTrue(false);
- } catch (Exception $e) {
- $this->assertTrue(true);
- }
- }
-
- public function test_match_string()
- {
- $this->assertTrue( util::match_string('a', 'a') );
- $this->assertFalse( util::match_string('a', ' a') );
- $this->assertFalse( util::match_string('/', '/something') );
- $this->assertTrue( util::match_string('test/*', 'test/first/second') );
- $this->assertTrue( util::match_string('*/test', 'first/second/test') );
- $this->assertFalse( util::match_string('first/', 'first/second/test') );
- $this->assertFalse( util::match_string('test', 'TEST') );
- $this->assertTrue( util::match_string('test', 'TEST', false) );
- }
-
- public function test_validate_email()
- {
- $this->assertTrue( util::validate_email( 'john.smith@gmail.com' ) );
- $this->assertTrue( util::validate_email( 'john.smith+label@gmail.com' ) );
- $this->assertTrue( util::validate_email( 'john.smith@gmail.co.uk' ) );
- }
-
- public function test_safe_truncate()
- {
- $this->assertEquals( 'The quick brown fox...', util::safe_truncate( 'The quick brown fox jumps over the lazy dog', 24 ) );
- $this->assertEquals( 'The quick brown fox jumps over the lazy dog', util::safe_truncate( 'The quick brown fox jumps over the lazy dog', 55 ) );
- $this->assertEquals( 'Th...', util::safe_truncate( 'The quick brown fox jumps over the lazy dog', 2 ) );
- $this->assertEquals( 'The...', util::safe_truncate( 'The quick brown fox jumps over the lazy dog', 3 ) );
- $this->assertEquals( 'The...', util::safe_truncate( 'The quick brown fox jumps over the lazy dog', 7 ) );
- }
-
- public function test_limit_characters()
- {
- $this->assertEquals( 'The quick brown fox jump...', util::limit_characters( 'The quick brown fox jumps over the lazy dog', 24 ) );
- $this->assertEquals( 'The quick brown fox jumps over the lazy dog', util::limit_characters( 'The quick brown fox jumps over the lazy dog', 55 ) );
- $this->assertEquals( 'Th...', util::limit_characters( 'The quick brown fox jumps over the lazy dog', 2 ) );
- $this->assertEquals( 'The...', util::limit_characters( 'The quick brown fox jumps over the lazy dog', 3 ) );
- $this->assertEquals( 'The qui...', util::limit_characters( 'The quick brown fox jumps over the lazy dog', 7 ) );
- $this->assertEquals( 'The quick brown fox jumps over the lazy dog', util::limit_characters( 'The quick brown fox jumps over the lazy dog', 150 ) );
- }
-
- public function test_limit_words()
- {
- $this->assertEquals( 'The quick brown...', util::limit_words( 'The quick brown fox jumps over the lazy dog', 3 ) );
- $this->assertEquals( 'The quick brown fox jumps...', util::limit_words( 'The quick brown fox jumps over the lazy dog', 5 ) );
- $this->assertEquals( 'The...', util::limit_words( 'The quick brown fox jumps over the lazy dog', 1 ) );
- $this->assertEquals( 'The quick brown fox jumps over the lazy dog', util::limit_words( 'The quick brown fox jumps over the lazy dog', 90 ) );
- $this->assertEquals( 'The quick brown fox jumps over the...', util::limit_words( 'The quick brown fox jumps over the lazy dog', 7 ) );
- }
-
- public function test_ordinal()
- {
- $this->assertEquals( '1st', util::ordinal( 1 ) );
- $this->assertEquals( '2nd', util::ordinal( 2 ) );
- $this->assertEquals( '3rd', util::ordinal( 3 ) );
- $this->assertEquals( '4th', util::ordinal( 4 ) );
- $this->assertEquals( '5th', util::ordinal( 5 ) );
- $this->assertEquals( '6th', util::ordinal( 6 ) );
- $this->assertEquals( '7th', util::ordinal( 7 ) );
- $this->assertEquals( '8th', util::ordinal( 8 ) );
- $this->assertEquals( '9th', util::ordinal( 9 ) );
- $this->assertEquals( '22nd', util::ordinal( 22 ) );
- $this->assertEquals( '23rd', util::ordinal( 23 ) );
- $this->assertEquals( '143rd', util::ordinal( 143 ) );
- }
-
- public function test_array_first()
- {
- $test = array( 'a' => array( 'a', 'b', 'c' ) );
-
- $this->assertEquals( 'a', util::array_first( util::array_get( $test['a'] ) ) );
- }
-
- public function test_array_first_key()
- {
- $test = array( 'a' => array( 'a' => 'b', 'c' => 'd' ) );
-
- $this->assertEquals( 'a', util::array_first_key( util::array_get( $test['a'] ) ) );
- }
-
- public function test_array_last()
- {
- $test = array( 'a' => array( 'a', 'b', 'c' ) );
-
- $this->assertEquals( 'c', util::array_last( util::array_get( $test['a'] ) ) );
- }
-
- public function test_array_last_key()
- {
- $test = array( 'a' => array( 'a' => 'b', 'c' => 'd' ) );
-
- $this->assertEquals( 'c', util::array_last_key( util::array_get( $test['a'] ) ) );
- }
-
- public function test_array_flatten()
- {
- $input = array( 'a', 'b', 'c', 'd', array( 'first' => 'e', 'f', 'second' => 'g', array( 'h', 'third' => 'i', array( array( array( array( 'j', 'k', 'l' ) ) ) ) ) ) );
- $expectNoKeys = range( 'a', 'l' );
- $expectWithKeys = array(
- 'a', 'b', 'c', 'd',
- 'first' => 'e',
- 'f',
- 'second' => 'g',
- 'h',
- 'third' => 'i',
- 'j', 'k', 'l'
- );
-
- $this->assertEquals( $expectWithKeys, util::array_flatten( $input ) );
- $this->assertEquals( $expectNoKeys, util::array_flatten( $input, false ) );
- $this->assertEquals( $expectWithKeys, util::array_flatten( $input, true ) );
- }
-
- public function test_strip_space()
- {
- $input = ' The quick brown fox jumps over the lazy dog ';
- $expect = 'Thequickbrownfoxjumpsoverthelazydog';
-
- $this->assertEquals($expect, Util::strip_space($input));
- }
-
- public function test_sanitize_string()
- {
- $input = ' Benoit! à New-York? j’ai perçu 1 % : Qu’as-tu "gagné" chez M. V. Noël? Dix francs.';
- $expect = 'benoitanewyorkjaipercu1quastugagnechezmvnoeldixfrancs';
-
- $this->assertEquals($expect, Util::sanitize_string($input));
- }
-
- public function test_get_gravatar()
- {
- $_SERVER['HTTPS'] = 'on';
- $this->assertEquals('https://secure.gravatar.com/avatar/a4bf5bbb9feaa2713d99a3b52ab80024?s=32', util::get_gravatar('john.doe@example.org'));
- $this->assertEquals('https://secure.gravatar.com/avatar/a4bf5bbb9feaa2713d99a3b52ab80024?s=128', util::get_gravatar('john.doe@example.org', 128));
-
- $_SERVER['HTTPS'] = 'off';
- $this->assertEquals('http://www.gravatar.com/avatar/a4bf5bbb9feaa2713d99a3b52ab80024?s=32', util::get_gravatar('john.doe@example.org'));
- $this->assertEquals('http://www.gravatar.com/avatar/a4bf5bbb9feaa2713d99a3b52ab80024?s=128', util::get_gravatar('john.doe@example.org', 128));
- }
-
- public function test_get_client_ip()
- {
- $_SERVER['REMOTE_ADDR'] = '192.168.30.152';
- $_SERVER['HTTP_CLIENT_IP'] = '192.168.30.153';
- $_SERVER['HTTP_X_FORWARDED_FOR'] = '192.168.30.154';
- $this->assertEquals('192.168.30.152', util::get_client_ip());
- $this->assertEquals('192.168.30.153', util::get_client_ip(true));
-
- unset($_SERVER['HTTP_CLIENT_IP']);
- $this->assertEquals('192.168.30.154', util::get_client_ip(true));
- unset($_SERVER['HTTP_X_FORWARDED_FOR']);
- $this->assertEquals('192.168.30.152', util::get_client_ip(true));
- }
-
- public function test_full_permissions()
- {
- // Text a non-existant file.
- $this->assertFalse(util::full_permissions('faker-123.blah'), 'Gave a permission value for a non-existant file.');
-
- // Test an existing file.
- $expected = '-rw-rw-rw-';
- $tempFile = tempnam(sys_get_temp_dir(), 'foo');
- $this->assertTrue(chmod($tempFile, 0666), 'Oops. Could not change temp file\'s permissions to 0666.');
- $this->assertEquals($expected, util::full_permissions($tempFile), 'Could not properly obtain permissions of an existing file.');
- unlink($tempFile);
-
- $this->assertEquals('lr--r--r--', util::full_permissions('fake-file-222', octdec('120444')));
- $this->assertEquals('ur--r--r--', util::full_permissions('fake-file-222', octdec('000444')));
- $this->assertEquals('srwxr-xr-x', util::full_permissions('fake-file-222', octdec('140755')));
- $this->assertEquals('drwxr-xr-x', util::full_permissions('fake-file-222', octdec('40755')));
- $this->assertEquals('brw-rw----', util::full_permissions('fake-file-222', octdec('60660')));
- $this->assertEquals('crw-rw----', util::full_permissions('fake-file-222', octdec('20660')));
- $this->assertEquals('prw-rw----', util::full_permissions('fake-file-222', octdec('10660')));
- $this->assertEquals('---x------', util::full_permissions('fake-file-222', octdec('100100')));
- $this->assertEquals('--w-------', util::full_permissions('fake-file-222', octdec('100200')));
- $this->assertEquals('--wx------', util::full_permissions('fake-file-222', octdec('100300')));
- $this->assertEquals('-r--------', util::full_permissions('fake-file-222', octdec('100400')));
- $this->assertEquals('-r-x------', util::full_permissions('fake-file-222', octdec('100500')));
- $this->assertEquals('-rw-------', util::full_permissions('fake-file-222', octdec('100600')));
- $this->assertEquals('-rwx------', util::full_permissions('fake-file-222', octdec('100700')));
-
- // Windows does not have the concept of /.
- if (!defined('PHP_WINDOWS_VERSION_MAJOR')) {
- $this->assertEquals('drwxr-xr-x', util::full_permissions('/'));
- }
- }
-
- public function test_array_clean()
- {
- $input = array( 'a', 'b', '', null, false, 0);
- $expect = array('a', 'b');
- $this->assertEquals($expect, Util::array_clean($input));
- }
-
- public function test_var_dump_plain()
- {
- $input = 'var';
- $expect = 'string ( 3) "var" ';
- $this->assertEquals($expect, Util::var_dump_plain($input, true));
-
- $input = true;
- $expect = 'bool ( true ) ';
- $this->assertEquals($expect, Util::var_dump_plain($input, true));
-
- $input = 1;
- $expect = 'int ( 1 ) ';
- $this->assertEquals($expect, Util::var_dump_plain($input, true));
-
- $input = 1.5;
- $expect = 'float ( 1.5 ) ';
- $this->assertEquals($expect, Util::var_dump_plain($input, true));
-
- $input = null;
- $expect = 'NULL ';
- $this->assertEquals($expect, Util::var_dump_plain($input, true));
-
- $input = fopen('php://memory', 'r');
- $expect = 'resource ("stream") "' . $input . '" ';
- $this->assertEquals($expect, Util::var_dump_plain($input, -1));
- fclose($input);
-
- // Test complex arrays.
- $input = array(1, 2, 4, 6, 10 => 20, 100 => 200);
- $actual = util::var_dump_plain($input, true);
- $this->assertContains(' )', $actual);
-
- // Test complex objects.
- $experiment = new VarDumpExperiment();
- $actual = util::var_dump_plain($experiment, true);
- $this->assertContains('1 => string ( 1', $actual);
- }
-
- public function test_var_dump()
- {
- $input = 'var';
- $expect = 'string ( 3) "var" ';
-
- // Ensure the proper output is returned
- $this->assertEquals($expect, Util::var_dump($input, true));
-
- // Ensure the proper output is actually outputted
- $this->expectOutputString($expect);
- util::var_dump($input);
-
- // Ensure we avoid infinite recursion on recursive arrays
- $a = array('a' => 'value a', 'b' => 'value b');
- $b = array('test' => &$a);
- $c = array('a' => &$a, 'b' => &$b);
- $a['c'] = &$c;
- $b['c'] = &$c;
- $this->assertContains('*RECURSION DETECTED*', Util::var_dump($c, true));
-
- // Ensure we avoid infinite recursion on recursive objects
- $a = (object) array('a' => 'value a', 'b' => 'value b');
- $b = (object) array('test' => &$a);
- $c = (object) array('a' => &$a, 'b' => &$b);
- $a->c = &$c;
- $b->c = &$c;
- $this->assertContains('*RECURSION DETECTED*', Util::var_dump($c, true));
-
- // Test class scoping.
- $experiment = new VarDumpExperiment();
- $actual = util::var_dump($experiment, true);
-
- $snippet = substr($actual, strrpos($actual, 'display:inline'));
- $this->assertContains('"public"', $snippet);
- $this->assertContains('"protected:protected"', $snippet);
- $this->assertContains('"private:VarDumpExperiment:private"', $actual);
- }
-
- public function test_linkify()
- {
- $input = 'great websites: http://www.google.com?param=test and http://yahoo.com/a/nested/folder';
- $expect = 'great websites: http://www.google.com?param=test and http://yahoo.com/a/nested/folder ';
- $this->assertEquals($expect, Util::linkify($input));
-
- $this->assertEquals($expect, util::linkify($expect), 'linkify() tried to double linkify an href.');
- }
-
- public function test_start_with()
- {
- $this->assertTrue(Util::starts_with('start a string', 'start a'));
- $this->assertFalse(Util::starts_with('start a string', 'string'));
- }
-
- public function test_end_with()
- {
- $this->assertTrue(Util::ends_with('start a string', 'a string'));
- $this->assertFalse(Util::ends_with('start a string', 'start'));
- }
-
- public function test_contains()
- {
- $this->assertTrue(Util::str_contains('start a string', 'a string'));
- $this->assertFalse(Util::str_contains('start a string', 'Start'));
- }
-
- public function test_iContains()
- {
- $this->assertTrue(Util::str_icontains('start a string', 'a string'));
- $this->assertTrue(Util::str_icontains('start a string', 'Start'));
- }
-
- public function test_get_file_ext()
- {
- $input = 'a_pdf_fil.pdf';
- $expect = 'pdf';
- $this->assertEquals($expect, Util::get_file_ext($input));
- }
-
- public function test_rmdir()
- {
- $dirname = dirname(__FILE__);
-
- // Test deleting a non-existant directory
- $this->assertFalse(file_exists($dirname . '/test1'));
- $this->assertTrue(util::rmdir($dirname . '/test1'));
-
- // Test deleting an empty directory
- $dir = $dirname . '/test2';
- mkdir($dir);
-
- $this->assertTrue(is_dir($dir));
-
- if (is_dir($dir)) {
- util::rmdir($dir);
- $this->assertFalse(is_dir($dir));
- }
-
- // Test deleting a non-empty directory
- $dir = $dirname . '/test3';
- $file = $dirname . '/test3/test.txt';
- mkdir($dir);
- touch($file);
-
- $this->assertTrue(is_dir($dir));
- $this->assertTrue(is_file($file));
-
- if (is_dir($dir)) {
- util::rmdir($dir);
- $this->assertFalse(is_dir($dir));
- $this->assertFalse(is_file($file));
- }
-
- // Test deleting a non-directory path
- $file = $dirname . '/test4.txt';
- touch($file);
-
- try {
- $str = util::rmdir($file);
- $this->assertTrue(false);
- } catch (\Exception $e) {
- $this->assertTrue(true);
- }
-
- unlink($file);
-
- // Test deleting a nested directory
- $dir1 = $dirname . '/test5';
- $dir2 = $dirname . '/test5/nested_dir';
- $file1 = $dir1 . '/file1.txt';
- $file2 = $dir2 . '/file2.txt';
- mkdir($dir1);
- mkdir($dir2);
- touch($file1);
- touch($file2);
-
- $this->assertTrue(is_dir($dir1));
- $this->assertTrue(is_dir($dir2));
- $this->assertTrue(is_file($file1));
- $this->assertTrue(is_file($file2));
-
- if (is_dir($dir1)) {
- util::rmdir($dir1);
- $this->assertFalse(is_dir($dir1));
- $this->assertFalse(is_dir($dir2));
- $this->assertFalse(is_file($file1));
- $this->assertFalse(is_file($file2));
- }
-
- // Test symlink traversal.
- $dir = $dirname . '/test6';
- $nestedDir = "$dir/nested";
- $symlink = "$dir/nested-symlink";
-
- mkdir($dir);
- mkdir($nestedDir);
-
- $symlinkStatus = symlink($nestedDir, $symlink);
- $this->assertTrue($symlinkStatus, 'The test system does not support making symlinks.');
-
- if (!$symlink) {
- return;
- }
-
- $this->assertTrue(util::rmdir($symlink, true), 'Could not delete a symlinked directory.');
- $this->assertFalse(file_exists($symlink), 'Could not delete a symlinked directory.');
- util::rmdir($dir, true);
- $this->assertFalse(is_dir($dir), 'Could not delete a directory with a symlinked directory inside of it.');
- }
-
- public function test_get_current_url()
- {
- $expected = 'http://test.dev/test.php?foo=bar';
- $expectedAuth = 'http://admin:123@test.dev/test.php?foo=bar';
- $expectedPort = 'http://test.dev:443/test.php?foo=bar';
- $expectedPort2 = 'https://test.dev:80/test.php?foo=bar';
- $expectedSSL = 'https://test.dev/test.php?foo=bar';
-
- $_SERVER['HTTP_HOST'] = 'test.dev';
- $_SERVER['SERVER_PORT'] = 80;
- $_SERVER['REQUEST_URI'] = '/test.php?foo=bar';
- $_SERVER['QUERY_STRING'] = 'foo=bar';
- $_SERVER['PHP_SELF'] = '/test.php';
-
- // Test regular.
- $this->assertEquals($expected, util::get_current_url());
-
- // Test server auth.
- $_SERVER['PHP_AUTH_USER'] = 'admin';
- $_SERVER['PHP_AUTH_PW'] = '123';
- $this->assertEquals($expectedAuth, util::get_current_url());
- unset($_SERVER['PHP_AUTH_USER']);
- unset($_SERVER['PHP_AUTH_PW']);
-
- // Test port.
- $_SERVER['SERVER_PORT'] = 443;
- $this->assertEquals($expectedPort, util::get_current_url());
-
- // Test SSL.
- $_SERVER['HTTPS'] = 'on';
- $this->assertEquals($expectedSSL, util::get_current_url());
- $_SERVER['SERVER_PORT'] = 80;
- $this->assertEquals($expectedPort2, util::get_current_url());
- unset($_SERVER['HTTPS']);
-
- // Test no $_SERVER['REQUEST_URI'] (e.g., MS IIS).
- unset($_SERVER['REQUEST_URI']);
- $this->assertEquals($expected, util::get_current_url());
- }
-
- public function test_set_writable()
- {
- if (strncasecmp(PHP_OS, 'WIN', 3) === 0) {
- $this->markTestSkipped('This functionality is not working on Windows.');
- }
-
- if (posix_geteuid() === 0) {
- $this->markTestSkipped('These tests don\'t work when run as root');
- }
-
- $this->assertFalse(util::set_writable('/no/such/file'));
-
- // Create a file to test with
- $dirname = dirname(__FILE__);
- $file = $dirname . '/test7';
- touch($file);
- chmod($file, 0644);
-
- // The file is owned by us so it should be writable
- $this->assertTrue(is_writable($file));
- $this->assertEquals('-rw-r--r--', util::full_permissions($file));
-
- // Toggle writable bit off for us
- util::set_writable($file, false);
- clearstatcache();
- $this->assertFalse(is_writable($file));
- $this->assertEquals('-r--r--r--', util::full_permissions($file));
-
- // Toggle writable bit back on for us
- util::set_writable($file, true);
- clearstatcache();
- $this->assertTrue(is_writable($file));
- $this->assertEquals('-rw-r--r--', util::full_permissions($file));
-
- unlink($file);
- }
-
- public function test_set_readable()
- {
- if (strncasecmp(PHP_OS, 'WIN', 3) === 0) {
- $this->markTestSkipped('This functionality is not working on Windows.');
- }
-
- if (posix_geteuid() === 0) {
- $this->markTestSkipped('These tests don\'t work when run as root');
- }
-
- $this->assertFalse(util::set_readable('/no/such/file'));
-
- $dirname = dirname(__FILE__);
- $file = $dirname . '/test8';
- touch($file);
-
- $this->assertTrue(is_readable($file));
-
- util::set_readable($file, false);
- clearstatcache();
- $this->assertFalse(is_readable($file));
-
- util::set_readable($file, true);
- clearstatcache();
- $this->assertTrue(is_readable($file));
-
- unlink($file);
- }
-
- public function test_set_executable()
- {
- if (strncasecmp(PHP_OS, 'WIN', 3) === 0) {
- $this->markTestSkipped('This functionality is not working on Windows.');
- }
-
- if (posix_geteuid() === 0) {
- $this->markTestSkipped('These tests don\'t work when run as root');
- }
-
- $this->assertFalse(util::set_executable('/no/such/file'));
-
- $dirname = dirname(__FILE__);
- $file = $dirname . '/test9';
- touch($file);
-
- $this->assertFalse(is_executable($file));
-
- util::set_executable($file, true);
- clearstatcache();
- $this->assertTrue(is_executable($file));
-
- util::set_executable($file, false);
- clearstatcache();
- $this->assertFalse(is_executable($file));
-
- unlink($file);
- }
-
- public function test_directory_size() {
- $dirname = dirname(__FILE__);
- $dir = $dirname .'/dir1';
- mkdir($dir);
- $file1 = $dir .'/file1';
- file_put_contents($file1, '1234567890');
- $file2 = $dir .'/file2';
- file_put_contents($file2, range('a', 'z'));
- $this->assertEquals(10 + 26, util::directory_size($dir));
- util::rmdir($dir);
- }
-
- public function test_get_user_directory() {
- // Test for OS Default.
- $this->assertTrue(is_writable(util::get_user_directory()));
-
- $oldServer = $_SERVER;
- unset($_SERVER);
- // Test for UNIX.
- $_SERVER['HOME'] = '/home/unknown';
- $this->assertEquals($_SERVER['HOME'], util::get_user_directory(), 'Could not get the user\'s home directory in UNIX.');
- unset($_SERVER);
-
- // Test for Windows.
- $expected = 'X:\Users\ThisUser';
- $_SERVER['HOMEDRIVE'] = 'X:';
- $_SERVER['HOMEPATH'] = '\Users\ThisUser';
- $this->assertEquals($expected, util::get_user_directory(), 'Could not get the user\'s home directory in Windows.');
-
- // In case the tests are not being run in isolation.
- $_SERVER = $oldServer;
- }
-
- public function test_directory_contents() {
- $dirname = dirname(__FILE__);
- $dir = $dirname . DIRECTORY_SEPARATOR .'dir1';
- mkdir($dir);
- $file1 = $dir . DIRECTORY_SEPARATOR .'file1';
- touch($file1);
- $this->assertEquals(array($file1), util::directory_contents($dir));
- util::rmdir($dir);
- }
-}
diff --git a/vendor/brandonwamboldt/utilphp/util.php b/vendor/brandonwamboldt/utilphp/util.php
deleted file mode 100644
index 1b209796..00000000
--- a/vendor/brandonwamboldt/utilphp/util.php
+++ /dev/null
@@ -1,10 +0,0 @@
-
- */
-class util extends \utilphp\util { }
diff --git a/vendor/catfan/medoo/.gitattributes b/vendor/catfan/medoo/.gitattributes
deleted file mode 100644
index 8079ae23..00000000
--- a/vendor/catfan/medoo/.gitattributes
+++ /dev/null
@@ -1,22 +0,0 @@
-# Auto detect text files and perform LF normalization
-* text=auto
-
-# Custom for Visual Studio
-*.cs diff=csharp
-*.sln merge=union
-*.csproj merge=union
-*.vbproj merge=union
-*.fsproj merge=union
-*.dbproj merge=union
-
-# Standard to msysgit
-*.doc diff=astextplain
-*.DOC diff=astextplain
-*.docx diff=astextplain
-*.DOCX diff=astextplain
-*.dot diff=astextplain
-*.DOT diff=astextplain
-*.pdf diff=astextplain
-*.PDF diff=astextplain
-*.rtf diff=astextplain
-*.RTF diff=astextplain
\ No newline at end of file
diff --git a/vendor/catfan/medoo/.github/FUNDING.yml b/vendor/catfan/medoo/.github/FUNDING.yml
deleted file mode 100644
index d3400156..00000000
--- a/vendor/catfan/medoo/.github/FUNDING.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-# These are supported funding model platforms
-
-open_collective: medoo
diff --git a/vendor/catfan/medoo/.github/ISSUE_TEMPLATE/bug_report.md b/vendor/catfan/medoo/.github/ISSUE_TEMPLATE/bug_report.md
deleted file mode 100644
index 160e7e0f..00000000
--- a/vendor/catfan/medoo/.github/ISSUE_TEMPLATE/bug_report.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-name: Bug report
-about: Create a report to help us improve
-
----
-
-**Describe the bug**
-A clear and concise description of what the bug is.
-
-**Information**
-- Version of Medoo:
-- Type of Database (MySQL, MSSQL, SQLite...):
-- System (Liunx\Windows\Mac):
-
-**Detail Code**
-The detail code causes the problem.
-
-**Expected output**
-A clear and concise description of what output you expected.
diff --git a/vendor/catfan/medoo/.gitignore b/vendor/catfan/medoo/.gitignore
deleted file mode 100644
index 0c814575..00000000
--- a/vendor/catfan/medoo/.gitignore
+++ /dev/null
@@ -1,216 +0,0 @@
-#################
-## Eclipse
-#################
-
-*.pydevproject
-.project
-.metadata
-bin/
-tmp/
-*.tmp
-*.bak
-*.swp
-*~.nib
-local.properties
-.classpath
-.settings/
-.loadpath
-
-# External tool builders
-.externalToolBuilders/
-
-# Locally stored "Eclipse launch configurations"
-*.launch
-
-# CDT-specific
-.cproject
-
-# PDT-specific
-.buildpath
-
-
-#################
-## Visual Studio
-#################
-
-## Ignore Visual Studio temporary files, build results, and
-## files generated by popular Visual Studio add-ons.
-
-# User-specific files
-*.suo
-*.user
-*.sln.docstates
-
-# Build results
-
-[Dd]ebug/
-[Rr]elease/
-x64/
-build/
-[Bb]in/
-[Oo]bj/
-
-# MSTest test Results
-[Tt]est[Rr]esult*/
-[Bb]uild[Ll]og.*
-
-*_i.c
-*_p.c
-*.ilk
-*.meta
-*.obj
-*.pch
-*.pdb
-*.pgc
-*.pgd
-*.rsp
-*.sbr
-*.tlb
-*.tli
-*.tlh
-*.tmp
-*.tmp_proj
-*.log
-*.vspscc
-*.vssscc
-.builds
-*.pidb
-*.log
-*.scc
-
-# Visual C++ cache files
-ipch/
-*.aps
-*.ncb
-*.opensdf
-*.sdf
-*.cachefile
-
-# Visual Studio profiler
-*.psess
-*.vsp
-*.vspx
-
-# Guidance Automation Toolkit
-*.gpState
-
-# ReSharper is a .NET coding add-in
-_ReSharper*/
-*.[Rr]e[Ss]harper
-
-# TeamCity is a build add-in
-_TeamCity*
-
-# DotCover is a Code Coverage Tool
-*.dotCover
-
-# NCrunch
-*.ncrunch*
-.*crunch*.local.xml
-
-# Installshield output folder
-[Ee]xpress/
-
-# DocProject is a documentation generator add-in
-DocProject/buildhelp/
-DocProject/Help/*.HxT
-DocProject/Help/*.HxC
-DocProject/Help/*.hhc
-DocProject/Help/*.hhk
-DocProject/Help/*.hhp
-DocProject/Help/Html2
-DocProject/Help/html
-
-# Click-Once directory
-publish/
-
-# Publish Web Output
-*.Publish.xml
-*.pubxml
-*.publishproj
-
-# NuGet Packages Directory
-## TODO: If you have NuGet Package Restore enabled, uncomment the next line
-#packages/
-
-# Windows Azure Build Output
-csx
-*.build.csdef
-
-# Windows Store app package directory
-AppPackages/
-
-# Others
-sql/
-*.Cache
-ClientBin/
-[Ss]tyle[Cc]op.*
-~$*
-*~
-*.dbmdl
-*.[Pp]ublish.xml
-*.pfx
-*.publishsettings
-
-# RIA/Silverlight projects
-Generated_Code/
-
-# Backup & report files from converting an old project file to a newer
-# Visual Studio version. Backup files are not needed, because we have git ;-)
-_UpgradeReport_Files/
-Backup*/
-UpgradeLog*.XML
-UpgradeLog*.htm
-
-# SQL Server files
-App_Data/*.mdf
-App_Data/*.ldf
-
-#############
-## Windows detritus
-#############
-
-# Windows image file caches
-Thumbs.db
-ehthumbs.db
-
-# Folder config file
-Desktop.ini
-
-# Recycle Bin used on file shares
-$RECYCLE.BIN/
-
-# Mac crap
-.DS_Store
-
-
-#############
-## Python
-#############
-
-*.py[cod]
-
-# Packages
-*.egg
-*.egg-info
-dist/
-build/
-eggs/
-parts/
-var/
-sdist/
-develop-eggs/
-.installed.cfg
-
-# Installer logs
-pip-log.txt
-
-# Unit test / coverage reports
-.coverage
-.tox
-
-#Translations
-*.mo
-
-#Mr Developer
-.mr.developer.cfg
\ No newline at end of file
diff --git a/vendor/catfan/medoo/LICENSE.md b/vendor/catfan/medoo/LICENSE.md
deleted file mode 100644
index e63dae83..00000000
--- a/vendor/catfan/medoo/LICENSE.md
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2019 Angel Lai
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/vendor/catfan/medoo/README.md b/vendor/catfan/medoo/README.md
deleted file mode 100644
index 5288a756..00000000
--- a/vendor/catfan/medoo/README.md
+++ /dev/null
@@ -1,102 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-> The lightweight PHP database framework to accelerate development
-
-## Features
-
-* **Lightweight** - Less than 100 KB, portable with only one file
-
-* **Easy** - Extremely easy to learn and use, friendly construction
-
-* **Powerful** - Supports various common and complex SQL queries, data mapping, and prevent SQL injection
-
-* **Compatible** - Supports all SQL databases, including MySQL, MSSQL, SQLite, MariaDB, PostgreSQL, Sybase, Oracle and more
-
-* **Friendly** - Works well with every PHP frameworks, like Laravel, Codeigniter, Yii, Slim, and framework which supports singleton extension or composer
-
-* **Free** - Under MIT license, you can use it anywhere whatever you want
-
-## Requirement
-
-PHP 5.4+ and PDO extension installed, recommend PHP 7.0+
-
-## Get Started
-
-### Install via composer
-
-Add Medoo to composer.json configuration file.
-```
-$ composer require catfan/medoo
-```
-
-And update the composer
-```
-$ composer update
-```
-
-```php
-// If you installed via composer, just use this code to require autoloader on the top of your projects.
-require 'vendor/autoload.php';
-
-// Using Medoo namespace
-use Medoo\Medoo;
-
-// Initialize
-$database = new Medoo([
- 'database_type' => 'mysql',
- 'database_name' => 'name',
- 'server' => 'localhost',
- 'username' => 'your_username',
- 'password' => 'your_password'
-]);
-
-// Enjoy
-$database->insert('account', [
- 'user_name' => 'foo',
- 'email' => 'foo@bar.com'
-]);
-
-$data = $database->select('account', [
- 'user_name',
- 'email'
-], [
- 'user_id' => 50
-]);
-
-echo json_encode($data);
-
-// [
-// {
-// "user_name" : "foo",
-// "email" : "foo@bar.com",
-// }
-// ]
-```
-
-## Contribution Guides
-
-For most of time, Medoo is using develop branch for adding feature and fixing bug, and the branch will be merged into master branch while releasing a public version. For contribution, submit your code to the develop branch, and start a pull request into it.
-
-On develop branch, each commits are started with `[fix]`, `[feature]` or `[update]` tag to indicate the change.
-
-Keep it simple and keep it clear.
-
-## License
-
-Medoo is under the MIT license.
-
-## Links
-
-* Official website: [https://medoo.in](https://medoo.in)
-
-* Documentation: [https://medoo.in/doc](https://medoo.in/doc)
\ No newline at end of file
diff --git a/vendor/catfan/medoo/composer.json b/vendor/catfan/medoo/composer.json
deleted file mode 100644
index 2bb0d08f..00000000
--- a/vendor/catfan/medoo/composer.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "name": "catfan/medoo",
- "type": "framework",
- "description": "The lightweight PHP database framework to accelerate development",
- "keywords": ["database", "database library", "lightweight", "PHP framework", "SQL", "MySQL", "MSSQL", "SQLite", "PostgreSQL", "MariaDB", "Oracle"],
- "homepage": "https://medoo.in",
- "license": "MIT",
- "support": {
- "issues": "https://github.com/catfan/Medoo/issues",
- "source": "https://github.com/catfan/Medoo"
- },
- "authors": [
- {"name": "Angel Lai", "email": "angel@catfan.me"}
- ],
- "require": {
- "php": ">=5.4",
- "ext-pdo": "*"
- },
- "suggest": {
- "ext-pdo_mysql": "For MySQL or MariaDB database",
- "ext-pdo_sqlsrv": "For MSSQL database on both Window/Liunx platform",
- "ext-pdo_dblib": "For MSSQL or Sybase database on Linux/UNIX platform",
- "ext-pdo_oci": "For Oracle database",
- "ext-pdo_oci8": "For Oracle version 8 database",
- "ext-pdo_pqsql": "For PostgreSQL database",
- "ext-pdo_sqlite": "For SQLite database"
- },
- "autoload": {
- "psr-4": {
- "Medoo\\": "/src"
- }
- }
-}
\ No newline at end of file
diff --git a/vendor/catfan/medoo/src/Medoo.php b/vendor/catfan/medoo/src/Medoo.php
deleted file mode 100644
index 0164591c..00000000
--- a/vendor/catfan/medoo/src/Medoo.php
+++ /dev/null
@@ -1,1852 +0,0 @@
-type = strtolower($options[ 'database_type' ]);
-
- if ($this->type === 'mariadb')
- {
- $this->type = 'mysql';
- }
- }
-
- if (isset($options[ 'prefix' ]))
- {
- $this->prefix = $options[ 'prefix' ];
- }
-
- if (isset($options[ 'logging' ]) && is_bool($options[ 'logging' ]))
- {
- $this->logging = $options[ 'logging' ];
- }
-
- $option = isset($options[ 'option' ]) ? $options[ 'option' ] : [];
- $commands = (isset($options[ 'command' ]) && is_array($options[ 'command' ])) ? $options[ 'command' ] : [];
-
- switch ($this->type)
- {
- case 'mysql':
- // Make MySQL using standard quoted identifier
- $commands[] = 'SET SQL_MODE=ANSI_QUOTES';
-
- break;
-
- case 'mssql':
- // Keep MSSQL QUOTED_IDENTIFIER is ON for standard quoting
- $commands[] = 'SET QUOTED_IDENTIFIER ON';
-
- // Make ANSI_NULLS is ON for NULL value
- $commands[] = 'SET ANSI_NULLS ON';
-
- break;
- }
-
- if (isset($options[ 'pdo' ]))
- {
- if (!$options[ 'pdo' ] instanceof PDO)
- {
- throw new InvalidArgumentException('Invalid PDO object supplied');
- }
-
- $this->pdo = $options[ 'pdo' ];
-
- foreach ($commands as $value)
- {
- $this->pdo->exec($value);
- }
-
- return;
- }
-
- if (isset($options[ 'dsn' ]))
- {
- if (is_array($options[ 'dsn' ]) && isset($options[ 'dsn' ][ 'driver' ]))
- {
- $attr = $options[ 'dsn' ];
- }
- else
- {
- throw new InvalidArgumentException('Invalid DSN option supplied');
- }
- }
- else
- {
- if (
- isset($options[ 'port' ]) &&
- is_int($options[ 'port' ] * 1)
- )
- {
- $port = $options[ 'port' ];
- }
-
- $is_port = isset($port);
-
- switch ($this->type)
- {
- case 'mysql':
- $attr = [
- 'driver' => 'mysql',
- 'dbname' => $options[ 'database_name' ]
- ];
-
- if (isset($options[ 'socket' ]))
- {
- $attr[ 'unix_socket' ] = $options[ 'socket' ];
- }
- else
- {
- $attr[ 'host' ] = $options[ 'server' ];
-
- if ($is_port)
- {
- $attr[ 'port' ] = $port;
- }
- }
-
- break;
-
- case 'pgsql':
- $attr = [
- 'driver' => 'pgsql',
- 'host' => $options[ 'server' ],
- 'dbname' => $options[ 'database_name' ]
- ];
-
- if ($is_port)
- {
- $attr[ 'port' ] = $port;
- }
-
- break;
-
- case 'sybase':
- $attr = [
- 'driver' => 'dblib',
- 'host' => $options[ 'server' ],
- 'dbname' => $options[ 'database_name' ]
- ];
-
- if ($is_port)
- {
- $attr[ 'port' ] = $port;
- }
-
- break;
-
- case 'oracle':
- $attr = [
- 'driver' => 'oci',
- 'dbname' => $options[ 'server' ] ?
- '//' . $options[ 'server' ] . ($is_port ? ':' . $port : ':1521') . '/' . $options[ 'database_name' ] :
- $options[ 'database_name' ]
- ];
-
- if (isset($options[ 'charset' ]))
- {
- $attr[ 'charset' ] = $options[ 'charset' ];
- }
-
- break;
-
- case 'mssql':
- if (isset($options[ 'driver' ]) && $options[ 'driver' ] === 'dblib')
- {
- $attr = [
- 'driver' => 'dblib',
- 'host' => $options[ 'server' ] . ($is_port ? ':' . $port : ''),
- 'dbname' => $options[ 'database_name' ]
- ];
-
- if (isset($options[ 'appname' ]))
- {
- $attr[ 'appname' ] = $options[ 'appname' ];
- }
-
- if (isset($options[ 'charset' ]))
- {
- $attr[ 'charset' ] = $options[ 'charset' ];
- }
- }
- else
- {
- $attr = [
- 'driver' => 'sqlsrv',
- 'Server' => $options[ 'server' ] . ($is_port ? ',' . $port : ''),
- 'Database' => $options[ 'database_name' ]
- ];
-
- if (isset($options[ 'appname' ]))
- {
- $attr[ 'APP' ] = $options[ 'appname' ];
- }
-
- $config = [
- 'ApplicationIntent',
- 'AttachDBFileName',
- 'Authentication',
- 'ColumnEncryption',
- 'ConnectionPooling',
- 'Encrypt',
- 'Failover_Partner',
- 'KeyStoreAuthentication',
- 'KeyStorePrincipalId',
- 'KeyStoreSecret',
- 'LoginTimeout',
- 'MultipleActiveResultSets',
- 'MultiSubnetFailover',
- 'Scrollable',
- 'TraceFile',
- 'TraceOn',
- 'TransactionIsolation',
- 'TransparentNetworkIPResolution',
- 'TrustServerCertificate',
- 'WSID',
- ];
-
- foreach ($config as $value)
- {
- $keyname = strtolower(preg_replace(['/([a-z\d])([A-Z])/', '/([^_])([A-Z][a-z])/'], '$1_$2', $value));
-
- if (isset($options[ $keyname ]))
- {
- $attr[ $value ] = $options[ $keyname ];
- }
- }
- }
-
- break;
-
- case 'sqlite':
- $attr = [
- 'driver' => 'sqlite',
- $options[ 'database_file' ]
- ];
-
- break;
- }
- }
-
- if (!isset($attr))
- {
- throw new InvalidArgumentException('Incorrect connection options');
- }
-
- $driver = $attr[ 'driver' ];
-
- if (!in_array($driver, PDO::getAvailableDrivers()))
- {
- throw new InvalidArgumentException("Unsupported PDO driver: {$driver}");
- }
-
- unset($attr[ 'driver' ]);
-
- $stack = [];
-
- foreach ($attr as $key => $value)
- {
- $stack[] = is_int($key) ? $value : $key . '=' . $value;
- }
-
- $dsn = $driver . ':' . implode(';', $stack);
-
- if (
- in_array($this->type, ['mysql', 'pgsql', 'sybase', 'mssql']) &&
- isset($options[ 'charset' ])
- )
- {
- $commands[] = "SET NAMES '{$options[ 'charset' ]}'" . (
- $this->type === 'mysql' && isset($options[ 'collation' ]) ?
- " COLLATE '{$options[ 'collation' ]}'" : ''
- );
- }
-
- $this->dsn = $dsn;
-
- try {
- $this->pdo = new PDO(
- $dsn,
- isset($options[ 'username' ]) ? $options[ 'username' ] : null,
- isset($options[ 'password' ]) ? $options[ 'password' ] : null,
- $option
- );
-
- foreach ($commands as $value)
- {
- $this->pdo->exec($value);
- }
- }
- catch (PDOException $e) {
- throw new PDOException($e->getMessage());
- }
- }
-
- public function query($query, $map = [])
- {
- $raw = $this->raw($query, $map);
-
- $query = $this->buildRaw($raw, $map);
-
- return $this->exec($query, $map);
- }
-
- public function exec($query, $map = [])
- {
- $this->statement = null;
-
- if ($this->debug_mode)
- {
- echo $this->generate($query, $map);
-
- $this->debug_mode = false;
-
- return false;
- }
-
- if ($this->logging)
- {
- $this->logs[] = [$query, $map];
- }
- else
- {
- $this->logs = [[$query, $map]];
- }
-
- $statement = $this->pdo->prepare($query);
-
- if (!$statement)
- {
- $this->errorInfo = $this->pdo->errorInfo();
- $this->statement = null;
-
- return false;
- }
-
- $this->statement = $statement;
-
- foreach ($map as $key => $value)
- {
- $statement->bindValue($key, $value[ 0 ], $value[ 1 ]);
- }
-
- $execute = $statement->execute();
-
- $this->errorInfo = $statement->errorInfo();
-
- if (!$execute)
- {
- $this->statement = null;
- }
-
- return $statement;
- }
-
- protected function generate($query, $map)
- {
- $identifier = [
- 'mysql' => '`$1`',
- 'mssql' => '[$1]'
- ];
-
- $query = preg_replace(
- '/"([a-zA-Z0-9_]+)"/i',
- isset($identifier[ $this->type ]) ? $identifier[ $this->type ] : '"$1"',
- $query
- );
-
- foreach ($map as $key => $value)
- {
- if ($value[ 1 ] === PDO::PARAM_STR)
- {
- $replace = $this->quote($value[ 0 ]);
- }
- elseif ($value[ 1 ] === PDO::PARAM_NULL)
- {
- $replace = 'NULL';
- }
- elseif ($value[ 1 ] === PDO::PARAM_LOB)
- {
- $replace = '{LOB_DATA}';
- }
- else
- {
- $replace = $value[ 0 ];
- }
-
- $query = str_replace($key, $replace, $query);
- }
-
- return $query;
- }
-
- public static function raw($string, $map = [])
- {
- $raw = new Raw();
-
- $raw->map = $map;
- $raw->value = $string;
-
- return $raw;
- }
-
- protected function isRaw($object)
- {
- return $object instanceof Raw;
- }
-
- protected function buildRaw($raw, &$map)
- {
- if (!$this->isRaw($raw))
- {
- return false;
- }
-
- $query = preg_replace_callback(
- '/(([`\']).*?)?((FROM|TABLE|INTO|UPDATE|JOIN)\s*)?\<(([a-zA-Z0-9_]+)(\.[a-zA-Z0-9_]+)?)\>(.*?\2)?/i',
- function ($matches)
- {
- if (!empty($matches[ 2 ]) && isset($matches[ 8 ]))
- {
- return $matches[ 0 ];
- }
-
- if (!empty($matches[ 4 ]))
- {
- return $matches[ 1 ] . $matches[ 4 ] . ' ' . $this->tableQuote($matches[ 5 ]);
- }
-
- return $matches[ 1 ] . $this->columnQuote($matches[ 5 ]);
- },
- $raw->value);
-
- $raw_map = $raw->map;
-
- if (!empty($raw_map))
- {
- foreach ($raw_map as $key => $value)
- {
- $map[ $key ] = $this->typeMap($value, gettype($value));
- }
- }
-
- return $query;
- }
-
- public function quote($string)
- {
- return $this->pdo->quote($string);
- }
-
- protected function tableQuote($table)
- {
- if (!preg_match('/^[a-zA-Z0-9_]+$/i', $table))
- {
- throw new InvalidArgumentException("Incorrect table name \"$table\"");
- }
-
- return '"' . $this->prefix . $table . '"';
- }
-
- protected function mapKey()
- {
- return ':MeDoO_' . $this->guid++ . '_mEdOo';
- }
-
- protected function typeMap($value, $type)
- {
- $map = [
- 'NULL' => PDO::PARAM_NULL,
- 'integer' => PDO::PARAM_INT,
- 'double' => PDO::PARAM_STR,
- 'boolean' => PDO::PARAM_BOOL,
- 'string' => PDO::PARAM_STR,
- 'object' => PDO::PARAM_STR,
- 'resource' => PDO::PARAM_LOB
- ];
-
- if ($type === 'boolean')
- {
- $value = ($value ? '1' : '0');
- }
- elseif ($type === 'NULL')
- {
- $value = null;
- }
-
- return [$value, $map[ $type ]];
- }
-
- protected function columnQuote($string)
- {
- if (!preg_match('/^[a-zA-Z0-9_]+(\.?[a-zA-Z0-9_]+)?$/i', $string))
- {
- throw new InvalidArgumentException("Incorrect column name \"$string\"");
- }
-
- if (strpos($string, '.') !== false)
- {
- return '"' . $this->prefix . str_replace('.', '"."', $string) . '"';
- }
-
- return '"' . $string . '"';
- }
-
- protected function columnPush(&$columns, &$map, $root, $is_join = false)
- {
- if ($columns === '*')
- {
- return $columns;
- }
-
- $stack = [];
-
- if (is_string($columns))
- {
- $columns = [$columns];
- }
-
- foreach ($columns as $key => $value)
- {
- if (!is_int($key) && is_array($value) && $root && count(array_keys($columns)) === 1)
- {
- $stack[] = $this->columnQuote($key);
-
- $stack[] = $this->columnPush($value, $map, false, $is_join);
- }
- elseif (is_array($value))
- {
- $stack[] = $this->columnPush($value, $map, false, $is_join);
- }
- elseif (!is_int($key) && $raw = $this->buildRaw($value, $map))
- {
- preg_match('/(?[a-zA-Z0-9_\.]+)(\s*\[(?(String|Bool|Int|Number))\])?/i', $key, $match);
-
- $stack[] = $raw . ' AS ' . $this->columnQuote($match[ 'column' ]);
- }
- elseif (is_int($key) && is_string($value))
- {
- if ($is_join && strpos($value, '*') !== false)
- {
- throw new InvalidArgumentException('Cannot use table.* to select all columns while joining table');
- }
-
- preg_match('/(?[a-zA-Z0-9_\.]+)(?:\s*\((?[a-zA-Z0-9_]+)\))?(?:\s*\[(?(?:String|Bool|Int|Number|Object|JSON))\])?/i', $value, $match);
-
- if (!empty($match[ 'alias' ]))
- {
- $stack[] = $this->columnQuote($match[ 'column' ]) . ' AS ' . $this->columnQuote($match[ 'alias' ]);
-
- $columns[ $key ] = $match[ 'alias' ];
-
- if (!empty($match[ 'type' ]))
- {
- $columns[ $key ] .= ' [' . $match[ 'type' ] . ']';
- }
- }
- else
- {
- $stack[] = $this->columnQuote($match[ 'column' ]);
- }
- }
- }
-
- return implode(',', $stack);
- }
-
- protected function arrayQuote($array)
- {
- $stack = [];
-
- foreach ($array as $value)
- {
- $stack[] = is_int($value) ? $value : $this->pdo->quote($value);
- }
-
- return implode(',', $stack);
- }
-
- protected function innerConjunct($data, $map, $conjunctor, $outer_conjunctor)
- {
- $stack = [];
-
- foreach ($data as $value)
- {
- $stack[] = '(' . $this->dataImplode($value, $map, $conjunctor) . ')';
- }
-
- return implode($outer_conjunctor . ' ', $stack);
- }
-
- protected function dataImplode($data, &$map, $conjunctor)
- {
- $stack = [];
-
- foreach ($data as $key => $value)
- {
- $type = gettype($value);
-
- if (
- $type === 'array' &&
- preg_match("/^(AND|OR)(\s+#.*)?$/", $key, $relation_match)
- )
- {
- $relationship = $relation_match[ 1 ];
-
- $stack[] = $value !== array_keys(array_keys($value)) ?
- '(' . $this->dataImplode($value, $map, ' ' . $relationship) . ')' :
- '(' . $this->innerConjunct($value, $map, ' ' . $relationship, $conjunctor) . ')';
-
- continue;
- }
-
- $map_key = $this->mapKey();
-
- if (
- is_int($key) &&
- preg_match('/([a-zA-Z0-9_\.]+)\[(?\>\=?|\<\=?|\!?\=)\]([a-zA-Z0-9_\.]+)/i', $value, $match)
- )
- {
- $stack[] = $this->columnQuote($match[ 1 ]) . ' ' . $match[ 'operator' ] . ' ' . $this->columnQuote($match[ 3 ]);
- }
- else
- {
- preg_match('/([a-zA-Z0-9_\.]+)(\[(?\>\=?|\<\=?|\!|\<\>|\>\<|\!?~|REGEXP)\])?/i', $key, $match);
- $column = $this->columnQuote($match[ 1 ]);
-
- if (isset($match[ 'operator' ]))
- {
- $operator = $match[ 'operator' ];
-
- if (in_array($operator, ['>', '>=', '<', '<=']))
- {
- $condition = $column . ' ' . $operator . ' ';
-
- if (is_numeric($value))
- {
- $condition .= $map_key;
- $map[ $map_key ] = [$value, is_float($value) ? PDO::PARAM_STR : PDO::PARAM_INT];
- }
- elseif ($raw = $this->buildRaw($value, $map))
- {
- $condition .= $raw;
- }
- else
- {
- $condition .= $map_key;
- $map[ $map_key ] = [$value, PDO::PARAM_STR];
- }
-
- $stack[] = $condition;
- }
- elseif ($operator === '!')
- {
- switch ($type)
- {
- case 'NULL':
- $stack[] = $column . ' IS NOT NULL';
- break;
-
- case 'array':
- $placeholders = [];
-
- foreach ($value as $index => $item)
- {
- $stack_key = $map_key . $index . '_i';
-
- $placeholders[] = $stack_key;
- $map[ $stack_key ] = $this->typeMap($item, gettype($item));
- }
-
- $stack[] = $column . ' NOT IN (' . implode(', ', $placeholders) . ')';
- break;
-
- case 'object':
- if ($raw = $this->buildRaw($value, $map))
- {
- $stack[] = $column . ' != ' . $raw;
- }
- break;
-
- case 'integer':
- case 'double':
- case 'boolean':
- case 'string':
- $stack[] = $column . ' != ' . $map_key;
- $map[ $map_key ] = $this->typeMap($value, $type);
- break;
- }
- }
- elseif ($operator === '~' || $operator === '!~')
- {
- if ($type !== 'array')
- {
- $value = [ $value ];
- }
-
- $connector = ' OR ';
- $data = array_values($value);
-
- if (is_array($data[ 0 ]))
- {
- if (isset($value[ 'AND' ]) || isset($value[ 'OR' ]))
- {
- $connector = ' ' . array_keys($value)[ 0 ] . ' ';
- $value = $data[ 0 ];
- }
- }
-
- $like_clauses = [];
-
- foreach ($value as $index => $item)
- {
- $item = strval($item);
-
- if (!preg_match('/(\[.+\]|[\*\?\!\%#^-_]|%.+|.+%)/', $item))
- {
- $item = '%' . $item . '%';
- }
-
- $like_clauses[] = $column . ($operator === '!~' ? ' NOT' : '') . ' LIKE ' . $map_key . 'L' . $index;
- $map[ $map_key . 'L' . $index ] = [$item, PDO::PARAM_STR];
- }
-
- $stack[] = '(' . implode($connector, $like_clauses) . ')';
- }
- elseif ($operator === '<>' || $operator === '><')
- {
- if ($type === 'array')
- {
- if ($operator === '><')
- {
- $column .= ' NOT';
- }
-
- $stack[] = '(' . $column . ' BETWEEN ' . $map_key . 'a AND ' . $map_key . 'b)';
-
- $data_type = (is_numeric($value[ 0 ]) && is_numeric($value[ 1 ])) ? PDO::PARAM_INT : PDO::PARAM_STR;
-
- $map[ $map_key . 'a' ] = [$value[ 0 ], $data_type];
- $map[ $map_key . 'b' ] = [$value[ 1 ], $data_type];
- }
- }
- elseif ($operator === 'REGEXP')
- {
- $stack[] = $column . ' REGEXP ' . $map_key;
- $map[ $map_key ] = [$value, PDO::PARAM_STR];
- }
- }
- else
- {
- switch ($type)
- {
- case 'NULL':
- $stack[] = $column . ' IS NULL';
- break;
-
- case 'array':
- $placeholders = [];
-
- foreach ($value as $index => $item)
- {
- $stack_key = $map_key . $index . '_i';
-
- $placeholders[] = $stack_key;
- $map[ $stack_key ] = $this->typeMap($item, gettype($item));
- }
-
- $stack[] = $column . ' IN (' . implode(', ', $placeholders) . ')';
- break;
-
- case 'object':
- if ($raw = $this->buildRaw($value, $map))
- {
- $stack[] = $column . ' = ' . $raw;
- }
- break;
-
- case 'integer':
- case 'double':
- case 'boolean':
- case 'string':
- $stack[] = $column . ' = ' . $map_key;
- $map[ $map_key ] = $this->typeMap($value, $type);
- break;
- }
- }
- }
- }
-
- return implode($conjunctor . ' ', $stack);
- }
-
- protected function whereClause($where, &$map)
- {
- $where_clause = '';
-
- if (is_array($where))
- {
- $where_keys = array_keys($where);
-
- $conditions = array_diff_key($where, array_flip(
- ['GROUP', 'ORDER', 'HAVING', 'LIMIT', 'LIKE', 'MATCH']
- ));
-
- if (!empty($conditions))
- {
- $where_clause = ' WHERE ' . $this->dataImplode($conditions, $map, ' AND');
- }
-
- if (isset($where[ 'MATCH' ]) && $this->type === 'mysql')
- {
- $MATCH = $where[ 'MATCH' ];
-
- if (is_array($MATCH) && isset($MATCH[ 'columns' ], $MATCH[ 'keyword' ]))
- {
- $mode = '';
-
- $mode_array = [
- 'natural' => 'IN NATURAL LANGUAGE MODE',
- 'natural+query' => 'IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION',
- 'boolean' => 'IN BOOLEAN MODE',
- 'query' => 'WITH QUERY EXPANSION'
- ];
-
- if (isset($MATCH[ 'mode' ], $mode_array[ $MATCH[ 'mode' ] ]))
- {
- $mode = ' ' . $mode_array[ $MATCH[ 'mode' ] ];
- }
-
- $columns = implode(', ', array_map([$this, 'columnQuote'], $MATCH[ 'columns' ]));
- $map_key = $this->mapKey();
- $map[ $map_key ] = [$MATCH[ 'keyword' ], PDO::PARAM_STR];
-
- $where_clause .= ($where_clause !== '' ? ' AND ' : ' WHERE') . ' MATCH (' . $columns . ') AGAINST (' . $map_key . $mode . ')';
- }
- }
-
- if (isset($where[ 'GROUP' ]))
- {
- $GROUP = $where[ 'GROUP' ];
-
- if (is_array($GROUP))
- {
- $stack = [];
-
- foreach ($GROUP as $column => $value)
- {
- $stack[] = $this->columnQuote($value);
- }
-
- $where_clause .= ' GROUP BY ' . implode(',', $stack);
- }
- elseif ($raw = $this->buildRaw($GROUP, $map))
- {
- $where_clause .= ' GROUP BY ' . $raw;
- }
- else
- {
- $where_clause .= ' GROUP BY ' . $this->columnQuote($GROUP);
- }
-
- if (isset($where[ 'HAVING' ]))
- {
- if ($raw = $this->buildRaw($where[ 'HAVING' ], $map))
- {
- $where_clause .= ' HAVING ' . $raw;
- }
- else
- {
- $where_clause .= ' HAVING ' . $this->dataImplode($where[ 'HAVING' ], $map, ' AND');
- }
- }
- }
-
- if (isset($where[ 'ORDER' ]))
- {
- $ORDER = $where[ 'ORDER' ];
-
- if (is_array($ORDER))
- {
- $stack = [];
-
- foreach ($ORDER as $column => $value)
- {
- if (is_array($value))
- {
- $stack[] = 'FIELD(' . $this->columnQuote($column) . ', ' . $this->arrayQuote($value) . ')';
- }
- elseif ($value === 'ASC' || $value === 'DESC')
- {
- $stack[] = $this->columnQuote($column) . ' ' . $value;
- }
- elseif (is_int($column))
- {
- $stack[] = $this->columnQuote($value);
- }
- }
-
- $where_clause .= ' ORDER BY ' . implode(',', $stack);
- }
- elseif ($raw = $this->buildRaw($ORDER, $map))
- {
- $where_clause .= ' ORDER BY ' . $raw;
- }
- else
- {
- $where_clause .= ' ORDER BY ' . $this->columnQuote($ORDER);
- }
-
- if (
- isset($where[ 'LIMIT' ]) &&
- in_array($this->type, ['oracle', 'mssql'])
- )
- {
- $LIMIT = $where[ 'LIMIT' ];
-
- if (is_numeric($LIMIT))
- {
- $LIMIT = [0, $LIMIT];
- }
-
- if (
- is_array($LIMIT) &&
- is_numeric($LIMIT[ 0 ]) &&
- is_numeric($LIMIT[ 1 ])
- )
- {
- $where_clause .= ' OFFSET ' . $LIMIT[ 0 ] . ' ROWS FETCH NEXT ' . $LIMIT[ 1 ] . ' ROWS ONLY';
- }
- }
- }
-
- if (isset($where[ 'LIMIT' ]) && !in_array($this->type, ['oracle', 'mssql']))
- {
- $LIMIT = $where[ 'LIMIT' ];
-
- if (is_numeric($LIMIT))
- {
- $where_clause .= ' LIMIT ' . $LIMIT;
- }
- elseif (
- is_array($LIMIT) &&
- is_numeric($LIMIT[ 0 ]) &&
- is_numeric($LIMIT[ 1 ])
- )
- {
- $where_clause .= ' LIMIT ' . $LIMIT[ 1 ] . ' OFFSET ' . $LIMIT[ 0 ];
- }
- }
- }
- elseif ($raw = $this->buildRaw($where, $map))
- {
- $where_clause .= ' ' . $raw;
- }
-
- return $where_clause;
- }
-
- protected function selectContext($table, &$map, $join, &$columns = null, $where = null, $column_fn = null)
- {
- preg_match('/(?[a-zA-Z0-9_]+)\s*\((?[a-zA-Z0-9_]+)\)/i', $table, $table_match);
-
- if (isset($table_match[ 'table' ], $table_match[ 'alias' ]))
- {
- $table = $this->tableQuote($table_match[ 'table' ]);
-
- $table_query = $table . ' AS ' . $this->tableQuote($table_match[ 'alias' ]);
- }
- else
- {
- $table = $this->tableQuote($table);
-
- $table_query = $table;
- }
-
- $is_join = false;
- $join_key = is_array($join) ? array_keys($join) : null;
-
- if (
- isset($join_key[ 0 ]) &&
- strpos($join_key[ 0 ], '[') === 0
- )
- {
- $is_join = true;
- $table_query .= ' ' . $this->buildJoin($table, $join);
- }
- else
- {
- if (is_null($columns))
- {
- if (
- !is_null($where) ||
- (is_array($join) && isset($column_fn))
- )
- {
- $where = $join;
- $columns = null;
- }
- else
- {
- $where = null;
- $columns = $join;
- }
- }
- else
- {
- $where = $columns;
- $columns = $join;
- }
- }
-
- if (isset($column_fn))
- {
- if ($column_fn === 1)
- {
- $column = '1';
-
- if (is_null($where))
- {
- $where = $columns;
- }
- }
- elseif ($raw = $this->buildRaw($column_fn, $map))
- {
- $column = $raw;
- }
- else
- {
- if (empty($columns) || $this->isRaw($columns))
- {
- $columns = '*';
- $where = $join;
- }
-
- $column = $column_fn . '(' . $this->columnPush($columns, $map, true) . ')';
- }
- }
- else
- {
- $column = $this->columnPush($columns, $map, true, $is_join);
- }
-
- return 'SELECT ' . $column . ' FROM ' . $table_query . $this->whereClause($where, $map);
- }
-
- protected function buildJoin($table, $join)
- {
- $table_join = [];
-
- $join_array = [
- '>' => 'LEFT',
- '<' => 'RIGHT',
- '<>' => 'FULL',
- '><' => 'INNER'
- ];
-
- foreach($join as $sub_table => $relation)
- {
- preg_match('/(\[(?\<\>?|\>\)\])?(?[a-zA-Z0-9_]+)\s?(\((?[a-zA-Z0-9_]+)\))?/', $sub_table, $match);
-
- if ($match[ 'join' ] !== '' && $match[ 'table' ] !== '')
- {
- if (is_string($relation))
- {
- $relation = 'USING ("' . $relation . '")';
- }
-
- if (is_array($relation))
- {
- // For ['column1', 'column2']
- if (isset($relation[ 0 ]))
- {
- $relation = 'USING ("' . implode('", "', $relation) . '")';
- }
- else
- {
- $joins = [];
-
- foreach ($relation as $key => $value)
- {
- $joins[] = (
- strpos($key, '.') > 0 ?
- // For ['tableB.column' => 'column']
- $this->columnQuote($key) :
-
- // For ['column1' => 'column2']
- $table . '."' . $key . '"'
- ) .
- ' = ' .
- $this->tableQuote(isset($match[ 'alias' ]) ? $match[ 'alias' ] : $match[ 'table' ]) . '."' . $value . '"';
- }
-
- $relation = 'ON ' . implode(' AND ', $joins);
- }
- }
-
- $table_name = $this->tableQuote($match[ 'table' ]) . ' ';
-
- if (isset($match[ 'alias' ]))
- {
- $table_name .= 'AS ' . $this->tableQuote($match[ 'alias' ]) . ' ';
- }
-
- $table_join[] = $join_array[ $match[ 'join' ] ] . ' JOIN ' . $table_name . $relation;
- }
- }
-
- return implode(' ', $table_join);
- }
-
- protected function columnMap($columns, &$stack, $root)
- {
- if ($columns === '*')
- {
- return $stack;
- }
-
- foreach ($columns as $key => $value)
- {
- if (is_int($key))
- {
- preg_match('/([a-zA-Z0-9_]+\.)?(?[a-zA-Z0-9_]+)(?:\s*\((?[a-zA-Z0-9_]+)\))?(?:\s*\[(?(?:String|Bool|Int|Number|Object|JSON))\])?/i', $value, $key_match);
-
- $column_key = !empty($key_match[ 'alias' ]) ?
- $key_match[ 'alias' ] :
- $key_match[ 'column' ];
-
- if (isset($key_match[ 'type' ]))
- {
- $stack[ $value ] = [$column_key, $key_match[ 'type' ]];
- }
- else
- {
- $stack[ $value ] = [$column_key, 'String'];
- }
- }
- elseif ($this->isRaw($value))
- {
- preg_match('/([a-zA-Z0-9_]+\.)?(?[a-zA-Z0-9_]+)(\s*\[(?(String|Bool|Int|Number))\])?/i', $key, $key_match);
-
- $column_key = $key_match[ 'column' ];
-
- if (isset($key_match[ 'type' ]))
- {
- $stack[ $key ] = [$column_key, $key_match[ 'type' ]];
- }
- else
- {
- $stack[ $key ] = [$column_key, 'String'];
- }
- }
- elseif (!is_int($key) && is_array($value))
- {
- if ($root && count(array_keys($columns)) === 1)
- {
- $stack[ $key ] = [$key, 'String'];
- }
-
- $this->columnMap($value, $stack, false);
- }
- }
-
- return $stack;
- }
-
- protected function dataMap($data, $columns, $column_map, &$stack, $root, &$result)
- {
- if ($root)
- {
- $columns_key = array_keys($columns);
-
- if (count($columns_key) === 1 && is_array($columns[$columns_key[0]]))
- {
- $index_key = array_keys($columns)[0];
- $data_key = preg_replace("/^[a-zA-Z0-9_]+\./i", "", $index_key);
-
- $current_stack = [];
-
- foreach ($data as $item)
- {
- $this->dataMap($data, $columns[ $index_key ], $column_map, $current_stack, false, $result);
-
- $index = $data[ $data_key ];
-
- $result[ $index ] = $current_stack;
- }
- }
- else
- {
- $current_stack = [];
-
- $this->dataMap($data, $columns, $column_map, $current_stack, false, $result);
-
- $result[] = $current_stack;
- }
-
- return;
- }
-
- foreach ($columns as $key => $value)
- {
- $isRaw = $this->isRaw($value);
-
- if (is_int($key) || $isRaw)
- {
- $map = $column_map[ $isRaw ? $key : $value ];
-
- $column_key = $map[ 0 ];
-
- $item = $data[ $column_key ];
-
- if (isset($map[ 1 ]))
- {
- if ($isRaw && in_array($map[ 1 ], ['Object', 'JSON']))
- {
- continue;
- }
-
- if (is_null($item))
- {
- $stack[ $column_key ] = null;
- continue;
- }
-
- switch ($map[ 1 ])
- {
- case 'Number':
- $stack[ $column_key ] = (double) $item;
- break;
-
- case 'Int':
- $stack[ $column_key ] = (int) $item;
- break;
-
- case 'Bool':
- $stack[ $column_key ] = (bool) $item;
- break;
-
- case 'Object':
- $stack[ $column_key ] = unserialize($item);
- break;
-
- case 'JSON':
- $stack[ $column_key ] = json_decode($item, true);
- break;
-
- case 'String':
- $stack[ $column_key ] = $item;
- break;
- }
- }
- else
- {
- $stack[ $column_key ] = $item;
- }
- }
- else
- {
- $current_stack = [];
-
- $this->dataMap($data, $value, $column_map, $current_stack, false, $result);
-
- $stack[ $key ] = $current_stack;
- }
- }
- }
-
- public function create($table, $columns, $options = null)
- {
- $stack = [];
-
- $tableName = $this->prefix . $table;
-
- foreach ($columns as $name => $definition)
- {
- if (is_int($name))
- {
- $stack[] = preg_replace('/\<([a-zA-Z0-9_]+)\>/i', '"$1"', $definition);
- }
- elseif (is_array($definition))
- {
- $stack[] = $name . ' ' . implode(' ', $definition);
- }
- elseif (is_string($definition))
- {
- $stack[] = $name . ' ' . $this->query($definition);
- }
- }
-
- $table_option = '';
-
- if (is_array($options))
- {
- $option_stack = [];
-
- foreach ($options as $key => $value)
- {
- if (is_string($value) || is_int($value))
- {
- $option_stack[] = "$key = $value";
- }
- }
-
- $table_option = ' ' . implode(', ', $option_stack);
- }
- elseif (is_string($options))
- {
- $table_option = ' ' . $options;
- }
-
- return $this->exec("CREATE TABLE IF NOT EXISTS $tableName (" . implode(', ', $stack) . ")$table_option");
- }
-
- public function drop($table)
- {
- $tableName = $this->prefix . $table;
-
- return $this->exec("DROP TABLE IF EXISTS $tableName");
- }
-
- public function select($table, $join, $columns = null, $where = null)
- {
- $map = [];
- $result = [];
- $column_map = [];
-
- $index = 0;
-
- $column = $where === null ? $join : $columns;
-
- $is_single = (is_string($column) && $column !== '*');
-
- $query = $this->exec($this->selectContext($table, $map, $join, $columns, $where), $map);
-
- $this->columnMap($columns, $column_map, true);
-
- if (!$this->statement)
- {
- return false;
- }
-
- if ($columns === '*')
- {
- return $query->fetchAll(PDO::FETCH_ASSOC);
- }
-
- while ($data = $query->fetch(PDO::FETCH_ASSOC))
- {
- $current_stack = [];
-
- $this->dataMap($data, $columns, $column_map, $current_stack, true, $result);
- }
-
- if ($is_single)
- {
- $single_result = [];
- $result_key = $column_map[ $column ][ 0 ];
-
- foreach ($result as $item)
- {
- $single_result[] = $item[ $result_key ];
- }
-
- return $single_result;
- }
-
- return $result;
- }
-
- public function insert($table, $datas)
- {
- $stack = [];
- $columns = [];
- $fields = [];
- $map = [];
-
- if (!isset($datas[ 0 ]))
- {
- $datas = [$datas];
- }
-
- foreach ($datas as $data)
- {
- foreach ($data as $key => $value)
- {
- $columns[] = $key;
- }
- }
-
- $columns = array_unique($columns);
-
- foreach ($datas as $data)
- {
- $values = [];
-
- foreach ($columns as $key)
- {
- if ($raw = $this->buildRaw($data[ $key ], $map))
- {
- $values[] = $raw;
- continue;
- }
-
- $map_key = $this->mapKey();
-
- $values[] = $map_key;
-
- if (!isset($data[ $key ]))
- {
- $map[ $map_key ] = [null, PDO::PARAM_NULL];
- }
- else
- {
- $value = $data[ $key ];
-
- $type = gettype($value);
-
- switch ($type)
- {
- case 'array':
- $map[ $map_key ] = [
- strpos($key, '[JSON]') === strlen($key) - 6 ?
- json_encode($value) :
- serialize($value),
- PDO::PARAM_STR
- ];
- break;
-
- case 'object':
- $value = serialize($value);
-
- case 'NULL':
- case 'resource':
- case 'boolean':
- case 'integer':
- case 'double':
- case 'string':
- $map[ $map_key ] = $this->typeMap($value, $type);
- break;
- }
- }
- }
-
- $stack[] = '(' . implode(', ', $values) . ')';
- }
-
- foreach ($columns as $key)
- {
- $fields[] = $this->columnQuote(preg_replace("/(\s*\[JSON\]$)/i", '', $key));
- }
-
- return $this->exec('INSERT INTO ' . $this->tableQuote($table) . ' (' . implode(', ', $fields) . ') VALUES ' . implode(', ', $stack), $map);
- }
-
- public function update($table, $data, $where = null)
- {
- $fields = [];
- $map = [];
-
- foreach ($data as $key => $value)
- {
- $column = $this->columnQuote(preg_replace("/(\s*\[(JSON|\+|\-|\*|\/)\]$)/i", '', $key));
-
- if ($raw = $this->buildRaw($value, $map))
- {
- $fields[] = $column . ' = ' . $raw;
- continue;
- }
-
- $map_key = $this->mapKey();
-
- preg_match('/(?[a-zA-Z0-9_]+)(\[(?\+|\-|\*|\/)\])?/i', $key, $match);
-
- if (isset($match[ 'operator' ]))
- {
- if (is_numeric($value))
- {
- $fields[] = $column . ' = ' . $column . ' ' . $match[ 'operator' ] . ' ' . $value;
- }
- }
- else
- {
- $fields[] = $column . ' = ' . $map_key;
-
- $type = gettype($value);
-
- switch ($type)
- {
- case 'array':
- $map[ $map_key ] = [
- strpos($key, '[JSON]') === strlen($key) - 6 ?
- json_encode($value) :
- serialize($value),
- PDO::PARAM_STR
- ];
- break;
-
- case 'object':
- $value = serialize($value);
-
- case 'NULL':
- case 'resource':
- case 'boolean':
- case 'integer':
- case 'double':
- case 'string':
- $map[ $map_key ] = $this->typeMap($value, $type);
- break;
- }
- }
- }
-
- return $this->exec('UPDATE ' . $this->tableQuote($table) . ' SET ' . implode(', ', $fields) . $this->whereClause($where, $map), $map);
- }
-
- public function delete($table, $where)
- {
- $map = [];
-
- return $this->exec('DELETE FROM ' . $this->tableQuote($table) . $this->whereClause($where, $map), $map);
- }
-
- public function replace($table, $columns, $where = null)
- {
- if (!is_array($columns) || empty($columns))
- {
- return false;
- }
-
- $map = [];
- $stack = [];
-
- foreach ($columns as $column => $replacements)
- {
- if (is_array($replacements))
- {
- foreach ($replacements as $old => $new)
- {
- $map_key = $this->mapKey();
-
- $stack[] = $this->columnQuote($column) . ' = REPLACE(' . $this->columnQuote($column) . ', ' . $map_key . 'a, ' . $map_key . 'b)';
-
- $map[ $map_key . 'a' ] = [$old, PDO::PARAM_STR];
- $map[ $map_key . 'b' ] = [$new, PDO::PARAM_STR];
- }
- }
- }
-
- if (!empty($stack))
- {
- return $this->exec('UPDATE ' . $this->tableQuote($table) . ' SET ' . implode(', ', $stack) . $this->whereClause($where, $map), $map);
- }
-
- return false;
- }
-
- public function get($table, $join = null, $columns = null, $where = null)
- {
- $map = [];
- $result = [];
- $column_map = [];
- $current_stack = [];
-
- if ($where === null)
- {
- $column = $join;
- unset($columns[ 'LIMIT' ]);
- }
- else
- {
- $column = $columns;
- unset($where[ 'LIMIT' ]);
- }
-
- $is_single = (is_string($column) && $column !== '*');
-
- $query = $this->exec($this->selectContext($table, $map, $join, $columns, $where) . ' LIMIT 1', $map);
-
- if (!$this->statement)
- {
- return false;
- }
-
- $data = $query->fetchAll(PDO::FETCH_ASSOC);
-
- if (isset($data[ 0 ]))
- {
- if ($column === '*')
- {
- return $data[ 0 ];
- }
-
- $this->columnMap($columns, $column_map, true);
-
- $this->dataMap($data[ 0 ], $columns, $column_map, $current_stack, true, $result);
-
- if ($is_single)
- {
- return $result[ 0 ][ $column_map[ $column ][ 0 ] ];
- }
-
- return $result[ 0 ];
- }
- }
-
- public function has($table, $join, $where = null)
- {
- $map = [];
- $column = null;
-
- if ($this->type === 'mssql')
- {
- $query = $this->exec($this->selectContext($table, $map, $join, $column, $where, Medoo::raw('TOP 1 1')), $map);
- }
- else
- {
- $query = $this->exec('SELECT EXISTS(' . $this->selectContext($table, $map, $join, $column, $where, 1) . ')', $map);
- }
-
- if (!$this->statement)
- {
- return false;
- }
-
- $result = $query->fetchColumn();
-
- return $result === '1' || $result === 1 || $result === true;
- }
-
- public function rand($table, $join = null, $columns = null, $where = null)
- {
- $type = $this->type;
-
- $order = 'RANDOM()';
-
- if ($type === 'mysql')
- {
- $order = 'RAND()';
- }
- elseif ($type === 'mssql')
- {
- $order = 'NEWID()';
- }
-
- $order_raw = $this->raw($order);
-
- if ($where === null)
- {
- if ($columns === null)
- {
- $columns = [
- 'ORDER' => $order_raw
- ];
- }
- else
- {
- $column = $join;
- unset($columns[ 'ORDER' ]);
-
- $columns[ 'ORDER' ] = $order_raw;
- }
- }
- else
- {
- unset($where[ 'ORDER' ]);
-
- $where[ 'ORDER' ] = $order_raw;
- }
-
- return $this->select($table, $join, $columns, $where);
- }
-
- private function aggregate($type, $table, $join = null, $column = null, $where = null)
- {
- $map = [];
-
- $query = $this->exec($this->selectContext($table, $map, $join, $column, $where, strtoupper($type)), $map);
-
- if (!$this->statement)
- {
- return false;
- }
-
- $number = $query->fetchColumn();
-
- return is_numeric($number) ? $number + 0 : $number;
- }
-
- public function count($table, $join = null, $column = null, $where = null)
- {
- return $this->aggregate('count', $table, $join, $column, $where);
- }
-
- public function avg($table, $join, $column = null, $where = null)
- {
- return $this->aggregate('avg', $table, $join, $column, $where);
- }
-
- public function max($table, $join, $column = null, $where = null)
- {
- return $this->aggregate('max', $table, $join, $column, $where);
- }
-
- public function min($table, $join, $column = null, $where = null)
- {
- return $this->aggregate('min', $table, $join, $column, $where);
- }
-
- public function sum($table, $join, $column = null, $where = null)
- {
- return $this->aggregate('sum', $table, $join, $column, $where);
- }
-
- public function action($actions)
- {
- if (is_callable($actions))
- {
- $this->pdo->beginTransaction();
-
- try {
- $result = $actions($this);
-
- if ($result === false)
- {
- $this->pdo->rollBack();
- }
- else
- {
- $this->pdo->commit();
- }
- }
- catch (Exception $e) {
- $this->pdo->rollBack();
-
- throw $e;
- }
-
- return $result;
- }
-
- return false;
- }
-
- public function id()
- {
- if ($this->statement == null)
- {
- return null;
- }
-
- $type = $this->type;
-
- if ($type === 'oracle')
- {
- return 0;
- }
- elseif ($type === 'pgsql')
- {
- return $this->pdo->query('SELECT LASTVAL()')->fetchColumn();
- }
-
- $lastId = $this->pdo->lastInsertId();
-
- if ($lastId != "0" && $lastId != "")
- {
- return $lastId;
- }
-
- return null;
- }
-
- public function debug()
- {
- $this->debug_mode = true;
-
- return $this;
- }
-
- public function error()
- {
- return $this->errorInfo;
- }
-
- public function last()
- {
- $log = end($this->logs);
-
- return $this->generate($log[ 0 ], $log[ 1 ]);
- }
-
- public function log()
- {
- return array_map(function ($log)
- {
- return $this->generate($log[ 0 ], $log[ 1 ]);
- },
- $this->logs
- );
- }
-
- public function info()
- {
- $output = [
- 'server' => 'SERVER_INFO',
- 'driver' => 'DRIVER_NAME',
- 'client' => 'CLIENT_VERSION',
- 'version' => 'SERVER_VERSION',
- 'connection' => 'CONNECTION_STATUS'
- ];
-
- foreach ($output as $key => $value)
- {
- $output[ $key ] = @$this->pdo->getAttribute(constant('PDO::ATTR_' . $value));
- }
-
- $output[ 'dsn' ] = $this->dsn;
-
- return $output;
- }
-}
\ No newline at end of file
diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php
deleted file mode 100644
index 1a58957d..00000000
--- a/vendor/composer/ClassLoader.php
+++ /dev/null
@@ -1,445 +0,0 @@
-
- * Jordi Boggiano
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Composer\Autoload;
-
-/**
- * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
- *
- * $loader = new \Composer\Autoload\ClassLoader();
- *
- * // register classes with namespaces
- * $loader->add('Symfony\Component', __DIR__.'/component');
- * $loader->add('Symfony', __DIR__.'/framework');
- *
- * // activate the autoloader
- * $loader->register();
- *
- * // to enable searching the include path (eg. for PEAR packages)
- * $loader->setUseIncludePath(true);
- *
- * In this example, if you try to use a class in the Symfony\Component
- * namespace or one of its children (Symfony\Component\Console for instance),
- * the autoloader will first look for the class under the component/
- * directory, and it will then fallback to the framework/ directory if not
- * found before giving up.
- *
- * This class is loosely based on the Symfony UniversalClassLoader.
- *
- * @author Fabien Potencier
- * @author Jordi Boggiano
- * @see https://www.php-fig.org/psr/psr-0/
- * @see https://www.php-fig.org/psr/psr-4/
- */
-class ClassLoader
-{
- // PSR-4
- private $prefixLengthsPsr4 = array();
- private $prefixDirsPsr4 = array();
- private $fallbackDirsPsr4 = array();
-
- // PSR-0
- private $prefixesPsr0 = array();
- private $fallbackDirsPsr0 = array();
-
- private $useIncludePath = false;
- private $classMap = array();
- private $classMapAuthoritative = false;
- private $missingClasses = array();
- private $apcuPrefix;
-
- public function getPrefixes()
- {
- if (!empty($this->prefixesPsr0)) {
- return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
- }
-
- return array();
- }
-
- public function getPrefixesPsr4()
- {
- return $this->prefixDirsPsr4;
- }
-
- public function getFallbackDirs()
- {
- return $this->fallbackDirsPsr0;
- }
-
- public function getFallbackDirsPsr4()
- {
- return $this->fallbackDirsPsr4;
- }
-
- public function getClassMap()
- {
- return $this->classMap;
- }
-
- /**
- * @param array $classMap Class to filename map
- */
- public function addClassMap(array $classMap)
- {
- if ($this->classMap) {
- $this->classMap = array_merge($this->classMap, $classMap);
- } else {
- $this->classMap = $classMap;
- }
- }
-
- /**
- * Registers a set of PSR-0 directories for a given prefix, either
- * appending or prepending to the ones previously set for this prefix.
- *
- * @param string $prefix The prefix
- * @param array|string $paths The PSR-0 root directories
- * @param bool $prepend Whether to prepend the directories
- */
- public function add($prefix, $paths, $prepend = false)
- {
- if (!$prefix) {
- if ($prepend) {
- $this->fallbackDirsPsr0 = array_merge(
- (array) $paths,
- $this->fallbackDirsPsr0
- );
- } else {
- $this->fallbackDirsPsr0 = array_merge(
- $this->fallbackDirsPsr0,
- (array) $paths
- );
- }
-
- return;
- }
-
- $first = $prefix[0];
- if (!isset($this->prefixesPsr0[$first][$prefix])) {
- $this->prefixesPsr0[$first][$prefix] = (array) $paths;
-
- return;
- }
- if ($prepend) {
- $this->prefixesPsr0[$first][$prefix] = array_merge(
- (array) $paths,
- $this->prefixesPsr0[$first][$prefix]
- );
- } else {
- $this->prefixesPsr0[$first][$prefix] = array_merge(
- $this->prefixesPsr0[$first][$prefix],
- (array) $paths
- );
- }
- }
-
- /**
- * Registers a set of PSR-4 directories for a given namespace, either
- * appending or prepending to the ones previously set for this namespace.
- *
- * @param string $prefix The prefix/namespace, with trailing '\\'
- * @param array|string $paths The PSR-4 base directories
- * @param bool $prepend Whether to prepend the directories
- *
- * @throws \InvalidArgumentException
- */
- public function addPsr4($prefix, $paths, $prepend = false)
- {
- if (!$prefix) {
- // Register directories for the root namespace.
- if ($prepend) {
- $this->fallbackDirsPsr4 = array_merge(
- (array) $paths,
- $this->fallbackDirsPsr4
- );
- } else {
- $this->fallbackDirsPsr4 = array_merge(
- $this->fallbackDirsPsr4,
- (array) $paths
- );
- }
- } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
- // Register directories for a new namespace.
- $length = strlen($prefix);
- if ('\\' !== $prefix[$length - 1]) {
- throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
- }
- $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
- $this->prefixDirsPsr4[$prefix] = (array) $paths;
- } elseif ($prepend) {
- // Prepend directories for an already registered namespace.
- $this->prefixDirsPsr4[$prefix] = array_merge(
- (array) $paths,
- $this->prefixDirsPsr4[$prefix]
- );
- } else {
- // Append directories for an already registered namespace.
- $this->prefixDirsPsr4[$prefix] = array_merge(
- $this->prefixDirsPsr4[$prefix],
- (array) $paths
- );
- }
- }
-
- /**
- * Registers a set of PSR-0 directories for a given prefix,
- * replacing any others previously set for this prefix.
- *
- * @param string $prefix The prefix
- * @param array|string $paths The PSR-0 base directories
- */
- public function set($prefix, $paths)
- {
- if (!$prefix) {
- $this->fallbackDirsPsr0 = (array) $paths;
- } else {
- $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
- }
- }
-
- /**
- * Registers a set of PSR-4 directories for a given namespace,
- * replacing any others previously set for this namespace.
- *
- * @param string $prefix The prefix/namespace, with trailing '\\'
- * @param array|string $paths The PSR-4 base directories
- *
- * @throws \InvalidArgumentException
- */
- public function setPsr4($prefix, $paths)
- {
- if (!$prefix) {
- $this->fallbackDirsPsr4 = (array) $paths;
- } else {
- $length = strlen($prefix);
- if ('\\' !== $prefix[$length - 1]) {
- throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
- }
- $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
- $this->prefixDirsPsr4[$prefix] = (array) $paths;
- }
- }
-
- /**
- * Turns on searching the include path for class files.
- *
- * @param bool $useIncludePath
- */
- public function setUseIncludePath($useIncludePath)
- {
- $this->useIncludePath = $useIncludePath;
- }
-
- /**
- * Can be used to check if the autoloader uses the include path to check
- * for classes.
- *
- * @return bool
- */
- public function getUseIncludePath()
- {
- return $this->useIncludePath;
- }
-
- /**
- * Turns off searching the prefix and fallback directories for classes
- * that have not been registered with the class map.
- *
- * @param bool $classMapAuthoritative
- */
- public function setClassMapAuthoritative($classMapAuthoritative)
- {
- $this->classMapAuthoritative = $classMapAuthoritative;
- }
-
- /**
- * Should class lookup fail if not found in the current class map?
- *
- * @return bool
- */
- public function isClassMapAuthoritative()
- {
- return $this->classMapAuthoritative;
- }
-
- /**
- * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
- *
- * @param string|null $apcuPrefix
- */
- public function setApcuPrefix($apcuPrefix)
- {
- $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
- }
-
- /**
- * The APCu prefix in use, or null if APCu caching is not enabled.
- *
- * @return string|null
- */
- public function getApcuPrefix()
- {
- return $this->apcuPrefix;
- }
-
- /**
- * Registers this instance as an autoloader.
- *
- * @param bool $prepend Whether to prepend the autoloader or not
- */
- public function register($prepend = false)
- {
- spl_autoload_register(array($this, 'loadClass'), true, $prepend);
- }
-
- /**
- * Unregisters this instance as an autoloader.
- */
- public function unregister()
- {
- spl_autoload_unregister(array($this, 'loadClass'));
- }
-
- /**
- * Loads the given class or interface.
- *
- * @param string $class The name of the class
- * @return bool|null True if loaded, null otherwise
- */
- public function loadClass($class)
- {
- if ($file = $this->findFile($class)) {
- includeFile($file);
-
- return true;
- }
- }
-
- /**
- * Finds the path to the file where the class is defined.
- *
- * @param string $class The name of the class
- *
- * @return string|false The path if found, false otherwise
- */
- public function findFile($class)
- {
- // class map lookup
- if (isset($this->classMap[$class])) {
- return $this->classMap[$class];
- }
- if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
- return false;
- }
- if (null !== $this->apcuPrefix) {
- $file = apcu_fetch($this->apcuPrefix.$class, $hit);
- if ($hit) {
- return $file;
- }
- }
-
- $file = $this->findFileWithExtension($class, '.php');
-
- // Search for Hack files if we are running on HHVM
- if (false === $file && defined('HHVM_VERSION')) {
- $file = $this->findFileWithExtension($class, '.hh');
- }
-
- if (null !== $this->apcuPrefix) {
- apcu_add($this->apcuPrefix.$class, $file);
- }
-
- if (false === $file) {
- // Remember that this class does not exist.
- $this->missingClasses[$class] = true;
- }
-
- return $file;
- }
-
- private function findFileWithExtension($class, $ext)
- {
- // PSR-4 lookup
- $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
-
- $first = $class[0];
- if (isset($this->prefixLengthsPsr4[$first])) {
- $subPath = $class;
- while (false !== $lastPos = strrpos($subPath, '\\')) {
- $subPath = substr($subPath, 0, $lastPos);
- $search = $subPath . '\\';
- if (isset($this->prefixDirsPsr4[$search])) {
- $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
- foreach ($this->prefixDirsPsr4[$search] as $dir) {
- if (file_exists($file = $dir . $pathEnd)) {
- return $file;
- }
- }
- }
- }
- }
-
- // PSR-4 fallback dirs
- foreach ($this->fallbackDirsPsr4 as $dir) {
- if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
- return $file;
- }
- }
-
- // PSR-0 lookup
- if (false !== $pos = strrpos($class, '\\')) {
- // namespaced class name
- $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
- . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
- } else {
- // PEAR-like class name
- $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
- }
-
- if (isset($this->prefixesPsr0[$first])) {
- foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
- if (0 === strpos($class, $prefix)) {
- foreach ($dirs as $dir) {
- if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
- return $file;
- }
- }
- }
- }
- }
-
- // PSR-0 fallback dirs
- foreach ($this->fallbackDirsPsr0 as $dir) {
- if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
- return $file;
- }
- }
-
- // PSR-0 include paths.
- if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
- return $file;
- }
-
- return false;
- }
-}
-
-/**
- * Scope isolated include.
- *
- * Prevents access to $this/self from included files.
- */
-function includeFile($file)
-{
- include $file;
-}
diff --git a/vendor/composer/InstalledVersions.php b/vendor/composer/InstalledVersions.php
deleted file mode 100644
index 7143c34b..00000000
--- a/vendor/composer/InstalledVersions.php
+++ /dev/null
@@ -1,1098 +0,0 @@
-
- array (
- 'pretty_version' => 'dev-master',
- 'version' => 'dev-master',
- 'aliases' =>
- array (
- ),
- 'reference' => '956ad4f4081556d693d346b48b4342c51c397952',
- 'name' => 'sammo-hid/sammo',
- ),
- 'versions' =>
- array (
- 'brandonwamboldt/utilphp' =>
- array (
- 'pretty_version' => '1.1.0',
- 'version' => '1.1.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '36c32efc4f0679c05163464a550f45c8d83fe683',
- ),
- 'catfan/medoo' =>
- array (
- 'pretty_version' => 'v1.7.10',
- 'version' => '1.7.10.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '2d675f73e23f63bbaeb9a8aa33318659a3d3c32f',
- ),
- 'composer/semver' =>
- array (
- 'pretty_version' => '3.2.6',
- 'version' => '3.2.6.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '83e511e247de329283478496f7a1e114c9517506',
- ),
- 'composer/xdebug-handler' =>
- array (
- 'pretty_version' => '2.0.2',
- 'version' => '2.0.2.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '84674dd3a7575ba617f5a76d7e9e29a7d3891339',
- ),
- 'doctrine/inflector' =>
- array (
- 'pretty_version' => '2.0.4',
- 'version' => '2.0.4.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89',
- ),
- 'doctrine/instantiator' =>
- array (
- 'pretty_version' => '1.4.0',
- 'version' => '1.4.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'd56bf6102915de5702778fe20f2de3b2fe570b5b',
- ),
- 'erusev/parsedown' =>
- array (
- 'pretty_version' => '1.7.4',
- 'version' => '1.7.4.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'cb17b6477dfff935958ba01325f2e8a2bfa6dab3',
- ),
- 'erusev/parsedown-extra' =>
- array (
- 'pretty_version' => '0.8.1',
- 'version' => '0.8.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '91ac3ff98f0cea243bdccc688df43810f044dcef',
- ),
- 'ezyang/htmlpurifier' =>
- array (
- 'pretty_version' => 'v4.13.0',
- 'version' => '4.13.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '08e27c97e4c6ed02f37c5b2b20488046c8d90d75',
- ),
- 'felixfbecker/advanced-json-rpc' =>
- array (
- 'pretty_version' => 'v3.2.1',
- 'version' => '3.2.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'b5f37dbff9a8ad360ca341f3240dc1c168b45447',
- ),
- 'firephp/firephp-core' =>
- array (
- 'pretty_version' => 'v0.4.0',
- 'version' => '0.4.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'fabad0f2503f9577fe8dd2cb1d1c7cd73ed2aacf',
- ),
- 'guzzlehttp/guzzle' =>
- array (
- 'pretty_version' => '6.5.5',
- 'version' => '6.5.5.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '9d4290de1cfd701f38099ef7e183b64b4b7b0c5e',
- ),
- 'guzzlehttp/promises' =>
- array (
- 'pretty_version' => '1.5.1',
- 'version' => '1.5.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'fe752aedc9fd8fcca3fe7ad05d419d32998a06da',
- ),
- 'guzzlehttp/psr7' =>
- array (
- 'pretty_version' => '1.8.3',
- 'version' => '1.8.3.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '1afdd860a2566ed3c2b0b4a3de6e23434a79ec85',
- ),
- 'illuminate/bus' =>
- array (
- 'pretty_version' => 'v8.69.0',
- 'version' => '8.69.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'be400399687b97d5558a224e970060fd5d5f2735',
- ),
- 'illuminate/collections' =>
- array (
- 'pretty_version' => 'v8.69.0',
- 'version' => '8.69.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '05f286ec5fd2dd286e8384577047efc375c8954c',
- ),
- 'illuminate/container' =>
- array (
- 'pretty_version' => 'v8.69.0',
- 'version' => '8.69.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'ef73feb5216ef97ab7023cf59c0c8dbbd5505a9d',
- ),
- 'illuminate/contracts' =>
- array (
- 'pretty_version' => 'v8.69.0',
- 'version' => '8.69.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'e76f4bce73a2a1656add24bd5210ebc4b8af49c0',
- ),
- 'illuminate/database' =>
- array (
- 'pretty_version' => 'v8.69.0',
- 'version' => '8.69.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '43c7ffb6299ae55b000b286cf1278afd268ef29f',
- ),
- 'illuminate/events' =>
- array (
- 'pretty_version' => 'v8.69.0',
- 'version' => '8.69.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'b7f06cafb6c09581617f2ca05d69e9b159e5a35d',
- ),
- 'illuminate/macroable' =>
- array (
- 'pretty_version' => 'v8.69.0',
- 'version' => '8.69.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '300aa13c086f25116b5f3cde3ca54ff5c822fb05',
- ),
- 'illuminate/pipeline' =>
- array (
- 'pretty_version' => 'v8.69.0',
- 'version' => '8.69.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '23aeff5b26ae4aee3f370835c76bd0f4e93f71d2',
- ),
- 'illuminate/support' =>
- array (
- 'pretty_version' => 'v8.69.0',
- 'version' => '8.69.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'a8851b7001530d3c11626a81449ed9b63dd10db7',
- ),
- 'league/plates' =>
- array (
- 'pretty_version' => 'v3.4.0',
- 'version' => '3.4.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '6d3ee31199b536a4e003b34a356ca20f6f75496a',
- ),
- 'microsoft/tolerant-php-parser' =>
- array (
- 'pretty_version' => 'v0.1.1',
- 'version' => '0.1.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '6a965617cf484355048ac6d2d3de7b6ec93abb16',
- ),
- 'monolog/monolog' =>
- array (
- 'pretty_version' => '1.26.1',
- 'version' => '1.26.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'c6b00f05152ae2c9b04a448f99c7590beb6042f5',
- ),
- 'myclabs/deep-copy' =>
- array (
- 'pretty_version' => '1.10.2',
- 'version' => '1.10.2.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '776f831124e9c62e1a2c601ecc52e776d8bb7220',
- 'replaced' =>
- array (
- 0 => '1.10.2',
- ),
- ),
- 'nesbot/carbon' =>
- array (
- 'pretty_version' => '2.54.0',
- 'version' => '2.54.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'eed83939f1aed3eee517d03a33f5ec587ac529b5',
- ),
- 'netresearch/jsonmapper' =>
- array (
- 'pretty_version' => 'v4.0.0',
- 'version' => '4.0.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d',
- ),
- 'nette/caching' =>
- array (
- 'pretty_version' => 'v3.1.1',
- 'version' => '3.1.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '3e771c589dee414724be473c24ad16dae50c1960',
- ),
- 'nette/finder' =>
- array (
- 'pretty_version' => 'v2.5.2',
- 'version' => '2.5.2.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '4ad2c298eb8c687dd0e74ae84206a4186eeaed50',
- ),
- 'nette/utils' =>
- array (
- 'pretty_version' => 'v3.2.5',
- 'version' => '3.2.5.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '9cd80396ca58d7969ab44fc7afcf03624dfa526e',
- ),
- 'nikic/php-parser' =>
- array (
- 'pretty_version' => 'v4.13.2',
- 'version' => '4.13.2.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '210577fe3cf7badcc5814d99455df46564f3c077',
- ),
- 'pguardiario/phpuri' =>
- array (
- 'pretty_version' => '1.0',
- 'version' => '1.0.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'ad0a5ec033fe616cfef55578b9c7f2458be8fbfc',
- ),
- 'phan/phan' =>
- array (
- 'pretty_version' => '5.2.1',
- 'version' => '5.2.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'd724bbb8fc3ba89179868bb5220ecdf6a9c1636b',
- ),
- 'phar-io/manifest' =>
- array (
- 'pretty_version' => '2.0.3',
- 'version' => '2.0.3.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '97803eca37d319dfa7826cc2437fc020857acb53',
- ),
- 'phar-io/version' =>
- array (
- 'pretty_version' => '3.2.1',
- 'version' => '3.2.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '4f7fd7836c6f332bb2933569e566a0d6c4cbed74',
- ),
- 'php-extended/php-system' =>
- array (
- 'pretty_version' => '1.4.0',
- 'version' => '1.4.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '9e6b3c2009ef56dc123efc43900e40cdf217ace0',
- ),
- 'php-extended/php-tail' =>
- array (
- 'pretty_version' => '2.2.0',
- 'version' => '2.2.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '19fbd3a79ccc071954f28296b2c44754335304a0',
- ),
- 'phpdocumentor/reflection-common' =>
- array (
- 'pretty_version' => '2.2.0',
- 'version' => '2.2.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '1d01c49d4ed62f25aa84a747ad35d5a16924662b',
- ),
- 'phpdocumentor/reflection-docblock' =>
- array (
- 'pretty_version' => '5.3.0',
- 'version' => '5.3.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '622548b623e81ca6d78b721c5e029f4ce664f170',
- ),
- 'phpdocumentor/type-resolver' =>
- array (
- 'pretty_version' => '1.5.1',
- 'version' => '1.5.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'a12f7e301eb7258bb68acd89d4aefa05c2906cae',
- ),
- 'phpspec/prophecy' =>
- array (
- 'pretty_version' => 'v1.15.0',
- 'version' => '1.15.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'bbcd7380b0ebf3961ee21409db7b38bc31d69a13',
- ),
- 'phpunit/php-code-coverage' =>
- array (
- 'pretty_version' => '9.2.14',
- 'version' => '9.2.14.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '9f4d60b6afe5546421462b76cd4e633ebc364ab4',
- ),
- 'phpunit/php-file-iterator' =>
- array (
- 'pretty_version' => '3.0.6',
- 'version' => '3.0.6.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf',
- ),
- 'phpunit/php-invoker' =>
- array (
- 'pretty_version' => '3.1.1',
- 'version' => '3.1.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '5a10147d0aaf65b58940a0b72f71c9ac0423cc67',
- ),
- 'phpunit/php-text-template' =>
- array (
- 'pretty_version' => '2.0.4',
- 'version' => '2.0.4.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28',
- ),
- 'phpunit/php-timer' =>
- array (
- 'pretty_version' => '5.0.3',
- 'version' => '5.0.3.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2',
- ),
- 'phpunit/phpunit' =>
- array (
- 'pretty_version' => '9.5.16',
- 'version' => '9.5.16.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '5ff8c545a50226c569310a35f4fa89d79f1ddfdc',
- ),
- 'psr/container' =>
- array (
- 'pretty_version' => '1.1.2',
- 'version' => '1.1.2.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '513e0666f7216c7459170d56df27dfcefe1689ea',
- ),
- 'psr/container-implementation' =>
- array (
- 'provided' =>
- array (
- 0 => '1.0',
- ),
- ),
- 'psr/http-message' =>
- array (
- 'pretty_version' => '1.0.1',
- 'version' => '1.0.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'f6561bf28d520154e4b0ec72be95418abe6d9363',
- ),
- 'psr/http-message-implementation' =>
- array (
- 'provided' =>
- array (
- 0 => '1.0',
- ),
- ),
- 'psr/log' =>
- array (
- 'pretty_version' => '1.1.4',
- 'version' => '1.1.4.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'd49695b909c3b7628b6289db5479a1c204601f11',
- ),
- 'psr/log-implementation' =>
- array (
- 'provided' =>
- array (
- 0 => '1.0.0',
- 1 => '1.0|2.0',
- ),
- ),
- 'psr/simple-cache' =>
- array (
- 'pretty_version' => '1.0.1',
- 'version' => '1.0.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '408d5eafb83c57f6365a3ca330ff23aa4a5fa39b',
- ),
- 'ralouphie/getallheaders' =>
- array (
- 'pretty_version' => '3.0.3',
- 'version' => '3.0.3.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '120b605dfeb996808c31b6477290a714d356e822',
- ),
- 'sabre/event' =>
- array (
- 'pretty_version' => '5.1.4',
- 'version' => '5.1.4.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'd7da22897125d34d7eddf7977758191c06a74497',
- ),
- 'sammo-hid/sammo' =>
- array (
- 'pretty_version' => 'dev-master',
- 'version' => 'dev-master',
- 'aliases' =>
- array (
- ),
- 'reference' => '956ad4f4081556d693d346b48b4342c51c397952',
- ),
- 'sebastian/cli-parser' =>
- array (
- 'pretty_version' => '1.0.1',
- 'version' => '1.0.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '442e7c7e687e42adc03470c7b668bc4b2402c0b2',
- ),
- 'sebastian/code-unit' =>
- array (
- 'pretty_version' => '1.0.8',
- 'version' => '1.0.8.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '1fc9f64c0927627ef78ba436c9b17d967e68e120',
- ),
- 'sebastian/code-unit-reverse-lookup' =>
- array (
- 'pretty_version' => '2.0.3',
- 'version' => '2.0.3.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5',
- ),
- 'sebastian/comparator' =>
- array (
- 'pretty_version' => '4.0.6',
- 'version' => '4.0.6.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '55f4261989e546dc112258c7a75935a81a7ce382',
- ),
- 'sebastian/complexity' =>
- array (
- 'pretty_version' => '2.0.2',
- 'version' => '2.0.2.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '739b35e53379900cc9ac327b2147867b8b6efd88',
- ),
- 'sebastian/diff' =>
- array (
- 'pretty_version' => '4.0.4',
- 'version' => '4.0.4.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '3461e3fccc7cfdfc2720be910d3bd73c69be590d',
- ),
- 'sebastian/environment' =>
- array (
- 'pretty_version' => '5.1.3',
- 'version' => '5.1.3.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '388b6ced16caa751030f6a69e588299fa09200ac',
- ),
- 'sebastian/exporter' =>
- array (
- 'pretty_version' => '4.0.4',
- 'version' => '4.0.4.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '65e8b7db476c5dd267e65eea9cab77584d3cfff9',
- ),
- 'sebastian/global-state' =>
- array (
- 'pretty_version' => '5.0.5',
- 'version' => '5.0.5.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '0ca8db5a5fc9c8646244e629625ac486fa286bf2',
- ),
- 'sebastian/lines-of-code' =>
- array (
- 'pretty_version' => '1.0.3',
- 'version' => '1.0.3.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'c1c2e997aa3146983ed888ad08b15470a2e22ecc',
- ),
- 'sebastian/object-enumerator' =>
- array (
- 'pretty_version' => '4.0.4',
- 'version' => '4.0.4.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '5c9eeac41b290a3712d88851518825ad78f45c71',
- ),
- 'sebastian/object-reflector' =>
- array (
- 'pretty_version' => '2.0.4',
- 'version' => '2.0.4.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'b4f479ebdbf63ac605d183ece17d8d7fe49c15c7',
- ),
- 'sebastian/recursion-context' =>
- array (
- 'pretty_version' => '4.0.4',
- 'version' => '4.0.4.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'cd9d8cf3c5804de4341c283ed787f099f5506172',
- ),
- 'sebastian/resource-operations' =>
- array (
- 'pretty_version' => '3.0.3',
- 'version' => '3.0.3.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8',
- ),
- 'sebastian/type' =>
- array (
- 'pretty_version' => '2.3.4',
- 'version' => '2.3.4.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'b8cd8a1c753c90bc1a0f5372170e3e489136f914',
- ),
- 'sebastian/version' =>
- array (
- 'pretty_version' => '3.0.2',
- 'version' => '3.0.2.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'c6c1022351a901512170118436c764e473f6de8c',
- ),
- 'sergeytsalkov/meekrodb' =>
- array (
- 'pretty_version' => 'v2.4',
- 'version' => '2.4.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'e30c240d54bc81f58c58507a9ed768032eb494a5',
- ),
- 'spatie/data-transfer-object' =>
- array (
- 'pretty_version' => '3.7.3',
- 'version' => '3.7.3.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '341f72c77e0fce40ea2e0dcb212cb54dc27bbe72',
- ),
- 'symfony/console' =>
- array (
- 'pretty_version' => 'v5.3.10',
- 'version' => '5.3.10.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'd4e409d9fbcfbf71af0e5a940abb7b0b4bad0bd3',
- ),
- 'symfony/deprecation-contracts' =>
- array (
- 'pretty_version' => 'v2.4.0',
- 'version' => '2.4.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '5f38c8804a9e97d23e0c8d63341088cd8a22d627',
- ),
- 'symfony/lock' =>
- array (
- 'pretty_version' => 'v4.4.33',
- 'version' => '4.4.33.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '567d29b1bc6e3937652054dafc069151d17824a9',
- ),
- 'symfony/polyfill-ctype' =>
- array (
- 'pretty_version' => 'v1.23.0',
- 'version' => '1.23.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '46cd95797e9df938fdd2b03693b5fca5e64b01ce',
- ),
- 'symfony/polyfill-intl-grapheme' =>
- array (
- 'pretty_version' => 'v1.23.1',
- 'version' => '1.23.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '16880ba9c5ebe3642d1995ab866db29270b36535',
- ),
- 'symfony/polyfill-intl-idn' =>
- array (
- 'pretty_version' => 'v1.23.0',
- 'version' => '1.23.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '65bd267525e82759e7d8c4e8ceea44f398838e65',
- ),
- 'symfony/polyfill-intl-normalizer' =>
- array (
- 'pretty_version' => 'v1.23.0',
- 'version' => '1.23.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '8590a5f561694770bdcd3f9b5c69dde6945028e8',
- ),
- 'symfony/polyfill-mbstring' =>
- array (
- 'pretty_version' => 'v1.23.1',
- 'version' => '1.23.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '9174a3d80210dca8daa7f31fec659150bbeabfc6',
- ),
- 'symfony/polyfill-php72' =>
- array (
- 'pretty_version' => 'v1.23.0',
- 'version' => '1.23.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '9a142215a36a3888e30d0a9eeea9766764e96976',
- ),
- 'symfony/polyfill-php73' =>
- array (
- 'pretty_version' => 'v1.23.0',
- 'version' => '1.23.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'fba8933c384d6476ab14fb7b8526e5287ca7e010',
- ),
- 'symfony/polyfill-php80' =>
- array (
- 'pretty_version' => 'v1.23.1',
- 'version' => '1.23.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '1100343ed1a92e3a38f9ae122fc0eb21602547be',
- ),
- 'symfony/service-contracts' =>
- array (
- 'pretty_version' => 'v2.4.0',
- 'version' => '2.4.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb',
- ),
- 'symfony/string' =>
- array (
- 'pretty_version' => 'v5.3.10',
- 'version' => '5.3.10.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'd70c35bb20bbca71fc4ab7921e3c6bda1a82a60c',
- ),
- 'symfony/translation' =>
- array (
- 'pretty_version' => 'v5.3.10',
- 'version' => '5.3.10.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '6ef197aea2ac8b9cd63e0da7522b3771714035aa',
- ),
- 'symfony/translation-contracts' =>
- array (
- 'pretty_version' => 'v2.4.0',
- 'version' => '2.4.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '95c812666f3e91db75385749fe219c5e494c7f95',
- ),
- 'symfony/translation-implementation' =>
- array (
- 'provided' =>
- array (
- 0 => '2.3',
- ),
- ),
- 'theseer/tokenizer' =>
- array (
- 'pretty_version' => '1.2.1',
- 'version' => '1.2.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '34a41e998c2183e22995f158c581e7b5e755ab9e',
- ),
- 'tysonandre/var_representation_polyfill' =>
- array (
- 'pretty_version' => '0.1.1',
- 'version' => '0.1.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '0a942e74e18af5514749895507bc6ca7ab96399a',
- ),
- 'vlucas/valitron' =>
- array (
- 'pretty_version' => 'v1.4.10',
- 'version' => '1.4.10.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '5ebd5d7af82cc0a9d798e816a2ecad63f1b59ceb',
- ),
- 'voku/portable-ascii' =>
- array (
- 'pretty_version' => '1.5.6',
- 'version' => '1.5.6.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '80953678b19901e5165c56752d087fc11526017c',
- ),
- 'webmozart/assert' =>
- array (
- 'pretty_version' => '1.10.0',
- 'version' => '1.10.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '6964c76c7804814a842473e0c8fd15bab0f18e25',
- ),
- 'xemlock/htmlpurifier-html5' =>
- array (
- 'pretty_version' => 'v0.1.11',
- 'version' => '0.1.11.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'f0d563f9fd4a82a3d759043483f9a94c0d8c2255',
- ),
- ),
-);
-
-
-
-
-
-
-
-public static function getInstalledPackages()
-{
-return array_keys(self::$installed['versions']);
-}
-
-
-
-
-
-
-
-
-
-public static function isInstalled($packageName)
-{
-return isset(self::$installed['versions'][$packageName]);
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-public static function satisfies(VersionParser $parser, $packageName, $constraint)
-{
-$constraint = $parser->parseConstraints($constraint);
-$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
-
-return $provided->matches($constraint);
-}
-
-
-
-
-
-
-
-
-
-
-public static function getVersionRanges($packageName)
-{
-if (!isset(self::$installed['versions'][$packageName])) {
-throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
-}
-
-$ranges = array();
-if (isset(self::$installed['versions'][$packageName]['pretty_version'])) {
-$ranges[] = self::$installed['versions'][$packageName]['pretty_version'];
-}
-if (array_key_exists('aliases', self::$installed['versions'][$packageName])) {
-$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['aliases']);
-}
-if (array_key_exists('replaced', self::$installed['versions'][$packageName])) {
-$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['replaced']);
-}
-if (array_key_exists('provided', self::$installed['versions'][$packageName])) {
-$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['provided']);
-}
-
-return implode(' || ', $ranges);
-}
-
-
-
-
-
-public static function getVersion($packageName)
-{
-if (!isset(self::$installed['versions'][$packageName])) {
-throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
-}
-
-if (!isset(self::$installed['versions'][$packageName]['version'])) {
-return null;
-}
-
-return self::$installed['versions'][$packageName]['version'];
-}
-
-
-
-
-
-public static function getPrettyVersion($packageName)
-{
-if (!isset(self::$installed['versions'][$packageName])) {
-throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
-}
-
-if (!isset(self::$installed['versions'][$packageName]['pretty_version'])) {
-return null;
-}
-
-return self::$installed['versions'][$packageName]['pretty_version'];
-}
-
-
-
-
-
-public static function getReference($packageName)
-{
-if (!isset(self::$installed['versions'][$packageName])) {
-throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
-}
-
-if (!isset(self::$installed['versions'][$packageName]['reference'])) {
-return null;
-}
-
-return self::$installed['versions'][$packageName]['reference'];
-}
-
-
-
-
-
-public static function getRootPackage()
-{
-return self::$installed['root'];
-}
-
-
-
-
-
-
-
-public static function getRawData()
-{
-return self::$installed;
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-public static function reload($data)
-{
-self::$installed = $data;
-}
-}
diff --git a/vendor/composer/LICENSE b/vendor/composer/LICENSE
deleted file mode 100644
index f27399a0..00000000
--- a/vendor/composer/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-
-Copyright (c) Nils Adermann, Jordi Boggiano
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
deleted file mode 100644
index 7d266d5d..00000000
--- a/vendor/composer/autoload_classmap.php
+++ /dev/null
@@ -1,745 +0,0 @@
- $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
- 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
- 'DB' => $vendorDir . '/sergeytsalkov/meekrodb/db.class.php',
- 'DBTransaction' => $vendorDir . '/sergeytsalkov/meekrodb/db.class.php',
- 'FB' => $vendorDir . '/firephp/firephp-core/lib/FirePHPCore/fb.php',
- 'FirePHP' => $vendorDir . '/firephp/firephp-core/lib/FirePHPCore/FirePHP.class.php',
- 'HTMLPurifier_AttrDef_Float' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/AttrDef/Float.php',
- 'HTMLPurifier_AttrDef_HTML5_ARel' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/AttrDef/HTML5/ARel.php',
- 'HTMLPurifier_AttrDef_HTML5_Datetime' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/AttrDef/HTML5/Datetime.php',
- 'HTMLPurifier_AttrDef_HTML5_Duration' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/AttrDef/HTML5/Duration.php',
- 'HTMLPurifier_AttrDef_HTML5_Week' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/AttrDef/HTML5/Week.php',
- 'HTMLPurifier_AttrDef_HTML5_YearlessDate' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/AttrDef/HTML5/YearlessDate.php',
- 'HTMLPurifier_AttrDef_HTML_Bool2' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/AttrDef/HTML/Bool2.php',
- 'HTMLPurifier_AttrTransform_HTML5_Dialog' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/AttrTransform/HTML5/Dialog.php',
- 'HTMLPurifier_AttrTransform_HTML5_Progress' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/AttrTransform/HTML5/Progress.php',
- 'HTMLPurifier_AttrTransform_HTML5_Script' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/AttrTransform/HTML5/Script.php',
- 'HTMLPurifier_ChildDef_HTML5_Abstract' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/ChildDef/HTML5/Abstract.php',
- 'HTMLPurifier_ChildDef_HTML5_Details' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/ChildDef/HTML5/Details.php',
- 'HTMLPurifier_ChildDef_HTML5_Fieldset' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/ChildDef/HTML5/Fieldset.php',
- 'HTMLPurifier_ChildDef_HTML5_Figure' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/ChildDef/HTML5/Figure.php',
- 'HTMLPurifier_ChildDef_HTML5_Media' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/ChildDef/HTML5/Media.php',
- 'HTMLPurifier_ChildDef_HTML5_Picture' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/ChildDef/HTML5/Picture.php',
- 'HTMLPurifier_ChildDef_HTML5_Script' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/ChildDef/HTML5/Script.php',
- 'HTMLPurifier_ChildDef_HTML5_Time' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/ChildDef/HTML5/Time.php',
- 'HTMLPurifier_HTML5Config' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/HTML5Config.php',
- 'HTMLPurifier_HTML5Definition' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/HTML5Definition.php',
- 'HTMLPurifier_HTMLModule_HTML5_Bdo' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/HTMLModule/HTML5/Bdo.php',
- 'HTMLPurifier_HTMLModule_HTML5_Edit' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/HTMLModule/HTML5/Edit.php',
- 'HTMLPurifier_HTMLModule_HTML5_Forms' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/HTMLModule/HTML5/Forms.php',
- 'HTMLPurifier_HTMLModule_HTML5_Hypertext' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/HTMLModule/HTML5/Hypertext.php',
- 'HTMLPurifier_HTMLModule_HTML5_Iframe' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/HTMLModule/HTML5/Iframe.php',
- 'HTMLPurifier_HTMLModule_HTML5_Interactive' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/HTMLModule/HTML5/Interactive.php',
- 'HTMLPurifier_HTMLModule_HTML5_List' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/HTMLModule/HTML5/List.php',
- 'HTMLPurifier_HTMLModule_HTML5_Media' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/HTMLModule/HTML5/Media.php',
- 'HTMLPurifier_HTMLModule_HTML5_Ruby' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/HTMLModule/HTML5/Ruby.php',
- 'HTMLPurifier_HTMLModule_HTML5_SafeScripting' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/HTMLModule/HTML5/SafeScripting.php',
- 'HTMLPurifier_HTMLModule_HTML5_Scripting' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/HTMLModule/HTML5/Scripting.php',
- 'HTMLPurifier_HTMLModule_HTML5_Text' => $vendorDir . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/HTMLModule/HTML5/Text.php',
- 'JsonException' => $vendorDir . '/symfony/polyfill-php73/Resources/stubs/JsonException.php',
- 'MeekroDB' => $vendorDir . '/sergeytsalkov/meekrodb/db.class.php',
- 'MeekroDBEval' => $vendorDir . '/sergeytsalkov/meekrodb/db.class.php',
- 'MeekroDBException' => $vendorDir . '/sergeytsalkov/meekrodb/db.class.php',
- 'MeekroDBWalk' => $vendorDir . '/sergeytsalkov/meekrodb/db.class.php',
- 'Nette\\ArgumentOutOfRangeException' => $vendorDir . '/nette/utils/src/exceptions.php',
- 'Nette\\Bridges\\CacheDI\\CacheExtension' => $vendorDir . '/nette/caching/src/Bridges/CacheDI/CacheExtension.php',
- 'Nette\\Bridges\\CacheLatte\\CacheMacro' => $vendorDir . '/nette/caching/src/Bridges/CacheLatte/CacheMacro.php',
- 'Nette\\Caching\\BulkReader' => $vendorDir . '/nette/caching/src/Caching/BulkReader.php',
- 'Nette\\Caching\\Cache' => $vendorDir . '/nette/caching/src/Caching/Cache.php',
- 'Nette\\Caching\\IBulkReader' => $vendorDir . '/nette/caching/src/compatibility.php',
- 'Nette\\Caching\\IStorage' => $vendorDir . '/nette/caching/src/compatibility.php',
- 'Nette\\Caching\\OutputHelper' => $vendorDir . '/nette/caching/src/Caching/OutputHelper.php',
- 'Nette\\Caching\\Storage' => $vendorDir . '/nette/caching/src/Caching/Storage.php',
- 'Nette\\Caching\\Storages\\DevNullStorage' => $vendorDir . '/nette/caching/src/Caching/Storages/DevNullStorage.php',
- 'Nette\\Caching\\Storages\\FileStorage' => $vendorDir . '/nette/caching/src/Caching/Storages/FileStorage.php',
- 'Nette\\Caching\\Storages\\IJournal' => $vendorDir . '/nette/caching/src/compatibility.php',
- 'Nette\\Caching\\Storages\\Journal' => $vendorDir . '/nette/caching/src/Caching/Storages/Journal.php',
- 'Nette\\Caching\\Storages\\MemcachedStorage' => $vendorDir . '/nette/caching/src/Caching/Storages/MemcachedStorage.php',
- 'Nette\\Caching\\Storages\\MemoryStorage' => $vendorDir . '/nette/caching/src/Caching/Storages/MemoryStorage.php',
- 'Nette\\Caching\\Storages\\NewMemcachedStorage' => $vendorDir . '/nette/caching/src/Caching/Storages/NewMemcachedStorage.php',
- 'Nette\\Caching\\Storages\\SQLiteJournal' => $vendorDir . '/nette/caching/src/Caching/Storages/SQLiteJournal.php',
- 'Nette\\Caching\\Storages\\SQLiteStorage' => $vendorDir . '/nette/caching/src/Caching/Storages/SQLiteStorage.php',
- 'Nette\\DeprecatedException' => $vendorDir . '/nette/utils/src/exceptions.php',
- 'Nette\\DirectoryNotFoundException' => $vendorDir . '/nette/utils/src/exceptions.php',
- 'Nette\\FileNotFoundException' => $vendorDir . '/nette/utils/src/exceptions.php',
- 'Nette\\HtmlStringable' => $vendorDir . '/nette/utils/src/HtmlStringable.php',
- 'Nette\\IOException' => $vendorDir . '/nette/utils/src/exceptions.php',
- 'Nette\\InvalidArgumentException' => $vendorDir . '/nette/utils/src/exceptions.php',
- 'Nette\\InvalidStateException' => $vendorDir . '/nette/utils/src/exceptions.php',
- 'Nette\\Iterators\\CachingIterator' => $vendorDir . '/nette/utils/src/Iterators/CachingIterator.php',
- 'Nette\\Iterators\\Mapper' => $vendorDir . '/nette/utils/src/Iterators/Mapper.php',
- 'Nette\\Localization\\ITranslator' => $vendorDir . '/nette/utils/src/compatibility.php',
- 'Nette\\Localization\\Translator' => $vendorDir . '/nette/utils/src/Translator.php',
- 'Nette\\MemberAccessException' => $vendorDir . '/nette/utils/src/exceptions.php',
- 'Nette\\NotImplementedException' => $vendorDir . '/nette/utils/src/exceptions.php',
- 'Nette\\NotSupportedException' => $vendorDir . '/nette/utils/src/exceptions.php',
- 'Nette\\OutOfRangeException' => $vendorDir . '/nette/utils/src/exceptions.php',
- 'Nette\\SmartObject' => $vendorDir . '/nette/utils/src/SmartObject.php',
- 'Nette\\StaticClass' => $vendorDir . '/nette/utils/src/StaticClass.php',
- 'Nette\\UnexpectedValueException' => $vendorDir . '/nette/utils/src/exceptions.php',
- 'Nette\\Utils\\ArrayHash' => $vendorDir . '/nette/utils/src/Utils/ArrayHash.php',
- 'Nette\\Utils\\ArrayList' => $vendorDir . '/nette/utils/src/Utils/ArrayList.php',
- 'Nette\\Utils\\Arrays' => $vendorDir . '/nette/utils/src/Utils/Arrays.php',
- 'Nette\\Utils\\AssertionException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
- 'Nette\\Utils\\Callback' => $vendorDir . '/nette/utils/src/Utils/Callback.php',
- 'Nette\\Utils\\DateTime' => $vendorDir . '/nette/utils/src/Utils/DateTime.php',
- 'Nette\\Utils\\FileSystem' => $vendorDir . '/nette/utils/src/Utils/FileSystem.php',
- 'Nette\\Utils\\Finder' => $vendorDir . '/nette/finder/src/Utils/Finder.php',
- 'Nette\\Utils\\Floats' => $vendorDir . '/nette/utils/src/Utils/Floats.php',
- 'Nette\\Utils\\Helpers' => $vendorDir . '/nette/utils/src/Utils/Helpers.php',
- 'Nette\\Utils\\Html' => $vendorDir . '/nette/utils/src/Utils/Html.php',
- 'Nette\\Utils\\IHtmlString' => $vendorDir . '/nette/utils/src/compatibility.php',
- 'Nette\\Utils\\Image' => $vendorDir . '/nette/utils/src/Utils/Image.php',
- 'Nette\\Utils\\ImageException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
- 'Nette\\Utils\\Json' => $vendorDir . '/nette/utils/src/Utils/Json.php',
- 'Nette\\Utils\\JsonException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
- 'Nette\\Utils\\ObjectHelpers' => $vendorDir . '/nette/utils/src/Utils/ObjectHelpers.php',
- 'Nette\\Utils\\ObjectMixin' => $vendorDir . '/nette/utils/src/Utils/ObjectMixin.php',
- 'Nette\\Utils\\Paginator' => $vendorDir . '/nette/utils/src/Utils/Paginator.php',
- 'Nette\\Utils\\Random' => $vendorDir . '/nette/utils/src/Utils/Random.php',
- 'Nette\\Utils\\Reflection' => $vendorDir . '/nette/utils/src/Utils/Reflection.php',
- 'Nette\\Utils\\RegexpException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
- 'Nette\\Utils\\Strings' => $vendorDir . '/nette/utils/src/Utils/Strings.php',
- 'Nette\\Utils\\Type' => $vendorDir . '/nette/utils/src/Utils/Type.php',
- 'Nette\\Utils\\UnknownImageFileException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
- 'Nette\\Utils\\Validators' => $vendorDir . '/nette/utils/src/Utils/Validators.php',
- 'Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
- 'PHPUnit\\Exception' => $vendorDir . '/phpunit/phpunit/src/Exception.php',
- 'PHPUnit\\Framework\\ActualValueIsNotAnObjectException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ActualValueIsNotAnObjectException.php',
- 'PHPUnit\\Framework\\Assert' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert.php',
- 'PHPUnit\\Framework\\AssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/AssertionFailedError.php',
- 'PHPUnit\\Framework\\CodeCoverageException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/CodeCoverageException.php',
- 'PHPUnit\\Framework\\ComparisonMethodDoesNotAcceptParameterTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotAcceptParameterTypeException.php',
- 'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareBoolReturnTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareBoolReturnTypeException.php',
- 'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareExactlyOneParameterException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareExactlyOneParameterException.php',
- 'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareParameterTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareParameterTypeException.php',
- 'PHPUnit\\Framework\\ComparisonMethodDoesNotExistException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotExistException.php',
- 'PHPUnit\\Framework\\Constraint\\ArrayHasKey' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/ArrayHasKey.php',
- 'PHPUnit\\Framework\\Constraint\\BinaryOperator' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/BinaryOperator.php',
- 'PHPUnit\\Framework\\Constraint\\Callback' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Callback.php',
- 'PHPUnit\\Framework\\Constraint\\ClassHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Object/ClassHasAttribute.php',
- 'PHPUnit\\Framework\\Constraint\\ClassHasStaticAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Object/ClassHasStaticAttribute.php',
- 'PHPUnit\\Framework\\Constraint\\Constraint' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Constraint.php',
- 'PHPUnit\\Framework\\Constraint\\Count' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/Count.php',
- 'PHPUnit\\Framework\\Constraint\\DirectoryExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/DirectoryExists.php',
- 'PHPUnit\\Framework\\Constraint\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception/Exception.php',
- 'PHPUnit\\Framework\\Constraint\\ExceptionCode' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionCode.php',
- 'PHPUnit\\Framework\\Constraint\\ExceptionMessage' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessage.php',
- 'PHPUnit\\Framework\\Constraint\\ExceptionMessageRegularExpression' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageRegularExpression.php',
- 'PHPUnit\\Framework\\Constraint\\FileExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/FileExists.php',
- 'PHPUnit\\Framework\\Constraint\\GreaterThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/GreaterThan.php',
- 'PHPUnit\\Framework\\Constraint\\IsAnything' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php',
- 'PHPUnit\\Framework\\Constraint\\IsEmpty' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/IsEmpty.php',
- 'PHPUnit\\Framework\\Constraint\\IsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqual.php',
- 'PHPUnit\\Framework\\Constraint\\IsEqualCanonicalizing' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualCanonicalizing.php',
- 'PHPUnit\\Framework\\Constraint\\IsEqualIgnoringCase' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualIgnoringCase.php',
- 'PHPUnit\\Framework\\Constraint\\IsEqualWithDelta' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualWithDelta.php',
- 'PHPUnit\\Framework\\Constraint\\IsFalse' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Boolean/IsFalse.php',
- 'PHPUnit\\Framework\\Constraint\\IsFinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Math/IsFinite.php',
- 'PHPUnit\\Framework\\Constraint\\IsIdentical' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php',
- 'PHPUnit\\Framework\\Constraint\\IsInfinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Math/IsInfinite.php',
- 'PHPUnit\\Framework\\Constraint\\IsInstanceOf' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Type/IsInstanceOf.php',
- 'PHPUnit\\Framework\\Constraint\\IsJson' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/IsJson.php',
- 'PHPUnit\\Framework\\Constraint\\IsNan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Math/IsNan.php',
- 'PHPUnit\\Framework\\Constraint\\IsNull' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Type/IsNull.php',
- 'PHPUnit\\Framework\\Constraint\\IsReadable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsReadable.php',
- 'PHPUnit\\Framework\\Constraint\\IsTrue' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Boolean/IsTrue.php',
- 'PHPUnit\\Framework\\Constraint\\IsType' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Type/IsType.php',
- 'PHPUnit\\Framework\\Constraint\\IsWritable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsWritable.php',
- 'PHPUnit\\Framework\\Constraint\\JsonMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php',
- 'PHPUnit\\Framework\\Constraint\\JsonMatchesErrorMessageProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatchesErrorMessageProvider.php',
- 'PHPUnit\\Framework\\Constraint\\LessThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/LessThan.php',
- 'PHPUnit\\Framework\\Constraint\\LogicalAnd' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalAnd.php',
- 'PHPUnit\\Framework\\Constraint\\LogicalNot' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalNot.php',
- 'PHPUnit\\Framework\\Constraint\\LogicalOr' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalOr.php',
- 'PHPUnit\\Framework\\Constraint\\LogicalXor' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalXor.php',
- 'PHPUnit\\Framework\\Constraint\\ObjectEquals' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Object/ObjectEquals.php',
- 'PHPUnit\\Framework\\Constraint\\ObjectHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Object/ObjectHasAttribute.php',
- 'PHPUnit\\Framework\\Constraint\\Operator' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/Operator.php',
- 'PHPUnit\\Framework\\Constraint\\RegularExpression' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/RegularExpression.php',
- 'PHPUnit\\Framework\\Constraint\\SameSize' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/SameSize.php',
- 'PHPUnit\\Framework\\Constraint\\StringContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/StringContains.php',
- 'PHPUnit\\Framework\\Constraint\\StringEndsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/StringEndsWith.php',
- 'PHPUnit\\Framework\\Constraint\\StringMatchesFormatDescription' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/StringMatchesFormatDescription.php',
- 'PHPUnit\\Framework\\Constraint\\StringStartsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/StringStartsWith.php',
- 'PHPUnit\\Framework\\Constraint\\TraversableContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContains.php',
- 'PHPUnit\\Framework\\Constraint\\TraversableContainsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsEqual.php',
- 'PHPUnit\\Framework\\Constraint\\TraversableContainsIdentical' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsIdentical.php',
- 'PHPUnit\\Framework\\Constraint\\TraversableContainsOnly' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsOnly.php',
- 'PHPUnit\\Framework\\Constraint\\UnaryOperator' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/UnaryOperator.php',
- 'PHPUnit\\Framework\\CoveredCodeNotExecutedException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/CoveredCodeNotExecutedException.php',
- 'PHPUnit\\Framework\\DataProviderTestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/DataProviderTestSuite.php',
- 'PHPUnit\\Framework\\Error' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/Error.php',
- 'PHPUnit\\Framework\\ErrorTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/ErrorTestCase.php',
- 'PHPUnit\\Framework\\Error\\Deprecated' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Deprecated.php',
- 'PHPUnit\\Framework\\Error\\Error' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Error.php',
- 'PHPUnit\\Framework\\Error\\Notice' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Notice.php',
- 'PHPUnit\\Framework\\Error\\Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Warning.php',
- 'PHPUnit\\Framework\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/Exception.php',
- 'PHPUnit\\Framework\\ExceptionWrapper' => $vendorDir . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php',
- 'PHPUnit\\Framework\\ExecutionOrderDependency' => $vendorDir . '/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php',
- 'PHPUnit\\Framework\\ExpectationFailedException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ExpectationFailedException.php',
- 'PHPUnit\\Framework\\IncompleteTest' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTest.php',
- 'PHPUnit\\Framework\\IncompleteTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php',
- 'PHPUnit\\Framework\\IncompleteTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/IncompleteTestError.php',
- 'PHPUnit\\Framework\\InvalidArgumentException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/InvalidArgumentException.php',
- 'PHPUnit\\Framework\\InvalidCoversTargetException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/InvalidCoversTargetException.php',
- 'PHPUnit\\Framework\\InvalidDataProviderException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/InvalidDataProviderException.php',
- 'PHPUnit\\Framework\\InvalidParameterGroupException' => $vendorDir . '/phpunit/phpunit/src/Framework/InvalidParameterGroupException.php',
- 'PHPUnit\\Framework\\MissingCoversAnnotationException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/MissingCoversAnnotationException.php',
- 'PHPUnit\\Framework\\MockObject\\Api' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Api/Api.php',
- 'PHPUnit\\Framework\\MockObject\\BadMethodCallException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/BadMethodCallException.php',
- 'PHPUnit\\Framework\\MockObject\\Builder\\Identity' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/Identity.php',
- 'PHPUnit\\Framework\\MockObject\\Builder\\InvocationMocker' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationMocker.php',
- 'PHPUnit\\Framework\\MockObject\\Builder\\InvocationStubber' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationStubber.php',
- 'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/MethodNameMatch.php',
- 'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/ParametersMatch.php',
- 'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/Stub.php',
- 'PHPUnit\\Framework\\MockObject\\CannotUseAddMethodsException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseAddMethodsException.php',
- 'PHPUnit\\Framework\\MockObject\\CannotUseOnlyMethodsException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php',
- 'PHPUnit\\Framework\\MockObject\\ClassAlreadyExistsException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ClassAlreadyExistsException.php',
- 'PHPUnit\\Framework\\MockObject\\ClassIsFinalException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsFinalException.php',
- 'PHPUnit\\Framework\\MockObject\\ConfigurableMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php',
- 'PHPUnit\\Framework\\MockObject\\ConfigurableMethodsAlreadyInitializedException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ConfigurableMethodsAlreadyInitializedException.php',
- 'PHPUnit\\Framework\\MockObject\\DuplicateMethodException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/DuplicateMethodException.php',
- 'PHPUnit\\Framework\\MockObject\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php',
- 'PHPUnit\\Framework\\MockObject\\Generator' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator.php',
- 'PHPUnit\\Framework\\MockObject\\IncompatibleReturnValueException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php',
- 'PHPUnit\\Framework\\MockObject\\InvalidMethodNameException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/InvalidMethodNameException.php',
- 'PHPUnit\\Framework\\MockObject\\Invocation' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Invocation.php',
- 'PHPUnit\\Framework\\MockObject\\InvocationHandler' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/InvocationHandler.php',
- 'PHPUnit\\Framework\\MockObject\\MatchBuilderNotFoundException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php',
- 'PHPUnit\\Framework\\MockObject\\Matcher' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher.php',
- 'PHPUnit\\Framework\\MockObject\\MatcherAlreadyRegisteredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php',
- 'PHPUnit\\Framework\\MockObject\\Method' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Api/Method.php',
- 'PHPUnit\\Framework\\MockObject\\MethodCannotBeConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php',
- 'PHPUnit\\Framework\\MockObject\\MethodNameAlreadyConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameAlreadyConfiguredException.php',
- 'PHPUnit\\Framework\\MockObject\\MethodNameConstraint' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MethodNameConstraint.php',
- 'PHPUnit\\Framework\\MockObject\\MethodNameNotConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameNotConfiguredException.php',
- 'PHPUnit\\Framework\\MockObject\\MethodParametersAlreadyConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodParametersAlreadyConfiguredException.php',
- 'PHPUnit\\Framework\\MockObject\\MockBuilder' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php',
- 'PHPUnit\\Framework\\MockObject\\MockClass' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockClass.php',
- 'PHPUnit\\Framework\\MockObject\\MockMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockMethod.php',
- 'PHPUnit\\Framework\\MockObject\\MockMethodSet' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockMethodSet.php',
- 'PHPUnit\\Framework\\MockObject\\MockObject' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockObject.php',
- 'PHPUnit\\Framework\\MockObject\\MockTrait' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockTrait.php',
- 'PHPUnit\\Framework\\MockObject\\MockType' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockType.php',
- 'PHPUnit\\Framework\\MockObject\\MockedCloneMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Api/MockedCloneMethod.php',
- 'PHPUnit\\Framework\\MockObject\\OriginalConstructorInvocationRequiredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/OriginalConstructorInvocationRequiredException.php',
- 'PHPUnit\\Framework\\MockObject\\ReflectionException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ReflectionException.php',
- 'PHPUnit\\Framework\\MockObject\\ReturnValueNotConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php',
- 'PHPUnit\\Framework\\MockObject\\Rule\\AnyInvokedCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/AnyInvokedCount.php',
- 'PHPUnit\\Framework\\MockObject\\Rule\\AnyParameters' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/AnyParameters.php',
- 'PHPUnit\\Framework\\MockObject\\Rule\\ConsecutiveParameters' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/ConsecutiveParameters.php',
- 'PHPUnit\\Framework\\MockObject\\Rule\\InvocationOrder' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvocationOrder.php',
- 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtIndex' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtIndex.php',
- 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtLeastCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastCount.php',
- 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtLeastOnce' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastOnce.php',
- 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtMostCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtMostCount.php',
- 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedCount.php',
- 'PHPUnit\\Framework\\MockObject\\Rule\\MethodName' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/MethodName.php',
- 'PHPUnit\\Framework\\MockObject\\Rule\\Parameters' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/Parameters.php',
- 'PHPUnit\\Framework\\MockObject\\Rule\\ParametersRule' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/ParametersRule.php',
- 'PHPUnit\\Framework\\MockObject\\RuntimeException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/RuntimeException.php',
- 'PHPUnit\\Framework\\MockObject\\SoapExtensionNotAvailableException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/SoapExtensionNotAvailableException.php',
- 'PHPUnit\\Framework\\MockObject\\Stub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\ConsecutiveCalls' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ConsecutiveCalls.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/Exception.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnArgument' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnArgument.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnCallback' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnCallback.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnReference' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnReference.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnSelf' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnSelf.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnStub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnStub.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnValueMap' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnValueMap.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\Stub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/Stub.php',
- 'PHPUnit\\Framework\\MockObject\\UnknownClassException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownClassException.php',
- 'PHPUnit\\Framework\\MockObject\\UnknownTraitException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTraitException.php',
- 'PHPUnit\\Framework\\MockObject\\UnknownTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTypeException.php',
- 'PHPUnit\\Framework\\MockObject\\UnmockedCloneMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Api/UnmockedCloneMethod.php',
- 'PHPUnit\\Framework\\MockObject\\Verifiable' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Verifiable.php',
- 'PHPUnit\\Framework\\NoChildTestSuiteException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/NoChildTestSuiteException.php',
- 'PHPUnit\\Framework\\OutputError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/OutputError.php',
- 'PHPUnit\\Framework\\PHPTAssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/PHPTAssertionFailedError.php',
- 'PHPUnit\\Framework\\Reorderable' => $vendorDir . '/phpunit/phpunit/src/Framework/Reorderable.php',
- 'PHPUnit\\Framework\\RiskyTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/RiskyTestError.php',
- 'PHPUnit\\Framework\\SelfDescribing' => $vendorDir . '/phpunit/phpunit/src/Framework/SelfDescribing.php',
- 'PHPUnit\\Framework\\SkippedTest' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTest.php',
- 'PHPUnit\\Framework\\SkippedTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestCase.php',
- 'PHPUnit\\Framework\\SkippedTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/SkippedTestError.php',
- 'PHPUnit\\Framework\\SkippedTestSuiteError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/SkippedTestSuiteError.php',
- 'PHPUnit\\Framework\\SyntheticError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/SyntheticError.php',
- 'PHPUnit\\Framework\\SyntheticSkippedError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/SyntheticSkippedError.php',
- 'PHPUnit\\Framework\\Test' => $vendorDir . '/phpunit/phpunit/src/Framework/Test.php',
- 'PHPUnit\\Framework\\TestBuilder' => $vendorDir . '/phpunit/phpunit/src/Framework/TestBuilder.php',
- 'PHPUnit\\Framework\\TestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/TestCase.php',
- 'PHPUnit\\Framework\\TestFailure' => $vendorDir . '/phpunit/phpunit/src/Framework/TestFailure.php',
- 'PHPUnit\\Framework\\TestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/TestListener.php',
- 'PHPUnit\\Framework\\TestListenerDefaultImplementation' => $vendorDir . '/phpunit/phpunit/src/Framework/TestListenerDefaultImplementation.php',
- 'PHPUnit\\Framework\\TestResult' => $vendorDir . '/phpunit/phpunit/src/Framework/TestResult.php',
- 'PHPUnit\\Framework\\TestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite.php',
- 'PHPUnit\\Framework\\TestSuiteIterator' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php',
- 'PHPUnit\\Framework\\UnintentionallyCoveredCodeError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/UnintentionallyCoveredCodeError.php',
- 'PHPUnit\\Framework\\Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/Warning.php',
- 'PHPUnit\\Framework\\WarningTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/WarningTestCase.php',
- 'PHPUnit\\Runner\\AfterIncompleteTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterIncompleteTestHook.php',
- 'PHPUnit\\Runner\\AfterLastTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterLastTestHook.php',
- 'PHPUnit\\Runner\\AfterRiskyTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterRiskyTestHook.php',
- 'PHPUnit\\Runner\\AfterSkippedTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterSkippedTestHook.php',
- 'PHPUnit\\Runner\\AfterSuccessfulTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterSuccessfulTestHook.php',
- 'PHPUnit\\Runner\\AfterTestErrorHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterTestErrorHook.php',
- 'PHPUnit\\Runner\\AfterTestFailureHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterTestFailureHook.php',
- 'PHPUnit\\Runner\\AfterTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterTestHook.php',
- 'PHPUnit\\Runner\\AfterTestWarningHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterTestWarningHook.php',
- 'PHPUnit\\Runner\\BaseTestRunner' => $vendorDir . '/phpunit/phpunit/src/Runner/BaseTestRunner.php',
- 'PHPUnit\\Runner\\BeforeFirstTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/BeforeFirstTestHook.php',
- 'PHPUnit\\Runner\\BeforeTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/BeforeTestHook.php',
- 'PHPUnit\\Runner\\DefaultTestResultCache' => $vendorDir . '/phpunit/phpunit/src/Runner/DefaultTestResultCache.php',
- 'PHPUnit\\Runner\\Exception' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception.php',
- 'PHPUnit\\Runner\\Extension\\ExtensionHandler' => $vendorDir . '/phpunit/phpunit/src/Runner/Extension/ExtensionHandler.php',
- 'PHPUnit\\Runner\\Extension\\PharLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/Extension/PharLoader.php',
- 'PHPUnit\\Runner\\Filter\\ExcludeGroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php',
- 'PHPUnit\\Runner\\Filter\\Factory' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Factory.php',
- 'PHPUnit\\Runner\\Filter\\GroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php',
- 'PHPUnit\\Runner\\Filter\\IncludeGroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php',
- 'PHPUnit\\Runner\\Filter\\NameFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php',
- 'PHPUnit\\Runner\\Hook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/Hook.php',
- 'PHPUnit\\Runner\\NullTestResultCache' => $vendorDir . '/phpunit/phpunit/src/Runner/NullTestResultCache.php',
- 'PHPUnit\\Runner\\PhptTestCase' => $vendorDir . '/phpunit/phpunit/src/Runner/PhptTestCase.php',
- 'PHPUnit\\Runner\\ResultCacheExtension' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCacheExtension.php',
- 'PHPUnit\\Runner\\StandardTestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php',
- 'PHPUnit\\Runner\\TestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/TestHook.php',
- 'PHPUnit\\Runner\\TestListenerAdapter' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/TestListenerAdapter.php',
- 'PHPUnit\\Runner\\TestResultCache' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResultCache.php',
- 'PHPUnit\\Runner\\TestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php',
- 'PHPUnit\\Runner\\TestSuiteSorter' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteSorter.php',
- 'PHPUnit\\Runner\\Version' => $vendorDir . '/phpunit/phpunit/src/Runner/Version.php',
- 'PHPUnit\\TextUI\\CliArguments\\Builder' => $vendorDir . '/phpunit/phpunit/src/TextUI/CliArguments/Builder.php',
- 'PHPUnit\\TextUI\\CliArguments\\Configuration' => $vendorDir . '/phpunit/phpunit/src/TextUI/CliArguments/Configuration.php',
- 'PHPUnit\\TextUI\\CliArguments\\Exception' => $vendorDir . '/phpunit/phpunit/src/TextUI/CliArguments/Exception.php',
- 'PHPUnit\\TextUI\\CliArguments\\Mapper' => $vendorDir . '/phpunit/phpunit/src/TextUI/CliArguments/Mapper.php',
- 'PHPUnit\\TextUI\\Command' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command.php',
- 'PHPUnit\\TextUI\\DefaultResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/DefaultResultPrinter.php',
- 'PHPUnit\\TextUI\\Exception' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/Exception.php',
- 'PHPUnit\\TextUI\\Help' => $vendorDir . '/phpunit/phpunit/src/TextUI/Help.php',
- 'PHPUnit\\TextUI\\ReflectionException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/ReflectionException.php',
- 'PHPUnit\\TextUI\\ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/ResultPrinter.php',
- 'PHPUnit\\TextUI\\RuntimeException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/RuntimeException.php',
- 'PHPUnit\\TextUI\\TestDirectoryNotFoundException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php',
- 'PHPUnit\\TextUI\\TestFileNotFoundException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php',
- 'PHPUnit\\TextUI\\TestRunner' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestRunner.php',
- 'PHPUnit\\TextUI\\TestSuiteMapper' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestSuiteMapper.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\CodeCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/CodeCoverage.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\FilterMapper' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/FilterMapper.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Filter\\Directory' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/Directory.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Filter\\DirectoryCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollection.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Filter\\DirectoryCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollectionIterator.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Clover' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Clover.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Cobertura' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Cobertura.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Crap4j' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Crap4j.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Html' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Html.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Php' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Php.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Text' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Text.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Xml' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Xml.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Configuration' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Configuration.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Constant' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Constant.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\ConstantCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollection.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\ConstantCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollectionIterator.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\ConvertLogTypes' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/ConvertLogTypes.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageCloverToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCloverToReport.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageCrap4jToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCrap4jToReport.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageHtmlToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageHtmlToReport.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CoveragePhpToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoveragePhpToReport.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageTextToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageTextToReport.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageXmlToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageXmlToReport.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Directory' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/Directory.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\DirectoryCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollection.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\DirectoryCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollectionIterator.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Exception' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Exception.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Extension' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/Extension.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\ExtensionCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollection.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\ExtensionCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollectionIterator.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\File' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/File.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\FileCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollection.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\FileCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollectionIterator.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Generator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Generator.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Group' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Group.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\GroupCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollection.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\GroupCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollectionIterator.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Groups' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Groups.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\IniSetting' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSetting.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\IniSettingCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollection.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\IniSettingCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollectionIterator.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\IntroduceCoverageElement' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/IntroduceCoverageElement.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Loader' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Loader.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\LogToReportMigration' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/LogToReportMigration.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Junit' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Junit.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Logging' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Logging.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TeamCity' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TeamCity.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Html' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Html.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Text' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Text.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Xml' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Xml.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Text' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Text.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Migration' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/Migration.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\MigrationBuilder' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilder.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\MigrationBuilderException' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilderException.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\MigrationException' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationException.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Migrator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrator.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromFilterWhitelistToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromRootToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromRootToCoverage.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistDirectoriesToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistDirectoriesToCoverage.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistExcludesToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistExcludesToCoverage.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\PHPUnit' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/PHPUnit.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Php' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Php.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\PhpHandler' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/PhpHandler.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveCacheTokensAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveCacheTokensAttribute.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveEmptyFilter' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveEmptyFilter.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveLogTypes' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveLogTypes.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\TestDirectory' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectory.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\TestDirectoryCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollection.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\TestDirectoryCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollectionIterator.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\TestFile' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFile.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\TestFileCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollection.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\TestFileCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollectionIterator.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\TestSuite' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuite.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\TestSuiteCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollection.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\TestSuiteCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollectionIterator.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\UpdateSchemaLocationTo93' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/UpdateSchemaLocationTo93.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Variable' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Variable.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\VariableCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollection.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\VariableCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollectionIterator.php',
- 'PHPUnit\\Util\\Annotation\\DocBlock' => $vendorDir . '/phpunit/phpunit/src/Util/Annotation/DocBlock.php',
- 'PHPUnit\\Util\\Annotation\\Registry' => $vendorDir . '/phpunit/phpunit/src/Util/Annotation/Registry.php',
- 'PHPUnit\\Util\\Blacklist' => $vendorDir . '/phpunit/phpunit/src/Util/Blacklist.php',
- 'PHPUnit\\Util\\Color' => $vendorDir . '/phpunit/phpunit/src/Util/Color.php',
- 'PHPUnit\\Util\\ErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Util/ErrorHandler.php',
- 'PHPUnit\\Util\\Exception' => $vendorDir . '/phpunit/phpunit/src/Util/Exception.php',
- 'PHPUnit\\Util\\ExcludeList' => $vendorDir . '/phpunit/phpunit/src/Util/ExcludeList.php',
- 'PHPUnit\\Util\\FileLoader' => $vendorDir . '/phpunit/phpunit/src/Util/FileLoader.php',
- 'PHPUnit\\Util\\Filesystem' => $vendorDir . '/phpunit/phpunit/src/Util/Filesystem.php',
- 'PHPUnit\\Util\\Filter' => $vendorDir . '/phpunit/phpunit/src/Util/Filter.php',
- 'PHPUnit\\Util\\GlobalState' => $vendorDir . '/phpunit/phpunit/src/Util/GlobalState.php',
- 'PHPUnit\\Util\\InvalidDataSetException' => $vendorDir . '/phpunit/phpunit/src/Util/InvalidDataSetException.php',
- 'PHPUnit\\Util\\Json' => $vendorDir . '/phpunit/phpunit/src/Util/Json.php',
- 'PHPUnit\\Util\\Log\\JUnit' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JUnit.php',
- 'PHPUnit\\Util\\Log\\TeamCity' => $vendorDir . '/phpunit/phpunit/src/Util/Log/TeamCity.php',
- 'PHPUnit\\Util\\PHP\\AbstractPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php',
- 'PHPUnit\\Util\\PHP\\DefaultPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php',
- 'PHPUnit\\Util\\PHP\\WindowsPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php',
- 'PHPUnit\\Util\\Printer' => $vendorDir . '/phpunit/phpunit/src/Util/Printer.php',
- 'PHPUnit\\Util\\RegularExpression' => $vendorDir . '/phpunit/phpunit/src/Util/RegularExpression.php',
- 'PHPUnit\\Util\\Test' => $vendorDir . '/phpunit/phpunit/src/Util/Test.php',
- 'PHPUnit\\Util\\TestDox\\CliTestDoxPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/CliTestDoxPrinter.php',
- 'PHPUnit\\Util\\TestDox\\HtmlResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/HtmlResultPrinter.php',
- 'PHPUnit\\Util\\TestDox\\NamePrettifier' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php',
- 'PHPUnit\\Util\\TestDox\\ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php',
- 'PHPUnit\\Util\\TestDox\\TestDoxPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/TestDoxPrinter.php',
- 'PHPUnit\\Util\\TestDox\\TextResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/TextResultPrinter.php',
- 'PHPUnit\\Util\\TestDox\\XmlResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/XmlResultPrinter.php',
- 'PHPUnit\\Util\\TextTestListRenderer' => $vendorDir . '/phpunit/phpunit/src/Util/TextTestListRenderer.php',
- 'PHPUnit\\Util\\Type' => $vendorDir . '/phpunit/phpunit/src/Util/Type.php',
- 'PHPUnit\\Util\\VersionComparisonOperator' => $vendorDir . '/phpunit/phpunit/src/Util/VersionComparisonOperator.php',
- 'PHPUnit\\Util\\XdebugFilterScriptGenerator' => $vendorDir . '/phpunit/phpunit/src/Util/XdebugFilterScriptGenerator.php',
- 'PHPUnit\\Util\\Xml' => $vendorDir . '/phpunit/phpunit/src/Util/Xml.php',
- 'PHPUnit\\Util\\XmlTestListRenderer' => $vendorDir . '/phpunit/phpunit/src/Util/XmlTestListRenderer.php',
- 'PHPUnit\\Util\\Xml\\Exception' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/Exception.php',
- 'PHPUnit\\Util\\Xml\\FailedSchemaDetectionResult' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/FailedSchemaDetectionResult.php',
- 'PHPUnit\\Util\\Xml\\Loader' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/Loader.php',
- 'PHPUnit\\Util\\Xml\\SchemaDetectionResult' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/SchemaDetectionResult.php',
- 'PHPUnit\\Util\\Xml\\SchemaDetector' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/SchemaDetector.php',
- 'PHPUnit\\Util\\Xml\\SchemaFinder' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/SchemaFinder.php',
- 'PHPUnit\\Util\\Xml\\SnapshotNodeList' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/SnapshotNodeList.php',
- 'PHPUnit\\Util\\Xml\\SuccessfulSchemaDetectionResult' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/SuccessfulSchemaDetectionResult.php',
- 'PHPUnit\\Util\\Xml\\ValidationResult' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/ValidationResult.php',
- 'PHPUnit\\Util\\Xml\\Validator' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/Validator.php',
- 'PharIo\\Manifest\\Application' => $vendorDir . '/phar-io/manifest/src/values/Application.php',
- 'PharIo\\Manifest\\ApplicationName' => $vendorDir . '/phar-io/manifest/src/values/ApplicationName.php',
- 'PharIo\\Manifest\\Author' => $vendorDir . '/phar-io/manifest/src/values/Author.php',
- 'PharIo\\Manifest\\AuthorCollection' => $vendorDir . '/phar-io/manifest/src/values/AuthorCollection.php',
- 'PharIo\\Manifest\\AuthorCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/AuthorCollectionIterator.php',
- 'PharIo\\Manifest\\AuthorElement' => $vendorDir . '/phar-io/manifest/src/xml/AuthorElement.php',
- 'PharIo\\Manifest\\AuthorElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/AuthorElementCollection.php',
- 'PharIo\\Manifest\\BundledComponent' => $vendorDir . '/phar-io/manifest/src/values/BundledComponent.php',
- 'PharIo\\Manifest\\BundledComponentCollection' => $vendorDir . '/phar-io/manifest/src/values/BundledComponentCollection.php',
- 'PharIo\\Manifest\\BundledComponentCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/BundledComponentCollectionIterator.php',
- 'PharIo\\Manifest\\BundlesElement' => $vendorDir . '/phar-io/manifest/src/xml/BundlesElement.php',
- 'PharIo\\Manifest\\ComponentElement' => $vendorDir . '/phar-io/manifest/src/xml/ComponentElement.php',
- 'PharIo\\Manifest\\ComponentElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ComponentElementCollection.php',
- 'PharIo\\Manifest\\ContainsElement' => $vendorDir . '/phar-io/manifest/src/xml/ContainsElement.php',
- 'PharIo\\Manifest\\CopyrightElement' => $vendorDir . '/phar-io/manifest/src/xml/CopyrightElement.php',
- 'PharIo\\Manifest\\CopyrightInformation' => $vendorDir . '/phar-io/manifest/src/values/CopyrightInformation.php',
- 'PharIo\\Manifest\\ElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ElementCollection.php',
- 'PharIo\\Manifest\\ElementCollectionException' => $vendorDir . '/phar-io/manifest/src/exceptions/ElementCollectionException.php',
- 'PharIo\\Manifest\\Email' => $vendorDir . '/phar-io/manifest/src/values/Email.php',
- 'PharIo\\Manifest\\Exception' => $vendorDir . '/phar-io/manifest/src/exceptions/Exception.php',
- 'PharIo\\Manifest\\ExtElement' => $vendorDir . '/phar-io/manifest/src/xml/ExtElement.php',
- 'PharIo\\Manifest\\ExtElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ExtElementCollection.php',
- 'PharIo\\Manifest\\Extension' => $vendorDir . '/phar-io/manifest/src/values/Extension.php',
- 'PharIo\\Manifest\\ExtensionElement' => $vendorDir . '/phar-io/manifest/src/xml/ExtensionElement.php',
- 'PharIo\\Manifest\\InvalidApplicationNameException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php',
- 'PharIo\\Manifest\\InvalidEmailException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidEmailException.php',
- 'PharIo\\Manifest\\InvalidUrlException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidUrlException.php',
- 'PharIo\\Manifest\\Library' => $vendorDir . '/phar-io/manifest/src/values/Library.php',
- 'PharIo\\Manifest\\License' => $vendorDir . '/phar-io/manifest/src/values/License.php',
- 'PharIo\\Manifest\\LicenseElement' => $vendorDir . '/phar-io/manifest/src/xml/LicenseElement.php',
- 'PharIo\\Manifest\\Manifest' => $vendorDir . '/phar-io/manifest/src/values/Manifest.php',
- 'PharIo\\Manifest\\ManifestDocument' => $vendorDir . '/phar-io/manifest/src/xml/ManifestDocument.php',
- 'PharIo\\Manifest\\ManifestDocumentException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestDocumentException.php',
- 'PharIo\\Manifest\\ManifestDocumentLoadingException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestDocumentLoadingException.php',
- 'PharIo\\Manifest\\ManifestDocumentMapper' => $vendorDir . '/phar-io/manifest/src/ManifestDocumentMapper.php',
- 'PharIo\\Manifest\\ManifestDocumentMapperException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php',
- 'PharIo\\Manifest\\ManifestElement' => $vendorDir . '/phar-io/manifest/src/xml/ManifestElement.php',
- 'PharIo\\Manifest\\ManifestElementException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestElementException.php',
- 'PharIo\\Manifest\\ManifestLoader' => $vendorDir . '/phar-io/manifest/src/ManifestLoader.php',
- 'PharIo\\Manifest\\ManifestLoaderException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestLoaderException.php',
- 'PharIo\\Manifest\\ManifestSerializer' => $vendorDir . '/phar-io/manifest/src/ManifestSerializer.php',
- 'PharIo\\Manifest\\PhpElement' => $vendorDir . '/phar-io/manifest/src/xml/PhpElement.php',
- 'PharIo\\Manifest\\PhpExtensionRequirement' => $vendorDir . '/phar-io/manifest/src/values/PhpExtensionRequirement.php',
- 'PharIo\\Manifest\\PhpVersionRequirement' => $vendorDir . '/phar-io/manifest/src/values/PhpVersionRequirement.php',
- 'PharIo\\Manifest\\Requirement' => $vendorDir . '/phar-io/manifest/src/values/Requirement.php',
- 'PharIo\\Manifest\\RequirementCollection' => $vendorDir . '/phar-io/manifest/src/values/RequirementCollection.php',
- 'PharIo\\Manifest\\RequirementCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/RequirementCollectionIterator.php',
- 'PharIo\\Manifest\\RequiresElement' => $vendorDir . '/phar-io/manifest/src/xml/RequiresElement.php',
- 'PharIo\\Manifest\\Type' => $vendorDir . '/phar-io/manifest/src/values/Type.php',
- 'PharIo\\Manifest\\Url' => $vendorDir . '/phar-io/manifest/src/values/Url.php',
- 'PharIo\\Version\\AbstractVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/AbstractVersionConstraint.php',
- 'PharIo\\Version\\AndVersionConstraintGroup' => $vendorDir . '/phar-io/version/src/constraints/AndVersionConstraintGroup.php',
- 'PharIo\\Version\\AnyVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/AnyVersionConstraint.php',
- 'PharIo\\Version\\BuildMetaData' => $vendorDir . '/phar-io/version/src/BuildMetaData.php',
- 'PharIo\\Version\\ExactVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/ExactVersionConstraint.php',
- 'PharIo\\Version\\Exception' => $vendorDir . '/phar-io/version/src/exceptions/Exception.php',
- 'PharIo\\Version\\GreaterThanOrEqualToVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/GreaterThanOrEqualToVersionConstraint.php',
- 'PharIo\\Version\\InvalidPreReleaseSuffixException' => $vendorDir . '/phar-io/version/src/exceptions/InvalidPreReleaseSuffixException.php',
- 'PharIo\\Version\\InvalidVersionException' => $vendorDir . '/phar-io/version/src/exceptions/InvalidVersionException.php',
- 'PharIo\\Version\\NoBuildMetaDataException' => $vendorDir . '/phar-io/version/src/exceptions/NoBuildMetaDataException.php',
- 'PharIo\\Version\\NoPreReleaseSuffixException' => $vendorDir . '/phar-io/version/src/exceptions/NoPreReleaseSuffixException.php',
- 'PharIo\\Version\\OrVersionConstraintGroup' => $vendorDir . '/phar-io/version/src/constraints/OrVersionConstraintGroup.php',
- 'PharIo\\Version\\PreReleaseSuffix' => $vendorDir . '/phar-io/version/src/PreReleaseSuffix.php',
- 'PharIo\\Version\\SpecificMajorAndMinorVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/SpecificMajorAndMinorVersionConstraint.php',
- 'PharIo\\Version\\SpecificMajorVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/SpecificMajorVersionConstraint.php',
- 'PharIo\\Version\\UnsupportedVersionConstraintException' => $vendorDir . '/phar-io/version/src/exceptions/UnsupportedVersionConstraintException.php',
- 'PharIo\\Version\\Version' => $vendorDir . '/phar-io/version/src/Version.php',
- 'PharIo\\Version\\VersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/VersionConstraint.php',
- 'PharIo\\Version\\VersionConstraintParser' => $vendorDir . '/phar-io/version/src/VersionConstraintParser.php',
- 'PharIo\\Version\\VersionConstraintValue' => $vendorDir . '/phar-io/version/src/VersionConstraintValue.php',
- 'PharIo\\Version\\VersionNumber' => $vendorDir . '/phar-io/version/src/VersionNumber.php',
- 'SebastianBergmann\\CliParser\\AmbiguousOptionException' => $vendorDir . '/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php',
- 'SebastianBergmann\\CliParser\\Exception' => $vendorDir . '/sebastian/cli-parser/src/exceptions/Exception.php',
- 'SebastianBergmann\\CliParser\\OptionDoesNotAllowArgumentException' => $vendorDir . '/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php',
- 'SebastianBergmann\\CliParser\\Parser' => $vendorDir . '/sebastian/cli-parser/src/Parser.php',
- 'SebastianBergmann\\CliParser\\RequiredOptionArgumentMissingException' => $vendorDir . '/sebastian/cli-parser/src/exceptions/RequiredOptionArgumentMissingException.php',
- 'SebastianBergmann\\CliParser\\UnknownOptionException' => $vendorDir . '/sebastian/cli-parser/src/exceptions/UnknownOptionException.php',
- 'SebastianBergmann\\CodeCoverage\\BranchAndPathCoverageNotSupportedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/BranchAndPathCoverageNotSupportedException.php',
- 'SebastianBergmann\\CodeCoverage\\CodeCoverage' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage.php',
- 'SebastianBergmann\\CodeCoverage\\DeadCodeDetectionNotSupportedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/DeadCodeDetectionNotSupportedException.php',
- 'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Driver.php',
- 'SebastianBergmann\\CodeCoverage\\Driver\\PathExistsButIsNotDirectoryException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/PathExistsButIsNotDirectoryException.php',
- 'SebastianBergmann\\CodeCoverage\\Driver\\PcovDriver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/PcovDriver.php',
- 'SebastianBergmann\\CodeCoverage\\Driver\\PcovNotAvailableException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/PcovNotAvailableException.php',
- 'SebastianBergmann\\CodeCoverage\\Driver\\PhpdbgDriver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/PhpdbgDriver.php',
- 'SebastianBergmann\\CodeCoverage\\Driver\\PhpdbgNotAvailableException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/PhpdbgNotAvailableException.php',
- 'SebastianBergmann\\CodeCoverage\\Driver\\Selector' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Selector.php',
- 'SebastianBergmann\\CodeCoverage\\Driver\\WriteOperationFailedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/WriteOperationFailedException.php',
- 'SebastianBergmann\\CodeCoverage\\Driver\\WrongXdebugVersionException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/WrongXdebugVersionException.php',
- 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug2Driver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Xdebug2Driver.php',
- 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug2NotEnabledException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/Xdebug2NotEnabledException.php',
- 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug3Driver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Xdebug3Driver.php',
- 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug3NotEnabledException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/Xdebug3NotEnabledException.php',
- 'SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotAvailableException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/XdebugNotAvailableException.php',
- 'SebastianBergmann\\CodeCoverage\\Exception' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/Exception.php',
- 'SebastianBergmann\\CodeCoverage\\Filter' => $vendorDir . '/phpunit/php-code-coverage/src/Filter.php',
- 'SebastianBergmann\\CodeCoverage\\InvalidArgumentException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php',
- 'SebastianBergmann\\CodeCoverage\\NoCodeCoverageDriverAvailableException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverAvailableException.php',
- 'SebastianBergmann\\CodeCoverage\\NoCodeCoverageDriverWithPathCoverageSupportAvailableException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverWithPathCoverageSupportAvailableException.php',
- 'SebastianBergmann\\CodeCoverage\\Node\\AbstractNode' => $vendorDir . '/phpunit/php-code-coverage/src/Node/AbstractNode.php',
- 'SebastianBergmann\\CodeCoverage\\Node\\Builder' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Builder.php',
- 'SebastianBergmann\\CodeCoverage\\Node\\CrapIndex' => $vendorDir . '/phpunit/php-code-coverage/src/Node/CrapIndex.php',
- 'SebastianBergmann\\CodeCoverage\\Node\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Directory.php',
- 'SebastianBergmann\\CodeCoverage\\Node\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Node/File.php',
- 'SebastianBergmann\\CodeCoverage\\Node\\Iterator' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Iterator.php',
- 'SebastianBergmann\\CodeCoverage\\ParserException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/ParserException.php',
- 'SebastianBergmann\\CodeCoverage\\ProcessedCodeCoverageData' => $vendorDir . '/phpunit/php-code-coverage/src/ProcessedCodeCoverageData.php',
- 'SebastianBergmann\\CodeCoverage\\RawCodeCoverageData' => $vendorDir . '/phpunit/php-code-coverage/src/RawCodeCoverageData.php',
- 'SebastianBergmann\\CodeCoverage\\ReflectionException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/ReflectionException.php',
- 'SebastianBergmann\\CodeCoverage\\ReportAlreadyFinalizedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/ReportAlreadyFinalizedException.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Clover' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Clover.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Cobertura' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Cobertura.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Crap4j' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Crap4j.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Dashboard' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Facade' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Facade.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Html\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Renderer' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\PHP' => $vendorDir . '/phpunit/php-code-coverage/src/Report/PHP.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Text' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Text.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\BuildInformation' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Coverage' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Coverage.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Directory.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Facade' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Facade.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/File.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Method' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Method.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Node' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Node.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Project' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Project.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Report' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Report.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Source' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Source.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Tests' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Tests.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Totals' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Totals.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Unit' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Unit.php',
- 'SebastianBergmann\\CodeCoverage\\StaticAnalysisCacheNotConfiguredException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/StaticAnalysisCacheNotConfiguredException.php',
- 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CacheWarmer' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/CacheWarmer.php',
- 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CachingFileAnalyser' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/CachingFileAnalyser.php',
- 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CodeUnitFindingVisitor' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/CodeUnitFindingVisitor.php',
- 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\ExecutableLinesFindingVisitor' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/ExecutableLinesFindingVisitor.php',
- 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\FileAnalyser' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/FileAnalyser.php',
- 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\IgnoredLinesFindingVisitor' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/IgnoredLinesFindingVisitor.php',
- 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\ParsingFileAnalyser' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/ParsingFileAnalyser.php',
- 'SebastianBergmann\\CodeCoverage\\TestIdMissingException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/TestIdMissingException.php',
- 'SebastianBergmann\\CodeCoverage\\UnintentionallyCoveredCodeException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php',
- 'SebastianBergmann\\CodeCoverage\\Util\\DirectoryCouldNotBeCreatedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/DirectoryCouldNotBeCreatedException.php',
- 'SebastianBergmann\\CodeCoverage\\Util\\Filesystem' => $vendorDir . '/phpunit/php-code-coverage/src/Util/Filesystem.php',
- 'SebastianBergmann\\CodeCoverage\\Util\\Percentage' => $vendorDir . '/phpunit/php-code-coverage/src/Util/Percentage.php',
- 'SebastianBergmann\\CodeCoverage\\Version' => $vendorDir . '/phpunit/php-code-coverage/src/Version.php',
- 'SebastianBergmann\\CodeCoverage\\XmlException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/XmlException.php',
- 'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => $vendorDir . '/sebastian/code-unit-reverse-lookup/src/Wizard.php',
- 'SebastianBergmann\\CodeUnit\\ClassMethodUnit' => $vendorDir . '/sebastian/code-unit/src/ClassMethodUnit.php',
- 'SebastianBergmann\\CodeUnit\\ClassUnit' => $vendorDir . '/sebastian/code-unit/src/ClassUnit.php',
- 'SebastianBergmann\\CodeUnit\\CodeUnit' => $vendorDir . '/sebastian/code-unit/src/CodeUnit.php',
- 'SebastianBergmann\\CodeUnit\\CodeUnitCollection' => $vendorDir . '/sebastian/code-unit/src/CodeUnitCollection.php',
- 'SebastianBergmann\\CodeUnit\\CodeUnitCollectionIterator' => $vendorDir . '/sebastian/code-unit/src/CodeUnitCollectionIterator.php',
- 'SebastianBergmann\\CodeUnit\\Exception' => $vendorDir . '/sebastian/code-unit/src/exceptions/Exception.php',
- 'SebastianBergmann\\CodeUnit\\FunctionUnit' => $vendorDir . '/sebastian/code-unit/src/FunctionUnit.php',
- 'SebastianBergmann\\CodeUnit\\InterfaceMethodUnit' => $vendorDir . '/sebastian/code-unit/src/InterfaceMethodUnit.php',
- 'SebastianBergmann\\CodeUnit\\InterfaceUnit' => $vendorDir . '/sebastian/code-unit/src/InterfaceUnit.php',
- 'SebastianBergmann\\CodeUnit\\InvalidCodeUnitException' => $vendorDir . '/sebastian/code-unit/src/exceptions/InvalidCodeUnitException.php',
- 'SebastianBergmann\\CodeUnit\\Mapper' => $vendorDir . '/sebastian/code-unit/src/Mapper.php',
- 'SebastianBergmann\\CodeUnit\\NoTraitException' => $vendorDir . '/sebastian/code-unit/src/exceptions/NoTraitException.php',
- 'SebastianBergmann\\CodeUnit\\ReflectionException' => $vendorDir . '/sebastian/code-unit/src/exceptions/ReflectionException.php',
- 'SebastianBergmann\\CodeUnit\\TraitMethodUnit' => $vendorDir . '/sebastian/code-unit/src/TraitMethodUnit.php',
- 'SebastianBergmann\\CodeUnit\\TraitUnit' => $vendorDir . '/sebastian/code-unit/src/TraitUnit.php',
- 'SebastianBergmann\\Comparator\\ArrayComparator' => $vendorDir . '/sebastian/comparator/src/ArrayComparator.php',
- 'SebastianBergmann\\Comparator\\Comparator' => $vendorDir . '/sebastian/comparator/src/Comparator.php',
- 'SebastianBergmann\\Comparator\\ComparisonFailure' => $vendorDir . '/sebastian/comparator/src/ComparisonFailure.php',
- 'SebastianBergmann\\Comparator\\DOMNodeComparator' => $vendorDir . '/sebastian/comparator/src/DOMNodeComparator.php',
- 'SebastianBergmann\\Comparator\\DateTimeComparator' => $vendorDir . '/sebastian/comparator/src/DateTimeComparator.php',
- 'SebastianBergmann\\Comparator\\DoubleComparator' => $vendorDir . '/sebastian/comparator/src/DoubleComparator.php',
- 'SebastianBergmann\\Comparator\\Exception' => $vendorDir . '/sebastian/comparator/src/exceptions/Exception.php',
- 'SebastianBergmann\\Comparator\\ExceptionComparator' => $vendorDir . '/sebastian/comparator/src/ExceptionComparator.php',
- 'SebastianBergmann\\Comparator\\Factory' => $vendorDir . '/sebastian/comparator/src/Factory.php',
- 'SebastianBergmann\\Comparator\\MockObjectComparator' => $vendorDir . '/sebastian/comparator/src/MockObjectComparator.php',
- 'SebastianBergmann\\Comparator\\NumericComparator' => $vendorDir . '/sebastian/comparator/src/NumericComparator.php',
- 'SebastianBergmann\\Comparator\\ObjectComparator' => $vendorDir . '/sebastian/comparator/src/ObjectComparator.php',
- 'SebastianBergmann\\Comparator\\ResourceComparator' => $vendorDir . '/sebastian/comparator/src/ResourceComparator.php',
- 'SebastianBergmann\\Comparator\\RuntimeException' => $vendorDir . '/sebastian/comparator/src/exceptions/RuntimeException.php',
- 'SebastianBergmann\\Comparator\\ScalarComparator' => $vendorDir . '/sebastian/comparator/src/ScalarComparator.php',
- 'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => $vendorDir . '/sebastian/comparator/src/SplObjectStorageComparator.php',
- 'SebastianBergmann\\Comparator\\TypeComparator' => $vendorDir . '/sebastian/comparator/src/TypeComparator.php',
- 'SebastianBergmann\\Complexity\\Calculator' => $vendorDir . '/sebastian/complexity/src/Calculator.php',
- 'SebastianBergmann\\Complexity\\Complexity' => $vendorDir . '/sebastian/complexity/src/Complexity/Complexity.php',
- 'SebastianBergmann\\Complexity\\ComplexityCalculatingVisitor' => $vendorDir . '/sebastian/complexity/src/Visitor/ComplexityCalculatingVisitor.php',
- 'SebastianBergmann\\Complexity\\ComplexityCollection' => $vendorDir . '/sebastian/complexity/src/Complexity/ComplexityCollection.php',
- 'SebastianBergmann\\Complexity\\ComplexityCollectionIterator' => $vendorDir . '/sebastian/complexity/src/Complexity/ComplexityCollectionIterator.php',
- 'SebastianBergmann\\Complexity\\CyclomaticComplexityCalculatingVisitor' => $vendorDir . '/sebastian/complexity/src/Visitor/CyclomaticComplexityCalculatingVisitor.php',
- 'SebastianBergmann\\Complexity\\Exception' => $vendorDir . '/sebastian/complexity/src/Exception/Exception.php',
- 'SebastianBergmann\\Complexity\\RuntimeException' => $vendorDir . '/sebastian/complexity/src/Exception/RuntimeException.php',
- 'SebastianBergmann\\Diff\\Chunk' => $vendorDir . '/sebastian/diff/src/Chunk.php',
- 'SebastianBergmann\\Diff\\ConfigurationException' => $vendorDir . '/sebastian/diff/src/Exception/ConfigurationException.php',
- 'SebastianBergmann\\Diff\\Diff' => $vendorDir . '/sebastian/diff/src/Diff.php',
- 'SebastianBergmann\\Diff\\Differ' => $vendorDir . '/sebastian/diff/src/Differ.php',
- 'SebastianBergmann\\Diff\\Exception' => $vendorDir . '/sebastian/diff/src/Exception/Exception.php',
- 'SebastianBergmann\\Diff\\InvalidArgumentException' => $vendorDir . '/sebastian/diff/src/Exception/InvalidArgumentException.php',
- 'SebastianBergmann\\Diff\\Line' => $vendorDir . '/sebastian/diff/src/Line.php',
- 'SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php',
- 'SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php',
- 'SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php',
- 'SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php',
- 'SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => $vendorDir . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php',
- 'SebastianBergmann\\Diff\\Output\\StrictUnifiedDiffOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php',
- 'SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php',
- 'SebastianBergmann\\Diff\\Parser' => $vendorDir . '/sebastian/diff/src/Parser.php',
- 'SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php',
- 'SebastianBergmann\\Environment\\Console' => $vendorDir . '/sebastian/environment/src/Console.php',
- 'SebastianBergmann\\Environment\\OperatingSystem' => $vendorDir . '/sebastian/environment/src/OperatingSystem.php',
- 'SebastianBergmann\\Environment\\Runtime' => $vendorDir . '/sebastian/environment/src/Runtime.php',
- 'SebastianBergmann\\Exporter\\Exporter' => $vendorDir . '/sebastian/exporter/src/Exporter.php',
- 'SebastianBergmann\\FileIterator\\Facade' => $vendorDir . '/phpunit/php-file-iterator/src/Facade.php',
- 'SebastianBergmann\\FileIterator\\Factory' => $vendorDir . '/phpunit/php-file-iterator/src/Factory.php',
- 'SebastianBergmann\\FileIterator\\Iterator' => $vendorDir . '/phpunit/php-file-iterator/src/Iterator.php',
- 'SebastianBergmann\\GlobalState\\CodeExporter' => $vendorDir . '/sebastian/global-state/src/CodeExporter.php',
- 'SebastianBergmann\\GlobalState\\Exception' => $vendorDir . '/sebastian/global-state/src/exceptions/Exception.php',
- 'SebastianBergmann\\GlobalState\\ExcludeList' => $vendorDir . '/sebastian/global-state/src/ExcludeList.php',
- 'SebastianBergmann\\GlobalState\\Restorer' => $vendorDir . '/sebastian/global-state/src/Restorer.php',
- 'SebastianBergmann\\GlobalState\\RuntimeException' => $vendorDir . '/sebastian/global-state/src/exceptions/RuntimeException.php',
- 'SebastianBergmann\\GlobalState\\Snapshot' => $vendorDir . '/sebastian/global-state/src/Snapshot.php',
- 'SebastianBergmann\\Invoker\\Exception' => $vendorDir . '/phpunit/php-invoker/src/exceptions/Exception.php',
- 'SebastianBergmann\\Invoker\\Invoker' => $vendorDir . '/phpunit/php-invoker/src/Invoker.php',
- 'SebastianBergmann\\Invoker\\ProcessControlExtensionNotLoadedException' => $vendorDir . '/phpunit/php-invoker/src/exceptions/ProcessControlExtensionNotLoadedException.php',
- 'SebastianBergmann\\Invoker\\TimeoutException' => $vendorDir . '/phpunit/php-invoker/src/exceptions/TimeoutException.php',
- 'SebastianBergmann\\LinesOfCode\\Counter' => $vendorDir . '/sebastian/lines-of-code/src/Counter.php',
- 'SebastianBergmann\\LinesOfCode\\Exception' => $vendorDir . '/sebastian/lines-of-code/src/Exception/Exception.php',
- 'SebastianBergmann\\LinesOfCode\\IllogicalValuesException' => $vendorDir . '/sebastian/lines-of-code/src/Exception/IllogicalValuesException.php',
- 'SebastianBergmann\\LinesOfCode\\LineCountingVisitor' => $vendorDir . '/sebastian/lines-of-code/src/LineCountingVisitor.php',
- 'SebastianBergmann\\LinesOfCode\\LinesOfCode' => $vendorDir . '/sebastian/lines-of-code/src/LinesOfCode.php',
- 'SebastianBergmann\\LinesOfCode\\NegativeValueException' => $vendorDir . '/sebastian/lines-of-code/src/Exception/NegativeValueException.php',
- 'SebastianBergmann\\LinesOfCode\\RuntimeException' => $vendorDir . '/sebastian/lines-of-code/src/Exception/RuntimeException.php',
- 'SebastianBergmann\\ObjectEnumerator\\Enumerator' => $vendorDir . '/sebastian/object-enumerator/src/Enumerator.php',
- 'SebastianBergmann\\ObjectEnumerator\\Exception' => $vendorDir . '/sebastian/object-enumerator/src/Exception.php',
- 'SebastianBergmann\\ObjectEnumerator\\InvalidArgumentException' => $vendorDir . '/sebastian/object-enumerator/src/InvalidArgumentException.php',
- 'SebastianBergmann\\ObjectReflector\\Exception' => $vendorDir . '/sebastian/object-reflector/src/Exception.php',
- 'SebastianBergmann\\ObjectReflector\\InvalidArgumentException' => $vendorDir . '/sebastian/object-reflector/src/InvalidArgumentException.php',
- 'SebastianBergmann\\ObjectReflector\\ObjectReflector' => $vendorDir . '/sebastian/object-reflector/src/ObjectReflector.php',
- 'SebastianBergmann\\RecursionContext\\Context' => $vendorDir . '/sebastian/recursion-context/src/Context.php',
- 'SebastianBergmann\\RecursionContext\\Exception' => $vendorDir . '/sebastian/recursion-context/src/Exception.php',
- 'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => $vendorDir . '/sebastian/recursion-context/src/InvalidArgumentException.php',
- 'SebastianBergmann\\ResourceOperations\\ResourceOperations' => $vendorDir . '/sebastian/resource-operations/src/ResourceOperations.php',
- 'SebastianBergmann\\Template\\Exception' => $vendorDir . '/phpunit/php-text-template/src/exceptions/Exception.php',
- 'SebastianBergmann\\Template\\InvalidArgumentException' => $vendorDir . '/phpunit/php-text-template/src/exceptions/InvalidArgumentException.php',
- 'SebastianBergmann\\Template\\RuntimeException' => $vendorDir . '/phpunit/php-text-template/src/exceptions/RuntimeException.php',
- 'SebastianBergmann\\Template\\Template' => $vendorDir . '/phpunit/php-text-template/src/Template.php',
- 'SebastianBergmann\\Timer\\Duration' => $vendorDir . '/phpunit/php-timer/src/Duration.php',
- 'SebastianBergmann\\Timer\\Exception' => $vendorDir . '/phpunit/php-timer/src/exceptions/Exception.php',
- 'SebastianBergmann\\Timer\\NoActiveTimerException' => $vendorDir . '/phpunit/php-timer/src/exceptions/NoActiveTimerException.php',
- 'SebastianBergmann\\Timer\\ResourceUsageFormatter' => $vendorDir . '/phpunit/php-timer/src/ResourceUsageFormatter.php',
- 'SebastianBergmann\\Timer\\TimeSinceStartOfRequestNotAvailableException' => $vendorDir . '/phpunit/php-timer/src/exceptions/TimeSinceStartOfRequestNotAvailableException.php',
- 'SebastianBergmann\\Timer\\Timer' => $vendorDir . '/phpunit/php-timer/src/Timer.php',
- 'SebastianBergmann\\Type\\CallableType' => $vendorDir . '/sebastian/type/src/CallableType.php',
- 'SebastianBergmann\\Type\\Exception' => $vendorDir . '/sebastian/type/src/exception/Exception.php',
- 'SebastianBergmann\\Type\\FalseType' => $vendorDir . '/sebastian/type/src/FalseType.php',
- 'SebastianBergmann\\Type\\GenericObjectType' => $vendorDir . '/sebastian/type/src/GenericObjectType.php',
- 'SebastianBergmann\\Type\\IterableType' => $vendorDir . '/sebastian/type/src/IterableType.php',
- 'SebastianBergmann\\Type\\LogicException' => $vendorDir . '/sebastian/type/src/exception/LogicException.php',
- 'SebastianBergmann\\Type\\MixedType' => $vendorDir . '/sebastian/type/src/MixedType.php',
- 'SebastianBergmann\\Type\\NullType' => $vendorDir . '/sebastian/type/src/NullType.php',
- 'SebastianBergmann\\Type\\ObjectType' => $vendorDir . '/sebastian/type/src/ObjectType.php',
- 'SebastianBergmann\\Type\\ReflectionMapper' => $vendorDir . '/sebastian/type/src/ReflectionMapper.php',
- 'SebastianBergmann\\Type\\RuntimeException' => $vendorDir . '/sebastian/type/src/exception/RuntimeException.php',
- 'SebastianBergmann\\Type\\SimpleType' => $vendorDir . '/sebastian/type/src/SimpleType.php',
- 'SebastianBergmann\\Type\\StaticType' => $vendorDir . '/sebastian/type/src/StaticType.php',
- 'SebastianBergmann\\Type\\Type' => $vendorDir . '/sebastian/type/src/Type.php',
- 'SebastianBergmann\\Type\\TypeName' => $vendorDir . '/sebastian/type/src/TypeName.php',
- 'SebastianBergmann\\Type\\UnionType' => $vendorDir . '/sebastian/type/src/UnionType.php',
- 'SebastianBergmann\\Type\\UnknownType' => $vendorDir . '/sebastian/type/src/UnknownType.php',
- 'SebastianBergmann\\Type\\VoidType' => $vendorDir . '/sebastian/type/src/VoidType.php',
- 'SebastianBergmann\\Version' => $vendorDir . '/sebastian/version/src/Version.php',
- 'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
- 'TheSeer\\Tokenizer\\Exception' => $vendorDir . '/theseer/tokenizer/src/Exception.php',
- 'TheSeer\\Tokenizer\\NamespaceUri' => $vendorDir . '/theseer/tokenizer/src/NamespaceUri.php',
- 'TheSeer\\Tokenizer\\NamespaceUriException' => $vendorDir . '/theseer/tokenizer/src/NamespaceUriException.php',
- 'TheSeer\\Tokenizer\\Token' => $vendorDir . '/theseer/tokenizer/src/Token.php',
- 'TheSeer\\Tokenizer\\TokenCollection' => $vendorDir . '/theseer/tokenizer/src/TokenCollection.php',
- 'TheSeer\\Tokenizer\\TokenCollectionException' => $vendorDir . '/theseer/tokenizer/src/TokenCollectionException.php',
- 'TheSeer\\Tokenizer\\Tokenizer' => $vendorDir . '/theseer/tokenizer/src/Tokenizer.php',
- 'TheSeer\\Tokenizer\\XMLSerializer' => $vendorDir . '/theseer/tokenizer/src/XMLSerializer.php',
- 'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
- 'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
- 'WhereClause' => $vendorDir . '/sergeytsalkov/meekrodb/db.class.php',
- 'kakao\\KakaoKey' => $baseDir . '/d_setting/KakaoKey.php',
- 'sammo\\RootDB' => $baseDir . '/d_setting/RootDB.php',
- 'sammo\\ServConfig' => $baseDir . '/d_setting/ServConfig.php',
-);
diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php
deleted file mode 100644
index 71cb0a9b..00000000
--- a/vendor/composer/autoload_files.php
+++ /dev/null
@@ -1,36 +0,0 @@
- $vendorDir . '/phpunit/phpunit/src/Framework/Assert/Functions.php',
- 'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php',
- '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
- '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php',
- '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php',
- 'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php',
- '8825ede83f2f289127722d4e842cf7e8' => $vendorDir . '/symfony/polyfill-intl-grapheme/bootstrap.php',
- '0d59ee240a4cd96ddbb4ff164fccea4d' => $vendorDir . '/symfony/polyfill-php73/bootstrap.php',
- 'b6b991a57620e2fb6b2f66f03fe9ddc2' => $vendorDir . '/symfony/string/Resources/functions.php',
- '60799491728b879e74601d83e38b2cad' => $vendorDir . '/illuminate/collections/helpers.php',
- 'a1105708a18b76903365ca1c4aa61b02' => $vendorDir . '/symfony/translation/Resources/functions.php',
- '72579e7bd17821bb1321b87411366eae' => $vendorDir . '/illuminate/support/helpers.php',
- '2b9d0f43f9552984cfa82fee95491826' => $vendorDir . '/sabre/event/lib/coroutine.php',
- 'd81bab31d3feb45bfe2f283ea3c8fdf7' => $vendorDir . '/sabre/event/lib/Loop/functions.php',
- 'a1cce3d26cc15c00fcd0b3354bd72c88' => $vendorDir . '/sabre/event/lib/Promise/functions.php',
- '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
- '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php',
- '2cffec82183ee1cea088009cef9a6fc3' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php',
- 'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php',
- 'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php',
- '6124b4c8570aa390c21fafd04a26c69f' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
- 'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php',
- '6714be961f4a45ae8b9a99d5d55c5d07' => $vendorDir . '/tysonandre/var_representation_polyfill/src/var_representation.php',
- '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
- 'ef65a1626449d89d0811cf9befce46f0' => $vendorDir . '/illuminate/events/functions.php',
- '5b154887902198b16314243c6e0e3e19' => $vendorDir . '/pguardiario/phpuri/phpuri.php',
- '870dc64919afa8b0f700701bb2c6a783' => $baseDir . '/f_config/config.php',
-);
diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php
deleted file mode 100644
index aa2d6c5f..00000000
--- a/vendor/composer/autoload_namespaces.php
+++ /dev/null
@@ -1,14 +0,0 @@
- array($vendorDir . '/brandonwamboldt/utilphp/src'),
- 'ParsedownExtra' => array($vendorDir . '/erusev/parsedown-extra'),
- 'Parsedown' => array($vendorDir . '/erusev/parsedown'),
- 'JsonMapper' => array($vendorDir . '/netresearch/jsonmapper/src'),
- 'HTMLPurifier' => array($vendorDir . '/ezyang/htmlpurifier/library'),
-);
diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php
deleted file mode 100644
index 88b9ca80..00000000
--- a/vendor/composer/autoload_psr4.php
+++ /dev/null
@@ -1,62 +0,0 @@
- array($vendorDir . '/voku/portable-ascii/src/voku'),
- 'sammo\\' => array($baseDir . '/src/sammo'),
- 'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-common/src', $vendorDir . '/phpdocumentor/reflection-docblock/src', $vendorDir . '/phpdocumentor/type-resolver/src'),
- 'kakao\\' => array($baseDir . '/src/kakao'),
- 'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'),
- 'VarRepresentation\\' => array($vendorDir . '/tysonandre/var_representation_polyfill/src/VarRepresentation'),
- 'Valitron\\' => array($vendorDir . '/vlucas/valitron/src/Valitron'),
- 'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'),
- 'Symfony\\Polyfill\\Php73\\' => array($vendorDir . '/symfony/polyfill-php73'),
- 'Symfony\\Polyfill\\Php72\\' => array($vendorDir . '/symfony/polyfill-php72'),
- 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
- 'Symfony\\Polyfill\\Intl\\Normalizer\\' => array($vendorDir . '/symfony/polyfill-intl-normalizer'),
- 'Symfony\\Polyfill\\Intl\\Idn\\' => array($vendorDir . '/symfony/polyfill-intl-idn'),
- 'Symfony\\Polyfill\\Intl\\Grapheme\\' => array($vendorDir . '/symfony/polyfill-intl-grapheme'),
- 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'),
- 'Symfony\\Contracts\\Translation\\' => array($vendorDir . '/symfony/translation-contracts'),
- 'Symfony\\Contracts\\Service\\' => array($vendorDir . '/symfony/service-contracts'),
- 'Symfony\\Component\\Translation\\' => array($vendorDir . '/symfony/translation'),
- 'Symfony\\Component\\String\\' => array($vendorDir . '/symfony/string'),
- 'Symfony\\Component\\Lock\\' => array($vendorDir . '/symfony/lock'),
- 'Symfony\\Component\\Console\\' => array($vendorDir . '/symfony/console'),
- 'Spatie\\DataTransferObject\\' => array($vendorDir . '/spatie/data-transfer-object/src'),
- 'Sabre\\Event\\' => array($vendorDir . '/sabre/event/lib'),
- 'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'),
- 'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'),
- 'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'),
- 'Psr\\Container\\' => array($vendorDir . '/psr/container/src'),
- 'Prophecy\\' => array($vendorDir . '/phpspec/prophecy/src/Prophecy'),
- 'PhpParser\\' => array($vendorDir . '/nikic/php-parser/lib/PhpParser'),
- 'PhpExtended\\Tail\\' => array($vendorDir . '/php-extended/php-tail/src'),
- 'PhpExtended\\System\\' => array($vendorDir . '/php-extended/php-system/src'),
- 'Phan\\' => array($vendorDir . '/phan/phan/src/Phan'),
- 'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'),
- 'Microsoft\\PhpParser\\' => array($vendorDir . '/microsoft/tolerant-php-parser/src'),
- 'Medoo\\' => array($vendorDir . '/catfan/medoo/src'),
- 'League\\Plates\\' => array($vendorDir . '/league/plates/src'),
- 'Illuminate\\Support\\' => array($vendorDir . '/illuminate/collections', $vendorDir . '/illuminate/macroable', $vendorDir . '/illuminate/support'),
- 'Illuminate\\Pipeline\\' => array($vendorDir . '/illuminate/pipeline'),
- 'Illuminate\\Events\\' => array($vendorDir . '/illuminate/events'),
- 'Illuminate\\Database\\' => array($vendorDir . '/illuminate/database'),
- 'Illuminate\\Contracts\\' => array($vendorDir . '/illuminate/contracts'),
- 'Illuminate\\Container\\' => array($vendorDir . '/illuminate/container'),
- 'Illuminate\\Bus\\' => array($vendorDir . '/illuminate/bus'),
- 'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'),
- 'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'),
- 'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'),
- 'Doctrine\\Instantiator\\' => array($vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator'),
- 'Doctrine\\Inflector\\' => array($vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector'),
- 'DeepCopy\\' => array($vendorDir . '/myclabs/deep-copy/src/DeepCopy'),
- 'Composer\\XdebugHandler\\' => array($vendorDir . '/composer/xdebug-handler/src'),
- 'Composer\\Semver\\' => array($vendorDir . '/composer/semver/src'),
- 'Carbon\\' => array($vendorDir . '/nesbot/carbon/src/Carbon'),
- 'AdvancedJsonRpc\\' => array($vendorDir . '/felixfbecker/advanced-json-rpc/lib'),
-);
diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php
deleted file mode 100644
index e63127b9..00000000
--- a/vendor/composer/autoload_real.php
+++ /dev/null
@@ -1,75 +0,0 @@
-= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
- if ($useStaticLoader) {
- require __DIR__ . '/autoload_static.php';
-
- call_user_func(\Composer\Autoload\ComposerStaticInit67b09c83b85c3bc0027caefe5bba171a::getInitializer($loader));
- } else {
- $map = require __DIR__ . '/autoload_namespaces.php';
- foreach ($map as $namespace => $path) {
- $loader->set($namespace, $path);
- }
-
- $map = require __DIR__ . '/autoload_psr4.php';
- foreach ($map as $namespace => $path) {
- $loader->setPsr4($namespace, $path);
- }
-
- $classMap = require __DIR__ . '/autoload_classmap.php';
- if ($classMap) {
- $loader->addClassMap($classMap);
- }
- }
-
- $loader->register(true);
-
- if ($useStaticLoader) {
- $includeFiles = Composer\Autoload\ComposerStaticInit67b09c83b85c3bc0027caefe5bba171a::$files;
- } else {
- $includeFiles = require __DIR__ . '/autoload_files.php';
- }
- foreach ($includeFiles as $fileIdentifier => $file) {
- composerRequire67b09c83b85c3bc0027caefe5bba171a($fileIdentifier, $file);
- }
-
- return $loader;
- }
-}
-
-function composerRequire67b09c83b85c3bc0027caefe5bba171a($fileIdentifier, $file)
-{
- if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
- require $file;
-
- $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
- }
-}
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
deleted file mode 100644
index f7069072..00000000
--- a/vendor/composer/autoload_static.php
+++ /dev/null
@@ -1,1143 +0,0 @@
- __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert/Functions.php',
- 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
- '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
- '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php',
- '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
- 'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php',
- '8825ede83f2f289127722d4e842cf7e8' => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme/bootstrap.php',
- '0d59ee240a4cd96ddbb4ff164fccea4d' => __DIR__ . '/..' . '/symfony/polyfill-php73/bootstrap.php',
- 'b6b991a57620e2fb6b2f66f03fe9ddc2' => __DIR__ . '/..' . '/symfony/string/Resources/functions.php',
- '60799491728b879e74601d83e38b2cad' => __DIR__ . '/..' . '/illuminate/collections/helpers.php',
- 'a1105708a18b76903365ca1c4aa61b02' => __DIR__ . '/..' . '/symfony/translation/Resources/functions.php',
- '72579e7bd17821bb1321b87411366eae' => __DIR__ . '/..' . '/illuminate/support/helpers.php',
- '2b9d0f43f9552984cfa82fee95491826' => __DIR__ . '/..' . '/sabre/event/lib/coroutine.php',
- 'd81bab31d3feb45bfe2f283ea3c8fdf7' => __DIR__ . '/..' . '/sabre/event/lib/Loop/functions.php',
- 'a1cce3d26cc15c00fcd0b3354bd72c88' => __DIR__ . '/..' . '/sabre/event/lib/Promise/functions.php',
- '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
- '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php',
- '2cffec82183ee1cea088009cef9a6fc3' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php',
- 'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php',
- 'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php',
- '6124b4c8570aa390c21fafd04a26c69f' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
- 'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php',
- '6714be961f4a45ae8b9a99d5d55c5d07' => __DIR__ . '/..' . '/tysonandre/var_representation_polyfill/src/var_representation.php',
- '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php',
- 'ef65a1626449d89d0811cf9befce46f0' => __DIR__ . '/..' . '/illuminate/events/functions.php',
- '5b154887902198b16314243c6e0e3e19' => __DIR__ . '/..' . '/pguardiario/phpuri/phpuri.php',
- '870dc64919afa8b0f700701bb2c6a783' => __DIR__ . '/../..' . '/f_config/config.php',
- );
-
- public static $prefixLengthsPsr4 = array (
- 'v' =>
- array (
- 'voku\\' => 5,
- ),
- 's' =>
- array (
- 'sammo\\' => 6,
- ),
- 'p' =>
- array (
- 'phpDocumentor\\Reflection\\' => 25,
- ),
- 'k' =>
- array (
- 'kakao\\' => 6,
- ),
- 'W' =>
- array (
- 'Webmozart\\Assert\\' => 17,
- ),
- 'V' =>
- array (
- 'VarRepresentation\\' => 18,
- 'Valitron\\' => 9,
- ),
- 'S' =>
- array (
- 'Symfony\\Polyfill\\Php80\\' => 23,
- 'Symfony\\Polyfill\\Php73\\' => 23,
- 'Symfony\\Polyfill\\Php72\\' => 23,
- 'Symfony\\Polyfill\\Mbstring\\' => 26,
- 'Symfony\\Polyfill\\Intl\\Normalizer\\' => 33,
- 'Symfony\\Polyfill\\Intl\\Idn\\' => 26,
- 'Symfony\\Polyfill\\Intl\\Grapheme\\' => 31,
- 'Symfony\\Polyfill\\Ctype\\' => 23,
- 'Symfony\\Contracts\\Translation\\' => 30,
- 'Symfony\\Contracts\\Service\\' => 26,
- 'Symfony\\Component\\Translation\\' => 30,
- 'Symfony\\Component\\String\\' => 25,
- 'Symfony\\Component\\Lock\\' => 23,
- 'Symfony\\Component\\Console\\' => 26,
- 'Spatie\\DataTransferObject\\' => 26,
- 'Sabre\\Event\\' => 12,
- ),
- 'P' =>
- array (
- 'Psr\\SimpleCache\\' => 16,
- 'Psr\\Log\\' => 8,
- 'Psr\\Http\\Message\\' => 17,
- 'Psr\\Container\\' => 14,
- 'Prophecy\\' => 9,
- 'PhpParser\\' => 10,
- 'PhpExtended\\Tail\\' => 17,
- 'PhpExtended\\System\\' => 19,
- 'Phan\\' => 5,
- ),
- 'M' =>
- array (
- 'Monolog\\' => 8,
- 'Microsoft\\PhpParser\\' => 20,
- 'Medoo\\' => 6,
- ),
- 'L' =>
- array (
- 'League\\Plates\\' => 14,
- ),
- 'I' =>
- array (
- 'Illuminate\\Support\\' => 19,
- 'Illuminate\\Pipeline\\' => 20,
- 'Illuminate\\Events\\' => 18,
- 'Illuminate\\Database\\' => 20,
- 'Illuminate\\Contracts\\' => 21,
- 'Illuminate\\Container\\' => 21,
- 'Illuminate\\Bus\\' => 15,
- ),
- 'G' =>
- array (
- 'GuzzleHttp\\Psr7\\' => 16,
- 'GuzzleHttp\\Promise\\' => 19,
- 'GuzzleHttp\\' => 11,
- ),
- 'D' =>
- array (
- 'Doctrine\\Instantiator\\' => 22,
- 'Doctrine\\Inflector\\' => 19,
- 'DeepCopy\\' => 9,
- ),
- 'C' =>
- array (
- 'Composer\\XdebugHandler\\' => 23,
- 'Composer\\Semver\\' => 16,
- 'Carbon\\' => 7,
- ),
- 'A' =>
- array (
- 'AdvancedJsonRpc\\' => 16,
- ),
- );
-
- public static $prefixDirsPsr4 = array (
- 'voku\\' =>
- array (
- 0 => __DIR__ . '/..' . '/voku/portable-ascii/src/voku',
- ),
- 'sammo\\' =>
- array (
- 0 => __DIR__ . '/../..' . '/src/sammo',
- ),
- 'phpDocumentor\\Reflection\\' =>
- array (
- 0 => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src',
- 1 => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src',
- 2 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src',
- ),
- 'kakao\\' =>
- array (
- 0 => __DIR__ . '/../..' . '/src/kakao',
- ),
- 'Webmozart\\Assert\\' =>
- array (
- 0 => __DIR__ . '/..' . '/webmozart/assert/src',
- ),
- 'VarRepresentation\\' =>
- array (
- 0 => __DIR__ . '/..' . '/tysonandre/var_representation_polyfill/src/VarRepresentation',
- ),
- 'Valitron\\' =>
- array (
- 0 => __DIR__ . '/..' . '/vlucas/valitron/src/Valitron',
- ),
- 'Symfony\\Polyfill\\Php80\\' =>
- array (
- 0 => __DIR__ . '/..' . '/symfony/polyfill-php80',
- ),
- 'Symfony\\Polyfill\\Php73\\' =>
- array (
- 0 => __DIR__ . '/..' . '/symfony/polyfill-php73',
- ),
- 'Symfony\\Polyfill\\Php72\\' =>
- array (
- 0 => __DIR__ . '/..' . '/symfony/polyfill-php72',
- ),
- 'Symfony\\Polyfill\\Mbstring\\' =>
- array (
- 0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring',
- ),
- 'Symfony\\Polyfill\\Intl\\Normalizer\\' =>
- array (
- 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer',
- ),
- 'Symfony\\Polyfill\\Intl\\Idn\\' =>
- array (
- 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-idn',
- ),
- 'Symfony\\Polyfill\\Intl\\Grapheme\\' =>
- array (
- 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme',
- ),
- 'Symfony\\Polyfill\\Ctype\\' =>
- array (
- 0 => __DIR__ . '/..' . '/symfony/polyfill-ctype',
- ),
- 'Symfony\\Contracts\\Translation\\' =>
- array (
- 0 => __DIR__ . '/..' . '/symfony/translation-contracts',
- ),
- 'Symfony\\Contracts\\Service\\' =>
- array (
- 0 => __DIR__ . '/..' . '/symfony/service-contracts',
- ),
- 'Symfony\\Component\\Translation\\' =>
- array (
- 0 => __DIR__ . '/..' . '/symfony/translation',
- ),
- 'Symfony\\Component\\String\\' =>
- array (
- 0 => __DIR__ . '/..' . '/symfony/string',
- ),
- 'Symfony\\Component\\Lock\\' =>
- array (
- 0 => __DIR__ . '/..' . '/symfony/lock',
- ),
- 'Symfony\\Component\\Console\\' =>
- array (
- 0 => __DIR__ . '/..' . '/symfony/console',
- ),
- 'Spatie\\DataTransferObject\\' =>
- array (
- 0 => __DIR__ . '/..' . '/spatie/data-transfer-object/src',
- ),
- 'Sabre\\Event\\' =>
- array (
- 0 => __DIR__ . '/..' . '/sabre/event/lib',
- ),
- 'Psr\\SimpleCache\\' =>
- array (
- 0 => __DIR__ . '/..' . '/psr/simple-cache/src',
- ),
- 'Psr\\Log\\' =>
- array (
- 0 => __DIR__ . '/..' . '/psr/log/Psr/Log',
- ),
- 'Psr\\Http\\Message\\' =>
- array (
- 0 => __DIR__ . '/..' . '/psr/http-message/src',
- ),
- 'Psr\\Container\\' =>
- array (
- 0 => __DIR__ . '/..' . '/psr/container/src',
- ),
- 'Prophecy\\' =>
- array (
- 0 => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy',
- ),
- 'PhpParser\\' =>
- array (
- 0 => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser',
- ),
- 'PhpExtended\\Tail\\' =>
- array (
- 0 => __DIR__ . '/..' . '/php-extended/php-tail/src',
- ),
- 'PhpExtended\\System\\' =>
- array (
- 0 => __DIR__ . '/..' . '/php-extended/php-system/src',
- ),
- 'Phan\\' =>
- array (
- 0 => __DIR__ . '/..' . '/phan/phan/src/Phan',
- ),
- 'Monolog\\' =>
- array (
- 0 => __DIR__ . '/..' . '/monolog/monolog/src/Monolog',
- ),
- 'Microsoft\\PhpParser\\' =>
- array (
- 0 => __DIR__ . '/..' . '/microsoft/tolerant-php-parser/src',
- ),
- 'Medoo\\' =>
- array (
- 0 => __DIR__ . '/..' . '/catfan/medoo/src',
- ),
- 'League\\Plates\\' =>
- array (
- 0 => __DIR__ . '/..' . '/league/plates/src',
- ),
- 'Illuminate\\Support\\' =>
- array (
- 0 => __DIR__ . '/..' . '/illuminate/collections',
- 1 => __DIR__ . '/..' . '/illuminate/macroable',
- 2 => __DIR__ . '/..' . '/illuminate/support',
- ),
- 'Illuminate\\Pipeline\\' =>
- array (
- 0 => __DIR__ . '/..' . '/illuminate/pipeline',
- ),
- 'Illuminate\\Events\\' =>
- array (
- 0 => __DIR__ . '/..' . '/illuminate/events',
- ),
- 'Illuminate\\Database\\' =>
- array (
- 0 => __DIR__ . '/..' . '/illuminate/database',
- ),
- 'Illuminate\\Contracts\\' =>
- array (
- 0 => __DIR__ . '/..' . '/illuminate/contracts',
- ),
- 'Illuminate\\Container\\' =>
- array (
- 0 => __DIR__ . '/..' . '/illuminate/container',
- ),
- 'Illuminate\\Bus\\' =>
- array (
- 0 => __DIR__ . '/..' . '/illuminate/bus',
- ),
- 'GuzzleHttp\\Psr7\\' =>
- array (
- 0 => __DIR__ . '/..' . '/guzzlehttp/psr7/src',
- ),
- 'GuzzleHttp\\Promise\\' =>
- array (
- 0 => __DIR__ . '/..' . '/guzzlehttp/promises/src',
- ),
- 'GuzzleHttp\\' =>
- array (
- 0 => __DIR__ . '/..' . '/guzzlehttp/guzzle/src',
- ),
- 'Doctrine\\Instantiator\\' =>
- array (
- 0 => __DIR__ . '/..' . '/doctrine/instantiator/src/Doctrine/Instantiator',
- ),
- 'Doctrine\\Inflector\\' =>
- array (
- 0 => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector',
- ),
- 'DeepCopy\\' =>
- array (
- 0 => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy',
- ),
- 'Composer\\XdebugHandler\\' =>
- array (
- 0 => __DIR__ . '/..' . '/composer/xdebug-handler/src',
- ),
- 'Composer\\Semver\\' =>
- array (
- 0 => __DIR__ . '/..' . '/composer/semver/src',
- ),
- 'Carbon\\' =>
- array (
- 0 => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon',
- ),
- 'AdvancedJsonRpc\\' =>
- array (
- 0 => __DIR__ . '/..' . '/felixfbecker/advanced-json-rpc/lib',
- ),
- );
-
- public static $prefixesPsr0 = array (
- 'u' =>
- array (
- 'utilphp\\' =>
- array (
- 0 => __DIR__ . '/..' . '/brandonwamboldt/utilphp/src',
- ),
- ),
- 'P' =>
- array (
- 'ParsedownExtra' =>
- array (
- 0 => __DIR__ . '/..' . '/erusev/parsedown-extra',
- ),
- 'Parsedown' =>
- array (
- 0 => __DIR__ . '/..' . '/erusev/parsedown',
- ),
- ),
- 'J' =>
- array (
- 'JsonMapper' =>
- array (
- 0 => __DIR__ . '/..' . '/netresearch/jsonmapper/src',
- ),
- ),
- 'H' =>
- array (
- 'HTMLPurifier' =>
- array (
- 0 => __DIR__ . '/..' . '/ezyang/htmlpurifier/library',
- ),
- ),
- );
-
- public static $classMap = array (
- 'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
- 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
- 'DB' => __DIR__ . '/..' . '/sergeytsalkov/meekrodb/db.class.php',
- 'DBTransaction' => __DIR__ . '/..' . '/sergeytsalkov/meekrodb/db.class.php',
- 'FB' => __DIR__ . '/..' . '/firephp/firephp-core/lib/FirePHPCore/fb.php',
- 'FirePHP' => __DIR__ . '/..' . '/firephp/firephp-core/lib/FirePHPCore/FirePHP.class.php',
- 'HTMLPurifier_AttrDef_Float' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/AttrDef/Float.php',
- 'HTMLPurifier_AttrDef_HTML5_ARel' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/AttrDef/HTML5/ARel.php',
- 'HTMLPurifier_AttrDef_HTML5_Datetime' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/AttrDef/HTML5/Datetime.php',
- 'HTMLPurifier_AttrDef_HTML5_Duration' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/AttrDef/HTML5/Duration.php',
- 'HTMLPurifier_AttrDef_HTML5_Week' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/AttrDef/HTML5/Week.php',
- 'HTMLPurifier_AttrDef_HTML5_YearlessDate' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/AttrDef/HTML5/YearlessDate.php',
- 'HTMLPurifier_AttrDef_HTML_Bool2' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/AttrDef/HTML/Bool2.php',
- 'HTMLPurifier_AttrTransform_HTML5_Dialog' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/AttrTransform/HTML5/Dialog.php',
- 'HTMLPurifier_AttrTransform_HTML5_Progress' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/AttrTransform/HTML5/Progress.php',
- 'HTMLPurifier_AttrTransform_HTML5_Script' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/AttrTransform/HTML5/Script.php',
- 'HTMLPurifier_ChildDef_HTML5_Abstract' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/ChildDef/HTML5/Abstract.php',
- 'HTMLPurifier_ChildDef_HTML5_Details' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/ChildDef/HTML5/Details.php',
- 'HTMLPurifier_ChildDef_HTML5_Fieldset' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/ChildDef/HTML5/Fieldset.php',
- 'HTMLPurifier_ChildDef_HTML5_Figure' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/ChildDef/HTML5/Figure.php',
- 'HTMLPurifier_ChildDef_HTML5_Media' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/ChildDef/HTML5/Media.php',
- 'HTMLPurifier_ChildDef_HTML5_Picture' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/ChildDef/HTML5/Picture.php',
- 'HTMLPurifier_ChildDef_HTML5_Script' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/ChildDef/HTML5/Script.php',
- 'HTMLPurifier_ChildDef_HTML5_Time' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/ChildDef/HTML5/Time.php',
- 'HTMLPurifier_HTML5Config' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/HTML5Config.php',
- 'HTMLPurifier_HTML5Definition' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/HTML5Definition.php',
- 'HTMLPurifier_HTMLModule_HTML5_Bdo' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/HTMLModule/HTML5/Bdo.php',
- 'HTMLPurifier_HTMLModule_HTML5_Edit' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/HTMLModule/HTML5/Edit.php',
- 'HTMLPurifier_HTMLModule_HTML5_Forms' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/HTMLModule/HTML5/Forms.php',
- 'HTMLPurifier_HTMLModule_HTML5_Hypertext' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/HTMLModule/HTML5/Hypertext.php',
- 'HTMLPurifier_HTMLModule_HTML5_Iframe' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/HTMLModule/HTML5/Iframe.php',
- 'HTMLPurifier_HTMLModule_HTML5_Interactive' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/HTMLModule/HTML5/Interactive.php',
- 'HTMLPurifier_HTMLModule_HTML5_List' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/HTMLModule/HTML5/List.php',
- 'HTMLPurifier_HTMLModule_HTML5_Media' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/HTMLModule/HTML5/Media.php',
- 'HTMLPurifier_HTMLModule_HTML5_Ruby' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/HTMLModule/HTML5/Ruby.php',
- 'HTMLPurifier_HTMLModule_HTML5_SafeScripting' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/HTMLModule/HTML5/SafeScripting.php',
- 'HTMLPurifier_HTMLModule_HTML5_Scripting' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/HTMLModule/HTML5/Scripting.php',
- 'HTMLPurifier_HTMLModule_HTML5_Text' => __DIR__ . '/..' . '/xemlock/htmlpurifier-html5/library/HTMLPurifier/HTMLModule/HTML5/Text.php',
- 'JsonException' => __DIR__ . '/..' . '/symfony/polyfill-php73/Resources/stubs/JsonException.php',
- 'MeekroDB' => __DIR__ . '/..' . '/sergeytsalkov/meekrodb/db.class.php',
- 'MeekroDBEval' => __DIR__ . '/..' . '/sergeytsalkov/meekrodb/db.class.php',
- 'MeekroDBException' => __DIR__ . '/..' . '/sergeytsalkov/meekrodb/db.class.php',
- 'MeekroDBWalk' => __DIR__ . '/..' . '/sergeytsalkov/meekrodb/db.class.php',
- 'Nette\\ArgumentOutOfRangeException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
- 'Nette\\Bridges\\CacheDI\\CacheExtension' => __DIR__ . '/..' . '/nette/caching/src/Bridges/CacheDI/CacheExtension.php',
- 'Nette\\Bridges\\CacheLatte\\CacheMacro' => __DIR__ . '/..' . '/nette/caching/src/Bridges/CacheLatte/CacheMacro.php',
- 'Nette\\Caching\\BulkReader' => __DIR__ . '/..' . '/nette/caching/src/Caching/BulkReader.php',
- 'Nette\\Caching\\Cache' => __DIR__ . '/..' . '/nette/caching/src/Caching/Cache.php',
- 'Nette\\Caching\\IBulkReader' => __DIR__ . '/..' . '/nette/caching/src/compatibility.php',
- 'Nette\\Caching\\IStorage' => __DIR__ . '/..' . '/nette/caching/src/compatibility.php',
- 'Nette\\Caching\\OutputHelper' => __DIR__ . '/..' . '/nette/caching/src/Caching/OutputHelper.php',
- 'Nette\\Caching\\Storage' => __DIR__ . '/..' . '/nette/caching/src/Caching/Storage.php',
- 'Nette\\Caching\\Storages\\DevNullStorage' => __DIR__ . '/..' . '/nette/caching/src/Caching/Storages/DevNullStorage.php',
- 'Nette\\Caching\\Storages\\FileStorage' => __DIR__ . '/..' . '/nette/caching/src/Caching/Storages/FileStorage.php',
- 'Nette\\Caching\\Storages\\IJournal' => __DIR__ . '/..' . '/nette/caching/src/compatibility.php',
- 'Nette\\Caching\\Storages\\Journal' => __DIR__ . '/..' . '/nette/caching/src/Caching/Storages/Journal.php',
- 'Nette\\Caching\\Storages\\MemcachedStorage' => __DIR__ . '/..' . '/nette/caching/src/Caching/Storages/MemcachedStorage.php',
- 'Nette\\Caching\\Storages\\MemoryStorage' => __DIR__ . '/..' . '/nette/caching/src/Caching/Storages/MemoryStorage.php',
- 'Nette\\Caching\\Storages\\NewMemcachedStorage' => __DIR__ . '/..' . '/nette/caching/src/Caching/Storages/NewMemcachedStorage.php',
- 'Nette\\Caching\\Storages\\SQLiteJournal' => __DIR__ . '/..' . '/nette/caching/src/Caching/Storages/SQLiteJournal.php',
- 'Nette\\Caching\\Storages\\SQLiteStorage' => __DIR__ . '/..' . '/nette/caching/src/Caching/Storages/SQLiteStorage.php',
- 'Nette\\DeprecatedException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
- 'Nette\\DirectoryNotFoundException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
- 'Nette\\FileNotFoundException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
- 'Nette\\HtmlStringable' => __DIR__ . '/..' . '/nette/utils/src/HtmlStringable.php',
- 'Nette\\IOException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
- 'Nette\\InvalidArgumentException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
- 'Nette\\InvalidStateException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
- 'Nette\\Iterators\\CachingIterator' => __DIR__ . '/..' . '/nette/utils/src/Iterators/CachingIterator.php',
- 'Nette\\Iterators\\Mapper' => __DIR__ . '/..' . '/nette/utils/src/Iterators/Mapper.php',
- 'Nette\\Localization\\ITranslator' => __DIR__ . '/..' . '/nette/utils/src/compatibility.php',
- 'Nette\\Localization\\Translator' => __DIR__ . '/..' . '/nette/utils/src/Translator.php',
- 'Nette\\MemberAccessException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
- 'Nette\\NotImplementedException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
- 'Nette\\NotSupportedException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
- 'Nette\\OutOfRangeException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
- 'Nette\\SmartObject' => __DIR__ . '/..' . '/nette/utils/src/SmartObject.php',
- 'Nette\\StaticClass' => __DIR__ . '/..' . '/nette/utils/src/StaticClass.php',
- 'Nette\\UnexpectedValueException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
- 'Nette\\Utils\\ArrayHash' => __DIR__ . '/..' . '/nette/utils/src/Utils/ArrayHash.php',
- 'Nette\\Utils\\ArrayList' => __DIR__ . '/..' . '/nette/utils/src/Utils/ArrayList.php',
- 'Nette\\Utils\\Arrays' => __DIR__ . '/..' . '/nette/utils/src/Utils/Arrays.php',
- 'Nette\\Utils\\AssertionException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
- 'Nette\\Utils\\Callback' => __DIR__ . '/..' . '/nette/utils/src/Utils/Callback.php',
- 'Nette\\Utils\\DateTime' => __DIR__ . '/..' . '/nette/utils/src/Utils/DateTime.php',
- 'Nette\\Utils\\FileSystem' => __DIR__ . '/..' . '/nette/utils/src/Utils/FileSystem.php',
- 'Nette\\Utils\\Finder' => __DIR__ . '/..' . '/nette/finder/src/Utils/Finder.php',
- 'Nette\\Utils\\Floats' => __DIR__ . '/..' . '/nette/utils/src/Utils/Floats.php',
- 'Nette\\Utils\\Helpers' => __DIR__ . '/..' . '/nette/utils/src/Utils/Helpers.php',
- 'Nette\\Utils\\Html' => __DIR__ . '/..' . '/nette/utils/src/Utils/Html.php',
- 'Nette\\Utils\\IHtmlString' => __DIR__ . '/..' . '/nette/utils/src/compatibility.php',
- 'Nette\\Utils\\Image' => __DIR__ . '/..' . '/nette/utils/src/Utils/Image.php',
- 'Nette\\Utils\\ImageException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
- 'Nette\\Utils\\Json' => __DIR__ . '/..' . '/nette/utils/src/Utils/Json.php',
- 'Nette\\Utils\\JsonException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
- 'Nette\\Utils\\ObjectHelpers' => __DIR__ . '/..' . '/nette/utils/src/Utils/ObjectHelpers.php',
- 'Nette\\Utils\\ObjectMixin' => __DIR__ . '/..' . '/nette/utils/src/Utils/ObjectMixin.php',
- 'Nette\\Utils\\Paginator' => __DIR__ . '/..' . '/nette/utils/src/Utils/Paginator.php',
- 'Nette\\Utils\\Random' => __DIR__ . '/..' . '/nette/utils/src/Utils/Random.php',
- 'Nette\\Utils\\Reflection' => __DIR__ . '/..' . '/nette/utils/src/Utils/Reflection.php',
- 'Nette\\Utils\\RegexpException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
- 'Nette\\Utils\\Strings' => __DIR__ . '/..' . '/nette/utils/src/Utils/Strings.php',
- 'Nette\\Utils\\Type' => __DIR__ . '/..' . '/nette/utils/src/Utils/Type.php',
- 'Nette\\Utils\\UnknownImageFileException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
- 'Nette\\Utils\\Validators' => __DIR__ . '/..' . '/nette/utils/src/Utils/Validators.php',
- 'Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
- 'PHPUnit\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Exception.php',
- 'PHPUnit\\Framework\\ActualValueIsNotAnObjectException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ActualValueIsNotAnObjectException.php',
- 'PHPUnit\\Framework\\Assert' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert.php',
- 'PHPUnit\\Framework\\AssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/AssertionFailedError.php',
- 'PHPUnit\\Framework\\CodeCoverageException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/CodeCoverageException.php',
- 'PHPUnit\\Framework\\ComparisonMethodDoesNotAcceptParameterTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotAcceptParameterTypeException.php',
- 'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareBoolReturnTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareBoolReturnTypeException.php',
- 'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareExactlyOneParameterException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareExactlyOneParameterException.php',
- 'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareParameterTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareParameterTypeException.php',
- 'PHPUnit\\Framework\\ComparisonMethodDoesNotExistException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotExistException.php',
- 'PHPUnit\\Framework\\Constraint\\ArrayHasKey' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/ArrayHasKey.php',
- 'PHPUnit\\Framework\\Constraint\\BinaryOperator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/BinaryOperator.php',
- 'PHPUnit\\Framework\\Constraint\\Callback' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Callback.php',
- 'PHPUnit\\Framework\\Constraint\\ClassHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Object/ClassHasAttribute.php',
- 'PHPUnit\\Framework\\Constraint\\ClassHasStaticAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Object/ClassHasStaticAttribute.php',
- 'PHPUnit\\Framework\\Constraint\\Constraint' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Constraint.php',
- 'PHPUnit\\Framework\\Constraint\\Count' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/Count.php',
- 'PHPUnit\\Framework\\Constraint\\DirectoryExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/DirectoryExists.php',
- 'PHPUnit\\Framework\\Constraint\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception/Exception.php',
- 'PHPUnit\\Framework\\Constraint\\ExceptionCode' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionCode.php',
- 'PHPUnit\\Framework\\Constraint\\ExceptionMessage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessage.php',
- 'PHPUnit\\Framework\\Constraint\\ExceptionMessageRegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageRegularExpression.php',
- 'PHPUnit\\Framework\\Constraint\\FileExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/FileExists.php',
- 'PHPUnit\\Framework\\Constraint\\GreaterThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/GreaterThan.php',
- 'PHPUnit\\Framework\\Constraint\\IsAnything' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php',
- 'PHPUnit\\Framework\\Constraint\\IsEmpty' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/IsEmpty.php',
- 'PHPUnit\\Framework\\Constraint\\IsEqual' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqual.php',
- 'PHPUnit\\Framework\\Constraint\\IsEqualCanonicalizing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualCanonicalizing.php',
- 'PHPUnit\\Framework\\Constraint\\IsEqualIgnoringCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualIgnoringCase.php',
- 'PHPUnit\\Framework\\Constraint\\IsEqualWithDelta' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualWithDelta.php',
- 'PHPUnit\\Framework\\Constraint\\IsFalse' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Boolean/IsFalse.php',
- 'PHPUnit\\Framework\\Constraint\\IsFinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Math/IsFinite.php',
- 'PHPUnit\\Framework\\Constraint\\IsIdentical' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php',
- 'PHPUnit\\Framework\\Constraint\\IsInfinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Math/IsInfinite.php',
- 'PHPUnit\\Framework\\Constraint\\IsInstanceOf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Type/IsInstanceOf.php',
- 'PHPUnit\\Framework\\Constraint\\IsJson' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/IsJson.php',
- 'PHPUnit\\Framework\\Constraint\\IsNan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Math/IsNan.php',
- 'PHPUnit\\Framework\\Constraint\\IsNull' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Type/IsNull.php',
- 'PHPUnit\\Framework\\Constraint\\IsReadable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsReadable.php',
- 'PHPUnit\\Framework\\Constraint\\IsTrue' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Boolean/IsTrue.php',
- 'PHPUnit\\Framework\\Constraint\\IsType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Type/IsType.php',
- 'PHPUnit\\Framework\\Constraint\\IsWritable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsWritable.php',
- 'PHPUnit\\Framework\\Constraint\\JsonMatches' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php',
- 'PHPUnit\\Framework\\Constraint\\JsonMatchesErrorMessageProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatchesErrorMessageProvider.php',
- 'PHPUnit\\Framework\\Constraint\\LessThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/LessThan.php',
- 'PHPUnit\\Framework\\Constraint\\LogicalAnd' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalAnd.php',
- 'PHPUnit\\Framework\\Constraint\\LogicalNot' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalNot.php',
- 'PHPUnit\\Framework\\Constraint\\LogicalOr' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalOr.php',
- 'PHPUnit\\Framework\\Constraint\\LogicalXor' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalXor.php',
- 'PHPUnit\\Framework\\Constraint\\ObjectEquals' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Object/ObjectEquals.php',
- 'PHPUnit\\Framework\\Constraint\\ObjectHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Object/ObjectHasAttribute.php',
- 'PHPUnit\\Framework\\Constraint\\Operator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/Operator.php',
- 'PHPUnit\\Framework\\Constraint\\RegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/RegularExpression.php',
- 'PHPUnit\\Framework\\Constraint\\SameSize' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/SameSize.php',
- 'PHPUnit\\Framework\\Constraint\\StringContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/StringContains.php',
- 'PHPUnit\\Framework\\Constraint\\StringEndsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/StringEndsWith.php',
- 'PHPUnit\\Framework\\Constraint\\StringMatchesFormatDescription' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/StringMatchesFormatDescription.php',
- 'PHPUnit\\Framework\\Constraint\\StringStartsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/StringStartsWith.php',
- 'PHPUnit\\Framework\\Constraint\\TraversableContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContains.php',
- 'PHPUnit\\Framework\\Constraint\\TraversableContainsEqual' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsEqual.php',
- 'PHPUnit\\Framework\\Constraint\\TraversableContainsIdentical' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsIdentical.php',
- 'PHPUnit\\Framework\\Constraint\\TraversableContainsOnly' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsOnly.php',
- 'PHPUnit\\Framework\\Constraint\\UnaryOperator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/UnaryOperator.php',
- 'PHPUnit\\Framework\\CoveredCodeNotExecutedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/CoveredCodeNotExecutedException.php',
- 'PHPUnit\\Framework\\DataProviderTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/DataProviderTestSuite.php',
- 'PHPUnit\\Framework\\Error' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/Error.php',
- 'PHPUnit\\Framework\\ErrorTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ErrorTestCase.php',
- 'PHPUnit\\Framework\\Error\\Deprecated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Deprecated.php',
- 'PHPUnit\\Framework\\Error\\Error' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Error.php',
- 'PHPUnit\\Framework\\Error\\Notice' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Notice.php',
- 'PHPUnit\\Framework\\Error\\Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Warning.php',
- 'PHPUnit\\Framework\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/Exception.php',
- 'PHPUnit\\Framework\\ExceptionWrapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php',
- 'PHPUnit\\Framework\\ExecutionOrderDependency' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php',
- 'PHPUnit\\Framework\\ExpectationFailedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ExpectationFailedException.php',
- 'PHPUnit\\Framework\\IncompleteTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTest.php',
- 'PHPUnit\\Framework\\IncompleteTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php',
- 'PHPUnit\\Framework\\IncompleteTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/IncompleteTestError.php',
- 'PHPUnit\\Framework\\InvalidArgumentException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/InvalidArgumentException.php',
- 'PHPUnit\\Framework\\InvalidCoversTargetException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/InvalidCoversTargetException.php',
- 'PHPUnit\\Framework\\InvalidDataProviderException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/InvalidDataProviderException.php',
- 'PHPUnit\\Framework\\InvalidParameterGroupException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/InvalidParameterGroupException.php',
- 'PHPUnit\\Framework\\MissingCoversAnnotationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/MissingCoversAnnotationException.php',
- 'PHPUnit\\Framework\\MockObject\\Api' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Api/Api.php',
- 'PHPUnit\\Framework\\MockObject\\BadMethodCallException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/BadMethodCallException.php',
- 'PHPUnit\\Framework\\MockObject\\Builder\\Identity' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/Identity.php',
- 'PHPUnit\\Framework\\MockObject\\Builder\\InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationMocker.php',
- 'PHPUnit\\Framework\\MockObject\\Builder\\InvocationStubber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationStubber.php',
- 'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/MethodNameMatch.php',
- 'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/ParametersMatch.php',
- 'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/Stub.php',
- 'PHPUnit\\Framework\\MockObject\\CannotUseAddMethodsException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseAddMethodsException.php',
- 'PHPUnit\\Framework\\MockObject\\CannotUseOnlyMethodsException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php',
- 'PHPUnit\\Framework\\MockObject\\ClassAlreadyExistsException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ClassAlreadyExistsException.php',
- 'PHPUnit\\Framework\\MockObject\\ClassIsFinalException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsFinalException.php',
- 'PHPUnit\\Framework\\MockObject\\ConfigurableMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php',
- 'PHPUnit\\Framework\\MockObject\\ConfigurableMethodsAlreadyInitializedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ConfigurableMethodsAlreadyInitializedException.php',
- 'PHPUnit\\Framework\\MockObject\\DuplicateMethodException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/DuplicateMethodException.php',
- 'PHPUnit\\Framework\\MockObject\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php',
- 'PHPUnit\\Framework\\MockObject\\Generator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator.php',
- 'PHPUnit\\Framework\\MockObject\\IncompatibleReturnValueException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php',
- 'PHPUnit\\Framework\\MockObject\\InvalidMethodNameException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/InvalidMethodNameException.php',
- 'PHPUnit\\Framework\\MockObject\\Invocation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Invocation.php',
- 'PHPUnit\\Framework\\MockObject\\InvocationHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/InvocationHandler.php',
- 'PHPUnit\\Framework\\MockObject\\MatchBuilderNotFoundException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php',
- 'PHPUnit\\Framework\\MockObject\\Matcher' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher.php',
- 'PHPUnit\\Framework\\MockObject\\MatcherAlreadyRegisteredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php',
- 'PHPUnit\\Framework\\MockObject\\Method' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Api/Method.php',
- 'PHPUnit\\Framework\\MockObject\\MethodCannotBeConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php',
- 'PHPUnit\\Framework\\MockObject\\MethodNameAlreadyConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameAlreadyConfiguredException.php',
- 'PHPUnit\\Framework\\MockObject\\MethodNameConstraint' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MethodNameConstraint.php',
- 'PHPUnit\\Framework\\MockObject\\MethodNameNotConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameNotConfiguredException.php',
- 'PHPUnit\\Framework\\MockObject\\MethodParametersAlreadyConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodParametersAlreadyConfiguredException.php',
- 'PHPUnit\\Framework\\MockObject\\MockBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php',
- 'PHPUnit\\Framework\\MockObject\\MockClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockClass.php',
- 'PHPUnit\\Framework\\MockObject\\MockMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockMethod.php',
- 'PHPUnit\\Framework\\MockObject\\MockMethodSet' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockMethodSet.php',
- 'PHPUnit\\Framework\\MockObject\\MockObject' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockObject.php',
- 'PHPUnit\\Framework\\MockObject\\MockTrait' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockTrait.php',
- 'PHPUnit\\Framework\\MockObject\\MockType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockType.php',
- 'PHPUnit\\Framework\\MockObject\\MockedCloneMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Api/MockedCloneMethod.php',
- 'PHPUnit\\Framework\\MockObject\\OriginalConstructorInvocationRequiredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/OriginalConstructorInvocationRequiredException.php',
- 'PHPUnit\\Framework\\MockObject\\ReflectionException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ReflectionException.php',
- 'PHPUnit\\Framework\\MockObject\\ReturnValueNotConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php',
- 'PHPUnit\\Framework\\MockObject\\Rule\\AnyInvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/AnyInvokedCount.php',
- 'PHPUnit\\Framework\\MockObject\\Rule\\AnyParameters' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/AnyParameters.php',
- 'PHPUnit\\Framework\\MockObject\\Rule\\ConsecutiveParameters' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/ConsecutiveParameters.php',
- 'PHPUnit\\Framework\\MockObject\\Rule\\InvocationOrder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvocationOrder.php',
- 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtIndex' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtIndex.php',
- 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtLeastCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastCount.php',
- 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtLeastOnce' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastOnce.php',
- 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtMostCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtMostCount.php',
- 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedCount.php',
- 'PHPUnit\\Framework\\MockObject\\Rule\\MethodName' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/MethodName.php',
- 'PHPUnit\\Framework\\MockObject\\Rule\\Parameters' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/Parameters.php',
- 'PHPUnit\\Framework\\MockObject\\Rule\\ParametersRule' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/ParametersRule.php',
- 'PHPUnit\\Framework\\MockObject\\RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/RuntimeException.php',
- 'PHPUnit\\Framework\\MockObject\\SoapExtensionNotAvailableException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/SoapExtensionNotAvailableException.php',
- 'PHPUnit\\Framework\\MockObject\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\ConsecutiveCalls' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ConsecutiveCalls.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/Exception.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnArgument' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnArgument.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnCallback' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnCallback.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnReference' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnReference.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnSelf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnSelf.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnStub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnStub.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnValueMap' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnValueMap.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/Stub.php',
- 'PHPUnit\\Framework\\MockObject\\UnknownClassException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownClassException.php',
- 'PHPUnit\\Framework\\MockObject\\UnknownTraitException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTraitException.php',
- 'PHPUnit\\Framework\\MockObject\\UnknownTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTypeException.php',
- 'PHPUnit\\Framework\\MockObject\\UnmockedCloneMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Api/UnmockedCloneMethod.php',
- 'PHPUnit\\Framework\\MockObject\\Verifiable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Verifiable.php',
- 'PHPUnit\\Framework\\NoChildTestSuiteException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/NoChildTestSuiteException.php',
- 'PHPUnit\\Framework\\OutputError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/OutputError.php',
- 'PHPUnit\\Framework\\PHPTAssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/PHPTAssertionFailedError.php',
- 'PHPUnit\\Framework\\Reorderable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Reorderable.php',
- 'PHPUnit\\Framework\\RiskyTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/RiskyTestError.php',
- 'PHPUnit\\Framework\\SelfDescribing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SelfDescribing.php',
- 'PHPUnit\\Framework\\SkippedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTest.php',
- 'PHPUnit\\Framework\\SkippedTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestCase.php',
- 'PHPUnit\\Framework\\SkippedTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/SkippedTestError.php',
- 'PHPUnit\\Framework\\SkippedTestSuiteError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/SkippedTestSuiteError.php',
- 'PHPUnit\\Framework\\SyntheticError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/SyntheticError.php',
- 'PHPUnit\\Framework\\SyntheticSkippedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/SyntheticSkippedError.php',
- 'PHPUnit\\Framework\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Test.php',
- 'PHPUnit\\Framework\\TestBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestBuilder.php',
- 'PHPUnit\\Framework\\TestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestCase.php',
- 'PHPUnit\\Framework\\TestFailure' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestFailure.php',
- 'PHPUnit\\Framework\\TestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestListener.php',
- 'PHPUnit\\Framework\\TestListenerDefaultImplementation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestListenerDefaultImplementation.php',
- 'PHPUnit\\Framework\\TestResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestResult.php',
- 'PHPUnit\\Framework\\TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite.php',
- 'PHPUnit\\Framework\\TestSuiteIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php',
- 'PHPUnit\\Framework\\UnintentionallyCoveredCodeError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/UnintentionallyCoveredCodeError.php',
- 'PHPUnit\\Framework\\Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/Warning.php',
- 'PHPUnit\\Framework\\WarningTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/WarningTestCase.php',
- 'PHPUnit\\Runner\\AfterIncompleteTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterIncompleteTestHook.php',
- 'PHPUnit\\Runner\\AfterLastTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterLastTestHook.php',
- 'PHPUnit\\Runner\\AfterRiskyTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterRiskyTestHook.php',
- 'PHPUnit\\Runner\\AfterSkippedTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterSkippedTestHook.php',
- 'PHPUnit\\Runner\\AfterSuccessfulTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterSuccessfulTestHook.php',
- 'PHPUnit\\Runner\\AfterTestErrorHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterTestErrorHook.php',
- 'PHPUnit\\Runner\\AfterTestFailureHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterTestFailureHook.php',
- 'PHPUnit\\Runner\\AfterTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterTestHook.php',
- 'PHPUnit\\Runner\\AfterTestWarningHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterTestWarningHook.php',
- 'PHPUnit\\Runner\\BaseTestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/BaseTestRunner.php',
- 'PHPUnit\\Runner\\BeforeFirstTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/BeforeFirstTestHook.php',
- 'PHPUnit\\Runner\\BeforeTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/BeforeTestHook.php',
- 'PHPUnit\\Runner\\DefaultTestResultCache' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/DefaultTestResultCache.php',
- 'PHPUnit\\Runner\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception.php',
- 'PHPUnit\\Runner\\Extension\\ExtensionHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Extension/ExtensionHandler.php',
- 'PHPUnit\\Runner\\Extension\\PharLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Extension/PharLoader.php',
- 'PHPUnit\\Runner\\Filter\\ExcludeGroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php',
- 'PHPUnit\\Runner\\Filter\\Factory' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Factory.php',
- 'PHPUnit\\Runner\\Filter\\GroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php',
- 'PHPUnit\\Runner\\Filter\\IncludeGroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php',
- 'PHPUnit\\Runner\\Filter\\NameFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php',
- 'PHPUnit\\Runner\\Hook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/Hook.php',
- 'PHPUnit\\Runner\\NullTestResultCache' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/NullTestResultCache.php',
- 'PHPUnit\\Runner\\PhptTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/PhptTestCase.php',
- 'PHPUnit\\Runner\\ResultCacheExtension' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCacheExtension.php',
- 'PHPUnit\\Runner\\StandardTestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php',
- 'PHPUnit\\Runner\\TestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/TestHook.php',
- 'PHPUnit\\Runner\\TestListenerAdapter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/TestListenerAdapter.php',
- 'PHPUnit\\Runner\\TestResultCache' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResultCache.php',
- 'PHPUnit\\Runner\\TestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php',
- 'PHPUnit\\Runner\\TestSuiteSorter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteSorter.php',
- 'PHPUnit\\Runner\\Version' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Version.php',
- 'PHPUnit\\TextUI\\CliArguments\\Builder' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/CliArguments/Builder.php',
- 'PHPUnit\\TextUI\\CliArguments\\Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/CliArguments/Configuration.php',
- 'PHPUnit\\TextUI\\CliArguments\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/CliArguments/Exception.php',
- 'PHPUnit\\TextUI\\CliArguments\\Mapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/CliArguments/Mapper.php',
- 'PHPUnit\\TextUI\\Command' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command.php',
- 'PHPUnit\\TextUI\\DefaultResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/DefaultResultPrinter.php',
- 'PHPUnit\\TextUI\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/Exception.php',
- 'PHPUnit\\TextUI\\Help' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Help.php',
- 'PHPUnit\\TextUI\\ReflectionException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/ReflectionException.php',
- 'PHPUnit\\TextUI\\ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/ResultPrinter.php',
- 'PHPUnit\\TextUI\\RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/RuntimeException.php',
- 'PHPUnit\\TextUI\\TestDirectoryNotFoundException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php',
- 'PHPUnit\\TextUI\\TestFileNotFoundException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php',
- 'PHPUnit\\TextUI\\TestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestRunner.php',
- 'PHPUnit\\TextUI\\TestSuiteMapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestSuiteMapper.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/CodeCoverage.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\FilterMapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/FilterMapper.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Filter\\Directory' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/Directory.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Filter\\DirectoryCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollection.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Filter\\DirectoryCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollectionIterator.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Clover' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Clover.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Cobertura' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Cobertura.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Crap4j' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Crap4j.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Html' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Html.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Php' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Php.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Text' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Text.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Xml' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Xml.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Configuration.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Constant' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Constant.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\ConstantCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollection.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\ConstantCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollectionIterator.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\ConvertLogTypes' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/ConvertLogTypes.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageCloverToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCloverToReport.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageCrap4jToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCrap4jToReport.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageHtmlToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageHtmlToReport.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CoveragePhpToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoveragePhpToReport.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageTextToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageTextToReport.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageXmlToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageXmlToReport.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Directory' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/Directory.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\DirectoryCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollection.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\DirectoryCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollectionIterator.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Exception.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Extension' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/Extension.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\ExtensionCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollection.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\ExtensionCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollectionIterator.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\File' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/File.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\FileCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollection.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\FileCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollectionIterator.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Generator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Generator.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Group' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Group.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\GroupCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollection.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\GroupCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollectionIterator.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Groups' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Groups.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\IniSetting' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSetting.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\IniSettingCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollection.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\IniSettingCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollectionIterator.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\IntroduceCoverageElement' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/IntroduceCoverageElement.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Loader' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Loader.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\LogToReportMigration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/LogToReportMigration.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Junit' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Junit.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Logging' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Logging.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TeamCity' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TeamCity.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Html' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Html.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Text' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Text.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Xml' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Xml.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Text' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Text.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Migration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/Migration.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\MigrationBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilder.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\MigrationBuilderException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilderException.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\MigrationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationException.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Migrator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrator.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromFilterWhitelistToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromRootToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromRootToCoverage.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistDirectoriesToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistDirectoriesToCoverage.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistExcludesToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistExcludesToCoverage.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\PHPUnit' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/PHPUnit.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Php' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Php.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\PhpHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/PhpHandler.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveCacheTokensAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveCacheTokensAttribute.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveEmptyFilter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveEmptyFilter.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveLogTypes' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveLogTypes.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\TestDirectory' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectory.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\TestDirectoryCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollection.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\TestDirectoryCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollectionIterator.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\TestFile' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFile.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\TestFileCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollection.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\TestFileCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollectionIterator.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuite.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\TestSuiteCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollection.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\TestSuiteCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollectionIterator.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\UpdateSchemaLocationTo93' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/UpdateSchemaLocationTo93.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\Variable' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Variable.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\VariableCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollection.php',
- 'PHPUnit\\TextUI\\XmlConfiguration\\VariableCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollectionIterator.php',
- 'PHPUnit\\Util\\Annotation\\DocBlock' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Annotation/DocBlock.php',
- 'PHPUnit\\Util\\Annotation\\Registry' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Annotation/Registry.php',
- 'PHPUnit\\Util\\Blacklist' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Blacklist.php',
- 'PHPUnit\\Util\\Color' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Color.php',
- 'PHPUnit\\Util\\ErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ErrorHandler.php',
- 'PHPUnit\\Util\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception.php',
- 'PHPUnit\\Util\\ExcludeList' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ExcludeList.php',
- 'PHPUnit\\Util\\FileLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/FileLoader.php',
- 'PHPUnit\\Util\\Filesystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filesystem.php',
- 'PHPUnit\\Util\\Filter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filter.php',
- 'PHPUnit\\Util\\GlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/GlobalState.php',
- 'PHPUnit\\Util\\InvalidDataSetException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/InvalidDataSetException.php',
- 'PHPUnit\\Util\\Json' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Json.php',
- 'PHPUnit\\Util\\Log\\JUnit' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/JUnit.php',
- 'PHPUnit\\Util\\Log\\TeamCity' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/TeamCity.php',
- 'PHPUnit\\Util\\PHP\\AbstractPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php',
- 'PHPUnit\\Util\\PHP\\DefaultPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php',
- 'PHPUnit\\Util\\PHP\\WindowsPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php',
- 'PHPUnit\\Util\\Printer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Printer.php',
- 'PHPUnit\\Util\\RegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/RegularExpression.php',
- 'PHPUnit\\Util\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Test.php',
- 'PHPUnit\\Util\\TestDox\\CliTestDoxPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/CliTestDoxPrinter.php',
- 'PHPUnit\\Util\\TestDox\\HtmlResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/HtmlResultPrinter.php',
- 'PHPUnit\\Util\\TestDox\\NamePrettifier' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php',
- 'PHPUnit\\Util\\TestDox\\ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php',
- 'PHPUnit\\Util\\TestDox\\TestDoxPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/TestDoxPrinter.php',
- 'PHPUnit\\Util\\TestDox\\TextResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/TextResultPrinter.php',
- 'PHPUnit\\Util\\TestDox\\XmlResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/XmlResultPrinter.php',
- 'PHPUnit\\Util\\TextTestListRenderer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TextTestListRenderer.php',
- 'PHPUnit\\Util\\Type' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Type.php',
- 'PHPUnit\\Util\\VersionComparisonOperator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/VersionComparisonOperator.php',
- 'PHPUnit\\Util\\XdebugFilterScriptGenerator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/XdebugFilterScriptGenerator.php',
- 'PHPUnit\\Util\\Xml' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml.php',
- 'PHPUnit\\Util\\XmlTestListRenderer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/XmlTestListRenderer.php',
- 'PHPUnit\\Util\\Xml\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/Exception.php',
- 'PHPUnit\\Util\\Xml\\FailedSchemaDetectionResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/FailedSchemaDetectionResult.php',
- 'PHPUnit\\Util\\Xml\\Loader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/Loader.php',
- 'PHPUnit\\Util\\Xml\\SchemaDetectionResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/SchemaDetectionResult.php',
- 'PHPUnit\\Util\\Xml\\SchemaDetector' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/SchemaDetector.php',
- 'PHPUnit\\Util\\Xml\\SchemaFinder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/SchemaFinder.php',
- 'PHPUnit\\Util\\Xml\\SnapshotNodeList' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/SnapshotNodeList.php',
- 'PHPUnit\\Util\\Xml\\SuccessfulSchemaDetectionResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/SuccessfulSchemaDetectionResult.php',
- 'PHPUnit\\Util\\Xml\\ValidationResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/ValidationResult.php',
- 'PHPUnit\\Util\\Xml\\Validator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/Validator.php',
- 'PharIo\\Manifest\\Application' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Application.php',
- 'PharIo\\Manifest\\ApplicationName' => __DIR__ . '/..' . '/phar-io/manifest/src/values/ApplicationName.php',
- 'PharIo\\Manifest\\Author' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Author.php',
- 'PharIo\\Manifest\\AuthorCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/AuthorCollection.php',
- 'PharIo\\Manifest\\AuthorCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/AuthorCollectionIterator.php',
- 'PharIo\\Manifest\\AuthorElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/AuthorElement.php',
- 'PharIo\\Manifest\\AuthorElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/AuthorElementCollection.php',
- 'PharIo\\Manifest\\BundledComponent' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponent.php',
- 'PharIo\\Manifest\\BundledComponentCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponentCollection.php',
- 'PharIo\\Manifest\\BundledComponentCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponentCollectionIterator.php',
- 'PharIo\\Manifest\\BundlesElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/BundlesElement.php',
- 'PharIo\\Manifest\\ComponentElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ComponentElement.php',
- 'PharIo\\Manifest\\ComponentElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ComponentElementCollection.php',
- 'PharIo\\Manifest\\ContainsElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ContainsElement.php',
- 'PharIo\\Manifest\\CopyrightElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/CopyrightElement.php',
- 'PharIo\\Manifest\\CopyrightInformation' => __DIR__ . '/..' . '/phar-io/manifest/src/values/CopyrightInformation.php',
- 'PharIo\\Manifest\\ElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ElementCollection.php',
- 'PharIo\\Manifest\\ElementCollectionException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ElementCollectionException.php',
- 'PharIo\\Manifest\\Email' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Email.php',
- 'PharIo\\Manifest\\Exception' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/Exception.php',
- 'PharIo\\Manifest\\ExtElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtElement.php',
- 'PharIo\\Manifest\\ExtElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtElementCollection.php',
- 'PharIo\\Manifest\\Extension' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Extension.php',
- 'PharIo\\Manifest\\ExtensionElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtensionElement.php',
- 'PharIo\\Manifest\\InvalidApplicationNameException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php',
- 'PharIo\\Manifest\\InvalidEmailException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidEmailException.php',
- 'PharIo\\Manifest\\InvalidUrlException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidUrlException.php',
- 'PharIo\\Manifest\\Library' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Library.php',
- 'PharIo\\Manifest\\License' => __DIR__ . '/..' . '/phar-io/manifest/src/values/License.php',
- 'PharIo\\Manifest\\LicenseElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/LicenseElement.php',
- 'PharIo\\Manifest\\Manifest' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Manifest.php',
- 'PharIo\\Manifest\\ManifestDocument' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ManifestDocument.php',
- 'PharIo\\Manifest\\ManifestDocumentException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestDocumentException.php',
- 'PharIo\\Manifest\\ManifestDocumentLoadingException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestDocumentLoadingException.php',
- 'PharIo\\Manifest\\ManifestDocumentMapper' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestDocumentMapper.php',
- 'PharIo\\Manifest\\ManifestDocumentMapperException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php',
- 'PharIo\\Manifest\\ManifestElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ManifestElement.php',
- 'PharIo\\Manifest\\ManifestElementException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestElementException.php',
- 'PharIo\\Manifest\\ManifestLoader' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestLoader.php',
- 'PharIo\\Manifest\\ManifestLoaderException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestLoaderException.php',
- 'PharIo\\Manifest\\ManifestSerializer' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestSerializer.php',
- 'PharIo\\Manifest\\PhpElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/PhpElement.php',
- 'PharIo\\Manifest\\PhpExtensionRequirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/PhpExtensionRequirement.php',
- 'PharIo\\Manifest\\PhpVersionRequirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/PhpVersionRequirement.php',
- 'PharIo\\Manifest\\Requirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Requirement.php',
- 'PharIo\\Manifest\\RequirementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/RequirementCollection.php',
- 'PharIo\\Manifest\\RequirementCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/RequirementCollectionIterator.php',
- 'PharIo\\Manifest\\RequiresElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/RequiresElement.php',
- 'PharIo\\Manifest\\Type' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Type.php',
- 'PharIo\\Manifest\\Url' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Url.php',
- 'PharIo\\Version\\AbstractVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/AbstractVersionConstraint.php',
- 'PharIo\\Version\\AndVersionConstraintGroup' => __DIR__ . '/..' . '/phar-io/version/src/constraints/AndVersionConstraintGroup.php',
- 'PharIo\\Version\\AnyVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/AnyVersionConstraint.php',
- 'PharIo\\Version\\BuildMetaData' => __DIR__ . '/..' . '/phar-io/version/src/BuildMetaData.php',
- 'PharIo\\Version\\ExactVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/ExactVersionConstraint.php',
- 'PharIo\\Version\\Exception' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/Exception.php',
- 'PharIo\\Version\\GreaterThanOrEqualToVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/GreaterThanOrEqualToVersionConstraint.php',
- 'PharIo\\Version\\InvalidPreReleaseSuffixException' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/InvalidPreReleaseSuffixException.php',
- 'PharIo\\Version\\InvalidVersionException' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/InvalidVersionException.php',
- 'PharIo\\Version\\NoBuildMetaDataException' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/NoBuildMetaDataException.php',
- 'PharIo\\Version\\NoPreReleaseSuffixException' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/NoPreReleaseSuffixException.php',
- 'PharIo\\Version\\OrVersionConstraintGroup' => __DIR__ . '/..' . '/phar-io/version/src/constraints/OrVersionConstraintGroup.php',
- 'PharIo\\Version\\PreReleaseSuffix' => __DIR__ . '/..' . '/phar-io/version/src/PreReleaseSuffix.php',
- 'PharIo\\Version\\SpecificMajorAndMinorVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/SpecificMajorAndMinorVersionConstraint.php',
- 'PharIo\\Version\\SpecificMajorVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/SpecificMajorVersionConstraint.php',
- 'PharIo\\Version\\UnsupportedVersionConstraintException' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/UnsupportedVersionConstraintException.php',
- 'PharIo\\Version\\Version' => __DIR__ . '/..' . '/phar-io/version/src/Version.php',
- 'PharIo\\Version\\VersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/VersionConstraint.php',
- 'PharIo\\Version\\VersionConstraintParser' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintParser.php',
- 'PharIo\\Version\\VersionConstraintValue' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintValue.php',
- 'PharIo\\Version\\VersionNumber' => __DIR__ . '/..' . '/phar-io/version/src/VersionNumber.php',
- 'SebastianBergmann\\CliParser\\AmbiguousOptionException' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php',
- 'SebastianBergmann\\CliParser\\Exception' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/Exception.php',
- 'SebastianBergmann\\CliParser\\OptionDoesNotAllowArgumentException' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php',
- 'SebastianBergmann\\CliParser\\Parser' => __DIR__ . '/..' . '/sebastian/cli-parser/src/Parser.php',
- 'SebastianBergmann\\CliParser\\RequiredOptionArgumentMissingException' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/RequiredOptionArgumentMissingException.php',
- 'SebastianBergmann\\CliParser\\UnknownOptionException' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/UnknownOptionException.php',
- 'SebastianBergmann\\CodeCoverage\\BranchAndPathCoverageNotSupportedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/BranchAndPathCoverageNotSupportedException.php',
- 'SebastianBergmann\\CodeCoverage\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage.php',
- 'SebastianBergmann\\CodeCoverage\\DeadCodeDetectionNotSupportedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/DeadCodeDetectionNotSupportedException.php',
- 'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Driver.php',
- 'SebastianBergmann\\CodeCoverage\\Driver\\PathExistsButIsNotDirectoryException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/PathExistsButIsNotDirectoryException.php',
- 'SebastianBergmann\\CodeCoverage\\Driver\\PcovDriver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/PcovDriver.php',
- 'SebastianBergmann\\CodeCoverage\\Driver\\PcovNotAvailableException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/PcovNotAvailableException.php',
- 'SebastianBergmann\\CodeCoverage\\Driver\\PhpdbgDriver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/PhpdbgDriver.php',
- 'SebastianBergmann\\CodeCoverage\\Driver\\PhpdbgNotAvailableException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/PhpdbgNotAvailableException.php',
- 'SebastianBergmann\\CodeCoverage\\Driver\\Selector' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Selector.php',
- 'SebastianBergmann\\CodeCoverage\\Driver\\WriteOperationFailedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/WriteOperationFailedException.php',
- 'SebastianBergmann\\CodeCoverage\\Driver\\WrongXdebugVersionException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/WrongXdebugVersionException.php',
- 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug2Driver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Xdebug2Driver.php',
- 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug2NotEnabledException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/Xdebug2NotEnabledException.php',
- 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug3Driver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Xdebug3Driver.php',
- 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug3NotEnabledException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/Xdebug3NotEnabledException.php',
- 'SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotAvailableException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/XdebugNotAvailableException.php',
- 'SebastianBergmann\\CodeCoverage\\Exception' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/Exception.php',
- 'SebastianBergmann\\CodeCoverage\\Filter' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Filter.php',
- 'SebastianBergmann\\CodeCoverage\\InvalidArgumentException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php',
- 'SebastianBergmann\\CodeCoverage\\NoCodeCoverageDriverAvailableException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverAvailableException.php',
- 'SebastianBergmann\\CodeCoverage\\NoCodeCoverageDriverWithPathCoverageSupportAvailableException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverWithPathCoverageSupportAvailableException.php',
- 'SebastianBergmann\\CodeCoverage\\Node\\AbstractNode' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/AbstractNode.php',
- 'SebastianBergmann\\CodeCoverage\\Node\\Builder' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Builder.php',
- 'SebastianBergmann\\CodeCoverage\\Node\\CrapIndex' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/CrapIndex.php',
- 'SebastianBergmann\\CodeCoverage\\Node\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Directory.php',
- 'SebastianBergmann\\CodeCoverage\\Node\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/File.php',
- 'SebastianBergmann\\CodeCoverage\\Node\\Iterator' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Iterator.php',
- 'SebastianBergmann\\CodeCoverage\\ParserException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/ParserException.php',
- 'SebastianBergmann\\CodeCoverage\\ProcessedCodeCoverageData' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/ProcessedCodeCoverageData.php',
- 'SebastianBergmann\\CodeCoverage\\RawCodeCoverageData' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/RawCodeCoverageData.php',
- 'SebastianBergmann\\CodeCoverage\\ReflectionException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/ReflectionException.php',
- 'SebastianBergmann\\CodeCoverage\\ReportAlreadyFinalizedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/ReportAlreadyFinalizedException.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Clover' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Clover.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Cobertura' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Cobertura.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Crap4j' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Crap4j.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Dashboard' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Facade' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Facade.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Html\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Renderer' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\PHP' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/PHP.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Text' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Text.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\BuildInformation' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Coverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Coverage.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Directory.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Facade' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Facade.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/File.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Method' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Method.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Node' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Node.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Project' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Project.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Report' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Report.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Source' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Source.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Tests' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Tests.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Totals' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Totals.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Unit' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Unit.php',
- 'SebastianBergmann\\CodeCoverage\\StaticAnalysisCacheNotConfiguredException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/StaticAnalysisCacheNotConfiguredException.php',
- 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CacheWarmer' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/CacheWarmer.php',
- 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CachingFileAnalyser' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/CachingFileAnalyser.php',
- 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CodeUnitFindingVisitor' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/CodeUnitFindingVisitor.php',
- 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\ExecutableLinesFindingVisitor' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/ExecutableLinesFindingVisitor.php',
- 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\FileAnalyser' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/FileAnalyser.php',
- 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\IgnoredLinesFindingVisitor' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/IgnoredLinesFindingVisitor.php',
- 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\ParsingFileAnalyser' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/ParsingFileAnalyser.php',
- 'SebastianBergmann\\CodeCoverage\\TestIdMissingException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/TestIdMissingException.php',
- 'SebastianBergmann\\CodeCoverage\\UnintentionallyCoveredCodeException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php',
- 'SebastianBergmann\\CodeCoverage\\Util\\DirectoryCouldNotBeCreatedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/DirectoryCouldNotBeCreatedException.php',
- 'SebastianBergmann\\CodeCoverage\\Util\\Filesystem' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Util/Filesystem.php',
- 'SebastianBergmann\\CodeCoverage\\Util\\Percentage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Util/Percentage.php',
- 'SebastianBergmann\\CodeCoverage\\Version' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Version.php',
- 'SebastianBergmann\\CodeCoverage\\XmlException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/XmlException.php',
- 'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => __DIR__ . '/..' . '/sebastian/code-unit-reverse-lookup/src/Wizard.php',
- 'SebastianBergmann\\CodeUnit\\ClassMethodUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/ClassMethodUnit.php',
- 'SebastianBergmann\\CodeUnit\\ClassUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/ClassUnit.php',
- 'SebastianBergmann\\CodeUnit\\CodeUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/CodeUnit.php',
- 'SebastianBergmann\\CodeUnit\\CodeUnitCollection' => __DIR__ . '/..' . '/sebastian/code-unit/src/CodeUnitCollection.php',
- 'SebastianBergmann\\CodeUnit\\CodeUnitCollectionIterator' => __DIR__ . '/..' . '/sebastian/code-unit/src/CodeUnitCollectionIterator.php',
- 'SebastianBergmann\\CodeUnit\\Exception' => __DIR__ . '/..' . '/sebastian/code-unit/src/exceptions/Exception.php',
- 'SebastianBergmann\\CodeUnit\\FunctionUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/FunctionUnit.php',
- 'SebastianBergmann\\CodeUnit\\InterfaceMethodUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/InterfaceMethodUnit.php',
- 'SebastianBergmann\\CodeUnit\\InterfaceUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/InterfaceUnit.php',
- 'SebastianBergmann\\CodeUnit\\InvalidCodeUnitException' => __DIR__ . '/..' . '/sebastian/code-unit/src/exceptions/InvalidCodeUnitException.php',
- 'SebastianBergmann\\CodeUnit\\Mapper' => __DIR__ . '/..' . '/sebastian/code-unit/src/Mapper.php',
- 'SebastianBergmann\\CodeUnit\\NoTraitException' => __DIR__ . '/..' . '/sebastian/code-unit/src/exceptions/NoTraitException.php',
- 'SebastianBergmann\\CodeUnit\\ReflectionException' => __DIR__ . '/..' . '/sebastian/code-unit/src/exceptions/ReflectionException.php',
- 'SebastianBergmann\\CodeUnit\\TraitMethodUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/TraitMethodUnit.php',
- 'SebastianBergmann\\CodeUnit\\TraitUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/TraitUnit.php',
- 'SebastianBergmann\\Comparator\\ArrayComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ArrayComparator.php',
- 'SebastianBergmann\\Comparator\\Comparator' => __DIR__ . '/..' . '/sebastian/comparator/src/Comparator.php',
- 'SebastianBergmann\\Comparator\\ComparisonFailure' => __DIR__ . '/..' . '/sebastian/comparator/src/ComparisonFailure.php',
- 'SebastianBergmann\\Comparator\\DOMNodeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DOMNodeComparator.php',
- 'SebastianBergmann\\Comparator\\DateTimeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DateTimeComparator.php',
- 'SebastianBergmann\\Comparator\\DoubleComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DoubleComparator.php',
- 'SebastianBergmann\\Comparator\\Exception' => __DIR__ . '/..' . '/sebastian/comparator/src/exceptions/Exception.php',
- 'SebastianBergmann\\Comparator\\ExceptionComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ExceptionComparator.php',
- 'SebastianBergmann\\Comparator\\Factory' => __DIR__ . '/..' . '/sebastian/comparator/src/Factory.php',
- 'SebastianBergmann\\Comparator\\MockObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/MockObjectComparator.php',
- 'SebastianBergmann\\Comparator\\NumericComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/NumericComparator.php',
- 'SebastianBergmann\\Comparator\\ObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ObjectComparator.php',
- 'SebastianBergmann\\Comparator\\ResourceComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ResourceComparator.php',
- 'SebastianBergmann\\Comparator\\RuntimeException' => __DIR__ . '/..' . '/sebastian/comparator/src/exceptions/RuntimeException.php',
- 'SebastianBergmann\\Comparator\\ScalarComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ScalarComparator.php',
- 'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/SplObjectStorageComparator.php',
- 'SebastianBergmann\\Comparator\\TypeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/TypeComparator.php',
- 'SebastianBergmann\\Complexity\\Calculator' => __DIR__ . '/..' . '/sebastian/complexity/src/Calculator.php',
- 'SebastianBergmann\\Complexity\\Complexity' => __DIR__ . '/..' . '/sebastian/complexity/src/Complexity/Complexity.php',
- 'SebastianBergmann\\Complexity\\ComplexityCalculatingVisitor' => __DIR__ . '/..' . '/sebastian/complexity/src/Visitor/ComplexityCalculatingVisitor.php',
- 'SebastianBergmann\\Complexity\\ComplexityCollection' => __DIR__ . '/..' . '/sebastian/complexity/src/Complexity/ComplexityCollection.php',
- 'SebastianBergmann\\Complexity\\ComplexityCollectionIterator' => __DIR__ . '/..' . '/sebastian/complexity/src/Complexity/ComplexityCollectionIterator.php',
- 'SebastianBergmann\\Complexity\\CyclomaticComplexityCalculatingVisitor' => __DIR__ . '/..' . '/sebastian/complexity/src/Visitor/CyclomaticComplexityCalculatingVisitor.php',
- 'SebastianBergmann\\Complexity\\Exception' => __DIR__ . '/..' . '/sebastian/complexity/src/Exception/Exception.php',
- 'SebastianBergmann\\Complexity\\RuntimeException' => __DIR__ . '/..' . '/sebastian/complexity/src/Exception/RuntimeException.php',
- 'SebastianBergmann\\Diff\\Chunk' => __DIR__ . '/..' . '/sebastian/diff/src/Chunk.php',
- 'SebastianBergmann\\Diff\\ConfigurationException' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/ConfigurationException.php',
- 'SebastianBergmann\\Diff\\Diff' => __DIR__ . '/..' . '/sebastian/diff/src/Diff.php',
- 'SebastianBergmann\\Diff\\Differ' => __DIR__ . '/..' . '/sebastian/diff/src/Differ.php',
- 'SebastianBergmann\\Diff\\Exception' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/Exception.php',
- 'SebastianBergmann\\Diff\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/InvalidArgumentException.php',
- 'SebastianBergmann\\Diff\\Line' => __DIR__ . '/..' . '/sebastian/diff/src/Line.php',
- 'SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php',
- 'SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php',
- 'SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php',
- 'SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php',
- 'SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php',
- 'SebastianBergmann\\Diff\\Output\\StrictUnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php',
- 'SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php',
- 'SebastianBergmann\\Diff\\Parser' => __DIR__ . '/..' . '/sebastian/diff/src/Parser.php',
- 'SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php',
- 'SebastianBergmann\\Environment\\Console' => __DIR__ . '/..' . '/sebastian/environment/src/Console.php',
- 'SebastianBergmann\\Environment\\OperatingSystem' => __DIR__ . '/..' . '/sebastian/environment/src/OperatingSystem.php',
- 'SebastianBergmann\\Environment\\Runtime' => __DIR__ . '/..' . '/sebastian/environment/src/Runtime.php',
- 'SebastianBergmann\\Exporter\\Exporter' => __DIR__ . '/..' . '/sebastian/exporter/src/Exporter.php',
- 'SebastianBergmann\\FileIterator\\Facade' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Facade.php',
- 'SebastianBergmann\\FileIterator\\Factory' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Factory.php',
- 'SebastianBergmann\\FileIterator\\Iterator' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Iterator.php',
- 'SebastianBergmann\\GlobalState\\CodeExporter' => __DIR__ . '/..' . '/sebastian/global-state/src/CodeExporter.php',
- 'SebastianBergmann\\GlobalState\\Exception' => __DIR__ . '/..' . '/sebastian/global-state/src/exceptions/Exception.php',
- 'SebastianBergmann\\GlobalState\\ExcludeList' => __DIR__ . '/..' . '/sebastian/global-state/src/ExcludeList.php',
- 'SebastianBergmann\\GlobalState\\Restorer' => __DIR__ . '/..' . '/sebastian/global-state/src/Restorer.php',
- 'SebastianBergmann\\GlobalState\\RuntimeException' => __DIR__ . '/..' . '/sebastian/global-state/src/exceptions/RuntimeException.php',
- 'SebastianBergmann\\GlobalState\\Snapshot' => __DIR__ . '/..' . '/sebastian/global-state/src/Snapshot.php',
- 'SebastianBergmann\\Invoker\\Exception' => __DIR__ . '/..' . '/phpunit/php-invoker/src/exceptions/Exception.php',
- 'SebastianBergmann\\Invoker\\Invoker' => __DIR__ . '/..' . '/phpunit/php-invoker/src/Invoker.php',
- 'SebastianBergmann\\Invoker\\ProcessControlExtensionNotLoadedException' => __DIR__ . '/..' . '/phpunit/php-invoker/src/exceptions/ProcessControlExtensionNotLoadedException.php',
- 'SebastianBergmann\\Invoker\\TimeoutException' => __DIR__ . '/..' . '/phpunit/php-invoker/src/exceptions/TimeoutException.php',
- 'SebastianBergmann\\LinesOfCode\\Counter' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/Counter.php',
- 'SebastianBergmann\\LinesOfCode\\Exception' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/Exception/Exception.php',
- 'SebastianBergmann\\LinesOfCode\\IllogicalValuesException' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/Exception/IllogicalValuesException.php',
- 'SebastianBergmann\\LinesOfCode\\LineCountingVisitor' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/LineCountingVisitor.php',
- 'SebastianBergmann\\LinesOfCode\\LinesOfCode' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/LinesOfCode.php',
- 'SebastianBergmann\\LinesOfCode\\NegativeValueException' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/Exception/NegativeValueException.php',
- 'SebastianBergmann\\LinesOfCode\\RuntimeException' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/Exception/RuntimeException.php',
- 'SebastianBergmann\\ObjectEnumerator\\Enumerator' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/Enumerator.php',
- 'SebastianBergmann\\ObjectEnumerator\\Exception' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/Exception.php',
- 'SebastianBergmann\\ObjectEnumerator\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/InvalidArgumentException.php',
- 'SebastianBergmann\\ObjectReflector\\Exception' => __DIR__ . '/..' . '/sebastian/object-reflector/src/Exception.php',
- 'SebastianBergmann\\ObjectReflector\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/object-reflector/src/InvalidArgumentException.php',
- 'SebastianBergmann\\ObjectReflector\\ObjectReflector' => __DIR__ . '/..' . '/sebastian/object-reflector/src/ObjectReflector.php',
- 'SebastianBergmann\\RecursionContext\\Context' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Context.php',
- 'SebastianBergmann\\RecursionContext\\Exception' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Exception.php',
- 'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/recursion-context/src/InvalidArgumentException.php',
- 'SebastianBergmann\\ResourceOperations\\ResourceOperations' => __DIR__ . '/..' . '/sebastian/resource-operations/src/ResourceOperations.php',
- 'SebastianBergmann\\Template\\Exception' => __DIR__ . '/..' . '/phpunit/php-text-template/src/exceptions/Exception.php',
- 'SebastianBergmann\\Template\\InvalidArgumentException' => __DIR__ . '/..' . '/phpunit/php-text-template/src/exceptions/InvalidArgumentException.php',
- 'SebastianBergmann\\Template\\RuntimeException' => __DIR__ . '/..' . '/phpunit/php-text-template/src/exceptions/RuntimeException.php',
- 'SebastianBergmann\\Template\\Template' => __DIR__ . '/..' . '/phpunit/php-text-template/src/Template.php',
- 'SebastianBergmann\\Timer\\Duration' => __DIR__ . '/..' . '/phpunit/php-timer/src/Duration.php',
- 'SebastianBergmann\\Timer\\Exception' => __DIR__ . '/..' . '/phpunit/php-timer/src/exceptions/Exception.php',
- 'SebastianBergmann\\Timer\\NoActiveTimerException' => __DIR__ . '/..' . '/phpunit/php-timer/src/exceptions/NoActiveTimerException.php',
- 'SebastianBergmann\\Timer\\ResourceUsageFormatter' => __DIR__ . '/..' . '/phpunit/php-timer/src/ResourceUsageFormatter.php',
- 'SebastianBergmann\\Timer\\TimeSinceStartOfRequestNotAvailableException' => __DIR__ . '/..' . '/phpunit/php-timer/src/exceptions/TimeSinceStartOfRequestNotAvailableException.php',
- 'SebastianBergmann\\Timer\\Timer' => __DIR__ . '/..' . '/phpunit/php-timer/src/Timer.php',
- 'SebastianBergmann\\Type\\CallableType' => __DIR__ . '/..' . '/sebastian/type/src/CallableType.php',
- 'SebastianBergmann\\Type\\Exception' => __DIR__ . '/..' . '/sebastian/type/src/exception/Exception.php',
- 'SebastianBergmann\\Type\\FalseType' => __DIR__ . '/..' . '/sebastian/type/src/FalseType.php',
- 'SebastianBergmann\\Type\\GenericObjectType' => __DIR__ . '/..' . '/sebastian/type/src/GenericObjectType.php',
- 'SebastianBergmann\\Type\\IterableType' => __DIR__ . '/..' . '/sebastian/type/src/IterableType.php',
- 'SebastianBergmann\\Type\\LogicException' => __DIR__ . '/..' . '/sebastian/type/src/exception/LogicException.php',
- 'SebastianBergmann\\Type\\MixedType' => __DIR__ . '/..' . '/sebastian/type/src/MixedType.php',
- 'SebastianBergmann\\Type\\NullType' => __DIR__ . '/..' . '/sebastian/type/src/NullType.php',
- 'SebastianBergmann\\Type\\ObjectType' => __DIR__ . '/..' . '/sebastian/type/src/ObjectType.php',
- 'SebastianBergmann\\Type\\ReflectionMapper' => __DIR__ . '/..' . '/sebastian/type/src/ReflectionMapper.php',
- 'SebastianBergmann\\Type\\RuntimeException' => __DIR__ . '/..' . '/sebastian/type/src/exception/RuntimeException.php',
- 'SebastianBergmann\\Type\\SimpleType' => __DIR__ . '/..' . '/sebastian/type/src/SimpleType.php',
- 'SebastianBergmann\\Type\\StaticType' => __DIR__ . '/..' . '/sebastian/type/src/StaticType.php',
- 'SebastianBergmann\\Type\\Type' => __DIR__ . '/..' . '/sebastian/type/src/Type.php',
- 'SebastianBergmann\\Type\\TypeName' => __DIR__ . '/..' . '/sebastian/type/src/TypeName.php',
- 'SebastianBergmann\\Type\\UnionType' => __DIR__ . '/..' . '/sebastian/type/src/UnionType.php',
- 'SebastianBergmann\\Type\\UnknownType' => __DIR__ . '/..' . '/sebastian/type/src/UnknownType.php',
- 'SebastianBergmann\\Type\\VoidType' => __DIR__ . '/..' . '/sebastian/type/src/VoidType.php',
- 'SebastianBergmann\\Version' => __DIR__ . '/..' . '/sebastian/version/src/Version.php',
- 'Stringable' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
- 'TheSeer\\Tokenizer\\Exception' => __DIR__ . '/..' . '/theseer/tokenizer/src/Exception.php',
- 'TheSeer\\Tokenizer\\NamespaceUri' => __DIR__ . '/..' . '/theseer/tokenizer/src/NamespaceUri.php',
- 'TheSeer\\Tokenizer\\NamespaceUriException' => __DIR__ . '/..' . '/theseer/tokenizer/src/NamespaceUriException.php',
- 'TheSeer\\Tokenizer\\Token' => __DIR__ . '/..' . '/theseer/tokenizer/src/Token.php',
- 'TheSeer\\Tokenizer\\TokenCollection' => __DIR__ . '/..' . '/theseer/tokenizer/src/TokenCollection.php',
- 'TheSeer\\Tokenizer\\TokenCollectionException' => __DIR__ . '/..' . '/theseer/tokenizer/src/TokenCollectionException.php',
- 'TheSeer\\Tokenizer\\Tokenizer' => __DIR__ . '/..' . '/theseer/tokenizer/src/Tokenizer.php',
- 'TheSeer\\Tokenizer\\XMLSerializer' => __DIR__ . '/..' . '/theseer/tokenizer/src/XMLSerializer.php',
- 'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
- 'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
- 'WhereClause' => __DIR__ . '/..' . '/sergeytsalkov/meekrodb/db.class.php',
- 'kakao\\KakaoKey' => __DIR__ . '/../..' . '/d_setting/KakaoKey.php',
- 'sammo\\RootDB' => __DIR__ . '/../..' . '/d_setting/RootDB.php',
- 'sammo\\ServConfig' => __DIR__ . '/../..' . '/d_setting/ServConfig.php',
- );
-
- public static function getInitializer(ClassLoader $loader)
- {
- return \Closure::bind(function () use ($loader) {
- $loader->prefixLengthsPsr4 = ComposerStaticInit67b09c83b85c3bc0027caefe5bba171a::$prefixLengthsPsr4;
- $loader->prefixDirsPsr4 = ComposerStaticInit67b09c83b85c3bc0027caefe5bba171a::$prefixDirsPsr4;
- $loader->prefixesPsr0 = ComposerStaticInit67b09c83b85c3bc0027caefe5bba171a::$prefixesPsr0;
- $loader->classMap = ComposerStaticInit67b09c83b85c3bc0027caefe5bba171a::$classMap;
-
- }, null, ClassLoader::class);
- }
-}
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
deleted file mode 100644
index d228ac94..00000000
--- a/vendor/composer/installed.json
+++ /dev/null
@@ -1,6291 +0,0 @@
-{
- "packages": [
- {
- "name": "brandonwamboldt/utilphp",
- "version": "1.1.0",
- "version_normalized": "1.1.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/brandonwamboldt/utilphp.git",
- "reference": "36c32efc4f0679c05163464a550f45c8d83fe683"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/brandonwamboldt/utilphp/zipball/36c32efc4f0679c05163464a550f45c8d83fe683",
- "reference": "36c32efc4f0679c05163464a550f45c8d83fe683",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "satooshi/php-coveralls": "dev-master"
- },
- "time": "2015-02-02T17:56:14+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-0": {
- "utilphp\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Brandon Wamboldt",
- "email": "brandon.wamboldt@gmail.com"
- }
- ],
- "description": "util.php is a collection of useful functions and snippets that you need or could use every day, designed to avoid conflicts with existing projects",
- "homepage": "https://github.com/brandonwamboldt/utilphp",
- "keywords": [
- "collection",
- "helpers",
- "php",
- "utility"
- ],
- "install-path": "../brandonwamboldt/utilphp"
- },
- {
- "name": "catfan/medoo",
- "version": "v1.7.10",
- "version_normalized": "1.7.10.0",
- "source": {
- "type": "git",
- "url": "https://github.com/catfan/Medoo.git",
- "reference": "2d675f73e23f63bbaeb9a8aa33318659a3d3c32f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/catfan/Medoo/zipball/2d675f73e23f63bbaeb9a8aa33318659a3d3c32f",
- "reference": "2d675f73e23f63bbaeb9a8aa33318659a3d3c32f",
- "shasum": ""
- },
- "require": {
- "ext-pdo": "*",
- "php": ">=5.4"
- },
- "suggest": {
- "ext-pdo_dblib": "For MSSQL or Sybase database on Linux/UNIX platform",
- "ext-pdo_mysql": "For MySQL or MariaDB database",
- "ext-pdo_oci": "For Oracle database",
- "ext-pdo_oci8": "For Oracle version 8 database",
- "ext-pdo_pqsql": "For PostgreSQL database",
- "ext-pdo_sqlite": "For SQLite database",
- "ext-pdo_sqlsrv": "For MSSQL database on both Window/Liunx platform"
- },
- "time": "2020-02-11T08:20:42+00:00",
- "type": "framework",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Medoo\\": "/src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Angel Lai",
- "email": "angel@catfan.me"
- }
- ],
- "description": "The lightweight PHP database framework to accelerate development",
- "homepage": "https://medoo.in",
- "keywords": [
- "database",
- "database library",
- "lightweight",
- "mariadb",
- "mssql",
- "mysql",
- "oracle",
- "php framework",
- "postgresql",
- "sql",
- "sqlite"
- ],
- "support": {
- "issues": "https://github.com/catfan/Medoo/issues",
- "source": "https://github.com/catfan/Medoo"
- },
- "install-path": "../catfan/medoo"
- },
- {
- "name": "composer/semver",
- "version": "3.2.6",
- "version_normalized": "3.2.6.0",
- "source": {
- "type": "git",
- "url": "https://github.com/composer/semver.git",
- "reference": "83e511e247de329283478496f7a1e114c9517506"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/composer/semver/zipball/83e511e247de329283478496f7a1e114c9517506",
- "reference": "83e511e247de329283478496f7a1e114c9517506",
- "shasum": ""
- },
- "require": {
- "php": "^5.3.2 || ^7.0 || ^8.0"
- },
- "require-dev": {
- "phpstan/phpstan": "^0.12.54",
- "symfony/phpunit-bridge": "^4.2 || ^5"
- },
- "time": "2021-10-25T11:34:17+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "3.x-dev"
- }
- },
- "installation-source": "dist",
- "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"
- ],
- "support": {
- "irc": "irc://irc.freenode.org/composer",
- "issues": "https://github.com/composer/semver/issues",
- "source": "https://github.com/composer/semver/tree/3.2.6"
- },
- "funding": [
- {
- "url": "https://packagist.com",
- "type": "custom"
- },
- {
- "url": "https://github.com/composer",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
- }
- ],
- "install-path": "./semver"
- },
- {
- "name": "composer/xdebug-handler",
- "version": "2.0.2",
- "version_normalized": "2.0.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/composer/xdebug-handler.git",
- "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/84674dd3a7575ba617f5a76d7e9e29a7d3891339",
- "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339",
- "shasum": ""
- },
- "require": {
- "php": "^5.3.2 || ^7.0 || ^8.0",
- "psr/log": "^1 || ^2 || ^3"
- },
- "require-dev": {
- "phpstan/phpstan": "^0.12.55",
- "symfony/phpunit-bridge": "^4.2 || ^5"
- },
- "time": "2021-07-31T17:03:58+00:00",
- "type": "library",
- "installation-source": "dist",
- "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"
- ],
- "support": {
- "irc": "irc://irc.freenode.org/composer",
- "issues": "https://github.com/composer/xdebug-handler/issues",
- "source": "https://github.com/composer/xdebug-handler/tree/2.0.2"
- },
- "funding": [
- {
- "url": "https://packagist.com",
- "type": "custom"
- },
- {
- "url": "https://github.com/composer",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
- }
- ],
- "install-path": "./xdebug-handler"
- },
- {
- "name": "doctrine/inflector",
- "version": "2.0.4",
- "version_normalized": "2.0.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/inflector.git",
- "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89",
- "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89",
- "shasum": ""
- },
- "require": {
- "php": "^7.2 || ^8.0"
- },
- "require-dev": {
- "doctrine/coding-standard": "^8.2",
- "phpstan/phpstan": "^0.12",
- "phpstan/phpstan-phpunit": "^0.12",
- "phpstan/phpstan-strict-rules": "^0.12",
- "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0",
- "vimeo/psalm": "^4.10"
- },
- "time": "2021-10-22T20:16:43+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Doctrine\\Inflector\\": "lib/Doctrine/Inflector"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.",
- "homepage": "https://www.doctrine-project.org/projects/inflector.html",
- "keywords": [
- "inflection",
- "inflector",
- "lowercase",
- "manipulation",
- "php",
- "plural",
- "singular",
- "strings",
- "uppercase",
- "words"
- ],
- "support": {
- "issues": "https://github.com/doctrine/inflector/issues",
- "source": "https://github.com/doctrine/inflector/tree/2.0.4"
- },
- "funding": [
- {
- "url": "https://www.doctrine-project.org/sponsorship.html",
- "type": "custom"
- },
- {
- "url": "https://www.patreon.com/phpdoctrine",
- "type": "patreon"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector",
- "type": "tidelift"
- }
- ],
- "install-path": "../doctrine/inflector"
- },
- {
- "name": "doctrine/instantiator",
- "version": "1.4.0",
- "version_normalized": "1.4.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/instantiator.git",
- "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
- "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
- "shasum": ""
- },
- "require": {
- "php": "^7.1 || ^8.0"
- },
- "require-dev": {
- "doctrine/coding-standard": "^8.0",
- "ext-pdo": "*",
- "ext-phar": "*",
- "phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
- "phpstan/phpstan": "^0.12",
- "phpstan/phpstan-phpunit": "^0.12",
- "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
- },
- "time": "2020-11-10T18:47:58+00:00",
- "type": "library",
- "installation-source": "dist",
- "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": "https://ocramius.github.io/"
- }
- ],
- "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
- "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
- "keywords": [
- "constructor",
- "instantiate"
- ],
- "support": {
- "issues": "https://github.com/doctrine/instantiator/issues",
- "source": "https://github.com/doctrine/instantiator/tree/1.4.0"
- },
- "funding": [
- {
- "url": "https://www.doctrine-project.org/sponsorship.html",
- "type": "custom"
- },
- {
- "url": "https://www.patreon.com/phpdoctrine",
- "type": "patreon"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
- "type": "tidelift"
- }
- ],
- "install-path": "../doctrine/instantiator"
- },
- {
- "name": "erusev/parsedown",
- "version": "1.7.4",
- "version_normalized": "1.7.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/erusev/parsedown.git",
- "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/erusev/parsedown/zipball/cb17b6477dfff935958ba01325f2e8a2bfa6dab3",
- "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3",
- "shasum": ""
- },
- "require": {
- "ext-mbstring": "*",
- "php": ">=5.3.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.35"
- },
- "time": "2019-12-30T22:54:17+00:00",
- "type": "library",
- "installation-source": "dist",
- "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"
- ],
- "install-path": "../erusev/parsedown"
- },
- {
- "name": "erusev/parsedown-extra",
- "version": "0.8.1",
- "version_normalized": "0.8.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/erusev/parsedown-extra.git",
- "reference": "91ac3ff98f0cea243bdccc688df43810f044dcef"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/erusev/parsedown-extra/zipball/91ac3ff98f0cea243bdccc688df43810f044dcef",
- "reference": "91ac3ff98f0cea243bdccc688df43810f044dcef",
- "shasum": ""
- },
- "require": {
- "erusev/parsedown": "^1.7.4"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.35"
- },
- "time": "2019-12-30T23:20:37+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-0": {
- "ParsedownExtra": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Emanuil Rusev",
- "email": "hello@erusev.com",
- "homepage": "http://erusev.com"
- }
- ],
- "description": "An extension of Parsedown that adds support for Markdown Extra.",
- "homepage": "https://github.com/erusev/parsedown-extra",
- "keywords": [
- "markdown",
- "markdown extra",
- "parsedown",
- "parser"
- ],
- "install-path": "../erusev/parsedown-extra"
- },
- {
- "name": "ezyang/htmlpurifier",
- "version": "v4.13.0",
- "version_normalized": "4.13.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/ezyang/htmlpurifier.git",
- "reference": "08e27c97e4c6ed02f37c5b2b20488046c8d90d75"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/08e27c97e4c6ed02f37c5b2b20488046c8d90d75",
- "reference": "08e27c97e4c6ed02f37c5b2b20488046c8d90d75",
- "shasum": ""
- },
- "require": {
- "php": ">=5.2"
- },
- "require-dev": {
- "simpletest/simpletest": "dev-master#72de02a7b80c6bb8864ef9bf66d41d2f58f826bd"
- },
- "time": "2020-06-29T00:56:53+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-0": {
- "HTMLPurifier": "library/"
- },
- "files": [
- "library/HTMLPurifier.composer.php"
- ],
- "exclude-from-classmap": [
- "/library/HTMLPurifier/Language/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "LGPL-2.1-or-later"
- ],
- "authors": [
- {
- "name": "Edward Z. Yang",
- "email": "admin@htmlpurifier.org",
- "homepage": "http://ezyang.com"
- }
- ],
- "description": "Standards compliant HTML filter written in PHP",
- "homepage": "http://htmlpurifier.org/",
- "keywords": [
- "html"
- ],
- "support": {
- "issues": "https://github.com/ezyang/htmlpurifier/issues",
- "source": "https://github.com/ezyang/htmlpurifier/tree/master"
- },
- "install-path": "../ezyang/htmlpurifier"
- },
- {
- "name": "felixfbecker/advanced-json-rpc",
- "version": "v3.2.1",
- "version_normalized": "3.2.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git",
- "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/b5f37dbff9a8ad360ca341f3240dc1c168b45447",
- "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447",
- "shasum": ""
- },
- "require": {
- "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
- "php": "^7.1 || ^8.0",
- "phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^7.0 || ^8.0"
- },
- "time": "2021-06-11T22:34:44+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "AdvancedJsonRpc\\": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "ISC"
- ],
- "authors": [
- {
- "name": "Felix Becker",
- "email": "felix.b@outlook.com"
- }
- ],
- "description": "A more advanced JSONRPC implementation",
- "support": {
- "issues": "https://github.com/felixfbecker/php-advanced-json-rpc/issues",
- "source": "https://github.com/felixfbecker/php-advanced-json-rpc/tree/v3.2.1"
- },
- "install-path": "../felixfbecker/advanced-json-rpc"
- },
- {
- "name": "firephp/firephp-core",
- "version": "v0.4.0",
- "version_normalized": "0.4.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/firephp/firephp-core.git",
- "reference": "fabad0f2503f9577fe8dd2cb1d1c7cd73ed2aacf"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/firephp/firephp-core/zipball/fabad0f2503f9577fe8dd2cb1d1c7cd73ed2aacf",
- "reference": "fabad0f2503f9577fe8dd2cb1d1c7cd73ed2aacf",
- "shasum": ""
- },
- "time": "2013-04-23T15:28:20+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "classmap": [
- "lib/FirePHPCore/FirePHP.class.php",
- "lib/FirePHPCore/fb.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Christoph Dorn",
- "email": "christoph@christophdorn.com",
- "homepage": "http://christophdorn.com"
- }
- ],
- "description": "Traditional FirePHPCore library for sending PHP variables to the browser.",
- "homepage": "https://github.com/firephp/firephp-core",
- "install-path": "../firephp/firephp-core"
- },
- {
- "name": "guzzlehttp/guzzle",
- "version": "6.5.5",
- "version_normalized": "6.5.5.0",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/guzzle.git",
- "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
- "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "guzzlehttp/promises": "^1.0",
- "guzzlehttp/psr7": "^1.6.1",
- "php": ">=5.5",
- "symfony/polyfill-intl-idn": "^1.17.0"
- },
- "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"
- },
- "time": "2020-06-16T21:01:06+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "6.5-dev"
- }
- },
- "installation-source": "dist",
- "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"
- ],
- "support": {
- "issues": "https://github.com/guzzle/guzzle/issues",
- "source": "https://github.com/guzzle/guzzle/tree/6.5"
- },
- "install-path": "../guzzlehttp/guzzle"
- },
- {
- "name": "guzzlehttp/promises",
- "version": "1.5.1",
- "version_normalized": "1.5.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/promises.git",
- "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da",
- "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5"
- },
- "require-dev": {
- "symfony/phpunit-bridge": "^4.4 || ^5.1"
- },
- "time": "2021-10-22T20:56:57+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.5-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\Promise\\": "src/"
- },
- "files": [
- "src/functions_include.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Graham Campbell",
- "email": "hello@gjcampbell.co.uk",
- "homepage": "https://github.com/GrahamCampbell"
- },
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- },
- {
- "name": "Tobias Nyholm",
- "email": "tobias.nyholm@gmail.com",
- "homepage": "https://github.com/Nyholm"
- },
- {
- "name": "Tobias Schultze",
- "email": "webmaster@tubo-world.de",
- "homepage": "https://github.com/Tobion"
- }
- ],
- "description": "Guzzle promises library",
- "keywords": [
- "promise"
- ],
- "support": {
- "issues": "https://github.com/guzzle/promises/issues",
- "source": "https://github.com/guzzle/promises/tree/1.5.1"
- },
- "funding": [
- {
- "url": "https://github.com/GrahamCampbell",
- "type": "github"
- },
- {
- "url": "https://github.com/Nyholm",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises",
- "type": "tidelift"
- }
- ],
- "install-path": "../guzzlehttp/promises"
- },
- {
- "name": "guzzlehttp/psr7",
- "version": "1.8.3",
- "version_normalized": "1.8.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/psr7.git",
- "reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/1afdd860a2566ed3c2b0b4a3de6e23434a79ec85",
- "reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85",
- "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.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
- },
- "suggest": {
- "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
- },
- "time": "2021-10-05T13:56:00+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.7-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\Psr7\\": "src/"
- },
- "files": [
- "src/functions_include.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Graham Campbell",
- "email": "hello@gjcampbell.co.uk",
- "homepage": "https://github.com/GrahamCampbell"
- },
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- },
- {
- "name": "George Mponos",
- "email": "gmponos@gmail.com",
- "homepage": "https://github.com/gmponos"
- },
- {
- "name": "Tobias Nyholm",
- "email": "tobias.nyholm@gmail.com",
- "homepage": "https://github.com/Nyholm"
- },
- {
- "name": "Márk Sági-Kazár",
- "email": "mark.sagikazar@gmail.com",
- "homepage": "https://github.com/sagikazarmark"
- },
- {
- "name": "Tobias Schultze",
- "email": "webmaster@tubo-world.de",
- "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"
- ],
- "support": {
- "issues": "https://github.com/guzzle/psr7/issues",
- "source": "https://github.com/guzzle/psr7/tree/1.8.3"
- },
- "funding": [
- {
- "url": "https://github.com/GrahamCampbell",
- "type": "github"
- },
- {
- "url": "https://github.com/Nyholm",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7",
- "type": "tidelift"
- }
- ],
- "install-path": "../guzzlehttp/psr7"
- },
- {
- "name": "illuminate/bus",
- "version": "v8.69.0",
- "version_normalized": "8.69.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/illuminate/bus.git",
- "reference": "be400399687b97d5558a224e970060fd5d5f2735"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/illuminate/bus/zipball/be400399687b97d5558a224e970060fd5d5f2735",
- "reference": "be400399687b97d5558a224e970060fd5d5f2735",
- "shasum": ""
- },
- "require": {
- "illuminate/collections": "^8.0",
- "illuminate/contracts": "^8.0",
- "illuminate/pipeline": "^8.0",
- "illuminate/support": "^8.0",
- "php": "^7.3|^8.0"
- },
- "suggest": {
- "illuminate/queue": "Required to use closures when chaining jobs (^7.0)."
- },
- "time": "2021-10-21T19:19:36+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "8.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Illuminate\\Bus\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- }
- ],
- "description": "The Illuminate Bus package.",
- "homepage": "https://laravel.com",
- "support": {
- "issues": "https://github.com/laravel/framework/issues",
- "source": "https://github.com/laravel/framework"
- },
- "install-path": "../illuminate/bus"
- },
- {
- "name": "illuminate/collections",
- "version": "v8.69.0",
- "version_normalized": "8.69.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/illuminate/collections.git",
- "reference": "05f286ec5fd2dd286e8384577047efc375c8954c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/illuminate/collections/zipball/05f286ec5fd2dd286e8384577047efc375c8954c",
- "reference": "05f286ec5fd2dd286e8384577047efc375c8954c",
- "shasum": ""
- },
- "require": {
- "illuminate/contracts": "^8.0",
- "illuminate/macroable": "^8.0",
- "php": "^7.3|^8.0"
- },
- "suggest": {
- "symfony/var-dumper": "Required to use the dump method (^5.1.4)."
- },
- "time": "2021-10-22T18:01:46+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "8.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Illuminate\\Support\\": ""
- },
- "files": [
- "helpers.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- }
- ],
- "description": "The Illuminate Collections package.",
- "homepage": "https://laravel.com",
- "support": {
- "issues": "https://github.com/laravel/framework/issues",
- "source": "https://github.com/laravel/framework"
- },
- "install-path": "../illuminate/collections"
- },
- {
- "name": "illuminate/container",
- "version": "v8.69.0",
- "version_normalized": "8.69.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/illuminate/container.git",
- "reference": "ef73feb5216ef97ab7023cf59c0c8dbbd5505a9d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/illuminate/container/zipball/ef73feb5216ef97ab7023cf59c0c8dbbd5505a9d",
- "reference": "ef73feb5216ef97ab7023cf59c0c8dbbd5505a9d",
- "shasum": ""
- },
- "require": {
- "illuminate/contracts": "^8.0",
- "php": "^7.3|^8.0",
- "psr/container": "^1.0"
- },
- "provide": {
- "psr/container-implementation": "1.0"
- },
- "time": "2021-09-15T14:32:50+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "8.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Illuminate\\Container\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- }
- ],
- "description": "The Illuminate Container package.",
- "homepage": "https://laravel.com",
- "support": {
- "issues": "https://github.com/laravel/framework/issues",
- "source": "https://github.com/laravel/framework"
- },
- "install-path": "../illuminate/container"
- },
- {
- "name": "illuminate/contracts",
- "version": "v8.69.0",
- "version_normalized": "8.69.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/illuminate/contracts.git",
- "reference": "e76f4bce73a2a1656add24bd5210ebc4b8af49c0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/illuminate/contracts/zipball/e76f4bce73a2a1656add24bd5210ebc4b8af49c0",
- "reference": "e76f4bce73a2a1656add24bd5210ebc4b8af49c0",
- "shasum": ""
- },
- "require": {
- "php": "^7.3|^8.0",
- "psr/container": "^1.0",
- "psr/simple-cache": "^1.0"
- },
- "time": "2021-10-22T18:01:46+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "8.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Illuminate\\Contracts\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- }
- ],
- "description": "The Illuminate Contracts package.",
- "homepage": "https://laravel.com",
- "support": {
- "issues": "https://github.com/laravel/framework/issues",
- "source": "https://github.com/laravel/framework"
- },
- "install-path": "../illuminate/contracts"
- },
- {
- "name": "illuminate/database",
- "version": "v8.69.0",
- "version_normalized": "8.69.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/illuminate/database.git",
- "reference": "43c7ffb6299ae55b000b286cf1278afd268ef29f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/illuminate/database/zipball/43c7ffb6299ae55b000b286cf1278afd268ef29f",
- "reference": "43c7ffb6299ae55b000b286cf1278afd268ef29f",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "illuminate/collections": "^8.0",
- "illuminate/container": "^8.0",
- "illuminate/contracts": "^8.0",
- "illuminate/macroable": "^8.0",
- "illuminate/support": "^8.0",
- "php": "^7.3|^8.0",
- "symfony/console": "^5.1.4"
- },
- "suggest": {
- "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.2).",
- "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).",
- "illuminate/console": "Required to use the database commands (^8.0).",
- "illuminate/events": "Required to use the observers with Eloquent (^8.0).",
- "illuminate/filesystem": "Required to use the migrations (^8.0).",
- "illuminate/pagination": "Required to paginate the result set (^8.0).",
- "symfony/finder": "Required to use Eloquent model factories (^5.1.4)."
- },
- "time": "2021-10-29T19:46:53+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "8.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Illuminate\\Database\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- }
- ],
- "description": "The Illuminate Database package.",
- "homepage": "https://laravel.com",
- "keywords": [
- "database",
- "laravel",
- "orm",
- "sql"
- ],
- "support": {
- "issues": "https://github.com/laravel/framework/issues",
- "source": "https://github.com/laravel/framework"
- },
- "install-path": "../illuminate/database"
- },
- {
- "name": "illuminate/events",
- "version": "v8.69.0",
- "version_normalized": "8.69.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/illuminate/events.git",
- "reference": "b7f06cafb6c09581617f2ca05d69e9b159e5a35d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/illuminate/events/zipball/b7f06cafb6c09581617f2ca05d69e9b159e5a35d",
- "reference": "b7f06cafb6c09581617f2ca05d69e9b159e5a35d",
- "shasum": ""
- },
- "require": {
- "illuminate/bus": "^8.0",
- "illuminate/collections": "^8.0",
- "illuminate/container": "^8.0",
- "illuminate/contracts": "^8.0",
- "illuminate/macroable": "^8.0",
- "illuminate/support": "^8.0",
- "php": "^7.3|^8.0"
- },
- "time": "2021-09-15T14:32:50+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "8.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Illuminate\\Events\\": ""
- },
- "files": [
- "functions.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- }
- ],
- "description": "The Illuminate Events package.",
- "homepage": "https://laravel.com",
- "support": {
- "issues": "https://github.com/laravel/framework/issues",
- "source": "https://github.com/laravel/framework"
- },
- "install-path": "../illuminate/events"
- },
- {
- "name": "illuminate/macroable",
- "version": "v8.69.0",
- "version_normalized": "8.69.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/illuminate/macroable.git",
- "reference": "300aa13c086f25116b5f3cde3ca54ff5c822fb05"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/illuminate/macroable/zipball/300aa13c086f25116b5f3cde3ca54ff5c822fb05",
- "reference": "300aa13c086f25116b5f3cde3ca54ff5c822fb05",
- "shasum": ""
- },
- "require": {
- "php": "^7.3|^8.0"
- },
- "time": "2020-10-27T15:20:30+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "8.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Illuminate\\Support\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- }
- ],
- "description": "The Illuminate Macroable package.",
- "homepage": "https://laravel.com",
- "support": {
- "issues": "https://github.com/laravel/framework/issues",
- "source": "https://github.com/laravel/framework"
- },
- "install-path": "../illuminate/macroable"
- },
- {
- "name": "illuminate/pipeline",
- "version": "v8.69.0",
- "version_normalized": "8.69.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/illuminate/pipeline.git",
- "reference": "23aeff5b26ae4aee3f370835c76bd0f4e93f71d2"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/illuminate/pipeline/zipball/23aeff5b26ae4aee3f370835c76bd0f4e93f71d2",
- "reference": "23aeff5b26ae4aee3f370835c76bd0f4e93f71d2",
- "shasum": ""
- },
- "require": {
- "illuminate/contracts": "^8.0",
- "illuminate/support": "^8.0",
- "php": "^7.3|^8.0"
- },
- "time": "2021-03-26T18:39:16+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "8.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Illuminate\\Pipeline\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- }
- ],
- "description": "The Illuminate Pipeline package.",
- "homepage": "https://laravel.com",
- "support": {
- "issues": "https://github.com/laravel/framework/issues",
- "source": "https://github.com/laravel/framework"
- },
- "install-path": "../illuminate/pipeline"
- },
- {
- "name": "illuminate/support",
- "version": "v8.69.0",
- "version_normalized": "8.69.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/illuminate/support.git",
- "reference": "a8851b7001530d3c11626a81449ed9b63dd10db7"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/illuminate/support/zipball/a8851b7001530d3c11626a81449ed9b63dd10db7",
- "reference": "a8851b7001530d3c11626a81449ed9b63dd10db7",
- "shasum": ""
- },
- "require": {
- "doctrine/inflector": "^1.4|^2.0",
- "ext-json": "*",
- "ext-mbstring": "*",
- "illuminate/collections": "^8.0",
- "illuminate/contracts": "^8.0",
- "illuminate/macroable": "^8.0",
- "nesbot/carbon": "^2.53.1",
- "php": "^7.3|^8.0",
- "voku/portable-ascii": "^1.4.8"
- },
- "conflict": {
- "tightenco/collect": "<5.5.33"
- },
- "suggest": {
- "illuminate/filesystem": "Required to use the composer class (^8.0).",
- "league/commonmark": "Required to use Str::markdown() and Stringable::markdown() (^1.3|^2.0.2).",
- "ramsey/uuid": "Required to use Str::uuid() (^4.2.2).",
- "symfony/process": "Required to use the composer class (^5.1.4).",
- "symfony/var-dumper": "Required to use the dd function (^5.1.4).",
- "vlucas/phpdotenv": "Required to use the Env class and env helper (^5.2)."
- },
- "time": "2021-10-29T13:34:03+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "8.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Illuminate\\Support\\": ""
- },
- "files": [
- "helpers.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- }
- ],
- "description": "The Illuminate Support package.",
- "homepage": "https://laravel.com",
- "support": {
- "issues": "https://github.com/laravel/framework/issues",
- "source": "https://github.com/laravel/framework"
- },
- "install-path": "../illuminate/support"
- },
- {
- "name": "league/plates",
- "version": "v3.4.0",
- "version_normalized": "3.4.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/thephpleague/plates.git",
- "reference": "6d3ee31199b536a4e003b34a356ca20f6f75496a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/thephpleague/plates/zipball/6d3ee31199b536a4e003b34a356ca20f6f75496a",
- "reference": "6d3ee31199b536a4e003b34a356ca20f6f75496a",
- "shasum": ""
- },
- "require": {
- "php": "^7.0|^8.0"
- },
- "require-dev": {
- "mikey179/vfsstream": "^1.6",
- "phpunit/phpunit": "^9.5",
- "squizlabs/php_codesniffer": "^3.5"
- },
- "time": "2020-12-25T05:00:37+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "League\\Plates\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jonathan Reinink",
- "email": "jonathan@reinink.ca",
- "role": "Developer"
- },
- {
- "name": "RJ Garcia",
- "email": "ragboyjr@icloud.com",
- "role": "Developer"
- }
- ],
- "description": "Plates, the native PHP template system that's fast, easy to use and easy to extend.",
- "homepage": "https://platesphp.com",
- "keywords": [
- "league",
- "package",
- "templates",
- "templating",
- "views"
- ],
- "support": {
- "issues": "https://github.com/thephpleague/plates/issues",
- "source": "https://github.com/thephpleague/plates/tree/v3.4.0"
- },
- "install-path": "../league/plates"
- },
- {
- "name": "microsoft/tolerant-php-parser",
- "version": "v0.1.1",
- "version_normalized": "0.1.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/microsoft/tolerant-php-parser.git",
- "reference": "6a965617cf484355048ac6d2d3de7b6ec93abb16"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/microsoft/tolerant-php-parser/zipball/6a965617cf484355048ac6d2d3de7b6ec93abb16",
- "reference": "6a965617cf484355048ac6d2d3de7b6ec93abb16",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2"
- },
- "require-dev": {
- "phpunit/phpunit": "^8.5.15"
- },
- "time": "2021-07-16T21:28:12+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Microsoft\\PhpParser\\": [
- "src/"
- ]
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Rob Lourens",
- "email": "roblou@microsoft.com"
- }
- ],
- "description": "Tolerant PHP-to-AST parser designed for IDE usage scenarios",
- "support": {
- "issues": "https://github.com/microsoft/tolerant-php-parser/issues",
- "source": "https://github.com/microsoft/tolerant-php-parser/tree/v0.1.1"
- },
- "install-path": "../microsoft/tolerant-php-parser"
- },
- {
- "name": "monolog/monolog",
- "version": "1.26.1",
- "version_normalized": "1.26.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/Seldaek/monolog.git",
- "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c6b00f05152ae2c9b04a448f99c7590beb6042f5",
- "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5",
- "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",
- "php-amqplib/php-amqplib": "~2.4",
- "php-console/php-console": "^3.1.3",
- "phpstan/phpstan": "^0.12.59",
- "phpunit/phpunit": "~4.5",
- "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"
- },
- "time": "2021-05-28T08:32:12+00:00",
- "type": "library",
- "installation-source": "dist",
- "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"
- ],
- "support": {
- "issues": "https://github.com/Seldaek/monolog/issues",
- "source": "https://github.com/Seldaek/monolog/tree/1.26.1"
- },
- "funding": [
- {
- "url": "https://github.com/Seldaek",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/monolog/monolog",
- "type": "tidelift"
- }
- ],
- "install-path": "../monolog/monolog"
- },
- {
- "name": "myclabs/deep-copy",
- "version": "1.10.2",
- "version_normalized": "1.10.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220",
- "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220",
- "shasum": ""
- },
- "require": {
- "php": "^7.1 || ^8.0"
- },
- "replace": {
- "myclabs/deep-copy": "self.version"
- },
- "require-dev": {
- "doctrine/collections": "^1.0",
- "doctrine/common": "^2.6",
- "phpunit/phpunit": "^7.1"
- },
- "time": "2020-11-13T09:40:50+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "files": [
- "src/DeepCopy/deep_copy.php"
- ],
- "psr-4": {
- "DeepCopy\\": "src/DeepCopy/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Create deep copies (clones) of your objects",
- "keywords": [
- "clone",
- "copy",
- "duplicate",
- "object",
- "object graph"
- ],
- "support": {
- "issues": "https://github.com/myclabs/DeepCopy/issues",
- "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2"
- },
- "funding": [
- {
- "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
- "type": "tidelift"
- }
- ],
- "install-path": "../myclabs/deep-copy"
- },
- {
- "name": "nesbot/carbon",
- "version": "2.54.0",
- "version_normalized": "2.54.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/briannesbitt/Carbon.git",
- "reference": "eed83939f1aed3eee517d03a33f5ec587ac529b5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/eed83939f1aed3eee517d03a33f5ec587ac529b5",
- "reference": "eed83939f1aed3eee517d03a33f5ec587ac529b5",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "php": "^7.1.8 || ^8.0",
- "symfony/polyfill-mbstring": "^1.0",
- "symfony/polyfill-php80": "^1.16",
- "symfony/translation": "^3.4 || ^4.0 || ^5.0"
- },
- "require-dev": {
- "doctrine/dbal": "^2.0 || ^3.0",
- "doctrine/orm": "^2.7",
- "friendsofphp/php-cs-fixer": "^3.0",
- "kylekatarnls/multi-tester": "^2.0",
- "phpmd/phpmd": "^2.9",
- "phpstan/extension-installer": "^1.0",
- "phpstan/phpstan": "^0.12.54",
- "phpunit/phpunit": "^7.5.20 || ^8.5.14",
- "squizlabs/php_codesniffer": "^3.4"
- },
- "time": "2021-11-01T21:22:20+00:00",
- "bin": [
- "bin/carbon"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-3.x": "3.x-dev",
- "dev-master": "2.x-dev"
- },
- "laravel": {
- "providers": [
- "Carbon\\Laravel\\ServiceProvider"
- ]
- },
- "phpstan": {
- "includes": [
- "extension.neon"
- ]
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Carbon\\": "src/Carbon/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Brian Nesbitt",
- "email": "brian@nesbot.com",
- "homepage": "https://markido.com"
- },
- {
- "name": "kylekatarnls",
- "homepage": "https://github.com/kylekatarnls"
- }
- ],
- "description": "An API extension for DateTime that supports 281 different languages.",
- "homepage": "https://carbon.nesbot.com",
- "keywords": [
- "date",
- "datetime",
- "time"
- ],
- "support": {
- "issues": "https://github.com/briannesbitt/Carbon/issues",
- "source": "https://github.com/briannesbitt/Carbon"
- },
- "funding": [
- {
- "url": "https://opencollective.com/Carbon",
- "type": "open_collective"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon",
- "type": "tidelift"
- }
- ],
- "install-path": "../nesbot/carbon"
- },
- {
- "name": "netresearch/jsonmapper",
- "version": "v4.0.0",
- "version_normalized": "4.0.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/cweiske/jsonmapper.git",
- "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d",
- "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "ext-pcre": "*",
- "ext-reflection": "*",
- "ext-spl": "*",
- "php": ">=7.1"
- },
- "require-dev": {
- "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0",
- "squizlabs/php_codesniffer": "~3.5"
- },
- "time": "2020-12-01T19:48:11+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-0": {
- "JsonMapper": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "OSL-3.0"
- ],
- "authors": [
- {
- "name": "Christian Weiske",
- "email": "cweiske@cweiske.de",
- "homepage": "http://github.com/cweiske/jsonmapper/",
- "role": "Developer"
- }
- ],
- "description": "Map nested JSON structures onto PHP classes",
- "support": {
- "email": "cweiske@cweiske.de",
- "issues": "https://github.com/cweiske/jsonmapper/issues",
- "source": "https://github.com/cweiske/jsonmapper/tree/v4.0.0"
- },
- "install-path": "../netresearch/jsonmapper"
- },
- {
- "name": "nette/caching",
- "version": "v3.1.1",
- "version_normalized": "3.1.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/caching.git",
- "reference": "3e771c589dee414724be473c24ad16dae50c1960"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/caching/zipball/3e771c589dee414724be473c24ad16dae50c1960",
- "reference": "3e771c589dee414724be473c24ad16dae50c1960",
- "shasum": ""
- },
- "require": {
- "nette/finder": "^2.4 || ^3.0",
- "nette/utils": "^2.4 || ^3.0",
- "php": ">=7.2 <8.1"
- },
- "require-dev": {
- "latte/latte": "^2.10",
- "nette/di": "^v3.0",
- "nette/tester": "^2.0",
- "phpstan/phpstan": "^0.12",
- "tracy/tracy": "^2.4"
- },
- "suggest": {
- "ext-pdo_sqlite": "to use SQLiteStorage or SQLiteJournal"
- },
- "time": "2021-03-06T14:07:38+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0-only",
- "GPL-3.0-only"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "https://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "https://nette.org/contributors"
- }
- ],
- "description": "⏱ Nette Caching: library with easy-to-use API and many cache backends.",
- "homepage": "https://nette.org",
- "keywords": [
- "cache",
- "journal",
- "memcached",
- "nette",
- "sqlite"
- ],
- "support": {
- "issues": "https://github.com/nette/caching/issues",
- "source": "https://github.com/nette/caching/tree/v3.1.1"
- },
- "install-path": "../nette/caching"
- },
- {
- "name": "nette/finder",
- "version": "v2.5.2",
- "version_normalized": "2.5.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/finder.git",
- "reference": "4ad2c298eb8c687dd0e74ae84206a4186eeaed50"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/finder/zipball/4ad2c298eb8c687dd0e74ae84206a4186eeaed50",
- "reference": "4ad2c298eb8c687dd0e74ae84206a4186eeaed50",
- "shasum": ""
- },
- "require": {
- "nette/utils": "^2.4 || ^3.0",
- "php": ">=7.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "nette/tester": "^2.0",
- "phpstan/phpstan": "^0.12",
- "tracy/tracy": "^2.3"
- },
- "time": "2020-01-03T20:35:40+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.5-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "https://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "https://nette.org/contributors"
- }
- ],
- "description": "🔍 Nette Finder: find files and directories with an intuitive API.",
- "homepage": "https://nette.org",
- "keywords": [
- "filesystem",
- "glob",
- "iterator",
- "nette"
- ],
- "install-path": "../nette/finder"
- },
- {
- "name": "nette/utils",
- "version": "v3.2.5",
- "version_normalized": "3.2.5.0",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/utils.git",
- "reference": "9cd80396ca58d7969ab44fc7afcf03624dfa526e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/utils/zipball/9cd80396ca58d7969ab44fc7afcf03624dfa526e",
- "reference": "9cd80396ca58d7969ab44fc7afcf03624dfa526e",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2 <8.2"
- },
- "conflict": {
- "nette/di": "<3.0.6"
- },
- "require-dev": {
- "nette/tester": "~2.0",
- "phpstan/phpstan": "^0.12",
- "tracy/tracy": "^2.3"
- },
- "suggest": {
- "ext-gd": "to use Image",
- "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()",
- "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()",
- "ext-json": "to use Nette\\Utils\\Json",
- "ext-mbstring": "to use Strings::lower() etc...",
- "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()",
- "ext-xml": "to use Strings::length() etc. when mbstring is not available"
- },
- "time": "2021-09-20T10:50:11+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.2-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0-only",
- "GPL-3.0-only"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "https://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "https://nette.org/contributors"
- }
- ],
- "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.",
- "homepage": "https://nette.org",
- "keywords": [
- "array",
- "core",
- "datetime",
- "images",
- "json",
- "nette",
- "paginator",
- "password",
- "slugify",
- "string",
- "unicode",
- "utf-8",
- "utility",
- "validation"
- ],
- "support": {
- "issues": "https://github.com/nette/utils/issues",
- "source": "https://github.com/nette/utils/tree/v3.2.5"
- },
- "install-path": "../nette/utils"
- },
- {
- "name": "nikic/php-parser",
- "version": "v4.13.2",
- "version_normalized": "4.13.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "210577fe3cf7badcc5814d99455df46564f3c077"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077",
- "reference": "210577fe3cf7badcc5814d99455df46564f3c077",
- "shasum": ""
- },
- "require": {
- "ext-tokenizer": "*",
- "php": ">=7.0"
- },
- "require-dev": {
- "ircmaxell/php-yacc": "^0.0.7",
- "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
- },
- "time": "2021-11-30T19:35:32+00:00",
- "bin": [
- "bin/php-parse"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.9-dev"
- }
- },
- "installation-source": "dist",
- "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"
- ],
- "support": {
- "issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2"
- },
- "install-path": "../nikic/php-parser"
- },
- {
- "name": "pguardiario/phpuri",
- "version": "1.0",
- "version_normalized": "1.0.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/monkeysuffrage/phpuri.git",
- "reference": "ad0a5ec033fe616cfef55578b9c7f2458be8fbfc"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/monkeysuffrage/phpuri/zipball/ad0a5ec033fe616cfef55578b9c7f2458be8fbfc",
- "reference": "ad0a5ec033fe616cfef55578b9c7f2458be8fbfc",
- "shasum": ""
- },
- "time": "2015-05-24T09:13:17+00:00",
- "type": "project",
- "installation-source": "dist",
- "autoload": {
- "files": [
- "phpuri.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "description": "A php library for converting relative urls to absolute.",
- "install-path": "../pguardiario/phpuri"
- },
- {
- "name": "phan/phan",
- "version": "5.2.1",
- "version_normalized": "5.2.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phan/phan.git",
- "reference": "d724bbb8fc3ba89179868bb5220ecdf6a9c1636b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phan/phan/zipball/d724bbb8fc3ba89179868bb5220ecdf6a9c1636b",
- "reference": "d724bbb8fc3ba89179868bb5220ecdf6a9c1636b",
- "shasum": ""
- },
- "require": {
- "composer/semver": "^1.4|^2.0|^3.0",
- "composer/xdebug-handler": "^1.3.2|^2.0.0",
- "ext-filter": "*",
- "ext-json": "*",
- "ext-tokenizer": "*",
- "felixfbecker/advanced-json-rpc": "^3.0.4",
- "microsoft/tolerant-php-parser": "^0.1.0",
- "netresearch/jsonmapper": "^1.6.0|^2.0|^3.0|^4.0",
- "php": "^7.2.0|^8.0.0",
- "sabre/event": "^5.0.3",
- "symfony/console": "^3.2|^4.0|^5.0",
- "symfony/polyfill-mbstring": "^1.11.0",
- "symfony/polyfill-php80": "^1.20.0",
- "tysonandre/var_representation_polyfill": "^0.0.2|^0.1.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^8.5.0"
- },
- "suggest": {
- "ext-ast": "Needed for parsing ASTs (unless --use-fallback-parser is used). 1.0.1+ is needed, 1.0.14+ is recommended.",
- "ext-iconv": "Either iconv or mbstring is needed to ensure issue messages are valid utf-8",
- "ext-igbinary": "Improves performance of polyfill when ext-ast is unavailable",
- "ext-mbstring": "Either iconv or mbstring is needed to ensure issue messages are valid utf-8",
- "ext-tokenizer": "Needed for fallback/polyfill parser support and file/line-based suppressions.",
- "ext-var_representation": "Suggested for converting values to strings in issue messages"
- },
- "time": "2021-09-15T00:08:40+00:00",
- "bin": [
- "phan",
- "phan_client",
- "tocheckstyle"
- ],
- "type": "project",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Phan\\": "src/Phan"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Tyson Andre"
- },
- {
- "name": "Rasmus Lerdorf"
- },
- {
- "name": "Andrew S. Morrison"
- }
- ],
- "description": "A static analyzer for PHP",
- "keywords": [
- "analyzer",
- "php",
- "static"
- ],
- "support": {
- "issues": "https://github.com/phan/phan/issues",
- "source": "https://github.com/phan/phan/tree/5.2.1"
- },
- "install-path": "../phan/phan"
- },
- {
- "name": "phar-io/manifest",
- "version": "2.0.3",
- "version_normalized": "2.0.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phar-io/manifest.git",
- "reference": "97803eca37d319dfa7826cc2437fc020857acb53"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
- "reference": "97803eca37d319dfa7826cc2437fc020857acb53",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-phar": "*",
- "ext-xmlwriter": "*",
- "phar-io/version": "^3.0.1",
- "php": "^7.2 || ^8.0"
- },
- "time": "2021-07-20T11:28:43+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
- "installation-source": "dist",
- "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)",
- "support": {
- "issues": "https://github.com/phar-io/manifest/issues",
- "source": "https://github.com/phar-io/manifest/tree/2.0.3"
- },
- "install-path": "../phar-io/manifest"
- },
- {
- "name": "phar-io/version",
- "version": "3.2.1",
- "version_normalized": "3.2.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phar-io/version.git",
- "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
- "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
- "shasum": ""
- },
- "require": {
- "php": "^7.2 || ^8.0"
- },
- "time": "2022-02-21T01:04:05+00:00",
- "type": "library",
- "installation-source": "dist",
- "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",
- "support": {
- "issues": "https://github.com/phar-io/version/issues",
- "source": "https://github.com/phar-io/version/tree/3.2.1"
- },
- "install-path": "../phar-io/version"
- },
- {
- "name": "php-extended/php-system",
- "version": "1.4.0",
- "version_normalized": "1.4.0.0",
- "source": {
- "type": "git",
- "url": "https://gitlab.com/php-extended/php-system.git",
- "reference": "9e6b3c2009ef56dc123efc43900e40cdf217ace0"
- },
- "dist": {
- "type": "zip",
- "url": "https://gitlab.com/api/v4/projects/php-extended%2Fphp-system/repository/archive.zip?sha=9e6b3c2009ef56dc123efc43900e40cdf217ace0",
- "reference": "9e6b3c2009ef56dc123efc43900e40cdf217ace0",
- "shasum": ""
- },
- "time": "2018-06-07T06:03:27+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "PhpExtended\\System\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Anastaszor",
- "role": "Developer"
- }
- ],
- "description": "A generic way to find informations about the running system",
- "homepage": "https://gitlab.com/php-extended/php-system",
- "keywords": [
- "operating system",
- "os",
- "php",
- "system"
- ],
- "install-path": "../php-extended/php-system"
- },
- {
- "name": "php-extended/php-tail",
- "version": "2.2.0",
- "version_normalized": "2.2.0.0",
- "source": {
- "type": "git",
- "url": "https://gitlab.com/php-extended/php-tail.git",
- "reference": "19fbd3a79ccc071954f28296b2c44754335304a0"
- },
- "dist": {
- "type": "zip",
- "url": "https://gitlab.com/api/v4/projects/php-extended%2Fphp-tail/repository/archive.zip?sha=19fbd3a79ccc071954f28296b2c44754335304a0",
- "reference": "19fbd3a79ccc071954f28296b2c44754335304a0",
- "shasum": ""
- },
- "require": {
- "php-extended/php-system": "^1.2"
- },
- "time": "2018-06-07T06:04:58+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "PhpExtended\\Tail\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Anastaszor",
- "role": "Developer"
- }
- ],
- "description": "A smart way to tail files depending of the environment",
- "homepage": "https://gitlab.com/php-extended/php-tail",
- "keywords": [
- "cheat",
- "mighty",
- "naive",
- "php",
- "tail"
- ],
- "install-path": "../php-extended/php-tail"
- },
- {
- "name": "phpdocumentor/reflection-common",
- "version": "2.2.0",
- "version_normalized": "2.2.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
- "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
- "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
- "shasum": ""
- },
- "require": {
- "php": "^7.2 || ^8.0"
- },
- "time": "2020-06-27T09:03:43+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-2.x": "2.x-dev"
- }
- },
- "installation-source": "dist",
- "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"
- ],
- "support": {
- "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
- "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
- },
- "install-path": "../phpdocumentor/reflection-common"
- },
- {
- "name": "phpdocumentor/reflection-docblock",
- "version": "5.3.0",
- "version_normalized": "5.3.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "622548b623e81ca6d78b721c5e029f4ce664f170"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170",
- "reference": "622548b623e81ca6d78b721c5e029f4ce664f170",
- "shasum": ""
- },
- "require": {
- "ext-filter": "*",
- "php": "^7.2 || ^8.0",
- "phpdocumentor/reflection-common": "^2.2",
- "phpdocumentor/type-resolver": "^1.3",
- "webmozart/assert": "^1.9.1"
- },
- "require-dev": {
- "mockery/mockery": "~1.3.2",
- "psalm/phar": "^4.8"
- },
- "time": "2021-10-19T17:43:47+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mike van Riel",
- "email": "me@mikevanriel.com"
- },
- {
- "name": "Jaap van Otterdijk",
- "email": "account@ijaap.nl"
- }
- ],
- "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
- "support": {
- "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
- "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0"
- },
- "install-path": "../phpdocumentor/reflection-docblock"
- },
- {
- "name": "phpdocumentor/type-resolver",
- "version": "1.5.1",
- "version_normalized": "1.5.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/a12f7e301eb7258bb68acd89d4aefa05c2906cae",
- "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae",
- "shasum": ""
- },
- "require": {
- "php": "^7.2 || ^8.0",
- "phpdocumentor/reflection-common": "^2.0"
- },
- "require-dev": {
- "ext-tokenizer": "*",
- "psalm/phar": "^4.8"
- },
- "time": "2021-10-02T14:08:47+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-1.x": "1.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mike van Riel",
- "email": "me@mikevanriel.com"
- }
- ],
- "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
- "support": {
- "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
- "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.5.1"
- },
- "install-path": "../phpdocumentor/type-resolver"
- },
- {
- "name": "phpspec/prophecy",
- "version": "v1.15.0",
- "version_normalized": "1.15.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpspec/prophecy.git",
- "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
- "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
- "shasum": ""
- },
- "require": {
- "doctrine/instantiator": "^1.2",
- "php": "^7.2 || ~8.0, <8.2",
- "phpdocumentor/reflection-docblock": "^5.2",
- "sebastian/comparator": "^3.0 || ^4.0",
- "sebastian/recursion-context": "^3.0 || ^4.0"
- },
- "require-dev": {
- "phpspec/phpspec": "^6.0 || ^7.0",
- "phpunit/phpunit": "^8.0 || ^9.0"
- },
- "time": "2021-12-08T12:19:24+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Prophecy\\": "src/Prophecy"
- }
- },
- "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"
- ],
- "support": {
- "issues": "https://github.com/phpspec/prophecy/issues",
- "source": "https://github.com/phpspec/prophecy/tree/v1.15.0"
- },
- "install-path": "../phpspec/prophecy"
- },
- {
- "name": "phpunit/php-code-coverage",
- "version": "9.2.14",
- "version_normalized": "9.2.14.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "9f4d60b6afe5546421462b76cd4e633ebc364ab4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/9f4d60b6afe5546421462b76cd4e633ebc364ab4",
- "reference": "9f4d60b6afe5546421462b76cd4e633ebc364ab4",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-libxml": "*",
- "ext-xmlwriter": "*",
- "nikic/php-parser": "^4.13.0",
- "php": ">=7.3",
- "phpunit/php-file-iterator": "^3.0.3",
- "phpunit/php-text-template": "^2.0.2",
- "sebastian/code-unit-reverse-lookup": "^2.0.2",
- "sebastian/complexity": "^2.0",
- "sebastian/environment": "^5.1.2",
- "sebastian/lines-of-code": "^1.0.3",
- "sebastian/version": "^3.0.1",
- "theseer/tokenizer": "^1.2.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.3"
- },
- "suggest": {
- "ext-pcov": "*",
- "ext-xdebug": "*"
- },
- "time": "2022-02-28T12:38:02+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "9.2-dev"
- }
- },
- "installation-source": "dist",
- "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"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
- "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.14"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "install-path": "../phpunit/php-code-coverage"
- },
- {
- "name": "phpunit/php-file-iterator",
- "version": "3.0.6",
- "version_normalized": "3.0.6.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
- "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
- "shasum": ""
- },
- "require": {
- "php": ">=7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.3"
- },
- "time": "2021-12-02T12:48:52+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.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"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
- "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "install-path": "../phpunit/php-file-iterator"
- },
- {
- "name": "phpunit/php-invoker",
- "version": "3.1.1",
- "version_normalized": "3.1.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-invoker.git",
- "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
- "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
- "shasum": ""
- },
- "require": {
- "php": ">=7.3"
- },
- "require-dev": {
- "ext-pcntl": "*",
- "phpunit/phpunit": "^9.3"
- },
- "suggest": {
- "ext-pcntl": "*"
- },
- "time": "2020-09-28T05:58:55+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Invoke callables with a timeout",
- "homepage": "https://github.com/sebastianbergmann/php-invoker/",
- "keywords": [
- "process"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/php-invoker/issues",
- "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "install-path": "../phpunit/php-invoker"
- },
- {
- "name": "phpunit/php-text-template",
- "version": "2.0.4",
- "version_normalized": "2.0.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-text-template.git",
- "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
- "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
- "shasum": ""
- },
- "require": {
- "php": ">=7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.3"
- },
- "time": "2020-10-26T05:33:50+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0-dev"
- }
- },
- "installation-source": "dist",
- "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"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
- "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "install-path": "../phpunit/php-text-template"
- },
- {
- "name": "phpunit/php-timer",
- "version": "5.0.3",
- "version_normalized": "5.0.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-timer.git",
- "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
- "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
- "shasum": ""
- },
- "require": {
- "php": ">=7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.3"
- },
- "time": "2020-10-26T13:16:10+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.0-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Utility class for timing",
- "homepage": "https://github.com/sebastianbergmann/php-timer/",
- "keywords": [
- "timer"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/php-timer/issues",
- "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "install-path": "../phpunit/php-timer"
- },
- {
- "name": "phpunit/phpunit",
- "version": "9.5.16",
- "version_normalized": "9.5.16.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "5ff8c545a50226c569310a35f4fa89d79f1ddfdc"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/5ff8c545a50226c569310a35f4fa89d79f1ddfdc",
- "reference": "5ff8c545a50226c569310a35f4fa89d79f1ddfdc",
- "shasum": ""
- },
- "require": {
- "doctrine/instantiator": "^1.3.1",
- "ext-dom": "*",
- "ext-json": "*",
- "ext-libxml": "*",
- "ext-mbstring": "*",
- "ext-xml": "*",
- "ext-xmlwriter": "*",
- "myclabs/deep-copy": "^1.10.1",
- "phar-io/manifest": "^2.0.3",
- "phar-io/version": "^3.0.2",
- "php": ">=7.3",
- "phpspec/prophecy": "^1.12.1",
- "phpunit/php-code-coverage": "^9.2.13",
- "phpunit/php-file-iterator": "^3.0.5",
- "phpunit/php-invoker": "^3.1.1",
- "phpunit/php-text-template": "^2.0.3",
- "phpunit/php-timer": "^5.0.2",
- "sebastian/cli-parser": "^1.0.1",
- "sebastian/code-unit": "^1.0.6",
- "sebastian/comparator": "^4.0.5",
- "sebastian/diff": "^4.0.3",
- "sebastian/environment": "^5.1.3",
- "sebastian/exporter": "^4.0.3",
- "sebastian/global-state": "^5.0.1",
- "sebastian/object-enumerator": "^4.0.3",
- "sebastian/resource-operations": "^3.0.3",
- "sebastian/type": "^2.3.4",
- "sebastian/version": "^3.0.2"
- },
- "require-dev": {
- "ext-pdo": "*",
- "phpspec/prophecy-phpunit": "^2.0.1"
- },
- "suggest": {
- "ext-soap": "*",
- "ext-xdebug": "*"
- },
- "time": "2022-02-23T17:10:58+00:00",
- "bin": [
- "phpunit"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "9.5-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "files": [
- "src/Framework/Assert/Functions.php"
- ],
- "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"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/phpunit/issues",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.16"
- },
- "funding": [
- {
- "url": "https://phpunit.de/sponsors.html",
- "type": "custom"
- },
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "install-path": "../phpunit/phpunit"
- },
- {
- "name": "psr/container",
- "version": "1.1.2",
- "version_normalized": "1.1.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/container.git",
- "reference": "513e0666f7216c7459170d56df27dfcefe1689ea"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea",
- "reference": "513e0666f7216c7459170d56df27dfcefe1689ea",
- "shasum": ""
- },
- "require": {
- "php": ">=7.4.0"
- },
- "time": "2021-11-05T16:50:12+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Psr\\Container\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "https://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"
- ],
- "support": {
- "issues": "https://github.com/php-fig/container/issues",
- "source": "https://github.com/php-fig/container/tree/1.1.2"
- },
- "install-path": "../psr/container"
- },
- {
- "name": "psr/http-message",
- "version": "1.0.1",
- "version_normalized": "1.0.1.0",
- "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"
- },
- "time": "2016-08-06T14:39:51+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "installation-source": "dist",
- "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"
- ],
- "install-path": "../psr/http-message"
- },
- {
- "name": "psr/log",
- "version": "1.1.4",
- "version_normalized": "1.1.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/log.git",
- "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
- "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "time": "2021-05-03T11:20:27+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Psr\\Log\\": "Psr/Log/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "https://www.php-fig.org/"
- }
- ],
- "description": "Common interface for logging libraries",
- "homepage": "https://github.com/php-fig/log",
- "keywords": [
- "log",
- "psr",
- "psr-3"
- ],
- "support": {
- "source": "https://github.com/php-fig/log/tree/1.1.4"
- },
- "install-path": "../psr/log"
- },
- {
- "name": "psr/simple-cache",
- "version": "1.0.1",
- "version_normalized": "1.0.1.0",
- "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"
- },
- "time": "2017-10-23T01:57:42+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "installation-source": "dist",
- "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"
- ],
- "support": {
- "source": "https://github.com/php-fig/simple-cache/tree/master"
- },
- "install-path": "../psr/simple-cache"
- },
- {
- "name": "ralouphie/getallheaders",
- "version": "3.0.3",
- "version_normalized": "3.0.3.0",
- "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"
- },
- "time": "2019-03-08T08:55:37+00:00",
- "type": "library",
- "installation-source": "dist",
- "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.",
- "install-path": "../ralouphie/getallheaders"
- },
- {
- "name": "sabre/event",
- "version": "5.1.4",
- "version_normalized": "5.1.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sabre-io/event.git",
- "reference": "d7da22897125d34d7eddf7977758191c06a74497"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sabre-io/event/zipball/d7da22897125d34d7eddf7977758191c06a74497",
- "reference": "d7da22897125d34d7eddf7977758191c06a74497",
- "shasum": ""
- },
- "require": {
- "php": "^7.1 || ^8.0"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "~2.17.1",
- "phpstan/phpstan": "^0.12",
- "phpunit/phpunit": "^7.5 || ^8.5 || ^9.0"
- },
- "time": "2021-11-04T06:51:17+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Sabre\\Event\\": "lib/"
- },
- "files": [
- "lib/coroutine.php",
- "lib/Loop/functions.php",
- "lib/Promise/functions.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Evert Pot",
- "email": "me@evertpot.com",
- "homepage": "http://evertpot.com/",
- "role": "Developer"
- }
- ],
- "description": "sabre/event is a library for lightweight event-based programming",
- "homepage": "http://sabre.io/event/",
- "keywords": [
- "EventEmitter",
- "async",
- "coroutine",
- "eventloop",
- "events",
- "hooks",
- "plugin",
- "promise",
- "reactor",
- "signal"
- ],
- "support": {
- "forum": "https://groups.google.com/group/sabredav-discuss",
- "issues": "https://github.com/sabre-io/event/issues",
- "source": "https://github.com/fruux/sabre-event"
- },
- "install-path": "../sabre/event"
- },
- {
- "name": "sebastian/cli-parser",
- "version": "1.0.1",
- "version_normalized": "1.0.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/cli-parser.git",
- "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2",
- "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2",
- "shasum": ""
- },
- "require": {
- "php": ">=7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.3"
- },
- "time": "2020-09-28T06:08:49+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-dev"
- }
- },
- "installation-source": "dist",
- "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 for parsing CLI options",
- "homepage": "https://github.com/sebastianbergmann/cli-parser",
- "support": {
- "issues": "https://github.com/sebastianbergmann/cli-parser/issues",
- "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "install-path": "../sebastian/cli-parser"
- },
- {
- "name": "sebastian/code-unit",
- "version": "1.0.8",
- "version_normalized": "1.0.8.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/code-unit.git",
- "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120",
- "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120",
- "shasum": ""
- },
- "require": {
- "php": ">=7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.3"
- },
- "time": "2020-10-26T13:08:54+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Collection of value objects that represent the PHP code units",
- "homepage": "https://github.com/sebastianbergmann/code-unit",
- "support": {
- "issues": "https://github.com/sebastianbergmann/code-unit/issues",
- "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "install-path": "../sebastian/code-unit"
- },
- {
- "name": "sebastian/code-unit-reverse-lookup",
- "version": "2.0.3",
- "version_normalized": "2.0.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
- "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
- "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
- "shasum": ""
- },
- "require": {
- "php": ">=7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.3"
- },
- "time": "2020-09-28T05:30:19+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0-dev"
- }
- },
- "installation-source": "dist",
- "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/",
- "support": {
- "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
- "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "install-path": "../sebastian/code-unit-reverse-lookup"
- },
- {
- "name": "sebastian/comparator",
- "version": "4.0.6",
- "version_normalized": "4.0.6.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "55f4261989e546dc112258c7a75935a81a7ce382"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382",
- "reference": "55f4261989e546dc112258c7a75935a81a7ce382",
- "shasum": ""
- },
- "require": {
- "php": ">=7.3",
- "sebastian/diff": "^4.0",
- "sebastian/exporter": "^4.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.3"
- },
- "time": "2020-10-26T15:49:45+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.0-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Volker Dusch",
- "email": "github@wallbash.com"
- },
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@2bepublished.at"
- }
- ],
- "description": "Provides the functionality to compare PHP values for equality",
- "homepage": "https://github.com/sebastianbergmann/comparator",
- "keywords": [
- "comparator",
- "compare",
- "equality"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/comparator/issues",
- "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "install-path": "../sebastian/comparator"
- },
- {
- "name": "sebastian/complexity",
- "version": "2.0.2",
- "version_normalized": "2.0.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/complexity.git",
- "reference": "739b35e53379900cc9ac327b2147867b8b6efd88"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88",
- "reference": "739b35e53379900cc9ac327b2147867b8b6efd88",
- "shasum": ""
- },
- "require": {
- "nikic/php-parser": "^4.7",
- "php": ">=7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.3"
- },
- "time": "2020-10-26T15:52:27+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0-dev"
- }
- },
- "installation-source": "dist",
- "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 for calculating the complexity of PHP code units",
- "homepage": "https://github.com/sebastianbergmann/complexity",
- "support": {
- "issues": "https://github.com/sebastianbergmann/complexity/issues",
- "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "install-path": "../sebastian/complexity"
- },
- {
- "name": "sebastian/diff",
- "version": "4.0.4",
- "version_normalized": "4.0.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d",
- "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d",
- "shasum": ""
- },
- "require": {
- "php": ">=7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.3",
- "symfony/process": "^4.2 || ^5"
- },
- "time": "2020-10-26T13:10:38+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.0-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "Kore Nordmann",
- "email": "mail@kore-nordmann.de"
- }
- ],
- "description": "Diff implementation",
- "homepage": "https://github.com/sebastianbergmann/diff",
- "keywords": [
- "diff",
- "udiff",
- "unidiff",
- "unified diff"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/diff/issues",
- "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "install-path": "../sebastian/diff"
- },
- {
- "name": "sebastian/environment",
- "version": "5.1.3",
- "version_normalized": "5.1.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "388b6ced16caa751030f6a69e588299fa09200ac"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac",
- "reference": "388b6ced16caa751030f6a69e588299fa09200ac",
- "shasum": ""
- },
- "require": {
- "php": ">=7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.3"
- },
- "suggest": {
- "ext-posix": "*"
- },
- "time": "2020-09-28T05:52:38+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.1-dev"
- }
- },
- "installation-source": "dist",
- "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"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/environment/issues",
- "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "install-path": "../sebastian/environment"
- },
- {
- "name": "sebastian/exporter",
- "version": "4.0.4",
- "version_normalized": "4.0.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9",
- "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9",
- "shasum": ""
- },
- "require": {
- "php": ">=7.3",
- "sebastian/recursion-context": "^4.0"
- },
- "require-dev": {
- "ext-mbstring": "*",
- "phpunit/phpunit": "^9.3"
- },
- "time": "2021-11-11T14:18:36+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.0-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Volker Dusch",
- "email": "github@wallbash.com"
- },
- {
- "name": "Adam Harvey",
- "email": "aharvey@php.net"
- },
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@gmail.com"
- }
- ],
- "description": "Provides the functionality to export PHP variables for visualization",
- "homepage": "https://www.github.com/sebastianbergmann/exporter",
- "keywords": [
- "export",
- "exporter"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/exporter/issues",
- "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "install-path": "../sebastian/exporter"
- },
- {
- "name": "sebastian/global-state",
- "version": "5.0.5",
- "version_normalized": "5.0.5.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2",
- "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2",
- "shasum": ""
- },
- "require": {
- "php": ">=7.3",
- "sebastian/object-reflector": "^2.0",
- "sebastian/recursion-context": "^4.0"
- },
- "require-dev": {
- "ext-dom": "*",
- "phpunit/phpunit": "^9.3"
- },
- "suggest": {
- "ext-uopz": "*"
- },
- "time": "2022-02-14T08:28:10+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.0-dev"
- }
- },
- "installation-source": "dist",
- "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"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/global-state/issues",
- "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "install-path": "../sebastian/global-state"
- },
- {
- "name": "sebastian/lines-of-code",
- "version": "1.0.3",
- "version_normalized": "1.0.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/lines-of-code.git",
- "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc",
- "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc",
- "shasum": ""
- },
- "require": {
- "nikic/php-parser": "^4.6",
- "php": ">=7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.3"
- },
- "time": "2020-11-28T06:42:11+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-dev"
- }
- },
- "installation-source": "dist",
- "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 for counting the lines of code in PHP source code",
- "homepage": "https://github.com/sebastianbergmann/lines-of-code",
- "support": {
- "issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
- "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "install-path": "../sebastian/lines-of-code"
- },
- {
- "name": "sebastian/object-enumerator",
- "version": "4.0.4",
- "version_normalized": "4.0.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/object-enumerator.git",
- "reference": "5c9eeac41b290a3712d88851518825ad78f45c71"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71",
- "reference": "5c9eeac41b290a3712d88851518825ad78f45c71",
- "shasum": ""
- },
- "require": {
- "php": ">=7.3",
- "sebastian/object-reflector": "^2.0",
- "sebastian/recursion-context": "^4.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.3"
- },
- "time": "2020-10-26T13:12:34+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.0-dev"
- }
- },
- "installation-source": "dist",
- "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/",
- "support": {
- "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
- "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "install-path": "../sebastian/object-enumerator"
- },
- {
- "name": "sebastian/object-reflector",
- "version": "2.0.4",
- "version_normalized": "2.0.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/object-reflector.git",
- "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
- "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
- "shasum": ""
- },
- "require": {
- "php": ">=7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.3"
- },
- "time": "2020-10-26T13:14:26+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0-dev"
- }
- },
- "installation-source": "dist",
- "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/",
- "support": {
- "issues": "https://github.com/sebastianbergmann/object-reflector/issues",
- "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "install-path": "../sebastian/object-reflector"
- },
- {
- "name": "sebastian/recursion-context",
- "version": "4.0.4",
- "version_normalized": "4.0.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/recursion-context.git",
- "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172",
- "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172",
- "shasum": ""
- },
- "require": {
- "php": ">=7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.3"
- },
- "time": "2020-10-26T13:17:30+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.0-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Adam Harvey",
- "email": "aharvey@php.net"
- }
- ],
- "description": "Provides functionality to recursively process PHP variables",
- "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
- "support": {
- "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
- "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "install-path": "../sebastian/recursion-context"
- },
- {
- "name": "sebastian/resource-operations",
- "version": "3.0.3",
- "version_normalized": "3.0.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/resource-operations.git",
- "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
- "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
- "shasum": ""
- },
- "require": {
- "php": ">=7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.0"
- },
- "time": "2020-09-28T06:45:17+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "installation-source": "dist",
- "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",
- "support": {
- "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
- "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "install-path": "../sebastian/resource-operations"
- },
- {
- "name": "sebastian/type",
- "version": "2.3.4",
- "version_normalized": "2.3.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/type.git",
- "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914",
- "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914",
- "shasum": ""
- },
- "require": {
- "php": ">=7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.3"
- },
- "time": "2021-06-15T12:49:02+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.3-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Collection of value objects that represent the types of the PHP type system",
- "homepage": "https://github.com/sebastianbergmann/type",
- "support": {
- "issues": "https://github.com/sebastianbergmann/type/issues",
- "source": "https://github.com/sebastianbergmann/type/tree/2.3.4"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "install-path": "../sebastian/type"
- },
- {
- "name": "sebastian/version",
- "version": "3.0.2",
- "version_normalized": "3.0.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/version.git",
- "reference": "c6c1022351a901512170118436c764e473f6de8c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c",
- "reference": "c6c1022351a901512170118436c764e473f6de8c",
- "shasum": ""
- },
- "require": {
- "php": ">=7.3"
- },
- "time": "2020-09-28T06:39:44+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "installation-source": "dist",
- "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",
- "support": {
- "issues": "https://github.com/sebastianbergmann/version/issues",
- "source": "https://github.com/sebastianbergmann/version/tree/3.0.2"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "install-path": "../sebastian/version"
- },
- {
- "name": "sergeytsalkov/meekrodb",
- "version": "v2.4",
- "version_normalized": "2.4.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/SergeyTsalkov/meekrodb.git",
- "reference": "e30c240d54bc81f58c58507a9ed768032eb494a5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/SergeyTsalkov/meekrodb/zipball/e30c240d54bc81f58c58507a9ed768032eb494a5",
- "reference": "e30c240d54bc81f58c58507a9ed768032eb494a5",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "time": "2021-06-29T04:31:23+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "classmap": [
- "db.class.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "LGPL-3.0"
- ],
- "authors": [
- {
- "name": "Sergey Tsalkov",
- "email": "stsalkov@gmail.com"
- }
- ],
- "description": "The Simple PHP/MySQL Library",
- "homepage": "http://www.meekro.com",
- "keywords": [
- "database",
- "mysql",
- "mysqli",
- "pdo"
- ],
- "support": {
- "email": "support@meekro.com",
- "issues": "https://github.com/SergeyTsalkov/meekrodb/issues",
- "source": "https://github.com/SergeyTsalkov/meekrodb/tree/v2.4"
- },
- "install-path": "../sergeytsalkov/meekrodb"
- },
- {
- "name": "spatie/data-transfer-object",
- "version": "3.7.3",
- "version_normalized": "3.7.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/spatie/data-transfer-object.git",
- "reference": "341f72c77e0fce40ea2e0dcb212cb54dc27bbe72"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/spatie/data-transfer-object/zipball/341f72c77e0fce40ea2e0dcb212cb54dc27bbe72",
- "reference": "341f72c77e0fce40ea2e0dcb212cb54dc27bbe72",
- "shasum": ""
- },
- "require": {
- "php": "^8.0"
- },
- "require-dev": {
- "illuminate/collections": "^8.36",
- "jetbrains/phpstorm-attributes": "^1.0",
- "larapack/dd": "^1.1",
- "phpunit/phpunit": "^9.0"
- },
- "time": "2021-12-30T20:31:10+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Spatie\\DataTransferObject\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Brent Roose",
- "email": "brent@spatie.be",
- "homepage": "https://spatie.be",
- "role": "Developer"
- }
- ],
- "description": "Data transfer objects with batteries included",
- "homepage": "https://github.com/spatie/data-transfer-object",
- "keywords": [
- "data-transfer-object",
- "spatie"
- ],
- "support": {
- "issues": "https://github.com/spatie/data-transfer-object/issues",
- "source": "https://github.com/spatie/data-transfer-object/tree/3.7.3"
- },
- "funding": [
- {
- "url": "https://spatie.be/open-source/support-us",
- "type": "custom"
- },
- {
- "url": "https://github.com/spatie",
- "type": "github"
- }
- ],
- "install-path": "../spatie/data-transfer-object"
- },
- {
- "name": "symfony/console",
- "version": "v5.3.10",
- "version_normalized": "5.3.10.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/console.git",
- "reference": "d4e409d9fbcfbf71af0e5a940abb7b0b4bad0bd3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/d4e409d9fbcfbf71af0e5a940abb7b0b4bad0bd3",
- "reference": "d4e409d9fbcfbf71af0e5a940abb7b0b4bad0bd3",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php73": "^1.8",
- "symfony/polyfill-php80": "^1.16",
- "symfony/service-contracts": "^1.1|^2",
- "symfony/string": "^5.1"
- },
- "conflict": {
- "psr/log": ">=3",
- "symfony/dependency-injection": "<4.4",
- "symfony/dotenv": "<5.1",
- "symfony/event-dispatcher": "<4.4",
- "symfony/lock": "<4.4",
- "symfony/process": "<4.4"
- },
- "provide": {
- "psr/log-implementation": "1.0|2.0"
- },
- "require-dev": {
- "psr/log": "^1|^2",
- "symfony/config": "^4.4|^5.0",
- "symfony/dependency-injection": "^4.4|^5.0",
- "symfony/event-dispatcher": "^4.4|^5.0",
- "symfony/lock": "^4.4|^5.0",
- "symfony/process": "^4.4|^5.0",
- "symfony/var-dumper": "^4.4|^5.0"
- },
- "suggest": {
- "psr/log": "For using the console logger",
- "symfony/event-dispatcher": "",
- "symfony/lock": "",
- "symfony/process": ""
- },
- "time": "2021-10-26T09:30:15+00:00",
- "type": "library",
- "installation-source": "dist",
- "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": "Eases the creation of beautiful and testable command line interfaces",
- "homepage": "https://symfony.com",
- "keywords": [
- "cli",
- "command line",
- "console",
- "terminal"
- ],
- "support": {
- "source": "https://github.com/symfony/console/tree/v5.3.10"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "install-path": "../symfony/console"
- },
- {
- "name": "symfony/deprecation-contracts",
- "version": "v2.4.0",
- "version_normalized": "2.4.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/deprecation-contracts.git",
- "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627",
- "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "time": "2021-03-23T23:28:01+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "2.4-dev"
- },
- "thanks": {
- "name": "symfony/contracts",
- "url": "https://github.com/symfony/contracts"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "files": [
- "function.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": "A generic function and convention to trigger deprecation notices",
- "homepage": "https://symfony.com",
- "support": {
- "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "install-path": "../symfony/deprecation-contracts"
- },
- {
- "name": "symfony/lock",
- "version": "v4.4.33",
- "version_normalized": "4.4.33.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/lock.git",
- "reference": "567d29b1bc6e3937652054dafc069151d17824a9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/lock/zipball/567d29b1bc6e3937652054dafc069151d17824a9",
- "reference": "567d29b1bc6e3937652054dafc069151d17824a9",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1.3",
- "psr/log": "^1|^2|^3",
- "symfony/polyfill-php80": "^1.16"
- },
- "conflict": {
- "doctrine/dbal": "<2.6"
- },
- "require-dev": {
- "doctrine/dbal": "^2.6|^3.0",
- "predis/predis": "~1.0"
- },
- "time": "2021-10-05T20:27:01+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Lock\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jérémy Derussé",
- "email": "jeremy@derusse.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Creates and manages locks, a mechanism to provide exclusive access to a shared resource",
- "homepage": "https://symfony.com",
- "keywords": [
- "cas",
- "flock",
- "locking",
- "mutex",
- "redlock",
- "semaphore"
- ],
- "support": {
- "source": "https://github.com/symfony/lock/tree/v4.4.33"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "install-path": "../symfony/lock"
- },
- {
- "name": "symfony/polyfill-ctype",
- "version": "v1.23.0",
- "version_normalized": "1.23.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce",
- "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "suggest": {
- "ext-ctype": "For best performance"
- },
- "time": "2021-02-19T12:13:01+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.23-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Ctype\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Gert de Pagter",
- "email": "BackEndTea@gmail.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for ctype functions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "ctype",
- "polyfill",
- "portable"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "install-path": "../symfony/polyfill-ctype"
- },
- {
- "name": "symfony/polyfill-intl-grapheme",
- "version": "v1.23.1",
- "version_normalized": "1.23.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
- "reference": "16880ba9c5ebe3642d1995ab866db29270b36535"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/16880ba9c5ebe3642d1995ab866db29270b36535",
- "reference": "16880ba9c5ebe3642d1995ab866db29270b36535",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "suggest": {
- "ext-intl": "For best performance"
- },
- "time": "2021-05-27T12:26:48+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.23-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
- },
- "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 intl's grapheme_* functions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "grapheme",
- "intl",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.1"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "install-path": "../symfony/polyfill-intl-grapheme"
- },
- {
- "name": "symfony/polyfill-intl-idn",
- "version": "v1.23.0",
- "version_normalized": "1.23.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-intl-idn.git",
- "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/65bd267525e82759e7d8c4e8ceea44f398838e65",
- "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1",
- "symfony/polyfill-intl-normalizer": "^1.10",
- "symfony/polyfill-php72": "^1.10"
- },
- "suggest": {
- "ext-intl": "For best performance"
- },
- "time": "2021-05-27T09:27:20+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.23-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Intl\\Idn\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Laurent Bassin",
- "email": "laurent@bassin.info"
- },
- {
- "name": "Trevor Rowbotham",
- "email": "trevor.rowbotham@pm.me"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "idn",
- "intl",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.23.0"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "install-path": "../symfony/polyfill-intl-idn"
- },
- {
- "name": "symfony/polyfill-intl-normalizer",
- "version": "v1.23.0",
- "version_normalized": "1.23.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
- "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8",
- "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "suggest": {
- "ext-intl": "For best performance"
- },
- "time": "2021-02-19T12:13:01+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.23-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
- },
- "files": [
- "bootstrap.php"
- ],
- "classmap": [
- "Resources/stubs"
- ]
- },
- "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 intl's Normalizer class and related functions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "intl",
- "normalizer",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "install-path": "../symfony/polyfill-intl-normalizer"
- },
- {
- "name": "symfony/polyfill-mbstring",
- "version": "v1.23.1",
- "version_normalized": "1.23.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6",
- "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "suggest": {
- "ext-mbstring": "For best performance"
- },
- "time": "2021-05-27T12:26:48+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.23-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "installation-source": "dist",
- "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"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "install-path": "../symfony/polyfill-mbstring"
- },
- {
- "name": "symfony/polyfill-php72",
- "version": "v1.23.0",
- "version_normalized": "1.23.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php72.git",
- "reference": "9a142215a36a3888e30d0a9eeea9766764e96976"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976",
- "reference": "9a142215a36a3888e30d0a9eeea9766764e96976",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "time": "2021-05-27T09:17:38+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.23-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "installation-source": "dist",
- "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"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-php72/tree/v1.23.0"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "install-path": "../symfony/polyfill-php72"
- },
- {
- "name": "symfony/polyfill-php73",
- "version": "v1.23.0",
- "version_normalized": "1.23.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php73.git",
- "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010",
- "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "time": "2021-02-19T12:13:01+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.23-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Php73\\": ""
- },
- "files": [
- "bootstrap.php"
- ],
- "classmap": [
- "Resources/stubs"
- ]
- },
- "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.3+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "install-path": "../symfony/polyfill-php73"
- },
- {
- "name": "symfony/polyfill-php80",
- "version": "v1.23.1",
- "version_normalized": "1.23.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be",
- "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "time": "2021-07-28T13:41:28+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.23-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Php80\\": ""
- },
- "files": [
- "bootstrap.php"
- ],
- "classmap": [
- "Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Ion Bazan",
- "email": "ion.bazan@gmail.com"
- },
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "install-path": "../symfony/polyfill-php80"
- },
- {
- "name": "symfony/service-contracts",
- "version": "v2.4.0",
- "version_normalized": "2.4.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/service-contracts.git",
- "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb",
- "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.5",
- "psr/container": "^1.1"
- },
- "suggest": {
- "symfony/service-implementation": ""
- },
- "time": "2021-04-01T10:43:52+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "2.4-dev"
- },
- "thanks": {
- "name": "symfony/contracts",
- "url": "https://github.com/symfony/contracts"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Symfony\\Contracts\\Service\\": ""
- }
- },
- "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": "Generic abstractions related to writing services",
- "homepage": "https://symfony.com",
- "keywords": [
- "abstractions",
- "contracts",
- "decoupling",
- "interfaces",
- "interoperability",
- "standards"
- ],
- "support": {
- "source": "https://github.com/symfony/service-contracts/tree/v2.4.0"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "install-path": "../symfony/service-contracts"
- },
- {
- "name": "symfony/string",
- "version": "v5.3.10",
- "version_normalized": "5.3.10.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/string.git",
- "reference": "d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c",
- "reference": "d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.5",
- "symfony/polyfill-ctype": "~1.8",
- "symfony/polyfill-intl-grapheme": "~1.0",
- "symfony/polyfill-intl-normalizer": "~1.0",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php80": "~1.15"
- },
- "require-dev": {
- "symfony/error-handler": "^4.4|^5.0",
- "symfony/http-client": "^4.4|^5.0",
- "symfony/translation-contracts": "^1.1|^2",
- "symfony/var-exporter": "^4.4|^5.0"
- },
- "time": "2021-10-27T18:21:46+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\String\\": ""
- },
- "files": [
- "Resources/functions.php"
- ],
- "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": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way",
- "homepage": "https://symfony.com",
- "keywords": [
- "grapheme",
- "i18n",
- "string",
- "unicode",
- "utf-8",
- "utf8"
- ],
- "support": {
- "source": "https://github.com/symfony/string/tree/v5.3.10"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "install-path": "../symfony/string"
- },
- {
- "name": "symfony/translation",
- "version": "v5.3.10",
- "version_normalized": "5.3.10.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/translation.git",
- "reference": "6ef197aea2ac8b9cd63e0da7522b3771714035aa"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/6ef197aea2ac8b9cd63e0da7522b3771714035aa",
- "reference": "6ef197aea2ac8b9cd63e0da7522b3771714035aa",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php80": "^1.16",
- "symfony/translation-contracts": "^2.3"
- },
- "conflict": {
- "symfony/config": "<4.4",
- "symfony/dependency-injection": "<5.0",
- "symfony/http-kernel": "<5.0",
- "symfony/twig-bundle": "<5.0",
- "symfony/yaml": "<4.4"
- },
- "provide": {
- "symfony/translation-implementation": "2.3"
- },
- "require-dev": {
- "psr/log": "^1|^2|^3",
- "symfony/config": "^4.4|^5.0",
- "symfony/console": "^4.4|^5.0",
- "symfony/dependency-injection": "^5.0",
- "symfony/finder": "^4.4|^5.0",
- "symfony/http-kernel": "^5.0",
- "symfony/intl": "^4.4|^5.0",
- "symfony/polyfill-intl-icu": "^1.21",
- "symfony/service-contracts": "^1.1.2|^2",
- "symfony/yaml": "^4.4|^5.0"
- },
- "suggest": {
- "psr/log-implementation": "To use logging capability in translator",
- "symfony/config": "",
- "symfony/yaml": ""
- },
- "time": "2021-10-10T06:43:24+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "files": [
- "Resources/functions.php"
- ],
- "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": "Provides tools to internationalize your application",
- "homepage": "https://symfony.com",
- "support": {
- "source": "https://github.com/symfony/translation/tree/v5.3.10"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "install-path": "../symfony/translation"
- },
- {
- "name": "symfony/translation-contracts",
- "version": "v2.4.0",
- "version_normalized": "2.4.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/translation-contracts.git",
- "reference": "95c812666f3e91db75385749fe219c5e494c7f95"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/95c812666f3e91db75385749fe219c5e494c7f95",
- "reference": "95c812666f3e91db75385749fe219c5e494c7f95",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.5"
- },
- "suggest": {
- "symfony/translation-implementation": ""
- },
- "time": "2021-03-23T23:28:01+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "2.4-dev"
- },
- "thanks": {
- "name": "symfony/contracts",
- "url": "https://github.com/symfony/contracts"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Symfony\\Contracts\\Translation\\": ""
- }
- },
- "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": "Generic abstractions related to translation",
- "homepage": "https://symfony.com",
- "keywords": [
- "abstractions",
- "contracts",
- "decoupling",
- "interfaces",
- "interoperability",
- "standards"
- ],
- "support": {
- "source": "https://github.com/symfony/translation-contracts/tree/v2.4.0"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "install-path": "../symfony/translation-contracts"
- },
- {
- "name": "theseer/tokenizer",
- "version": "1.2.1",
- "version_normalized": "1.2.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/theseer/tokenizer.git",
- "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
- "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-tokenizer": "*",
- "ext-xmlwriter": "*",
- "php": "^7.2 || ^8.0"
- },
- "time": "2021-07-28T10:34:58+00:00",
- "type": "library",
- "installation-source": "dist",
- "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",
- "support": {
- "issues": "https://github.com/theseer/tokenizer/issues",
- "source": "https://github.com/theseer/tokenizer/tree/1.2.1"
- },
- "funding": [
- {
- "url": "https://github.com/theseer",
- "type": "github"
- }
- ],
- "install-path": "../theseer/tokenizer"
- },
- {
- "name": "tysonandre/var_representation_polyfill",
- "version": "0.1.1",
- "version_normalized": "0.1.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/TysonAndre/var_representation_polyfill.git",
- "reference": "0a942e74e18af5514749895507bc6ca7ab96399a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/TysonAndre/var_representation_polyfill/zipball/0a942e74e18af5514749895507bc6ca7ab96399a",
- "reference": "0a942e74e18af5514749895507bc6ca7ab96399a",
- "shasum": ""
- },
- "require": {
- "ext-tokenizer": "*",
- "php": "^7.2.0|^8.0.0"
- },
- "require-dev": {
- "phan/phan": "^4.0",
- "phpunit/phpunit": "^8.5.0"
- },
- "suggest": {
- "ext-var_representation": "*"
- },
- "time": "2021-08-16T00:12:50+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "VarRepresentation\\": "src/VarRepresentation"
- },
- "files": [
- "src/var_representation.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Tyson Andre"
- }
- ],
- "description": "Polyfill for var_representation: convert a variable to a string in a way that fixes the shortcomings of var_export",
- "keywords": [
- "var_export",
- "var_representation"
- ],
- "support": {
- "issues": "https://github.com/TysonAndre/var_representation_polyfill/issues",
- "source": "https://github.com/TysonAndre/var_representation_polyfill/tree/0.1.1"
- },
- "install-path": "../tysonandre/var_representation_polyfill"
- },
- {
- "name": "vlucas/valitron",
- "version": "v1.4.10",
- "version_normalized": "1.4.10.0",
- "source": {
- "type": "git",
- "url": "https://github.com/vlucas/valitron.git",
- "reference": "5ebd5d7af82cc0a9d798e816a2ecad63f1b59ceb"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/vlucas/valitron/zipball/5ebd5d7af82cc0a9d798e816a2ecad63f1b59ceb",
- "reference": "5ebd5d7af82cc0a9d798e816a2ecad63f1b59ceb",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.2"
- },
- "require-dev": {
- "phpunit/phpunit": ">=4.8.35"
- },
- "suggest": {
- "ext-mbstring": "It can support the multiple bytes string length."
- },
- "time": "2021-07-08T16:18:03+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Valitron\\": "src/Valitron"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Vance Lucas",
- "email": "vance@vancelucas.com",
- "homepage": "https://www.vancelucas.com"
- }
- ],
- "description": "Simple, elegant, stand-alone validation library with NO dependencies",
- "homepage": "https://github.com/vlucas/valitron",
- "keywords": [
- "valid",
- "validation",
- "validator"
- ],
- "support": {
- "issues": "https://github.com/vlucas/valitron/issues",
- "source": "https://github.com/vlucas/valitron/tree/v1.4.10"
- },
- "funding": [
- {
- "url": "https://tidelift.com/funding/github/packagist/vlucas/valitron",
- "type": "tidelift"
- }
- ],
- "install-path": "../vlucas/valitron"
- },
- {
- "name": "voku/portable-ascii",
- "version": "1.5.6",
- "version_normalized": "1.5.6.0",
- "source": {
- "type": "git",
- "url": "https://github.com/voku/portable-ascii.git",
- "reference": "80953678b19901e5165c56752d087fc11526017c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/voku/portable-ascii/zipball/80953678b19901e5165c56752d087fc11526017c",
- "reference": "80953678b19901e5165c56752d087fc11526017c",
- "shasum": ""
- },
- "require": {
- "php": ">=7.0.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0"
- },
- "suggest": {
- "ext-intl": "Use Intl for transliterator_transliterate() support"
- },
- "time": "2020-11-12T00:07:28+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "voku\\": "src/voku/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Lars Moelleken",
- "homepage": "http://www.moelleken.org/"
- }
- ],
- "description": "Portable ASCII library - performance optimized (ascii) string functions for php.",
- "homepage": "https://github.com/voku/portable-ascii",
- "keywords": [
- "ascii",
- "clean",
- "php"
- ],
- "support": {
- "issues": "https://github.com/voku/portable-ascii/issues",
- "source": "https://github.com/voku/portable-ascii/tree/1.5.6"
- },
- "funding": [
- {
- "url": "https://www.paypal.me/moelleken",
- "type": "custom"
- },
- {
- "url": "https://github.com/voku",
- "type": "github"
- },
- {
- "url": "https://opencollective.com/portable-ascii",
- "type": "open_collective"
- },
- {
- "url": "https://www.patreon.com/voku",
- "type": "patreon"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii",
- "type": "tidelift"
- }
- ],
- "install-path": "../voku/portable-ascii"
- },
- {
- "name": "webmozart/assert",
- "version": "1.10.0",
- "version_normalized": "1.10.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/webmozarts/assert.git",
- "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25",
- "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25",
- "shasum": ""
- },
- "require": {
- "php": "^7.2 || ^8.0",
- "symfony/polyfill-ctype": "^1.8"
- },
- "conflict": {
- "phpstan/phpstan": "<0.12.20",
- "vimeo/psalm": "<4.6.1 || 4.6.2"
- },
- "require-dev": {
- "phpunit/phpunit": "^8.5.13"
- },
- "time": "2021-03-09T10:59:23+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.10-dev"
- }
- },
- "installation-source": "dist",
- "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"
- ],
- "support": {
- "issues": "https://github.com/webmozarts/assert/issues",
- "source": "https://github.com/webmozarts/assert/tree/1.10.0"
- },
- "install-path": "../webmozart/assert"
- },
- {
- "name": "xemlock/htmlpurifier-html5",
- "version": "v0.1.11",
- "version_normalized": "0.1.11.0",
- "source": {
- "type": "git",
- "url": "https://github.com/xemlock/htmlpurifier-html5.git",
- "reference": "f0d563f9fd4a82a3d759043483f9a94c0d8c2255"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/xemlock/htmlpurifier-html5/zipball/f0d563f9fd4a82a3d759043483f9a94c0d8c2255",
- "reference": "f0d563f9fd4a82a3d759043483f9a94c0d8c2255",
- "shasum": ""
- },
- "require": {
- "ezyang/htmlpurifier": "^4.8",
- "php": ">=5.2"
- },
- "require-dev": {
- "php-coveralls/php-coveralls": "^1.1|^2.1",
- "phpunit/phpunit": ">=4.7 <8.0"
- },
- "time": "2019-08-07T17:19:21+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "classmap": [
- "library/HTMLPurifier/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "xemlock",
- "email": "xemlock@gmail.com"
- }
- ],
- "description": "HTML5 element definitions for HTML Purifier",
- "keywords": [
- "HTML5",
- "Purifier",
- "html",
- "htmlpurifier",
- "security",
- "tidy",
- "validator",
- "xss"
- ],
- "install-path": "../xemlock/htmlpurifier-html5"
- }
- ],
- "dev": true,
- "dev-package-names": [
- "doctrine/instantiator",
- "myclabs/deep-copy",
- "nikic/php-parser",
- "phar-io/manifest",
- "phar-io/version",
- "phpspec/prophecy",
- "phpunit/php-code-coverage",
- "phpunit/php-file-iterator",
- "phpunit/php-invoker",
- "phpunit/php-text-template",
- "phpunit/php-timer",
- "phpunit/phpunit",
- "sebastian/cli-parser",
- "sebastian/code-unit",
- "sebastian/code-unit-reverse-lookup",
- "sebastian/comparator",
- "sebastian/complexity",
- "sebastian/diff",
- "sebastian/environment",
- "sebastian/exporter",
- "sebastian/global-state",
- "sebastian/lines-of-code",
- "sebastian/object-enumerator",
- "sebastian/object-reflector",
- "sebastian/recursion-context",
- "sebastian/resource-operations",
- "sebastian/type",
- "sebastian/version",
- "theseer/tokenizer"
- ]
-}
diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php
deleted file mode 100644
index b70a9fea..00000000
--- a/vendor/composer/installed.php
+++ /dev/null
@@ -1,903 +0,0 @@
-
- array (
- 'pretty_version' => 'dev-master',
- 'version' => 'dev-master',
- 'aliases' =>
- array (
- ),
- 'reference' => '956ad4f4081556d693d346b48b4342c51c397952',
- 'name' => 'sammo-hid/sammo',
- ),
- 'versions' =>
- array (
- 'brandonwamboldt/utilphp' =>
- array (
- 'pretty_version' => '1.1.0',
- 'version' => '1.1.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '36c32efc4f0679c05163464a550f45c8d83fe683',
- ),
- 'catfan/medoo' =>
- array (
- 'pretty_version' => 'v1.7.10',
- 'version' => '1.7.10.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '2d675f73e23f63bbaeb9a8aa33318659a3d3c32f',
- ),
- 'composer/semver' =>
- array (
- 'pretty_version' => '3.2.6',
- 'version' => '3.2.6.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '83e511e247de329283478496f7a1e114c9517506',
- ),
- 'composer/xdebug-handler' =>
- array (
- 'pretty_version' => '2.0.2',
- 'version' => '2.0.2.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '84674dd3a7575ba617f5a76d7e9e29a7d3891339',
- ),
- 'doctrine/inflector' =>
- array (
- 'pretty_version' => '2.0.4',
- 'version' => '2.0.4.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89',
- ),
- 'doctrine/instantiator' =>
- array (
- 'pretty_version' => '1.4.0',
- 'version' => '1.4.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'd56bf6102915de5702778fe20f2de3b2fe570b5b',
- ),
- 'erusev/parsedown' =>
- array (
- 'pretty_version' => '1.7.4',
- 'version' => '1.7.4.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'cb17b6477dfff935958ba01325f2e8a2bfa6dab3',
- ),
- 'erusev/parsedown-extra' =>
- array (
- 'pretty_version' => '0.8.1',
- 'version' => '0.8.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '91ac3ff98f0cea243bdccc688df43810f044dcef',
- ),
- 'ezyang/htmlpurifier' =>
- array (
- 'pretty_version' => 'v4.13.0',
- 'version' => '4.13.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '08e27c97e4c6ed02f37c5b2b20488046c8d90d75',
- ),
- 'felixfbecker/advanced-json-rpc' =>
- array (
- 'pretty_version' => 'v3.2.1',
- 'version' => '3.2.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'b5f37dbff9a8ad360ca341f3240dc1c168b45447',
- ),
- 'firephp/firephp-core' =>
- array (
- 'pretty_version' => 'v0.4.0',
- 'version' => '0.4.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'fabad0f2503f9577fe8dd2cb1d1c7cd73ed2aacf',
- ),
- 'guzzlehttp/guzzle' =>
- array (
- 'pretty_version' => '6.5.5',
- 'version' => '6.5.5.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '9d4290de1cfd701f38099ef7e183b64b4b7b0c5e',
- ),
- 'guzzlehttp/promises' =>
- array (
- 'pretty_version' => '1.5.1',
- 'version' => '1.5.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'fe752aedc9fd8fcca3fe7ad05d419d32998a06da',
- ),
- 'guzzlehttp/psr7' =>
- array (
- 'pretty_version' => '1.8.3',
- 'version' => '1.8.3.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '1afdd860a2566ed3c2b0b4a3de6e23434a79ec85',
- ),
- 'illuminate/bus' =>
- array (
- 'pretty_version' => 'v8.69.0',
- 'version' => '8.69.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'be400399687b97d5558a224e970060fd5d5f2735',
- ),
- 'illuminate/collections' =>
- array (
- 'pretty_version' => 'v8.69.0',
- 'version' => '8.69.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '05f286ec5fd2dd286e8384577047efc375c8954c',
- ),
- 'illuminate/container' =>
- array (
- 'pretty_version' => 'v8.69.0',
- 'version' => '8.69.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'ef73feb5216ef97ab7023cf59c0c8dbbd5505a9d',
- ),
- 'illuminate/contracts' =>
- array (
- 'pretty_version' => 'v8.69.0',
- 'version' => '8.69.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'e76f4bce73a2a1656add24bd5210ebc4b8af49c0',
- ),
- 'illuminate/database' =>
- array (
- 'pretty_version' => 'v8.69.0',
- 'version' => '8.69.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '43c7ffb6299ae55b000b286cf1278afd268ef29f',
- ),
- 'illuminate/events' =>
- array (
- 'pretty_version' => 'v8.69.0',
- 'version' => '8.69.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'b7f06cafb6c09581617f2ca05d69e9b159e5a35d',
- ),
- 'illuminate/macroable' =>
- array (
- 'pretty_version' => 'v8.69.0',
- 'version' => '8.69.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '300aa13c086f25116b5f3cde3ca54ff5c822fb05',
- ),
- 'illuminate/pipeline' =>
- array (
- 'pretty_version' => 'v8.69.0',
- 'version' => '8.69.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '23aeff5b26ae4aee3f370835c76bd0f4e93f71d2',
- ),
- 'illuminate/support' =>
- array (
- 'pretty_version' => 'v8.69.0',
- 'version' => '8.69.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'a8851b7001530d3c11626a81449ed9b63dd10db7',
- ),
- 'league/plates' =>
- array (
- 'pretty_version' => 'v3.4.0',
- 'version' => '3.4.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '6d3ee31199b536a4e003b34a356ca20f6f75496a',
- ),
- 'microsoft/tolerant-php-parser' =>
- array (
- 'pretty_version' => 'v0.1.1',
- 'version' => '0.1.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '6a965617cf484355048ac6d2d3de7b6ec93abb16',
- ),
- 'monolog/monolog' =>
- array (
- 'pretty_version' => '1.26.1',
- 'version' => '1.26.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'c6b00f05152ae2c9b04a448f99c7590beb6042f5',
- ),
- 'myclabs/deep-copy' =>
- array (
- 'pretty_version' => '1.10.2',
- 'version' => '1.10.2.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '776f831124e9c62e1a2c601ecc52e776d8bb7220',
- 'replaced' =>
- array (
- 0 => '1.10.2',
- ),
- ),
- 'nesbot/carbon' =>
- array (
- 'pretty_version' => '2.54.0',
- 'version' => '2.54.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'eed83939f1aed3eee517d03a33f5ec587ac529b5',
- ),
- 'netresearch/jsonmapper' =>
- array (
- 'pretty_version' => 'v4.0.0',
- 'version' => '4.0.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d',
- ),
- 'nette/caching' =>
- array (
- 'pretty_version' => 'v3.1.1',
- 'version' => '3.1.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '3e771c589dee414724be473c24ad16dae50c1960',
- ),
- 'nette/finder' =>
- array (
- 'pretty_version' => 'v2.5.2',
- 'version' => '2.5.2.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '4ad2c298eb8c687dd0e74ae84206a4186eeaed50',
- ),
- 'nette/utils' =>
- array (
- 'pretty_version' => 'v3.2.5',
- 'version' => '3.2.5.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '9cd80396ca58d7969ab44fc7afcf03624dfa526e',
- ),
- 'nikic/php-parser' =>
- array (
- 'pretty_version' => 'v4.13.2',
- 'version' => '4.13.2.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '210577fe3cf7badcc5814d99455df46564f3c077',
- ),
- 'pguardiario/phpuri' =>
- array (
- 'pretty_version' => '1.0',
- 'version' => '1.0.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'ad0a5ec033fe616cfef55578b9c7f2458be8fbfc',
- ),
- 'phan/phan' =>
- array (
- 'pretty_version' => '5.2.1',
- 'version' => '5.2.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'd724bbb8fc3ba89179868bb5220ecdf6a9c1636b',
- ),
- 'phar-io/manifest' =>
- array (
- 'pretty_version' => '2.0.3',
- 'version' => '2.0.3.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '97803eca37d319dfa7826cc2437fc020857acb53',
- ),
- 'phar-io/version' =>
- array (
- 'pretty_version' => '3.2.1',
- 'version' => '3.2.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '4f7fd7836c6f332bb2933569e566a0d6c4cbed74',
- ),
- 'php-extended/php-system' =>
- array (
- 'pretty_version' => '1.4.0',
- 'version' => '1.4.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '9e6b3c2009ef56dc123efc43900e40cdf217ace0',
- ),
- 'php-extended/php-tail' =>
- array (
- 'pretty_version' => '2.2.0',
- 'version' => '2.2.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '19fbd3a79ccc071954f28296b2c44754335304a0',
- ),
- 'phpdocumentor/reflection-common' =>
- array (
- 'pretty_version' => '2.2.0',
- 'version' => '2.2.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '1d01c49d4ed62f25aa84a747ad35d5a16924662b',
- ),
- 'phpdocumentor/reflection-docblock' =>
- array (
- 'pretty_version' => '5.3.0',
- 'version' => '5.3.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '622548b623e81ca6d78b721c5e029f4ce664f170',
- ),
- 'phpdocumentor/type-resolver' =>
- array (
- 'pretty_version' => '1.5.1',
- 'version' => '1.5.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'a12f7e301eb7258bb68acd89d4aefa05c2906cae',
- ),
- 'phpspec/prophecy' =>
- array (
- 'pretty_version' => 'v1.15.0',
- 'version' => '1.15.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'bbcd7380b0ebf3961ee21409db7b38bc31d69a13',
- ),
- 'phpunit/php-code-coverage' =>
- array (
- 'pretty_version' => '9.2.14',
- 'version' => '9.2.14.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '9f4d60b6afe5546421462b76cd4e633ebc364ab4',
- ),
- 'phpunit/php-file-iterator' =>
- array (
- 'pretty_version' => '3.0.6',
- 'version' => '3.0.6.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf',
- ),
- 'phpunit/php-invoker' =>
- array (
- 'pretty_version' => '3.1.1',
- 'version' => '3.1.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '5a10147d0aaf65b58940a0b72f71c9ac0423cc67',
- ),
- 'phpunit/php-text-template' =>
- array (
- 'pretty_version' => '2.0.4',
- 'version' => '2.0.4.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28',
- ),
- 'phpunit/php-timer' =>
- array (
- 'pretty_version' => '5.0.3',
- 'version' => '5.0.3.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2',
- ),
- 'phpunit/phpunit' =>
- array (
- 'pretty_version' => '9.5.16',
- 'version' => '9.5.16.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '5ff8c545a50226c569310a35f4fa89d79f1ddfdc',
- ),
- 'psr/container' =>
- array (
- 'pretty_version' => '1.1.2',
- 'version' => '1.1.2.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '513e0666f7216c7459170d56df27dfcefe1689ea',
- ),
- 'psr/container-implementation' =>
- array (
- 'provided' =>
- array (
- 0 => '1.0',
- ),
- ),
- 'psr/http-message' =>
- array (
- 'pretty_version' => '1.0.1',
- 'version' => '1.0.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'f6561bf28d520154e4b0ec72be95418abe6d9363',
- ),
- 'psr/http-message-implementation' =>
- array (
- 'provided' =>
- array (
- 0 => '1.0',
- ),
- ),
- 'psr/log' =>
- array (
- 'pretty_version' => '1.1.4',
- 'version' => '1.1.4.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'd49695b909c3b7628b6289db5479a1c204601f11',
- ),
- 'psr/log-implementation' =>
- array (
- 'provided' =>
- array (
- 0 => '1.0.0',
- 1 => '1.0|2.0',
- ),
- ),
- 'psr/simple-cache' =>
- array (
- 'pretty_version' => '1.0.1',
- 'version' => '1.0.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '408d5eafb83c57f6365a3ca330ff23aa4a5fa39b',
- ),
- 'ralouphie/getallheaders' =>
- array (
- 'pretty_version' => '3.0.3',
- 'version' => '3.0.3.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '120b605dfeb996808c31b6477290a714d356e822',
- ),
- 'sabre/event' =>
- array (
- 'pretty_version' => '5.1.4',
- 'version' => '5.1.4.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'd7da22897125d34d7eddf7977758191c06a74497',
- ),
- 'sammo-hid/sammo' =>
- array (
- 'pretty_version' => 'dev-master',
- 'version' => 'dev-master',
- 'aliases' =>
- array (
- ),
- 'reference' => '956ad4f4081556d693d346b48b4342c51c397952',
- ),
- 'sebastian/cli-parser' =>
- array (
- 'pretty_version' => '1.0.1',
- 'version' => '1.0.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '442e7c7e687e42adc03470c7b668bc4b2402c0b2',
- ),
- 'sebastian/code-unit' =>
- array (
- 'pretty_version' => '1.0.8',
- 'version' => '1.0.8.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '1fc9f64c0927627ef78ba436c9b17d967e68e120',
- ),
- 'sebastian/code-unit-reverse-lookup' =>
- array (
- 'pretty_version' => '2.0.3',
- 'version' => '2.0.3.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5',
- ),
- 'sebastian/comparator' =>
- array (
- 'pretty_version' => '4.0.6',
- 'version' => '4.0.6.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '55f4261989e546dc112258c7a75935a81a7ce382',
- ),
- 'sebastian/complexity' =>
- array (
- 'pretty_version' => '2.0.2',
- 'version' => '2.0.2.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '739b35e53379900cc9ac327b2147867b8b6efd88',
- ),
- 'sebastian/diff' =>
- array (
- 'pretty_version' => '4.0.4',
- 'version' => '4.0.4.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '3461e3fccc7cfdfc2720be910d3bd73c69be590d',
- ),
- 'sebastian/environment' =>
- array (
- 'pretty_version' => '5.1.3',
- 'version' => '5.1.3.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '388b6ced16caa751030f6a69e588299fa09200ac',
- ),
- 'sebastian/exporter' =>
- array (
- 'pretty_version' => '4.0.4',
- 'version' => '4.0.4.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '65e8b7db476c5dd267e65eea9cab77584d3cfff9',
- ),
- 'sebastian/global-state' =>
- array (
- 'pretty_version' => '5.0.5',
- 'version' => '5.0.5.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '0ca8db5a5fc9c8646244e629625ac486fa286bf2',
- ),
- 'sebastian/lines-of-code' =>
- array (
- 'pretty_version' => '1.0.3',
- 'version' => '1.0.3.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'c1c2e997aa3146983ed888ad08b15470a2e22ecc',
- ),
- 'sebastian/object-enumerator' =>
- array (
- 'pretty_version' => '4.0.4',
- 'version' => '4.0.4.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '5c9eeac41b290a3712d88851518825ad78f45c71',
- ),
- 'sebastian/object-reflector' =>
- array (
- 'pretty_version' => '2.0.4',
- 'version' => '2.0.4.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'b4f479ebdbf63ac605d183ece17d8d7fe49c15c7',
- ),
- 'sebastian/recursion-context' =>
- array (
- 'pretty_version' => '4.0.4',
- 'version' => '4.0.4.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'cd9d8cf3c5804de4341c283ed787f099f5506172',
- ),
- 'sebastian/resource-operations' =>
- array (
- 'pretty_version' => '3.0.3',
- 'version' => '3.0.3.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8',
- ),
- 'sebastian/type' =>
- array (
- 'pretty_version' => '2.3.4',
- 'version' => '2.3.4.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'b8cd8a1c753c90bc1a0f5372170e3e489136f914',
- ),
- 'sebastian/version' =>
- array (
- 'pretty_version' => '3.0.2',
- 'version' => '3.0.2.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'c6c1022351a901512170118436c764e473f6de8c',
- ),
- 'sergeytsalkov/meekrodb' =>
- array (
- 'pretty_version' => 'v2.4',
- 'version' => '2.4.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'e30c240d54bc81f58c58507a9ed768032eb494a5',
- ),
- 'spatie/data-transfer-object' =>
- array (
- 'pretty_version' => '3.7.3',
- 'version' => '3.7.3.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '341f72c77e0fce40ea2e0dcb212cb54dc27bbe72',
- ),
- 'symfony/console' =>
- array (
- 'pretty_version' => 'v5.3.10',
- 'version' => '5.3.10.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'd4e409d9fbcfbf71af0e5a940abb7b0b4bad0bd3',
- ),
- 'symfony/deprecation-contracts' =>
- array (
- 'pretty_version' => 'v2.4.0',
- 'version' => '2.4.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '5f38c8804a9e97d23e0c8d63341088cd8a22d627',
- ),
- 'symfony/lock' =>
- array (
- 'pretty_version' => 'v4.4.33',
- 'version' => '4.4.33.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '567d29b1bc6e3937652054dafc069151d17824a9',
- ),
- 'symfony/polyfill-ctype' =>
- array (
- 'pretty_version' => 'v1.23.0',
- 'version' => '1.23.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '46cd95797e9df938fdd2b03693b5fca5e64b01ce',
- ),
- 'symfony/polyfill-intl-grapheme' =>
- array (
- 'pretty_version' => 'v1.23.1',
- 'version' => '1.23.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '16880ba9c5ebe3642d1995ab866db29270b36535',
- ),
- 'symfony/polyfill-intl-idn' =>
- array (
- 'pretty_version' => 'v1.23.0',
- 'version' => '1.23.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '65bd267525e82759e7d8c4e8ceea44f398838e65',
- ),
- 'symfony/polyfill-intl-normalizer' =>
- array (
- 'pretty_version' => 'v1.23.0',
- 'version' => '1.23.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '8590a5f561694770bdcd3f9b5c69dde6945028e8',
- ),
- 'symfony/polyfill-mbstring' =>
- array (
- 'pretty_version' => 'v1.23.1',
- 'version' => '1.23.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '9174a3d80210dca8daa7f31fec659150bbeabfc6',
- ),
- 'symfony/polyfill-php72' =>
- array (
- 'pretty_version' => 'v1.23.0',
- 'version' => '1.23.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '9a142215a36a3888e30d0a9eeea9766764e96976',
- ),
- 'symfony/polyfill-php73' =>
- array (
- 'pretty_version' => 'v1.23.0',
- 'version' => '1.23.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'fba8933c384d6476ab14fb7b8526e5287ca7e010',
- ),
- 'symfony/polyfill-php80' =>
- array (
- 'pretty_version' => 'v1.23.1',
- 'version' => '1.23.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '1100343ed1a92e3a38f9ae122fc0eb21602547be',
- ),
- 'symfony/service-contracts' =>
- array (
- 'pretty_version' => 'v2.4.0',
- 'version' => '2.4.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb',
- ),
- 'symfony/string' =>
- array (
- 'pretty_version' => 'v5.3.10',
- 'version' => '5.3.10.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'd70c35bb20bbca71fc4ab7921e3c6bda1a82a60c',
- ),
- 'symfony/translation' =>
- array (
- 'pretty_version' => 'v5.3.10',
- 'version' => '5.3.10.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '6ef197aea2ac8b9cd63e0da7522b3771714035aa',
- ),
- 'symfony/translation-contracts' =>
- array (
- 'pretty_version' => 'v2.4.0',
- 'version' => '2.4.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '95c812666f3e91db75385749fe219c5e494c7f95',
- ),
- 'symfony/translation-implementation' =>
- array (
- 'provided' =>
- array (
- 0 => '2.3',
- ),
- ),
- 'theseer/tokenizer' =>
- array (
- 'pretty_version' => '1.2.1',
- 'version' => '1.2.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '34a41e998c2183e22995f158c581e7b5e755ab9e',
- ),
- 'tysonandre/var_representation_polyfill' =>
- array (
- 'pretty_version' => '0.1.1',
- 'version' => '0.1.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '0a942e74e18af5514749895507bc6ca7ab96399a',
- ),
- 'vlucas/valitron' =>
- array (
- 'pretty_version' => 'v1.4.10',
- 'version' => '1.4.10.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '5ebd5d7af82cc0a9d798e816a2ecad63f1b59ceb',
- ),
- 'voku/portable-ascii' =>
- array (
- 'pretty_version' => '1.5.6',
- 'version' => '1.5.6.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '80953678b19901e5165c56752d087fc11526017c',
- ),
- 'webmozart/assert' =>
- array (
- 'pretty_version' => '1.10.0',
- 'version' => '1.10.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '6964c76c7804814a842473e0c8fd15bab0f18e25',
- ),
- 'xemlock/htmlpurifier-html5' =>
- array (
- 'pretty_version' => 'v0.1.11',
- 'version' => '0.1.11.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'f0d563f9fd4a82a3d759043483f9a94c0d8c2255',
- ),
- ),
-);
diff --git a/vendor/composer/platform_check.php b/vendor/composer/platform_check.php
deleted file mode 100644
index adfb472f..00000000
--- a/vendor/composer/platform_check.php
+++ /dev/null
@@ -1,26 +0,0 @@
-= 80000)) {
- $issues[] = 'Your Composer dependencies require a PHP version ">= 8.0.0". You are running ' . PHP_VERSION . '.';
-}
-
-if ($issues) {
- if (!headers_sent()) {
- header('HTTP/1.1 500 Internal Server Error');
- }
- if (!ini_get('display_errors')) {
- if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
- fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
- } elseif (!headers_sent()) {
- echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
- }
- }
- trigger_error(
- 'Composer detected issues in your platform: ' . implode(' ', $issues),
- E_USER_ERROR
- );
-}
diff --git a/vendor/composer/semver/CHANGELOG.md b/vendor/composer/semver/CHANGELOG.md
deleted file mode 100644
index 4542fa3b..00000000
--- a/vendor/composer/semver/CHANGELOG.md
+++ /dev/null
@@ -1,176 +0,0 @@
-# Change Log
-
-All notable changes to this project will be documented in this file.
-This project adheres to [Semantic Versioning](http://semver.org/).
-
-### [3.2.6] 2021-10-25
-
- * Fixed: type improvements to parseStability
-
-### [3.2.5] 2021-05-24
-
- * Fixed: issue comparing disjunctive MultiConstraints to conjunctive ones (#127)
- * Fixed: added complete type information using phpstan annotations
-
-### [3.2.4] 2020-11-13
-
- * Fixed: code clean-up
-
-### [3.2.3] 2020-11-12
-
- * Fixed: constraints in the form of `X || Y, >=Y.1` and other such complex constructs were in some cases being optimized into a more restrictive constraint
-
-### [3.2.2] 2020-10-14
-
- * Fixed: internal code cleanups
-
-### [3.2.1] 2020-09-27
-
- * Fixed: accidental validation of broken constraints combining ^/~ and wildcards, and -dev suffix allowing weird cases
- * Fixed: normalization of beta0 and such which was dropping the 0
-
-### [3.2.0] 2020-09-09
-
- * Added: support for `x || @dev`, not very useful but seen in the wild and failed to validate with 1.5.2/1.6.0
- * Added: support for `foobar-dev` being equal to `dev-foobar`, dev-foobar is the official way to write it but we need to support the other for BC and convenience
-
-### [3.1.0] 2020-09-08
-
- * Added: support for constraints like `^2.x-dev` and `~2.x-dev`, not very useful but seen in the wild and failed to validate with 3.0.1
- * Fixed: invalid aliases will no longer throw, unless explicitly validated by Composer in the root package
-
-### [3.0.1] 2020-09-08
-
- * Fixed: handling of some invalid -dev versions which were seen as valid
-
-### [3.0.0] 2020-05-26
-
- * Break: Renamed `EmptyConstraint`, replace it with `MatchAllConstraint`
- * Break: Unlikely to affect anyone but strictly speaking a breaking change, `*.*` and such variants will not match all `dev-*` versions anymore, only `*` does
- * Break: ConstraintInterface is now considered internal/private and not meant to be implemented by third parties anymore
- * Added `Intervals` class to check if a constraint is a subsets of another one, and allow compacting complex MultiConstraints into simpler ones
- * Added `CompilingMatcher` class to speed up constraint matching against simple Constraint instances
- * Added `MatchAllConstraint` and `MatchNoneConstraint` which match everything and nothing
- * Added more advanced optimization of contiguous constraints inside MultiConstraint
- * Added tentative support for PHP 8
- * Fixed ConstraintInterface::matches to be commutative in all cases
-
-### [2.0.0] 2020-04-21
-
- * Break: `dev-master`, `dev-trunk` and `dev-default` now normalize to `dev-master`, `dev-trunk` and `dev-default` instead of `9999999-dev` in 1.x
- * Break: Removed the deprecated `AbstractConstraint`
- * Added `getUpperBound` and `getLowerBound` to ConstraintInterface. They return `Composer\Semver\Constraint\Bound` instances
- * Added `MultiConstraint::create` to create the most-optimal form of ConstraintInterface from an array of constraint strings
-
-### [1.7.2] 2020-12-03
-
- * Fixed: Allow installing on php 8
-
-### [1.7.1] 2020-09-27
-
- * Fixed: accidental validation of broken constraints combining ^/~ and wildcards, and -dev suffix allowing weird cases
- * Fixed: normalization of beta0 and such which was dropping the 0
-
-### [1.7.0] 2020-09-09
-
- * Added: support for `x || @dev`, not very useful but seen in the wild and failed to validate with 1.5.2/1.6.0
- * Added: support for `foobar-dev` being equal to `dev-foobar`, dev-foobar is the official way to write it but we need to support the other for BC and convenience
-
-### [1.6.0] 2020-09-08
-
- * Added: support for constraints like `^2.x-dev` and `~2.x-dev`, not very useful but seen in the wild and failed to validate with 1.5.2
- * Fixed: invalid aliases will no longer throw, unless explicitly validated by Composer in the root package
-
-### [1.5.2] 2020-09-08
-
- * Fixed: handling of some invalid -dev versions which were seen as valid
- * Fixed: some doctypes
-
-### [1.5.1] 2020-01-13
-
- * Fixed: Parsing of aliased version was not validating the alias to be a valid version
-
-### [1.5.0] 2019-03-19
-
- * Added: some support for date versions (e.g. 201903) in `~` operator
- * Fixed: support for stabilities in `~` operator was inconsistent
-
-### [1.4.2] 2016-08-30
-
- * Fixed: collapsing of complex constraints lead to buggy constraints
-
-### [1.4.1] 2016-06-02
-
- * Changed: branch-like requirements no longer strip build metadata - [composer/semver#38](https://github.com/composer/semver/pull/38).
-
-### [1.4.0] 2016-03-30
-
- * Added: getters on MultiConstraint - [composer/semver#35](https://github.com/composer/semver/pull/35).
-
-### [1.3.0] 2016-02-25
-
- * Fixed: stability parsing - [composer/composer#1234](https://github.com/composer/composer/issues/4889).
- * Changed: collapse contiguous constraints when possible.
-
-### [1.2.0] 2015-11-10
-
- * Changed: allow multiple numerical identifiers in 'pre-release' version part.
- * Changed: add more 'v' prefix support.
-
-### [1.1.0] 2015-11-03
-
- * Changed: dropped redundant `test` namespace.
- * Changed: minor adjustment in datetime parsing normalization.
- * Changed: `ConstraintInterface` relaxed, setPrettyString is not required anymore.
- * Changed: `AbstractConstraint` marked deprecated, will be removed in 2.0.
- * Changed: `Constraint` is now extensible.
-
-### [1.0.0] 2015-09-21
-
- * Break: `VersionConstraint` renamed to `Constraint`.
- * Break: `SpecificConstraint` renamed to `AbstractConstraint`.
- * Break: `LinkConstraintInterface` renamed to `ConstraintInterface`.
- * Break: `VersionParser::parseNameVersionPairs` was removed.
- * Changed: `VersionParser::parseConstraints` allows (but ignores) build metadata now.
- * Changed: `VersionParser::parseConstraints` allows (but ignores) prefixing numeric versions with a 'v' now.
- * Changed: Fixed namespace(s) of test files.
- * Changed: `Comparator::compare` no longer throws `InvalidArgumentException`.
- * Changed: `Constraint` now throws `InvalidArgumentException`.
-
-### [0.1.0] 2015-07-23
-
- * Added: `Composer\Semver\Comparator`, various methods to compare versions.
- * Added: various documents such as README.md, LICENSE, etc.
- * Added: configuration files for Git, Travis, php-cs-fixer, phpunit.
- * Break: the following namespaces were renamed:
- - Namespace: `Composer\Package\Version` -> `Composer\Semver`
- - Namespace: `Composer\Package\LinkConstraint` -> `Composer\Semver\Constraint`
- - Namespace: `Composer\Test\Package\Version` -> `Composer\Test\Semver`
- - Namespace: `Composer\Test\Package\LinkConstraint` -> `Composer\Test\Semver\Constraint`
- * Changed: code style using php-cs-fixer.
-
-[3.2.5]: https://github.com/composer/semver/compare/3.2.4...3.2.5
-[3.2.4]: https://github.com/composer/semver/compare/3.2.3...3.2.4
-[3.2.3]: https://github.com/composer/semver/compare/3.2.2...3.2.3
-[3.2.2]: https://github.com/composer/semver/compare/3.2.1...3.2.2
-[3.2.1]: https://github.com/composer/semver/compare/3.2.0...3.2.1
-[3.2.0]: https://github.com/composer/semver/compare/3.1.0...3.2.0
-[3.1.0]: https://github.com/composer/semver/compare/3.0.1...3.1.0
-[3.0.1]: https://github.com/composer/semver/compare/3.0.0...3.0.1
-[3.0.0]: https://github.com/composer/semver/compare/2.0.0...3.0.0
-[2.0.0]: https://github.com/composer/semver/compare/1.5.1...2.0.0
-[1.7.2]: https://github.com/composer/semver/compare/1.7.1...1.7.2
-[1.7.1]: https://github.com/composer/semver/compare/1.7.0...1.7.1
-[1.7.0]: https://github.com/composer/semver/compare/1.6.0...1.7.0
-[1.6.0]: https://github.com/composer/semver/compare/1.5.2...1.6.0
-[1.5.2]: https://github.com/composer/semver/compare/1.5.1...1.5.2
-[1.5.1]: https://github.com/composer/semver/compare/1.5.0...1.5.1
-[1.5.0]: https://github.com/composer/semver/compare/1.4.2...1.5.0
-[1.4.2]: https://github.com/composer/semver/compare/1.4.1...1.4.2
-[1.4.1]: https://github.com/composer/semver/compare/1.4.0...1.4.1
-[1.4.0]: https://github.com/composer/semver/compare/1.3.0...1.4.0
-[1.3.0]: https://github.com/composer/semver/compare/1.2.0...1.3.0
-[1.2.0]: https://github.com/composer/semver/compare/1.1.0...1.2.0
-[1.1.0]: https://github.com/composer/semver/compare/1.0.0...1.1.0
-[1.0.0]: https://github.com/composer/semver/compare/0.1.0...1.0.0
-[0.1.0]: https://github.com/composer/semver/compare/5e0b9a4da...0.1.0
diff --git a/vendor/composer/semver/LICENSE b/vendor/composer/semver/LICENSE
deleted file mode 100644
index 46697586..00000000
--- a/vendor/composer/semver/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (C) 2015 Composer
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/vendor/composer/semver/README.md b/vendor/composer/semver/README.md
deleted file mode 100644
index 99bc4615..00000000
--- a/vendor/composer/semver/README.md
+++ /dev/null
@@ -1,98 +0,0 @@
-composer/semver
-===============
-
-Semver library that offers utilities, version constraint parsing and validation.
-
-Originally written as part of [composer/composer](https://github.com/composer/composer),
-now extracted and made available as a stand-alone library.
-
-[](https://github.com/composer/semver/actions)
-
-
-Installation
-------------
-
-Install the latest version with:
-
-```bash
-$ composer require composer/semver
-```
-
-
-Requirements
-------------
-
-* PHP 5.3.2 is required but using the latest version of PHP is highly recommended.
-
-
-Version Comparison
-------------------
-
-For details on how versions are compared, refer to the [Versions](https://getcomposer.org/doc/articles/versions.md)
-article in the documentation section of the [getcomposer.org](https://getcomposer.org) website.
-
-
-Basic usage
------------
-
-### Comparator
-
-The [`Composer\Semver\Comparator`](https://github.com/composer/semver/blob/main/src/Comparator.php) class provides the following methods for comparing versions:
-
-* greaterThan($v1, $v2)
-* greaterThanOrEqualTo($v1, $v2)
-* lessThan($v1, $v2)
-* lessThanOrEqualTo($v1, $v2)
-* equalTo($v1, $v2)
-* notEqualTo($v1, $v2)
-
-Each function takes two version strings as arguments and returns a boolean. For example:
-
-```php
-use Composer\Semver\Comparator;
-
-Comparator::greaterThan('1.25.0', '1.24.0'); // 1.25.0 > 1.24.0
-```
-
-### Semver
-
-The [`Composer\Semver\Semver`](https://github.com/composer/semver/blob/main/src/Semver.php) class provides the following methods:
-
-* satisfies($version, $constraints)
-* satisfiedBy(array $versions, $constraint)
-* sort($versions)
-* rsort($versions)
-
-### Intervals
-
-The [`Composer\Semver\Intervals`](https://github.com/composer/semver/blob/main/src/Intervals.php) static class provides
-a few utilities to work with complex constraints or read version intervals from a constraint:
-
-```php
-use Composer\Semver\Intervals;
-
-// Checks whether $candidate is a subset of $constraint
-Intervals::isSubsetOf(ConstraintInterface $candidate, ConstraintInterface $constraint);
-
-// Checks whether $a and $b have any intersection, equivalent to $a->matches($b)
-Intervals::haveIntersections(ConstraintInterface $a, ConstraintInterface $b);
-
-// Optimizes a complex multi constraint by merging all intervals down to the smallest
-// possible multi constraint. The drawbacks are this is not very fast, and the resulting
-// multi constraint will have no human readable prettyConstraint configured on it
-Intervals::compactConstraint(ConstraintInterface $constraint);
-
-// Creates an array of numeric intervals and branch constraints representing a given constraint
-Intervals::get(ConstraintInterface $constraint);
-
-// Clears the memoization cache when you are done processing constraints
-Intervals::clear()
-```
-
-See the class docblocks for more details.
-
-
-License
--------
-
-composer/semver is licensed under the MIT License, see the LICENSE file for details.
diff --git a/vendor/composer/semver/composer.json b/vendor/composer/semver/composer.json
deleted file mode 100644
index 030df2e3..00000000
--- a/vendor/composer/semver/composer.json
+++ /dev/null
@@ -1,59 +0,0 @@
-{
- "name": "composer/semver",
- "description": "Semver library that offers utilities, version constraint parsing and validation.",
- "type": "library",
- "license": "MIT",
- "keywords": [
- "semver",
- "semantic",
- "versioning",
- "validation"
- ],
- "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"
- }
- ],
- "support": {
- "irc": "irc://irc.freenode.org/composer",
- "issues": "https://github.com/composer/semver/issues"
- },
- "require": {
- "php": "^5.3.2 || ^7.0 || ^8.0"
- },
- "require-dev": {
- "symfony/phpunit-bridge": "^4.2 || ^5",
- "phpstan/phpstan": "^0.12.54"
- },
- "autoload": {
- "psr-4": {
- "Composer\\Semver\\": "src"
- }
- },
- "autoload-dev": {
- "psr-4": {
- "Composer\\Semver\\": "tests"
- }
- },
- "extra": {
- "branch-alias": {
- "dev-main": "3.x-dev"
- }
- },
- "scripts": {
- "test": "SYMFONY_PHPUNIT_REMOVE_RETURN_TYPEHINT=1 vendor/bin/simple-phpunit",
- "phpstan": "phpstan analyse"
- }
-}
diff --git a/vendor/composer/semver/src/Comparator.php b/vendor/composer/semver/src/Comparator.php
deleted file mode 100644
index 38f483aa..00000000
--- a/vendor/composer/semver/src/Comparator.php
+++ /dev/null
@@ -1,113 +0,0 @@
-
- *
- * For the full copyright and license information, please view
- * the LICENSE file that was distributed with this source code.
- */
-
-namespace Composer\Semver;
-
-use Composer\Semver\Constraint\Constraint;
-
-class Comparator
-{
- /**
- * Evaluates the expression: $version1 > $version2.
- *
- * @param string $version1
- * @param string $version2
- *
- * @return bool
- */
- public static function greaterThan($version1, $version2)
- {
- return self::compare($version1, '>', $version2);
- }
-
- /**
- * Evaluates the expression: $version1 >= $version2.
- *
- * @param string $version1
- * @param string $version2
- *
- * @return bool
- */
- public static function greaterThanOrEqualTo($version1, $version2)
- {
- return self::compare($version1, '>=', $version2);
- }
-
- /**
- * Evaluates the expression: $version1 < $version2.
- *
- * @param string $version1
- * @param string $version2
- *
- * @return bool
- */
- public static function lessThan($version1, $version2)
- {
- return self::compare($version1, '<', $version2);
- }
-
- /**
- * Evaluates the expression: $version1 <= $version2.
- *
- * @param string $version1
- * @param string $version2
- *
- * @return bool
- */
- public static function lessThanOrEqualTo($version1, $version2)
- {
- return self::compare($version1, '<=', $version2);
- }
-
- /**
- * Evaluates the expression: $version1 == $version2.
- *
- * @param string $version1
- * @param string $version2
- *
- * @return bool
- */
- public static function equalTo($version1, $version2)
- {
- return self::compare($version1, '==', $version2);
- }
-
- /**
- * Evaluates the expression: $version1 != $version2.
- *
- * @param string $version1
- * @param string $version2
- *
- * @return bool
- */
- public static function notEqualTo($version1, $version2)
- {
- return self::compare($version1, '!=', $version2);
- }
-
- /**
- * Evaluates the expression: $version1 $operator $version2.
- *
- * @param string $version1
- * @param string $operator
- * @param string $version2
- *
- * @return bool
- *
- * @phpstan-param Constraint::STR_OP_* $operator
- */
- public static function compare($version1, $operator, $version2)
- {
- $constraint = new Constraint($operator, $version2);
-
- return $constraint->matchSpecific(new Constraint('==', $version1), true);
- }
-}
diff --git a/vendor/composer/semver/src/CompilingMatcher.php b/vendor/composer/semver/src/CompilingMatcher.php
deleted file mode 100644
index f1186670..00000000
--- a/vendor/composer/semver/src/CompilingMatcher.php
+++ /dev/null
@@ -1,71 +0,0 @@
-
- *
- * For the full copyright and license information, please view
- * the LICENSE file that was distributed with this source code.
- */
-
-namespace Composer\Semver;
-
-use Composer\Semver\Constraint\Constraint;
-use Composer\Semver\Constraint\ConstraintInterface;
-
-/**
- * Helper class to evaluate constraint by compiling and reusing the code to evaluate
- */
-class CompilingMatcher
-{
- /**
- * @var array
- * @phpstan-var array
- */
- private static $compiledCheckerCache = array();
- /** @var bool */
- private static $enabled;
-
- /**
- * @phpstan-var array
- */
- private static $transOpInt = array(
- Constraint::OP_EQ => Constraint::STR_OP_EQ,
- Constraint::OP_LT => Constraint::STR_OP_LT,
- Constraint::OP_LE => Constraint::STR_OP_LE,
- Constraint::OP_GT => Constraint::STR_OP_GT,
- Constraint::OP_GE => Constraint::STR_OP_GE,
- Constraint::OP_NE => Constraint::STR_OP_NE,
- );
-
- /**
- * Evaluates the expression: $constraint match $operator $version
- *
- * @param ConstraintInterface $constraint
- * @param int $operator
- * @phpstan-param Constraint::OP_* $operator
- * @param string $version
- *
- * @return mixed
- */
- public static function match(ConstraintInterface $constraint, $operator, $version)
- {
- if (self::$enabled === null) {
- self::$enabled = !\in_array('eval', explode(',', (string) ini_get('disable_functions')), true);
- }
- if (!self::$enabled) {
- return $constraint->matches(new Constraint(self::$transOpInt[$operator], $version));
- }
-
- $cacheKey = $operator.$constraint;
- if (!isset(self::$compiledCheckerCache[$cacheKey])) {
- $code = $constraint->compile($operator);
- self::$compiledCheckerCache[$cacheKey] = $function = eval('return function($v, $b){return '.$code.';};');
- } else {
- $function = self::$compiledCheckerCache[$cacheKey];
- }
-
- return $function($version, strpos($version, 'dev-') === 0);
- }
-}
diff --git a/vendor/composer/semver/src/Constraint/Bound.php b/vendor/composer/semver/src/Constraint/Bound.php
deleted file mode 100644
index 7effb11a..00000000
--- a/vendor/composer/semver/src/Constraint/Bound.php
+++ /dev/null
@@ -1,122 +0,0 @@
-
- *
- * For the full copyright and license information, please view
- * the LICENSE file that was distributed with this source code.
- */
-
-namespace Composer\Semver\Constraint;
-
-class Bound
-{
- /**
- * @var string
- */
- private $version;
-
- /**
- * @var bool
- */
- private $isInclusive;
-
- /**
- * @param string $version
- * @param bool $isInclusive
- */
- public function __construct($version, $isInclusive)
- {
- $this->version = $version;
- $this->isInclusive = $isInclusive;
- }
-
- /**
- * @return string
- */
- public function getVersion()
- {
- return $this->version;
- }
-
- /**
- * @return bool
- */
- public function isInclusive()
- {
- return $this->isInclusive;
- }
-
- /**
- * @return bool
- */
- public function isZero()
- {
- return $this->getVersion() === '0.0.0.0-dev' && $this->isInclusive();
- }
-
- /**
- * @return bool
- */
- public function isPositiveInfinity()
- {
- return $this->getVersion() === PHP_INT_MAX.'.0.0.0' && !$this->isInclusive();
- }
-
- /**
- * Compares a bound to another with a given operator.
- *
- * @param Bound $other
- * @param string $operator
- *
- * @return bool
- */
- public function compareTo(Bound $other, $operator)
- {
- if (!\in_array($operator, array('<', '>'), true)) {
- throw new \InvalidArgumentException('Does not support any other operator other than > or <.');
- }
-
- // If they are the same it doesn't matter
- if ($this == $other) {
- return false;
- }
-
- $compareResult = version_compare($this->getVersion(), $other->getVersion());
-
- // Not the same version means we don't need to check if the bounds are inclusive or not
- if (0 !== $compareResult) {
- return (('>' === $operator) ? 1 : -1) === $compareResult;
- }
-
- // Question we're answering here is "am I higher than $other?"
- return '>' === $operator ? $other->isInclusive() : !$other->isInclusive();
- }
-
- public function __toString()
- {
- return sprintf(
- '%s [%s]',
- $this->getVersion(),
- $this->isInclusive() ? 'inclusive' : 'exclusive'
- );
- }
-
- /**
- * @return self
- */
- public static function zero()
- {
- return new Bound('0.0.0.0-dev', true);
- }
-
- /**
- * @return self
- */
- public static function positiveInfinity()
- {
- return new Bound(PHP_INT_MAX.'.0.0.0', false);
- }
-}
diff --git a/vendor/composer/semver/src/Constraint/Constraint.php b/vendor/composer/semver/src/Constraint/Constraint.php
deleted file mode 100644
index dc394829..00000000
--- a/vendor/composer/semver/src/Constraint/Constraint.php
+++ /dev/null
@@ -1,435 +0,0 @@
-
- *
- * For the full copyright and license information, please view
- * the LICENSE file that was distributed with this source code.
- */
-
-namespace Composer\Semver\Constraint;
-
-/**
- * Defines a constraint.
- */
-class Constraint implements ConstraintInterface
-{
- /* operator integer values */
- const OP_EQ = 0;
- const OP_LT = 1;
- const OP_LE = 2;
- const OP_GT = 3;
- const OP_GE = 4;
- const OP_NE = 5;
-
- /* operator string values */
- const STR_OP_EQ = '==';
- const STR_OP_EQ_ALT = '=';
- const STR_OP_LT = '<';
- const STR_OP_LE = '<=';
- const STR_OP_GT = '>';
- const STR_OP_GE = '>=';
- const STR_OP_NE = '!=';
- const STR_OP_NE_ALT = '<>';
-
- /**
- * Operator to integer translation table.
- *
- * @var array
- * @phpstan-var array
- */
- private static $transOpStr = array(
- '=' => self::OP_EQ,
- '==' => self::OP_EQ,
- '<' => self::OP_LT,
- '<=' => self::OP_LE,
- '>' => self::OP_GT,
- '>=' => self::OP_GE,
- '<>' => self::OP_NE,
- '!=' => self::OP_NE,
- );
-
- /**
- * Integer to operator translation table.
- *
- * @var array
- * @phpstan-var array
- */
- private static $transOpInt = array(
- self::OP_EQ => '==',
- self::OP_LT => '<',
- self::OP_LE => '<=',
- self::OP_GT => '>',
- self::OP_GE => '>=',
- self::OP_NE => '!=',
- );
-
- /**
- * @var int
- * @phpstan-var self::OP_*
- */
- protected $operator;
-
- /** @var string */
- protected $version;
-
- /** @var string|null */
- protected $prettyString;
-
- /** @var Bound */
- protected $lowerBound;
-
- /** @var Bound */
- protected $upperBound;
-
- /**
- * Sets operator and version to compare with.
- *
- * @param string $operator
- * @param string $version
- *
- * @throws \InvalidArgumentException if invalid operator is given.
- *
- * @phpstan-param self::STR_OP_* $operator
- */
- public function __construct($operator, $version)
- {
- if (!isset(self::$transOpStr[$operator])) {
- throw new \InvalidArgumentException(sprintf(
- 'Invalid operator "%s" given, expected one of: %s',
- $operator,
- implode(', ', self::getSupportedOperators())
- ));
- }
-
- $this->operator = self::$transOpStr[$operator];
- $this->version = $version;
- }
-
- /**
- * @return string
- */
- public function getVersion()
- {
- return $this->version;
- }
-
- /**
- * @return string
- *
- * @phpstan-return self::STR_OP_*
- */
- public function getOperator()
- {
- return self::$transOpInt[$this->operator];
- }
-
- /**
- * @param ConstraintInterface $provider
- *
- * @return bool
- */
- public function matches(ConstraintInterface $provider)
- {
- if ($provider instanceof self) {
- return $this->matchSpecific($provider);
- }
-
- // turn matching around to find a match
- return $provider->matches($this);
- }
-
- /**
- * {@inheritDoc}
- */
- public function setPrettyString($prettyString)
- {
- $this->prettyString = $prettyString;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getPrettyString()
- {
- if ($this->prettyString) {
- return $this->prettyString;
- }
-
- return $this->__toString();
- }
-
- /**
- * Get all supported comparison operators.
- *
- * @return array
- *
- * @phpstan-return list
- */
- public static function getSupportedOperators()
- {
- return array_keys(self::$transOpStr);
- }
-
- /**
- * @param string $operator
- * @return int
- *
- * @phpstan-param self::STR_OP_* $operator
- * @phpstan-return self::OP_*
- */
- public static function getOperatorConstant($operator)
- {
- return self::$transOpStr[$operator];
- }
-
- /**
- * @param string $a
- * @param string $b
- * @param string $operator
- * @param bool $compareBranches
- *
- * @throws \InvalidArgumentException if invalid operator is given.
- *
- * @return bool
- *
- * @phpstan-param self::STR_OP_* $operator
- */
- public function versionCompare($a, $b, $operator, $compareBranches = false)
- {
- if (!isset(self::$transOpStr[$operator])) {
- throw new \InvalidArgumentException(sprintf(
- 'Invalid operator "%s" given, expected one of: %s',
- $operator,
- implode(', ', self::getSupportedOperators())
- ));
- }
-
- $aIsBranch = strpos($a, 'dev-') === 0;
- $bIsBranch = strpos($b, 'dev-') === 0;
-
- if ($operator === '!=' && ($aIsBranch || $bIsBranch)) {
- return $a !== $b;
- }
-
- if ($aIsBranch && $bIsBranch) {
- return $operator === '==' && $a === $b;
- }
-
- // when branches are not comparable, we make sure dev branches never match anything
- if (!$compareBranches && ($aIsBranch || $bIsBranch)) {
- return false;
- }
-
- return \version_compare($a, $b, $operator);
- }
-
- /**
- * {@inheritDoc}
- */
- public function compile($otherOperator)
- {
- if (strpos($this->version, 'dev-') === 0) {
- if (self::OP_EQ === $this->operator) {
- if (self::OP_EQ === $otherOperator) {
- return sprintf('$b && $v === %s', \var_export($this->version, true));
- }
- if (self::OP_NE === $otherOperator) {
- return sprintf('!$b || $v !== %s', \var_export($this->version, true));
- }
- return 'false';
- }
-
- if (self::OP_NE === $this->operator) {
- if (self::OP_EQ === $otherOperator) {
- return sprintf('!$b || $v !== %s', \var_export($this->version, true));
- }
- if (self::OP_NE === $otherOperator) {
- return 'true';
- }
- return '!$b';
- }
-
- return 'false';
- }
-
- if (self::OP_EQ === $this->operator) {
- if (self::OP_EQ === $otherOperator) {
- return sprintf('\version_compare($v, %s, \'==\')', \var_export($this->version, true));
- }
- if (self::OP_NE === $otherOperator) {
- return sprintf('$b || \version_compare($v, %s, \'!=\')', \var_export($this->version, true));
- }
-
- return sprintf('!$b && \version_compare(%s, $v, \'%s\')', \var_export($this->version, true), self::$transOpInt[$otherOperator]);
- }
-
- if (self::OP_NE === $this->operator) {
- if (self::OP_EQ === $otherOperator) {
- return sprintf('$b || (!$b && \version_compare($v, %s, \'!=\'))', \var_export($this->version, true));
- }
-
- if (self::OP_NE === $otherOperator) {
- return 'true';
- }
- return '!$b';
- }
-
- if (self::OP_LT === $this->operator || self::OP_LE === $this->operator) {
- if (self::OP_LT === $otherOperator || self::OP_LE === $otherOperator) {
- return '!$b';
- }
- } else { // $this->operator must be self::OP_GT || self::OP_GE here
- if (self::OP_GT === $otherOperator || self::OP_GE === $otherOperator) {
- return '!$b';
- }
- }
-
- if (self::OP_NE === $otherOperator) {
- return 'true';
- }
-
- $codeComparison = sprintf('\version_compare($v, %s, \'%s\')', \var_export($this->version, true), self::$transOpInt[$this->operator]);
- if ($this->operator === self::OP_LE) {
- if ($otherOperator === self::OP_GT) {
- return sprintf('!$b && \version_compare($v, %s, \'!=\') && ', \var_export($this->version, true)) . $codeComparison;
- }
- } elseif ($this->operator === self::OP_GE) {
- if ($otherOperator === self::OP_LT) {
- return sprintf('!$b && \version_compare($v, %s, \'!=\') && ', \var_export($this->version, true)) . $codeComparison;
- }
- }
-
- return sprintf('!$b && %s', $codeComparison);
- }
-
- /**
- * @param Constraint $provider
- * @param bool $compareBranches
- *
- * @return bool
- */
- public function matchSpecific(Constraint $provider, $compareBranches = false)
- {
- $noEqualOp = str_replace('=', '', self::$transOpInt[$this->operator]);
- $providerNoEqualOp = str_replace('=', '', self::$transOpInt[$provider->operator]);
-
- $isEqualOp = self::OP_EQ === $this->operator;
- $isNonEqualOp = self::OP_NE === $this->operator;
- $isProviderEqualOp = self::OP_EQ === $provider->operator;
- $isProviderNonEqualOp = self::OP_NE === $provider->operator;
-
- // '!=' operator is match when other operator is not '==' operator or version is not match
- // these kinds of comparisons always have a solution
- if ($isNonEqualOp || $isProviderNonEqualOp) {
- if ($isNonEqualOp && !$isProviderNonEqualOp && !$isProviderEqualOp && strpos($provider->version, 'dev-') === 0) {
- return false;
- }
-
- if ($isProviderNonEqualOp && !$isNonEqualOp && !$isEqualOp && strpos($this->version, 'dev-') === 0) {
- return false;
- }
-
- if (!$isEqualOp && !$isProviderEqualOp) {
- return true;
- }
- return $this->versionCompare($provider->version, $this->version, '!=', $compareBranches);
- }
-
- // an example for the condition is <= 2.0 & < 1.0
- // these kinds of comparisons always have a solution
- if ($this->operator !== self::OP_EQ && $noEqualOp === $providerNoEqualOp) {
- return !(strpos($this->version, 'dev-') === 0 || strpos($provider->version, 'dev-') === 0);
- }
-
- $version1 = $isEqualOp ? $this->version : $provider->version;
- $version2 = $isEqualOp ? $provider->version : $this->version;
- $operator = $isEqualOp ? $provider->operator : $this->operator;
-
- if ($this->versionCompare($version1, $version2, self::$transOpInt[$operator], $compareBranches)) {
- // special case, e.g. require >= 1.0 and provide < 1.0
- // 1.0 >= 1.0 but 1.0 is outside of the provided interval
-
- return !(self::$transOpInt[$provider->operator] === $providerNoEqualOp
- && self::$transOpInt[$this->operator] !== $noEqualOp
- && \version_compare($provider->version, $this->version, '=='));
- }
-
- return false;
- }
-
- /**
- * @return string
- */
- public function __toString()
- {
- return self::$transOpInt[$this->operator] . ' ' . $this->version;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getLowerBound()
- {
- $this->extractBounds();
-
- return $this->lowerBound;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getUpperBound()
- {
- $this->extractBounds();
-
- return $this->upperBound;
- }
-
- /**
- * @return void
- */
- private function extractBounds()
- {
- if (null !== $this->lowerBound) {
- return;
- }
-
- // Branches
- if (strpos($this->version, 'dev-') === 0) {
- $this->lowerBound = Bound::zero();
- $this->upperBound = Bound::positiveInfinity();
-
- return;
- }
-
- switch ($this->operator) {
- case self::OP_EQ:
- $this->lowerBound = new Bound($this->version, true);
- $this->upperBound = new Bound($this->version, true);
- break;
- case self::OP_LT:
- $this->lowerBound = Bound::zero();
- $this->upperBound = new Bound($this->version, false);
- break;
- case self::OP_LE:
- $this->lowerBound = Bound::zero();
- $this->upperBound = new Bound($this->version, true);
- break;
- case self::OP_GT:
- $this->lowerBound = new Bound($this->version, false);
- $this->upperBound = Bound::positiveInfinity();
- break;
- case self::OP_GE:
- $this->lowerBound = new Bound($this->version, true);
- $this->upperBound = Bound::positiveInfinity();
- break;
- case self::OP_NE:
- $this->lowerBound = Bound::zero();
- $this->upperBound = Bound::positiveInfinity();
- break;
- }
- }
-}
diff --git a/vendor/composer/semver/src/Constraint/ConstraintInterface.php b/vendor/composer/semver/src/Constraint/ConstraintInterface.php
deleted file mode 100644
index 389b935b..00000000
--- a/vendor/composer/semver/src/Constraint/ConstraintInterface.php
+++ /dev/null
@@ -1,75 +0,0 @@
-
- *
- * For the full copyright and license information, please view
- * the LICENSE file that was distributed with this source code.
- */
-
-namespace Composer\Semver\Constraint;
-
-/**
- * DO NOT IMPLEMENT this interface. It is only meant for usage as a type hint
- * in libraries relying on composer/semver but creating your own constraint class
- * that implements this interface is not a supported use case and will cause the
- * composer/semver components to return unexpected results.
- */
-interface ConstraintInterface
-{
- /**
- * Checks whether the given constraint intersects in any way with this constraint
- *
- * @param ConstraintInterface $provider
- *
- * @return bool
- */
- public function matches(ConstraintInterface $provider);
-
- /**
- * Provides a compiled version of the constraint for the given operator
- * The compiled version must be a PHP expression.
- * Executor of compile version must provide 2 variables:
- * - $v = the string version to compare with
- * - $b = whether or not the version is a non-comparable branch (starts with "dev-")
- *
- * @see Constraint::OP_* for the list of available operators.
- * @example return '!$b && version_compare($v, '1.0', '>')';
- *
- * @param int $otherOperator one Constraint::OP_*
- *
- * @return string
- *
- * @phpstan-param Constraint::OP_* $otherOperator
- */
- public function compile($otherOperator);
-
- /**
- * @return Bound
- */
- public function getUpperBound();
-
- /**
- * @return Bound
- */
- public function getLowerBound();
-
- /**
- * @return string
- */
- public function getPrettyString();
-
- /**
- * @param string|null $prettyString
- *
- * @return void
- */
- public function setPrettyString($prettyString);
-
- /**
- * @return string
- */
- public function __toString();
-}
diff --git a/vendor/composer/semver/src/Constraint/MatchAllConstraint.php b/vendor/composer/semver/src/Constraint/MatchAllConstraint.php
deleted file mode 100644
index 5e51af95..00000000
--- a/vendor/composer/semver/src/Constraint/MatchAllConstraint.php
+++ /dev/null
@@ -1,85 +0,0 @@
-
- *
- * For the full copyright and license information, please view
- * the LICENSE file that was distributed with this source code.
- */
-
-namespace Composer\Semver\Constraint;
-
-/**
- * Defines the absence of a constraint.
- *
- * This constraint matches everything.
- */
-class MatchAllConstraint implements ConstraintInterface
-{
- /** @var string|null */
- protected $prettyString;
-
- /**
- * @param ConstraintInterface $provider
- *
- * @return bool
- */
- public function matches(ConstraintInterface $provider)
- {
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- public function compile($otherOperator)
- {
- return 'true';
- }
-
- /**
- * {@inheritDoc}
- */
- public function setPrettyString($prettyString)
- {
- $this->prettyString = $prettyString;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getPrettyString()
- {
- if ($this->prettyString) {
- return $this->prettyString;
- }
-
- return (string) $this;
- }
-
- /**
- * {@inheritDoc}
- */
- public function __toString()
- {
- return '*';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getUpperBound()
- {
- return Bound::positiveInfinity();
- }
-
- /**
- * {@inheritDoc}
- */
- public function getLowerBound()
- {
- return Bound::zero();
- }
-}
diff --git a/vendor/composer/semver/src/Constraint/MatchNoneConstraint.php b/vendor/composer/semver/src/Constraint/MatchNoneConstraint.php
deleted file mode 100644
index dadcf622..00000000
--- a/vendor/composer/semver/src/Constraint/MatchNoneConstraint.php
+++ /dev/null
@@ -1,83 +0,0 @@
-
- *
- * For the full copyright and license information, please view
- * the LICENSE file that was distributed with this source code.
- */
-
-namespace Composer\Semver\Constraint;
-
-/**
- * Blackhole of constraints, nothing escapes it
- */
-class MatchNoneConstraint implements ConstraintInterface
-{
- /** @var string|null */
- protected $prettyString;
-
- /**
- * @param ConstraintInterface $provider
- *
- * @return bool
- */
- public function matches(ConstraintInterface $provider)
- {
- return false;
- }
-
- /**
- * {@inheritDoc}
- */
- public function compile($otherOperator)
- {
- return 'false';
- }
-
- /**
- * {@inheritDoc}
- */
- public function setPrettyString($prettyString)
- {
- $this->prettyString = $prettyString;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getPrettyString()
- {
- if ($this->prettyString) {
- return $this->prettyString;
- }
-
- return (string) $this;
- }
-
- /**
- * {@inheritDoc}
- */
- public function __toString()
- {
- return '[]';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getUpperBound()
- {
- return new Bound('0.0.0.0-dev', false);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getLowerBound()
- {
- return new Bound('0.0.0.0-dev', false);
- }
-}
diff --git a/vendor/composer/semver/src/Constraint/MultiConstraint.php b/vendor/composer/semver/src/Constraint/MultiConstraint.php
deleted file mode 100644
index 1f4c0061..00000000
--- a/vendor/composer/semver/src/Constraint/MultiConstraint.php
+++ /dev/null
@@ -1,325 +0,0 @@
-
- *
- * For the full copyright and license information, please view
- * the LICENSE file that was distributed with this source code.
- */
-
-namespace Composer\Semver\Constraint;
-
-/**
- * Defines a conjunctive or disjunctive set of constraints.
- */
-class MultiConstraint implements ConstraintInterface
-{
- /**
- * @var ConstraintInterface[]
- * @phpstan-var non-empty-array
- */
- protected $constraints;
-
- /** @var string|null */
- protected $prettyString;
-
- /** @var string|null */
- protected $string;
-
- /** @var bool */
- protected $conjunctive;
-
- /** @var Bound|null */
- protected $lowerBound;
-
- /** @var Bound|null */
- protected $upperBound;
-
- /**
- * @param ConstraintInterface[] $constraints A set of constraints
- * @param bool $conjunctive Whether the constraints should be treated as conjunctive or disjunctive
- *
- * @throws \InvalidArgumentException If less than 2 constraints are passed
- */
- public function __construct(array $constraints, $conjunctive = true)
- {
- if (\count($constraints) < 2) {
- throw new \InvalidArgumentException(
- 'Must provide at least two constraints for a MultiConstraint. Use '.
- 'the regular Constraint class for one constraint only or MatchAllConstraint for none. You may use '.
- 'MultiConstraint::create() which optimizes and handles those cases automatically.'
- );
- }
-
- $this->constraints = $constraints;
- $this->conjunctive = $conjunctive;
- }
-
- /**
- * @return ConstraintInterface[]
- */
- public function getConstraints()
- {
- return $this->constraints;
- }
-
- /**
- * @return bool
- */
- public function isConjunctive()
- {
- return $this->conjunctive;
- }
-
- /**
- * @return bool
- */
- public function isDisjunctive()
- {
- return !$this->conjunctive;
- }
-
- /**
- * {@inheritDoc}
- */
- public function compile($otherOperator)
- {
- $parts = array();
- foreach ($this->constraints as $constraint) {
- $code = $constraint->compile($otherOperator);
- if ($code === 'true') {
- if (!$this->conjunctive) {
- return 'true';
- }
- } elseif ($code === 'false') {
- if ($this->conjunctive) {
- return 'false';
- }
- } else {
- $parts[] = '('.$code.')';
- }
- }
-
- if (!$parts) {
- return $this->conjunctive ? 'true' : 'false';
- }
-
- return $this->conjunctive ? implode('&&', $parts) : implode('||', $parts);
- }
-
- /**
- * @param ConstraintInterface $provider
- *
- * @return bool
- */
- public function matches(ConstraintInterface $provider)
- {
- if (false === $this->conjunctive) {
- foreach ($this->constraints as $constraint) {
- if ($provider->matches($constraint)) {
- return true;
- }
- }
-
- return false;
- }
-
- // when matching a conjunctive and a disjunctive multi constraint we have to iterate over the disjunctive one
- // otherwise we'd return true if different parts of the disjunctive constraint match the conjunctive one
- // which would lead to incorrect results, e.g. [>1 and <2] would match [<1 or >2] although they do not intersect
- if ($provider instanceof MultiConstraint && $provider->isDisjunctive()) {
- return $provider->matches($this);
- }
-
- foreach ($this->constraints as $constraint) {
- if (!$provider->matches($constraint)) {
- return false;
- }
- }
-
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- public function setPrettyString($prettyString)
- {
- $this->prettyString = $prettyString;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getPrettyString()
- {
- if ($this->prettyString) {
- return $this->prettyString;
- }
-
- return (string) $this;
- }
-
- /**
- * {@inheritDoc}
- */
- public function __toString()
- {
- if ($this->string !== null) {
- return $this->string;
- }
-
- $constraints = array();
- foreach ($this->constraints as $constraint) {
- $constraints[] = (string) $constraint;
- }
-
- return $this->string = '[' . implode($this->conjunctive ? ' ' : ' || ', $constraints) . ']';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getLowerBound()
- {
- $this->extractBounds();
-
- if (null === $this->lowerBound) {
- throw new \LogicException('extractBounds should have populated the lowerBound property');
- }
-
- return $this->lowerBound;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getUpperBound()
- {
- $this->extractBounds();
-
- if (null === $this->upperBound) {
- throw new \LogicException('extractBounds should have populated the upperBound property');
- }
-
- return $this->upperBound;
- }
-
- /**
- * Tries to optimize the constraints as much as possible, meaning
- * reducing/collapsing congruent constraints etc.
- * Does not necessarily return a MultiConstraint instance if
- * things can be reduced to a simple constraint
- *
- * @param ConstraintInterface[] $constraints A set of constraints
- * @param bool $conjunctive Whether the constraints should be treated as conjunctive or disjunctive
- *
- * @return ConstraintInterface
- */
- public static function create(array $constraints, $conjunctive = true)
- {
- if (0 === \count($constraints)) {
- return new MatchAllConstraint();
- }
-
- if (1 === \count($constraints)) {
- return $constraints[0];
- }
-
- $optimized = self::optimizeConstraints($constraints, $conjunctive);
- if ($optimized !== null) {
- list($constraints, $conjunctive) = $optimized;
- if (\count($constraints) === 1) {
- return $constraints[0];
- }
- }
-
- return new self($constraints, $conjunctive);
- }
-
- /**
- * @param ConstraintInterface[] $constraints
- * @param bool $conjunctive
- * @return ?array
- *
- * @phpstan-return array{0: list, 1: bool}|null
- */
- private static function optimizeConstraints(array $constraints, $conjunctive)
- {
- // parse the two OR groups and if they are contiguous we collapse
- // them into one constraint
- // [>= 1 < 2] || [>= 2 < 3] || [>= 3 < 4] => [>= 1 < 4]
- if (!$conjunctive) {
- $left = $constraints[0];
- $mergedConstraints = array();
- $optimized = false;
- for ($i = 1, $l = \count($constraints); $i < $l; $i++) {
- $right = $constraints[$i];
- if (
- $left instanceof self
- && $left->conjunctive
- && $right instanceof self
- && $right->conjunctive
- && \count($left->constraints) === 2
- && \count($right->constraints) === 2
- && ($left0 = (string) $left->constraints[0])
- && $left0[0] === '>' && $left0[1] === '='
- && ($left1 = (string) $left->constraints[1])
- && $left1[0] === '<'
- && ($right0 = (string) $right->constraints[0])
- && $right0[0] === '>' && $right0[1] === '='
- && ($right1 = (string) $right->constraints[1])
- && $right1[0] === '<'
- && substr($left1, 2) === substr($right0, 3)
- ) {
- $optimized = true;
- $left = new MultiConstraint(
- array(
- $left->constraints[0],
- $right->constraints[1],
- ),
- true);
- } else {
- $mergedConstraints[] = $left;
- $left = $right;
- }
- }
- if ($optimized) {
- $mergedConstraints[] = $left;
- return array($mergedConstraints, false);
- }
- }
-
- // TODO: Here's the place to put more optimizations
-
- return null;
- }
-
- /**
- * @return void
- */
- private function extractBounds()
- {
- if (null !== $this->lowerBound) {
- return;
- }
-
- foreach ($this->constraints as $constraint) {
- if (null === $this->lowerBound || null === $this->upperBound) {
- $this->lowerBound = $constraint->getLowerBound();
- $this->upperBound = $constraint->getUpperBound();
- continue;
- }
-
- if ($constraint->getLowerBound()->compareTo($this->lowerBound, $this->isConjunctive() ? '>' : '<')) {
- $this->lowerBound = $constraint->getLowerBound();
- }
-
- if ($constraint->getUpperBound()->compareTo($this->upperBound, $this->isConjunctive() ? '<' : '>')) {
- $this->upperBound = $constraint->getUpperBound();
- }
- }
- }
-}
diff --git a/vendor/composer/semver/src/Interval.php b/vendor/composer/semver/src/Interval.php
deleted file mode 100644
index 43d5a4f5..00000000
--- a/vendor/composer/semver/src/Interval.php
+++ /dev/null
@@ -1,98 +0,0 @@
-
- *
- * For the full copyright and license information, please view
- * the LICENSE file that was distributed with this source code.
- */
-
-namespace Composer\Semver;
-
-use Composer\Semver\Constraint\Constraint;
-
-class Interval
-{
- /** @var Constraint */
- private $start;
- /** @var Constraint */
- private $end;
-
- public function __construct(Constraint $start, Constraint $end)
- {
- $this->start = $start;
- $this->end = $end;
- }
-
- /**
- * @return Constraint
- */
- public function getStart()
- {
- return $this->start;
- }
-
- /**
- * @return Constraint
- */
- public function getEnd()
- {
- return $this->end;
- }
-
- /**
- * @return Constraint
- */
- public static function fromZero()
- {
- static $zero;
-
- if (null === $zero) {
- $zero = new Constraint('>=', '0.0.0.0-dev');
- }
-
- return $zero;
- }
-
- /**
- * @return Constraint
- */
- public static function untilPositiveInfinity()
- {
- static $positiveInfinity;
-
- if (null === $positiveInfinity) {
- $positiveInfinity = new Constraint('<', PHP_INT_MAX.'.0.0.0');
- }
-
- return $positiveInfinity;
- }
-
- /**
- * @return self
- */
- public static function any()
- {
- return new self(self::fromZero(), self::untilPositiveInfinity());
- }
-
- /**
- * @return array{'names': string[], 'exclude': bool}
- */
- public static function anyDev()
- {
- // any == exclude nothing
- return array('names' => array(), 'exclude' => true);
- }
-
- /**
- * @return array{'names': string[], 'exclude': bool}
- */
- public static function noDev()
- {
- // nothing == no names included
- return array('names' => array(), 'exclude' => false);
- }
-}
diff --git a/vendor/composer/semver/src/Intervals.php b/vendor/composer/semver/src/Intervals.php
deleted file mode 100644
index f2e4c8c8..00000000
--- a/vendor/composer/semver/src/Intervals.php
+++ /dev/null
@@ -1,478 +0,0 @@
-
- *
- * For the full copyright and license information, please view
- * the LICENSE file that was distributed with this source code.
- */
-
-namespace Composer\Semver;
-
-use Composer\Semver\Constraint\Constraint;
-use Composer\Semver\Constraint\ConstraintInterface;
-use Composer\Semver\Constraint\MatchAllConstraint;
-use Composer\Semver\Constraint\MatchNoneConstraint;
-use Composer\Semver\Constraint\MultiConstraint;
-
-/**
- * Helper class generating intervals from constraints
- *
- * This contains utilities for:
- *
- * - compacting an existing constraint which can be used to combine several into one
- * by creating a MultiConstraint out of the many constraints you have.
- *
- * - checking whether one subset is a subset of another.
- *
- * Note: You should call clear to free memoization memory usage when you are done using this class
- */
-class Intervals
-{
- /**
- * @phpstan-var array
- */
- private static $intervalsCache = array();
-
- /**
- * @phpstan-var array
- */
- private static $opSortOrder = array(
- '>=' => -3,
- '<' => -2,
- '>' => 2,
- '<=' => 3,
- );
-
- /**
- * Clears the memoization cache once you are done
- *
- * @return void
- */
- public static function clear()
- {
- self::$intervalsCache = array();
- }
-
- /**
- * Checks whether $candidate is a subset of $constraint
- *
- * @return bool
- */
- public static function isSubsetOf(ConstraintInterface $candidate, ConstraintInterface $constraint)
- {
- if ($constraint instanceof MatchAllConstraint) {
- return true;
- }
-
- if ($candidate instanceof MatchNoneConstraint || $constraint instanceof MatchNoneConstraint) {
- return false;
- }
-
- $intersectionIntervals = self::get(new MultiConstraint(array($candidate, $constraint), true));
- $candidateIntervals = self::get($candidate);
- if (\count($intersectionIntervals['numeric']) !== \count($candidateIntervals['numeric'])) {
- return false;
- }
-
- foreach ($intersectionIntervals['numeric'] as $index => $interval) {
- if (!isset($candidateIntervals['numeric'][$index])) {
- return false;
- }
-
- if ((string) $candidateIntervals['numeric'][$index]->getStart() !== (string) $interval->getStart()) {
- return false;
- }
-
- if ((string) $candidateIntervals['numeric'][$index]->getEnd() !== (string) $interval->getEnd()) {
- return false;
- }
- }
-
- if ($intersectionIntervals['branches']['exclude'] !== $candidateIntervals['branches']['exclude']) {
- return false;
- }
- if (\count($intersectionIntervals['branches']['names']) !== \count($candidateIntervals['branches']['names'])) {
- return false;
- }
- foreach ($intersectionIntervals['branches']['names'] as $index => $name) {
- if ($name !== $candidateIntervals['branches']['names'][$index]) {
- return false;
- }
- }
-
- return true;
- }
-
- /**
- * Checks whether $a and $b have any intersection, equivalent to $a->matches($b)
- *
- * @return bool
- */
- public static function haveIntersections(ConstraintInterface $a, ConstraintInterface $b)
- {
- if ($a instanceof MatchAllConstraint || $b instanceof MatchAllConstraint) {
- return true;
- }
-
- if ($a instanceof MatchNoneConstraint || $b instanceof MatchNoneConstraint) {
- return false;
- }
-
- $intersectionIntervals = self::generateIntervals(new MultiConstraint(array($a, $b), true), true);
-
- return \count($intersectionIntervals['numeric']) > 0 || $intersectionIntervals['branches']['exclude'] || \count($intersectionIntervals['branches']['names']) > 0;
- }
-
- /**
- * Attempts to optimize a MultiConstraint
- *
- * When merging MultiConstraints together they can get very large, this will
- * compact it by looking at the real intervals covered by all the constraints
- * and then creates a new constraint containing only the smallest amount of rules
- * to match the same intervals.
- *
- * @return ConstraintInterface
- */
- public static function compactConstraint(ConstraintInterface $constraint)
- {
- if (!$constraint instanceof MultiConstraint) {
- return $constraint;
- }
-
- $intervals = self::generateIntervals($constraint);
- $constraints = array();
- $hasNumericMatchAll = false;
-
- if (\count($intervals['numeric']) === 1 && (string) $intervals['numeric'][0]->getStart() === (string) Interval::fromZero() && (string) $intervals['numeric'][0]->getEnd() === (string) Interval::untilPositiveInfinity()) {
- $constraints[] = $intervals['numeric'][0]->getStart();
- $hasNumericMatchAll = true;
- } else {
- $unEqualConstraints = array();
- for ($i = 0, $count = \count($intervals['numeric']); $i < $count; $i++) {
- $interval = $intervals['numeric'][$i];
-
- // if current interval ends with < N and next interval begins with > N we can swap this out for != N
- // but this needs to happen as a conjunctive expression together with the start of the current interval
- // and end of next interval, so [>=M, N, [>=M, !=N,
getEnd()->getOperator() === '<' && $i+1 < $count) {
- $nextInterval = $intervals['numeric'][$i+1];
- if ($interval->getEnd()->getVersion() === $nextInterval->getStart()->getVersion() && $nextInterval->getStart()->getOperator() === '>') {
- // only add a start if we didn't already do so, can be skipped if we're looking at second
- // interval in [>=M, N, P, =M, !=N] already and we only want to add !=P right now
- if (\count($unEqualConstraints) === 0 && (string) $interval->getStart() !== (string) Interval::fromZero()) {
- $unEqualConstraints[] = $interval->getStart();
- }
- $unEqualConstraints[] = new Constraint('!=', $interval->getEnd()->getVersion());
- continue;
- }
- }
-
- if (\count($unEqualConstraints) > 0) {
- // this is where the end of the following interval of a != constraint is added as explained above
- if ((string) $interval->getEnd() !== (string) Interval::untilPositiveInfinity()) {
- $unEqualConstraints[] = $interval->getEnd();
- }
-
- // count is 1 if entire constraint is just one != expression
- if (\count($unEqualConstraints) > 1) {
- $constraints[] = new MultiConstraint($unEqualConstraints, true);
- } else {
- $constraints[] = $unEqualConstraints[0];
- }
-
- $unEqualConstraints = array();
- continue;
- }
-
- // convert back >= x - <= x intervals to == x
- if ($interval->getStart()->getVersion() === $interval->getEnd()->getVersion() && $interval->getStart()->getOperator() === '>=' && $interval->getEnd()->getOperator() === '<=') {
- $constraints[] = new Constraint('==', $interval->getStart()->getVersion());
- continue;
- }
-
- if ((string) $interval->getStart() === (string) Interval::fromZero()) {
- $constraints[] = $interval->getEnd();
- } elseif ((string) $interval->getEnd() === (string) Interval::untilPositiveInfinity()) {
- $constraints[] = $interval->getStart();
- } else {
- $constraints[] = new MultiConstraint(array($interval->getStart(), $interval->getEnd()), true);
- }
- }
- }
-
- $devConstraints = array();
-
- if (0 === \count($intervals['branches']['names'])) {
- if ($intervals['branches']['exclude']) {
- if ($hasNumericMatchAll) {
- return new MatchAllConstraint;
- }
- // otherwise constraint should contain a != operator and already cover this
- }
- } else {
- foreach ($intervals['branches']['names'] as $branchName) {
- if ($intervals['branches']['exclude']) {
- $devConstraints[] = new Constraint('!=', $branchName);
- } else {
- $devConstraints[] = new Constraint('==', $branchName);
- }
- }
-
- // excluded branches, e.g. != dev-foo are conjunctive with the interval, so
- // > 2.0 != dev-foo must return a conjunctive constraint
- if ($intervals['branches']['exclude']) {
- if (\count($constraints) > 1) {
- return new MultiConstraint(array_merge(
- array(new MultiConstraint($constraints, false)),
- $devConstraints
- ), true);
- }
-
- if (\count($constraints) === 1 && (string)$constraints[0] === (string)Interval::fromZero()) {
- if (\count($devConstraints) > 1) {
- return new MultiConstraint($devConstraints, true);
- }
- return $devConstraints[0];
- }
-
- return new MultiConstraint(array_merge($constraints, $devConstraints), true);
- }
-
- // otherwise devConstraints contains a list of == operators for branches which are disjunctive with the
- // rest of the constraint
- $constraints = array_merge($constraints, $devConstraints);
- }
-
- if (\count($constraints) > 1) {
- return new MultiConstraint($constraints, false);
- }
-
- if (\count($constraints) === 1) {
- return $constraints[0];
- }
-
- return new MatchNoneConstraint;
- }
-
- /**
- * Creates an array of numeric intervals and branch constraints representing a given constraint
- *
- * if the returned numeric array is empty it means the constraint matches nothing in the numeric range (0 - +inf)
- * if the returned branches array is empty it means no dev-* versions are matched
- * if a constraint matches all possible dev-* versions, branches will contain Interval::anyDev()
- *
- * @return array
- * @phpstan-return array{'numeric': Interval[], 'branches': array{'names': string[], 'exclude': bool}}
- */
- public static function get(ConstraintInterface $constraint)
- {
- $key = (string) $constraint;
-
- if (!isset(self::$intervalsCache[$key])) {
- self::$intervalsCache[$key] = self::generateIntervals($constraint);
- }
-
- return self::$intervalsCache[$key];
- }
-
- /**
- * @param bool $stopOnFirstValidInterval
- *
- * @phpstan-return array{'numeric': Interval[], 'branches': array{'names': string[], 'exclude': bool}}
- */
- private static function generateIntervals(ConstraintInterface $constraint, $stopOnFirstValidInterval = false)
- {
- if ($constraint instanceof MatchAllConstraint) {
- return array('numeric' => array(new Interval(Interval::fromZero(), Interval::untilPositiveInfinity())), 'branches' => Interval::anyDev());
- }
-
- if ($constraint instanceof MatchNoneConstraint) {
- return array('numeric' => array(), 'branches' => array('names' => array(), 'exclude' => false));
- }
-
- if ($constraint instanceof Constraint) {
- return self::generateSingleConstraintIntervals($constraint);
- }
-
- if (!$constraint instanceof MultiConstraint) {
- throw new \UnexpectedValueException('The constraint passed in should be an MatchAllConstraint, Constraint or MultiConstraint instance, got '.\get_class($constraint).'.');
- }
-
- $constraints = $constraint->getConstraints();
-
- $numericGroups = array();
- $constraintBranches = array();
- foreach ($constraints as $c) {
- $res = self::get($c);
- $numericGroups[] = $res['numeric'];
- $constraintBranches[] = $res['branches'];
- }
-
- if ($constraint->isDisjunctive()) {
- $branches = Interval::noDev();
- foreach ($constraintBranches as $b) {
- if ($b['exclude']) {
- if ($branches['exclude']) {
- // disjunctive constraint, so only exclude what's excluded in all constraints
- // !=a,!=b || !=b,!=c => !=b
- $branches['names'] = array_intersect($branches['names'], $b['names']);
- } else {
- // disjunctive constraint so exclude all names which are not explicitly included in the alternative
- // (==b || ==c) || !=a,!=b => !=a
- $branches['exclude'] = true;
- $branches['names'] = array_diff($b['names'], $branches['names']);
- }
- } else {
- if ($branches['exclude']) {
- // disjunctive constraint so exclude all names which are not explicitly included in the alternative
- // !=a,!=b || (==b || ==c) => !=a
- $branches['names'] = array_diff($branches['names'], $b['names']);
- } else {
- // disjunctive constraint, so just add all the other branches
- // (==a || ==b) || ==c => ==a || ==b || ==c
- $branches['names'] = array_merge($branches['names'], $b['names']);
- }
- }
- }
- } else {
- $branches = Interval::anyDev();
- foreach ($constraintBranches as $b) {
- if ($b['exclude']) {
- if ($branches['exclude']) {
- // conjunctive, so just add all branch names to be excluded
- // !=a && !=b => !=a,!=b
- $branches['names'] = array_merge($branches['names'], $b['names']);
- } else {
- // conjunctive, so only keep included names which are not excluded
- // (==a||==c) && !=a,!=b => ==c
- $branches['names'] = array_diff($branches['names'], $b['names']);
- }
- } else {
- if ($branches['exclude']) {
- // conjunctive, so only keep included names which are not excluded
- // !=a,!=b && (==a||==c) => ==c
- $branches['names'] = array_diff($b['names'], $branches['names']);
- $branches['exclude'] = false;
- } else {
- // conjunctive, so only keep names that are included in both
- // (==a||==b) && (==a||==c) => ==a
- $branches['names'] = array_intersect($branches['names'], $b['names']);
- }
- }
- }
- }
-
- $branches['names'] = array_unique($branches['names']);
-
- if (\count($numericGroups) === 1) {
- return array('numeric' => $numericGroups[0], 'branches' => $branches);
- }
-
- $borders = array();
- foreach ($numericGroups as $group) {
- foreach ($group as $interval) {
- $borders[] = array('version' => $interval->getStart()->getVersion(), 'operator' => $interval->getStart()->getOperator(), 'side' => 'start');
- $borders[] = array('version' => $interval->getEnd()->getVersion(), 'operator' => $interval->getEnd()->getOperator(), 'side' => 'end');
- }
- }
-
- $opSortOrder = self::$opSortOrder;
- usort($borders, function ($a, $b) use ($opSortOrder) {
- $order = version_compare($a['version'], $b['version']);
- if ($order === 0) {
- return $opSortOrder[$a['operator']] - $opSortOrder[$b['operator']];
- }
-
- return $order;
- });
-
- $activeIntervals = 0;
- $intervals = array();
- $index = 0;
- $activationThreshold = $constraint->isConjunctive() ? \count($numericGroups) : 1;
- $start = null;
- foreach ($borders as $border) {
- if ($border['side'] === 'start') {
- $activeIntervals++;
- } else {
- $activeIntervals--;
- }
- if (!$start && $activeIntervals >= $activationThreshold) {
- $start = new Constraint($border['operator'], $border['version']);
- } elseif ($start && $activeIntervals < $activationThreshold) {
- // filter out invalid intervals like > x - <= x, or >= x - < x
- if (
- version_compare($start->getVersion(), $border['version'], '=')
- && (
- ($start->getOperator() === '>' && $border['operator'] === '<=')
- || ($start->getOperator() === '>=' && $border['operator'] === '<')
- )
- ) {
- unset($intervals[$index]);
- } else {
- $intervals[$index] = new Interval($start, new Constraint($border['operator'], $border['version']));
- $index++;
-
- if ($stopOnFirstValidInterval) {
- break;
- }
- }
-
- $start = null;
- }
- }
-
- return array('numeric' => $intervals, 'branches' => $branches);
- }
-
- /**
- * @phpstan-return array{'numeric': Interval[], 'branches': array{'names': string[], 'exclude': bool}}}
- */
- private static function generateSingleConstraintIntervals(Constraint $constraint)
- {
- $op = $constraint->getOperator();
-
- // handle branch constraints first
- if (strpos($constraint->getVersion(), 'dev-') === 0) {
- $intervals = array();
- $branches = array('names' => array(), 'exclude' => false);
-
- // != dev-foo means any numeric version may match, we treat >/< like != they are not really defined for branches
- if ($op === '!=') {
- $intervals[] = new Interval(Interval::fromZero(), Interval::untilPositiveInfinity());
- $branches = array('names' => array($constraint->getVersion()), 'exclude' => true);
- } elseif ($op === '==') {
- $branches['names'][] = $constraint->getVersion();
- }
-
- return array(
- 'numeric' => $intervals,
- 'branches' => $branches,
- );
- }
-
- if ($op[0] === '>') { // > & >=
- return array('numeric' => array(new Interval($constraint, Interval::untilPositiveInfinity())), 'branches' => Interval::noDev());
- }
- if ($op[0] === '<') { // < & <=
- return array('numeric' => array(new Interval(Interval::fromZero(), $constraint)), 'branches' => Interval::noDev());
- }
- if ($op === '!=') {
- // convert !=x to intervals of 0 - x - +inf + dev*
- return array('numeric' => array(
- new Interval(Interval::fromZero(), new Constraint('<', $constraint->getVersion())),
- new Interval(new Constraint('>', $constraint->getVersion()), Interval::untilPositiveInfinity()),
- ), 'branches' => Interval::anyDev());
- }
-
- // convert ==x to an interval of >=x - <=x
- return array('numeric' => array(
- new Interval(new Constraint('>=', $constraint->getVersion()), new Constraint('<=', $constraint->getVersion())),
- ), 'branches' => Interval::noDev());
- }
-}
diff --git a/vendor/composer/semver/src/Semver.php b/vendor/composer/semver/src/Semver.php
deleted file mode 100644
index 4d6de3c2..00000000
--- a/vendor/composer/semver/src/Semver.php
+++ /dev/null
@@ -1,129 +0,0 @@
-
- *
- * For the full copyright and license information, please view
- * the LICENSE file that was distributed with this source code.
- */
-
-namespace Composer\Semver;
-
-use Composer\Semver\Constraint\Constraint;
-
-class Semver
-{
- const SORT_ASC = 1;
- const SORT_DESC = -1;
-
- /** @var VersionParser */
- private static $versionParser;
-
- /**
- * Determine if given version satisfies given constraints.
- *
- * @param string $version
- * @param string $constraints
- *
- * @return bool
- */
- public static function satisfies($version, $constraints)
- {
- if (null === self::$versionParser) {
- self::$versionParser = new VersionParser();
- }
-
- $versionParser = self::$versionParser;
- $provider = new Constraint('==', $versionParser->normalize($version));
- $parsedConstraints = $versionParser->parseConstraints($constraints);
-
- return $parsedConstraints->matches($provider);
- }
-
- /**
- * Return all versions that satisfy given constraints.
- *
- * @param string[] $versions
- * @param string $constraints
- *
- * @return string[]
- */
- public static function satisfiedBy(array $versions, $constraints)
- {
- $versions = array_filter($versions, function ($version) use ($constraints) {
- return Semver::satisfies($version, $constraints);
- });
-
- return array_values($versions);
- }
-
- /**
- * Sort given array of versions.
- *
- * @param string[] $versions
- *
- * @return string[]
- */
- public static function sort(array $versions)
- {
- return self::usort($versions, self::SORT_ASC);
- }
-
- /**
- * Sort given array of versions in reverse.
- *
- * @param string[] $versions
- *
- * @return string[]
- */
- public static function rsort(array $versions)
- {
- return self::usort($versions, self::SORT_DESC);
- }
-
- /**
- * @param string[] $versions
- * @param int $direction
- *
- * @return string[]
- */
- private static function usort(array $versions, $direction)
- {
- if (null === self::$versionParser) {
- self::$versionParser = new VersionParser();
- }
-
- $versionParser = self::$versionParser;
- $normalized = array();
-
- // Normalize outside of usort() scope for minor performance increase.
- // Creates an array of arrays: [[normalized, key], ...]
- foreach ($versions as $key => $version) {
- $normalizedVersion = $versionParser->normalize($version);
- $normalizedVersion = $versionParser->normalizeDefaultBranch($normalizedVersion);
- $normalized[] = array($normalizedVersion, $key);
- }
-
- usort($normalized, function (array $left, array $right) use ($direction) {
- if ($left[0] === $right[0]) {
- return 0;
- }
-
- if (Comparator::lessThan($left[0], $right[0])) {
- return -$direction;
- }
-
- return $direction;
- });
-
- // Recreate input array, using the original indexes which are now in sorted order.
- $sorted = array();
- foreach ($normalized as $item) {
- $sorted[] = $versions[$item[1]];
- }
-
- return $sorted;
- }
-}
diff --git a/vendor/composer/semver/src/VersionParser.php b/vendor/composer/semver/src/VersionParser.php
deleted file mode 100644
index 1754a763..00000000
--- a/vendor/composer/semver/src/VersionParser.php
+++ /dev/null
@@ -1,584 +0,0 @@
-
- *
- * For the full copyright and license information, please view
- * the LICENSE file that was distributed with this source code.
- */
-
-namespace Composer\Semver;
-
-use Composer\Semver\Constraint\ConstraintInterface;
-use Composer\Semver\Constraint\MatchAllConstraint;
-use Composer\Semver\Constraint\MultiConstraint;
-use Composer\Semver\Constraint\Constraint;
-
-/**
- * Version parser.
- *
- * @author Jordi Boggiano
- */
-class VersionParser
-{
- /**
- * Regex to match pre-release data (sort of).
- *
- * Due to backwards compatibility:
- * - Instead of enforcing hyphen, an underscore, dot or nothing at all are also accepted.
- * - Only stabilities as recognized by Composer are allowed to precede a numerical identifier.
- * - Numerical-only pre-release identifiers are not supported, see tests.
- *
- * |--------------|
- * [major].[minor].[patch] -[pre-release] +[build-metadata]
- *
- * @var string
- */
- private static $modifierRegex = '[._-]?(?:(stable|beta|b|RC|alpha|a|patch|pl|p)((?:[.-]?\d+)*+)?)?([.-]?dev)?';
-
- /** @var string */
- private static $stabilitiesRegex = 'stable|RC|beta|alpha|dev';
-
- /**
- * Returns the stability of a version.
- *
- * @param string $version
- *
- * @return string
- * @phpstan-return 'stable'|'RC'|'beta'|'alpha'|'dev'
- */
- public static function parseStability($version)
- {
- $version = (string) preg_replace('{#.+$}', '', $version);
-
- if (strpos($version, 'dev-') === 0 || '-dev' === substr($version, -4)) {
- return 'dev';
- }
-
- preg_match('{' . self::$modifierRegex . '(?:\+.*)?$}i', strtolower($version), $match);
-
- if (!empty($match[3])) {
- return 'dev';
- }
-
- if (!empty($match[1])) {
- if ('beta' === $match[1] || 'b' === $match[1]) {
- return 'beta';
- }
- if ('alpha' === $match[1] || 'a' === $match[1]) {
- return 'alpha';
- }
- if ('rc' === $match[1]) {
- return 'RC';
- }
- }
-
- return 'stable';
- }
-
- /**
- * @param string $stability
- *
- * @return string
- */
- public static function normalizeStability($stability)
- {
- $stability = strtolower($stability);
-
- return $stability === 'rc' ? 'RC' : $stability;
- }
-
- /**
- * Normalizes a version string to be able to perform comparisons on it.
- *
- * @param string $version
- * @param string $fullVersion optional complete version string to give more context
- *
- * @throws \UnexpectedValueException
- *
- * @return string
- */
- public function normalize($version, $fullVersion = null)
- {
- $version = trim($version);
- $origVersion = $version;
- if (null === $fullVersion) {
- $fullVersion = $version;
- }
-
- // strip off aliasing
- if (preg_match('{^([^,\s]++) ++as ++([^,\s]++)$}', $version, $match)) {
- $version = $match[1];
- }
-
- // strip off stability flag
- if (preg_match('{@(?:' . self::$stabilitiesRegex . ')$}i', $version, $match)) {
- $version = substr($version, 0, strlen($version) - strlen($match[0]));
- }
-
- // normalize master/trunk/default branches to dev-name for BC with 1.x as these used to be valid constraints
- if (\in_array($version, array('master', 'trunk', 'default'), true)) {
- $version = 'dev-' . $version;
- }
-
- // if requirement is branch-like, use full name
- if (stripos($version, 'dev-') === 0) {
- return 'dev-' . substr($version, 4);
- }
-
- // strip off build metadata
- if (preg_match('{^([^,\s+]++)\+[^\s]++$}', $version, $match)) {
- $version = $match[1];
- }
-
- // match classical versioning
- if (preg_match('{^v?(\d{1,5})(\.\d++)?(\.\d++)?(\.\d++)?' . self::$modifierRegex . '$}i', $version, $matches)) {
- $version = $matches[1]
- . (!empty($matches[2]) ? $matches[2] : '.0')
- . (!empty($matches[3]) ? $matches[3] : '.0')
- . (!empty($matches[4]) ? $matches[4] : '.0');
- $index = 5;
- // match date(time) based versioning
- } elseif (preg_match('{^v?(\d{4}(?:[.:-]?\d{2}){1,6}(?:[.:-]?\d{1,3})?)' . self::$modifierRegex . '$}i', $version, $matches)) {
- $version = preg_replace('{\D}', '.', $matches[1]);
- $index = 2;
- }
-
- // add version modifiers if a version was matched
- if (isset($index)) {
- if (!empty($matches[$index])) {
- if ('stable' === $matches[$index]) {
- return $version;
- }
- $version .= '-' . $this->expandStability($matches[$index]) . (isset($matches[$index + 1]) && '' !== $matches[$index + 1] ? ltrim($matches[$index + 1], '.-') : '');
- }
-
- if (!empty($matches[$index + 2])) {
- $version .= '-dev';
- }
-
- return $version;
- }
-
- // match dev branches
- if (preg_match('{(.*?)[.-]?dev$}i', $version, $match)) {
- try {
- $normalized = $this->normalizeBranch($match[1]);
- // a branch ending with -dev is only valid if it is numeric
- // if it gets prefixed with dev- it means the branch name should
- // have had a dev- prefix already when passed to normalize
- if (strpos($normalized, 'dev-') === false) {
- return $normalized;
- }
- } catch (\Exception $e) {
- }
- }
-
- $extraMessage = '';
- if (preg_match('{ +as +' . preg_quote($version) . '(?:@(?:'.self::$stabilitiesRegex.'))?$}', $fullVersion)) {
- $extraMessage = ' in "' . $fullVersion . '", the alias must be an exact version';
- } elseif (preg_match('{^' . preg_quote($version) . '(?:@(?:'.self::$stabilitiesRegex.'))? +as +}', $fullVersion)) {
- $extraMessage = ' in "' . $fullVersion . '", the alias source must be an exact version, if it is a branch name you should prefix it with dev-';
- }
-
- throw new \UnexpectedValueException('Invalid version string "' . $origVersion . '"' . $extraMessage);
- }
-
- /**
- * Extract numeric prefix from alias, if it is in numeric format, suitable for version comparison.
- *
- * @param string $branch Branch name (e.g. 2.1.x-dev)
- *
- * @return string|false Numeric prefix if present (e.g. 2.1.) or false
- */
- public function parseNumericAliasPrefix($branch)
- {
- if (preg_match('{^(?P(\d++\\.)*\d++)(?:\.x)?-dev$}i', $branch, $matches)) {
- return $matches['version'] . '.';
- }
-
- return false;
- }
-
- /**
- * Normalizes a branch name to be able to perform comparisons on it.
- *
- * @param string $name
- *
- * @return string
- */
- public function normalizeBranch($name)
- {
- $name = trim($name);
-
- if (preg_match('{^v?(\d++)(\.(?:\d++|[xX*]))?(\.(?:\d++|[xX*]))?(\.(?:\d++|[xX*]))?$}i', $name, $matches)) {
- $version = '';
- for ($i = 1; $i < 5; ++$i) {
- $version .= isset($matches[$i]) ? str_replace(array('*', 'X'), 'x', $matches[$i]) : '.x';
- }
-
- return str_replace('x', '9999999', $version) . '-dev';
- }
-
- return 'dev-' . $name;
- }
-
- /**
- * Normalizes a default branch name (i.e. master on git) to 9999999-dev.
- *
- * @param string $name
- *
- * @return string
- */
- public function normalizeDefaultBranch($name)
- {
- if ($name === 'dev-master' || $name === 'dev-default' || $name === 'dev-trunk') {
- return '9999999-dev';
- }
-
- return $name;
- }
-
- /**
- * Parses a constraint string into MultiConstraint and/or Constraint objects.
- *
- * @param string $constraints
- *
- * @return ConstraintInterface
- */
- public function parseConstraints($constraints)
- {
- $prettyConstraint = $constraints;
-
- $orConstraints = preg_split('{\s*\|\|?\s*}', trim($constraints));
- if (false === $orConstraints) {
- throw new \RuntimeException('Failed to preg_split string: '.$constraints);
- }
- $orGroups = array();
-
- foreach ($orConstraints as $constraints) {
- $andConstraints = preg_split('{(?< ,]) *(? 1) {
- $constraintObjects = array();
- foreach ($andConstraints as $constraint) {
- foreach ($this->parseConstraint($constraint) as $parsedConstraint) {
- $constraintObjects[] = $parsedConstraint;
- }
- }
- } else {
- $constraintObjects = $this->parseConstraint($andConstraints[0]);
- }
-
- if (1 === \count($constraintObjects)) {
- $constraint = $constraintObjects[0];
- } else {
- $constraint = new MultiConstraint($constraintObjects);
- }
-
- $orGroups[] = $constraint;
- }
-
- $constraint = MultiConstraint::create($orGroups, false);
-
- $constraint->setPrettyString($prettyConstraint);
-
- return $constraint;
- }
-
- /**
- * @param string $constraint
- *
- * @throws \UnexpectedValueException
- *
- * @return array
- *
- * @phpstan-return non-empty-array
- */
- private function parseConstraint($constraint)
- {
- // strip off aliasing
- if (preg_match('{^([^,\s]++) ++as ++([^,\s]++)$}', $constraint, $match)) {
- $constraint = $match[1];
- }
-
- // strip @stability flags, and keep it for later use
- if (preg_match('{^([^,\s]*?)@(' . self::$stabilitiesRegex . ')$}i', $constraint, $match)) {
- $constraint = '' !== $match[1] ? $match[1] : '*';
- if ($match[2] !== 'stable') {
- $stabilityModifier = $match[2];
- }
- }
-
- // get rid of #refs as those are used by composer only
- if (preg_match('{^(dev-[^,\s@]+?|[^,\s@]+?\.x-dev)#.+$}i', $constraint, $match)) {
- $constraint = $match[1];
- }
-
- if (preg_match('{^(v)?[xX*](\.[xX*])*$}i', $constraint, $match)) {
- if (!empty($match[1]) || !empty($match[2])) {
- return array(new Constraint('>=', '0.0.0.0-dev'));
- }
-
- return array(new MatchAllConstraint());
- }
-
- $versionRegex = 'v?(\d++)(?:\.(\d++))?(?:\.(\d++))?(?:\.(\d++))?(?:' . self::$modifierRegex . '|\.([xX*][.-]?dev))(?:\+[^\s]+)?';
-
- // Tilde Range
- //
- // Like wildcard constraints, unsuffixed tilde constraints say that they must be greater than the previous
- // version, to ensure that unstable instances of the current version are allowed. However, if a stability
- // suffix is added to the constraint, then a >= match on the current version is used instead.
- if (preg_match('{^~>?' . $versionRegex . '$}i', $constraint, $matches)) {
- if (strpos($constraint, '~>') === 0) {
- throw new \UnexpectedValueException(
- 'Could not parse version constraint ' . $constraint . ': ' .
- 'Invalid operator "~>", you probably meant to use the "~" operator'
- );
- }
-
- // Work out which position in the version we are operating at
- if (isset($matches[4]) && '' !== $matches[4] && null !== $matches[4]) {
- $position = 4;
- } elseif (isset($matches[3]) && '' !== $matches[3] && null !== $matches[3]) {
- $position = 3;
- } elseif (isset($matches[2]) && '' !== $matches[2] && null !== $matches[2]) {
- $position = 2;
- } else {
- $position = 1;
- }
-
- // when matching 2.x-dev or 3.0.x-dev we have to shift the second or third number, despite no second/third number matching above
- if (!empty($matches[8])) {
- $position++;
- }
-
- // Calculate the stability suffix
- $stabilitySuffix = '';
- if (empty($matches[5]) && empty($matches[7]) && empty($matches[8])) {
- $stabilitySuffix .= '-dev';
- }
-
- $lowVersion = $this->normalize(substr($constraint . $stabilitySuffix, 1));
- $lowerBound = new Constraint('>=', $lowVersion);
-
- // For upper bound, we increment the position of one more significance,
- // but highPosition = 0 would be illegal
- $highPosition = max(1, $position - 1);
- $highVersion = $this->manipulateVersionString($matches, $highPosition, 1) . '-dev';
- $upperBound = new Constraint('<', $highVersion);
-
- return array(
- $lowerBound,
- $upperBound,
- );
- }
-
- // Caret Range
- //
- // Allows changes that do not modify the left-most non-zero digit in the [major, minor, patch] tuple.
- // In other words, this allows patch and minor updates for versions 1.0.0 and above, patch updates for
- // versions 0.X >=0.1.0, and no updates for versions 0.0.X
- if (preg_match('{^\^' . $versionRegex . '($)}i', $constraint, $matches)) {
- // Work out which position in the version we are operating at
- if ('0' !== $matches[1] || '' === $matches[2] || null === $matches[2]) {
- $position = 1;
- } elseif ('0' !== $matches[2] || '' === $matches[3] || null === $matches[3]) {
- $position = 2;
- } else {
- $position = 3;
- }
-
- // Calculate the stability suffix
- $stabilitySuffix = '';
- if (empty($matches[5]) && empty($matches[7]) && empty($matches[8])) {
- $stabilitySuffix .= '-dev';
- }
-
- $lowVersion = $this->normalize(substr($constraint . $stabilitySuffix, 1));
- $lowerBound = new Constraint('>=', $lowVersion);
-
- // For upper bound, we increment the position of one more significance,
- // but highPosition = 0 would be illegal
- $highVersion = $this->manipulateVersionString($matches, $position, 1) . '-dev';
- $upperBound = new Constraint('<', $highVersion);
-
- return array(
- $lowerBound,
- $upperBound,
- );
- }
-
- // X Range
- //
- // Any of X, x, or * may be used to "stand in" for one of the numeric values in the [major, minor, patch] tuple.
- // A partial version range is treated as an X-Range, so the special character is in fact optional.
- if (preg_match('{^v?(\d++)(?:\.(\d++))?(?:\.(\d++))?(?:\.[xX*])++$}', $constraint, $matches)) {
- if (isset($matches[3]) && '' !== $matches[3] && null !== $matches[3]) {
- $position = 3;
- } elseif (isset($matches[2]) && '' !== $matches[2] && null !== $matches[2]) {
- $position = 2;
- } else {
- $position = 1;
- }
-
- $lowVersion = $this->manipulateVersionString($matches, $position) . '-dev';
- $highVersion = $this->manipulateVersionString($matches, $position, 1) . '-dev';
-
- if ($lowVersion === '0.0.0.0-dev') {
- return array(new Constraint('<', $highVersion));
- }
-
- return array(
- new Constraint('>=', $lowVersion),
- new Constraint('<', $highVersion),
- );
- }
-
- // Hyphen Range
- //
- // Specifies an inclusive set. If a partial version is provided as the first version in the inclusive range,
- // then the missing pieces are replaced with zeroes. If a partial version is provided as the second version in
- // the inclusive range, then all versions that start with the supplied parts of the tuple are accepted, but
- // nothing that would be greater than the provided tuple parts.
- if (preg_match('{^(?P' . $versionRegex . ') +- +(?P' . $versionRegex . ')($)}i', $constraint, $matches)) {
- // Calculate the stability suffix
- $lowStabilitySuffix = '';
- if (empty($matches[6]) && empty($matches[8]) && empty($matches[9])) {
- $lowStabilitySuffix = '-dev';
- }
-
- $lowVersion = $this->normalize($matches['from']);
- $lowerBound = new Constraint('>=', $lowVersion . $lowStabilitySuffix);
-
- $empty = function ($x) {
- return ($x === 0 || $x === '0') ? false : empty($x);
- };
-
- if ((!$empty($matches[12]) && !$empty($matches[13])) || !empty($matches[15]) || !empty($matches[17]) || !empty($matches[18])) {
- $highVersion = $this->normalize($matches['to']);
- $upperBound = new Constraint('<=', $highVersion);
- } else {
- $highMatch = array('', $matches[11], $matches[12], $matches[13], $matches[14]);
-
- // validate to version
- $this->normalize($matches['to']);
-
- $highVersion = $this->manipulateVersionString($highMatch, $empty($matches[12]) ? 1 : 2, 1) . '-dev';
- $upperBound = new Constraint('<', $highVersion);
- }
-
- return array(
- $lowerBound,
- $upperBound,
- );
- }
-
- // Basic Comparators
- if (preg_match('{^(<>|!=|>=?|<=?|==?)?\s*(.*)}', $constraint, $matches)) {
- try {
- try {
- $version = $this->normalize($matches[2]);
- } catch (\UnexpectedValueException $e) {
- // recover from an invalid constraint like foobar-dev which should be dev-foobar
- // except if the constraint uses a known operator, in which case it must be a parse error
- if (substr($matches[2], -4) === '-dev' && preg_match('{^[0-9a-zA-Z-./]+$}', $matches[2])) {
- $version = $this->normalize('dev-'.substr($matches[2], 0, -4));
- } else {
- throw $e;
- }
- }
-
- $op = $matches[1] ?: '=';
-
- if ($op !== '==' && $op !== '=' && !empty($stabilityModifier) && self::parseStability($version) === 'stable') {
- $version .= '-' . $stabilityModifier;
- } elseif ('<' === $op || '>=' === $op) {
- if (!preg_match('/-' . self::$modifierRegex . '$/', strtolower($matches[2]))) {
- if (strpos($matches[2], 'dev-') !== 0) {
- $version .= '-dev';
- }
- }
- }
-
- return array(new Constraint($matches[1] ?: '=', $version));
- } catch (\Exception $e) {
- }
- }
-
- $message = 'Could not parse version constraint ' . $constraint;
- if (isset($e)) {
- $message .= ': ' . $e->getMessage();
- }
-
- throw new \UnexpectedValueException($message);
- }
-
- /**
- * Increment, decrement, or simply pad a version number.
- *
- * Support function for {@link parseConstraint()}
- *
- * @param array $matches Array with version parts in array indexes 1,2,3,4
- * @param int $position 1,2,3,4 - which segment of the version to increment/decrement
- * @param int $increment
- * @param string $pad The string to pad version parts after $position
- *
- * @return string|null The new version
- *
- * @phpstan-param string[] $matches
- */
- private function manipulateVersionString(array $matches, $position, $increment = 0, $pad = '0')
- {
- for ($i = 4; $i > 0; --$i) {
- if ($i > $position) {
- $matches[$i] = $pad;
- } elseif ($i === $position && $increment) {
- $matches[$i] += $increment;
- // If $matches[$i] was 0, carry the decrement
- if ($matches[$i] < 0) {
- $matches[$i] = $pad;
- --$position;
-
- // Return null on a carry overflow
- if ($i === 1) {
- return null;
- }
- }
- }
- }
-
- return $matches[1] . '.' . $matches[2] . '.' . $matches[3] . '.' . $matches[4];
- }
-
- /**
- * Expand shorthand stability string to long version.
- *
- * @param string $stability
- *
- * @return string
- */
- private function expandStability($stability)
- {
- $stability = strtolower($stability);
-
- switch ($stability) {
- case 'a':
- return 'alpha';
- case 'b':
- return 'beta';
- case 'p':
- case 'pl':
- return 'patch';
- case 'rc':
- return 'RC';
- default:
- return $stability;
- }
- }
-}
diff --git a/vendor/composer/xdebug-handler/CHANGELOG.md b/vendor/composer/xdebug-handler/CHANGELOG.md
deleted file mode 100644
index d7d46f9c..00000000
--- a/vendor/composer/xdebug-handler/CHANGELOG.md
+++ /dev/null
@@ -1,112 +0,0 @@
-## [Unreleased]
-
-## [2.0.2] - 2021-07-31
- * Added: support for `xdebug_info('mode')` in Xdebug 3.1.
- * Added: support for Psr\Log versions 2 and 3.
- * Fixed: remove ini directives from non-cli HOST/PATH sections.
-
-## [2.0.1] - 2021-05-05
- * Fixed: don't restart if the cwd is a UNC path and cmd.exe will be invoked.
-
-## [2.0.0] - 2021-04-09
- * Break: this is a major release, see [UPGRADE.md](UPGRADE.md) for more information.
- * Break: removed optional `$colorOption` constructor param and passthru fallback.
- * Break: renamed `requiresRestart` param from `$isLoaded` to `$default`.
- * Break: changed `restart` param `$command` from a string to an array.
- * Added: support for Xdebug3 to only restart if Xdebug is not running with `xdebug.mode=off`.
- * Added: `isXdebugActive()` method to determine if Xdebug is still running in the restart.
- * Added: feature to bypass the shell in PHP-7.4+ by giving `proc_open` an array of arguments.
- * Added: Process utility class to the API.
-
-## [1.4.6] - 2021-03-25
- * Fixed: fail restart if `proc_open` has been disabled in `disable_functions`.
- * Fixed: enable Windows CTRL event handling in the restarted process.
-
-## [1.4.5] - 2020-11-13
- * Fixed: use `proc_open` when available for correct FD forwarding to the restarted process.
-
-## [1.4.4] - 2020-10-24
- * Fixed: exception if 'pcntl_signal' is disabled.
-
-## [1.4.3] - 2020-08-19
- * Fixed: restore SIGINT to default handler in restarted process if no other handler exists.
-
-## [1.4.2] - 2020-06-04
- * Fixed: ignore SIGINTs to let the restarted process handle them.
-
-## [1.4.1] - 2020-03-01
- * Fixed: restart fails if an ini file is empty.
-
-## [1.4.0] - 2019-11-06
- * Added: support for `NO_COLOR` environment variable: https://no-color.org
- * Added: color support for Hyper terminal: https://github.com/zeit/hyper
- * Fixed: correct capitalization of Xdebug (apparently).
- * Fixed: improved handling for uopz extension.
-
-## [1.3.3] - 2019-05-27
- * Fixed: add environment changes to `$_ENV` if it is being used.
-
-## [1.3.2] - 2019-01-28
- * Fixed: exit call being blocked by uopz extension, resulting in application code running twice.
-
-## [1.3.1] - 2018-11-29
- * Fixed: fail restart if `passthru` has been disabled in `disable_functions`.
- * Fixed: fail restart if an ini file cannot be opened, otherwise settings will be missing.
-
-## [1.3.0] - 2018-08-31
- * Added: `setPersistent` method to use environment variables for the restart.
- * Fixed: improved debugging by writing output to stderr.
- * Fixed: no restart when `php_ini_scanned_files` is not functional and is needed.
-
-## [1.2.1] - 2018-08-23
- * Fixed: fatal error with apc, when using `apc.mmap_file_mask`.
-
-## [1.2.0] - 2018-08-16
- * Added: debug information using `XDEBUG_HANDLER_DEBUG`.
- * Added: fluent interface for setters.
- * Added: `PhpConfig` helper class for calling PHP sub-processes.
- * Added: `PHPRC` original value to restart stettings, for use in a restarted process.
- * Changed: internal procedure to disable ini-scanning, using `-n` command-line option.
- * Fixed: replaced `escapeshellarg` usage to avoid locale problems.
- * Fixed: improved color-option handling to respect double-dash delimiter.
- * Fixed: color-option handling regression from main script changes.
- * Fixed: improved handling when checking main script.
- * Fixed: handling for standard input, that never actually did anything.
- * Fixed: fatal error when ctype extension is not available.
-
-## [1.1.0] - 2018-04-11
- * Added: `getRestartSettings` method for calling PHP processes in a restarted process.
- * Added: API definition and @internal class annotations.
- * Added: protected `requiresRestart` method for extending classes.
- * Added: `setMainScript` method for applications that change the working directory.
- * Changed: private `tmpIni` variable to protected for extending classes.
- * Fixed: environment variables not available in $_SERVER when restored in the restart.
- * Fixed: relative path problems caused by Phar::interceptFileFuncs.
- * Fixed: incorrect handling when script file cannot be found.
-
-## [1.0.0] - 2018-03-08
- * Added: PSR3 logging for optional status output.
- * Added: existing ini settings are merged to catch command-line overrides.
- * Added: code, tests and other artefacts to decouple from Composer.
- * Break: the following class was renamed:
- - `Composer\XdebugHandler` -> `Composer\XdebugHandler\XdebugHandler`
-
-[Unreleased]: https://github.com/composer/xdebug-handler/compare/2.0.2...HEAD
-[2.0.2]: https://github.com/composer/xdebug-handler/compare/2.0.1...2.0.2
-[2.0.1]: https://github.com/composer/xdebug-handler/compare/2.0.0...2.0.1
-[2.0.0]: https://github.com/composer/xdebug-handler/compare/1.4.6...2.0.0
-[1.4.6]: https://github.com/composer/xdebug-handler/compare/1.4.5...1.4.6
-[1.4.5]: https://github.com/composer/xdebug-handler/compare/1.4.4...1.4.5
-[1.4.4]: https://github.com/composer/xdebug-handler/compare/1.4.3...1.4.4
-[1.4.3]: https://github.com/composer/xdebug-handler/compare/1.4.2...1.4.3
-[1.4.2]: https://github.com/composer/xdebug-handler/compare/1.4.1...1.4.2
-[1.4.1]: https://github.com/composer/xdebug-handler/compare/1.4.0...1.4.1
-[1.4.0]: https://github.com/composer/xdebug-handler/compare/1.3.3...1.4.0
-[1.3.3]: https://github.com/composer/xdebug-handler/compare/1.3.2...1.3.3
-[1.3.2]: https://github.com/composer/xdebug-handler/compare/1.3.1...1.3.2
-[1.3.1]: https://github.com/composer/xdebug-handler/compare/1.3.0...1.3.1
-[1.3.0]: https://github.com/composer/xdebug-handler/compare/1.2.1...1.3.0
-[1.2.1]: https://github.com/composer/xdebug-handler/compare/1.2.0...1.2.1
-[1.2.0]: https://github.com/composer/xdebug-handler/compare/1.1.0...1.2.0
-[1.1.0]: https://github.com/composer/xdebug-handler/compare/1.0.0...1.1.0
-[1.0.0]: https://github.com/composer/xdebug-handler/compare/d66f0d15cb57...1.0.0
diff --git a/vendor/composer/xdebug-handler/LICENSE b/vendor/composer/xdebug-handler/LICENSE
deleted file mode 100644
index 963618a1..00000000
--- a/vendor/composer/xdebug-handler/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2017 Composer
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/vendor/composer/xdebug-handler/README.md b/vendor/composer/xdebug-handler/README.md
deleted file mode 100644
index 020cf486..00000000
--- a/vendor/composer/xdebug-handler/README.md
+++ /dev/null
@@ -1,291 +0,0 @@
-# composer/xdebug-handler
-
-[](https://packagist.org/packages/composer/xdebug-handler)
-[](https://github.com/composer/xdebug-handler/actions)
-
-
-
-Restart a CLI process without loading the Xdebug extension, unless `xdebug.mode=off`.
-
-Originally written as part of [composer/composer](https://github.com/composer/composer),
-now extracted and made available as a stand-alone library.
-
-### Version 2
-
-Support added for Xdebug3. See [UPGRADE](UPGRADE.md) for more information.
-
-## Installation
-
-Install the latest version with:
-
-```bash
-$ composer require composer/xdebug-handler
-```
-
-## Requirements
-
-* PHP 5.3.2 minimum, although functionality is disabled below PHP 5.4.0. Using the latest PHP version is highly recommended.
-
-## Basic Usage
-```php
-use Composer\XdebugHandler\XdebugHandler;
-
-$xdebug = new XdebugHandler('myapp');
-$xdebug->check();
-unset($xdebug);
-```
-
-The constructor takes a single parameter, `$envPrefix`, which is upper-cased and prepended to default base values to create two distinct environment variables. The above example enables the use of:
-
-- `MYAPP_ALLOW_XDEBUG=1` to override automatic restart and allow Xdebug
-- `MYAPP_ORIGINAL_INIS` to obtain ini file locations in a restarted process
-
-## Advanced Usage
-
-* [How it works](#how-it-works)
-* [Limitations](#limitations)
-* [Helper methods](#helper-methods)
-* [Setter methods](#setter-methods)
-* [Process configuration](#process-configuration)
-* [Troubleshooting](#troubleshooting)
-* [Extending the library](#extending-the-library)
-
-### How it works
-
-A temporary ini file is created from the loaded (and scanned) ini files, with any references to the Xdebug extension commented out. Current ini settings are merged, so that most ini settings made on the command-line or by the application are included (see [Limitations](#limitations))
-
-* `MYAPP_ALLOW_XDEBUG` is set with internal data to flag and use in the restart.
-* The command-line and environment are [configured](#process-configuration) for the restart.
-* The application is restarted in a new process.
- * The restart settings are stored in the environment.
- * `MYAPP_ALLOW_XDEBUG` is unset.
- * The application runs and exits.
-* The main process exits with the exit code from the restarted process.
-
-#### Signal handling
-From PHP 7.1 with the pcntl extension loaded, asynchronous signal handling is automatically enabled. `SIGINT` is set to `SIG_IGN` in the parent
-process and restored to `SIG_DFL` in the restarted process (if no other handler has been set).
-
-From PHP 7.4 on Windows, `CTRL+C` and `CTRL+BREAK` handling is ignored in the parent process and automatically enabled in the restarted process.
-
-### Limitations
-There are a few things to be aware of when running inside a restarted process.
-
-* Extensions set on the command-line will not be loaded.
-* Ini file locations will be reported as per the restart - see [getAllIniFiles()](#getallinifiles).
-* Php sub-processes may be loaded with Xdebug enabled - see [Process configuration](#process-configuration).
-
-### Helper methods
-These static methods provide information from the current process, regardless of whether it has been restarted or not.
-
-#### _getAllIniFiles()_
-Returns an array of the original ini file locations. Use this instead of calling `php_ini_loaded_file` and `php_ini_scanned_files`, which will report the wrong values in a restarted process.
-
-```php
-use Composer\XdebugHandler\XdebugHandler;
-
-$files = XdebugHandler::getAllIniFiles();
-
-# $files[0] always exists, it could be an empty string
-$loadedIni = array_shift($files);
-$scannedInis = $files;
-```
-
-These locations are also available in the `MYAPP_ORIGINAL_INIS` environment variable. This is a path-separated string comprising the location returned from `php_ini_loaded_file`, which could be empty, followed by locations parsed from calling `php_ini_scanned_files`.
-
-#### _getRestartSettings()_
-Returns an array of settings that can be used with PHP [sub-processes](#sub-processes), or null if the process was not restarted.
-
-```php
-use Composer\XdebugHandler\XdebugHandler;
-
-$settings = XdebugHandler::getRestartSettings();
-/**
- * $settings: array (if the current process was restarted,
- * or called with the settings from a previous restart), or null
- *
- * 'tmpIni' => the temporary ini file used in the restart (string)
- * 'scannedInis' => if there were any scanned inis (bool)
- * 'scanDir' => the original PHP_INI_SCAN_DIR value (false|string)
- * 'phprc' => the original PHPRC value (false|string)
- * 'inis' => the original inis from getAllIniFiles (array)
- * 'skipped' => the skipped version from getSkippedVersion (string)
- */
-```
-
-#### _getSkippedVersion()_
-Returns the Xdebug version string that was skipped by the restart, or an empty value if there was no restart (or Xdebug is still loaded, perhaps by an extending class restarting for a reason other than removing Xdebug).
-
-```php
-use Composer\XdebugHandler\XdebugHandler;
-
-$version = XdebugHandler::getSkippedVersion();
-# $version: '2.6.0' (for example), or an empty string
-```
-
-#### _isXdebugActive()_
-Returns true if Xdebug is loaded and is running in an active mode (if it supports modes). Returns false if Xdebug is not loaded, or it is running with `xdebug.mode=off`.
-
-### Setter methods
-These methods implement a fluent interface and must be called before the main `check()` method.
-
-#### _setLogger($logger)_
-Enables the output of status messages to an external PSR3 logger. All messages are reported with either `DEBUG` or `WARNING` log levels. For example (showing the level and message):
-
-```
-// Restart overridden
-DEBUG Checking MYAPP_ALLOW_XDEBUG
-DEBUG The Xdebug extension is loaded (2.5.0)
-DEBUG No restart (MYAPP_ALLOW_XDEBUG=1)
-
-// Failed restart
-DEBUG Checking MYAPP_ALLOW_XDEBUG
-DEBUG The Xdebug extension is loaded (2.5.0)
-WARNING No restart (Unable to create temp ini file at: ...)
-```
-
-Status messages can also be output with `XDEBUG_HANDLER_DEBUG`. See [Troubleshooting](#troubleshooting).
-
-#### _setMainScript($script)_
-Sets the location of the main script to run in the restart. This is only needed in more esoteric use-cases, or if the `argv[0]` location is inaccessible. The script name `--` is supported for standard input.
-
-#### _setPersistent()_
-Configures the restart using [persistent settings](#persistent-settings), so that Xdebug is not loaded in any sub-process.
-
-Use this method if your application invokes one or more PHP sub-process and the Xdebug extension is not needed. This avoids the overhead of implementing specific [sub-process](#sub-processes) strategies.
-
-Alternatively, this method can be used to set up a default _Xdebug-free_ environment which can be changed if a sub-process requires Xdebug, then restored afterwards:
-
-```php
-function SubProcessWithXdebug()
-{
- $phpConfig = new Composer\XdebugHandler\PhpConfig();
-
- # Set the environment to the original configuration
- $phpConfig->useOriginal();
-
- # run the process with Xdebug loaded
- ...
-
- # Restore Xdebug-free environment
- $phpConfig->usePersistent();
-}
-```
-
-### Process configuration
-The library offers two strategies to invoke a new PHP process without loading Xdebug, using either _standard_ or _persistent_ settings. Note that this is only important if the application calls a PHP sub-process.
-
-#### Standard settings
-Uses command-line options to remove Xdebug from the new process only.
-
-* The -n option is added to the command-line. This tells PHP not to scan for additional inis.
-* The temporary ini is added to the command-line with the -c option.
-
->_If the new process calls a PHP sub-process, Xdebug will be loaded in that sub-process (unless it implements xdebug-handler, in which case there will be another restart)._
-
-This is the default strategy used in the restart.
-
-#### Persistent settings
-Uses environment variables to remove Xdebug from the new process and persist these settings to any sub-process.
-
-* `PHP_INI_SCAN_DIR` is set to an empty string. This tells PHP not to scan for additional inis.
-* `PHPRC` is set to the temporary ini.
-
->_If the new process calls a PHP sub-process, Xdebug will not be loaded in that sub-process._
-
-This strategy can be used in the restart by calling [setPersistent()](#setpersistent).
-
-#### Sub-processes
-The `PhpConfig` helper class makes it easy to invoke a PHP sub-process (with or without Xdebug loaded), regardless of whether there has been a restart.
-
-Each of its methods returns an array of PHP options (to add to the command-line) and sets up the environment for the required strategy. The [getRestartSettings()](#getrestartsettings) method is used internally.
-
-* `useOriginal()` - Xdebug will be loaded in the new process.
-* `useStandard()` - Xdebug will **not** be loaded in the new process - see [standard settings](#standard-settings).
-* `userPersistent()` - Xdebug will **not** be loaded in the new process - see [persistent settings](#persistent-settings)
-
-If there was no restart, an empty options array is returned and the environment is not changed.
-
-```php
-use Composer\XdebugHandler\PhpConfig;
-
-$config = new PhpConfig;
-
-$options = $config->useOriginal();
-# $options: empty array
-# environment: PHPRC and PHP_INI_SCAN_DIR set to original values
-
-$options = $config->useStandard();
-# $options: [-n, -c, tmpIni]
-# environment: PHPRC and PHP_INI_SCAN_DIR set to original values
-
-$options = $config->usePersistent();
-# $options: empty array
-# environment: PHPRC=tmpIni, PHP_INI_SCAN_DIR=''
-```
-
-### Troubleshooting
-The following environment settings can be used to troubleshoot unexpected behavior:
-
-* `XDEBUG_HANDLER_DEBUG=1` Outputs status messages to `STDERR`, if it is defined, irrespective of any PSR3 logger. Each message is prefixed `xdebug-handler[pid]`, where pid is the process identifier.
-
-* `XDEBUG_HANDLER_DEBUG=2` As above, but additionally saves the temporary ini file and reports its location in a status message.
-
-### Extending the library
-The API is defined by classes and their accessible elements that are not annotated as @internal. The main class has two protected methods that can be overridden to provide additional functionality:
-
-#### _requiresRestart($default)_
-By default the process will restart if Xdebug is loaded and not running with `xdebug.mode=off`. Extending this method allows an application to decide, by returning a boolean (or equivalent) value.
-It is only called if `MYAPP_ALLOW_XDEBUG` is empty, so it will not be called in the restarted process (where this variable contains internal data), or if the restart has been overridden.
-
-Note that the [setMainScript()](#setmainscriptscript) and [setPersistent()](#setpersistent) setters can be used here, if required.
-
-#### _restart($command)_
-An application can extend this to modify the temporary ini file, its location given in the `tmpIni` property. New settings can be safely appended to the end of the data, which is `PHP_EOL` terminated.
-
-The `$command` parameter is an array of unescaped command-line arguments that will be used for the new process.
-
-Remember to finish with `parent::restart($command)`.
-
-#### Example
-This example demonstrates two ways to extend basic functionality:
-
-* To avoid the overhead of spinning up a new process, the restart is skipped if a simple help command is requested.
-
-* The application needs write-access to phar files, so it will force a restart if `phar.readonly` is set (regardless of whether Xdebug is loaded) and change this value in the temporary ini file.
-
-```php
-use Composer\XdebugHandler\XdebugHandler;
-use MyApp\Command;
-
-class MyRestarter extends XdebugHandler
-{
- private $required;
-
- protected function requiresRestart($default)
- {
- if (Command::isHelp()) {
- # No need to disable Xdebug for this
- return false;
- }
-
- $this->required = (bool) ini_get('phar.readonly');
- return $this->required || $default;
- }
-
- protected function restart($command)
- {
- if ($this->required) {
- # Add required ini setting to tmpIni
- $content = file_get_contents($this->tmpIni);
- $content .= 'phar.readonly=0'.PHP_EOL;
- file_put_contents($this->tmpIni, $content);
- }
-
- parent::restart($command);
- }
-}
-```
-
-## License
-composer/xdebug-handler is licensed under the MIT License, see the LICENSE file for details.
diff --git a/vendor/composer/xdebug-handler/UPGRADE.md b/vendor/composer/xdebug-handler/UPGRADE.md
deleted file mode 100644
index 3d62e17a..00000000
--- a/vendor/composer/xdebug-handler/UPGRADE.md
+++ /dev/null
@@ -1,30 +0,0 @@
-## Upgrading from 1.x
-
-The default behaviour has changed from always restarting if Xdebug is loaded, to only restarting if
-Xdebug is _active_. This has been introduced to support Xdebug3
-[modes](https://xdebug.org/docs/all_settings#mode). Xdebug is considered active if it is loaded, and
-for Xdebug3, if it is running in a mode other than `xdebug.mode=off`.
-
-* Break: removed optional `$colorOption` constructor param and passthru fallback.
-
- Just use `new XdebugHandler('myapp')` to instantiate the class and color support will be
-detectable in the restarted process.
-
-* Added: `isXdebugActive()` method to determine if Xdebug is still running in the restart.
-
- Returns true if Xdebug is loaded and is running in an active mode (if it supports modes).
-Returns false if Xdebug is not loaded, or it is running with `xdebug.mode=off`.
-
-### Extending classes
-
-* Break: renamed `requiresRestart` param from `$isLoaded` to `$default`.
-
- This reflects the new default behaviour which is to restart only if Xdebug is active.
-
-* Break: changed `restart` param `$command` from a string to an array.
-
- Only important if you modified the string. `$command` is now an array of unescaped arguments.
-
-* Added: Process utility class to the API.
-
- This class was previously annotated as @internal and has been refactored due to recent changes.
diff --git a/vendor/composer/xdebug-handler/composer.json b/vendor/composer/xdebug-handler/composer.json
deleted file mode 100644
index 75cb1f74..00000000
--- a/vendor/composer/xdebug-handler/composer.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "name": "composer/xdebug-handler",
- "description": "Restarts a process without Xdebug.",
- "type": "library",
- "license": "MIT",
- "keywords": [
- "xdebug",
- "performance"
- ],
- "authors": [
- {
- "name": "John Stevenson",
- "email": "john-stevenson@blueyonder.co.uk"
- }
- ],
- "support": {
- "irc": "irc://irc.freenode.org/composer",
- "issues": "https://github.com/composer/xdebug-handler/issues"
- },
- "require": {
- "php": "^5.3.2 || ^7.0 || ^8.0",
- "psr/log": "^1 || ^2 || ^3"
- },
- "require-dev": {
- "symfony/phpunit-bridge": "^4.2 || ^5",
- "phpstan/phpstan": "^0.12.55"
- },
- "autoload": {
- "psr-4": {
- "Composer\\XdebugHandler\\": "src"
- }
- },
- "autoload-dev": {
- "psr-4": {
- "Composer\\XdebugHandler\\": "tests"
- }
- },
- "scripts": {
- "test": "vendor/bin/simple-phpunit",
- "phpstan": "vendor/bin/phpstan analyse"
- }
-}
diff --git a/vendor/composer/xdebug-handler/src/PhpConfig.php b/vendor/composer/xdebug-handler/src/PhpConfig.php
deleted file mode 100644
index c61cd7cf..00000000
--- a/vendor/composer/xdebug-handler/src/PhpConfig.php
+++ /dev/null
@@ -1,84 +0,0 @@
-
- *
- * For the full copyright and license information, please view
- * the LICENSE file that was distributed with this source code.
- */
-
-namespace Composer\XdebugHandler;
-
-/**
- * @author John Stevenson
- */
-class PhpConfig
-{
- /**
- * Use the original PHP configuration
- *
- * @return array PHP cli options
- */
- public function useOriginal()
- {
- $this->getDataAndReset();
- return array();
- }
-
- /**
- * Use standard restart settings
- *
- * @return array PHP cli options
- */
- public function useStandard()
- {
- if ($data = $this->getDataAndReset()) {
- return array('-n', '-c', $data['tmpIni']);
- }
-
- return array();
- }
-
- /**
- * Use environment variables to persist settings
- *
- * @return array PHP cli options
- */
- public function usePersistent()
- {
- if ($data = $this->getDataAndReset()) {
- $this->updateEnv('PHPRC', $data['tmpIni']);
- $this->updateEnv('PHP_INI_SCAN_DIR', '');
- }
-
- return array();
- }
-
- /**
- * Returns restart data if available and resets the environment
- *
- * @return array|null
- */
- private function getDataAndReset()
- {
- if ($data = XdebugHandler::getRestartSettings()) {
- $this->updateEnv('PHPRC', $data['phprc']);
- $this->updateEnv('PHP_INI_SCAN_DIR', $data['scanDir']);
- }
-
- return $data;
- }
-
- /**
- * Updates a restart settings value in the environment
- *
- * @param string $name
- * @param string|false $value
- */
- private function updateEnv($name, $value)
- {
- Process::setEnv($name, false !== $value ? $value : null);
- }
-}
diff --git a/vendor/composer/xdebug-handler/src/Process.php b/vendor/composer/xdebug-handler/src/Process.php
deleted file mode 100644
index c60dff10..00000000
--- a/vendor/composer/xdebug-handler/src/Process.php
+++ /dev/null
@@ -1,114 +0,0 @@
-
- *
- * For the full copyright and license information, please view
- * the LICENSE file that was distributed with this source code.
- */
-
-namespace Composer\XdebugHandler;
-
-/**
- * Process utility functions
- *
- * @author John Stevenson
- */
-class Process
-{
- /**
- * Escapes a string to be used as a shell argument.
- *
- * From https://github.com/johnstevenson/winbox-args
- * MIT Licensed (c) John Stevenson
- *
- * @param string $arg The argument to be escaped
- * @param bool $meta Additionally escape cmd.exe meta characters
- * @param bool $module The argument is the module to invoke
- *
- * @return string The escaped argument
- */
- public static function escape($arg, $meta = true, $module = false)
- {
- if (!defined('PHP_WINDOWS_VERSION_BUILD')) {
- return "'".str_replace("'", "'\\''", $arg)."'";
- }
-
- $quote = strpbrk($arg, " \t") !== false || $arg === '';
-
- $arg = preg_replace('/(\\\\*)"/', '$1$1\\"', $arg, -1, $dquotes);
-
- if ($meta) {
- $meta = $dquotes || preg_match('/%[^%]+%/', $arg);
-
- if (!$meta) {
- $quote = $quote || strpbrk($arg, '^&|<>()') !== false;
- } elseif ($module && !$dquotes && $quote) {
- $meta = false;
- }
- }
-
- if ($quote) {
- $arg = '"'.preg_replace('/(\\\\*)$/', '$1$1', $arg).'"';
- }
-
- if ($meta) {
- $arg = preg_replace('/(["^&|<>()%])/', '^$1', $arg);
- }
-
- return $arg;
- }
-
- /**
- * Escapes an array of arguments that make up a shell command
- *
- * @param array $args Argument list, with the module name first
- *
- * @return string The escaped command line
- */
- public static function escapeShellCommand(array $args)
- {
- $cmd = self::escape(array_shift($args), true, true);
- foreach ($args as $arg) {
- $cmd .= ' '.self::escape($arg);
- }
-
- return $cmd;
- }
-
- /**
- * Makes putenv environment changes available in $_SERVER and $_ENV
- *
- * @param string $name
- * @param string|null $value A null value unsets the variable
- *
- * @return bool Whether the environment variable was set
- */
- public static function setEnv($name, $value = null)
- {
- $unset = null === $value;
-
- if (!putenv($unset ? $name : $name.'='.$value)) {
- return false;
- }
-
- if ($unset) {
- unset($_SERVER[$name]);
- } else {
- $_SERVER[$name] = $value;
- }
-
- // Update $_ENV if it is being used
- if (false !== stripos((string) ini_get('variables_order'), 'E')) {
- if ($unset) {
- unset($_ENV[$name]);
- } else {
- $_ENV[$name] = $value;
- }
- }
-
- return true;
- }
-}
diff --git a/vendor/composer/xdebug-handler/src/Status.php b/vendor/composer/xdebug-handler/src/Status.php
deleted file mode 100644
index b3dcb87e..00000000
--- a/vendor/composer/xdebug-handler/src/Status.php
+++ /dev/null
@@ -1,169 +0,0 @@
-
- *
- * For the full copyright and license information, please view
- * the LICENSE file that was distributed with this source code.
- */
-
-namespace Composer\XdebugHandler;
-
-use Psr\Log\LoggerInterface;
-use Psr\Log\LogLevel;
-
-/**
- * @author John Stevenson
- * @internal
- */
-class Status
-{
- const ENV_RESTART = 'XDEBUG_HANDLER_RESTART';
- const CHECK = 'Check';
- const ERROR = 'Error';
- const INFO = 'Info';
- const NORESTART = 'NoRestart';
- const RESTART = 'Restart';
- const RESTARTING = 'Restarting';
- const RESTARTED = 'Restarted';
-
- private $debug;
- private $envAllowXdebug;
- private $loaded;
- private $logger;
- private $modeOff;
- private $time;
-
- /**
- * Constructor
- *
- * @param string $envAllowXdebug Prefixed _ALLOW_XDEBUG name
- * @param bool $debug Whether debug output is required
- */
- public function __construct($envAllowXdebug, $debug)
- {
- $start = getenv(self::ENV_RESTART);
- Process::setEnv(self::ENV_RESTART);
- $this->time = $start ? round((microtime(true) - $start) * 1000) : 0;
-
- $this->envAllowXdebug = $envAllowXdebug;
- $this->debug = $debug && defined('STDERR');
- }
-
- /**
- * @param LoggerInterface $logger
- */
- public function setLogger(LoggerInterface $logger)
- {
- $this->logger = $logger;
- }
-
- /**
- * Calls a handler method to report a message
- *
- * @param string $op The handler constant
- * @param null|string $data Data required by the handler
- */
- public function report($op, $data)
- {
- if ($this->logger || $this->debug) {
- call_user_func(array($this, 'report'.$op), $data);
- }
- }
-
- /**
- * Outputs a status message
- *
- * @param string $text
- * @param string $level
- */
- private function output($text, $level = null)
- {
- if ($this->logger) {
- $this->logger->log($level ?: LogLevel::DEBUG, $text);
- }
-
- if ($this->debug) {
- fwrite(STDERR, sprintf('xdebug-handler[%d] %s', getmypid(), $text.PHP_EOL));
- }
- }
-
- private function reportCheck($loaded)
- {
- list($version, $mode) = explode('|', $loaded);
-
- if ($version) {
- $this->loaded = '('.$version.')'.($mode ? ' mode='.$mode : '');
- }
- $this->modeOff = $mode === 'off';
- $this->output('Checking '.$this->envAllowXdebug);
- }
-
- private function reportError($error)
- {
- $this->output(sprintf('No restart (%s)', $error), LogLevel::WARNING);
- }
-
- private function reportInfo($info)
- {
- $this->output($info);
- }
-
- private function reportNoRestart()
- {
- $this->output($this->getLoadedMessage());
-
- if ($this->loaded) {
- $text = sprintf('No restart (%s)', $this->getEnvAllow());
- if (!getenv($this->envAllowXdebug)) {
- $text .= ' Allowed by '.($this->modeOff ? 'mode' : 'application');
- }
- $this->output($text);
- }
- }
-
- private function reportRestart()
- {
- $this->output($this->getLoadedMessage());
- Process::setEnv(self::ENV_RESTART, (string) microtime(true));
- }
-
- private function reportRestarted()
- {
- $loaded = $this->getLoadedMessage();
- $text = sprintf('Restarted (%d ms). %s', $this->time, $loaded);
- $level = $this->loaded ? LogLevel::WARNING : null;
- $this->output($text, $level);
- }
-
- private function reportRestarting($command)
- {
- $text = sprintf('Process restarting (%s)', $this->getEnvAllow());
- $this->output($text);
- $text = 'Running '.$command;
- $this->output($text);
- }
-
- /**
- * Returns the _ALLOW_XDEBUG environment variable as name=value
- *
- * @return string
- */
- private function getEnvAllow()
- {
- return $this->envAllowXdebug.'='.getenv($this->envAllowXdebug);
- }
-
- /**
- * Returns the Xdebug status and version
- *
- * @return string
- */
- private function getLoadedMessage()
- {
- $loaded = $this->loaded ? sprintf('loaded %s', $this->loaded) : 'not loaded';
- return 'The Xdebug extension is '.$loaded;
- }
-}
diff --git a/vendor/composer/xdebug-handler/src/XdebugHandler.php b/vendor/composer/xdebug-handler/src/XdebugHandler.php
deleted file mode 100644
index cd1a7383..00000000
--- a/vendor/composer/xdebug-handler/src/XdebugHandler.php
+++ /dev/null
@@ -1,649 +0,0 @@
-
- *
- * For the full copyright and license information, please view
- * the LICENSE file that was distributed with this source code.
- */
-
-namespace Composer\XdebugHandler;
-
-use Psr\Log\LoggerInterface;
-
-/**
- * @author John Stevenson
- */
-class XdebugHandler
-{
- const SUFFIX_ALLOW = '_ALLOW_XDEBUG';
- const SUFFIX_INIS = '_ORIGINAL_INIS';
- const RESTART_ID = 'internal';
- const RESTART_SETTINGS = 'XDEBUG_HANDLER_SETTINGS';
- const DEBUG = 'XDEBUG_HANDLER_DEBUG';
-
- /** @var string|null */
- protected $tmpIni;
-
- private static $inRestart;
- private static $name;
- private static $skipped;
- private static $xdebugActive;
-
- private $cli;
- private $debug;
- private $envAllowXdebug;
- private $envOriginalInis;
- private $loaded;
- private $mode;
- private $persistent;
- private $script;
- /** @var Status|null */
- private $statusWriter;
-
- /**
- * Constructor
- *
- * The $envPrefix is used to create distinct environment variables. It is
- * uppercased and prepended to the default base values. For example 'myapp'
- * would result in MYAPP_ALLOW_XDEBUG and MYAPP_ORIGINAL_INIS.
- *
- * @param string $envPrefix Value used in environment variables
- * @throws \RuntimeException If the parameter is invalid
- */
- public function __construct($envPrefix)
- {
- if (!is_string($envPrefix) || empty($envPrefix)) {
- throw new \RuntimeException('Invalid constructor parameter');
- }
-
- self::$name = strtoupper($envPrefix);
- $this->envAllowXdebug = self::$name.self::SUFFIX_ALLOW;
- $this->envOriginalInis = self::$name.self::SUFFIX_INIS;
-
- if (extension_loaded('xdebug')) {
- $this->loaded = phpversion('xdebug') ?: 'unknown';
-
- if (version_compare($this->loaded, '3.1', '>=')) {
- /** @phpstan-ignore-next-line */
- $modes = xdebug_info('mode');
- $this->mode = empty($modes) ? 'off' : implode(',', $modes);
- } elseif (false !== ($mode = ini_get('xdebug.mode'))) {
- $this->mode = getenv('XDEBUG_MODE') ?: ($mode ?: 'off');
- if (preg_match('/^,+$/', str_replace(' ', '', $this->mode))) {
- $this->mode = 'off';
- }
- }
- }
-
- self::$xdebugActive = $this->loaded && $this->mode !== 'off';
-
- if ($this->cli = PHP_SAPI === 'cli') {
- $this->debug = getenv(self::DEBUG);
- }
-
- $this->statusWriter = new Status($this->envAllowXdebug, (bool) $this->debug);
- }
-
- /**
- * Activates status message output to a PSR3 logger
- *
- * @param LoggerInterface $logger
- *
- * @return $this
- */
- public function setLogger(LoggerInterface $logger)
- {
- $this->statusWriter->setLogger($logger);
- return $this;
- }
-
- /**
- * Sets the main script location if it cannot be called from argv
- *
- * @param string $script
- *
- * @return $this
- */
- public function setMainScript($script)
- {
- $this->script = $script;
- return $this;
- }
-
- /**
- * Persist the settings to keep Xdebug out of sub-processes
- *
- * @return $this
- */
- public function setPersistent()
- {
- $this->persistent = true;
- return $this;
- }
-
- /**
- * Checks if Xdebug is loaded and the process needs to be restarted
- *
- * This behaviour can be disabled by setting the MYAPP_ALLOW_XDEBUG
- * environment variable to 1. This variable is used internally so that
- * the restarted process is created only once.
- */
- public function check()
- {
- $this->notify(Status::CHECK, $this->loaded.'|'.$this->mode);
- $envArgs = explode('|', (string) getenv($this->envAllowXdebug));
-
- if (empty($envArgs[0]) && $this->requiresRestart(self::$xdebugActive)) {
- // Restart required
- $this->notify(Status::RESTART);
-
- if ($this->prepareRestart()) {
- $command = $this->getCommand();
- $this->restart($command);
- }
- return;
- }
-
- if (self::RESTART_ID === $envArgs[0] && count($envArgs) === 5) {
- // Restarted, so unset environment variable and use saved values
- $this->notify(Status::RESTARTED);
-
- Process::setEnv($this->envAllowXdebug);
- self::$inRestart = true;
-
- if (!$this->loaded) {
- // Skipped version is only set if Xdebug is not loaded
- self::$skipped = $envArgs[1];
- }
-
- $this->tryEnableSignals();
-
- // Put restart settings in the environment
- $this->setEnvRestartSettings($envArgs);
- return;
- }
-
- $this->notify(Status::NORESTART);
-
- if ($settings = self::getRestartSettings()) {
- // Called with existing settings, so sync our settings
- $this->syncSettings($settings);
- }
- }
-
- /**
- * Returns an array of php.ini locations with at least one entry
- *
- * The equivalent of calling php_ini_loaded_file then php_ini_scanned_files.
- * The loaded ini location is the first entry and may be empty.
- *
- * @return array
- */
- public static function getAllIniFiles()
- {
- if (!empty(self::$name)) {
- $env = getenv(self::$name.self::SUFFIX_INIS);
-
- if (false !== $env) {
- return explode(PATH_SEPARATOR, $env);
- }
- }
-
- $paths = array((string) php_ini_loaded_file());
-
- if ($scanned = php_ini_scanned_files()) {
- $paths = array_merge($paths, array_map('trim', explode(',', $scanned)));
- }
-
- return $paths;
- }
-
- /**
- * Returns an array of restart settings or null
- *
- * Settings will be available if the current process was restarted, or
- * called with the settings from an existing restart.
- *
- * @return array|null
- */
- public static function getRestartSettings()
- {
- $envArgs = explode('|', (string) getenv(self::RESTART_SETTINGS));
-
- if (count($envArgs) !== 6
- || (!self::$inRestart && php_ini_loaded_file() !== $envArgs[0])) {
- return null;
- }
-
- return array(
- 'tmpIni' => $envArgs[0],
- 'scannedInis' => (bool) $envArgs[1],
- 'scanDir' => '*' === $envArgs[2] ? false : $envArgs[2],
- 'phprc' => '*' === $envArgs[3] ? false : $envArgs[3],
- 'inis' => explode(PATH_SEPARATOR, $envArgs[4]),
- 'skipped' => $envArgs[5],
- );
- }
-
- /**
- * Returns the Xdebug version that triggered a successful restart
- *
- * @return string
- */
- public static function getSkippedVersion()
- {
- return (string) self::$skipped;
- }
-
- /**
- * Returns whether Xdebug is loaded and active
- *
- * true: if Xdebug is loaded and is running in an active mode.
- * false: if Xdebug is not loaded, or it is running with xdebug.mode=off.
- *
- * @return bool
- */
- public static function isXdebugActive()
- {
- return self::$xdebugActive;
- }
-
- /**
- * Allows an extending class to decide if there should be a restart
- *
- * The default is to restart if Xdebug is loaded and its mode is not "off".
- * Do not typehint for 1.x compatibility.
- *
- * @param bool $default The default behaviour
- *
- * @return bool Whether the process should restart
- */
- protected function requiresRestart($default)
- {
- return $default;
- }
-
- /**
- * Allows an extending class to access the tmpIni
- *
- * Do not typehint for 1.x compatibility
- *
- * @param array $command
- */
- protected function restart($command)
- {
- $this->doRestart($command);
- }
-
- /**
- * Executes the restarted command then deletes the tmp ini
- *
- * @param array $command
- */
- private function doRestart(array $command)
- {
- $this->tryEnableSignals();
- $this->notify(Status::RESTARTING, implode(' ', $command));
-
- if (PHP_VERSION_ID >= 70400) {
- $cmd = $command;
- } else {
- $cmd = Process::escapeShellCommand($command);
- if (defined('PHP_WINDOWS_VERSION_BUILD')) {
- // Outer quotes required on cmd string below PHP 8
- $cmd = '"'.$cmd.'"';
- }
- }
-
- $process = proc_open($cmd, array(), $pipes);
- if (is_resource($process)) {
- $exitCode = proc_close($process);
- }
-
- if (!isset($exitCode)) {
- // Unlikely that php or the default shell cannot be invoked
- $this->notify(Status::ERROR, 'Unable to restart process');
- $exitCode = -1;
- } else {
- $this->notify(Status::INFO, 'Restarted process exited '.$exitCode);
- }
-
- if ($this->debug === '2') {
- $this->notify(Status::INFO, 'Temp ini saved: '.$this->tmpIni);
- } else {
- @unlink($this->tmpIni);
- }
-
- exit($exitCode);
- }
-
- /**
- * Returns true if everything was written for the restart
- *
- * If any of the following fails (however unlikely) we must return false to
- * stop potential recursion:
- * - tmp ini file creation
- * - environment variable creation
- *
- * @return bool
- */
- private function prepareRestart()
- {
- $error = '';
- $iniFiles = self::getAllIniFiles();
- $scannedInis = count($iniFiles) > 1;
- $tmpDir = sys_get_temp_dir();
-
- if (!$this->cli) {
- $error = 'Unsupported SAPI: '.PHP_SAPI;
- } elseif (!defined('PHP_BINARY')) {
- $error = 'PHP version is too old: '.PHP_VERSION;
- } elseif (!$this->checkConfiguration($info)) {
- $error = $info;
- } elseif (!$this->checkScanDirConfig()) {
- $error = 'PHP version does not report scanned inis: '.PHP_VERSION;
- } elseif (!$this->checkMainScript()) {
- $error = 'Unable to access main script: '.$this->script;
- } elseif (!$this->writeTmpIni($iniFiles, $tmpDir, $error)) {
- $error = $error ?: 'Unable to create temp ini file at: '.$tmpDir;
- } elseif (!$this->setEnvironment($scannedInis, $iniFiles)) {
- $error = 'Unable to set environment variables';
- }
-
- if ($error) {
- $this->notify(Status::ERROR, $error);
- }
-
- return empty($error);
- }
-
- /**
- * Returns true if the tmp ini file was written
- *
- * @param array $iniFiles All ini files used in the current process
- * @param string $tmpDir The system temporary directory
- * @param string $error Set by method if ini file cannot be read
- *
- * @return bool
- */
- private function writeTmpIni(array $iniFiles, $tmpDir, &$error)
- {
- if (!$this->tmpIni = @tempnam($tmpDir, '')) {
- return false;
- }
-
- // $iniFiles has at least one item and it may be empty
- if (empty($iniFiles[0])) {
- array_shift($iniFiles);
- }
-
- $content = '';
- $sectionRegex = '/^\s*\[(?:PATH|HOST)\s*=/mi';
- $xdebugRegex = '/^\s*(zend_extension\s*=.*xdebug.*)$/mi';
-
- foreach ($iniFiles as $file) {
- // Check for inaccessible ini files
- if (($data = @file_get_contents($file)) === false) {
- $error = 'Unable to read ini: '.$file;
- return false;
- }
- // Check and remove directives after HOST and PATH sections
- if (preg_match($sectionRegex, $data, $matches, PREG_OFFSET_CAPTURE)) {
- $data = substr($data, 0, $matches[0][1]);
- }
- $content .= preg_replace($xdebugRegex, ';$1', $data).PHP_EOL;
- }
-
- // Merge loaded settings into our ini content, if it is valid
- if ($config = parse_ini_string($content)) {
- $loaded = ini_get_all(null, false);
- $content .= $this->mergeLoadedConfig($loaded, $config);
- }
-
- // Work-around for https://bugs.php.net/bug.php?id=75932
- $content .= 'opcache.enable_cli=0'.PHP_EOL;
-
- return @file_put_contents($this->tmpIni, $content);
- }
-
- /**
- * Returns the command line arguments for the restart
- *
- * @return array
- */
- private function getCommand()
- {
- $php = array(PHP_BINARY);
- $args = array_slice($_SERVER['argv'], 1);
-
- if (!$this->persistent) {
- // Use command-line options
- array_push($php, '-n', '-c', $this->tmpIni);
- }
-
- return array_merge($php, array($this->script), $args);
- }
-
- /**
- * Returns true if the restart environment variables were set
- *
- * No need to update $_SERVER since this is set in the restarted process.
- *
- * @param bool $scannedInis Whether there were scanned ini files
- * @param array $iniFiles All ini files used in the current process
- *
- * @return bool
- */
- private function setEnvironment($scannedInis, array $iniFiles)
- {
- $scanDir = getenv('PHP_INI_SCAN_DIR');
- $phprc = getenv('PHPRC');
-
- // Make original inis available to restarted process
- if (!putenv($this->envOriginalInis.'='.implode(PATH_SEPARATOR, $iniFiles))) {
- return false;
- }
-
- if ($this->persistent) {
- // Use the environment to persist the settings
- if (!putenv('PHP_INI_SCAN_DIR=') || !putenv('PHPRC='.$this->tmpIni)) {
- return false;
- }
- }
-
- // Flag restarted process and save values for it to use
- $envArgs = array(
- self::RESTART_ID,
- $this->loaded,
- (int) $scannedInis,
- false === $scanDir ? '*' : $scanDir,
- false === $phprc ? '*' : $phprc,
- );
-
- return putenv($this->envAllowXdebug.'='.implode('|', $envArgs));
- }
-
- /**
- * Logs status messages
- *
- * @param string $op Status handler constant
- * @param null|string $data Optional data
- */
- private function notify($op, $data = null)
- {
- $this->statusWriter->report($op, $data);
- }
-
- /**
- * Returns default, changed and command-line ini settings
- *
- * @param array $loadedConfig All current ini settings
- * @param array $iniConfig Settings from user ini files
- *
- * @return string
- */
- private function mergeLoadedConfig(array $loadedConfig, array $iniConfig)
- {
- $content = '';
-
- foreach ($loadedConfig as $name => $value) {
- // Value will either be null, string or array (HHVM only)
- if (!is_string($value)
- || strpos($name, 'xdebug') === 0
- || $name === 'apc.mmap_file_mask') {
- continue;
- }
-
- if (!isset($iniConfig[$name]) || $iniConfig[$name] !== $value) {
- // Double-quote escape each value
- $content .= $name.'="'.addcslashes($value, '\\"').'"'.PHP_EOL;
- }
- }
-
- return $content;
- }
-
- /**
- * Returns true if the script name can be used
- *
- * @return bool
- */
- private function checkMainScript()
- {
- if (null !== $this->script) {
- // Allow an application to set -- for standard input
- return file_exists($this->script) || '--' === $this->script;
- }
-
- if (file_exists($this->script = $_SERVER['argv'][0])) {
- return true;
- }
-
- // Use a backtrace to resolve Phar and chdir issues
- $options = PHP_VERSION_ID >= 50306 ? DEBUG_BACKTRACE_IGNORE_ARGS : false;
- $trace = debug_backtrace($options);
-
- if (($main = end($trace)) && isset($main['file'])) {
- return file_exists($this->script = $main['file']);
- }
-
- return false;
- }
-
- /**
- * Adds restart settings to the environment
- *
- * @param string[] $envArgs
- */
- private function setEnvRestartSettings($envArgs)
- {
- $settings = array(
- php_ini_loaded_file(),
- $envArgs[2],
- $envArgs[3],
- $envArgs[4],
- getenv($this->envOriginalInis),
- self::$skipped,
- );
-
- Process::setEnv(self::RESTART_SETTINGS, implode('|', $settings));
- }
-
- /**
- * Syncs settings and the environment if called with existing settings
- *
- * @param array $settings
- */
- private function syncSettings(array $settings)
- {
- if (false === getenv($this->envOriginalInis)) {
- // Called by another app, so make original inis available
- Process::setEnv($this->envOriginalInis, implode(PATH_SEPARATOR, $settings['inis']));
- }
-
- self::$skipped = $settings['skipped'];
- $this->notify(Status::INFO, 'Process called with existing restart settings');
- }
-
- /**
- * Returns true if there are scanned inis and PHP is able to report them
- *
- * php_ini_scanned_files will fail when PHP_CONFIG_FILE_SCAN_DIR is empty.
- * Fixed in 7.1.13 and 7.2.1
- *
- * @return bool
- */
- private function checkScanDirConfig()
- {
- return !(getenv('PHP_INI_SCAN_DIR')
- && !PHP_CONFIG_FILE_SCAN_DIR
- && (PHP_VERSION_ID < 70113
- || PHP_VERSION_ID === 70200));
- }
-
- /**
- * Returns true if there are no known configuration issues
- *
- * @param string $info Set by method
- * @return bool
- */
- private function checkConfiguration(&$info)
- {
- if (!function_exists('proc_open')) {
- $info = 'proc_open function is disabled';
- return false;
- }
-
- if (extension_loaded('uopz') && !ini_get('uopz.disable')) {
- // uopz works at opcode level and disables exit calls
- if (function_exists('uopz_allow_exit')) {
- @uopz_allow_exit(true);
- } else {
- $info = 'uopz extension is not compatible';
- return false;
- }
- }
-
-
- $workingDir = getcwd();
- if (0 === strpos($workingDir, '\\\\')) {
- if (defined('PHP_WINDOWS_VERSION_BUILD') && PHP_VERSION_ID < 70400) {
- $info = 'cmd.exe does not support UNC paths: '.$workingDir;
- return false;
- }
- }
-
- return true;
- }
-
- /**
- * Enables async signals and control interrupts in the restarted process
- *
- * Available on Unix PHP 7.1+ with the pcntl extension and Windows PHP 7.4+.
- */
- private function tryEnableSignals()
- {
- if (function_exists('pcntl_async_signals') && function_exists('pcntl_signal')) {
- pcntl_async_signals(true);
- $message = 'Async signals enabled';
-
- if (!self::$inRestart) {
- // Restarting, so ignore SIGINT in parent
- pcntl_signal(SIGINT, SIG_IGN);
- } elseif (is_int(pcntl_signal_get_handler(SIGINT))) {
- // Restarted, no handler set so force default action
- pcntl_signal(SIGINT, SIG_DFL);
- }
- }
-
- if (!self::$inRestart && function_exists('sapi_windows_set_ctrl_handler')) {
- // Restarting, so set a handler to ignore CTRL events in the parent.
- // This ensures that CTRL+C events will be available in the child
- // process without having to enable them there, which is unreliable.
- sapi_windows_set_ctrl_handler(function ($evt) {});
- }
- }
-}
diff --git a/vendor/doctrine/inflector/LICENSE b/vendor/doctrine/inflector/LICENSE
deleted file mode 100644
index 8c38cc1b..00000000
--- a/vendor/doctrine/inflector/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2006-2015 Doctrine Project
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/vendor/doctrine/inflector/README.md b/vendor/doctrine/inflector/README.md
deleted file mode 100644
index 6e3a97f7..00000000
--- a/vendor/doctrine/inflector/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Doctrine Inflector
-
-Doctrine Inflector is a small library that can perform string manipulations
-with regard to uppercase/lowercase and singular/plural forms of words.
-
-[](https://github.com/doctrine/inflector/actions?query=workflow%3A%22Continuous+Integration%22+branch%3A4.0.x)
-[](https://codecov.io/gh/doctrine/inflector/branch/2.0.x)
diff --git a/vendor/doctrine/inflector/composer.json b/vendor/doctrine/inflector/composer.json
deleted file mode 100644
index f08fdc3b..00000000
--- a/vendor/doctrine/inflector/composer.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "name": "doctrine/inflector",
- "type": "library",
- "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.",
- "keywords": ["php", "strings", "words", "manipulation", "inflector", "inflection", "uppercase", "lowercase", "singular", "plural"],
- "homepage": "https://www.doctrine-project.org/projects/inflector.html",
- "license": "MIT",
- "authors": [
- {"name": "Guilherme Blanco", "email": "guilhermeblanco@gmail.com"},
- {"name": "Roman Borschel", "email": "roman@code-factory.org"},
- {"name": "Benjamin Eberlei", "email": "kontakt@beberlei.de"},
- {"name": "Jonathan Wage", "email": "jonwage@gmail.com"},
- {"name": "Johannes Schmitt", "email": "schmittjoh@gmail.com"}
- ],
- "require": {
- "php": "^7.2 || ^8.0"
- },
- "require-dev": {
- "doctrine/coding-standard": "^8.2",
- "phpstan/phpstan": "^0.12",
- "phpstan/phpstan-phpunit": "^0.12",
- "phpstan/phpstan-strict-rules": "^0.12",
- "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0",
- "vimeo/psalm": "^4.10"
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Inflector\\": "lib/Doctrine/Inflector"
- }
- },
- "autoload-dev": {
- "psr-4": {
- "Doctrine\\Tests\\Inflector\\": "tests/Doctrine/Tests/Inflector"
- }
- }
-}
diff --git a/vendor/doctrine/inflector/docs/en/index.rst b/vendor/doctrine/inflector/docs/en/index.rst
deleted file mode 100644
index 29866f4d..00000000
--- a/vendor/doctrine/inflector/docs/en/index.rst
+++ /dev/null
@@ -1,226 +0,0 @@
-Introduction
-============
-
-The Doctrine Inflector has methods for inflecting text. The features include pluralization,
-singularization, converting between camelCase and under_score and capitalizing
-words.
-
-Installation
-============
-
-You can install the Inflector with composer:
-
-.. code-block:: console
-
- $ composer require doctrine/inflector
-
-Usage
-=====
-
-Using the inflector is easy, you can create a new ``Doctrine\Inflector\Inflector`` instance by using
-the ``Doctrine\Inflector\InflectorFactory`` class:
-
-.. code-block:: php
-
- use Doctrine\Inflector\InflectorFactory;
-
- $inflector = InflectorFactory::create()->build();
-
-By default it will create an English inflector. If you want to use another language, just pass the language
-you want to create an inflector for to the ``createForLanguage()`` method:
-
-.. code-block:: php
-
- use Doctrine\Inflector\InflectorFactory;
- use Doctrine\Inflector\Language;
-
- $inflector = InflectorFactory::createForLanguage(Language::SPANISH)->build();
-
-The supported languages are as follows:
-
-- ``Language::ENGLISH``
-- ``Language::FRENCH``
-- ``Language::NORWEGIAN_BOKMAL``
-- ``Language::PORTUGUESE``
-- ``Language::SPANISH``
-- ``Language::TURKISH``
-
-If you want to manually construct the inflector instead of using a factory, you can do so like this:
-
-.. code-block:: php
-
- use Doctrine\Inflector\CachedWordInflector;
- use Doctrine\Inflector\RulesetInflector;
- use Doctrine\Inflector\Rules\English;
-
- $inflector = new Inflector(
- new CachedWordInflector(new RulesetInflector(
- English\Rules::getSingularRuleset()
- )),
- new CachedWordInflector(new RulesetInflector(
- English\Rules::getPluralRuleset()
- ))
- );
-
-Adding Languages
-----------------
-
-If you are interested in adding support for your language, take a look at the other languages defined in the
-``Doctrine\Inflector\Rules`` namespace and the tests located in ``Doctrine\Tests\Inflector\Rules``. You can copy
-one of the languages and update the rules for your language.
-
-Once you have done this, send a pull request to the ``doctrine/inflector`` repository with the additions.
-
-Custom Setup
-============
-
-If you want to setup custom singular and plural rules, you can configure these in the factory:
-
-.. code-block:: php
-
- use Doctrine\Inflector\InflectorFactory;
- use Doctrine\Inflector\Rules\Pattern;
- use Doctrine\Inflector\Rules\Patterns;
- use Doctrine\Inflector\Rules\Ruleset;
- use Doctrine\Inflector\Rules\Substitution;
- use Doctrine\Inflector\Rules\Substitutions;
- use Doctrine\Inflector\Rules\Transformation;
- use Doctrine\Inflector\Rules\Transformations;
- use Doctrine\Inflector\Rules\Word;
-
- $inflector = InflectorFactory::create()
- ->withSingularRules(
- new Ruleset(
- new Transformations(
- new Transformation(new Pattern('/^(bil)er$/i'), '\1'),
- new Transformation(new Pattern('/^(inflec|contribu)tors$/i'), '\1ta')
- ),
- new Patterns(new Pattern('singulars')),
- new Substitutions(new Substitution(new Word('spins'), new Word('spinor')))
- )
- )
- ->withPluralRules(
- new Ruleset(
- new Transformations(
- new Transformation(new Pattern('^(bil)er$'), '\1'),
- new Transformation(new Pattern('^(inflec|contribu)tors$'), '\1ta')
- ),
- new Patterns(new Pattern('noflect'), new Pattern('abtuse')),
- new Substitutions(
- new Substitution(new Word('amaze'), new Word('amazable')),
- new Substitution(new Word('phone'), new Word('phonezes'))
- )
- )
- )
- ->build();
-
-No operation inflector
-----------------------
-
-The ``Doctrine\Inflector\NoopWordInflector`` may be used to configure an inflector that doesn't perform any operation for
-pluralization and/or singularization. If will simply return the input as output.
-
-This is an implementation of the `Null Object design pattern `_.
-
-.. code-block:: php
-
- use Doctrine\Inflector\Inflector;
- use Doctrine\Inflector\NoopWordInflector;
-
- $inflector = new Inflector(new NoopWordInflector(), new NoopWordInflector());
-
-Tableize
-========
-
-Converts ``ModelName`` to ``model_name``:
-
-.. code-block:: php
-
- echo $inflector->tableize('ModelName'); // model_name
-
-Classify
-========
-
-Converts ``model_name`` to ``ModelName``:
-
-.. code-block:: php
-
- echo $inflector->classify('model_name'); // ModelName
-
-Camelize
-========
-
-This method uses `Classify`_ and then converts the first character to lowercase:
-
-.. code-block:: php
-
- echo $inflector->camelize('model_name'); // modelName
-
-Capitalize
-==========
-
-Takes a string and capitalizes all of the words, like PHP's built-in
-``ucwords`` function. This extends that behavior, however, by allowing the
-word delimiters to be configured, rather than only separating on
-whitespace.
-
-Here is an example:
-
-.. code-block:: php
-
- $string = 'top-o-the-morning to all_of_you!';
-
- echo $inflector->capitalize($string); // Top-O-The-Morning To All_of_you!
-
- echo $inflector->capitalize($string, '-_ '); // Top-O-The-Morning To All_Of_You!
-
-Pluralize
-=========
-
-Returns a word in plural form.
-
-.. code-block:: php
-
- echo $inflector->pluralize('browser'); // browsers
-
-Singularize
-===========
-
-Returns a word in singular form.
-
-.. code-block:: php
-
- echo $inflector->singularize('browsers'); // browser
-
-Urlize
-======
-
-Generate a URL friendly string from a string of text:
-
-.. code-block:: php
-
- echo $inflector->urlize('My first blog post'); // my-first-blog-post
-
-Unaccent
-========
-
-You can unaccent a string of text using the ``unaccent()`` method:
-
-.. code-block:: php
-
- echo $inflector->unaccent('año'); // ano
-
-Legacy API
-==========
-
-The API present in Inflector 1.x is still available, but will be deprecated in a future release and dropped for 3.0.
-Support for languages other than English is available in the 2.0 API only.
-
-Acknowledgements
-================
-
-The language rules in this library have been adapted from several different sources, including but not limited to:
-
-- `Ruby On Rails Inflector `_
-- `ICanBoogie Inflector `_
-- `CakePHP Inflector `_
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/CachedWordInflector.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/CachedWordInflector.php
deleted file mode 100644
index 2d529087..00000000
--- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/CachedWordInflector.php
+++ /dev/null
@@ -1,24 +0,0 @@
-wordInflector = $wordInflector;
- }
-
- public function inflect(string $word): string
- {
- return $this->cache[$word] ?? $this->cache[$word] = $this->wordInflector->inflect($word);
- }
-}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/GenericLanguageInflectorFactory.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/GenericLanguageInflectorFactory.php
deleted file mode 100644
index 166061d2..00000000
--- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/GenericLanguageInflectorFactory.php
+++ /dev/null
@@ -1,66 +0,0 @@
-singularRulesets[] = $this->getSingularRuleset();
- $this->pluralRulesets[] = $this->getPluralRuleset();
- }
-
- final public function build(): Inflector
- {
- return new Inflector(
- new CachedWordInflector(new RulesetInflector(
- ...$this->singularRulesets
- )),
- new CachedWordInflector(new RulesetInflector(
- ...$this->pluralRulesets
- ))
- );
- }
-
- final public function withSingularRules(?Ruleset $singularRules, bool $reset = false): LanguageInflectorFactory
- {
- if ($reset) {
- $this->singularRulesets = [];
- }
-
- if ($singularRules instanceof Ruleset) {
- array_unshift($this->singularRulesets, $singularRules);
- }
-
- return $this;
- }
-
- final public function withPluralRules(?Ruleset $pluralRules, bool $reset = false): LanguageInflectorFactory
- {
- if ($reset) {
- $this->pluralRulesets = [];
- }
-
- if ($pluralRules instanceof Ruleset) {
- array_unshift($this->pluralRulesets, $pluralRules);
- }
-
- return $this;
- }
-
- abstract protected function getSingularRuleset(): Ruleset;
-
- abstract protected function getPluralRuleset(): Ruleset;
-}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Inflector.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Inflector.php
deleted file mode 100644
index 610a4cf4..00000000
--- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Inflector.php
+++ /dev/null
@@ -1,507 +0,0 @@
- 'A',
- 'Á' => 'A',
- 'Â' => 'A',
- 'Ã' => 'A',
- 'Ä' => 'Ae',
- 'Æ' => 'Ae',
- 'Å' => 'Aa',
- 'æ' => 'a',
- 'Ç' => 'C',
- 'È' => 'E',
- 'É' => 'E',
- 'Ê' => 'E',
- 'Ë' => 'E',
- 'Ì' => 'I',
- 'Í' => 'I',
- 'Î' => 'I',
- 'Ï' => 'I',
- 'Ñ' => 'N',
- 'Ò' => 'O',
- 'Ó' => 'O',
- 'Ô' => 'O',
- 'Õ' => 'O',
- 'Ö' => 'Oe',
- 'Ù' => 'U',
- 'Ú' => 'U',
- 'Û' => 'U',
- 'Ü' => 'Ue',
- 'Ý' => 'Y',
- 'ß' => 'ss',
- 'à' => 'a',
- 'á' => 'a',
- 'â' => 'a',
- 'ã' => 'a',
- 'ä' => 'ae',
- 'å' => 'aa',
- 'ç' => 'c',
- 'è' => 'e',
- 'é' => 'e',
- 'ê' => 'e',
- 'ë' => 'e',
- 'ì' => 'i',
- 'í' => 'i',
- 'î' => 'i',
- 'ï' => 'i',
- 'ñ' => 'n',
- 'ò' => 'o',
- 'ó' => 'o',
- 'ô' => 'o',
- 'õ' => 'o',
- 'ö' => 'oe',
- 'ù' => 'u',
- 'ú' => 'u',
- 'û' => 'u',
- 'ü' => 'ue',
- 'ý' => 'y',
- 'ÿ' => 'y',
- 'Ā' => 'A',
- 'ā' => 'a',
- 'Ă' => 'A',
- 'ă' => 'a',
- 'Ą' => 'A',
- 'ą' => 'a',
- 'Ć' => 'C',
- 'ć' => 'c',
- 'Ĉ' => 'C',
- 'ĉ' => 'c',
- 'Ċ' => 'C',
- 'ċ' => 'c',
- 'Č' => 'C',
- 'č' => 'c',
- 'Ď' => 'D',
- 'ď' => 'd',
- 'Đ' => 'D',
- 'đ' => 'd',
- 'Ē' => 'E',
- 'ē' => 'e',
- 'Ĕ' => 'E',
- 'ĕ' => 'e',
- 'Ė' => 'E',
- 'ė' => 'e',
- 'Ę' => 'E',
- 'ę' => 'e',
- 'Ě' => 'E',
- 'ě' => 'e',
- 'Ĝ' => 'G',
- 'ĝ' => 'g',
- 'Ğ' => 'G',
- 'ğ' => 'g',
- 'Ġ' => 'G',
- 'ġ' => 'g',
- 'Ģ' => 'G',
- 'ģ' => 'g',
- 'Ĥ' => 'H',
- 'ĥ' => 'h',
- 'Ħ' => 'H',
- 'ħ' => 'h',
- 'Ĩ' => 'I',
- 'ĩ' => 'i',
- 'Ī' => 'I',
- 'ī' => 'i',
- 'Ĭ' => 'I',
- 'ĭ' => 'i',
- 'Į' => 'I',
- 'į' => 'i',
- 'İ' => 'I',
- 'ı' => 'i',
- 'IJ' => 'IJ',
- 'ij' => 'ij',
- 'Ĵ' => 'J',
- 'ĵ' => 'j',
- 'Ķ' => 'K',
- 'ķ' => 'k',
- 'ĸ' => 'k',
- 'Ĺ' => 'L',
- 'ĺ' => 'l',
- 'Ļ' => 'L',
- 'ļ' => 'l',
- 'Ľ' => 'L',
- 'ľ' => 'l',
- 'Ŀ' => 'L',
- 'ŀ' => 'l',
- 'Ł' => 'L',
- 'ł' => 'l',
- 'Ń' => 'N',
- 'ń' => 'n',
- 'Ņ' => 'N',
- 'ņ' => 'n',
- 'Ň' => 'N',
- 'ň' => 'n',
- 'ʼn' => 'N',
- 'Ŋ' => 'n',
- 'ŋ' => 'N',
- 'Ō' => 'O',
- 'ō' => 'o',
- 'Ŏ' => 'O',
- 'ŏ' => 'o',
- 'Ő' => 'O',
- 'ő' => 'o',
- 'Œ' => 'OE',
- 'œ' => 'oe',
- 'Ø' => 'O',
- 'ø' => 'o',
- 'Ŕ' => 'R',
- 'ŕ' => 'r',
- 'Ŗ' => 'R',
- 'ŗ' => 'r',
- 'Ř' => 'R',
- 'ř' => 'r',
- 'Ś' => 'S',
- 'ś' => 's',
- 'Ŝ' => 'S',
- 'ŝ' => 's',
- 'Ş' => 'S',
- 'ş' => 's',
- 'Š' => 'S',
- 'š' => 's',
- 'Ţ' => 'T',
- 'ţ' => 't',
- 'Ť' => 'T',
- 'ť' => 't',
- 'Ŧ' => 'T',
- 'ŧ' => 't',
- 'Ũ' => 'U',
- 'ũ' => 'u',
- 'Ū' => 'U',
- 'ū' => 'u',
- 'Ŭ' => 'U',
- 'ŭ' => 'u',
- 'Ů' => 'U',
- 'ů' => 'u',
- 'Ű' => 'U',
- 'ű' => 'u',
- 'Ų' => 'U',
- 'ų' => 'u',
- 'Ŵ' => 'W',
- 'ŵ' => 'w',
- 'Ŷ' => 'Y',
- 'ŷ' => 'y',
- 'Ÿ' => 'Y',
- 'Ź' => 'Z',
- 'ź' => 'z',
- 'Ż' => 'Z',
- 'ż' => 'z',
- 'Ž' => 'Z',
- 'ž' => 'z',
- 'ſ' => 's',
- '€' => 'E',
- '£' => '',
- ];
-
- /** @var WordInflector */
- private $singularizer;
-
- /** @var WordInflector */
- private $pluralizer;
-
- public function __construct(WordInflector $singularizer, WordInflector $pluralizer)
- {
- $this->singularizer = $singularizer;
- $this->pluralizer = $pluralizer;
- }
-
- /**
- * Converts a word into the format for a Doctrine table name. Converts 'ModelName' to 'model_name'.
- */
- public function tableize(string $word): string
- {
- $tableized = preg_replace('~(?<=\\w)([A-Z])~u', '_$1', $word);
-
- if ($tableized === null) {
- throw new RuntimeException(sprintf(
- 'preg_replace returned null for value "%s"',
- $word
- ));
- }
-
- return mb_strtolower($tableized);
- }
-
- /**
- * Converts a word into the format for a Doctrine class name. Converts 'table_name' to 'TableName'.
- */
- public function classify(string $word): string
- {
- return str_replace([' ', '_', '-'], '', ucwords($word, ' _-'));
- }
-
- /**
- * Camelizes a word. This uses the classify() method and turns the first character to lowercase.
- */
- public function camelize(string $word): string
- {
- return lcfirst($this->classify($word));
- }
-
- /**
- * Uppercases words with configurable delimiters between words.
- *
- * Takes a string and capitalizes all of the words, like PHP's built-in
- * ucwords function. This extends that behavior, however, by allowing the
- * word delimiters to be configured, rather than only separating on
- * whitespace.
- *
- * Here is an example:
- *
- * capitalize($string);
- * // Top-O-The-Morning To All_of_you!
- *
- * echo $inflector->capitalize($string, '-_ ');
- * // Top-O-The-Morning To All_Of_You!
- * ?>
- *
- *
- * @param string $string The string to operate on.
- * @param string $delimiters A list of word separators.
- *
- * @return string The string with all delimiter-separated words capitalized.
- */
- public function capitalize(string $string, string $delimiters = " \n\t\r\0\x0B-"): string
- {
- return ucwords($string, $delimiters);
- }
-
- /**
- * Checks if the given string seems like it has utf8 characters in it.
- *
- * @param string $string The string to check for utf8 characters in.
- */
- public function seemsUtf8(string $string): bool
- {
- for ($i = 0; $i < strlen($string); $i++) {
- if (ord($string[$i]) < 0x80) {
- continue; // 0bbbbbbb
- }
-
- if ((ord($string[$i]) & 0xE0) === 0xC0) {
- $n = 1; // 110bbbbb
- } elseif ((ord($string[$i]) & 0xF0) === 0xE0) {
- $n = 2; // 1110bbbb
- } elseif ((ord($string[$i]) & 0xF8) === 0xF0) {
- $n = 3; // 11110bbb
- } elseif ((ord($string[$i]) & 0xFC) === 0xF8) {
- $n = 4; // 111110bb
- } elseif ((ord($string[$i]) & 0xFE) === 0xFC) {
- $n = 5; // 1111110b
- } else {
- return false; // Does not match any model
- }
-
- for ($j = 0; $j < $n; $j++) { // n bytes matching 10bbbbbb follow ?
- if (++$i === strlen($string) || ((ord($string[$i]) & 0xC0) !== 0x80)) {
- return false;
- }
- }
- }
-
- return true;
- }
-
- /**
- * Remove any illegal characters, accents, etc.
- *
- * @param string $string String to unaccent
- *
- * @return string Unaccented string
- */
- public function unaccent(string $string): string
- {
- if (preg_match('/[\x80-\xff]/', $string) === false) {
- return $string;
- }
-
- if ($this->seemsUtf8($string)) {
- $string = strtr($string, self::ACCENTED_CHARACTERS);
- } else {
- $characters = [];
-
- // Assume ISO-8859-1 if not UTF-8
- $characters['in'] =
- chr(128)
- . chr(131)
- . chr(138)
- . chr(142)
- . chr(154)
- . chr(158)
- . chr(159)
- . chr(162)
- . chr(165)
- . chr(181)
- . chr(192)
- . chr(193)
- . chr(194)
- . chr(195)
- . chr(196)
- . chr(197)
- . chr(199)
- . chr(200)
- . chr(201)
- . chr(202)
- . chr(203)
- . chr(204)
- . chr(205)
- . chr(206)
- . chr(207)
- . chr(209)
- . chr(210)
- . chr(211)
- . chr(212)
- . chr(213)
- . chr(214)
- . chr(216)
- . chr(217)
- . chr(218)
- . chr(219)
- . chr(220)
- . chr(221)
- . chr(224)
- . chr(225)
- . chr(226)
- . chr(227)
- . chr(228)
- . chr(229)
- . chr(231)
- . chr(232)
- . chr(233)
- . chr(234)
- . chr(235)
- . chr(236)
- . chr(237)
- . chr(238)
- . chr(239)
- . chr(241)
- . chr(242)
- . chr(243)
- . chr(244)
- . chr(245)
- . chr(246)
- . chr(248)
- . chr(249)
- . chr(250)
- . chr(251)
- . chr(252)
- . chr(253)
- . chr(255);
-
- $characters['out'] = 'EfSZszYcYuAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy';
-
- $string = strtr($string, $characters['in'], $characters['out']);
-
- $doubleChars = [];
-
- $doubleChars['in'] = [
- chr(140),
- chr(156),
- chr(198),
- chr(208),
- chr(222),
- chr(223),
- chr(230),
- chr(240),
- chr(254),
- ];
-
- $doubleChars['out'] = ['OE', 'oe', 'AE', 'DH', 'TH', 'ss', 'ae', 'dh', 'th'];
-
- $string = str_replace($doubleChars['in'], $doubleChars['out'], $string);
- }
-
- return $string;
- }
-
- /**
- * Convert any passed string to a url friendly string.
- * Converts 'My first blog post' to 'my-first-blog-post'
- *
- * @param string $string String to urlize.
- *
- * @return string Urlized string.
- */
- public function urlize(string $string): string
- {
- // Remove all non url friendly characters with the unaccent function
- $unaccented = $this->unaccent($string);
-
- if (function_exists('mb_strtolower')) {
- $lowered = mb_strtolower($unaccented);
- } else {
- $lowered = strtolower($unaccented);
- }
-
- $replacements = [
- '/\W/' => ' ',
- '/([A-Z]+)([A-Z][a-z])/' => '\1_\2',
- '/([a-z\d])([A-Z])/' => '\1_\2',
- '/[^A-Z^a-z^0-9^\/]+/' => '-',
- ];
-
- $urlized = $lowered;
-
- foreach ($replacements as $pattern => $replacement) {
- $replaced = preg_replace($pattern, $replacement, $urlized);
-
- if ($replaced === null) {
- throw new RuntimeException(sprintf(
- 'preg_replace returned null for value "%s"',
- $urlized
- ));
- }
-
- $urlized = $replaced;
- }
-
- return trim($urlized, '-');
- }
-
- /**
- * Returns a word in singular form.
- *
- * @param string $word The word in plural form.
- *
- * @return string The word in singular form.
- */
- public function singularize(string $word): string
- {
- return $this->singularizer->inflect($word);
- }
-
- /**
- * Returns a word in plural form.
- *
- * @param string $word The word in singular form.
- *
- * @return string The word in plural form.
- */
- public function pluralize(string $word): string
- {
- return $this->pluralizer->inflect($word);
- }
-}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/InflectorFactory.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/InflectorFactory.php
deleted file mode 100644
index a0740a74..00000000
--- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/InflectorFactory.php
+++ /dev/null
@@ -1,52 +0,0 @@
-getFlippedSubstitutions()
- );
- }
-
- public static function getPluralRuleset(): Ruleset
- {
- return new Ruleset(
- new Transformations(...Inflectible::getPlural()),
- new Patterns(...Uninflected::getPlural()),
- new Substitutions(...Inflectible::getIrregular())
- );
- }
-}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Uninflected.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Uninflected.php
deleted file mode 100644
index e2656cc4..00000000
--- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Uninflected.php
+++ /dev/null
@@ -1,193 +0,0 @@
-getFlippedSubstitutions()
- );
- }
-
- public static function getPluralRuleset(): Ruleset
- {
- return new Ruleset(
- new Transformations(...Inflectible::getPlural()),
- new Patterns(...Uninflected::getPlural()),
- new Substitutions(...Inflectible::getIrregular())
- );
- }
-}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Uninflected.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Uninflected.php
deleted file mode 100644
index 3cf2444a..00000000
--- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Uninflected.php
+++ /dev/null
@@ -1,34 +0,0 @@
-getFlippedSubstitutions()
- );
- }
-
- public static function getPluralRuleset(): Ruleset
- {
- return new Ruleset(
- new Transformations(...Inflectible::getPlural()),
- new Patterns(...Uninflected::getPlural()),
- new Substitutions(...Inflectible::getIrregular())
- );
- }
-}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Uninflected.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Uninflected.php
deleted file mode 100644
index 5d878c6d..00000000
--- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Uninflected.php
+++ /dev/null
@@ -1,36 +0,0 @@
-pattern = $pattern;
-
- if (isset($this->pattern[0]) && $this->pattern[0] === '/') {
- $this->regex = $this->pattern;
- } else {
- $this->regex = '/' . $this->pattern . '/i';
- }
- }
-
- public function getPattern(): string
- {
- return $this->pattern;
- }
-
- public function getRegex(): string
- {
- return $this->regex;
- }
-
- public function matches(string $word): bool
- {
- return preg_match($this->getRegex(), $word) === 1;
- }
-}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Patterns.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Patterns.php
deleted file mode 100644
index e8d45cb7..00000000
--- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Patterns.php
+++ /dev/null
@@ -1,34 +0,0 @@
-patterns = $patterns;
-
- $patterns = array_map(static function (Pattern $pattern): string {
- return $pattern->getPattern();
- }, $this->patterns);
-
- $this->regex = '/^(?:' . implode('|', $patterns) . ')$/i';
- }
-
- public function matches(string $word): bool
- {
- return preg_match($this->regex, $word, $regs) === 1;
- }
-}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Inflectible.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Inflectible.php
deleted file mode 100644
index 95564d49..00000000
--- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Inflectible.php
+++ /dev/null
@@ -1,104 +0,0 @@
-getFlippedSubstitutions()
- );
- }
-
- public static function getPluralRuleset(): Ruleset
- {
- return new Ruleset(
- new Transformations(...Inflectible::getPlural()),
- new Patterns(...Uninflected::getPlural()),
- new Substitutions(...Inflectible::getIrregular())
- );
- }
-}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Uninflected.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Uninflected.php
deleted file mode 100644
index 58c34f9b..00000000
--- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Uninflected.php
+++ /dev/null
@@ -1,38 +0,0 @@
-regular = $regular;
- $this->uninflected = $uninflected;
- $this->irregular = $irregular;
- }
-
- public function getRegular(): Transformations
- {
- return $this->regular;
- }
-
- public function getUninflected(): Patterns
- {
- return $this->uninflected;
- }
-
- public function getIrregular(): Substitutions
- {
- return $this->irregular;
- }
-}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Inflectible.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Inflectible.php
deleted file mode 100644
index c6862fa4..00000000
--- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Inflectible.php
+++ /dev/null
@@ -1,53 +0,0 @@
-getFlippedSubstitutions()
- );
- }
-
- public static function getPluralRuleset(): Ruleset
- {
- return new Ruleset(
- new Transformations(...Inflectible::getPlural()),
- new Patterns(...Uninflected::getPlural()),
- new Substitutions(...Inflectible::getIrregular())
- );
- }
-}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Uninflected.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Uninflected.php
deleted file mode 100644
index c743b393..00000000
--- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Uninflected.php
+++ /dev/null
@@ -1,36 +0,0 @@
-from = $from;
- $this->to = $to;
- }
-
- public function getFrom(): Word
- {
- return $this->from;
- }
-
- public function getTo(): Word
- {
- return $this->to;
- }
-}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Substitutions.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Substitutions.php
deleted file mode 100644
index 17ee2961..00000000
--- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Substitutions.php
+++ /dev/null
@@ -1,57 +0,0 @@
-substitutions[$substitution->getFrom()->getWord()] = $substitution;
- }
- }
-
- public function getFlippedSubstitutions(): Substitutions
- {
- $substitutions = [];
-
- foreach ($this->substitutions as $substitution) {
- $substitutions[] = new Substitution(
- $substitution->getTo(),
- $substitution->getFrom()
- );
- }
-
- return new Substitutions(...$substitutions);
- }
-
- public function inflect(string $word): string
- {
- $lowerWord = strtolower($word);
-
- if (isset($this->substitutions[$lowerWord])) {
- $firstLetterUppercase = $lowerWord[0] !== $word[0];
-
- $toWord = $this->substitutions[$lowerWord]->getTo()->getWord();
-
- if ($firstLetterUppercase) {
- return strtoupper($toWord[0]) . substr($toWord, 1);
- }
-
- return $toWord;
- }
-
- return $word;
- }
-}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformation.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformation.php
deleted file mode 100644
index 30dcd594..00000000
--- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformation.php
+++ /dev/null
@@ -1,39 +0,0 @@
-pattern = $pattern;
- $this->replacement = $replacement;
- }
-
- public function getPattern(): Pattern
- {
- return $this->pattern;
- }
-
- public function getReplacement(): string
- {
- return $this->replacement;
- }
-
- public function inflect(string $word): string
- {
- return (string) preg_replace($this->pattern->getRegex(), $this->replacement, $word);
- }
-}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformations.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformations.php
deleted file mode 100644
index b6a48fa8..00000000
--- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformations.php
+++ /dev/null
@@ -1,29 +0,0 @@
-transformations = $transformations;
- }
-
- public function inflect(string $word): string
- {
- foreach ($this->transformations as $transformation) {
- if ($transformation->getPattern()->matches($word)) {
- return $transformation->inflect($word);
- }
- }
-
- return $word;
- }
-}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Inflectible.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Inflectible.php
deleted file mode 100644
index d7b7064c..00000000
--- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Inflectible.php
+++ /dev/null
@@ -1,40 +0,0 @@
-getFlippedSubstitutions()
- );
- }
-
- public static function getPluralRuleset(): Ruleset
- {
- return new Ruleset(
- new Transformations(...Inflectible::getPlural()),
- new Patterns(...Uninflected::getPlural()),
- new Substitutions(...Inflectible::getIrregular())
- );
- }
-}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Uninflected.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Uninflected.php
deleted file mode 100644
index a75d2486..00000000
--- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Uninflected.php
+++ /dev/null
@@ -1,36 +0,0 @@
-word = $word;
- }
-
- public function getWord(): string
- {
- return $this->word;
- }
-}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/RulesetInflector.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/RulesetInflector.php
deleted file mode 100644
index 12b2ed5b..00000000
--- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/RulesetInflector.php
+++ /dev/null
@@ -1,56 +0,0 @@
-rulesets = array_merge([$ruleset], $rulesets);
- }
-
- public function inflect(string $word): string
- {
- if ($word === '') {
- return '';
- }
-
- foreach ($this->rulesets as $ruleset) {
- if ($ruleset->getUninflected()->matches($word)) {
- return $word;
- }
-
- $inflected = $ruleset->getIrregular()->inflect($word);
-
- if ($inflected !== $word) {
- return $inflected;
- }
-
- $inflected = $ruleset->getRegular()->inflect($word);
-
- if ($inflected !== $word) {
- return $inflected;
- }
- }
-
- return $word;
- }
-}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/WordInflector.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/WordInflector.php
deleted file mode 100644
index b88b1d69..00000000
--- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/WordInflector.php
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/vendor/doctrine/instantiator/.doctrine-project.json b/vendor/doctrine/instantiator/.doctrine-project.json
deleted file mode 100644
index eb4f4555..00000000
--- a/vendor/doctrine/instantiator/.doctrine-project.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "active": true,
- "name": "Instantiator",
- "slug": "instantiator",
- "docsSlug": "doctrine-instantiator",
- "codePath": "/src",
- "versions": [
- {
- "name": "1.4",
- "branchName": "master",
- "slug": "latest",
- "upcoming": true
- },
- {
- "name": "1.3",
- "branchName": "1.3.x",
- "slug": "1.3",
- "aliases": [
- "current",
- "stable"
- ],
- "maintained": true,
- "current": true
- },
- {
- "name": "1.2",
- "branchName": "1.2.x",
- "slug": "1.2"
- },
- {
- "name": "1.1",
- "branchName": "1.1.x",
- "slug": "1.1"
- },
- {
- "name": "1.0",
- "branchName": "1.0.x",
- "slug": "1.0"
- }
- ]
-}
diff --git a/vendor/doctrine/instantiator/.github/FUNDING.yml b/vendor/doctrine/instantiator/.github/FUNDING.yml
deleted file mode 100644
index 9a35064f..00000000
--- a/vendor/doctrine/instantiator/.github/FUNDING.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-patreon: phpdoctrine
-tidelift: packagist/doctrine%2Finstantiator
-custom: https://www.doctrine-project.org/sponsorship.html
diff --git a/vendor/doctrine/instantiator/.github/workflows/coding-standards.yml b/vendor/doctrine/instantiator/.github/workflows/coding-standards.yml
deleted file mode 100644
index 92981b1e..00000000
--- a/vendor/doctrine/instantiator/.github/workflows/coding-standards.yml
+++ /dev/null
@@ -1,48 +0,0 @@
-
-name: "Coding Standards"
-
-on:
- pull_request:
- branches:
- - "*.x"
- push:
- branches:
- - "*.x"
-
-env:
- COMPOSER_ROOT_VERSION: "1.4"
-
-jobs:
- coding-standards:
- name: "Coding Standards"
- runs-on: "ubuntu-20.04"
-
- strategy:
- matrix:
- php-version:
- - "7.4"
-
- steps:
- - name: "Checkout"
- uses: "actions/checkout@v2"
-
- - name: "Install PHP"
- uses: "shivammathur/setup-php@v2"
- with:
- coverage: "none"
- php-version: "${{ matrix.php-version }}"
- tools: "cs2pr"
-
- - name: "Cache dependencies installed with Composer"
- uses: "actions/cache@v2"
- with:
- path: "~/.composer/cache"
- key: "php-${{ matrix.php-version }}-composer-locked-${{ hashFiles('composer.lock') }}"
- restore-keys: "php-${{ matrix.php-version }}-composer-locked-"
-
- - name: "Install dependencies with Composer"
- run: "composer install --no-interaction --no-progress"
-
- # https://github.com/doctrine/.github/issues/3
- - name: "Run PHP_CodeSniffer"
- run: "vendor/bin/phpcs -q --no-colors --report=checkstyle | cs2pr"
diff --git a/vendor/doctrine/instantiator/.github/workflows/continuous-integration.yml b/vendor/doctrine/instantiator/.github/workflows/continuous-integration.yml
deleted file mode 100644
index 493374f4..00000000
--- a/vendor/doctrine/instantiator/.github/workflows/continuous-integration.yml
+++ /dev/null
@@ -1,91 +0,0 @@
-
-name: "Continuous Integration"
-
-on:
- pull_request:
- branches:
- - "*.x"
- push:
- branches:
- - "*.x"
-
-env:
- fail-fast: true
- COMPOSER_ROOT_VERSION: "1.4"
-
-jobs:
- phpunit:
- name: "PHPUnit with SQLite"
- runs-on: "ubuntu-20.04"
-
- strategy:
- matrix:
- php-version:
- - "7.1"
- - "7.2"
- - "7.3"
- - "7.4"
- - "8.0"
-
- steps:
- - name: "Checkout"
- uses: "actions/checkout@v2"
- with:
- fetch-depth: 2
-
- - name: "Install PHP with XDebug"
- uses: "shivammathur/setup-php@v2"
- if: "${{ matrix.php-version == '7.1' }}"
- with:
- php-version: "${{ matrix.php-version }}"
- coverage: "xdebug"
- ini-values: "zend.assertions=1"
-
- - name: "Install PHP with PCOV"
- uses: "shivammathur/setup-php@v2"
- if: "${{ matrix.php-version != '7.1' }}"
- with:
- php-version: "${{ matrix.php-version }}"
- coverage: "pcov"
- ini-values: "zend.assertions=1"
-
- - name: "Cache dependencies installed with composer"
- uses: "actions/cache@v2"
- with:
- path: "~/.composer/cache"
- key: "php-${{ matrix.php-version }}-composer-locked-${{ hashFiles('composer.lock') }}"
- restore-keys: "php-${{ matrix.php-version }}-composer-locked-"
-
- - name: "Install dependencies with composer"
- run: "composer update --no-interaction --no-progress"
-
- - name: "Run PHPUnit"
- run: "vendor/bin/phpunit --coverage-clover=coverage.xml"
-
- - name: "Upload coverage file"
- uses: "actions/upload-artifact@v2"
- with:
- name: "phpunit-${{ matrix.php-version }}.coverage"
- path: "coverage.xml"
-
- upload_coverage:
- name: "Upload coverage to Codecov"
- runs-on: "ubuntu-20.04"
- needs:
- - "phpunit"
-
- steps:
- - name: "Checkout"
- uses: "actions/checkout@v2"
- with:
- fetch-depth: 2
-
- - name: "Download coverage files"
- uses: "actions/download-artifact@v2"
- with:
- path: "reports"
-
- - name: "Upload to Codecov"
- uses: "codecov/codecov-action@v1"
- with:
- directory: reports
diff --git a/vendor/doctrine/instantiator/.github/workflows/phpbench.yml b/vendor/doctrine/instantiator/.github/workflows/phpbench.yml
deleted file mode 100644
index 9d131e7f..00000000
--- a/vendor/doctrine/instantiator/.github/workflows/phpbench.yml
+++ /dev/null
@@ -1,50 +0,0 @@
-
-name: "Performance benchmark"
-
-on:
- pull_request:
- branches:
- - "*.x"
- push:
- branches:
- - "*.x"
-
-env:
- fail-fast: true
- COMPOSER_ROOT_VERSION: "1.4"
-
-jobs:
- phpbench:
- name: "PHPBench"
- runs-on: "ubuntu-20.04"
-
- strategy:
- matrix:
- php-version:
- - "7.4"
-
- steps:
- - name: "Checkout"
- uses: "actions/checkout@v2"
- with:
- fetch-depth: 2
-
- - name: "Install PHP"
- uses: "shivammathur/setup-php@v2"
- with:
- php-version: "${{ matrix.php-version }}"
- coverage: "pcov"
- ini-values: "zend.assertions=1"
-
- - name: "Cache dependencies installed with composer"
- uses: "actions/cache@v2"
- with:
- path: "~/.composer/cache"
- key: "php-${{ matrix.php-version }}-composer-locked-${{ hashFiles('composer.lock') }}"
- restore-keys: "php-${{ matrix.php-version }}-composer-locked-"
-
- - name: "Install dependencies with composer"
- run: "composer update --no-interaction --no-progress"
-
- - name: "Run PHPBench"
- run: "php ./vendor/bin/phpbench run --iterations=3 --warmup=1 --report=aggregate"
diff --git a/vendor/doctrine/instantiator/.github/workflows/release-on-milestone-closed.yml b/vendor/doctrine/instantiator/.github/workflows/release-on-milestone-closed.yml
deleted file mode 100644
index b7a56f71..00000000
--- a/vendor/doctrine/instantiator/.github/workflows/release-on-milestone-closed.yml
+++ /dev/null
@@ -1,45 +0,0 @@
-name: "Automatic Releases"
-
-on:
- milestone:
- types:
- - "closed"
-
-jobs:
- release:
- name: "Git tag, release & create merge-up PR"
- runs-on: "ubuntu-20.04"
-
- steps:
- - name: "Checkout"
- uses: "actions/checkout@v2"
-
- - name: "Release"
- uses: "laminas/automatic-releases@v1"
- with:
- command-name: "laminas:automatic-releases:release"
- env:
- "GITHUB_TOKEN": ${{ secrets.GITHUB_TOKEN }}
- "SIGNING_SECRET_KEY": ${{ secrets.SIGNING_SECRET_KEY }}
- "GIT_AUTHOR_NAME": ${{ secrets.GIT_AUTHOR_NAME }}
- "GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }}
-
- - name: "Create Merge-Up Pull Request"
- uses: "laminas/automatic-releases@v1"
- with:
- command-name: "laminas:automatic-releases:create-merge-up-pull-request"
- env:
- "GITHUB_TOKEN": ${{ secrets.GITHUB_TOKEN }}
- "SIGNING_SECRET_KEY": ${{ secrets.SIGNING_SECRET_KEY }}
- "GIT_AUTHOR_NAME": ${{ secrets.GIT_AUTHOR_NAME }}
- "GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }}
-
- - name: "Create new milestones"
- uses: "laminas/automatic-releases@v1"
- with:
- command-name: "laminas:automatic-releases:create-milestones"
- env:
- "GITHUB_TOKEN": ${{ secrets.GITHUB_TOKEN }}
- "SIGNING_SECRET_KEY": ${{ secrets.SIGNING_SECRET_KEY }}
- "GIT_AUTHOR_NAME": ${{ secrets.GIT_AUTHOR_NAME }}
- "GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }}
diff --git a/vendor/doctrine/instantiator/.github/workflows/static-analysis.yml b/vendor/doctrine/instantiator/.github/workflows/static-analysis.yml
deleted file mode 100644
index 4a58318e..00000000
--- a/vendor/doctrine/instantiator/.github/workflows/static-analysis.yml
+++ /dev/null
@@ -1,47 +0,0 @@
-
-name: "Static Analysis"
-
-on:
- pull_request:
- branches:
- - "*.x"
- push:
- branches:
- - "*.x"
-
-env:
- COMPOSER_ROOT_VERSION: "1.4"
-
-jobs:
- static-analysis-phpstan:
- name: "Static Analysis with PHPStan"
- runs-on: "ubuntu-20.04"
-
- strategy:
- matrix:
- php-version:
- - "7.4"
-
- steps:
- - name: "Checkout code"
- uses: "actions/checkout@v2"
-
- - name: "Install PHP"
- uses: "shivammathur/setup-php@v2"
- with:
- coverage: "none"
- php-version: "${{ matrix.php-version }}"
- tools: "cs2pr"
-
- - name: "Cache dependencies installed with composer"
- uses: "actions/cache@v2"
- with:
- path: "~/.composer/cache"
- key: "php-${{ matrix.php-version }}-composer-locked-${{ hashFiles('composer.lock') }}"
- restore-keys: "php-${{ matrix.php-version }}-composer-locked-"
-
- - name: "Install dependencies with composer"
- run: "composer install --no-interaction --no-progress"
-
- - name: "Run a static analysis with phpstan/phpstan"
- run: "vendor/bin/phpstan analyse --error-format=checkstyle | cs2pr"
diff --git a/vendor/doctrine/instantiator/CONTRIBUTING.md b/vendor/doctrine/instantiator/CONTRIBUTING.md
deleted file mode 100644
index c1a2c42e..00000000
--- a/vendor/doctrine/instantiator/CONTRIBUTING.md
+++ /dev/null
@@ -1,35 +0,0 @@
-# Contributing
-
- * Follow the [Doctrine Coding Standard](https://github.com/doctrine/coding-standard)
- * The project will follow strict [object calisthenics](http://www.slideshare.net/guilhermeblanco/object-calisthenics-applied-to-php)
- * Any contribution must provide tests for additional introduced conditions
- * Any un-confirmed issue needs a failing test case before being accepted
- * Pull requests must be sent from a new hotfix/feature branch, not from `master`.
-
-## Installation
-
-To install the project and run the tests, you need to clone it first:
-
-```sh
-$ git clone git://github.com/doctrine/instantiator.git
-```
-
-You will then need to run a composer installation:
-
-```sh
-$ cd Instantiator
-$ curl -s https://getcomposer.org/installer | php
-$ php composer.phar update
-```
-
-## Testing
-
-The PHPUnit version to be used is the one installed as a dev- dependency via composer:
-
-```sh
-$ ./vendor/bin/phpunit
-```
-
-Accepted coverage for new contributions is 80%. Any contribution not satisfying this requirement
-won't be merged.
-
diff --git a/vendor/doctrine/instantiator/LICENSE b/vendor/doctrine/instantiator/LICENSE
deleted file mode 100644
index 4d983d1a..00000000
--- a/vendor/doctrine/instantiator/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2014 Doctrine Project
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/vendor/doctrine/instantiator/README.md b/vendor/doctrine/instantiator/README.md
deleted file mode 100644
index 4bc02b65..00000000
--- a/vendor/doctrine/instantiator/README.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# Instantiator
-
-This library provides a way of avoiding usage of constructors when instantiating PHP classes.
-
-[](https://travis-ci.org/doctrine/instantiator)
-[](https://codecov.io/gh/doctrine/instantiator/branch/master)
-[](https://www.versioneye.com/package/php--doctrine--instantiator)
-
-[](https://packagist.org/packages/doctrine/instantiator)
-[](https://packagist.org/packages/doctrine/instantiator)
-
-## Installation
-
-The suggested installation method is via [composer](https://getcomposer.org/):
-
-```sh
-php composer.phar require "doctrine/instantiator:~1.0.3"
-```
-
-## Usage
-
-The instantiator is able to create new instances of any class without using the constructor or any API of the class
-itself:
-
-```php
-$instantiator = new \Doctrine\Instantiator\Instantiator();
-
-$instance = $instantiator->instantiate(\My\ClassName\Here::class);
-```
-
-## Contributing
-
-Please read the [CONTRIBUTING.md](CONTRIBUTING.md) contents if you wish to help out!
-
-## Credits
-
-This library was migrated from [ocramius/instantiator](https://github.com/Ocramius/Instantiator), which
-has been donated to the doctrine organization, and which is now deprecated in favour of this package.
diff --git a/vendor/doctrine/instantiator/composer.json b/vendor/doctrine/instantiator/composer.json
deleted file mode 100644
index 1ce34735..00000000
--- a/vendor/doctrine/instantiator/composer.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "name": "doctrine/instantiator",
- "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
- "type": "library",
- "license": "MIT",
- "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
- "keywords": [
- "instantiate",
- "constructor"
- ],
- "authors": [
- {
- "name": "Marco Pivetta",
- "email": "ocramius@gmail.com",
- "homepage": "https://ocramius.github.io/"
- }
- ],
- "require": {
- "php": "^7.1 || ^8.0"
- },
- "require-dev": {
- "ext-phar": "*",
- "ext-pdo": "*",
- "doctrine/coding-standard": "^8.0",
- "phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
- "phpstan/phpstan": "^0.12",
- "phpstan/phpstan-phpunit": "^0.12",
- "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
- }
- },
- "autoload-dev": {
- "psr-0": {
- "DoctrineTest\\InstantiatorPerformance\\": "tests",
- "DoctrineTest\\InstantiatorTest\\": "tests",
- "DoctrineTest\\InstantiatorTestAsset\\": "tests"
- }
- }
-}
diff --git a/vendor/doctrine/instantiator/docs/en/index.rst b/vendor/doctrine/instantiator/docs/en/index.rst
deleted file mode 100644
index 0c85da0b..00000000
--- a/vendor/doctrine/instantiator/docs/en/index.rst
+++ /dev/null
@@ -1,68 +0,0 @@
-Introduction
-============
-
-This library provides a way of avoiding usage of constructors when instantiating PHP classes.
-
-Installation
-============
-
-The suggested installation method is via `composer`_:
-
-.. code-block:: console
-
- $ composer require doctrine/instantiator
-
-Usage
-=====
-
-The instantiator is able to create new instances of any class without
-using the constructor or any API of the class itself:
-
-.. code-block:: php
-
- instantiate(User::class);
-
-Contributing
-============
-
-- Follow the `Doctrine Coding Standard`_
-- The project will follow strict `object calisthenics`_
-- Any contribution must provide tests for additional introduced
- conditions
-- Any un-confirmed issue needs a failing test case before being
- accepted
-- Pull requests must be sent from a new hotfix/feature branch, not from
- ``master``.
-
-Testing
-=======
-
-The PHPUnit version to be used is the one installed as a dev- dependency
-via composer:
-
-.. code-block:: console
-
- $ ./vendor/bin/phpunit
-
-Accepted coverage for new contributions is 80%. Any contribution not
-satisfying this requirement won’t be merged.
-
-Credits
-=======
-
-This library was migrated from `ocramius/instantiator`_, which has been
-donated to the doctrine organization, and which is now deprecated in
-favour of this package.
-
-.. _composer: https://getcomposer.org/
-.. _CONTRIBUTING.md: CONTRIBUTING.md
-.. _ocramius/instantiator: https://github.com/Ocramius/Instantiator
-.. _Doctrine Coding Standard: https://github.com/doctrine/coding-standard
-.. _object calisthenics: http://www.slideshare.net/guilhermeblanco/object-calisthenics-applied-to-php
diff --git a/vendor/doctrine/instantiator/docs/en/sidebar.rst b/vendor/doctrine/instantiator/docs/en/sidebar.rst
deleted file mode 100644
index 0c364791..00000000
--- a/vendor/doctrine/instantiator/docs/en/sidebar.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-.. toctree::
- :depth: 3
-
- index
diff --git a/vendor/doctrine/instantiator/phpbench.json b/vendor/doctrine/instantiator/phpbench.json
deleted file mode 100644
index fce5dd60..00000000
--- a/vendor/doctrine/instantiator/phpbench.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "bootstrap": "vendor/autoload.php",
- "path": "tests/DoctrineTest/InstantiatorPerformance"
-}
diff --git a/vendor/doctrine/instantiator/phpcs.xml.dist b/vendor/doctrine/instantiator/phpcs.xml.dist
deleted file mode 100644
index 4e08b168..00000000
--- a/vendor/doctrine/instantiator/phpcs.xml.dist
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- src
- tests
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- */src/*
-
-
-
- */src/*
-
-
-
- tests/DoctrineTest/InstantiatorTestAsset/AbstractClassAsset.php
-
-
-
- src/Doctrine/Instantiator/Exception/UnexpectedValueException.php
- src/Doctrine/Instantiator/Exception/InvalidArgumentException.php
-
-
-
- src/Doctrine/Instantiator/Exception/ExceptionInterface.php
- src/Doctrine/Instantiator/InstantiatorInterface.php
-
-
diff --git a/vendor/doctrine/instantiator/phpstan.neon.dist b/vendor/doctrine/instantiator/phpstan.neon.dist
deleted file mode 100644
index 60bec6bf..00000000
--- a/vendor/doctrine/instantiator/phpstan.neon.dist
+++ /dev/null
@@ -1,15 +0,0 @@
-includes:
- - vendor/phpstan/phpstan-phpunit/extension.neon
- - vendor/phpstan/phpstan-phpunit/rules.neon
-
-parameters:
- level: max
- paths:
- - src
- - tests
-
- ignoreErrors:
- # dynamic properties confuse static analysis
- -
- message: '#Access to an undefined property object::\$foo\.#'
- path: '*/tests/DoctrineTest/InstantiatorTest/InstantiatorTest.php'
diff --git a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php b/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php
deleted file mode 100644
index e6a5195f..00000000
--- a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php
+++ /dev/null
@@ -1,12 +0,0 @@
- $reflectionClass
- */
- public static function fromAbstractClass(ReflectionClass $reflectionClass): self
- {
- return new self(sprintf(
- 'The provided class "%s" is abstract, and can not be instantiated',
- $reflectionClass->getName()
- ));
- }
-}
diff --git a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php b/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php
deleted file mode 100644
index 19842bb6..00000000
--- a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php
+++ /dev/null
@@ -1,57 +0,0 @@
- $reflectionClass
- */
- public static function fromSerializationTriggeredException(
- ReflectionClass $reflectionClass,
- Exception $exception
- ): self {
- return new self(
- sprintf(
- 'An exception was raised while trying to instantiate an instance of "%s" via un-serialization',
- $reflectionClass->getName()
- ),
- 0,
- $exception
- );
- }
-
- /**
- * @template T of object
- * @phpstan-param ReflectionClass $reflectionClass
- */
- public static function fromUncleanUnSerialization(
- ReflectionClass $reflectionClass,
- string $errorString,
- int $errorCode,
- string $errorFile,
- int $errorLine
- ): self {
- return new self(
- sprintf(
- 'Could not produce an instance of "%s" via un-serialization, since an error was triggered '
- . 'in file "%s" at line "%d"',
- $reflectionClass->getName(),
- $errorFile,
- $errorLine
- ),
- 0,
- new Exception($errorString, $errorCode)
- );
- }
-}
diff --git a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php b/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php
deleted file mode 100644
index ee4803cb..00000000
--- a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php
+++ /dev/null
@@ -1,232 +0,0 @@
-buildAndCacheFromFactory($className);
- }
-
- /**
- * Builds the requested object and caches it in static properties for performance
- *
- * @return object
- *
- * @template T of object
- * @phpstan-param class-string $className
- *
- * @phpstan-return T
- */
- private function buildAndCacheFromFactory(string $className)
- {
- $factory = self::$cachedInstantiators[$className] = $this->buildFactory($className);
- $instance = $factory();
-
- if ($this->isSafeToClone(new ReflectionClass($instance))) {
- self::$cachedCloneables[$className] = clone $instance;
- }
-
- return $instance;
- }
-
- /**
- * Builds a callable capable of instantiating the given $className without
- * invoking its constructor.
- *
- * @throws InvalidArgumentException
- * @throws UnexpectedValueException
- * @throws ReflectionException
- *
- * @template T of object
- * @phpstan-param class-string $className
- *
- * @phpstan-return callable(): T
- */
- private function buildFactory(string $className): callable
- {
- $reflectionClass = $this->getReflectionClass($className);
-
- if ($this->isInstantiableViaReflection($reflectionClass)) {
- return [$reflectionClass, 'newInstanceWithoutConstructor'];
- }
-
- $serializedString = sprintf(
- '%s:%d:"%s":0:{}',
- is_subclass_of($className, Serializable::class) ? self::SERIALIZATION_FORMAT_USE_UNSERIALIZER : self::SERIALIZATION_FORMAT_AVOID_UNSERIALIZER,
- strlen($className),
- $className
- );
-
- $this->checkIfUnSerializationIsSupported($reflectionClass, $serializedString);
-
- return static function () use ($serializedString) {
- return unserialize($serializedString);
- };
- }
-
- /**
- * @throws InvalidArgumentException
- * @throws ReflectionException
- *
- * @template T of object
- * @phpstan-param class-string $className
- *
- * @phpstan-return ReflectionClass
- */
- private function getReflectionClass(string $className): ReflectionClass
- {
- if (! class_exists($className)) {
- throw InvalidArgumentException::fromNonExistingClass($className);
- }
-
- $reflection = new ReflectionClass($className);
-
- if ($reflection->isAbstract()) {
- throw InvalidArgumentException::fromAbstractClass($reflection);
- }
-
- return $reflection;
- }
-
- /**
- * @throws UnexpectedValueException
- *
- * @template T of object
- * @phpstan-param ReflectionClass $reflectionClass
- */
- private function checkIfUnSerializationIsSupported(ReflectionClass $reflectionClass, string $serializedString): void
- {
- set_error_handler(static function (int $code, string $message, string $file, int $line) use ($reflectionClass, &$error): bool {
- $error = UnexpectedValueException::fromUncleanUnSerialization(
- $reflectionClass,
- $message,
- $code,
- $file,
- $line
- );
-
- return true;
- });
-
- try {
- $this->attemptInstantiationViaUnSerialization($reflectionClass, $serializedString);
- } finally {
- restore_error_handler();
- }
-
- if ($error) {
- throw $error;
- }
- }
-
- /**
- * @throws UnexpectedValueException
- *
- * @template T of object
- * @phpstan-param ReflectionClass $reflectionClass
- */
- private function attemptInstantiationViaUnSerialization(ReflectionClass $reflectionClass, string $serializedString): void
- {
- try {
- unserialize($serializedString);
- } catch (Exception $exception) {
- throw UnexpectedValueException::fromSerializationTriggeredException($reflectionClass, $exception);
- }
- }
-
- /**
- * @template T of object
- * @phpstan-param ReflectionClass $reflectionClass
- */
- private function isInstantiableViaReflection(ReflectionClass $reflectionClass): bool
- {
- return ! ($this->hasInternalAncestors($reflectionClass) && $reflectionClass->isFinal());
- }
-
- /**
- * Verifies whether the given class is to be considered internal
- *
- * @template T of object
- * @phpstan-param ReflectionClass $reflectionClass
- */
- private function hasInternalAncestors(ReflectionClass $reflectionClass): bool
- {
- do {
- if ($reflectionClass->isInternal()) {
- return true;
- }
-
- $reflectionClass = $reflectionClass->getParentClass();
- } while ($reflectionClass);
-
- return false;
- }
-
- /**
- * Checks if a class is cloneable
- *
- * Classes implementing `__clone` cannot be safely cloned, as that may cause side-effects.
- *
- * @template T of object
- * @phpstan-param ReflectionClass $reflectionClass
- */
- private function isSafeToClone(ReflectionClass $reflectionClass): bool
- {
- return $reflectionClass->isCloneable()
- && ! $reflectionClass->hasMethod('__clone')
- && ! $reflectionClass->isSubclassOf(ArrayIterator::class);
- }
-}
diff --git a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php b/vendor/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php
deleted file mode 100644
index 3ffff822..00000000
--- a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php
+++ /dev/null
@@ -1,23 +0,0 @@
- $className
- */
- public function instantiate($className);
-}
diff --git a/vendor/erusev/parsedown-extra/.travis.yml b/vendor/erusev/parsedown-extra/.travis.yml
deleted file mode 100644
index d0b48f88..00000000
--- a/vendor/erusev/parsedown-extra/.travis.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-language: php
-
-dist: trusty
-sudo: false
-
-matrix:
- include:
- - php: 5.3
- dist: precise
- - php: 5.4
- - php: 5.5
- - php: 5.6
- - php: 7.0
- - php: 7.1
- - php: 7.2
- - php: 7.3
- - php: 7.4
- - php: nightly
- fast_finish: true
- allow_failures:
- - php: nightly
- - php: hhvm-nightly
-
-install:
- - composer install --prefer-source
-
-script:
- - vendor/bin/phpunit
- - vendor/bin/phpunit vendor/erusev/parsedown/test/CommonMarkTestWeak.php || true
- - '[ -z "$TRAVIS_TAG" ] || [ "$TRAVIS_TAG" == "$(php -r "require(\"ParsedownExtra.php\"); echo ParsedownExtra::version;")" ]'
diff --git a/vendor/erusev/parsedown-extra/LICENSE.txt b/vendor/erusev/parsedown-extra/LICENSE.txt
deleted file mode 100644
index baca86f5..00000000
--- a/vendor/erusev/parsedown-extra/LICENSE.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2013 Emanuil Rusev, erusev.com
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/vendor/erusev/parsedown-extra/ParsedownExtra.php b/vendor/erusev/parsedown-extra/ParsedownExtra.php
deleted file mode 100644
index 632ba84f..00000000
--- a/vendor/erusev/parsedown-extra/ParsedownExtra.php
+++ /dev/null
@@ -1,538 +0,0 @@
-BlockTypes[':'] []= 'DefinitionList';
- $this->BlockTypes['*'] []= 'Abbreviation';
-
- # identify footnote definitions before reference definitions
- array_unshift($this->BlockTypes['['], 'Footnote');
-
- # identify footnote markers before before links
- array_unshift($this->InlineTypes['['], 'FootnoteMarker');
- }
-
- #
- # ~
-
- function text($text)
- {
- $markup = parent::text($text);
-
- # merge consecutive dl elements
-
- $markup = preg_replace('/<\/dl>\s+\s+/', '', $markup);
-
- # add footnotes
-
- if (isset($this->DefinitionData['Footnote']))
- {
- $Element = $this->buildFootnoteElement();
-
- $markup .= "\n" . $this->element($Element);
- }
-
- return $markup;
- }
-
- #
- # Blocks
- #
-
- #
- # Abbreviation
-
- protected function blockAbbreviation($Line)
- {
- if (preg_match('/^\*\[(.+?)\]:[ ]*(.+?)[ ]*$/', $Line['text'], $matches))
- {
- $this->DefinitionData['Abbreviation'][$matches[1]] = $matches[2];
-
- $Block = array(
- 'hidden' => true,
- );
-
- return $Block;
- }
- }
-
- #
- # Footnote
-
- protected function blockFootnote($Line)
- {
- if (preg_match('/^\[\^(.+?)\]:[ ]?(.*)$/', $Line['text'], $matches))
- {
- $Block = array(
- 'label' => $matches[1],
- 'text' => $matches[2],
- 'hidden' => true,
- );
-
- return $Block;
- }
- }
-
- protected function blockFootnoteContinue($Line, $Block)
- {
- if ($Line['text'][0] === '[' and preg_match('/^\[\^(.+?)\]:/', $Line['text']))
- {
- return;
- }
-
- if (isset($Block['interrupted']))
- {
- if ($Line['indent'] >= 4)
- {
- $Block['text'] .= "\n\n" . $Line['text'];
-
- return $Block;
- }
- }
- else
- {
- $Block['text'] .= "\n" . $Line['text'];
-
- return $Block;
- }
- }
-
- protected function blockFootnoteComplete($Block)
- {
- $this->DefinitionData['Footnote'][$Block['label']] = array(
- 'text' => $Block['text'],
- 'count' => null,
- 'number' => null,
- );
-
- return $Block;
- }
-
- #
- # Definition List
-
- protected function blockDefinitionList($Line, $Block)
- {
- if ( ! isset($Block) or isset($Block['type']))
- {
- return;
- }
-
- $Element = array(
- 'name' => 'dl',
- 'handler' => 'elements',
- 'text' => array(),
- );
-
- $terms = explode("\n", $Block['element']['text']);
-
- foreach ($terms as $term)
- {
- $Element['text'] []= array(
- 'name' => 'dt',
- 'handler' => 'line',
- 'text' => $term,
- );
- }
-
- $Block['element'] = $Element;
-
- $Block = $this->addDdElement($Line, $Block);
-
- return $Block;
- }
-
- protected function blockDefinitionListContinue($Line, array $Block)
- {
- if ($Line['text'][0] === ':')
- {
- $Block = $this->addDdElement($Line, $Block);
-
- return $Block;
- }
- else
- {
- if (isset($Block['interrupted']) and $Line['indent'] === 0)
- {
- return;
- }
-
- if (isset($Block['interrupted']))
- {
- $Block['dd']['handler'] = 'text';
- $Block['dd']['text'] .= "\n\n";
-
- unset($Block['interrupted']);
- }
-
- $text = substr($Line['body'], min($Line['indent'], 4));
-
- $Block['dd']['text'] .= "\n" . $text;
-
- return $Block;
- }
- }
-
- #
- # Header
-
- protected function blockHeader($Line)
- {
- $Block = parent::blockHeader($Line);
-
- if (! isset($Block)) {
- return null;
- }
-
- if (preg_match('/[ #]*{('.$this->regexAttribute.'+)}[ ]*$/', $Block['element']['text'], $matches, PREG_OFFSET_CAPTURE))
- {
- $attributeString = $matches[1][0];
-
- $Block['element']['attributes'] = $this->parseAttributeData($attributeString);
-
- $Block['element']['text'] = substr($Block['element']['text'], 0, $matches[0][1]);
- }
-
- return $Block;
- }
-
- #
- # Markup
-
- protected function blockMarkupComplete($Block)
- {
- if ( ! isset($Block['void']))
- {
- $Block['markup'] = $this->processTag($Block['markup']);
- }
-
- return $Block;
- }
-
- #
- # Setext
-
- protected function blockSetextHeader($Line, array $Block = null)
- {
- $Block = parent::blockSetextHeader($Line, $Block);
-
- if (! isset($Block)) {
- return null;
- }
-
- if (preg_match('/[ ]*{('.$this->regexAttribute.'+)}[ ]*$/', $Block['element']['text'], $matches, PREG_OFFSET_CAPTURE))
- {
- $attributeString = $matches[1][0];
-
- $Block['element']['attributes'] = $this->parseAttributeData($attributeString);
-
- $Block['element']['text'] = substr($Block['element']['text'], 0, $matches[0][1]);
- }
-
- return $Block;
- }
-
- #
- # Inline Elements
- #
-
- #
- # Footnote Marker
-
- protected function inlineFootnoteMarker($Excerpt)
- {
- if (preg_match('/^\[\^(.+?)\]/', $Excerpt['text'], $matches))
- {
- $name = $matches[1];
-
- if ( ! isset($this->DefinitionData['Footnote'][$name]))
- {
- return;
- }
-
- $this->DefinitionData['Footnote'][$name]['count'] ++;
-
- if ( ! isset($this->DefinitionData['Footnote'][$name]['number']))
- {
- $this->DefinitionData['Footnote'][$name]['number'] = ++ $this->footnoteCount; # » &
- }
-
- $Element = array(
- 'name' => 'sup',
- 'attributes' => array('id' => 'fnref'.$this->DefinitionData['Footnote'][$name]['count'].':'.$name),
- 'handler' => 'element',
- 'text' => array(
- 'name' => 'a',
- 'attributes' => array('href' => '#fn:'.$name, 'class' => 'footnote-ref'),
- 'text' => $this->DefinitionData['Footnote'][$name]['number'],
- ),
- );
-
- return array(
- 'extent' => strlen($matches[0]),
- 'element' => $Element,
- );
- }
- }
-
- private $footnoteCount = 0;
-
- #
- # Link
-
- protected function inlineLink($Excerpt)
- {
- $Link = parent::inlineLink($Excerpt);
-
- if (! isset($Link)) {
- return null;
- }
-
- $remainder = substr($Excerpt['text'], $Link['extent']);
-
- if (preg_match('/^[ ]*{('.$this->regexAttribute.'+)}/', $remainder, $matches))
- {
- $Link['element']['attributes'] += $this->parseAttributeData($matches[1]);
-
- $Link['extent'] += strlen($matches[0]);
- }
-
- return $Link;
- }
-
- #
- # ~
- #
-
- protected function unmarkedText($text)
- {
- $text = parent::unmarkedText($text);
-
- if (isset($this->DefinitionData['Abbreviation']))
- {
- foreach ($this->DefinitionData['Abbreviation'] as $abbreviation => $meaning)
- {
- $pattern = '/\b'.preg_quote($abbreviation, '/').'\b/';
-
- $text = preg_replace($pattern, ''.$abbreviation.' ', $text);
- }
- }
-
- return $text;
- }
-
- #
- # Util Methods
- #
-
- protected function addDdElement(array $Line, array $Block)
- {
- $text = substr($Line['text'], 1);
- $text = trim($text);
-
- unset($Block['dd']);
-
- $Block['dd'] = array(
- 'name' => 'dd',
- 'handler' => 'line',
- 'text' => $text,
- );
-
- if (isset($Block['interrupted']))
- {
- $Block['dd']['handler'] = 'text';
-
- unset($Block['interrupted']);
- }
-
- $Block['element']['text'] []= & $Block['dd'];
-
- return $Block;
- }
-
- protected function buildFootnoteElement()
- {
- $Element = array(
- 'name' => 'div',
- 'attributes' => array('class' => 'footnotes'),
- 'handler' => 'elements',
- 'text' => array(
- array(
- 'name' => 'hr',
- ),
- array(
- 'name' => 'ol',
- 'handler' => 'elements',
- 'text' => array(),
- ),
- ),
- );
-
- uasort($this->DefinitionData['Footnote'], 'self::sortFootnotes');
-
- foreach ($this->DefinitionData['Footnote'] as $definitionId => $DefinitionData)
- {
- if ( ! isset($DefinitionData['number']))
- {
- continue;
- }
-
- $text = $DefinitionData['text'];
-
- $text = parent::text($text);
-
- $numbers = range(1, $DefinitionData['count']);
-
- $backLinksMarkup = '';
-
- foreach ($numbers as $number)
- {
- $backLinksMarkup .= ' ';
- }
-
- $backLinksMarkup = substr($backLinksMarkup, 1);
-
- if (substr($text, - 4) === '
')
- {
- $backLinksMarkup = ' '.$backLinksMarkup;
-
- $text = substr_replace($text, $backLinksMarkup.'
', - 4);
- }
- else
- {
- $text .= "\n".''.$backLinksMarkup.'
';
- }
-
- $Element['text'][1]['text'] []= array(
- 'name' => 'li',
- 'attributes' => array('id' => 'fn:'.$definitionId),
- 'rawHtml' => "\n".$text."\n",
- );
- }
-
- return $Element;
- }
-
- # ~
-
- protected function parseAttributeData($attributeString)
- {
- $Data = array();
-
- $attributes = preg_split('/[ ]+/', $attributeString, - 1, PREG_SPLIT_NO_EMPTY);
-
- foreach ($attributes as $attribute)
- {
- if ($attribute[0] === '#')
- {
- $Data['id'] = substr($attribute, 1);
- }
- else # "."
- {
- $classes []= substr($attribute, 1);
- }
- }
-
- if (isset($classes))
- {
- $Data['class'] = implode(' ', $classes);
- }
-
- return $Data;
- }
-
- # ~
-
- protected function processTag($elementMarkup) # recursive
- {
- # http://stackoverflow.com/q/1148928/200145
- libxml_use_internal_errors(true);
-
- $DOMDocument = new DOMDocument;
-
- # http://stackoverflow.com/q/11309194/200145
- $elementMarkup = mb_convert_encoding($elementMarkup, 'HTML-ENTITIES', 'UTF-8');
-
- # http://stackoverflow.com/q/4879946/200145
- $DOMDocument->loadHTML($elementMarkup);
- $DOMDocument->removeChild($DOMDocument->doctype);
- $DOMDocument->replaceChild($DOMDocument->firstChild->firstChild->firstChild, $DOMDocument->firstChild);
-
- $elementText = '';
-
- if ($DOMDocument->documentElement->getAttribute('markdown') === '1')
- {
- foreach ($DOMDocument->documentElement->childNodes as $Node)
- {
- $elementText .= $DOMDocument->saveHTML($Node);
- }
-
- $DOMDocument->documentElement->removeAttribute('markdown');
-
- $elementText = "\n".$this->text($elementText)."\n";
- }
- else
- {
- foreach ($DOMDocument->documentElement->childNodes as $Node)
- {
- $nodeMarkup = $DOMDocument->saveHTML($Node);
-
- if ($Node instanceof DOMElement and ! in_array($Node->nodeName, $this->textLevelElements))
- {
- $elementText .= $this->processTag($nodeMarkup);
- }
- else
- {
- $elementText .= $nodeMarkup;
- }
- }
- }
-
- # because we don't want for markup to get encoded
- $DOMDocument->documentElement->nodeValue = 'placeholder\x1A';
-
- $markup = $DOMDocument->saveHTML($DOMDocument->documentElement);
- $markup = str_replace('placeholder\x1A', $elementText, $markup);
-
- return $markup;
- }
-
- # ~
-
- protected function sortFootnotes($A, $B) # callback
- {
- return $A['number'] - $B['number'];
- }
-
- #
- # Fields
- #
-
- protected $regexAttribute = '(?:[#.][-\w]+[ ]*)';
-}
diff --git a/vendor/erusev/parsedown-extra/README.md b/vendor/erusev/parsedown-extra/README.md
deleted file mode 100644
index cee4b543..00000000
--- a/vendor/erusev/parsedown-extra/README.md
+++ /dev/null
@@ -1,31 +0,0 @@
-> You might also like [Caret](http://caret.io?ref=parsedown) - our Markdown editor for the Desktop.
-
-## Parsedown Extra
-
-[](https://travis-ci.org/erusev/parsedown-extra)
-
-An extension of [Parsedown](http://parsedown.org) that adds support for [Markdown Extra](https://michelf.ca/projects/php-markdown/extra/).
-
-[See Demo](http://parsedown.org/extra/)
-
-### Installation
-
-Include both `Parsedown.php` and `ParsedownExtra.php` or install [the composer package](https://packagist.org/packages/erusev/parsedown-extra).
-
-### Example
-
-``` php
-$Extra = new ParsedownExtra();
-
-echo $Extra->text('# Header {.sth}'); # prints: Header
-```
-
-### Questions
-
-**Who uses Parsedown Extra?**
-
-[October CMS](http://octobercms.com/), [Bolt CMS](http://bolt.cm/), [Kirby CMS](http://getkirby.com/), [Grav CMS](http://getgrav.org/), [Statamic CMS](http://www.statamic.com/) and [more](https://www.versioneye.com/php/erusev:parsedown-extra/references).
-
-**How can I help?**
-
-Use it, star it, share it and in case you feel generous, [donate some money](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=528P3NZQMP8N2).
diff --git a/vendor/erusev/parsedown-extra/composer.json b/vendor/erusev/parsedown-extra/composer.json
deleted file mode 100644
index 317d1472..00000000
--- a/vendor/erusev/parsedown-extra/composer.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "name": "erusev/parsedown-extra",
- "description": "An extension of Parsedown that adds support for Markdown Extra.",
- "keywords": ["markdown", "markdown extra", "parser", "parsedown"],
- "homepage": "https://github.com/erusev/parsedown-extra",
- "type": "library",
- "license": "MIT",
- "authors": [
- {
- "name": "Emanuil Rusev",
- "email": "hello@erusev.com",
- "homepage": "http://erusev.com"
- }
- ],
- "require": {
- "erusev/parsedown": "^1.7.4"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.35"
- },
- "autoload": {
- "psr-0": {"ParsedownExtra": ""}
- },
- "autoload-dev": {
- "psr-0": {
- "TestParsedown": "test/",
- "ParsedownExtraTest": "test/",
- "ParsedownTest": "vendor/erusev/parsedown/test/",
- "CommonMarkTest": "vendor/erusev/parsedown/test/",
- "CommonMarkTestWeak": "vendor/erusev/parsedown/test/"
- }
- }
-}
diff --git a/vendor/erusev/parsedown-extra/phpunit.xml.dist b/vendor/erusev/parsedown-extra/phpunit.xml.dist
deleted file mode 100644
index 29880b56..00000000
--- a/vendor/erusev/parsedown-extra/phpunit.xml.dist
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
- test/ParsedownExtraTest.php
-
-
-
diff --git a/vendor/erusev/parsedown-extra/test/ParsedownExtraTest.php b/vendor/erusev/parsedown-extra/test/ParsedownExtraTest.php
deleted file mode 100644
index d2a6d23c..00000000
--- a/vendor/erusev/parsedown-extra/test/ParsedownExtraTest.php
+++ /dev/null
@@ -1,11 +0,0 @@
-textLevelElements;
- }
-}
diff --git a/vendor/erusev/parsedown-extra/test/data/abbreviation.html b/vendor/erusev/parsedown-extra/test/data/abbreviation.html
deleted file mode 100644
index 9b3a45c4..00000000
--- a/vendor/erusev/parsedown-extra/test/data/abbreviation.html
+++ /dev/null
@@ -1,3 +0,0 @@
-The HTML specification
-is maintained by the W3C .
-The abbreviation ML is contained in the abbreviation HTML .
\ No newline at end of file
diff --git a/vendor/erusev/parsedown-extra/test/data/abbreviation.md b/vendor/erusev/parsedown-extra/test/data/abbreviation.md
deleted file mode 100644
index 4ac8f884..00000000
--- a/vendor/erusev/parsedown-extra/test/data/abbreviation.md
+++ /dev/null
@@ -1,7 +0,0 @@
-The HTML specification
-is maintained by the W3C.
-The abbreviation ML is contained in the abbreviation HTML.
-
-*[HTML]: Hyper Text Markup Language
-*[W3C]: World Wide Web Consortium
-*[ML]: Markup Language
\ No newline at end of file
diff --git a/vendor/erusev/parsedown-extra/test/data/compound_footnote.html b/vendor/erusev/parsedown-extra/test/data/compound_footnote.html
deleted file mode 100644
index 1a3848fd..00000000
--- a/vendor/erusev/parsedown-extra/test/data/compound_footnote.html
+++ /dev/null
@@ -1,18 +0,0 @@
-footnote and another one
-
\ No newline at end of file
diff --git a/vendor/erusev/parsedown-extra/test/data/compound_footnote.md b/vendor/erusev/parsedown-extra/test/data/compound_footnote.md
deleted file mode 100644
index 5bca3c78..00000000
--- a/vendor/erusev/parsedown-extra/test/data/compound_footnote.md
+++ /dev/null
@@ -1,14 +0,0 @@
-footnote [^1] and another one [^2]
-
-[^1]: line 1
- line 2
-
- > quote
-
- another paragraph
-
-[^2]:
- paragraph
-
- another paragraph
-
\ No newline at end of file
diff --git a/vendor/erusev/parsedown-extra/test/data/definition_list.html b/vendor/erusev/parsedown-extra/test/data/definition_list.html
deleted file mode 100644
index 2567dc1c..00000000
--- a/vendor/erusev/parsedown-extra/test/data/definition_list.html
+++ /dev/null
@@ -1,17 +0,0 @@
-
-Term 1
-one
-two
-extra line
-Term 2
-lazy
-line
-multiple
-paragraphs
-nested
-code block
-
-quote
-block
-
-
\ No newline at end of file
diff --git a/vendor/erusev/parsedown-extra/test/data/definition_list.md b/vendor/erusev/parsedown-extra/test/data/definition_list.md
deleted file mode 100644
index ec0ee03f..00000000
--- a/vendor/erusev/parsedown-extra/test/data/definition_list.md
+++ /dev/null
@@ -1,20 +0,0 @@
-Term 1
-: one
-: two
- extra line
-
-Term 2
-
-: lazy
-line
-
-: multiple
-
- paragraphs
-
-: nested
-
- code block
-
- > quote
- > block
\ No newline at end of file
diff --git a/vendor/erusev/parsedown-extra/test/data/footnote.html b/vendor/erusev/parsedown-extra/test/data/footnote.html
deleted file mode 100644
index d0ba76ce..00000000
--- a/vendor/erusev/parsedown-extra/test/data/footnote.html
+++ /dev/null
@@ -1,20 +0,0 @@
-first second .
-first second .
-second time
-
\ No newline at end of file
diff --git a/vendor/erusev/parsedown-extra/test/data/footnote.md b/vendor/erusev/parsedown-extra/test/data/footnote.md
deleted file mode 100644
index 07d70103..00000000
--- a/vendor/erusev/parsedown-extra/test/data/footnote.md
+++ /dev/null
@@ -1,11 +0,0 @@
-first [^1] second [^2].
-
-[^1]: one
-[^2]: two
-
-first [^a] second [^b].
-
-[^a]: one
-[^b]: two
-
-second time [^1]
\ No newline at end of file
diff --git a/vendor/erusev/parsedown-extra/test/data/markdown_inside_markup.html b/vendor/erusev/parsedown-extra/test/data/markdown_inside_markup.html
deleted file mode 100644
index 27da259f..00000000
--- a/vendor/erusev/parsedown-extra/test/data/markdown_inside_markup.html
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
markdown
-
This is another paragraph. It contains inline markup .
-
-_no markdown_
-
-
-
-
-
-
-
-
-_no markdown_
-
\ No newline at end of file
diff --git a/vendor/erusev/parsedown-extra/test/data/markdown_inside_markup.md b/vendor/erusev/parsedown-extra/test/data/markdown_inside_markup.md
deleted file mode 100644
index dbb85d66..00000000
--- a/vendor/erusev/parsedown-extra/test/data/markdown_inside_markup.md
+++ /dev/null
@@ -1,32 +0,0 @@
-
-_markdown_
-
-This is another paragraph. It contains
inline markup .
-
-_no markdown_
-
-
-
----
-
-
-_markdown_
-
-_markdown_
-
-
-
----
-
-
-_no markdown_
-
-_markdown_
-
-
-
----
-
-
-_no markdown_
-
\ No newline at end of file
diff --git a/vendor/erusev/parsedown-extra/test/data/special_attributes.html b/vendor/erusev/parsedown-extra/test/data/special_attributes.html
deleted file mode 100644
index cafa3110..00000000
--- a/vendor/erusev/parsedown-extra/test/data/special_attributes.html
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-The Site
-The Site
-link
-
\ No newline at end of file
diff --git a/vendor/erusev/parsedown-extra/test/data/special_attributes.md b/vendor/erusev/parsedown-extra/test/data/special_attributes.md
deleted file mode 100644
index 01f29fc9..00000000
--- a/vendor/erusev/parsedown-extra/test/data/special_attributes.md
+++ /dev/null
@@ -1,12 +0,0 @@
-Header 1 {#header1}
-========
-
-## Header 2 ## {#header2}
-
-## The Site ## {.main}
-
-## The Site ## {.main .shine #the-site}
-
-[link](http://parsedown.org) {.primary #link .upper-case}
-
- {#logo .big}
\ No newline at end of file
diff --git a/vendor/erusev/parsedown/LICENSE.txt b/vendor/erusev/parsedown/LICENSE.txt
deleted file mode 100644
index 8e7c764d..00000000
--- a/vendor/erusev/parsedown/LICENSE.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2013-2018 Emanuil Rusev, erusev.com
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vendor/erusev/parsedown/Parsedown.php b/vendor/erusev/parsedown/Parsedown.php
deleted file mode 100644
index 1b9d6d5b..00000000
--- a/vendor/erusev/parsedown/Parsedown.php
+++ /dev/null
@@ -1,1712 +0,0 @@
-DefinitionData = array();
-
- # standardize line breaks
- $text = str_replace(array("\r\n", "\r"), "\n", $text);
-
- # remove surrounding line breaks
- $text = trim($text, "\n");
-
- # split text into lines
- $lines = explode("\n", $text);
-
- # iterate through lines to identify blocks
- $markup = $this->lines($lines);
-
- # trim line breaks
- $markup = trim($markup, "\n");
-
- return $markup;
- }
-
- #
- # Setters
- #
-
- function setBreaksEnabled($breaksEnabled)
- {
- $this->breaksEnabled = $breaksEnabled;
-
- return $this;
- }
-
- protected $breaksEnabled;
-
- function setMarkupEscaped($markupEscaped)
- {
- $this->markupEscaped = $markupEscaped;
-
- return $this;
- }
-
- protected $markupEscaped;
-
- function setUrlsLinked($urlsLinked)
- {
- $this->urlsLinked = $urlsLinked;
-
- return $this;
- }
-
- protected $urlsLinked = true;
-
- function setSafeMode($safeMode)
- {
- $this->safeMode = (bool) $safeMode;
-
- return $this;
- }
-
- protected $safeMode;
-
- protected $safeLinksWhitelist = array(
- 'http://',
- 'https://',
- 'ftp://',
- 'ftps://',
- 'mailto:',
- 'data:image/png;base64,',
- 'data:image/gif;base64,',
- 'data:image/jpeg;base64,',
- 'irc:',
- 'ircs:',
- 'git:',
- 'ssh:',
- 'news:',
- 'steam:',
- );
-
- #
- # Lines
- #
-
- protected $BlockTypes = array(
- '#' => array('Header'),
- '*' => array('Rule', 'List'),
- '+' => array('List'),
- '-' => array('SetextHeader', 'Table', 'Rule', 'List'),
- '0' => array('List'),
- '1' => array('List'),
- '2' => array('List'),
- '3' => array('List'),
- '4' => array('List'),
- '5' => array('List'),
- '6' => array('List'),
- '7' => array('List'),
- '8' => array('List'),
- '9' => array('List'),
- ':' => array('Table'),
- '<' => array('Comment', 'Markup'),
- '=' => array('SetextHeader'),
- '>' => array('Quote'),
- '[' => array('Reference'),
- '_' => array('Rule'),
- '`' => array('FencedCode'),
- '|' => array('Table'),
- '~' => array('FencedCode'),
- );
-
- # ~
-
- protected $unmarkedBlockTypes = array(
- 'Code',
- );
-
- #
- # Blocks
- #
-
- protected function lines(array $lines)
- {
- $CurrentBlock = null;
-
- foreach ($lines as $line)
- {
- if (chop($line) === '')
- {
- if (isset($CurrentBlock))
- {
- $CurrentBlock['interrupted'] = true;
- }
-
- continue;
- }
-
- if (strpos($line, "\t") !== false)
- {
- $parts = explode("\t", $line);
-
- $line = $parts[0];
-
- unset($parts[0]);
-
- foreach ($parts as $part)
- {
- $shortage = 4 - mb_strlen($line, 'utf-8') % 4;
-
- $line .= str_repeat(' ', $shortage);
- $line .= $part;
- }
- }
-
- $indent = 0;
-
- while (isset($line[$indent]) and $line[$indent] === ' ')
- {
- $indent ++;
- }
-
- $text = $indent > 0 ? substr($line, $indent) : $line;
-
- # ~
-
- $Line = array('body' => $line, 'indent' => $indent, 'text' => $text);
-
- # ~
-
- if (isset($CurrentBlock['continuable']))
- {
- $Block = $this->{'block'.$CurrentBlock['type'].'Continue'}($Line, $CurrentBlock);
-
- if (isset($Block))
- {
- $CurrentBlock = $Block;
-
- continue;
- }
- else
- {
- if ($this->isBlockCompletable($CurrentBlock['type']))
- {
- $CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock);
- }
- }
- }
-
- # ~
-
- $marker = $text[0];
-
- # ~
-
- $blockTypes = $this->unmarkedBlockTypes;
-
- if (isset($this->BlockTypes[$marker]))
- {
- foreach ($this->BlockTypes[$marker] as $blockType)
- {
- $blockTypes []= $blockType;
- }
- }
-
- #
- # ~
-
- foreach ($blockTypes as $blockType)
- {
- $Block = $this->{'block'.$blockType}($Line, $CurrentBlock);
-
- if (isset($Block))
- {
- $Block['type'] = $blockType;
-
- if ( ! isset($Block['identified']))
- {
- $Blocks []= $CurrentBlock;
-
- $Block['identified'] = true;
- }
-
- if ($this->isBlockContinuable($blockType))
- {
- $Block['continuable'] = true;
- }
-
- $CurrentBlock = $Block;
-
- continue 2;
- }
- }
-
- # ~
-
- if (isset($CurrentBlock) and ! isset($CurrentBlock['type']) and ! isset($CurrentBlock['interrupted']))
- {
- $CurrentBlock['element']['text'] .= "\n".$text;
- }
- else
- {
- $Blocks []= $CurrentBlock;
-
- $CurrentBlock = $this->paragraph($Line);
-
- $CurrentBlock['identified'] = true;
- }
- }
-
- # ~
-
- if (isset($CurrentBlock['continuable']) and $this->isBlockCompletable($CurrentBlock['type']))
- {
- $CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock);
- }
-
- # ~
-
- $Blocks []= $CurrentBlock;
-
- unset($Blocks[0]);
-
- # ~
-
- $markup = '';
-
- foreach ($Blocks as $Block)
- {
- if (isset($Block['hidden']))
- {
- continue;
- }
-
- $markup .= "\n";
- $markup .= isset($Block['markup']) ? $Block['markup'] : $this->element($Block['element']);
- }
-
- $markup .= "\n";
-
- # ~
-
- return $markup;
- }
-
- protected function isBlockContinuable($Type)
- {
- return method_exists($this, 'block'.$Type.'Continue');
- }
-
- protected function isBlockCompletable($Type)
- {
- return method_exists($this, 'block'.$Type.'Complete');
- }
-
- #
- # Code
-
- protected function blockCode($Line, $Block = null)
- {
- if (isset($Block) and ! isset($Block['type']) and ! isset($Block['interrupted']))
- {
- return;
- }
-
- if ($Line['indent'] >= 4)
- {
- $text = substr($Line['body'], 4);
-
- $Block = array(
- 'element' => array(
- 'name' => 'pre',
- 'handler' => 'element',
- 'text' => array(
- 'name' => 'code',
- 'text' => $text,
- ),
- ),
- );
-
- return $Block;
- }
- }
-
- protected function blockCodeContinue($Line, $Block)
- {
- if ($Line['indent'] >= 4)
- {
- if (isset($Block['interrupted']))
- {
- $Block['element']['text']['text'] .= "\n";
-
- unset($Block['interrupted']);
- }
-
- $Block['element']['text']['text'] .= "\n";
-
- $text = substr($Line['body'], 4);
-
- $Block['element']['text']['text'] .= $text;
-
- return $Block;
- }
- }
-
- protected function blockCodeComplete($Block)
- {
- $text = $Block['element']['text']['text'];
-
- $Block['element']['text']['text'] = $text;
-
- return $Block;
- }
-
- #
- # Comment
-
- protected function blockComment($Line)
- {
- if ($this->markupEscaped or $this->safeMode)
- {
- return;
- }
-
- if (isset($Line['text'][3]) and $Line['text'][3] === '-' and $Line['text'][2] === '-' and $Line['text'][1] === '!')
- {
- $Block = array(
- 'markup' => $Line['body'],
- );
-
- if (preg_match('/-->$/', $Line['text']))
- {
- $Block['closed'] = true;
- }
-
- return $Block;
- }
- }
-
- protected function blockCommentContinue($Line, array $Block)
- {
- if (isset($Block['closed']))
- {
- return;
- }
-
- $Block['markup'] .= "\n" . $Line['body'];
-
- if (preg_match('/-->$/', $Line['text']))
- {
- $Block['closed'] = true;
- }
-
- return $Block;
- }
-
- #
- # Fenced Code
-
- protected function blockFencedCode($Line)
- {
- if (preg_match('/^['.$Line['text'][0].']{3,}[ ]*([^`]+)?[ ]*$/', $Line['text'], $matches))
- {
- $Element = array(
- 'name' => 'code',
- 'text' => '',
- );
-
- if (isset($matches[1]))
- {
- /**
- * https://www.w3.org/TR/2011/WD-html5-20110525/elements.html#classes
- * Every HTML element may have a class attribute specified.
- * The attribute, if specified, must have a value that is a set
- * of space-separated tokens representing the various classes
- * that the element belongs to.
- * [...]
- * The space characters, for the purposes of this specification,
- * are U+0020 SPACE, U+0009 CHARACTER TABULATION (tab),
- * U+000A LINE FEED (LF), U+000C FORM FEED (FF), and
- * U+000D CARRIAGE RETURN (CR).
- */
- $language = substr($matches[1], 0, strcspn($matches[1], " \t\n\f\r"));
-
- $class = 'language-'.$language;
-
- $Element['attributes'] = array(
- 'class' => $class,
- );
- }
-
- $Block = array(
- 'char' => $Line['text'][0],
- 'element' => array(
- 'name' => 'pre',
- 'handler' => 'element',
- 'text' => $Element,
- ),
- );
-
- return $Block;
- }
- }
-
- protected function blockFencedCodeContinue($Line, $Block)
- {
- if (isset($Block['complete']))
- {
- return;
- }
-
- if (isset($Block['interrupted']))
- {
- $Block['element']['text']['text'] .= "\n";
-
- unset($Block['interrupted']);
- }
-
- if (preg_match('/^'.$Block['char'].'{3,}[ ]*$/', $Line['text']))
- {
- $Block['element']['text']['text'] = substr($Block['element']['text']['text'], 1);
-
- $Block['complete'] = true;
-
- return $Block;
- }
-
- $Block['element']['text']['text'] .= "\n".$Line['body'];
-
- return $Block;
- }
-
- protected function blockFencedCodeComplete($Block)
- {
- $text = $Block['element']['text']['text'];
-
- $Block['element']['text']['text'] = $text;
-
- return $Block;
- }
-
- #
- # Header
-
- protected function blockHeader($Line)
- {
- if (isset($Line['text'][1]))
- {
- $level = 1;
-
- while (isset($Line['text'][$level]) and $Line['text'][$level] === '#')
- {
- $level ++;
- }
-
- if ($level > 6)
- {
- return;
- }
-
- $text = trim($Line['text'], '# ');
-
- $Block = array(
- 'element' => array(
- 'name' => 'h' . min(6, $level),
- 'text' => $text,
- 'handler' => 'line',
- ),
- );
-
- return $Block;
- }
- }
-
- #
- # List
-
- protected function blockList($Line)
- {
- list($name, $pattern) = $Line['text'][0] <= '-' ? array('ul', '[*+-]') : array('ol', '[0-9]+[.]');
-
- if (preg_match('/^('.$pattern.'[ ]+)(.*)/', $Line['text'], $matches))
- {
- $Block = array(
- 'indent' => $Line['indent'],
- 'pattern' => $pattern,
- 'element' => array(
- 'name' => $name,
- 'handler' => 'elements',
- ),
- );
-
- if($name === 'ol')
- {
- $listStart = stristr($matches[0], '.', true);
-
- if($listStart !== '1')
- {
- $Block['element']['attributes'] = array('start' => $listStart);
- }
- }
-
- $Block['li'] = array(
- 'name' => 'li',
- 'handler' => 'li',
- 'text' => array(
- $matches[2],
- ),
- );
-
- $Block['element']['text'] []= & $Block['li'];
-
- return $Block;
- }
- }
-
- protected function blockListContinue($Line, array $Block)
- {
- if ($Block['indent'] === $Line['indent'] and preg_match('/^'.$Block['pattern'].'(?:[ ]+(.*)|$)/', $Line['text'], $matches))
- {
- if (isset($Block['interrupted']))
- {
- $Block['li']['text'] []= '';
-
- $Block['loose'] = true;
-
- unset($Block['interrupted']);
- }
-
- unset($Block['li']);
-
- $text = isset($matches[1]) ? $matches[1] : '';
-
- $Block['li'] = array(
- 'name' => 'li',
- 'handler' => 'li',
- 'text' => array(
- $text,
- ),
- );
-
- $Block['element']['text'] []= & $Block['li'];
-
- return $Block;
- }
-
- if ($Line['text'][0] === '[' and $this->blockReference($Line))
- {
- return $Block;
- }
-
- if ( ! isset($Block['interrupted']))
- {
- $text = preg_replace('/^[ ]{0,4}/', '', $Line['body']);
-
- $Block['li']['text'] []= $text;
-
- return $Block;
- }
-
- if ($Line['indent'] > 0)
- {
- $Block['li']['text'] []= '';
-
- $text = preg_replace('/^[ ]{0,4}/', '', $Line['body']);
-
- $Block['li']['text'] []= $text;
-
- unset($Block['interrupted']);
-
- return $Block;
- }
- }
-
- protected function blockListComplete(array $Block)
- {
- if (isset($Block['loose']))
- {
- foreach ($Block['element']['text'] as &$li)
- {
- if (end($li['text']) !== '')
- {
- $li['text'] []= '';
- }
- }
- }
-
- return $Block;
- }
-
- #
- # Quote
-
- protected function blockQuote($Line)
- {
- if (preg_match('/^>[ ]?(.*)/', $Line['text'], $matches))
- {
- $Block = array(
- 'element' => array(
- 'name' => 'blockquote',
- 'handler' => 'lines',
- 'text' => (array) $matches[1],
- ),
- );
-
- return $Block;
- }
- }
-
- protected function blockQuoteContinue($Line, array $Block)
- {
- if ($Line['text'][0] === '>' and preg_match('/^>[ ]?(.*)/', $Line['text'], $matches))
- {
- if (isset($Block['interrupted']))
- {
- $Block['element']['text'] []= '';
-
- unset($Block['interrupted']);
- }
-
- $Block['element']['text'] []= $matches[1];
-
- return $Block;
- }
-
- if ( ! isset($Block['interrupted']))
- {
- $Block['element']['text'] []= $Line['text'];
-
- return $Block;
- }
- }
-
- #
- # Rule
-
- protected function blockRule($Line)
- {
- if (preg_match('/^(['.$Line['text'][0].'])([ ]*\1){2,}[ ]*$/', $Line['text']))
- {
- $Block = array(
- 'element' => array(
- 'name' => 'hr'
- ),
- );
-
- return $Block;
- }
- }
-
- #
- # Setext
-
- protected function blockSetextHeader($Line, array $Block = null)
- {
- if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted']))
- {
- return;
- }
-
- if (chop($Line['text'], $Line['text'][0]) === '')
- {
- $Block['element']['name'] = $Line['text'][0] === '=' ? 'h1' : 'h2';
-
- return $Block;
- }
- }
-
- #
- # Markup
-
- protected function blockMarkup($Line)
- {
- if ($this->markupEscaped or $this->safeMode)
- {
- return;
- }
-
- if (preg_match('/^<(\w[\w-]*)(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*(\/)?>/', $Line['text'], $matches))
- {
- $element = strtolower($matches[1]);
-
- if (in_array($element, $this->textLevelElements))
- {
- return;
- }
-
- $Block = array(
- 'name' => $matches[1],
- 'depth' => 0,
- 'markup' => $Line['text'],
- );
-
- $length = strlen($matches[0]);
-
- $remainder = substr($Line['text'], $length);
-
- if (trim($remainder) === '')
- {
- if (isset($matches[2]) or in_array($matches[1], $this->voidElements))
- {
- $Block['closed'] = true;
-
- $Block['void'] = true;
- }
- }
- else
- {
- if (isset($matches[2]) or in_array($matches[1], $this->voidElements))
- {
- return;
- }
-
- if (preg_match('/<\/'.$matches[1].'>[ ]*$/i', $remainder))
- {
- $Block['closed'] = true;
- }
- }
-
- return $Block;
- }
- }
-
- protected function blockMarkupContinue($Line, array $Block)
- {
- if (isset($Block['closed']))
- {
- return;
- }
-
- if (preg_match('/^<'.$Block['name'].'(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*>/i', $Line['text'])) # open
- {
- $Block['depth'] ++;
- }
-
- if (preg_match('/(.*?)<\/'.$Block['name'].'>[ ]*$/i', $Line['text'], $matches)) # close
- {
- if ($Block['depth'] > 0)
- {
- $Block['depth'] --;
- }
- else
- {
- $Block['closed'] = true;
- }
- }
-
- if (isset($Block['interrupted']))
- {
- $Block['markup'] .= "\n";
-
- unset($Block['interrupted']);
- }
-
- $Block['markup'] .= "\n".$Line['body'];
-
- return $Block;
- }
-
- #
- # Reference
-
- protected function blockReference($Line)
- {
- if (preg_match('/^\[(.+?)\]:[ ]*(\S+?)>?(?:[ ]+["\'(](.+)["\')])?[ ]*$/', $Line['text'], $matches))
- {
- $id = strtolower($matches[1]);
-
- $Data = array(
- 'url' => $matches[2],
- 'title' => null,
- );
-
- if (isset($matches[3]))
- {
- $Data['title'] = $matches[3];
- }
-
- $this->DefinitionData['Reference'][$id] = $Data;
-
- $Block = array(
- 'hidden' => true,
- );
-
- return $Block;
- }
- }
-
- #
- # Table
-
- protected function blockTable($Line, array $Block = null)
- {
- if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted']))
- {
- return;
- }
-
- if (strpos($Block['element']['text'], '|') !== false and chop($Line['text'], ' -:|') === '')
- {
- $alignments = array();
-
- $divider = $Line['text'];
-
- $divider = trim($divider);
- $divider = trim($divider, '|');
-
- $dividerCells = explode('|', $divider);
-
- foreach ($dividerCells as $dividerCell)
- {
- $dividerCell = trim($dividerCell);
-
- if ($dividerCell === '')
- {
- continue;
- }
-
- $alignment = null;
-
- if ($dividerCell[0] === ':')
- {
- $alignment = 'left';
- }
-
- if (substr($dividerCell, - 1) === ':')
- {
- $alignment = $alignment === 'left' ? 'center' : 'right';
- }
-
- $alignments []= $alignment;
- }
-
- # ~
-
- $HeaderElements = array();
-
- $header = $Block['element']['text'];
-
- $header = trim($header);
- $header = trim($header, '|');
-
- $headerCells = explode('|', $header);
-
- foreach ($headerCells as $index => $headerCell)
- {
- $headerCell = trim($headerCell);
-
- $HeaderElement = array(
- 'name' => 'th',
- 'text' => $headerCell,
- 'handler' => 'line',
- );
-
- if (isset($alignments[$index]))
- {
- $alignment = $alignments[$index];
-
- $HeaderElement['attributes'] = array(
- 'style' => 'text-align: '.$alignment.';',
- );
- }
-
- $HeaderElements []= $HeaderElement;
- }
-
- # ~
-
- $Block = array(
- 'alignments' => $alignments,
- 'identified' => true,
- 'element' => array(
- 'name' => 'table',
- 'handler' => 'elements',
- ),
- );
-
- $Block['element']['text'] []= array(
- 'name' => 'thead',
- 'handler' => 'elements',
- );
-
- $Block['element']['text'] []= array(
- 'name' => 'tbody',
- 'handler' => 'elements',
- 'text' => array(),
- );
-
- $Block['element']['text'][0]['text'] []= array(
- 'name' => 'tr',
- 'handler' => 'elements',
- 'text' => $HeaderElements,
- );
-
- return $Block;
- }
- }
-
- protected function blockTableContinue($Line, array $Block)
- {
- if (isset($Block['interrupted']))
- {
- return;
- }
-
- if ($Line['text'][0] === '|' or strpos($Line['text'], '|'))
- {
- $Elements = array();
-
- $row = $Line['text'];
-
- $row = trim($row);
- $row = trim($row, '|');
-
- preg_match_all('/(?:(\\\\[|])|[^|`]|`[^`]+`|`)+/', $row, $matches);
-
- foreach ($matches[0] as $index => $cell)
- {
- $cell = trim($cell);
-
- $Element = array(
- 'name' => 'td',
- 'handler' => 'line',
- 'text' => $cell,
- );
-
- if (isset($Block['alignments'][$index]))
- {
- $Element['attributes'] = array(
- 'style' => 'text-align: '.$Block['alignments'][$index].';',
- );
- }
-
- $Elements []= $Element;
- }
-
- $Element = array(
- 'name' => 'tr',
- 'handler' => 'elements',
- 'text' => $Elements,
- );
-
- $Block['element']['text'][1]['text'] []= $Element;
-
- return $Block;
- }
- }
-
- #
- # ~
- #
-
- protected function paragraph($Line)
- {
- $Block = array(
- 'element' => array(
- 'name' => 'p',
- 'text' => $Line['text'],
- 'handler' => 'line',
- ),
- );
-
- return $Block;
- }
-
- #
- # Inline Elements
- #
-
- protected $InlineTypes = array(
- '"' => array('SpecialCharacter'),
- '!' => array('Image'),
- '&' => array('SpecialCharacter'),
- '*' => array('Emphasis'),
- ':' => array('Url'),
- '<' => array('UrlTag', 'EmailTag', 'Markup', 'SpecialCharacter'),
- '>' => array('SpecialCharacter'),
- '[' => array('Link'),
- '_' => array('Emphasis'),
- '`' => array('Code'),
- '~' => array('Strikethrough'),
- '\\' => array('EscapeSequence'),
- );
-
- # ~
-
- protected $inlineMarkerList = '!"*_&[:<>`~\\';
-
- #
- # ~
- #
-
- public function line($text, $nonNestables=array())
- {
- $markup = '';
-
- # $excerpt is based on the first occurrence of a marker
-
- while ($excerpt = strpbrk($text, $this->inlineMarkerList))
- {
- $marker = $excerpt[0];
-
- $markerPosition = strpos($text, $marker);
-
- $Excerpt = array('text' => $excerpt, 'context' => $text);
-
- foreach ($this->InlineTypes[$marker] as $inlineType)
- {
- # check to see if the current inline type is nestable in the current context
-
- if ( ! empty($nonNestables) and in_array($inlineType, $nonNestables))
- {
- continue;
- }
-
- $Inline = $this->{'inline'.$inlineType}($Excerpt);
-
- if ( ! isset($Inline))
- {
- continue;
- }
-
- # makes sure that the inline belongs to "our" marker
-
- if (isset($Inline['position']) and $Inline['position'] > $markerPosition)
- {
- continue;
- }
-
- # sets a default inline position
-
- if ( ! isset($Inline['position']))
- {
- $Inline['position'] = $markerPosition;
- }
-
- # cause the new element to 'inherit' our non nestables
-
- foreach ($nonNestables as $non_nestable)
- {
- $Inline['element']['nonNestables'][] = $non_nestable;
- }
-
- # the text that comes before the inline
- $unmarkedText = substr($text, 0, $Inline['position']);
-
- # compile the unmarked text
- $markup .= $this->unmarkedText($unmarkedText);
-
- # compile the inline
- $markup .= isset($Inline['markup']) ? $Inline['markup'] : $this->element($Inline['element']);
-
- # remove the examined text
- $text = substr($text, $Inline['position'] + $Inline['extent']);
-
- continue 2;
- }
-
- # the marker does not belong to an inline
-
- $unmarkedText = substr($text, 0, $markerPosition + 1);
-
- $markup .= $this->unmarkedText($unmarkedText);
-
- $text = substr($text, $markerPosition + 1);
- }
-
- $markup .= $this->unmarkedText($text);
-
- return $markup;
- }
-
- #
- # ~
- #
-
- protected function inlineCode($Excerpt)
- {
- $marker = $Excerpt['text'][0];
-
- if (preg_match('/^('.$marker.'+)[ ]*(.+?)[ ]*(? strlen($matches[0]),
- 'element' => array(
- 'name' => 'code',
- 'text' => $text,
- ),
- );
- }
- }
-
- protected function inlineEmailTag($Excerpt)
- {
- if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<((mailto:)?\S+?@\S+?)>/i', $Excerpt['text'], $matches))
- {
- $url = $matches[1];
-
- if ( ! isset($matches[2]))
- {
- $url = 'mailto:' . $url;
- }
-
- return array(
- 'extent' => strlen($matches[0]),
- 'element' => array(
- 'name' => 'a',
- 'text' => $matches[1],
- 'attributes' => array(
- 'href' => $url,
- ),
- ),
- );
- }
- }
-
- protected function inlineEmphasis($Excerpt)
- {
- if ( ! isset($Excerpt['text'][1]))
- {
- return;
- }
-
- $marker = $Excerpt['text'][0];
-
- if ($Excerpt['text'][1] === $marker and preg_match($this->StrongRegex[$marker], $Excerpt['text'], $matches))
- {
- $emphasis = 'strong';
- }
- elseif (preg_match($this->EmRegex[$marker], $Excerpt['text'], $matches))
- {
- $emphasis = 'em';
- }
- else
- {
- return;
- }
-
- return array(
- 'extent' => strlen($matches[0]),
- 'element' => array(
- 'name' => $emphasis,
- 'handler' => 'line',
- 'text' => $matches[1],
- ),
- );
- }
-
- protected function inlineEscapeSequence($Excerpt)
- {
- if (isset($Excerpt['text'][1]) and in_array($Excerpt['text'][1], $this->specialCharacters))
- {
- return array(
- 'markup' => $Excerpt['text'][1],
- 'extent' => 2,
- );
- }
- }
-
- protected function inlineImage($Excerpt)
- {
- if ( ! isset($Excerpt['text'][1]) or $Excerpt['text'][1] !== '[')
- {
- return;
- }
-
- $Excerpt['text']= substr($Excerpt['text'], 1);
-
- $Link = $this->inlineLink($Excerpt);
-
- if ($Link === null)
- {
- return;
- }
-
- $Inline = array(
- 'extent' => $Link['extent'] + 1,
- 'element' => array(
- 'name' => 'img',
- 'attributes' => array(
- 'src' => $Link['element']['attributes']['href'],
- 'alt' => $Link['element']['text'],
- ),
- ),
- );
-
- $Inline['element']['attributes'] += $Link['element']['attributes'];
-
- unset($Inline['element']['attributes']['href']);
-
- return $Inline;
- }
-
- protected function inlineLink($Excerpt)
- {
- $Element = array(
- 'name' => 'a',
- 'handler' => 'line',
- 'nonNestables' => array('Url', 'Link'),
- 'text' => null,
- 'attributes' => array(
- 'href' => null,
- 'title' => null,
- ),
- );
-
- $extent = 0;
-
- $remainder = $Excerpt['text'];
-
- if (preg_match('/\[((?:[^][]++|(?R))*+)\]/', $remainder, $matches))
- {
- $Element['text'] = $matches[1];
-
- $extent += strlen($matches[0]);
-
- $remainder = substr($remainder, $extent);
- }
- else
- {
- return;
- }
-
- if (preg_match('/^[(]\s*+((?:[^ ()]++|[(][^ )]+[)])++)(?:[ ]+("[^"]*"|\'[^\']*\'))?\s*[)]/', $remainder, $matches))
- {
- $Element['attributes']['href'] = $matches[1];
-
- if (isset($matches[2]))
- {
- $Element['attributes']['title'] = substr($matches[2], 1, - 1);
- }
-
- $extent += strlen($matches[0]);
- }
- else
- {
- if (preg_match('/^\s*\[(.*?)\]/', $remainder, $matches))
- {
- $definition = strlen($matches[1]) ? $matches[1] : $Element['text'];
- $definition = strtolower($definition);
-
- $extent += strlen($matches[0]);
- }
- else
- {
- $definition = strtolower($Element['text']);
- }
-
- if ( ! isset($this->DefinitionData['Reference'][$definition]))
- {
- return;
- }
-
- $Definition = $this->DefinitionData['Reference'][$definition];
-
- $Element['attributes']['href'] = $Definition['url'];
- $Element['attributes']['title'] = $Definition['title'];
- }
-
- return array(
- 'extent' => $extent,
- 'element' => $Element,
- );
- }
-
- protected function inlineMarkup($Excerpt)
- {
- if ($this->markupEscaped or $this->safeMode or strpos($Excerpt['text'], '>') === false)
- {
- return;
- }
-
- if ($Excerpt['text'][1] === '/' and preg_match('/^<\/\w[\w-]*[ ]*>/s', $Excerpt['text'], $matches))
- {
- return array(
- 'markup' => $matches[0],
- 'extent' => strlen($matches[0]),
- );
- }
-
- if ($Excerpt['text'][1] === '!' and preg_match('/^/s', $Excerpt['text'], $matches))
- {
- return array(
- 'markup' => $matches[0],
- 'extent' => strlen($matches[0]),
- );
- }
-
- if ($Excerpt['text'][1] !== ' ' and preg_match('/^<\w[\w-]*(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*\/?>/s', $Excerpt['text'], $matches))
- {
- return array(
- 'markup' => $matches[0],
- 'extent' => strlen($matches[0]),
- );
- }
- }
-
- protected function inlineSpecialCharacter($Excerpt)
- {
- if ($Excerpt['text'][0] === '&' and ! preg_match('/^?\w+;/', $Excerpt['text']))
- {
- return array(
- 'markup' => '&',
- 'extent' => 1,
- );
- }
-
- $SpecialCharacter = array('>' => 'gt', '<' => 'lt', '"' => 'quot');
-
- if (isset($SpecialCharacter[$Excerpt['text'][0]]))
- {
- return array(
- 'markup' => '&'.$SpecialCharacter[$Excerpt['text'][0]].';',
- 'extent' => 1,
- );
- }
- }
-
- protected function inlineStrikethrough($Excerpt)
- {
- if ( ! isset($Excerpt['text'][1]))
- {
- return;
- }
-
- if ($Excerpt['text'][1] === '~' and preg_match('/^~~(?=\S)(.+?)(?<=\S)~~/', $Excerpt['text'], $matches))
- {
- return array(
- 'extent' => strlen($matches[0]),
- 'element' => array(
- 'name' => 'del',
- 'text' => $matches[1],
- 'handler' => 'line',
- ),
- );
- }
- }
-
- protected function inlineUrl($Excerpt)
- {
- if ($this->urlsLinked !== true or ! isset($Excerpt['text'][2]) or $Excerpt['text'][2] !== '/')
- {
- return;
- }
-
- if (preg_match('/\bhttps?:[\/]{2}[^\s<]+\b\/*/ui', $Excerpt['context'], $matches, PREG_OFFSET_CAPTURE))
- {
- $url = $matches[0][0];
-
- $Inline = array(
- 'extent' => strlen($matches[0][0]),
- 'position' => $matches[0][1],
- 'element' => array(
- 'name' => 'a',
- 'text' => $url,
- 'attributes' => array(
- 'href' => $url,
- ),
- ),
- );
-
- return $Inline;
- }
- }
-
- protected function inlineUrlTag($Excerpt)
- {
- if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<(\w+:\/{2}[^ >]+)>/i', $Excerpt['text'], $matches))
- {
- $url = $matches[1];
-
- return array(
- 'extent' => strlen($matches[0]),
- 'element' => array(
- 'name' => 'a',
- 'text' => $url,
- 'attributes' => array(
- 'href' => $url,
- ),
- ),
- );
- }
- }
-
- # ~
-
- protected function unmarkedText($text)
- {
- if ($this->breaksEnabled)
- {
- $text = preg_replace('/[ ]*\n/', " \n", $text);
- }
- else
- {
- $text = preg_replace('/(?:[ ][ ]+|[ ]*\\\\)\n/', " \n", $text);
- $text = str_replace(" \n", "\n", $text);
- }
-
- return $text;
- }
-
- #
- # Handlers
- #
-
- protected function element(array $Element)
- {
- if ($this->safeMode)
- {
- $Element = $this->sanitiseElement($Element);
- }
-
- $markup = '<'.$Element['name'];
-
- if (isset($Element['attributes']))
- {
- foreach ($Element['attributes'] as $name => $value)
- {
- if ($value === null)
- {
- continue;
- }
-
- $markup .= ' '.$name.'="'.self::escape($value).'"';
- }
- }
-
- $permitRawHtml = false;
-
- if (isset($Element['text']))
- {
- $text = $Element['text'];
- }
- // very strongly consider an alternative if you're writing an
- // extension
- elseif (isset($Element['rawHtml']))
- {
- $text = $Element['rawHtml'];
- $allowRawHtmlInSafeMode = isset($Element['allowRawHtmlInSafeMode']) && $Element['allowRawHtmlInSafeMode'];
- $permitRawHtml = !$this->safeMode || $allowRawHtmlInSafeMode;
- }
-
- if (isset($text))
- {
- $markup .= '>';
-
- if (!isset($Element['nonNestables']))
- {
- $Element['nonNestables'] = array();
- }
-
- if (isset($Element['handler']))
- {
- $markup .= $this->{$Element['handler']}($text, $Element['nonNestables']);
- }
- elseif (!$permitRawHtml)
- {
- $markup .= self::escape($text, true);
- }
- else
- {
- $markup .= $text;
- }
-
- $markup .= ''.$Element['name'].'>';
- }
- else
- {
- $markup .= ' />';
- }
-
- return $markup;
- }
-
- protected function elements(array $Elements)
- {
- $markup = '';
-
- foreach ($Elements as $Element)
- {
- $markup .= "\n" . $this->element($Element);
- }
-
- $markup .= "\n";
-
- return $markup;
- }
-
- # ~
-
- protected function li($lines)
- {
- $markup = $this->lines($lines);
-
- $trimmedMarkup = trim($markup);
-
- if ( ! in_array('', $lines) and substr($trimmedMarkup, 0, 3) === '')
- {
- $markup = $trimmedMarkup;
- $markup = substr($markup, 3);
-
- $position = strpos($markup, "
");
-
- $markup = substr_replace($markup, '', $position, 4);
- }
-
- return $markup;
- }
-
- #
- # Deprecated Methods
- #
-
- function parse($text)
- {
- $markup = $this->text($text);
-
- return $markup;
- }
-
- protected function sanitiseElement(array $Element)
- {
- static $goodAttribute = '/^[a-zA-Z0-9][a-zA-Z0-9-_]*+$/';
- static $safeUrlNameToAtt = array(
- 'a' => 'href',
- 'img' => 'src',
- );
-
- if (isset($safeUrlNameToAtt[$Element['name']]))
- {
- $Element = $this->filterUnsafeUrlInAttribute($Element, $safeUrlNameToAtt[$Element['name']]);
- }
-
- if ( ! empty($Element['attributes']))
- {
- foreach ($Element['attributes'] as $att => $val)
- {
- # filter out badly parsed attribute
- if ( ! preg_match($goodAttribute, $att))
- {
- unset($Element['attributes'][$att]);
- }
- # dump onevent attribute
- elseif (self::striAtStart($att, 'on'))
- {
- unset($Element['attributes'][$att]);
- }
- }
- }
-
- return $Element;
- }
-
- protected function filterUnsafeUrlInAttribute(array $Element, $attribute)
- {
- foreach ($this->safeLinksWhitelist as $scheme)
- {
- if (self::striAtStart($Element['attributes'][$attribute], $scheme))
- {
- return $Element;
- }
- }
-
- $Element['attributes'][$attribute] = str_replace(':', '%3A', $Element['attributes'][$attribute]);
-
- return $Element;
- }
-
- #
- # Static Methods
- #
-
- protected static function escape($text, $allowQuotes = false)
- {
- return htmlspecialchars($text, $allowQuotes ? ENT_NOQUOTES : ENT_QUOTES, 'UTF-8');
- }
-
- protected static function striAtStart($string, $needle)
- {
- $len = strlen($needle);
-
- if ($len > strlen($string))
- {
- return false;
- }
- else
- {
- return strtolower(substr($string, 0, $len)) === strtolower($needle);
- }
- }
-
- static function instance($name = 'default')
- {
- if (isset(self::$instances[$name]))
- {
- return self::$instances[$name];
- }
-
- $instance = new static();
-
- self::$instances[$name] = $instance;
-
- return $instance;
- }
-
- private static $instances = array();
-
- #
- # Fields
- #
-
- protected $DefinitionData;
-
- #
- # Read-Only
-
- protected $specialCharacters = array(
- '\\', '`', '*', '_', '{', '}', '[', ']', '(', ')', '>', '#', '+', '-', '.', '!', '|',
- );
-
- protected $StrongRegex = array(
- '*' => '/^[*]{2}((?:\\\\\*|[^*]|[*][^*]*[*])+?)[*]{2}(?![*])/s',
- '_' => '/^__((?:\\\\_|[^_]|_[^_]*_)+?)__(?!_)/us',
- );
-
- protected $EmRegex = array(
- '*' => '/^[*]((?:\\\\\*|[^*]|[*][*][^*]+?[*][*])+?)[*](?![*])/s',
- '_' => '/^_((?:\\\\_|[^_]|__[^_]*__)+?)_(?!_)\b/us',
- );
-
- protected $regexHtmlAttribute = '[a-zA-Z_:][\w:.-]*(?:\s*=\s*(?:[^"\'=<>`\s]+|"[^"]*"|\'[^\']*\'))?';
-
- protected $voidElements = array(
- 'area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source',
- );
-
- protected $textLevelElements = array(
- 'a', 'br', 'bdo', 'abbr', 'blink', 'nextid', 'acronym', 'basefont',
- 'b', 'em', 'big', 'cite', 'small', 'spacer', 'listing',
- 'i', 'rp', 'del', 'code', 'strike', 'marquee',
- 'q', 'rt', 'ins', 'font', 'strong',
- 's', 'tt', 'kbd', 'mark',
- 'u', 'xm', 'sub', 'nobr',
- 'sup', 'ruby',
- 'var', 'span',
- 'wbr', 'time',
- );
-}
diff --git a/vendor/erusev/parsedown/README.md b/vendor/erusev/parsedown/README.md
deleted file mode 100644
index b5d9ed2e..00000000
--- a/vendor/erusev/parsedown/README.md
+++ /dev/null
@@ -1,86 +0,0 @@
-> I also make [Caret](https://caret.io?ref=parsedown) - a Markdown editor for Mac and PC.
-
-## Parsedown
-
-[](https://travis-ci.org/erusev/parsedown)
-
-
-Better Markdown Parser in PHP
-
-[Demo](http://parsedown.org/demo) |
-[Benchmarks](http://parsedown.org/speed) |
-[Tests](http://parsedown.org/tests/) |
-[Documentation](https://github.com/erusev/parsedown/wiki/)
-
-### Features
-
-* One File
-* No Dependencies
-* Super Fast
-* Extensible
-* [GitHub flavored](https://help.github.com/articles/github-flavored-markdown)
-* Tested in 5.3 to 7.1 and in HHVM
-* [Markdown Extra extension](https://github.com/erusev/parsedown-extra)
-
-### Installation
-
-Include `Parsedown.php` or install [the composer package](https://packagist.org/packages/erusev/parsedown).
-
-### Example
-
-``` php
-$Parsedown = new Parsedown();
-
-echo $Parsedown->text('Hello _Parsedown_!'); # prints: Hello Parsedown !
-```
-
-More examples in [the wiki](https://github.com/erusev/parsedown/wiki/) and in [this video tutorial](http://youtu.be/wYZBY8DEikI).
-
-### Security
-
-Parsedown is capable of escaping user-input within the HTML that it generates. Additionally Parsedown will apply sanitisation to additional scripting vectors (such as scripting link destinations) that are introduced by the markdown syntax itself.
-
-To tell Parsedown that it is processing untrusted user-input, use the following:
-```php
-$parsedown = new Parsedown;
-$parsedown->setSafeMode(true);
-```
-
-If instead, you wish to allow HTML within untrusted user-input, but still want output to be free from XSS it is recommended that you make use of a HTML sanitiser that allows HTML tags to be whitelisted, like [HTML Purifier](http://htmlpurifier.org/).
-
-In both cases you should strongly consider employing defence-in-depth measures, like [deploying a Content-Security-Policy](https://scotthelme.co.uk/content-security-policy-an-introduction/) (a browser security feature) so that your page is likely to be safe even if an attacker finds a vulnerability in one of the first lines of defence above.
-
-#### Security of Parsedown Extensions
-
-Safe mode does not necessarily yield safe results when using extensions to Parsedown. Extensions should be evaluated on their own to determine their specific safety against XSS.
-
-### Escaping HTML
-> ⚠️ **WARNING:** This method isn't safe from XSS!
-
-If you wish to escape HTML **in trusted input**, you can use the following:
-```php
-$parsedown = new Parsedown;
-$parsedown->setMarkupEscaped(true);
-```
-
-Beware that this still allows users to insert unsafe scripting vectors, such as links like `[xss](javascript:alert%281%29)`.
-
-### Questions
-
-**How does Parsedown work?**
-
-It tries to read Markdown like a human. First, it looks at the lines. It’s interested in how the lines start. This helps it recognise blocks. It knows, for example, that if a line starts with a `-` then perhaps it belongs to a list. Once it recognises the blocks, it continues to the content. As it reads, it watches out for special characters. This helps it recognise inline elements (or inlines).
-
-We call this approach "line based". We believe that Parsedown is the first Markdown parser to use it. Since the release of Parsedown, other developers have used the same approach to develop other Markdown parsers in PHP and in other languages.
-
-**Is it compliant with CommonMark?**
-
-It passes most of the CommonMark tests. Most of the tests that don't pass deal with cases that are quite uncommon. Still, as CommonMark matures, compliance should improve.
-
-**Who uses it?**
-
-[Laravel Framework](https://laravel.com/), [Bolt CMS](http://bolt.cm/), [Grav CMS](http://getgrav.org/), [Herbie CMS](http://www.getherbie.org/), [Kirby CMS](http://getkirby.com/), [October CMS](http://octobercms.com/), [Pico CMS](http://picocms.org), [Statamic CMS](http://www.statamic.com/), [phpDocumentor](http://www.phpdoc.org/), [RaspberryPi.org](http://www.raspberrypi.org/), [Symfony demo](https://github.com/symfony/symfony-demo) and [more](https://packagist.org/packages/erusev/parsedown/dependents).
-
-**How can I help?**
-
-Use it, star it, share it and if you feel generous, [donate](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=528P3NZQMP8N2).
diff --git a/vendor/erusev/parsedown/composer.json b/vendor/erusev/parsedown/composer.json
deleted file mode 100644
index f8b40f8c..00000000
--- a/vendor/erusev/parsedown/composer.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "name": "erusev/parsedown",
- "description": "Parser for Markdown.",
- "keywords": ["markdown", "parser"],
- "homepage": "http://parsedown.org",
- "type": "library",
- "license": "MIT",
- "authors": [
- {
- "name": "Emanuil Rusev",
- "email": "hello@erusev.com",
- "homepage": "http://erusev.com"
- }
- ],
- "require": {
- "php": ">=5.3.0",
- "ext-mbstring": "*"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.35"
- },
- "autoload": {
- "psr-0": {"Parsedown": ""}
- },
- "autoload-dev": {
- "psr-0": {
- "TestParsedown": "test/",
- "ParsedownTest": "test/",
- "CommonMarkTest": "test/",
- "CommonMarkTestWeak": "test/"
- }
- }
-}
diff --git a/vendor/ezyang/htmlpurifier/CREDITS b/vendor/ezyang/htmlpurifier/CREDITS
deleted file mode 100644
index 7921b45a..00000000
--- a/vendor/ezyang/htmlpurifier/CREDITS
+++ /dev/null
@@ -1,9 +0,0 @@
-
-CREDITS
-
-Almost everything written by Edward Z. Yang (Ambush Commander). Lots of thanks
-to the DevNetwork Community for their help (see docs/ref-devnetwork.html for
-more details), Feyd especially (namely IPv6 and optimization). Thanks to RSnake
-for letting me package his fantastic XSS cheatsheet for a smoketest.
-
- vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/LICENSE b/vendor/ezyang/htmlpurifier/LICENSE
deleted file mode 100644
index 8c88a20d..00000000
--- a/vendor/ezyang/htmlpurifier/LICENSE
+++ /dev/null
@@ -1,504 +0,0 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL. It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
- When we speak of free software, we are referring to freedom of use,
-not price. Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
- To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
- To protect each distributor, we want to make it very clear that
-there is no warranty for the free library. Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
- Finally, software patents pose a constant threat to the existence of
-any free program. We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder. Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
- Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License. This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License. We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
- When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library. The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom. The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
- We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License. It also provides other free software developers Less
-of an advantage over competing non-free programs. These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries. However, the Lesser license provides advantages in certain
-special circumstances.
-
- For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard. To achieve this, non-free programs must be
-allowed to use the library. A more frequent case is that a free
-library does the same job as widely used non-free libraries. In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
- In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software. For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
- Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
- GNU LESSER GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (1) uses at run time a
- copy of the library already present on the user's computer system,
- rather than copying library functions into the executable, and (2)
- will operate properly with a modified version of the library, if
- the user installs one, as long as the modified version is
- interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- d) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- e) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded. In such case, this License incorporates the limitation as if
-written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
- NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Libraries
-
- If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change. You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
- To apply these terms, attach the following notices to the library. It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
-
- Copyright (C)
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
- , 1 April 1990
- Ty Coon, President of Vice
-
-That's all there is to it!
-
- vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/README.md b/vendor/ezyang/htmlpurifier/README.md
deleted file mode 100644
index 9e0becc0..00000000
--- a/vendor/ezyang/htmlpurifier/README.md
+++ /dev/null
@@ -1,29 +0,0 @@
-HTML Purifier [](http://travis-ci.org/ezyang/htmlpurifier)
-=============
-
-HTML Purifier is an HTML filtering solution that uses a unique combination
-of robust whitelists and aggressive parsing to ensure that not only are
-XSS attacks thwarted, but the resulting HTML is standards compliant.
-
-HTML Purifier is oriented towards richly formatted documents from
-untrusted sources that require CSS and a full tag-set. This library can
-be configured to accept a more restrictive set of tags, but it won't be
-as efficient as more bare-bones parsers. It will, however, do the job
-right, which may be more important.
-
-Places to go:
-
-* See INSTALL for a quick installation guide
-* See docs/ for developer-oriented documentation, code examples and
- an in-depth installation guide.
-* See WYSIWYG for information on editors like TinyMCE and FCKeditor
-
-HTML Purifier can be found on the web at: [http://htmlpurifier.org/](http://htmlpurifier.org/)
-
-## Installation
-
-Package available on [Composer](https://packagist.org/packages/ezyang/htmlpurifier).
-
-If you're using Composer to manage dependencies, you can use
-
- $ composer require ezyang/htmlpurifier
diff --git a/vendor/ezyang/htmlpurifier/VERSION b/vendor/ezyang/htmlpurifier/VERSION
deleted file mode 100644
index 01b73abe..00000000
--- a/vendor/ezyang/htmlpurifier/VERSION
+++ /dev/null
@@ -1 +0,0 @@
-4.13.0
\ No newline at end of file
diff --git a/vendor/ezyang/htmlpurifier/composer.json b/vendor/ezyang/htmlpurifier/composer.json
deleted file mode 100644
index 0ff86b5d..00000000
--- a/vendor/ezyang/htmlpurifier/composer.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "name": "ezyang/htmlpurifier",
- "description": "Standards compliant HTML filter written in PHP",
- "type": "library",
- "keywords": ["html"],
- "homepage": "http://htmlpurifier.org/",
- "license": "LGPL-2.1-or-later",
- "authors": [
- {
- "name": "Edward Z. Yang",
- "email": "admin@htmlpurifier.org",
- "homepage": "http://ezyang.com"
- }
- ],
- "require": {
- "php": ">=5.2"
- },
- "require-dev": {
- "simpletest/simpletest": "dev-master#72de02a7b80c6bb8864ef9bf66d41d2f58f826bd"
- },
- "autoload": {
- "psr-0": { "HTMLPurifier": "library/" },
- "files": ["library/HTMLPurifier.composer.php"],
- "exclude-from-classmap": [
- "/library/HTMLPurifier/Language/"
- ]
- }
-}
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier.auto.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier.auto.php
deleted file mode 100644
index 1960c399..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier.auto.php
+++ /dev/null
@@ -1,11 +0,0 @@
-purify($html, $config);
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier.includes.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier.includes.php
deleted file mode 100644
index 151e6752..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier.includes.php
+++ /dev/null
@@ -1,234 +0,0 @@
- $attributes) {
- $allowed_elements[$element] = true;
- foreach ($attributes as $attribute => $x) {
- $allowed_attributes["$element.$attribute"] = true;
- }
- }
- $config->set('HTML.AllowedElements', $allowed_elements);
- $config->set('HTML.AllowedAttributes', $allowed_attributes);
- if ($allowed_protocols !== null) {
- $config->set('URI.AllowedSchemes', $allowed_protocols);
- }
- $purifier = new HTMLPurifier($config);
- return $purifier->purify($string);
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier.path.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier.path.php
deleted file mode 100644
index 39b1b653..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier.path.php
+++ /dev/null
@@ -1,11 +0,0 @@
-config = HTMLPurifier_Config::create($config);
- $this->strategy = new HTMLPurifier_Strategy_Core();
- }
-
- /**
- * Adds a filter to process the output. First come first serve
- *
- * @param HTMLPurifier_Filter $filter HTMLPurifier_Filter object
- */
- public function addFilter($filter)
- {
- trigger_error(
- 'HTMLPurifier->addFilter() is deprecated, use configuration directives' .
- ' in the Filter namespace or Filter.Custom',
- E_USER_WARNING
- );
- $this->filters[] = $filter;
- }
-
- /**
- * Filters an HTML snippet/document to be XSS-free and standards-compliant.
- *
- * @param string $html String of HTML to purify
- * @param HTMLPurifier_Config $config Config object for this operation,
- * if omitted, defaults to the config object specified during this
- * object's construction. The parameter can also be any type
- * that HTMLPurifier_Config::create() supports.
- *
- * @return string Purified HTML
- */
- public function purify($html, $config = null)
- {
- // :TODO: make the config merge in, instead of replace
- $config = $config ? HTMLPurifier_Config::create($config) : $this->config;
-
- // implementation is partially environment dependant, partially
- // configuration dependant
- $lexer = HTMLPurifier_Lexer::create($config);
-
- $context = new HTMLPurifier_Context();
-
- // setup HTML generator
- $this->generator = new HTMLPurifier_Generator($config, $context);
- $context->register('Generator', $this->generator);
-
- // set up global context variables
- if ($config->get('Core.CollectErrors')) {
- // may get moved out if other facilities use it
- $language_factory = HTMLPurifier_LanguageFactory::instance();
- $language = $language_factory->create($config, $context);
- $context->register('Locale', $language);
-
- $error_collector = new HTMLPurifier_ErrorCollector($context);
- $context->register('ErrorCollector', $error_collector);
- }
-
- // setup id_accumulator context, necessary due to the fact that
- // AttrValidator can be called from many places
- $id_accumulator = HTMLPurifier_IDAccumulator::build($config, $context);
- $context->register('IDAccumulator', $id_accumulator);
-
- $html = HTMLPurifier_Encoder::convertToUTF8($html, $config, $context);
-
- // setup filters
- $filter_flags = $config->getBatch('Filter');
- $custom_filters = $filter_flags['Custom'];
- unset($filter_flags['Custom']);
- $filters = array();
- foreach ($filter_flags as $filter => $flag) {
- if (!$flag) {
- continue;
- }
- if (strpos($filter, '.') !== false) {
- continue;
- }
- $class = "HTMLPurifier_Filter_$filter";
- $filters[] = new $class;
- }
- foreach ($custom_filters as $filter) {
- // maybe "HTMLPurifier_Filter_$filter", but be consistent with AutoFormat
- $filters[] = $filter;
- }
- $filters = array_merge($filters, $this->filters);
- // maybe prepare(), but later
-
- for ($i = 0, $filter_size = count($filters); $i < $filter_size; $i++) {
- $html = $filters[$i]->preFilter($html, $config, $context);
- }
-
- // purified HTML
- $html =
- $this->generator->generateFromTokens(
- // list of tokens
- $this->strategy->execute(
- // list of un-purified tokens
- $lexer->tokenizeHTML(
- // un-purified HTML
- $html,
- $config,
- $context
- ),
- $config,
- $context
- )
- );
-
- for ($i = $filter_size - 1; $i >= 0; $i--) {
- $html = $filters[$i]->postFilter($html, $config, $context);
- }
-
- $html = HTMLPurifier_Encoder::convertFromUTF8($html, $config, $context);
- $this->context =& $context;
- return $html;
- }
-
- /**
- * Filters an array of HTML snippets
- *
- * @param string[] $array_of_html Array of html snippets
- * @param HTMLPurifier_Config $config Optional config object for this operation.
- * See HTMLPurifier::purify() for more details.
- *
- * @return string[] Array of purified HTML
- */
- public function purifyArray($array_of_html, $config = null)
- {
- $context_array = array();
- $array = array();
- foreach($array_of_html as $key=>$value){
- if (is_array($value)) {
- $array[$key] = $this->purifyArray($value, $config);
- } else {
- $array[$key] = $this->purify($value, $config);
- }
- $context_array[$key] = $this->context;
- }
- $this->context = $context_array;
- return $array;
- }
-
- /**
- * Singleton for enforcing just one HTML Purifier in your system
- *
- * @param HTMLPurifier|HTMLPurifier_Config $prototype Optional prototype
- * HTMLPurifier instance to overload singleton with,
- * or HTMLPurifier_Config instance to configure the
- * generated version with.
- *
- * @return HTMLPurifier
- */
- public static function instance($prototype = null)
- {
- if (!self::$instance || $prototype) {
- if ($prototype instanceof HTMLPurifier) {
- self::$instance = $prototype;
- } elseif ($prototype) {
- self::$instance = new HTMLPurifier($prototype);
- } else {
- self::$instance = new HTMLPurifier();
- }
- }
- return self::$instance;
- }
-
- /**
- * Singleton for enforcing just one HTML Purifier in your system
- *
- * @param HTMLPurifier|HTMLPurifier_Config $prototype Optional prototype
- * HTMLPurifier instance to overload singleton with,
- * or HTMLPurifier_Config instance to configure the
- * generated version with.
- *
- * @return HTMLPurifier
- * @note Backwards compatibility, see instance()
- */
- public static function getInstance($prototype = null)
- {
- return HTMLPurifier::instance($prototype);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier.safe-includes.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier.safe-includes.php
deleted file mode 100644
index a3261f8a..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier.safe-includes.php
+++ /dev/null
@@ -1,228 +0,0 @@
-getHTMLDefinition();
- $parent = new HTMLPurifier_Token_Start($definition->info_parent);
- $stack = array($parent->toNode());
- foreach ($tokens as $token) {
- $token->skip = null; // [MUT]
- $token->carryover = null; // [MUT]
- if ($token instanceof HTMLPurifier_Token_End) {
- $token->start = null; // [MUT]
- $r = array_pop($stack);
- //assert($r->name === $token->name);
- //assert(empty($token->attr));
- $r->endCol = $token->col;
- $r->endLine = $token->line;
- $r->endArmor = $token->armor;
- continue;
- }
- $node = $token->toNode();
- $stack[count($stack)-1]->children[] = $node;
- if ($token instanceof HTMLPurifier_Token_Start) {
- $stack[] = $node;
- }
- }
- //assert(count($stack) == 1);
- return $stack[0];
- }
-
- public static function flatten($node, $config, $context) {
- $level = 0;
- $nodes = array($level => new HTMLPurifier_Queue(array($node)));
- $closingTokens = array();
- $tokens = array();
- do {
- while (!$nodes[$level]->isEmpty()) {
- $node = $nodes[$level]->shift(); // FIFO
- list($start, $end) = $node->toTokenPair();
- if ($level > 0) {
- $tokens[] = $start;
- }
- if ($end !== NULL) {
- $closingTokens[$level][] = $end;
- }
- if ($node instanceof HTMLPurifier_Node_Element) {
- $level++;
- $nodes[$level] = new HTMLPurifier_Queue();
- foreach ($node->children as $childNode) {
- $nodes[$level]->push($childNode);
- }
- }
- }
- $level--;
- if ($level && isset($closingTokens[$level])) {
- while ($token = array_pop($closingTokens[$level])) {
- $tokens[] = $token;
- }
- }
- } while ($level > 0);
- return $tokens;
- }
-}
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrCollections.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrCollections.php
deleted file mode 100644
index c7b17cf1..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrCollections.php
+++ /dev/null
@@ -1,148 +0,0 @@
-doConstruct($attr_types, $modules);
- }
-
- public function doConstruct($attr_types, $modules)
- {
- // load extensions from the modules
- foreach ($modules as $module) {
- foreach ($module->attr_collections as $coll_i => $coll) {
- if (!isset($this->info[$coll_i])) {
- $this->info[$coll_i] = array();
- }
- foreach ($coll as $attr_i => $attr) {
- if ($attr_i === 0 && isset($this->info[$coll_i][$attr_i])) {
- // merge in includes
- $this->info[$coll_i][$attr_i] = array_merge(
- $this->info[$coll_i][$attr_i],
- $attr
- );
- continue;
- }
- $this->info[$coll_i][$attr_i] = $attr;
- }
- }
- }
- // perform internal expansions and inclusions
- foreach ($this->info as $name => $attr) {
- // merge attribute collections that include others
- $this->performInclusions($this->info[$name]);
- // replace string identifiers with actual attribute objects
- $this->expandIdentifiers($this->info[$name], $attr_types);
- }
- }
-
- /**
- * Takes a reference to an attribute associative array and performs
- * all inclusions specified by the zero index.
- * @param array &$attr Reference to attribute array
- */
- public function performInclusions(&$attr)
- {
- if (!isset($attr[0])) {
- return;
- }
- $merge = $attr[0];
- $seen = array(); // recursion guard
- // loop through all the inclusions
- for ($i = 0; isset($merge[$i]); $i++) {
- if (isset($seen[$merge[$i]])) {
- continue;
- }
- $seen[$merge[$i]] = true;
- // foreach attribute of the inclusion, copy it over
- if (!isset($this->info[$merge[$i]])) {
- continue;
- }
- foreach ($this->info[$merge[$i]] as $key => $value) {
- if (isset($attr[$key])) {
- continue;
- } // also catches more inclusions
- $attr[$key] = $value;
- }
- if (isset($this->info[$merge[$i]][0])) {
- // recursion
- $merge = array_merge($merge, $this->info[$merge[$i]][0]);
- }
- }
- unset($attr[0]);
- }
-
- /**
- * Expands all string identifiers in an attribute array by replacing
- * them with the appropriate values inside HTMLPurifier_AttrTypes
- * @param array &$attr Reference to attribute array
- * @param HTMLPurifier_AttrTypes $attr_types HTMLPurifier_AttrTypes instance
- */
- public function expandIdentifiers(&$attr, $attr_types)
- {
- // because foreach will process new elements we add, make sure we
- // skip duplicates
- $processed = array();
-
- foreach ($attr as $def_i => $def) {
- // skip inclusions
- if ($def_i === 0) {
- continue;
- }
-
- if (isset($processed[$def_i])) {
- continue;
- }
-
- // determine whether or not attribute is required
- if ($required = (strpos($def_i, '*') !== false)) {
- // rename the definition
- unset($attr[$def_i]);
- $def_i = trim($def_i, '*');
- $attr[$def_i] = $def;
- }
-
- $processed[$def_i] = true;
-
- // if we've already got a literal object, move on
- if (is_object($def)) {
- // preserve previous required
- $attr[$def_i]->required = ($required || $attr[$def_i]->required);
- continue;
- }
-
- if ($def === false) {
- unset($attr[$def_i]);
- continue;
- }
-
- if ($t = $attr_types->get($def)) {
- $attr[$def_i] = $t;
- $attr[$def_i]->required = $required;
- } else {
- unset($attr[$def_i]);
- }
- }
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef.php
deleted file mode 100644
index 739646fa..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef.php
+++ /dev/null
@@ -1,144 +0,0 @@
- by removing
- * leading and trailing whitespace, ignoring line feeds, and replacing
- * carriage returns and tabs with spaces. While most useful for HTML
- * attributes specified as CDATA, it can also be applied to most CSS
- * values.
- *
- * @note This method is not entirely standards compliant, as trim() removes
- * more types of whitespace than specified in the spec. In practice,
- * this is rarely a problem, as those extra characters usually have
- * already been removed by HTMLPurifier_Encoder.
- *
- * @warning This processing is inconsistent with XML's whitespace handling
- * as specified by section 3.3.3 and referenced XHTML 1.0 section
- * 4.7. However, note that we are NOT necessarily
- * parsing XML, thus, this behavior may still be correct. We
- * assume that newlines have been normalized.
- */
- public function parseCDATA($string)
- {
- $string = trim($string);
- $string = str_replace(array("\n", "\t", "\r"), ' ', $string);
- return $string;
- }
-
- /**
- * Factory method for creating this class from a string.
- * @param string $string String construction info
- * @return HTMLPurifier_AttrDef Created AttrDef object corresponding to $string
- */
- public function make($string)
- {
- // default implementation, return a flyweight of this object.
- // If $string has an effect on the returned object (i.e. you
- // need to overload this method), it is best
- // to clone or instantiate new copies. (Instantiation is safer.)
- return $this;
- }
-
- /**
- * Removes spaces from rgb(0, 0, 0) so that shorthand CSS properties work
- * properly. THIS IS A HACK!
- * @param string $string a CSS colour definition
- * @return string
- */
- protected function mungeRgb($string)
- {
- $p = '\s*(\d+(\.\d+)?([%]?))\s*';
-
- if (preg_match('/(rgba|hsla)\(/', $string)) {
- return preg_replace('/(rgba|hsla)\('.$p.','.$p.','.$p.','.$p.'\)/', '\1(\2,\5,\8,\11)', $string);
- }
-
- return preg_replace('/(rgb|hsl)\('.$p.','.$p.','.$p.'\)/', '\1(\2,\5,\8)', $string);
- }
-
- /**
- * Parses a possibly escaped CSS string and returns the "pure"
- * version of it.
- */
- protected function expandCSSEscape($string)
- {
- // flexibly parse it
- $ret = '';
- for ($i = 0, $c = strlen($string); $i < $c; $i++) {
- if ($string[$i] === '\\') {
- $i++;
- if ($i >= $c) {
- $ret .= '\\';
- break;
- }
- if (ctype_xdigit($string[$i])) {
- $code = $string[$i];
- for ($a = 1, $i++; $i < $c && $a < 6; $i++, $a++) {
- if (!ctype_xdigit($string[$i])) {
- break;
- }
- $code .= $string[$i];
- }
- // We have to be extremely careful when adding
- // new characters, to make sure we're not breaking
- // the encoding.
- $char = HTMLPurifier_Encoder::unichr(hexdec($code));
- if (HTMLPurifier_Encoder::cleanUTF8($char) === '') {
- continue;
- }
- $ret .= $char;
- if ($i < $c && trim($string[$i]) !== '') {
- $i--;
- }
- continue;
- }
- if ($string[$i] === "\n") {
- continue;
- }
- }
- $ret .= $string[$i];
- }
- return $ret;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS.php
deleted file mode 100644
index ad2cb90a..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS.php
+++ /dev/null
@@ -1,136 +0,0 @@
-parseCDATA($css);
-
- $definition = $config->getCSSDefinition();
- $allow_duplicates = $config->get("CSS.AllowDuplicates");
-
-
- // According to the CSS2.1 spec, the places where a
- // non-delimiting semicolon can appear are in strings
- // escape sequences. So here is some dumb hack to
- // handle quotes.
- $len = strlen($css);
- $accum = "";
- $declarations = array();
- $quoted = false;
- for ($i = 0; $i < $len; $i++) {
- $c = strcspn($css, ";'\"", $i);
- $accum .= substr($css, $i, $c);
- $i += $c;
- if ($i == $len) break;
- $d = $css[$i];
- if ($quoted) {
- $accum .= $d;
- if ($d == $quoted) {
- $quoted = false;
- }
- } else {
- if ($d == ";") {
- $declarations[] = $accum;
- $accum = "";
- } else {
- $accum .= $d;
- $quoted = $d;
- }
- }
- }
- if ($accum != "") $declarations[] = $accum;
-
- $propvalues = array();
- $new_declarations = '';
-
- /**
- * Name of the current CSS property being validated.
- */
- $property = false;
- $context->register('CurrentCSSProperty', $property);
-
- foreach ($declarations as $declaration) {
- if (!$declaration) {
- continue;
- }
- if (!strpos($declaration, ':')) {
- continue;
- }
- list($property, $value) = explode(':', $declaration, 2);
- $property = trim($property);
- $value = trim($value);
- $ok = false;
- do {
- if (isset($definition->info[$property])) {
- $ok = true;
- break;
- }
- if (ctype_lower($property)) {
- break;
- }
- $property = strtolower($property);
- if (isset($definition->info[$property])) {
- $ok = true;
- break;
- }
- } while (0);
- if (!$ok) {
- continue;
- }
- // inefficient call, since the validator will do this again
- if (strtolower(trim($value)) !== 'inherit') {
- // inherit works for everything (but only on the base property)
- $result = $definition->info[$property]->validate(
- $value,
- $config,
- $context
- );
- } else {
- $result = 'inherit';
- }
- if ($result === false) {
- continue;
- }
- if ($allow_duplicates) {
- $new_declarations .= "$property:$result;";
- } else {
- $propvalues[$property] = $result;
- }
- }
-
- $context->destroy('CurrentCSSProperty');
-
- // procedure does not write the new CSS simultaneously, so it's
- // slightly inefficient, but it's the only way of getting rid of
- // duplicates. Perhaps config to optimize it, but not now.
-
- foreach ($propvalues as $prop => $value) {
- $new_declarations .= "$prop:$value;";
- }
-
- return $new_declarations ? $new_declarations : false;
-
- }
-
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/AlphaValue.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/AlphaValue.php
deleted file mode 100644
index af2b83df..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/AlphaValue.php
+++ /dev/null
@@ -1,34 +0,0 @@
- 1.0) {
- $result = '1';
- }
- return $result;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Background.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Background.php
deleted file mode 100644
index 7f1ea3b0..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Background.php
+++ /dev/null
@@ -1,111 +0,0 @@
-getCSSDefinition();
- $this->info['background-color'] = $def->info['background-color'];
- $this->info['background-image'] = $def->info['background-image'];
- $this->info['background-repeat'] = $def->info['background-repeat'];
- $this->info['background-attachment'] = $def->info['background-attachment'];
- $this->info['background-position'] = $def->info['background-position'];
- }
-
- /**
- * @param string $string
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool|string
- */
- public function validate($string, $config, $context)
- {
- // regular pre-processing
- $string = $this->parseCDATA($string);
- if ($string === '') {
- return false;
- }
-
- // munge rgb() decl if necessary
- $string = $this->mungeRgb($string);
-
- // assumes URI doesn't have spaces in it
- $bits = explode(' ', $string); // bits to process
-
- $caught = array();
- $caught['color'] = false;
- $caught['image'] = false;
- $caught['repeat'] = false;
- $caught['attachment'] = false;
- $caught['position'] = false;
-
- $i = 0; // number of catches
-
- foreach ($bits as $bit) {
- if ($bit === '') {
- continue;
- }
- foreach ($caught as $key => $status) {
- if ($key != 'position') {
- if ($status !== false) {
- continue;
- }
- $r = $this->info['background-' . $key]->validate($bit, $config, $context);
- } else {
- $r = $bit;
- }
- if ($r === false) {
- continue;
- }
- if ($key == 'position') {
- if ($caught[$key] === false) {
- $caught[$key] = '';
- }
- $caught[$key] .= $r . ' ';
- } else {
- $caught[$key] = $r;
- }
- $i++;
- break;
- }
- }
-
- if (!$i) {
- return false;
- }
- if ($caught['position'] !== false) {
- $caught['position'] = $this->info['background-position']->
- validate($caught['position'], $config, $context);
- }
-
- $ret = array();
- foreach ($caught as $value) {
- if ($value === false) {
- continue;
- }
- $ret[] = $value;
- }
-
- if (empty($ret)) {
- return false;
- }
- return implode(' ', $ret);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/BackgroundPosition.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/BackgroundPosition.php
deleted file mode 100644
index 4580ef5a..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/BackgroundPosition.php
+++ /dev/null
@@ -1,157 +0,0 @@
- | | left | center | right
- ]
- [
- | | top | center | bottom
- ]?
- ] |
- [ // this signifies that the vertical and horizontal adjectives
- // can be arbitrarily ordered, however, there can only be two,
- // one of each, or none at all
- [
- left | center | right
- ] ||
- [
- top | center | bottom
- ]
- ]
- top, left = 0%
- center, (none) = 50%
- bottom, right = 100%
-*/
-
-/* QuirksMode says:
- keyword + length/percentage must be ordered correctly, as per W3C
-
- Internet Explorer and Opera, however, support arbitrary ordering. We
- should fix it up.
-
- Minor issue though, not strictly necessary.
-*/
-
-// control freaks may appreciate the ability to convert these to
-// percentages or something, but it's not necessary
-
-/**
- * Validates the value of background-position.
- */
-class HTMLPurifier_AttrDef_CSS_BackgroundPosition extends HTMLPurifier_AttrDef
-{
-
- /**
- * @type HTMLPurifier_AttrDef_CSS_Length
- */
- protected $length;
-
- /**
- * @type HTMLPurifier_AttrDef_CSS_Percentage
- */
- protected $percentage;
-
- public function __construct()
- {
- $this->length = new HTMLPurifier_AttrDef_CSS_Length();
- $this->percentage = new HTMLPurifier_AttrDef_CSS_Percentage();
- }
-
- /**
- * @param string $string
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool|string
- */
- public function validate($string, $config, $context)
- {
- $string = $this->parseCDATA($string);
- $bits = explode(' ', $string);
-
- $keywords = array();
- $keywords['h'] = false; // left, right
- $keywords['v'] = false; // top, bottom
- $keywords['ch'] = false; // center (first word)
- $keywords['cv'] = false; // center (second word)
- $measures = array();
-
- $i = 0;
-
- $lookup = array(
- 'top' => 'v',
- 'bottom' => 'v',
- 'left' => 'h',
- 'right' => 'h',
- 'center' => 'c'
- );
-
- foreach ($bits as $bit) {
- if ($bit === '') {
- continue;
- }
-
- // test for keyword
- $lbit = ctype_lower($bit) ? $bit : strtolower($bit);
- if (isset($lookup[$lbit])) {
- $status = $lookup[$lbit];
- if ($status == 'c') {
- if ($i == 0) {
- $status = 'ch';
- } else {
- $status = 'cv';
- }
- }
- $keywords[$status] = $lbit;
- $i++;
- }
-
- // test for length
- $r = $this->length->validate($bit, $config, $context);
- if ($r !== false) {
- $measures[] = $r;
- $i++;
- }
-
- // test for percentage
- $r = $this->percentage->validate($bit, $config, $context);
- if ($r !== false) {
- $measures[] = $r;
- $i++;
- }
- }
-
- if (!$i) {
- return false;
- } // no valid values were caught
-
- $ret = array();
-
- // first keyword
- if ($keywords['h']) {
- $ret[] = $keywords['h'];
- } elseif ($keywords['ch']) {
- $ret[] = $keywords['ch'];
- $keywords['cv'] = false; // prevent re-use: center = center center
- } elseif (count($measures)) {
- $ret[] = array_shift($measures);
- }
-
- if ($keywords['v']) {
- $ret[] = $keywords['v'];
- } elseif ($keywords['cv']) {
- $ret[] = $keywords['cv'];
- } elseif (count($measures)) {
- $ret[] = array_shift($measures);
- }
-
- if (empty($ret)) {
- return false;
- }
- return implode(' ', $ret);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Border.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Border.php
deleted file mode 100644
index 16243ba1..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Border.php
+++ /dev/null
@@ -1,56 +0,0 @@
-getCSSDefinition();
- $this->info['border-width'] = $def->info['border-width'];
- $this->info['border-style'] = $def->info['border-style'];
- $this->info['border-top-color'] = $def->info['border-top-color'];
- }
-
- /**
- * @param string $string
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool|string
- */
- public function validate($string, $config, $context)
- {
- $string = $this->parseCDATA($string);
- $string = $this->mungeRgb($string);
- $bits = explode(' ', $string);
- $done = array(); // segments we've finished
- $ret = ''; // return value
- foreach ($bits as $bit) {
- foreach ($this->info as $propname => $validator) {
- if (isset($done[$propname])) {
- continue;
- }
- $r = $validator->validate($bit, $config, $context);
- if ($r !== false) {
- $ret .= $r . ' ';
- $done[$propname] = true;
- break;
- }
- }
- }
- return rtrim($ret);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Color.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Color.php
deleted file mode 100644
index d7287a00..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Color.php
+++ /dev/null
@@ -1,161 +0,0 @@
-alpha = new HTMLPurifier_AttrDef_CSS_AlphaValue();
- }
-
- /**
- * @param string $color
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool|string
- */
- public function validate($color, $config, $context)
- {
- static $colors = null;
- if ($colors === null) {
- $colors = $config->get('Core.ColorKeywords');
- }
-
- $color = trim($color);
- if ($color === '') {
- return false;
- }
-
- $lower = strtolower($color);
- if (isset($colors[$lower])) {
- return $colors[$lower];
- }
-
- if (preg_match('#(rgb|rgba|hsl|hsla)\(#', $color, $matches) === 1) {
- $length = strlen($color);
- if (strpos($color, ')') !== $length - 1) {
- return false;
- }
-
- // get used function : rgb, rgba, hsl or hsla
- $function = $matches[1];
-
- $parameters_size = 3;
- $alpha_channel = false;
- if (substr($function, -1) === 'a') {
- $parameters_size = 4;
- $alpha_channel = true;
- }
-
- /*
- * Allowed types for values :
- * parameter_position => [type => max_value]
- */
- $allowed_types = array(
- 1 => array('percentage' => 100, 'integer' => 255),
- 2 => array('percentage' => 100, 'integer' => 255),
- 3 => array('percentage' => 100, 'integer' => 255),
- );
- $allow_different_types = false;
-
- if (strpos($function, 'hsl') !== false) {
- $allowed_types = array(
- 1 => array('integer' => 360),
- 2 => array('percentage' => 100),
- 3 => array('percentage' => 100),
- );
- $allow_different_types = true;
- }
-
- $values = trim(str_replace($function, '', $color), ' ()');
-
- $parts = explode(',', $values);
- if (count($parts) !== $parameters_size) {
- return false;
- }
-
- $type = false;
- $new_parts = array();
- $i = 0;
-
- foreach ($parts as $part) {
- $i++;
- $part = trim($part);
-
- if ($part === '') {
- return false;
- }
-
- // different check for alpha channel
- if ($alpha_channel === true && $i === count($parts)) {
- $result = $this->alpha->validate($part, $config, $context);
-
- if ($result === false) {
- return false;
- }
-
- $new_parts[] = (string)$result;
- continue;
- }
-
- if (substr($part, -1) === '%') {
- $current_type = 'percentage';
- } else {
- $current_type = 'integer';
- }
-
- if (!array_key_exists($current_type, $allowed_types[$i])) {
- return false;
- }
-
- if (!$type) {
- $type = $current_type;
- }
-
- if ($allow_different_types === false && $type != $current_type) {
- return false;
- }
-
- $max_value = $allowed_types[$i][$current_type];
-
- if ($current_type == 'integer') {
- // Return value between range 0 -> $max_value
- $new_parts[] = (int)max(min($part, $max_value), 0);
- } elseif ($current_type == 'percentage') {
- $new_parts[] = (float)max(min(rtrim($part, '%'), $max_value), 0) . '%';
- }
- }
-
- $new_values = implode(',', $new_parts);
-
- $color = $function . '(' . $new_values . ')';
- } else {
- // hexadecimal handling
- if ($color[0] === '#') {
- $hex = substr($color, 1);
- } else {
- $hex = $color;
- $color = '#' . $color;
- }
- $length = strlen($hex);
- if ($length !== 3 && $length !== 6) {
- return false;
- }
- if (!ctype_xdigit($hex)) {
- return false;
- }
- }
- return $color;
- }
-
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Composite.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Composite.php
deleted file mode 100644
index 9c175055..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Composite.php
+++ /dev/null
@@ -1,48 +0,0 @@
-defs = $defs;
- }
-
- /**
- * @param string $string
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool|string
- */
- public function validate($string, $config, $context)
- {
- foreach ($this->defs as $i => $def) {
- $result = $this->defs[$i]->validate($string, $config, $context);
- if ($result !== false) {
- return $result;
- }
- }
- return false;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/DenyElementDecorator.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/DenyElementDecorator.php
deleted file mode 100644
index 9d77cc9a..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/DenyElementDecorator.php
+++ /dev/null
@@ -1,44 +0,0 @@
-def = $def;
- $this->element = $element;
- }
-
- /**
- * Checks if CurrentToken is set and equal to $this->element
- * @param string $string
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool|string
- */
- public function validate($string, $config, $context)
- {
- $token = $context->get('CurrentToken', true);
- if ($token && $token->name == $this->element) {
- return false;
- }
- return $this->def->validate($string, $config, $context);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Filter.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Filter.php
deleted file mode 100644
index bde4c330..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Filter.php
+++ /dev/null
@@ -1,77 +0,0 @@
-intValidator = new HTMLPurifier_AttrDef_Integer();
- }
-
- /**
- * @param string $value
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool|string
- */
- public function validate($value, $config, $context)
- {
- $value = $this->parseCDATA($value);
- if ($value === 'none') {
- return $value;
- }
- // if we looped this we could support multiple filters
- $function_length = strcspn($value, '(');
- $function = trim(substr($value, 0, $function_length));
- if ($function !== 'alpha' &&
- $function !== 'Alpha' &&
- $function !== 'progid:DXImageTransform.Microsoft.Alpha'
- ) {
- return false;
- }
- $cursor = $function_length + 1;
- $parameters_length = strcspn($value, ')', $cursor);
- $parameters = substr($value, $cursor, $parameters_length);
- $params = explode(',', $parameters);
- $ret_params = array();
- $lookup = array();
- foreach ($params as $param) {
- list($key, $value) = explode('=', $param);
- $key = trim($key);
- $value = trim($value);
- if (isset($lookup[$key])) {
- continue;
- }
- if ($key !== 'opacity') {
- continue;
- }
- $value = $this->intValidator->validate($value, $config, $context);
- if ($value === false) {
- continue;
- }
- $int = (int)$value;
- if ($int > 100) {
- $value = '100';
- }
- if ($int < 0) {
- $value = '0';
- }
- $ret_params[] = "$key=$value";
- $lookup[$key] = true;
- }
- $ret_parameters = implode(',', $ret_params);
- $ret_function = "$function($ret_parameters)";
- return $ret_function;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Font.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Font.php
deleted file mode 100644
index 579b97ef..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Font.php
+++ /dev/null
@@ -1,176 +0,0 @@
-getCSSDefinition();
- $this->info['font-style'] = $def->info['font-style'];
- $this->info['font-variant'] = $def->info['font-variant'];
- $this->info['font-weight'] = $def->info['font-weight'];
- $this->info['font-size'] = $def->info['font-size'];
- $this->info['line-height'] = $def->info['line-height'];
- $this->info['font-family'] = $def->info['font-family'];
- }
-
- /**
- * @param string $string
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool|string
- */
- public function validate($string, $config, $context)
- {
- static $system_fonts = array(
- 'caption' => true,
- 'icon' => true,
- 'menu' => true,
- 'message-box' => true,
- 'small-caption' => true,
- 'status-bar' => true
- );
-
- // regular pre-processing
- $string = $this->parseCDATA($string);
- if ($string === '') {
- return false;
- }
-
- // check if it's one of the keywords
- $lowercase_string = strtolower($string);
- if (isset($system_fonts[$lowercase_string])) {
- return $lowercase_string;
- }
-
- $bits = explode(' ', $string); // bits to process
- $stage = 0; // this indicates what we're looking for
- $caught = array(); // which stage 0 properties have we caught?
- $stage_1 = array('font-style', 'font-variant', 'font-weight');
- $final = ''; // output
-
- for ($i = 0, $size = count($bits); $i < $size; $i++) {
- if ($bits[$i] === '') {
- continue;
- }
- switch ($stage) {
- case 0: // attempting to catch font-style, font-variant or font-weight
- foreach ($stage_1 as $validator_name) {
- if (isset($caught[$validator_name])) {
- continue;
- }
- $r = $this->info[$validator_name]->validate(
- $bits[$i],
- $config,
- $context
- );
- if ($r !== false) {
- $final .= $r . ' ';
- $caught[$validator_name] = true;
- break;
- }
- }
- // all three caught, continue on
- if (count($caught) >= 3) {
- $stage = 1;
- }
- if ($r !== false) {
- break;
- }
- case 1: // attempting to catch font-size and perhaps line-height
- $found_slash = false;
- if (strpos($bits[$i], '/') !== false) {
- list($font_size, $line_height) =
- explode('/', $bits[$i]);
- if ($line_height === '') {
- // ooh, there's a space after the slash!
- $line_height = false;
- $found_slash = true;
- }
- } else {
- $font_size = $bits[$i];
- $line_height = false;
- }
- $r = $this->info['font-size']->validate(
- $font_size,
- $config,
- $context
- );
- if ($r !== false) {
- $final .= $r;
- // attempt to catch line-height
- if ($line_height === false) {
- // we need to scroll forward
- for ($j = $i + 1; $j < $size; $j++) {
- if ($bits[$j] === '') {
- continue;
- }
- if ($bits[$j] === '/') {
- if ($found_slash) {
- return false;
- } else {
- $found_slash = true;
- continue;
- }
- }
- $line_height = $bits[$j];
- break;
- }
- } else {
- // slash already found
- $found_slash = true;
- $j = $i;
- }
- if ($found_slash) {
- $i = $j;
- $r = $this->info['line-height']->validate(
- $line_height,
- $config,
- $context
- );
- if ($r !== false) {
- $final .= '/' . $r;
- }
- }
- $final .= ' ';
- $stage = 2;
- break;
- }
- return false;
- case 2: // attempting to catch font-family
- $font_family =
- implode(' ', array_slice($bits, $i, $size - $i));
- $r = $this->info['font-family']->validate(
- $font_family,
- $config,
- $context
- );
- if ($r !== false) {
- $final .= $r . ' ';
- // processing completed successfully
- return rtrim($final);
- }
- return false;
- }
- }
- return false;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/FontFamily.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/FontFamily.php
deleted file mode 100644
index 74e24c88..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/FontFamily.php
+++ /dev/null
@@ -1,219 +0,0 @@
-mask = '_- ';
- for ($c = 'a'; $c <= 'z'; $c++) {
- $this->mask .= $c;
- }
- for ($c = 'A'; $c <= 'Z'; $c++) {
- $this->mask .= $c;
- }
- for ($c = '0'; $c <= '9'; $c++) {
- $this->mask .= $c;
- } // cast-y, but should be fine
- // special bytes used by UTF-8
- for ($i = 0x80; $i <= 0xFF; $i++) {
- // We don't bother excluding invalid bytes in this range,
- // because the our restriction of well-formed UTF-8 will
- // prevent these from ever occurring.
- $this->mask .= chr($i);
- }
-
- /*
- PHP's internal strcspn implementation is
- O(length of string * length of mask), making it inefficient
- for large masks. However, it's still faster than
- preg_match 8)
- for (p = s1;;) {
- spanp = s2;
- do {
- if (*spanp == c || p == s1_end) {
- return p - s1;
- }
- } while (spanp++ < (s2_end - 1));
- c = *++p;
- }
- */
- // possible optimization: invert the mask.
- }
-
- /**
- * @param string $string
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool|string
- */
- public function validate($string, $config, $context)
- {
- static $generic_names = array(
- 'serif' => true,
- 'sans-serif' => true,
- 'monospace' => true,
- 'fantasy' => true,
- 'cursive' => true
- );
- $allowed_fonts = $config->get('CSS.AllowedFonts');
-
- // assume that no font names contain commas in them
- $fonts = explode(',', $string);
- $final = '';
- foreach ($fonts as $font) {
- $font = trim($font);
- if ($font === '') {
- continue;
- }
- // match a generic name
- if (isset($generic_names[$font])) {
- if ($allowed_fonts === null || isset($allowed_fonts[$font])) {
- $final .= $font . ', ';
- }
- continue;
- }
- // match a quoted name
- if ($font[0] === '"' || $font[0] === "'") {
- $length = strlen($font);
- if ($length <= 2) {
- continue;
- }
- $quote = $font[0];
- if ($font[$length - 1] !== $quote) {
- continue;
- }
- $font = substr($font, 1, $length - 2);
- }
-
- $font = $this->expandCSSEscape($font);
-
- // $font is a pure representation of the font name
-
- if ($allowed_fonts !== null && !isset($allowed_fonts[$font])) {
- continue;
- }
-
- if (ctype_alnum($font) && $font !== '') {
- // very simple font, allow it in unharmed
- $final .= $font . ', ';
- continue;
- }
-
- // bugger out on whitespace. form feed (0C) really
- // shouldn't show up regardless
- $font = str_replace(array("\n", "\t", "\r", "\x0C"), ' ', $font);
-
- // Here, there are various classes of characters which need
- // to be treated differently:
- // - Alphanumeric characters are essentially safe. We
- // handled these above.
- // - Spaces require quoting, though most parsers will do
- // the right thing if there aren't any characters that
- // can be misinterpreted
- // - Dashes rarely occur, but they fairly unproblematic
- // for parsing/rendering purposes.
- // The above characters cover the majority of Western font
- // names.
- // - Arbitrary Unicode characters not in ASCII. Because
- // most parsers give little thought to Unicode, treatment
- // of these codepoints is basically uniform, even for
- // punctuation-like codepoints. These characters can
- // show up in non-Western pages and are supported by most
- // major browsers, for example: "MS 明朝" is a
- // legitimate font-name
- // . See
- // the CSS3 spec for more examples:
- //
- // You can see live samples of these on the Internet:
- //
- // However, most of these fonts have ASCII equivalents:
- // for example, 'MS Mincho', and it's considered
- // professional to use ASCII font names instead of
- // Unicode font names. Thanks Takeshi Terada for
- // providing this information.
- // The following characters, to my knowledge, have not been
- // used to name font names.
- // - Single quote. While theoretically you might find a
- // font name that has a single quote in its name (serving
- // as an apostrophe, e.g. Dave's Scribble), I haven't
- // been able to find any actual examples of this.
- // Internet Explorer's cssText translation (which I
- // believe is invoked by innerHTML) normalizes any
- // quoting to single quotes, and fails to escape single
- // quotes. (Note that this is not IE's behavior for all
- // CSS properties, just some sort of special casing for
- // font-family). So a single quote *cannot* be used
- // safely in the font-family context if there will be an
- // innerHTML/cssText translation. Note that Firefox 3.x
- // does this too.
- // - Double quote. In IE, these get normalized to
- // single-quotes, no matter what the encoding. (Fun
- // fact, in IE8, the 'content' CSS property gained
- // support, where they special cased to preserve encoded
- // double quotes, but still translate unadorned double
- // quotes into single quotes.) So, because their
- // fixpoint behavior is identical to single quotes, they
- // cannot be allowed either. Firefox 3.x displays
- // single-quote style behavior.
- // - Backslashes are reduced by one (so \\ -> \) every
- // iteration, so they cannot be used safely. This shows
- // up in IE7, IE8 and FF3
- // - Semicolons, commas and backticks are handled properly.
- // - The rest of the ASCII punctuation is handled properly.
- // We haven't checked what browsers do to unadorned
- // versions, but this is not important as long as the
- // browser doesn't /remove/ surrounding quotes (as IE does
- // for HTML).
- //
- // With these results in hand, we conclude that there are
- // various levels of safety:
- // - Paranoid: alphanumeric, spaces and dashes(?)
- // - International: Paranoid + non-ASCII Unicode
- // - Edgy: Everything except quotes, backslashes
- // - NoJS: Standards compliance, e.g. sod IE. Note that
- // with some judicious character escaping (since certain
- // types of escaping doesn't work) this is theoretically
- // OK as long as innerHTML/cssText is not called.
- // We believe that international is a reasonable default
- // (that we will implement now), and once we do more
- // extensive research, we may feel comfortable with dropping
- // it down to edgy.
-
- // Edgy: alphanumeric, spaces, dashes, underscores and Unicode. Use of
- // str(c)spn assumes that the string was already well formed
- // Unicode (which of course it is).
- if (strspn($font, $this->mask) !== strlen($font)) {
- continue;
- }
-
- // Historical:
- // In the absence of innerHTML/cssText, these ugly
- // transforms don't pose a security risk (as \\ and \"
- // might--these escapes are not supported by most browsers).
- // We could try to be clever and use single-quote wrapping
- // when there is a double quote present, but I have choosen
- // not to implement that. (NOTE: you can reduce the amount
- // of escapes by one depending on what quoting style you use)
- // $font = str_replace('\\', '\\5C ', $font);
- // $font = str_replace('"', '\\22 ', $font);
- // $font = str_replace("'", '\\27 ', $font);
-
- // font possibly with spaces, requires quoting
- $final .= "'$font', ";
- }
- $final = rtrim($final, ', ');
- if ($final === '') {
- return false;
- }
- return $final;
- }
-
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Ident.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Ident.php
deleted file mode 100644
index 973002c1..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Ident.php
+++ /dev/null
@@ -1,32 +0,0 @@
-def = $def;
- $this->allow = $allow;
- }
-
- /**
- * Intercepts and removes !important if necessary
- * @param string $string
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool|string
- */
- public function validate($string, $config, $context)
- {
- // test for ! and important tokens
- $string = trim($string);
- $is_important = false;
- // :TODO: optimization: test directly for !important and ! important
- if (strlen($string) >= 9 && substr($string, -9) === 'important') {
- $temp = rtrim(substr($string, 0, -9));
- // use a temp, because we might want to restore important
- if (strlen($temp) >= 1 && substr($temp, -1) === '!') {
- $string = rtrim(substr($temp, 0, -1));
- $is_important = true;
- }
- }
- $string = $this->def->validate($string, $config, $context);
- if ($this->allow && $is_important) {
- $string .= ' !important';
- }
- return $string;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Length.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Length.php
deleted file mode 100644
index f12453a0..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Length.php
+++ /dev/null
@@ -1,77 +0,0 @@
-min = $min !== null ? HTMLPurifier_Length::make($min) : null;
- $this->max = $max !== null ? HTMLPurifier_Length::make($max) : null;
- }
-
- /**
- * @param string $string
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool|string
- */
- public function validate($string, $config, $context)
- {
- $string = $this->parseCDATA($string);
-
- // Optimizations
- if ($string === '') {
- return false;
- }
- if ($string === '0') {
- return '0';
- }
- if (strlen($string) === 1) {
- return false;
- }
-
- $length = HTMLPurifier_Length::make($string);
- if (!$length->isValid()) {
- return false;
- }
-
- if ($this->min) {
- $c = $length->compareTo($this->min);
- if ($c === false) {
- return false;
- }
- if ($c < 0) {
- return false;
- }
- }
- if ($this->max) {
- $c = $length->compareTo($this->max);
- if ($c === false) {
- return false;
- }
- if ($c > 0) {
- return false;
- }
- }
- return $length->toString();
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/ListStyle.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/ListStyle.php
deleted file mode 100644
index e74d4265..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/ListStyle.php
+++ /dev/null
@@ -1,112 +0,0 @@
-getCSSDefinition();
- $this->info['list-style-type'] = $def->info['list-style-type'];
- $this->info['list-style-position'] = $def->info['list-style-position'];
- $this->info['list-style-image'] = $def->info['list-style-image'];
- }
-
- /**
- * @param string $string
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool|string
- */
- public function validate($string, $config, $context)
- {
- // regular pre-processing
- $string = $this->parseCDATA($string);
- if ($string === '') {
- return false;
- }
-
- // assumes URI doesn't have spaces in it
- $bits = explode(' ', strtolower($string)); // bits to process
-
- $caught = array();
- $caught['type'] = false;
- $caught['position'] = false;
- $caught['image'] = false;
-
- $i = 0; // number of catches
- $none = false;
-
- foreach ($bits as $bit) {
- if ($i >= 3) {
- return;
- } // optimization bit
- if ($bit === '') {
- continue;
- }
- foreach ($caught as $key => $status) {
- if ($status !== false) {
- continue;
- }
- $r = $this->info['list-style-' . $key]->validate($bit, $config, $context);
- if ($r === false) {
- continue;
- }
- if ($r === 'none') {
- if ($none) {
- continue;
- } else {
- $none = true;
- }
- if ($key == 'image') {
- continue;
- }
- }
- $caught[$key] = $r;
- $i++;
- break;
- }
- }
-
- if (!$i) {
- return false;
- }
-
- $ret = array();
-
- // construct type
- if ($caught['type']) {
- $ret[] = $caught['type'];
- }
-
- // construct image
- if ($caught['image']) {
- $ret[] = $caught['image'];
- }
-
- // construct position
- if ($caught['position']) {
- $ret[] = $caught['position'];
- }
-
- if (empty($ret)) {
- return false;
- }
- return implode(' ', $ret);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Multiple.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Multiple.php
deleted file mode 100644
index e707f871..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Multiple.php
+++ /dev/null
@@ -1,71 +0,0 @@
-single = $single;
- $this->max = $max;
- }
-
- /**
- * @param string $string
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool|string
- */
- public function validate($string, $config, $context)
- {
- $string = $this->mungeRgb($this->parseCDATA($string));
- if ($string === '') {
- return false;
- }
- $parts = explode(' ', $string); // parseCDATA replaced \r, \t and \n
- $length = count($parts);
- $final = '';
- for ($i = 0, $num = 0; $i < $length && $num < $this->max; $i++) {
- if (ctype_space($parts[$i])) {
- continue;
- }
- $result = $this->single->validate($parts[$i], $config, $context);
- if ($result !== false) {
- $final .= $result . ' ';
- $num++;
- }
- }
- if ($final === '') {
- return false;
- }
- return rtrim($final);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Number.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Number.php
deleted file mode 100644
index ef49d20f..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Number.php
+++ /dev/null
@@ -1,90 +0,0 @@
-non_negative = $non_negative;
- }
-
- /**
- * @param string $number
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return string|bool
- * @warning Some contexts do not pass $config, $context. These
- * variables should not be used without checking HTMLPurifier_Length
- */
- public function validate($number, $config, $context)
- {
- $number = $this->parseCDATA($number);
-
- if ($number === '') {
- return false;
- }
- if ($number === '0') {
- return '0';
- }
-
- $sign = '';
- switch ($number[0]) {
- case '-':
- if ($this->non_negative) {
- return false;
- }
- $sign = '-';
- case '+':
- $number = substr($number, 1);
- }
-
- if (ctype_digit($number)) {
- $number = ltrim($number, '0');
- return $number ? $sign . $number : '0';
- }
-
- // Period is the only non-numeric character allowed
- if (strpos($number, '.') === false) {
- return false;
- }
-
- list($left, $right) = explode('.', $number, 2);
-
- if ($left === '' && $right === '') {
- return false;
- }
- if ($left !== '' && !ctype_digit($left)) {
- return false;
- }
-
- // Remove leading zeros until positive number or a zero stays left
- if (ltrim($left, '0') != '') {
- $left = ltrim($left, '0');
- } else {
- $left = '0';
- }
-
- $right = rtrim($right, '0');
-
- if ($right === '') {
- return $left ? $sign . $left : '0';
- } elseif (!ctype_digit($right)) {
- return false;
- }
- return $sign . $left . '.' . $right;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Percentage.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Percentage.php
deleted file mode 100644
index f0f25c50..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Percentage.php
+++ /dev/null
@@ -1,54 +0,0 @@
-number_def = new HTMLPurifier_AttrDef_CSS_Number($non_negative);
- }
-
- /**
- * @param string $string
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool|string
- */
- public function validate($string, $config, $context)
- {
- $string = $this->parseCDATA($string);
-
- if ($string === '') {
- return false;
- }
- $length = strlen($string);
- if ($length === 1) {
- return false;
- }
- if ($string[$length - 1] !== '%') {
- return false;
- }
-
- $number = substr($string, 0, $length - 1);
- $number = $this->number_def->validate($number, $config, $context);
-
- if ($number === false) {
- return false;
- }
- return "$number%";
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/TextDecoration.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/TextDecoration.php
deleted file mode 100644
index 5fd4b7f7..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/TextDecoration.php
+++ /dev/null
@@ -1,46 +0,0 @@
- true,
- 'overline' => true,
- 'underline' => true,
- );
-
- $string = strtolower($this->parseCDATA($string));
-
- if ($string === 'none') {
- return $string;
- }
-
- $parts = explode(' ', $string);
- $final = '';
- foreach ($parts as $part) {
- if (isset($allowed_values[$part])) {
- $final .= $part . ' ';
- }
- }
- $final = rtrim($final);
- if ($final === '') {
- return false;
- }
- return $final;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/URI.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/URI.php
deleted file mode 100644
index 6617acac..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/URI.php
+++ /dev/null
@@ -1,77 +0,0 @@
-parseCDATA($uri_string);
- if (strpos($uri_string, 'url(') !== 0) {
- return false;
- }
- $uri_string = substr($uri_string, 4);
- if (strlen($uri_string) == 0) {
- return false;
- }
- $new_length = strlen($uri_string) - 1;
- if ($uri_string[$new_length] != ')') {
- return false;
- }
- $uri = trim(substr($uri_string, 0, $new_length));
-
- if (!empty($uri) && ($uri[0] == "'" || $uri[0] == '"')) {
- $quote = $uri[0];
- $new_length = strlen($uri) - 1;
- if ($uri[$new_length] !== $quote) {
- return false;
- }
- $uri = substr($uri, 1, $new_length - 1);
- }
-
- $uri = $this->expandCSSEscape($uri);
-
- $result = parent::validate($uri, $config, $context);
-
- if ($result === false) {
- return false;
- }
-
- // extra sanity check; should have been done by URI
- $result = str_replace(array('"', "\\", "\n", "\x0c", "\r"), "", $result);
-
- // suspicious characters are ()'; we're going to percent encode
- // them for safety.
- $result = str_replace(array('(', ')', "'"), array('%28', '%29', '%27'), $result);
-
- // there's an extra bug where ampersands lose their escaping on
- // an innerHTML cycle, so a very unlucky query parameter could
- // then change the meaning of the URL. Unfortunately, there's
- // not much we can do about that...
- return "url(\"$result\")";
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Clone.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Clone.php
deleted file mode 100644
index 6698a00c..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Clone.php
+++ /dev/null
@@ -1,44 +0,0 @@
-clone = $clone;
- }
-
- /**
- * @param string $v
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool|string
- */
- public function validate($v, $config, $context)
- {
- return $this->clone->validate($v, $config, $context);
- }
-
- /**
- * @param string $string
- * @return HTMLPurifier_AttrDef
- */
- public function make($string)
- {
- return clone $this->clone;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Enum.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Enum.php
deleted file mode 100644
index 8abda7f6..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Enum.php
+++ /dev/null
@@ -1,73 +0,0 @@
-valid_values = array_flip($valid_values);
- $this->case_sensitive = $case_sensitive;
- }
-
- /**
- * @param string $string
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool|string
- */
- public function validate($string, $config, $context)
- {
- $string = trim($string);
- if (!$this->case_sensitive) {
- // we may want to do full case-insensitive libraries
- $string = ctype_lower($string) ? $string : strtolower($string);
- }
- $result = isset($this->valid_values[$string]);
-
- return $result ? $string : false;
- }
-
- /**
- * @param string $string In form of comma-delimited list of case-insensitive
- * valid values. Example: "foo,bar,baz". Prepend "s:" to make
- * case sensitive
- * @return HTMLPurifier_AttrDef_Enum
- */
- public function make($string)
- {
- if (strlen($string) > 2 && $string[0] == 's' && $string[1] == ':') {
- $string = substr($string, 2);
- $sensitive = true;
- } else {
- $sensitive = false;
- }
- $values = explode(',', $string);
- return new HTMLPurifier_AttrDef_Enum($values, $sensitive);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Bool.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Bool.php
deleted file mode 100644
index be3bbc8d..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Bool.php
+++ /dev/null
@@ -1,48 +0,0 @@
-name = $name;
- }
-
- /**
- * @param string $string
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool|string
- */
- public function validate($string, $config, $context)
- {
- return $this->name;
- }
-
- /**
- * @param string $string Name of attribute
- * @return HTMLPurifier_AttrDef_HTML_Bool
- */
- public function make($string)
- {
- return new HTMLPurifier_AttrDef_HTML_Bool($string);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Class.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Class.php
deleted file mode 100644
index d5013488..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Class.php
+++ /dev/null
@@ -1,48 +0,0 @@
-getDefinition('HTML')->doctype->name;
- if ($name == "XHTML 1.1" || $name == "XHTML 2.0") {
- return parent::split($string, $config, $context);
- } else {
- return preg_split('/\s+/', $string);
- }
- }
-
- /**
- * @param array $tokens
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return array
- */
- protected function filter($tokens, $config, $context)
- {
- $allowed = $config->get('Attr.AllowedClasses');
- $forbidden = $config->get('Attr.ForbiddenClasses');
- $ret = array();
- foreach ($tokens as $token) {
- if (($allowed === null || isset($allowed[$token])) &&
- !isset($forbidden[$token]) &&
- // We need this O(n) check because of PHP's array
- // implementation that casts -0 to 0.
- !in_array($token, $ret, true)
- ) {
- $ret[] = $token;
- }
- }
- return $ret;
- }
-}
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Color.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Color.php
deleted file mode 100644
index 946ebb78..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Color.php
+++ /dev/null
@@ -1,51 +0,0 @@
-get('Core.ColorKeywords');
- }
-
- $string = trim($string);
-
- if (empty($string)) {
- return false;
- }
- $lower = strtolower($string);
- if (isset($colors[$lower])) {
- return $colors[$lower];
- }
- if ($string[0] === '#') {
- $hex = substr($string, 1);
- } else {
- $hex = $string;
- }
-
- $length = strlen($hex);
- if ($length !== 3 && $length !== 6) {
- return false;
- }
- if (!ctype_xdigit($hex)) {
- return false;
- }
- if ($length === 3) {
- $hex = $hex[0] . $hex[0] . $hex[1] . $hex[1] . $hex[2] . $hex[2];
- }
- return "#$hex";
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/FrameTarget.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/FrameTarget.php
deleted file mode 100644
index d79ba12b..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/FrameTarget.php
+++ /dev/null
@@ -1,38 +0,0 @@
-valid_values === false) {
- $this->valid_values = $config->get('Attr.AllowedFrameTargets');
- }
- return parent::validate($string, $config, $context);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/ID.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/ID.php
deleted file mode 100644
index 4ba45610..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/ID.php
+++ /dev/null
@@ -1,113 +0,0 @@
-selector = $selector;
- }
-
- /**
- * @param string $id
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool|string
- */
- public function validate($id, $config, $context)
- {
- if (!$this->selector && !$config->get('Attr.EnableID')) {
- return false;
- }
-
- $id = trim($id); // trim it first
-
- if ($id === '') {
- return false;
- }
-
- $prefix = $config->get('Attr.IDPrefix');
- if ($prefix !== '') {
- $prefix .= $config->get('Attr.IDPrefixLocal');
- // prevent re-appending the prefix
- if (strpos($id, $prefix) !== 0) {
- $id = $prefix . $id;
- }
- } elseif ($config->get('Attr.IDPrefixLocal') !== '') {
- trigger_error(
- '%Attr.IDPrefixLocal cannot be used unless ' .
- '%Attr.IDPrefix is set',
- E_USER_WARNING
- );
- }
-
- if (!$this->selector) {
- $id_accumulator =& $context->get('IDAccumulator');
- if (isset($id_accumulator->ids[$id])) {
- return false;
- }
- }
-
- // we purposely avoid using regex, hopefully this is faster
-
- if ($config->get('Attr.ID.HTML5') === true) {
- if (preg_match('/[\t\n\x0b\x0c ]/', $id)) {
- return false;
- }
- } else {
- if (ctype_alpha($id)) {
- // OK
- } else {
- if (!ctype_alpha(@$id[0])) {
- return false;
- }
- // primitive style of regexps, I suppose
- $trim = trim(
- $id,
- 'A..Za..z0..9:-._'
- );
- if ($trim !== '') {
- return false;
- }
- }
- }
-
- $regexp = $config->get('Attr.IDBlacklistRegexp');
- if ($regexp && preg_match($regexp, $id)) {
- return false;
- }
-
- if (!$this->selector) {
- $id_accumulator->add($id);
- }
-
- // if no change was made to the ID, return the result
- // else, return the new id if stripping whitespace made it
- // valid, or return false.
- return $id;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Length.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Length.php
deleted file mode 100644
index 1c4006fb..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Length.php
+++ /dev/null
@@ -1,56 +0,0 @@
- 100) {
- return '100%';
- }
- return ((string)$points) . '%';
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/LinkTypes.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/LinkTypes.php
deleted file mode 100644
index 63fa04c1..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/LinkTypes.php
+++ /dev/null
@@ -1,72 +0,0 @@
- 'AllowedRel',
- 'rev' => 'AllowedRev'
- );
- if (!isset($configLookup[$name])) {
- trigger_error(
- 'Unrecognized attribute name for link ' .
- 'relationship.',
- E_USER_ERROR
- );
- return;
- }
- $this->name = $configLookup[$name];
- }
-
- /**
- * @param string $string
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool|string
- */
- public function validate($string, $config, $context)
- {
- $allowed = $config->get('Attr.' . $this->name);
- if (empty($allowed)) {
- return false;
- }
-
- $string = $this->parseCDATA($string);
- $parts = explode(' ', $string);
-
- // lookup to prevent duplicates
- $ret_lookup = array();
- foreach ($parts as $part) {
- $part = strtolower(trim($part));
- if (!isset($allowed[$part])) {
- continue;
- }
- $ret_lookup[$part] = true;
- }
-
- if (empty($ret_lookup)) {
- return false;
- }
- $string = implode(' ', array_keys($ret_lookup));
- return $string;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/MultiLength.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/MultiLength.php
deleted file mode 100644
index bbb20f2f..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/MultiLength.php
+++ /dev/null
@@ -1,60 +0,0 @@
-split($string, $config, $context);
- $tokens = $this->filter($tokens, $config, $context);
- if (empty($tokens)) {
- return false;
- }
- return implode(' ', $tokens);
- }
-
- /**
- * Splits a space separated list of tokens into its constituent parts.
- * @param string $string
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return array
- */
- protected function split($string, $config, $context)
- {
- // OPTIMIZABLE!
- // do the preg_match, capture all subpatterns for reformulation
-
- // we don't support U+00A1 and up codepoints or
- // escaping because I don't know how to do that with regexps
- // and plus it would complicate optimization efforts (you never
- // see that anyway).
- $pattern = '/(?:(?<=\s)|\A)' . // look behind for space or string start
- '((?:--|-?[A-Za-z_])[A-Za-z_\-0-9]*)' .
- '(?:(?=\s)|\z)/'; // look ahead for space or string end
- preg_match_all($pattern, $string, $matches);
- return $matches[1];
- }
-
- /**
- * Template method for removing certain tokens based on arbitrary criteria.
- * @note If we wanted to be really functional, we'd do an array_filter
- * with a callback. But... we're not.
- * @param array $tokens
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return array
- */
- protected function filter($tokens, $config, $context)
- {
- return $tokens;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Pixels.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Pixels.php
deleted file mode 100644
index a1d019e0..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Pixels.php
+++ /dev/null
@@ -1,76 +0,0 @@
-max = $max;
- }
-
- /**
- * @param string $string
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool|string
- */
- public function validate($string, $config, $context)
- {
- $string = trim($string);
- if ($string === '0') {
- return $string;
- }
- if ($string === '') {
- return false;
- }
- $length = strlen($string);
- if (substr($string, $length - 2) == 'px') {
- $string = substr($string, 0, $length - 2);
- }
- if (!is_numeric($string)) {
- return false;
- }
- $int = (int)$string;
-
- if ($int < 0) {
- return '0';
- }
-
- // upper-bound value, extremely high values can
- // crash operating systems, see
- // WARNING, above link WILL crash you if you're using Windows
-
- if ($this->max !== null && $int > $this->max) {
- return (string)$this->max;
- }
- return (string)$int;
- }
-
- /**
- * @param string $string
- * @return HTMLPurifier_AttrDef
- */
- public function make($string)
- {
- if ($string === '') {
- $max = null;
- } else {
- $max = (int)$string;
- }
- $class = get_class($this);
- return new $class($max);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Integer.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Integer.php
deleted file mode 100644
index 400e707d..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Integer.php
+++ /dev/null
@@ -1,91 +0,0 @@
-negative = $negative;
- $this->zero = $zero;
- $this->positive = $positive;
- }
-
- /**
- * @param string $integer
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool|string
- */
- public function validate($integer, $config, $context)
- {
- $integer = $this->parseCDATA($integer);
- if ($integer === '') {
- return false;
- }
-
- // we could possibly simply typecast it to integer, but there are
- // certain fringe cases that must not return an integer.
-
- // clip leading sign
- if ($this->negative && $integer[0] === '-') {
- $digits = substr($integer, 1);
- if ($digits === '0') {
- $integer = '0';
- } // rm minus sign for zero
- } elseif ($this->positive && $integer[0] === '+') {
- $digits = $integer = substr($integer, 1); // rm unnecessary plus
- } else {
- $digits = $integer;
- }
-
- // test if it's numeric
- if (!ctype_digit($digits)) {
- return false;
- }
-
- // perform scope tests
- if (!$this->zero && $integer == 0) {
- return false;
- }
- if (!$this->positive && $integer > 0) {
- return false;
- }
- if (!$this->negative && $integer < 0) {
- return false;
- }
-
- return $integer;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Lang.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Lang.php
deleted file mode 100644
index 2a55cea6..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Lang.php
+++ /dev/null
@@ -1,86 +0,0 @@
- 8 || !ctype_alnum($subtags[1])) {
- return $new_string;
- }
- if (!ctype_lower($subtags[1])) {
- $subtags[1] = strtolower($subtags[1]);
- }
-
- $new_string .= '-' . $subtags[1];
- if ($num_subtags == 2) {
- return $new_string;
- }
-
- // process all other subtags, index 2 and up
- for ($i = 2; $i < $num_subtags; $i++) {
- $length = strlen($subtags[$i]);
- if ($length == 0 || $length > 8 || !ctype_alnum($subtags[$i])) {
- return $new_string;
- }
- if (!ctype_lower($subtags[$i])) {
- $subtags[$i] = strtolower($subtags[$i]);
- }
- $new_string .= '-' . $subtags[$i];
- }
- return $new_string;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Switch.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Switch.php
deleted file mode 100644
index c7eb3199..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Switch.php
+++ /dev/null
@@ -1,53 +0,0 @@
-tag = $tag;
- $this->withTag = $with_tag;
- $this->withoutTag = $without_tag;
- }
-
- /**
- * @param string $string
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool|string
- */
- public function validate($string, $config, $context)
- {
- $token = $context->get('CurrentToken', true);
- if (!$token || $token->name !== $this->tag) {
- return $this->withoutTag->validate($string, $config, $context);
- } else {
- return $this->withTag->validate($string, $config, $context);
- }
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Text.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Text.php
deleted file mode 100644
index 4553a4ea..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Text.php
+++ /dev/null
@@ -1,21 +0,0 @@
-parseCDATA($string);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI.php
deleted file mode 100644
index c1cd8977..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI.php
+++ /dev/null
@@ -1,111 +0,0 @@
-parser = new HTMLPurifier_URIParser();
- $this->embedsResource = (bool)$embeds_resource;
- }
-
- /**
- * @param string $string
- * @return HTMLPurifier_AttrDef_URI
- */
- public function make($string)
- {
- $embeds = ($string === 'embedded');
- return new HTMLPurifier_AttrDef_URI($embeds);
- }
-
- /**
- * @param string $uri
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool|string
- */
- public function validate($uri, $config, $context)
- {
- if ($config->get('URI.Disable')) {
- return false;
- }
-
- $uri = $this->parseCDATA($uri);
-
- // parse the URI
- $uri = $this->parser->parse($uri);
- if ($uri === false) {
- return false;
- }
-
- // add embedded flag to context for validators
- $context->register('EmbeddedURI', $this->embedsResource);
-
- $ok = false;
- do {
-
- // generic validation
- $result = $uri->validate($config, $context);
- if (!$result) {
- break;
- }
-
- // chained filtering
- $uri_def = $config->getDefinition('URI');
- $result = $uri_def->filter($uri, $config, $context);
- if (!$result) {
- break;
- }
-
- // scheme-specific validation
- $scheme_obj = $uri->getSchemeObj($config, $context);
- if (!$scheme_obj) {
- break;
- }
- if ($this->embedsResource && !$scheme_obj->browsable) {
- break;
- }
- $result = $scheme_obj->validate($uri, $config, $context);
- if (!$result) {
- break;
- }
-
- // Post chained filtering
- $result = $uri_def->postFilter($uri, $config, $context);
- if (!$result) {
- break;
- }
-
- // survived gauntlet
- $ok = true;
-
- } while (false);
-
- $context->destroy('EmbeddedURI');
- if (!$ok) {
- return false;
- }
- // back to string
- return $uri->toString();
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/Email.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/Email.php
deleted file mode 100644
index daf32b76..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/Email.php
+++ /dev/null
@@ -1,20 +0,0 @@
-"
- // that needs more percent encoding to be done
- if ($string == '') {
- return false;
- }
- $string = trim($string);
- $result = preg_match('/^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i', $string);
- return $result ? $string : false;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/Host.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/Host.php
deleted file mode 100644
index 1beeaa5d..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/Host.php
+++ /dev/null
@@ -1,142 +0,0 @@
-ipv4 = new HTMLPurifier_AttrDef_URI_IPv4();
- $this->ipv6 = new HTMLPurifier_AttrDef_URI_IPv6();
- }
-
- /**
- * @param string $string
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool|string
- */
- public function validate($string, $config, $context)
- {
- $length = strlen($string);
- // empty hostname is OK; it's usually semantically equivalent:
- // the default host as defined by a URI scheme is used:
- //
- // If the URI scheme defines a default for host, then that
- // default applies when the host subcomponent is undefined
- // or when the registered name is empty (zero length).
- if ($string === '') {
- return '';
- }
- if ($length > 1 && $string[0] === '[' && $string[$length - 1] === ']') {
- //IPv6
- $ip = substr($string, 1, $length - 2);
- $valid = $this->ipv6->validate($ip, $config, $context);
- if ($valid === false) {
- return false;
- }
- return '[' . $valid . ']';
- }
-
- // need to do checks on unusual encodings too
- $ipv4 = $this->ipv4->validate($string, $config, $context);
- if ($ipv4 !== false) {
- return $ipv4;
- }
-
- // A regular domain name.
-
- // This doesn't match I18N domain names, but we don't have proper IRI support,
- // so force users to insert Punycode.
-
- // There is not a good sense in which underscores should be
- // allowed, since it's technically not! (And if you go as
- // far to allow everything as specified by the DNS spec...
- // well, that's literally everything, modulo some space limits
- // for the components and the overall name (which, by the way,
- // we are NOT checking!). So we (arbitrarily) decide this:
- // let's allow underscores wherever we would have allowed
- // hyphens, if they are enabled. This is a pretty good match
- // for browser behavior, for example, a large number of browsers
- // cannot handle foo_.example.com, but foo_bar.example.com is
- // fairly well supported.
- $underscore = $config->get('Core.AllowHostnameUnderscore') ? '_' : '';
-
- // Based off of RFC 1738, but amended so that
- // as per RFC 3696, the top label need only not be all numeric.
- // The productions describing this are:
- $a = '[a-z]'; // alpha
- $an = '[a-z0-9]'; // alphanum
- $and = "[a-z0-9-$underscore]"; // alphanum | "-"
- // domainlabel = alphanum | alphanum *( alphanum | "-" ) alphanum
- $domainlabel = "$an(?:$and*$an)?";
- // AMENDED as per RFC 3696
- // toplabel = alphanum | alphanum *( alphanum | "-" ) alphanum
- // side condition: not all numeric
- $toplabel = "$an(?:$and*$an)?";
- // hostname = *( domainlabel "." ) toplabel [ "." ]
- if (preg_match("/^(?:$domainlabel\.)*($toplabel)\.?$/i", $string, $matches)) {
- if (!ctype_digit($matches[1])) {
- return $string;
- }
- }
-
- // PHP 5.3 and later support this functionality natively
- if (function_exists('idn_to_ascii')) {
- if (defined('IDNA_NONTRANSITIONAL_TO_ASCII') && defined('INTL_IDNA_VARIANT_UTS46')) {
- $string = idn_to_ascii($string, IDNA_NONTRANSITIONAL_TO_ASCII, INTL_IDNA_VARIANT_UTS46);
- } else {
- $string = idn_to_ascii($string);
- }
-
- // If we have Net_IDNA2 support, we can support IRIs by
- // punycoding them. (This is the most portable thing to do,
- // since otherwise we have to assume browsers support
- } elseif ($config->get('Core.EnableIDNA')) {
- $idna = new Net_IDNA2(array('encoding' => 'utf8', 'overlong' => false, 'strict' => true));
- // we need to encode each period separately
- $parts = explode('.', $string);
- try {
- $new_parts = array();
- foreach ($parts as $part) {
- $encodable = false;
- for ($i = 0, $c = strlen($part); $i < $c; $i++) {
- if (ord($part[$i]) > 0x7a) {
- $encodable = true;
- break;
- }
- }
- if (!$encodable) {
- $new_parts[] = $part;
- } else {
- $new_parts[] = $idna->encode($part);
- }
- }
- $string = implode('.', $new_parts);
- } catch (Exception $e) {
- // XXX error reporting
- }
- }
- // Try again
- if (preg_match("/^($domainlabel\.)*$toplabel\.?$/i", $string)) {
- return $string;
- }
- return false;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/IPv4.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/IPv4.php
deleted file mode 100644
index 30ac16c9..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/IPv4.php
+++ /dev/null
@@ -1,45 +0,0 @@
-ip4) {
- $this->_loadRegex();
- }
-
- if (preg_match('#^' . $this->ip4 . '$#s', $aIP)) {
- return $aIP;
- }
- return false;
- }
-
- /**
- * Lazy load function to prevent regex from being stuffed in
- * cache.
- */
- protected function _loadRegex()
- {
- $oct = '(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])'; // 0-255
- $this->ip4 = "(?:{$oct}\\.{$oct}\\.{$oct}\\.{$oct})";
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/IPv6.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/IPv6.php
deleted file mode 100644
index f243793e..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/IPv6.php
+++ /dev/null
@@ -1,89 +0,0 @@
-ip4) {
- $this->_loadRegex();
- }
-
- $original = $aIP;
-
- $hex = '[0-9a-fA-F]';
- $blk = '(?:' . $hex . '{1,4})';
- $pre = '(?:/(?:12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9]))'; // /0 - /128
-
- // prefix check
- if (strpos($aIP, '/') !== false) {
- if (preg_match('#' . $pre . '$#s', $aIP, $find)) {
- $aIP = substr($aIP, 0, 0 - strlen($find[0]));
- unset($find);
- } else {
- return false;
- }
- }
-
- // IPv4-compatiblity check
- if (preg_match('#(?<=:' . ')' . $this->ip4 . '$#s', $aIP, $find)) {
- $aIP = substr($aIP, 0, 0 - strlen($find[0]));
- $ip = explode('.', $find[0]);
- $ip = array_map('dechex', $ip);
- $aIP .= $ip[0] . $ip[1] . ':' . $ip[2] . $ip[3];
- unset($find, $ip);
- }
-
- // compression check
- $aIP = explode('::', $aIP);
- $c = count($aIP);
- if ($c > 2) {
- return false;
- } elseif ($c == 2) {
- list($first, $second) = $aIP;
- $first = explode(':', $first);
- $second = explode(':', $second);
-
- if (count($first) + count($second) > 8) {
- return false;
- }
-
- while (count($first) < 8) {
- array_push($first, '0');
- }
-
- array_splice($first, 8 - count($second), 8, $second);
- $aIP = $first;
- unset($first, $second);
- } else {
- $aIP = explode(':', $aIP[0]);
- }
- $c = count($aIP);
-
- if ($c != 8) {
- return false;
- }
-
- // All the pieces should be 16-bit hex strings. Are they?
- foreach ($aIP as $piece) {
- if (!preg_match('#^[0-9a-fA-F]{4}$#s', sprintf('%04s', $piece))) {
- return false;
- }
- }
- return $original;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform.php
deleted file mode 100644
index b428331f..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform.php
+++ /dev/null
@@ -1,60 +0,0 @@
-confiscateAttr($attr, 'background');
- // some validation should happen here
-
- $this->prependCSS($attr, "background-image:url($background);");
- return $attr;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/BdoDir.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/BdoDir.php
deleted file mode 100644
index d66c04a5..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/BdoDir.php
+++ /dev/null
@@ -1,27 +0,0 @@
-get('Attr.DefaultTextDir');
- return $attr;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/BgColor.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/BgColor.php
deleted file mode 100644
index 0f51fd2c..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/BgColor.php
+++ /dev/null
@@ -1,28 +0,0 @@
-confiscateAttr($attr, 'bgcolor');
- // some validation should happen here
-
- $this->prependCSS($attr, "background-color:$bgcolor;");
- return $attr;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/BoolToCSS.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/BoolToCSS.php
deleted file mode 100644
index f25cd019..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/BoolToCSS.php
+++ /dev/null
@@ -1,47 +0,0 @@
-attr = $attr;
- $this->css = $css;
- }
-
- /**
- * @param array $attr
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return array
- */
- public function transform($attr, $config, $context)
- {
- if (!isset($attr[$this->attr])) {
- return $attr;
- }
- unset($attr[$this->attr]);
- $this->prependCSS($attr, $this->css);
- return $attr;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Border.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Border.php
deleted file mode 100644
index 057dc017..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Border.php
+++ /dev/null
@@ -1,26 +0,0 @@
-confiscateAttr($attr, 'border');
- // some validation should happen here
- $this->prependCSS($attr, "border:{$border_width}px solid;");
- return $attr;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/EnumToCSS.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/EnumToCSS.php
deleted file mode 100644
index 7ccd0e3f..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/EnumToCSS.php
+++ /dev/null
@@ -1,68 +0,0 @@
-attr = $attr;
- $this->enumToCSS = $enum_to_css;
- $this->caseSensitive = (bool)$case_sensitive;
- }
-
- /**
- * @param array $attr
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return array
- */
- public function transform($attr, $config, $context)
- {
- if (!isset($attr[$this->attr])) {
- return $attr;
- }
-
- $value = trim($attr[$this->attr]);
- unset($attr[$this->attr]);
-
- if (!$this->caseSensitive) {
- $value = strtolower($value);
- }
-
- if (!isset($this->enumToCSS[$value])) {
- return $attr;
- }
- $this->prependCSS($attr, $this->enumToCSS[$value]);
- return $attr;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/ImgRequired.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/ImgRequired.php
deleted file mode 100644
index 235ebb34..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/ImgRequired.php
+++ /dev/null
@@ -1,47 +0,0 @@
-get('Core.RemoveInvalidImg')) {
- return $attr;
- }
- $attr['src'] = $config->get('Attr.DefaultInvalidImage');
- $src = false;
- }
-
- if (!isset($attr['alt'])) {
- if ($src) {
- $alt = $config->get('Attr.DefaultImageAlt');
- if ($alt === null) {
- $attr['alt'] = basename($attr['src']);
- } else {
- $attr['alt'] = $alt;
- }
- } else {
- $attr['alt'] = $config->get('Attr.DefaultInvalidImageAlt');
- }
- }
- return $attr;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/ImgSpace.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/ImgSpace.php
deleted file mode 100644
index 350b3358..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/ImgSpace.php
+++ /dev/null
@@ -1,61 +0,0 @@
- array('left', 'right'),
- 'vspace' => array('top', 'bottom')
- );
-
- /**
- * @param string $attr
- */
- public function __construct($attr)
- {
- $this->attr = $attr;
- if (!isset($this->css[$attr])) {
- trigger_error(htmlspecialchars($attr) . ' is not valid space attribute');
- }
- }
-
- /**
- * @param array $attr
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return array
- */
- public function transform($attr, $config, $context)
- {
- if (!isset($attr[$this->attr])) {
- return $attr;
- }
-
- $width = $this->confiscateAttr($attr, $this->attr);
- // some validation could happen here
-
- if (!isset($this->css[$this->attr])) {
- return $attr;
- }
-
- $style = '';
- foreach ($this->css[$this->attr] as $suffix) {
- $property = "margin-$suffix";
- $style .= "$property:{$width}px;";
- }
- $this->prependCSS($attr, $style);
- return $attr;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Input.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Input.php
deleted file mode 100644
index 3ab47ed8..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Input.php
+++ /dev/null
@@ -1,56 +0,0 @@
-pixels = new HTMLPurifier_AttrDef_HTML_Pixels();
- }
-
- /**
- * @param array $attr
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return array
- */
- public function transform($attr, $config, $context)
- {
- if (!isset($attr['type'])) {
- $t = 'text';
- } else {
- $t = strtolower($attr['type']);
- }
- if (isset($attr['checked']) && $t !== 'radio' && $t !== 'checkbox') {
- unset($attr['checked']);
- }
- if (isset($attr['maxlength']) && $t !== 'text' && $t !== 'password') {
- unset($attr['maxlength']);
- }
- if (isset($attr['size']) && $t !== 'text' && $t !== 'password') {
- $result = $this->pixels->validate($attr['size'], $config, $context);
- if ($result === false) {
- unset($attr['size']);
- } else {
- $attr['size'] = $result;
- }
- }
- if (isset($attr['src']) && $t !== 'image') {
- unset($attr['src']);
- }
- if (!isset($attr['value']) && ($t === 'radio' || $t === 'checkbox')) {
- $attr['value'] = '';
- }
- return $attr;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Lang.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Lang.php
deleted file mode 100644
index 5b0aff0e..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Lang.php
+++ /dev/null
@@ -1,31 +0,0 @@
-name = $name;
- $this->cssName = $css_name ? $css_name : $name;
- }
-
- /**
- * @param array $attr
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return array
- */
- public function transform($attr, $config, $context)
- {
- if (!isset($attr[$this->name])) {
- return $attr;
- }
- $length = $this->confiscateAttr($attr, $this->name);
- if (ctype_digit($length)) {
- $length .= 'px';
- }
- $this->prependCSS($attr, $this->cssName . ":$length;");
- return $attr;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Name.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Name.php
deleted file mode 100644
index 63cce683..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Name.php
+++ /dev/null
@@ -1,33 +0,0 @@
-get('HTML.Attr.Name.UseCDATA')) {
- return $attr;
- }
- if (!isset($attr['name'])) {
- return $attr;
- }
- $id = $this->confiscateAttr($attr, 'name');
- if (isset($attr['id'])) {
- return $attr;
- }
- $attr['id'] = $id;
- return $attr;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/NameSync.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/NameSync.php
deleted file mode 100644
index 36079b78..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/NameSync.php
+++ /dev/null
@@ -1,41 +0,0 @@
-idDef = new HTMLPurifier_AttrDef_HTML_ID();
- }
-
- /**
- * @param array $attr
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return array
- */
- public function transform($attr, $config, $context)
- {
- if (!isset($attr['name'])) {
- return $attr;
- }
- $name = $attr['name'];
- if (isset($attr['id']) && $attr['id'] === $name) {
- return $attr;
- }
- $result = $this->idDef->validate($name, $config, $context);
- if ($result === false) {
- unset($attr['name']);
- } else {
- $attr['name'] = $result;
- }
- return $attr;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Nofollow.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Nofollow.php
deleted file mode 100644
index 1057ebee..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Nofollow.php
+++ /dev/null
@@ -1,52 +0,0 @@
-parser = new HTMLPurifier_URIParser();
- }
-
- /**
- * @param array $attr
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return array
- */
- public function transform($attr, $config, $context)
- {
- if (!isset($attr['href'])) {
- return $attr;
- }
-
- // XXX Kind of inefficient
- $url = $this->parser->parse($attr['href']);
- $scheme = $url->getSchemeObj($config, $context);
-
- if ($scheme->browsable && !$url->isLocal($config, $context)) {
- if (isset($attr['rel'])) {
- $rels = explode(' ', $attr['rel']);
- if (!in_array('nofollow', $rels)) {
- $rels[] = 'nofollow';
- }
- $attr['rel'] = implode(' ', $rels);
- } else {
- $attr['rel'] = 'nofollow';
- }
- }
- return $attr;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/SafeEmbed.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/SafeEmbed.php
deleted file mode 100644
index 231c81a3..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/SafeEmbed.php
+++ /dev/null
@@ -1,25 +0,0 @@
-uri = new HTMLPurifier_AttrDef_URI(true); // embedded
- $this->wmode = new HTMLPurifier_AttrDef_Enum(array('window', 'opaque', 'transparent'));
- }
-
- /**
- * @param array $attr
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return array
- */
- public function transform($attr, $config, $context)
- {
- // If we add support for other objects, we'll need to alter the
- // transforms.
- switch ($attr['name']) {
- // application/x-shockwave-flash
- // Keep this synchronized with Injector/SafeObject.php
- case 'allowScriptAccess':
- $attr['value'] = 'never';
- break;
- case 'allowNetworking':
- $attr['value'] = 'internal';
- break;
- case 'allowFullScreen':
- if ($config->get('HTML.FlashAllowFullScreen')) {
- $attr['value'] = ($attr['value'] == 'true') ? 'true' : 'false';
- } else {
- $attr['value'] = 'false';
- }
- break;
- case 'wmode':
- $attr['value'] = $this->wmode->validate($attr['value'], $config, $context);
- break;
- case 'movie':
- case 'src':
- $attr['name'] = "movie";
- $attr['value'] = $this->uri->validate($attr['value'], $config, $context);
- break;
- case 'flashvars':
- // we're going to allow arbitrary inputs to the SWF, on
- // the reasoning that it could only hack the SWF, not us.
- break;
- // add other cases to support other param name/value pairs
- default:
- $attr['name'] = $attr['value'] = null;
- }
- return $attr;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/ScriptRequired.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/ScriptRequired.php
deleted file mode 100644
index b7057bbf..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/ScriptRequired.php
+++ /dev/null
@@ -1,23 +0,0 @@
-
- */
-class HTMLPurifier_AttrTransform_ScriptRequired extends HTMLPurifier_AttrTransform
-{
- /**
- * @param array $attr
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return array
- */
- public function transform($attr, $config, $context)
- {
- if (!isset($attr['type'])) {
- $attr['type'] = 'text/javascript';
- }
- return $attr;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/TargetBlank.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/TargetBlank.php
deleted file mode 100644
index dd63ea89..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/TargetBlank.php
+++ /dev/null
@@ -1,45 +0,0 @@
-parser = new HTMLPurifier_URIParser();
- }
-
- /**
- * @param array $attr
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return array
- */
- public function transform($attr, $config, $context)
- {
- if (!isset($attr['href'])) {
- return $attr;
- }
-
- // XXX Kind of inefficient
- $url = $this->parser->parse($attr['href']);
- $scheme = $url->getSchemeObj($config, $context);
-
- if ($scheme->browsable && !$url->isBenign($config, $context)) {
- $attr['target'] = '_blank';
- }
- return $attr;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/TargetNoopener.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/TargetNoopener.php
deleted file mode 100644
index 1db3c6c0..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/TargetNoopener.php
+++ /dev/null
@@ -1,37 +0,0 @@
-
- */
-class HTMLPurifier_AttrTransform_Textarea extends HTMLPurifier_AttrTransform
-{
- /**
- * @param array $attr
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return array
- */
- public function transform($attr, $config, $context)
- {
- // Calculated from Firefox
- if (!isset($attr['cols'])) {
- $attr['cols'] = '22';
- }
- if (!isset($attr['rows'])) {
- $attr['rows'] = '3';
- }
- return $attr;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTypes.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTypes.php
deleted file mode 100644
index 3b70520b..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTypes.php
+++ /dev/null
@@ -1,96 +0,0 @@
-info['Enum'] = new HTMLPurifier_AttrDef_Enum();
- $this->info['Bool'] = new HTMLPurifier_AttrDef_HTML_Bool();
-
- $this->info['CDATA'] = new HTMLPurifier_AttrDef_Text();
- $this->info['ID'] = new HTMLPurifier_AttrDef_HTML_ID();
- $this->info['Length'] = new HTMLPurifier_AttrDef_HTML_Length();
- $this->info['MultiLength'] = new HTMLPurifier_AttrDef_HTML_MultiLength();
- $this->info['NMTOKENS'] = new HTMLPurifier_AttrDef_HTML_Nmtokens();
- $this->info['Pixels'] = new HTMLPurifier_AttrDef_HTML_Pixels();
- $this->info['Text'] = new HTMLPurifier_AttrDef_Text();
- $this->info['URI'] = new HTMLPurifier_AttrDef_URI();
- $this->info['LanguageCode'] = new HTMLPurifier_AttrDef_Lang();
- $this->info['Color'] = new HTMLPurifier_AttrDef_HTML_Color();
- $this->info['IAlign'] = self::makeEnum('top,middle,bottom,left,right');
- $this->info['LAlign'] = self::makeEnum('top,bottom,left,right');
- $this->info['FrameTarget'] = new HTMLPurifier_AttrDef_HTML_FrameTarget();
-
- // unimplemented aliases
- $this->info['ContentType'] = new HTMLPurifier_AttrDef_Text();
- $this->info['ContentTypes'] = new HTMLPurifier_AttrDef_Text();
- $this->info['Charsets'] = new HTMLPurifier_AttrDef_Text();
- $this->info['Character'] = new HTMLPurifier_AttrDef_Text();
-
- // "proprietary" types
- $this->info['Class'] = new HTMLPurifier_AttrDef_HTML_Class();
-
- // number is really a positive integer (one or more digits)
- // FIXME: ^^ not always, see start and value of list items
- $this->info['Number'] = new HTMLPurifier_AttrDef_Integer(false, false, true);
- }
-
- private static function makeEnum($in)
- {
- return new HTMLPurifier_AttrDef_Clone(new HTMLPurifier_AttrDef_Enum(explode(',', $in)));
- }
-
- /**
- * Retrieves a type
- * @param string $type String type name
- * @return HTMLPurifier_AttrDef Object AttrDef for type
- */
- public function get($type)
- {
- // determine if there is any extra info tacked on
- if (strpos($type, '#') !== false) {
- list($type, $string) = explode('#', $type, 2);
- } else {
- $string = '';
- }
-
- if (!isset($this->info[$type])) {
- trigger_error('Cannot retrieve undefined attribute type ' . $type, E_USER_ERROR);
- return;
- }
- return $this->info[$type]->make($string);
- }
-
- /**
- * Sets a new implementation for a type
- * @param string $type String type name
- * @param HTMLPurifier_AttrDef $impl Object AttrDef for type
- */
- public function set($type, $impl)
- {
- $this->info[$type] = $impl;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrValidator.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrValidator.php
deleted file mode 100644
index f97dc93e..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrValidator.php
+++ /dev/null
@@ -1,178 +0,0 @@
-getHTMLDefinition();
- $e =& $context->get('ErrorCollector', true);
-
- // initialize IDAccumulator if necessary
- $ok =& $context->get('IDAccumulator', true);
- if (!$ok) {
- $id_accumulator = HTMLPurifier_IDAccumulator::build($config, $context);
- $context->register('IDAccumulator', $id_accumulator);
- }
-
- // initialize CurrentToken if necessary
- $current_token =& $context->get('CurrentToken', true);
- if (!$current_token) {
- $context->register('CurrentToken', $token);
- }
-
- if (!$token instanceof HTMLPurifier_Token_Start &&
- !$token instanceof HTMLPurifier_Token_Empty
- ) {
- return;
- }
-
- // create alias to global definition array, see also $defs
- // DEFINITION CALL
- $d_defs = $definition->info_global_attr;
-
- // don't update token until the very end, to ensure an atomic update
- $attr = $token->attr;
-
- // do global transformations (pre)
- // nothing currently utilizes this
- foreach ($definition->info_attr_transform_pre as $transform) {
- $attr = $transform->transform($o = $attr, $config, $context);
- if ($e) {
- if ($attr != $o) {
- $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr);
- }
- }
- }
-
- // do local transformations only applicable to this element (pre)
- // ex. to
- foreach ($definition->info[$token->name]->attr_transform_pre as $transform) {
- $attr = $transform->transform($o = $attr, $config, $context);
- if ($e) {
- if ($attr != $o) {
- $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr);
- }
- }
- }
-
- // create alias to this element's attribute definition array, see
- // also $d_defs (global attribute definition array)
- // DEFINITION CALL
- $defs = $definition->info[$token->name]->attr;
-
- $attr_key = false;
- $context->register('CurrentAttr', $attr_key);
-
- // iterate through all the attribute keypairs
- // Watch out for name collisions: $key has previously been used
- foreach ($attr as $attr_key => $value) {
-
- // call the definition
- if (isset($defs[$attr_key])) {
- // there is a local definition defined
- if ($defs[$attr_key] === false) {
- // We've explicitly been told not to allow this element.
- // This is usually when there's a global definition
- // that must be overridden.
- // Theoretically speaking, we could have a
- // AttrDef_DenyAll, but this is faster!
- $result = false;
- } else {
- // validate according to the element's definition
- $result = $defs[$attr_key]->validate(
- $value,
- $config,
- $context
- );
- }
- } elseif (isset($d_defs[$attr_key])) {
- // there is a global definition defined, validate according
- // to the global definition
- $result = $d_defs[$attr_key]->validate(
- $value,
- $config,
- $context
- );
- } else {
- // system never heard of the attribute? DELETE!
- $result = false;
- }
-
- // put the results into effect
- if ($result === false || $result === null) {
- // this is a generic error message that should replaced
- // with more specific ones when possible
- if ($e) {
- $e->send(E_ERROR, 'AttrValidator: Attribute removed');
- }
-
- // remove the attribute
- unset($attr[$attr_key]);
- } elseif (is_string($result)) {
- // generally, if a substitution is happening, there
- // was some sort of implicit correction going on. We'll
- // delegate it to the attribute classes to say exactly what.
-
- // simple substitution
- $attr[$attr_key] = $result;
- } else {
- // nothing happens
- }
-
- // we'd also want slightly more complicated substitution
- // involving an array as the return value,
- // although we're not sure how colliding attributes would
- // resolve (certain ones would be completely overriden,
- // others would prepend themselves).
- }
-
- $context->destroy('CurrentAttr');
-
- // post transforms
-
- // global (error reporting untested)
- foreach ($definition->info_attr_transform_post as $transform) {
- $attr = $transform->transform($o = $attr, $config, $context);
- if ($e) {
- if ($attr != $o) {
- $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr);
- }
- }
- }
-
- // local (error reporting untested)
- foreach ($definition->info[$token->name]->attr_transform_post as $transform) {
- $attr = $transform->transform($o = $attr, $config, $context);
- if ($e) {
- if ($attr != $o) {
- $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr);
- }
- }
- }
-
- $token->attr = $attr;
-
- // destroy CurrentToken if we made it ourselves
- if (!$current_token) {
- $context->destroy('CurrentToken');
- }
-
- }
-
-
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Bootstrap.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Bootstrap.php
deleted file mode 100644
index 707122bb..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Bootstrap.php
+++ /dev/null
@@ -1,124 +0,0 @@
-
-if (!defined('PHP_EOL')) {
- switch (strtoupper(substr(PHP_OS, 0, 3))) {
- case 'WIN':
- define('PHP_EOL', "\r\n");
- break;
- case 'DAR':
- define('PHP_EOL', "\r");
- break;
- default:
- define('PHP_EOL', "\n");
- }
-}
-
-/**
- * Bootstrap class that contains meta-functionality for HTML Purifier such as
- * the autoload function.
- *
- * @note
- * This class may be used without any other files from HTML Purifier.
- */
-class HTMLPurifier_Bootstrap
-{
-
- /**
- * Autoload function for HTML Purifier
- * @param string $class Class to load
- * @return bool
- */
- public static function autoload($class)
- {
- $file = HTMLPurifier_Bootstrap::getPath($class);
- if (!$file) {
- return false;
- }
- // Technically speaking, it should be ok and more efficient to
- // just do 'require', but Antonio Parraga reports that with
- // Zend extensions such as Zend debugger and APC, this invariant
- // may be broken. Since we have efficient alternatives, pay
- // the cost here and avoid the bug.
- require_once HTMLPURIFIER_PREFIX . '/' . $file;
- return true;
- }
-
- /**
- * Returns the path for a specific class.
- * @param string $class Class path to get
- * @return string
- */
- public static function getPath($class)
- {
- if (strncmp('HTMLPurifier', $class, 12) !== 0) {
- return false;
- }
- // Custom implementations
- if (strncmp('HTMLPurifier_Language_', $class, 22) === 0) {
- $code = str_replace('_', '-', substr($class, 22));
- $file = 'HTMLPurifier/Language/classes/' . $code . '.php';
- } else {
- $file = str_replace('_', '/', $class) . '.php';
- }
- if (!file_exists(HTMLPURIFIER_PREFIX . '/' . $file)) {
- return false;
- }
- return $file;
- }
-
- /**
- * "Pre-registers" our autoloader on the SPL stack.
- */
- public static function registerAutoload()
- {
- $autoload = array('HTMLPurifier_Bootstrap', 'autoload');
- if (($funcs = spl_autoload_functions()) === false) {
- spl_autoload_register($autoload);
- } elseif (function_exists('spl_autoload_unregister')) {
- if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
- // prepend flag exists, no need for shenanigans
- spl_autoload_register($autoload, true, true);
- } else {
- $buggy = version_compare(PHP_VERSION, '5.2.11', '<');
- $compat = version_compare(PHP_VERSION, '5.1.2', '<=') &&
- version_compare(PHP_VERSION, '5.1.0', '>=');
- foreach ($funcs as $func) {
- if ($buggy && is_array($func)) {
- // :TRICKY: There are some compatibility issues and some
- // places where we need to error out
- $reflector = new ReflectionMethod($func[0], $func[1]);
- if (!$reflector->isStatic()) {
- throw new Exception(
- 'HTML Purifier autoloader registrar is not compatible
- with non-static object methods due to PHP Bug #44144;
- Please do not use HTMLPurifier.autoload.php (or any
- file that includes this file); instead, place the code:
- spl_autoload_register(array(\'HTMLPurifier_Bootstrap\', \'autoload\'))
- after your own autoloaders.'
- );
- }
- // Suprisingly, spl_autoload_register supports the
- // Class::staticMethod callback format, although call_user_func doesn't
- if ($compat) {
- $func = implode('::', $func);
- }
- }
- spl_autoload_unregister($func);
- }
- spl_autoload_register($autoload);
- foreach ($funcs as $func) {
- spl_autoload_register($func);
- }
- }
- }
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/CSSDefinition.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/CSSDefinition.php
deleted file mode 100644
index 21f1a589..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/CSSDefinition.php
+++ /dev/null
@@ -1,533 +0,0 @@
-info['text-align'] = new HTMLPurifier_AttrDef_Enum(
- array('left', 'right', 'center', 'justify'),
- false
- );
-
- $border_style =
- $this->info['border-bottom-style'] =
- $this->info['border-right-style'] =
- $this->info['border-left-style'] =
- $this->info['border-top-style'] = new HTMLPurifier_AttrDef_Enum(
- array(
- 'none',
- 'hidden',
- 'dotted',
- 'dashed',
- 'solid',
- 'double',
- 'groove',
- 'ridge',
- 'inset',
- 'outset'
- ),
- false
- );
-
- $this->info['border-style'] = new HTMLPurifier_AttrDef_CSS_Multiple($border_style);
-
- $this->info['clear'] = new HTMLPurifier_AttrDef_Enum(
- array('none', 'left', 'right', 'both'),
- false
- );
- $this->info['float'] = new HTMLPurifier_AttrDef_Enum(
- array('none', 'left', 'right'),
- false
- );
- $this->info['font-style'] = new HTMLPurifier_AttrDef_Enum(
- array('normal', 'italic', 'oblique'),
- false
- );
- $this->info['font-variant'] = new HTMLPurifier_AttrDef_Enum(
- array('normal', 'small-caps'),
- false
- );
-
- $uri_or_none = new HTMLPurifier_AttrDef_CSS_Composite(
- array(
- new HTMLPurifier_AttrDef_Enum(array('none')),
- new HTMLPurifier_AttrDef_CSS_URI()
- )
- );
-
- $this->info['list-style-position'] = new HTMLPurifier_AttrDef_Enum(
- array('inside', 'outside'),
- false
- );
- $this->info['list-style-type'] = new HTMLPurifier_AttrDef_Enum(
- array(
- 'disc',
- 'circle',
- 'square',
- 'decimal',
- 'lower-roman',
- 'upper-roman',
- 'lower-alpha',
- 'upper-alpha',
- 'none'
- ),
- false
- );
- $this->info['list-style-image'] = $uri_or_none;
-
- $this->info['list-style'] = new HTMLPurifier_AttrDef_CSS_ListStyle($config);
-
- $this->info['text-transform'] = new HTMLPurifier_AttrDef_Enum(
- array('capitalize', 'uppercase', 'lowercase', 'none'),
- false
- );
- $this->info['color'] = new HTMLPurifier_AttrDef_CSS_Color();
-
- $this->info['background-image'] = $uri_or_none;
- $this->info['background-repeat'] = new HTMLPurifier_AttrDef_Enum(
- array('repeat', 'repeat-x', 'repeat-y', 'no-repeat')
- );
- $this->info['background-attachment'] = new HTMLPurifier_AttrDef_Enum(
- array('scroll', 'fixed')
- );
- $this->info['background-position'] = new HTMLPurifier_AttrDef_CSS_BackgroundPosition();
-
- $border_color =
- $this->info['border-top-color'] =
- $this->info['border-bottom-color'] =
- $this->info['border-left-color'] =
- $this->info['border-right-color'] =
- $this->info['background-color'] = new HTMLPurifier_AttrDef_CSS_Composite(
- array(
- new HTMLPurifier_AttrDef_Enum(array('transparent')),
- new HTMLPurifier_AttrDef_CSS_Color()
- )
- );
-
- $this->info['background'] = new HTMLPurifier_AttrDef_CSS_Background($config);
-
- $this->info['border-color'] = new HTMLPurifier_AttrDef_CSS_Multiple($border_color);
-
- $border_width =
- $this->info['border-top-width'] =
- $this->info['border-bottom-width'] =
- $this->info['border-left-width'] =
- $this->info['border-right-width'] = new HTMLPurifier_AttrDef_CSS_Composite(
- array(
- new HTMLPurifier_AttrDef_Enum(array('thin', 'medium', 'thick')),
- new HTMLPurifier_AttrDef_CSS_Length('0') //disallow negative
- )
- );
-
- $this->info['border-width'] = new HTMLPurifier_AttrDef_CSS_Multiple($border_width);
-
- $this->info['letter-spacing'] = new HTMLPurifier_AttrDef_CSS_Composite(
- array(
- new HTMLPurifier_AttrDef_Enum(array('normal')),
- new HTMLPurifier_AttrDef_CSS_Length()
- )
- );
-
- $this->info['word-spacing'] = new HTMLPurifier_AttrDef_CSS_Composite(
- array(
- new HTMLPurifier_AttrDef_Enum(array('normal')),
- new HTMLPurifier_AttrDef_CSS_Length()
- )
- );
-
- $this->info['font-size'] = new HTMLPurifier_AttrDef_CSS_Composite(
- array(
- new HTMLPurifier_AttrDef_Enum(
- array(
- 'xx-small',
- 'x-small',
- 'small',
- 'medium',
- 'large',
- 'x-large',
- 'xx-large',
- 'larger',
- 'smaller'
- )
- ),
- new HTMLPurifier_AttrDef_CSS_Percentage(),
- new HTMLPurifier_AttrDef_CSS_Length()
- )
- );
-
- $this->info['line-height'] = new HTMLPurifier_AttrDef_CSS_Composite(
- array(
- new HTMLPurifier_AttrDef_Enum(array('normal')),
- new HTMLPurifier_AttrDef_CSS_Number(true), // no negatives
- new HTMLPurifier_AttrDef_CSS_Length('0'),
- new HTMLPurifier_AttrDef_CSS_Percentage(true)
- )
- );
-
- $margin =
- $this->info['margin-top'] =
- $this->info['margin-bottom'] =
- $this->info['margin-left'] =
- $this->info['margin-right'] = new HTMLPurifier_AttrDef_CSS_Composite(
- array(
- new HTMLPurifier_AttrDef_CSS_Length(),
- new HTMLPurifier_AttrDef_CSS_Percentage(),
- new HTMLPurifier_AttrDef_Enum(array('auto'))
- )
- );
-
- $this->info['margin'] = new HTMLPurifier_AttrDef_CSS_Multiple($margin);
-
- // non-negative
- $padding =
- $this->info['padding-top'] =
- $this->info['padding-bottom'] =
- $this->info['padding-left'] =
- $this->info['padding-right'] = new HTMLPurifier_AttrDef_CSS_Composite(
- array(
- new HTMLPurifier_AttrDef_CSS_Length('0'),
- new HTMLPurifier_AttrDef_CSS_Percentage(true)
- )
- );
-
- $this->info['padding'] = new HTMLPurifier_AttrDef_CSS_Multiple($padding);
-
- $this->info['text-indent'] = new HTMLPurifier_AttrDef_CSS_Composite(
- array(
- new HTMLPurifier_AttrDef_CSS_Length(),
- new HTMLPurifier_AttrDef_CSS_Percentage()
- )
- );
-
- $trusted_wh = new HTMLPurifier_AttrDef_CSS_Composite(
- array(
- new HTMLPurifier_AttrDef_CSS_Length('0'),
- new HTMLPurifier_AttrDef_CSS_Percentage(true),
- new HTMLPurifier_AttrDef_Enum(array('auto', 'initial', 'inherit'))
- )
- );
- $trusted_min_wh = new HTMLPurifier_AttrDef_CSS_Composite(
- array(
- new HTMLPurifier_AttrDef_CSS_Length('0'),
- new HTMLPurifier_AttrDef_CSS_Percentage(true),
- new HTMLPurifier_AttrDef_Enum(array('initial', 'inherit'))
- )
- );
- $trusted_max_wh = new HTMLPurifier_AttrDef_CSS_Composite(
- array(
- new HTMLPurifier_AttrDef_CSS_Length('0'),
- new HTMLPurifier_AttrDef_CSS_Percentage(true),
- new HTMLPurifier_AttrDef_Enum(array('none', 'initial', 'inherit'))
- )
- );
- $max = $config->get('CSS.MaxImgLength');
-
- $this->info['width'] =
- $this->info['height'] =
- $max === null ?
- $trusted_wh :
- new HTMLPurifier_AttrDef_Switch(
- 'img',
- // For img tags:
- new HTMLPurifier_AttrDef_CSS_Composite(
- array(
- new HTMLPurifier_AttrDef_CSS_Length('0', $max),
- new HTMLPurifier_AttrDef_Enum(array('auto'))
- )
- ),
- // For everyone else:
- $trusted_wh
- );
- $this->info['min-width'] =
- $this->info['min-height'] =
- $max === null ?
- $trusted_min_wh :
- new HTMLPurifier_AttrDef_Switch(
- 'img',
- // For img tags:
- new HTMLPurifier_AttrDef_CSS_Composite(
- array(
- new HTMLPurifier_AttrDef_CSS_Length('0', $max),
- new HTMLPurifier_AttrDef_Enum(array('initial', 'inherit'))
- )
- ),
- // For everyone else:
- $trusted_min_wh
- );
- $this->info['max-width'] =
- $this->info['max-height'] =
- $max === null ?
- $trusted_max_wh :
- new HTMLPurifier_AttrDef_Switch(
- 'img',
- // For img tags:
- new HTMLPurifier_AttrDef_CSS_Composite(
- array(
- new HTMLPurifier_AttrDef_CSS_Length('0', $max),
- new HTMLPurifier_AttrDef_Enum(array('none', 'initial', 'inherit'))
- )
- ),
- // For everyone else:
- $trusted_max_wh
- );
-
- $this->info['text-decoration'] = new HTMLPurifier_AttrDef_CSS_TextDecoration();
-
- $this->info['font-family'] = new HTMLPurifier_AttrDef_CSS_FontFamily();
-
- // this could use specialized code
- $this->info['font-weight'] = new HTMLPurifier_AttrDef_Enum(
- array(
- 'normal',
- 'bold',
- 'bolder',
- 'lighter',
- '100',
- '200',
- '300',
- '400',
- '500',
- '600',
- '700',
- '800',
- '900'
- ),
- false
- );
-
- // MUST be called after other font properties, as it references
- // a CSSDefinition object
- $this->info['font'] = new HTMLPurifier_AttrDef_CSS_Font($config);
-
- // same here
- $this->info['border'] =
- $this->info['border-bottom'] =
- $this->info['border-top'] =
- $this->info['border-left'] =
- $this->info['border-right'] = new HTMLPurifier_AttrDef_CSS_Border($config);
-
- $this->info['border-collapse'] = new HTMLPurifier_AttrDef_Enum(
- array('collapse', 'separate')
- );
-
- $this->info['caption-side'] = new HTMLPurifier_AttrDef_Enum(
- array('top', 'bottom')
- );
-
- $this->info['table-layout'] = new HTMLPurifier_AttrDef_Enum(
- array('auto', 'fixed')
- );
-
- $this->info['vertical-align'] = new HTMLPurifier_AttrDef_CSS_Composite(
- array(
- new HTMLPurifier_AttrDef_Enum(
- array(
- 'baseline',
- 'sub',
- 'super',
- 'top',
- 'text-top',
- 'middle',
- 'bottom',
- 'text-bottom'
- )
- ),
- new HTMLPurifier_AttrDef_CSS_Length(),
- new HTMLPurifier_AttrDef_CSS_Percentage()
- )
- );
-
- $this->info['border-spacing'] = new HTMLPurifier_AttrDef_CSS_Multiple(new HTMLPurifier_AttrDef_CSS_Length(), 2);
-
- // These CSS properties don't work on many browsers, but we live
- // in THE FUTURE!
- $this->info['white-space'] = new HTMLPurifier_AttrDef_Enum(
- array('nowrap', 'normal', 'pre', 'pre-wrap', 'pre-line')
- );
-
- if ($config->get('CSS.Proprietary')) {
- $this->doSetupProprietary($config);
- }
-
- if ($config->get('CSS.AllowTricky')) {
- $this->doSetupTricky($config);
- }
-
- if ($config->get('CSS.Trusted')) {
- $this->doSetupTrusted($config);
- }
-
- $allow_important = $config->get('CSS.AllowImportant');
- // wrap all attr-defs with decorator that handles !important
- foreach ($this->info as $k => $v) {
- $this->info[$k] = new HTMLPurifier_AttrDef_CSS_ImportantDecorator($v, $allow_important);
- }
-
- $this->setupConfigStuff($config);
- }
-
- /**
- * @param HTMLPurifier_Config $config
- */
- protected function doSetupProprietary($config)
- {
- // Internet Explorer only scrollbar colors
- $this->info['scrollbar-arrow-color'] = new HTMLPurifier_AttrDef_CSS_Color();
- $this->info['scrollbar-base-color'] = new HTMLPurifier_AttrDef_CSS_Color();
- $this->info['scrollbar-darkshadow-color'] = new HTMLPurifier_AttrDef_CSS_Color();
- $this->info['scrollbar-face-color'] = new HTMLPurifier_AttrDef_CSS_Color();
- $this->info['scrollbar-highlight-color'] = new HTMLPurifier_AttrDef_CSS_Color();
- $this->info['scrollbar-shadow-color'] = new HTMLPurifier_AttrDef_CSS_Color();
-
- // vendor specific prefixes of opacity
- $this->info['-moz-opacity'] = new HTMLPurifier_AttrDef_CSS_AlphaValue();
- $this->info['-khtml-opacity'] = new HTMLPurifier_AttrDef_CSS_AlphaValue();
-
- // only opacity, for now
- $this->info['filter'] = new HTMLPurifier_AttrDef_CSS_Filter();
-
- // more CSS3
- $this->info['page-break-after'] =
- $this->info['page-break-before'] = new HTMLPurifier_AttrDef_Enum(
- array(
- 'auto',
- 'always',
- 'avoid',
- 'left',
- 'right'
- )
- );
- $this->info['page-break-inside'] = new HTMLPurifier_AttrDef_Enum(array('auto', 'avoid'));
-
- $border_radius = new HTMLPurifier_AttrDef_CSS_Composite(
- array(
- new HTMLPurifier_AttrDef_CSS_Percentage(true), // disallow negative
- new HTMLPurifier_AttrDef_CSS_Length('0') // disallow negative
- ));
-
- $this->info['border-top-left-radius'] =
- $this->info['border-top-right-radius'] =
- $this->info['border-bottom-right-radius'] =
- $this->info['border-bottom-left-radius'] = new HTMLPurifier_AttrDef_CSS_Multiple($border_radius, 2);
- // TODO: support SLASH syntax
- $this->info['border-radius'] = new HTMLPurifier_AttrDef_CSS_Multiple($border_radius, 4);
-
- }
-
- /**
- * @param HTMLPurifier_Config $config
- */
- protected function doSetupTricky($config)
- {
- $this->info['display'] = new HTMLPurifier_AttrDef_Enum(
- array(
- 'inline',
- 'block',
- 'list-item',
- 'run-in',
- 'compact',
- 'marker',
- 'table',
- 'inline-block',
- 'inline-table',
- 'table-row-group',
- 'table-header-group',
- 'table-footer-group',
- 'table-row',
- 'table-column-group',
- 'table-column',
- 'table-cell',
- 'table-caption',
- 'none'
- )
- );
- $this->info['visibility'] = new HTMLPurifier_AttrDef_Enum(
- array('visible', 'hidden', 'collapse')
- );
- $this->info['overflow'] = new HTMLPurifier_AttrDef_Enum(array('visible', 'hidden', 'auto', 'scroll'));
- $this->info['opacity'] = new HTMLPurifier_AttrDef_CSS_AlphaValue();
- }
-
- /**
- * @param HTMLPurifier_Config $config
- */
- protected function doSetupTrusted($config)
- {
- $this->info['position'] = new HTMLPurifier_AttrDef_Enum(
- array('static', 'relative', 'absolute', 'fixed')
- );
- $this->info['top'] =
- $this->info['left'] =
- $this->info['right'] =
- $this->info['bottom'] = new HTMLPurifier_AttrDef_CSS_Composite(
- array(
- new HTMLPurifier_AttrDef_CSS_Length(),
- new HTMLPurifier_AttrDef_CSS_Percentage(),
- new HTMLPurifier_AttrDef_Enum(array('auto')),
- )
- );
- $this->info['z-index'] = new HTMLPurifier_AttrDef_CSS_Composite(
- array(
- new HTMLPurifier_AttrDef_Integer(),
- new HTMLPurifier_AttrDef_Enum(array('auto')),
- )
- );
- }
-
- /**
- * Performs extra config-based processing. Based off of
- * HTMLPurifier_HTMLDefinition.
- * @param HTMLPurifier_Config $config
- * @todo Refactor duplicate elements into common class (probably using
- * composition, not inheritance).
- */
- protected function setupConfigStuff($config)
- {
- // setup allowed elements
- $support = "(for information on implementing this, see the " .
- "support forums) ";
- $allowed_properties = $config->get('CSS.AllowedProperties');
- if ($allowed_properties !== null) {
- foreach ($this->info as $name => $d) {
- if (!isset($allowed_properties[$name])) {
- unset($this->info[$name]);
- }
- unset($allowed_properties[$name]);
- }
- // emit errors
- foreach ($allowed_properties as $name => $d) {
- // :TODO: Is this htmlspecialchars() call really necessary?
- $name = htmlspecialchars($name);
- trigger_error("Style attribute '$name' is not supported $support", E_USER_WARNING);
- }
- }
-
- $forbidden_properties = $config->get('CSS.ForbiddenProperties');
- if ($forbidden_properties !== null) {
- foreach ($this->info as $name => $d) {
- if (isset($forbidden_properties[$name])) {
- unset($this->info[$name]);
- }
- }
- }
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef.php
deleted file mode 100644
index 8eb17b82..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef.php
+++ /dev/null
@@ -1,52 +0,0 @@
-elements;
- }
-
- /**
- * Validates nodes according to definition and returns modification.
- *
- * @param HTMLPurifier_Node[] $children Array of HTMLPurifier_Node
- * @param HTMLPurifier_Config $config HTMLPurifier_Config object
- * @param HTMLPurifier_Context $context HTMLPurifier_Context object
- * @return bool|array true to leave nodes as is, false to remove parent node, array of replacement children
- */
- abstract public function validateChildren($children, $config, $context);
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Chameleon.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Chameleon.php
deleted file mode 100644
index 7439be26..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Chameleon.php
+++ /dev/null
@@ -1,67 +0,0 @@
-inline = new HTMLPurifier_ChildDef_Optional($inline);
- $this->block = new HTMLPurifier_ChildDef_Optional($block);
- $this->elements = $this->block->elements;
- }
-
- /**
- * @param HTMLPurifier_Node[] $children
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool
- */
- public function validateChildren($children, $config, $context)
- {
- if ($context->get('IsInline') === false) {
- return $this->block->validateChildren(
- $children,
- $config,
- $context
- );
- } else {
- return $this->inline->validateChildren(
- $children,
- $config,
- $context
- );
- }
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Custom.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Custom.php
deleted file mode 100644
index f515888a..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Custom.php
+++ /dev/null
@@ -1,102 +0,0 @@
-dtd_regex = $dtd_regex;
- $this->_compileRegex();
- }
-
- /**
- * Compiles the PCRE regex from a DTD regex ($dtd_regex to $_pcre_regex)
- */
- protected function _compileRegex()
- {
- $raw = str_replace(' ', '', $this->dtd_regex);
- if ($raw[0] != '(') {
- $raw = "($raw)";
- }
- $el = '[#a-zA-Z0-9_.-]+';
- $reg = $raw;
-
- // COMPLICATED! AND MIGHT BE BUGGY! I HAVE NO CLUE WHAT I'M
- // DOING! Seriously: if there's problems, please report them.
-
- // collect all elements into the $elements array
- preg_match_all("/$el/", $reg, $matches);
- foreach ($matches[0] as $match) {
- $this->elements[$match] = true;
- }
-
- // setup all elements as parentheticals with leading commas
- $reg = preg_replace("/$el/", '(,\\0)', $reg);
-
- // remove commas when they were not solicited
- $reg = preg_replace("/([^,(|]\(+),/", '\\1', $reg);
-
- // remove all non-paranthetical commas: they are handled by first regex
- $reg = preg_replace("/,\(/", '(', $reg);
-
- $this->_pcre_regex = $reg;
- }
-
- /**
- * @param HTMLPurifier_Node[] $children
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool
- */
- public function validateChildren($children, $config, $context)
- {
- $list_of_children = '';
- $nesting = 0; // depth into the nest
- foreach ($children as $node) {
- if (!empty($node->is_whitespace)) {
- continue;
- }
- $list_of_children .= $node->name . ',';
- }
- // add leading comma to deal with stray comma declarations
- $list_of_children = ',' . rtrim($list_of_children, ',');
- $okay =
- preg_match(
- '/^,?' . $this->_pcre_regex . '$/',
- $list_of_children
- );
- return (bool)$okay;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Empty.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Empty.php
deleted file mode 100644
index a8a6cbdd..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Empty.php
+++ /dev/null
@@ -1,38 +0,0 @@
- true, 'ul' => true, 'ol' => true);
-
- /**
- * @param array $children
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return array
- */
- public function validateChildren($children, $config, $context)
- {
- // Flag for subclasses
- $this->whitespace = false;
-
- // if there are no tokens, delete parent node
- if (empty($children)) {
- return false;
- }
-
- // if li is not allowed, delete parent node
- if (!isset($config->getHTMLDefinition()->info['li'])) {
- trigger_error("Cannot allow ul/ol without allowing li", E_USER_WARNING);
- return false;
- }
-
- // the new set of children
- $result = array();
-
- // a little sanity check to make sure it's not ALL whitespace
- $all_whitespace = true;
-
- $current_li = null;
-
- foreach ($children as $node) {
- if (!empty($node->is_whitespace)) {
- $result[] = $node;
- continue;
- }
- $all_whitespace = false; // phew, we're not talking about whitespace
-
- if ($node->name === 'li') {
- // good
- $current_li = $node;
- $result[] = $node;
- } else {
- // we want to tuck this into the previous li
- // Invariant: we expect the node to be ol/ul
- // ToDo: Make this more robust in the case of not ol/ul
- // by distinguishing between existing li and li created
- // to handle non-list elements; non-list elements should
- // not be appended to an existing li; only li created
- // for non-list. This distinction is not currently made.
- if ($current_li === null) {
- $current_li = new HTMLPurifier_Node_Element('li');
- $result[] = $current_li;
- }
- $current_li->children[] = $node;
- $current_li->empty = false; // XXX fascinating! Check for this error elsewhere ToDo
- }
- }
- if (empty($result)) {
- return false;
- }
- if ($all_whitespace) {
- return false;
- }
- return $result;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Optional.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Optional.php
deleted file mode 100644
index b9468063..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Optional.php
+++ /dev/null
@@ -1,45 +0,0 @@
-whitespace) {
- return $children;
- } else {
- return array();
- }
- }
- return $result;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Required.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Required.php
deleted file mode 100644
index 0d1c8f5f..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Required.php
+++ /dev/null
@@ -1,118 +0,0 @@
- $x) {
- $elements[$i] = true;
- if (empty($i)) {
- unset($elements[$i]);
- } // remove blank
- }
- }
- $this->elements = $elements;
- }
-
- /**
- * @type bool
- */
- public $allow_empty = false;
-
- /**
- * @type string
- */
- public $type = 'required';
-
- /**
- * @param array $children
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return array
- */
- public function validateChildren($children, $config, $context)
- {
- // Flag for subclasses
- $this->whitespace = false;
-
- // if there are no tokens, delete parent node
- if (empty($children)) {
- return false;
- }
-
- // the new set of children
- $result = array();
-
- // whether or not parsed character data is allowed
- // this controls whether or not we silently drop a tag
- // or generate escaped HTML from it
- $pcdata_allowed = isset($this->elements['#PCDATA']);
-
- // a little sanity check to make sure it's not ALL whitespace
- $all_whitespace = true;
-
- $stack = array_reverse($children);
- while (!empty($stack)) {
- $node = array_pop($stack);
- if (!empty($node->is_whitespace)) {
- $result[] = $node;
- continue;
- }
- $all_whitespace = false; // phew, we're not talking about whitespace
-
- if (!isset($this->elements[$node->name])) {
- // special case text
- // XXX One of these ought to be redundant or something
- if ($pcdata_allowed && $node instanceof HTMLPurifier_Node_Text) {
- $result[] = $node;
- continue;
- }
- // spill the child contents in
- // ToDo: Make configurable
- if ($node instanceof HTMLPurifier_Node_Element) {
- for ($i = count($node->children) - 1; $i >= 0; $i--) {
- $stack[] = $node->children[$i];
- }
- continue;
- }
- continue;
- }
- $result[] = $node;
- }
- if (empty($result)) {
- return false;
- }
- if ($all_whitespace) {
- $this->whitespace = true;
- return false;
- }
- return $result;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/StrictBlockquote.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/StrictBlockquote.php
deleted file mode 100644
index 3270a46e..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/StrictBlockquote.php
+++ /dev/null
@@ -1,110 +0,0 @@
-init($config);
- return $this->fake_elements;
- }
-
- /**
- * @param array $children
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return array
- */
- public function validateChildren($children, $config, $context)
- {
- $this->init($config);
-
- // trick the parent class into thinking it allows more
- $this->elements = $this->fake_elements;
- $result = parent::validateChildren($children, $config, $context);
- $this->elements = $this->real_elements;
-
- if ($result === false) {
- return array();
- }
- if ($result === true) {
- $result = $children;
- }
-
- $def = $config->getHTMLDefinition();
- $block_wrap_name = $def->info_block_wrapper;
- $block_wrap = false;
- $ret = array();
-
- foreach ($result as $node) {
- if ($block_wrap === false) {
- if (($node instanceof HTMLPurifier_Node_Text && !$node->is_whitespace) ||
- ($node instanceof HTMLPurifier_Node_Element && !isset($this->elements[$node->name]))) {
- $block_wrap = new HTMLPurifier_Node_Element($def->info_block_wrapper);
- $ret[] = $block_wrap;
- }
- } else {
- if ($node instanceof HTMLPurifier_Node_Element && isset($this->elements[$node->name])) {
- $block_wrap = false;
-
- }
- }
- if ($block_wrap) {
- $block_wrap->children[] = $node;
- } else {
- $ret[] = $node;
- }
- }
- return $ret;
- }
-
- /**
- * @param HTMLPurifier_Config $config
- */
- private function init($config)
- {
- if (!$this->init) {
- $def = $config->getHTMLDefinition();
- // allow all inline elements
- $this->real_elements = $this->elements;
- $this->fake_elements = $def->info_content_sets['Flow'];
- $this->fake_elements['#PCDATA'] = true;
- $this->init = true;
- }
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Table.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Table.php
deleted file mode 100644
index cb6b3e6c..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Table.php
+++ /dev/null
@@ -1,224 +0,0 @@
- true,
- 'tbody' => true,
- 'thead' => true,
- 'tfoot' => true,
- 'caption' => true,
- 'colgroup' => true,
- 'col' => true
- );
-
- public function __construct()
- {
- }
-
- /**
- * @param array $children
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return array
- */
- public function validateChildren($children, $config, $context)
- {
- if (empty($children)) {
- return false;
- }
-
- // only one of these elements is allowed in a table
- $caption = false;
- $thead = false;
- $tfoot = false;
-
- // whitespace
- $initial_ws = array();
- $after_caption_ws = array();
- $after_thead_ws = array();
- $after_tfoot_ws = array();
-
- // as many of these as you want
- $cols = array();
- $content = array();
-
- $tbody_mode = false; // if true, then we need to wrap any stray
- //
s with a .
-
- $ws_accum =& $initial_ws;
-
- foreach ($children as $node) {
- if ($node instanceof HTMLPurifier_Node_Comment) {
- $ws_accum[] = $node;
- continue;
- }
- switch ($node->name) {
- case 'tbody':
- $tbody_mode = true;
- // fall through
- case 'tr':
- $content[] = $node;
- $ws_accum =& $content;
- break;
- case 'caption':
- // there can only be one caption!
- if ($caption !== false) break;
- $caption = $node;
- $ws_accum =& $after_caption_ws;
- break;
- case 'thead':
- $tbody_mode = true;
- // XXX This breaks rendering properties with
- // Firefox, which never floats a to
- // the top. Ever. (Our scheme will float the
- // first to the top.) So maybe
- // s that are not first should be
- // turned into ? Very tricky, indeed.
- if ($thead === false) {
- $thead = $node;
- $ws_accum =& $after_thead_ws;
- } else {
- // Oops, there's a second one! What
- // should we do? Current behavior is to
- // transmutate the first and last entries into
- // tbody tags, and then put into content.
- // Maybe a better idea is to *attach
- // it* to the existing thead or tfoot?
- // We don't do this, because Firefox
- // doesn't float an extra tfoot to the
- // bottom like it does for the first one.
- $node->name = 'tbody';
- $content[] = $node;
- $ws_accum =& $content;
- }
- break;
- case 'tfoot':
- // see above for some aveats
- $tbody_mode = true;
- if ($tfoot === false) {
- $tfoot = $node;
- $ws_accum =& $after_tfoot_ws;
- } else {
- $node->name = 'tbody';
- $content[] = $node;
- $ws_accum =& $content;
- }
- break;
- case 'colgroup':
- case 'col':
- $cols[] = $node;
- $ws_accum =& $cols;
- break;
- case '#PCDATA':
- // How is whitespace handled? We treat is as sticky to
- // the *end* of the previous element. So all of the
- // nonsense we have worked on is to keep things
- // together.
- if (!empty($node->is_whitespace)) {
- $ws_accum[] = $node;
- }
- break;
- }
- }
-
- if (empty($content)) {
- return false;
- }
-
- $ret = $initial_ws;
- if ($caption !== false) {
- $ret[] = $caption;
- $ret = array_merge($ret, $after_caption_ws);
- }
- if ($cols !== false) {
- $ret = array_merge($ret, $cols);
- }
- if ($thead !== false) {
- $ret[] = $thead;
- $ret = array_merge($ret, $after_thead_ws);
- }
- if ($tfoot !== false) {
- $ret[] = $tfoot;
- $ret = array_merge($ret, $after_tfoot_ws);
- }
-
- if ($tbody_mode) {
- // we have to shuffle tr into tbody
- $current_tr_tbody = null;
-
- foreach($content as $node) {
- switch ($node->name) {
- case 'tbody':
- $current_tr_tbody = null;
- $ret[] = $node;
- break;
- case 'tr':
- if ($current_tr_tbody === null) {
- $current_tr_tbody = new HTMLPurifier_Node_Element('tbody');
- $ret[] = $current_tr_tbody;
- }
- $current_tr_tbody->children[] = $node;
- break;
- case '#PCDATA':
- //assert($node->is_whitespace);
- if ($current_tr_tbody === null) {
- $ret[] = $node;
- } else {
- $current_tr_tbody->children[] = $node;
- }
- break;
- }
- }
- } else {
- $ret = array_merge($ret, $content);
- }
-
- return $ret;
-
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Config.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Config.php
deleted file mode 100644
index 3133d8a4..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Config.php
+++ /dev/null
@@ -1,920 +0,0 @@
-defaultPlist;
- $this->plist = new HTMLPurifier_PropertyList($parent);
- $this->def = $definition; // keep a copy around for checking
- $this->parser = new HTMLPurifier_VarParser_Flexible();
- }
-
- /**
- * Convenience constructor that creates a config object based on a mixed var
- * @param mixed $config Variable that defines the state of the config
- * object. Can be: a HTMLPurifier_Config() object,
- * an array of directives based on loadArray(),
- * or a string filename of an ini file.
- * @param HTMLPurifier_ConfigSchema $schema Schema object
- * @return HTMLPurifier_Config Configured object
- */
- public static function create($config, $schema = null)
- {
- if ($config instanceof HTMLPurifier_Config) {
- // pass-through
- return $config;
- }
- if (!$schema) {
- $ret = HTMLPurifier_Config::createDefault();
- } else {
- $ret = new HTMLPurifier_Config($schema);
- }
- if (is_string($config)) {
- $ret->loadIni($config);
- } elseif (is_array($config)) $ret->loadArray($config);
- return $ret;
- }
-
- /**
- * Creates a new config object that inherits from a previous one.
- * @param HTMLPurifier_Config $config Configuration object to inherit from.
- * @return HTMLPurifier_Config object with $config as its parent.
- */
- public static function inherit(HTMLPurifier_Config $config)
- {
- return new HTMLPurifier_Config($config->def, $config->plist);
- }
-
- /**
- * Convenience constructor that creates a default configuration object.
- * @return HTMLPurifier_Config default object.
- */
- public static function createDefault()
- {
- $definition = HTMLPurifier_ConfigSchema::instance();
- $config = new HTMLPurifier_Config($definition);
- return $config;
- }
-
- /**
- * Retrieves a value from the configuration.
- *
- * @param string $key String key
- * @param mixed $a
- *
- * @return mixed
- */
- public function get($key, $a = null)
- {
- if ($a !== null) {
- $this->triggerError(
- "Using deprecated API: use \$config->get('$key.$a') instead",
- E_USER_WARNING
- );
- $key = "$key.$a";
- }
- if (!$this->finalized) {
- $this->autoFinalize();
- }
- if (!isset($this->def->info[$key])) {
- // can't add % due to SimpleTest bug
- $this->triggerError(
- 'Cannot retrieve value of undefined directive ' . htmlspecialchars($key),
- E_USER_WARNING
- );
- return;
- }
- if (isset($this->def->info[$key]->isAlias)) {
- $d = $this->def->info[$key];
- $this->triggerError(
- 'Cannot get value from aliased directive, use real name ' . $d->key,
- E_USER_ERROR
- );
- return;
- }
- if ($this->lock) {
- list($ns) = explode('.', $key);
- if ($ns !== $this->lock) {
- $this->triggerError(
- 'Cannot get value of namespace ' . $ns . ' when lock for ' .
- $this->lock .
- ' is active, this probably indicates a Definition setup method ' .
- 'is accessing directives that are not within its namespace',
- E_USER_ERROR
- );
- return;
- }
- }
- return $this->plist->get($key);
- }
-
- /**
- * Retrieves an array of directives to values from a given namespace
- *
- * @param string $namespace String namespace
- *
- * @return array
- */
- public function getBatch($namespace)
- {
- if (!$this->finalized) {
- $this->autoFinalize();
- }
- $full = $this->getAll();
- if (!isset($full[$namespace])) {
- $this->triggerError(
- 'Cannot retrieve undefined namespace ' .
- htmlspecialchars($namespace),
- E_USER_WARNING
- );
- return;
- }
- return $full[$namespace];
- }
-
- /**
- * Returns a SHA-1 signature of a segment of the configuration object
- * that uniquely identifies that particular configuration
- *
- * @param string $namespace Namespace to get serial for
- *
- * @return string
- * @note Revision is handled specially and is removed from the batch
- * before processing!
- */
- public function getBatchSerial($namespace)
- {
- if (empty($this->serials[$namespace])) {
- $batch = $this->getBatch($namespace);
- unset($batch['DefinitionRev']);
- $this->serials[$namespace] = sha1(serialize($batch));
- }
- return $this->serials[$namespace];
- }
-
- /**
- * Returns a SHA-1 signature for the entire configuration object
- * that uniquely identifies that particular configuration
- *
- * @return string
- */
- public function getSerial()
- {
- if (empty($this->serial)) {
- $this->serial = sha1(serialize($this->getAll()));
- }
- return $this->serial;
- }
-
- /**
- * Retrieves all directives, organized by namespace
- *
- * @warning This is a pretty inefficient function, avoid if you can
- */
- public function getAll()
- {
- if (!$this->finalized) {
- $this->autoFinalize();
- }
- $ret = array();
- foreach ($this->plist->squash() as $name => $value) {
- list($ns, $key) = explode('.', $name, 2);
- $ret[$ns][$key] = $value;
- }
- return $ret;
- }
-
- /**
- * Sets a value to configuration.
- *
- * @param string $key key
- * @param mixed $value value
- * @param mixed $a
- */
- public function set($key, $value, $a = null)
- {
- if (strpos($key, '.') === false) {
- $namespace = $key;
- $directive = $value;
- $value = $a;
- $key = "$key.$directive";
- $this->triggerError("Using deprecated API: use \$config->set('$key', ...) instead", E_USER_NOTICE);
- } else {
- list($namespace) = explode('.', $key);
- }
- if ($this->isFinalized('Cannot set directive after finalization')) {
- return;
- }
- if (!isset($this->def->info[$key])) {
- $this->triggerError(
- 'Cannot set undefined directive ' . htmlspecialchars($key) . ' to value',
- E_USER_WARNING
- );
- return;
- }
- $def = $this->def->info[$key];
-
- if (isset($def->isAlias)) {
- if ($this->aliasMode) {
- $this->triggerError(
- 'Double-aliases not allowed, please fix '.
- 'ConfigSchema bug with' . $key,
- E_USER_ERROR
- );
- return;
- }
- $this->aliasMode = true;
- $this->set($def->key, $value);
- $this->aliasMode = false;
- $this->triggerError("$key is an alias, preferred directive name is {$def->key}", E_USER_NOTICE);
- return;
- }
-
- // Raw type might be negative when using the fully optimized form
- // of stdClass, which indicates allow_null == true
- $rtype = is_int($def) ? $def : $def->type;
- if ($rtype < 0) {
- $type = -$rtype;
- $allow_null = true;
- } else {
- $type = $rtype;
- $allow_null = isset($def->allow_null);
- }
-
- try {
- $value = $this->parser->parse($value, $type, $allow_null);
- } catch (HTMLPurifier_VarParserException $e) {
- $this->triggerError(
- 'Value for ' . $key . ' is of invalid type, should be ' .
- HTMLPurifier_VarParser::getTypeName($type),
- E_USER_WARNING
- );
- return;
- }
- if (is_string($value) && is_object($def)) {
- // resolve value alias if defined
- if (isset($def->aliases[$value])) {
- $value = $def->aliases[$value];
- }
- // check to see if the value is allowed
- if (isset($def->allowed) && !isset($def->allowed[$value])) {
- $this->triggerError(
- 'Value not supported, valid values are: ' .
- $this->_listify($def->allowed),
- E_USER_WARNING
- );
- return;
- }
- }
- $this->plist->set($key, $value);
-
- // reset definitions if the directives they depend on changed
- // this is a very costly process, so it's discouraged
- // with finalization
- if ($namespace == 'HTML' || $namespace == 'CSS' || $namespace == 'URI') {
- $this->definitions[$namespace] = null;
- }
-
- $this->serials[$namespace] = false;
- }
-
- /**
- * Convenience function for error reporting
- *
- * @param array $lookup
- *
- * @return string
- */
- private function _listify($lookup)
- {
- $list = array();
- foreach ($lookup as $name => $b) {
- $list[] = $name;
- }
- return implode(', ', $list);
- }
-
- /**
- * Retrieves object reference to the HTML definition.
- *
- * @param bool $raw Return a copy that has not been setup yet. Must be
- * called before it's been setup, otherwise won't work.
- * @param bool $optimized If true, this method may return null, to
- * indicate that a cached version of the modified
- * definition object is available and no further edits
- * are necessary. Consider using
- * maybeGetRawHTMLDefinition, which is more explicitly
- * named, instead.
- *
- * @return HTMLPurifier_HTMLDefinition|null
- */
- public function getHTMLDefinition($raw = false, $optimized = false)
- {
- return $this->getDefinition('HTML', $raw, $optimized);
- }
-
- /**
- * Retrieves object reference to the CSS definition
- *
- * @param bool $raw Return a copy that has not been setup yet. Must be
- * called before it's been setup, otherwise won't work.
- * @param bool $optimized If true, this method may return null, to
- * indicate that a cached version of the modified
- * definition object is available and no further edits
- * are necessary. Consider using
- * maybeGetRawCSSDefinition, which is more explicitly
- * named, instead.
- *
- * @return HTMLPurifier_CSSDefinition|null
- */
- public function getCSSDefinition($raw = false, $optimized = false)
- {
- return $this->getDefinition('CSS', $raw, $optimized);
- }
-
- /**
- * Retrieves object reference to the URI definition
- *
- * @param bool $raw Return a copy that has not been setup yet. Must be
- * called before it's been setup, otherwise won't work.
- * @param bool $optimized If true, this method may return null, to
- * indicate that a cached version of the modified
- * definition object is available and no further edits
- * are necessary. Consider using
- * maybeGetRawURIDefinition, which is more explicitly
- * named, instead.
- *
- * @return HTMLPurifier_URIDefinition|null
- */
- public function getURIDefinition($raw = false, $optimized = false)
- {
- return $this->getDefinition('URI', $raw, $optimized);
- }
-
- /**
- * Retrieves a definition
- *
- * @param string $type Type of definition: HTML, CSS, etc
- * @param bool $raw Whether or not definition should be returned raw
- * @param bool $optimized Only has an effect when $raw is true. Whether
- * or not to return null if the result is already present in
- * the cache. This is off by default for backwards
- * compatibility reasons, but you need to do things this
- * way in order to ensure that caching is done properly.
- * Check out enduser-customize.html for more details.
- * We probably won't ever change this default, as much as the
- * maybe semantics is the "right thing to do."
- *
- * @throws HTMLPurifier_Exception
- * @return HTMLPurifier_Definition|null
- */
- public function getDefinition($type, $raw = false, $optimized = false)
- {
- if ($optimized && !$raw) {
- throw new HTMLPurifier_Exception("Cannot set optimized = true when raw = false");
- }
- if (!$this->finalized) {
- $this->autoFinalize();
- }
- // temporarily suspend locks, so we can handle recursive definition calls
- $lock = $this->lock;
- $this->lock = null;
- $factory = HTMLPurifier_DefinitionCacheFactory::instance();
- $cache = $factory->create($type, $this);
- $this->lock = $lock;
- if (!$raw) {
- // full definition
- // ---------------
- // check if definition is in memory
- if (!empty($this->definitions[$type])) {
- $def = $this->definitions[$type];
- // check if the definition is setup
- if ($def->setup) {
- return $def;
- } else {
- $def->setup($this);
- if ($def->optimized) {
- $cache->add($def, $this);
- }
- return $def;
- }
- }
- // check if definition is in cache
- $def = $cache->get($this);
- if ($def) {
- // definition in cache, save to memory and return it
- $this->definitions[$type] = $def;
- return $def;
- }
- // initialize it
- $def = $this->initDefinition($type);
- // set it up
- $this->lock = $type;
- $def->setup($this);
- $this->lock = null;
- // save in cache
- $cache->add($def, $this);
- // return it
- return $def;
- } else {
- // raw definition
- // --------------
- // check preconditions
- $def = null;
- if ($optimized) {
- if (is_null($this->get($type . '.DefinitionID'))) {
- // fatally error out if definition ID not set
- throw new HTMLPurifier_Exception(
- "Cannot retrieve raw version without specifying %$type.DefinitionID"
- );
- }
- }
- if (!empty($this->definitions[$type])) {
- $def = $this->definitions[$type];
- if ($def->setup && !$optimized) {
- $extra = $this->chatty ?
- " (try moving this code block earlier in your initialization)" :
- "";
- throw new HTMLPurifier_Exception(
- "Cannot retrieve raw definition after it has already been setup" .
- $extra
- );
- }
- if ($def->optimized === null) {
- $extra = $this->chatty ? " (try flushing your cache)" : "";
- throw new HTMLPurifier_Exception(
- "Optimization status of definition is unknown" . $extra
- );
- }
- if ($def->optimized !== $optimized) {
- $msg = $optimized ? "optimized" : "unoptimized";
- $extra = $this->chatty ?
- " (this backtrace is for the first inconsistent call, which was for a $msg raw definition)"
- : "";
- throw new HTMLPurifier_Exception(
- "Inconsistent use of optimized and unoptimized raw definition retrievals" . $extra
- );
- }
- }
- // check if definition was in memory
- if ($def) {
- if ($def->setup) {
- // invariant: $optimized === true (checked above)
- return null;
- } else {
- return $def;
- }
- }
- // if optimized, check if definition was in cache
- // (because we do the memory check first, this formulation
- // is prone to cache slamming, but I think
- // guaranteeing that either /all/ of the raw
- // setup code or /none/ of it is run is more important.)
- if ($optimized) {
- // This code path only gets run once; once we put
- // something in $definitions (which is guaranteed by the
- // trailing code), we always short-circuit above.
- $def = $cache->get($this);
- if ($def) {
- // save the full definition for later, but don't
- // return it yet
- $this->definitions[$type] = $def;
- return null;
- }
- }
- // check invariants for creation
- if (!$optimized) {
- if (!is_null($this->get($type . '.DefinitionID'))) {
- if ($this->chatty) {
- $this->triggerError(
- 'Due to a documentation error in previous version of HTML Purifier, your ' .
- 'definitions are not being cached. If this is OK, you can remove the ' .
- '%$type.DefinitionRev and %$type.DefinitionID declaration. Otherwise, ' .
- 'modify your code to use maybeGetRawDefinition, and test if the returned ' .
- 'value is null before making any edits (if it is null, that means that a ' .
- 'cached version is available, and no raw operations are necessary). See ' .
- '' .
- 'Customize for more details',
- E_USER_WARNING
- );
- } else {
- $this->triggerError(
- "Useless DefinitionID declaration",
- E_USER_WARNING
- );
- }
- }
- }
- // initialize it
- $def = $this->initDefinition($type);
- $def->optimized = $optimized;
- return $def;
- }
- throw new HTMLPurifier_Exception("The impossible happened!");
- }
-
- /**
- * Initialise definition
- *
- * @param string $type What type of definition to create
- *
- * @return HTMLPurifier_CSSDefinition|HTMLPurifier_HTMLDefinition|HTMLPurifier_URIDefinition
- * @throws HTMLPurifier_Exception
- */
- private function initDefinition($type)
- {
- // quick checks failed, let's create the object
- if ($type == 'HTML') {
- $def = new HTMLPurifier_HTMLDefinition();
- } elseif ($type == 'CSS') {
- $def = new HTMLPurifier_CSSDefinition();
- } elseif ($type == 'URI') {
- $def = new HTMLPurifier_URIDefinition();
- } else {
- throw new HTMLPurifier_Exception(
- "Definition of $type type not supported"
- );
- }
- $this->definitions[$type] = $def;
- return $def;
- }
-
- public function maybeGetRawDefinition($name)
- {
- return $this->getDefinition($name, true, true);
- }
-
- /**
- * @return HTMLPurifier_HTMLDefinition|null
- */
- public function maybeGetRawHTMLDefinition()
- {
- return $this->getDefinition('HTML', true, true);
- }
-
- /**
- * @return HTMLPurifier_CSSDefinition|null
- */
- public function maybeGetRawCSSDefinition()
- {
- return $this->getDefinition('CSS', true, true);
- }
-
- /**
- * @return HTMLPurifier_URIDefinition|null
- */
- public function maybeGetRawURIDefinition()
- {
- return $this->getDefinition('URI', true, true);
- }
-
- /**
- * Loads configuration values from an array with the following structure:
- * Namespace.Directive => Value
- *
- * @param array $config_array Configuration associative array
- */
- public function loadArray($config_array)
- {
- if ($this->isFinalized('Cannot load directives after finalization')) {
- return;
- }
- foreach ($config_array as $key => $value) {
- $key = str_replace('_', '.', $key);
- if (strpos($key, '.') !== false) {
- $this->set($key, $value);
- } else {
- $namespace = $key;
- $namespace_values = $value;
- foreach ($namespace_values as $directive => $value2) {
- $this->set($namespace .'.'. $directive, $value2);
- }
- }
- }
- }
-
- /**
- * Returns a list of array(namespace, directive) for all directives
- * that are allowed in a web-form context as per an allowed
- * namespaces/directives list.
- *
- * @param array $allowed List of allowed namespaces/directives
- * @param HTMLPurifier_ConfigSchema $schema Schema to use, if not global copy
- *
- * @return array
- */
- public static function getAllowedDirectivesForForm($allowed, $schema = null)
- {
- if (!$schema) {
- $schema = HTMLPurifier_ConfigSchema::instance();
- }
- if ($allowed !== true) {
- if (is_string($allowed)) {
- $allowed = array($allowed);
- }
- $allowed_ns = array();
- $allowed_directives = array();
- $blacklisted_directives = array();
- foreach ($allowed as $ns_or_directive) {
- if (strpos($ns_or_directive, '.') !== false) {
- // directive
- if ($ns_or_directive[0] == '-') {
- $blacklisted_directives[substr($ns_or_directive, 1)] = true;
- } else {
- $allowed_directives[$ns_or_directive] = true;
- }
- } else {
- // namespace
- $allowed_ns[$ns_or_directive] = true;
- }
- }
- }
- $ret = array();
- foreach ($schema->info as $key => $def) {
- list($ns, $directive) = explode('.', $key, 2);
- if ($allowed !== true) {
- if (isset($blacklisted_directives["$ns.$directive"])) {
- continue;
- }
- if (!isset($allowed_directives["$ns.$directive"]) && !isset($allowed_ns[$ns])) {
- continue;
- }
- }
- if (isset($def->isAlias)) {
- continue;
- }
- if ($directive == 'DefinitionID' || $directive == 'DefinitionRev') {
- continue;
- }
- $ret[] = array($ns, $directive);
- }
- return $ret;
- }
-
- /**
- * Loads configuration values from $_GET/$_POST that were posted
- * via ConfigForm
- *
- * @param array $array $_GET or $_POST array to import
- * @param string|bool $index Index/name that the config variables are in
- * @param array|bool $allowed List of allowed namespaces/directives
- * @param bool $mq_fix Boolean whether or not to enable magic quotes fix
- * @param HTMLPurifier_ConfigSchema $schema Schema to use, if not global copy
- *
- * @return mixed
- */
- public static function loadArrayFromForm($array, $index = false, $allowed = true, $mq_fix = true, $schema = null)
- {
- $ret = HTMLPurifier_Config::prepareArrayFromForm($array, $index, $allowed, $mq_fix, $schema);
- $config = HTMLPurifier_Config::create($ret, $schema);
- return $config;
- }
-
- /**
- * Merges in configuration values from $_GET/$_POST to object. NOT STATIC.
- *
- * @param array $array $_GET or $_POST array to import
- * @param string|bool $index Index/name that the config variables are in
- * @param array|bool $allowed List of allowed namespaces/directives
- * @param bool $mq_fix Boolean whether or not to enable magic quotes fix
- */
- public function mergeArrayFromForm($array, $index = false, $allowed = true, $mq_fix = true)
- {
- $ret = HTMLPurifier_Config::prepareArrayFromForm($array, $index, $allowed, $mq_fix, $this->def);
- $this->loadArray($ret);
- }
-
- /**
- * Prepares an array from a form into something usable for the more
- * strict parts of HTMLPurifier_Config
- *
- * @param array $array $_GET or $_POST array to import
- * @param string|bool $index Index/name that the config variables are in
- * @param array|bool $allowed List of allowed namespaces/directives
- * @param bool $mq_fix Boolean whether or not to enable magic quotes fix
- * @param HTMLPurifier_ConfigSchema $schema Schema to use, if not global copy
- *
- * @return array
- */
- public static function prepareArrayFromForm($array, $index = false, $allowed = true, $mq_fix = true, $schema = null)
- {
- if ($index !== false) {
- $array = (isset($array[$index]) && is_array($array[$index])) ? $array[$index] : array();
- }
- $mq = $mq_fix && function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc();
-
- $allowed = HTMLPurifier_Config::getAllowedDirectivesForForm($allowed, $schema);
- $ret = array();
- foreach ($allowed as $key) {
- list($ns, $directive) = $key;
- $skey = "$ns.$directive";
- if (!empty($array["Null_$skey"])) {
- $ret[$ns][$directive] = null;
- continue;
- }
- if (!isset($array[$skey])) {
- continue;
- }
- $value = $mq ? stripslashes($array[$skey]) : $array[$skey];
- $ret[$ns][$directive] = $value;
- }
- return $ret;
- }
-
- /**
- * Loads configuration values from an ini file
- *
- * @param string $filename Name of ini file
- */
- public function loadIni($filename)
- {
- if ($this->isFinalized('Cannot load directives after finalization')) {
- return;
- }
- $array = parse_ini_file($filename, true);
- $this->loadArray($array);
- }
-
- /**
- * Checks whether or not the configuration object is finalized.
- *
- * @param string|bool $error String error message, or false for no error
- *
- * @return bool
- */
- public function isFinalized($error = false)
- {
- if ($this->finalized && $error) {
- $this->triggerError($error, E_USER_ERROR);
- }
- return $this->finalized;
- }
-
- /**
- * Finalizes configuration only if auto finalize is on and not
- * already finalized
- */
- public function autoFinalize()
- {
- if ($this->autoFinalize) {
- $this->finalize();
- } else {
- $this->plist->squash(true);
- }
- }
-
- /**
- * Finalizes a configuration object, prohibiting further change
- */
- public function finalize()
- {
- $this->finalized = true;
- $this->parser = null;
- }
-
- /**
- * Produces a nicely formatted error message by supplying the
- * stack frame information OUTSIDE of HTMLPurifier_Config.
- *
- * @param string $msg An error message
- * @param int $no An error number
- */
- protected function triggerError($msg, $no)
- {
- // determine previous stack frame
- $extra = '';
- if ($this->chatty) {
- $trace = debug_backtrace();
- // zip(tail(trace), trace) -- but PHP is not Haskell har har
- for ($i = 0, $c = count($trace); $i < $c - 1; $i++) {
- // XXX this is not correct on some versions of HTML Purifier
- if (isset($trace[$i + 1]['class']) && $trace[$i + 1]['class'] === 'HTMLPurifier_Config') {
- continue;
- }
- $frame = $trace[$i];
- $extra = " invoked on line {$frame['line']} in file {$frame['file']}";
- break;
- }
- }
- trigger_error($msg . $extra, $no);
- }
-
- /**
- * Returns a serialized form of the configuration object that can
- * be reconstituted.
- *
- * @return string
- */
- public function serialize()
- {
- $this->getDefinition('HTML');
- $this->getDefinition('CSS');
- $this->getDefinition('URI');
- return serialize($this);
- }
-
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema.php
deleted file mode 100644
index c3fe8cd4..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema.php
+++ /dev/null
@@ -1,176 +0,0 @@
- array(
- * 'Directive' => new stdClass(),
- * )
- * )
- *
- * The stdClass may have the following properties:
- *
- * - If isAlias isn't set:
- * - type: Integer type of directive, see HTMLPurifier_VarParser for definitions
- * - allow_null: If set, this directive allows null values
- * - aliases: If set, an associative array of value aliases to real values
- * - allowed: If set, a lookup array of allowed (string) values
- * - If isAlias is set:
- * - namespace: Namespace this directive aliases to
- * - name: Directive name this directive aliases to
- *
- * In certain degenerate cases, stdClass will actually be an integer. In
- * that case, the value is equivalent to an stdClass with the type
- * property set to the integer. If the integer is negative, type is
- * equal to the absolute value of integer, and allow_null is true.
- *
- * This class is friendly with HTMLPurifier_Config. If you need introspection
- * about the schema, you're better of using the ConfigSchema_Interchange,
- * which uses more memory but has much richer information.
- * @type array
- */
- public $info = array();
-
- /**
- * Application-wide singleton
- * @type HTMLPurifier_ConfigSchema
- */
- protected static $singleton;
-
- public function __construct()
- {
- $this->defaultPlist = new HTMLPurifier_PropertyList();
- }
-
- /**
- * Unserializes the default ConfigSchema.
- * @return HTMLPurifier_ConfigSchema
- */
- public static function makeFromSerial()
- {
- $contents = file_get_contents(HTMLPURIFIER_PREFIX . '/HTMLPurifier/ConfigSchema/schema.ser');
- $r = unserialize($contents);
- if (!$r) {
- $hash = sha1($contents);
- trigger_error("Unserialization of configuration schema failed, sha1 of file was $hash", E_USER_ERROR);
- }
- return $r;
- }
-
- /**
- * Retrieves an instance of the application-wide configuration definition.
- * @param HTMLPurifier_ConfigSchema $prototype
- * @return HTMLPurifier_ConfigSchema
- */
- public static function instance($prototype = null)
- {
- if ($prototype !== null) {
- HTMLPurifier_ConfigSchema::$singleton = $prototype;
- } elseif (HTMLPurifier_ConfigSchema::$singleton === null || $prototype === true) {
- HTMLPurifier_ConfigSchema::$singleton = HTMLPurifier_ConfigSchema::makeFromSerial();
- }
- return HTMLPurifier_ConfigSchema::$singleton;
- }
-
- /**
- * Defines a directive for configuration
- * @warning Will fail of directive's namespace is defined.
- * @warning This method's signature is slightly different from the legacy
- * define() static method! Beware!
- * @param string $key Name of directive
- * @param mixed $default Default value of directive
- * @param string $type Allowed type of the directive. See
- * HTMLPurifier_VarParser::$types for allowed values
- * @param bool $allow_null Whether or not to allow null values
- */
- public function add($key, $default, $type, $allow_null)
- {
- $obj = new stdClass();
- $obj->type = is_int($type) ? $type : HTMLPurifier_VarParser::$types[$type];
- if ($allow_null) {
- $obj->allow_null = true;
- }
- $this->info[$key] = $obj;
- $this->defaults[$key] = $default;
- $this->defaultPlist->set($key, $default);
- }
-
- /**
- * Defines a directive value alias.
- *
- * Directive value aliases are convenient for developers because it lets
- * them set a directive to several values and get the same result.
- * @param string $key Name of Directive
- * @param array $aliases Hash of aliased values to the real alias
- */
- public function addValueAliases($key, $aliases)
- {
- if (!isset($this->info[$key]->aliases)) {
- $this->info[$key]->aliases = array();
- }
- foreach ($aliases as $alias => $real) {
- $this->info[$key]->aliases[$alias] = $real;
- }
- }
-
- /**
- * Defines a set of allowed values for a directive.
- * @warning This is slightly different from the corresponding static
- * method definition.
- * @param string $key Name of directive
- * @param array $allowed Lookup array of allowed values
- */
- public function addAllowedValues($key, $allowed)
- {
- $this->info[$key]->allowed = $allowed;
- }
-
- /**
- * Defines a directive alias for backwards compatibility
- * @param string $key Directive that will be aliased
- * @param string $new_key Directive that the alias will be to
- */
- public function addAlias($key, $new_key)
- {
- $obj = new stdClass;
- $obj->key = $new_key;
- $obj->isAlias = true;
- $this->info[$key] = $obj;
- }
-
- /**
- * Replaces any stdClass that only has the type property with type integer.
- */
- public function postProcess()
- {
- foreach ($this->info as $key => $v) {
- if (count((array) $v) == 1) {
- $this->info[$key] = $v->type;
- } elseif (count((array) $v) == 2 && isset($v->allow_null)) {
- $this->info[$key] = -$v->type;
- }
- }
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Builder/ConfigSchema.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Builder/ConfigSchema.php
deleted file mode 100644
index d5906cd4..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Builder/ConfigSchema.php
+++ /dev/null
@@ -1,48 +0,0 @@
-directives as $d) {
- $schema->add(
- $d->id->key,
- $d->default,
- $d->type,
- $d->typeAllowsNull
- );
- if ($d->allowed !== null) {
- $schema->addAllowedValues(
- $d->id->key,
- $d->allowed
- );
- }
- foreach ($d->aliases as $alias) {
- $schema->addAlias(
- $alias->key,
- $d->id->key
- );
- }
- if ($d->valueAliases !== null) {
- $schema->addValueAliases(
- $d->id->key,
- $d->valueAliases
- );
- }
- }
- $schema->postProcess();
- return $schema;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Builder/Xml.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Builder/Xml.php
deleted file mode 100644
index 5fa56f7d..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Builder/Xml.php
+++ /dev/null
@@ -1,144 +0,0 @@
-startElement('div');
-
- $purifier = HTMLPurifier::getInstance();
- $html = $purifier->purify($html);
- $this->writeAttribute('xmlns', 'http://www.w3.org/1999/xhtml');
- $this->writeRaw($html);
-
- $this->endElement(); // div
- }
-
- /**
- * @param mixed $var
- * @return string
- */
- protected function export($var)
- {
- if ($var === array()) {
- return 'array()';
- }
- return var_export($var, true);
- }
-
- /**
- * @param HTMLPurifier_ConfigSchema_Interchange $interchange
- */
- public function build($interchange)
- {
- // global access, only use as last resort
- $this->interchange = $interchange;
-
- $this->setIndent(true);
- $this->startDocument('1.0', 'UTF-8');
- $this->startElement('configdoc');
- $this->writeElement('title', $interchange->name);
-
- foreach ($interchange->directives as $directive) {
- $this->buildDirective($directive);
- }
-
- if ($this->namespace) {
- $this->endElement();
- } // namespace
-
- $this->endElement(); // configdoc
- $this->flush();
- }
-
- /**
- * @param HTMLPurifier_ConfigSchema_Interchange_Directive $directive
- */
- public function buildDirective($directive)
- {
- // Kludge, although I suppose having a notion of a "root namespace"
- // certainly makes things look nicer when documentation is built.
- // Depends on things being sorted.
- if (!$this->namespace || $this->namespace !== $directive->id->getRootNamespace()) {
- if ($this->namespace) {
- $this->endElement();
- } // namespace
- $this->namespace = $directive->id->getRootNamespace();
- $this->startElement('namespace');
- $this->writeAttribute('id', $this->namespace);
- $this->writeElement('name', $this->namespace);
- }
-
- $this->startElement('directive');
- $this->writeAttribute('id', $directive->id->toString());
-
- $this->writeElement('name', $directive->id->getDirective());
-
- $this->startElement('aliases');
- foreach ($directive->aliases as $alias) {
- $this->writeElement('alias', $alias->toString());
- }
- $this->endElement(); // aliases
-
- $this->startElement('constraints');
- if ($directive->version) {
- $this->writeElement('version', $directive->version);
- }
- $this->startElement('type');
- if ($directive->typeAllowsNull) {
- $this->writeAttribute('allow-null', 'yes');
- }
- $this->text($directive->type);
- $this->endElement(); // type
- if ($directive->allowed) {
- $this->startElement('allowed');
- foreach ($directive->allowed as $value => $x) {
- $this->writeElement('value', $value);
- }
- $this->endElement(); // allowed
- }
- $this->writeElement('default', $this->export($directive->default));
- $this->writeAttribute('xml:space', 'preserve');
- if ($directive->external) {
- $this->startElement('external');
- foreach ($directive->external as $project) {
- $this->writeElement('project', $project);
- }
- $this->endElement();
- }
- $this->endElement(); // constraints
-
- if ($directive->deprecatedVersion) {
- $this->startElement('deprecated');
- $this->writeElement('version', $directive->deprecatedVersion);
- $this->writeElement('use', $directive->deprecatedUse->toString());
- $this->endElement(); // deprecated
- }
-
- $this->startElement('description');
- $this->writeHTMLDiv($directive->description);
- $this->endElement(); // description
-
- $this->endElement(); // directive
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Exception.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Exception.php
deleted file mode 100644
index 2671516c..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Exception.php
+++ /dev/null
@@ -1,11 +0,0 @@
- array(directive info)
- * @type HTMLPurifier_ConfigSchema_Interchange_Directive[]
- */
- public $directives = array();
-
- /**
- * Adds a directive array to $directives
- * @param HTMLPurifier_ConfigSchema_Interchange_Directive $directive
- * @throws HTMLPurifier_ConfigSchema_Exception
- */
- public function addDirective($directive)
- {
- if (isset($this->directives[$i = $directive->id->toString()])) {
- throw new HTMLPurifier_ConfigSchema_Exception("Cannot redefine directive '$i'");
- }
- $this->directives[$i] = $directive;
- }
-
- /**
- * Convenience function to perform standard validation. Throws exception
- * on failed validation.
- */
- public function validate()
- {
- $validator = new HTMLPurifier_ConfigSchema_Validator();
- return $validator->validate($this);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Interchange/Directive.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Interchange/Directive.php
deleted file mode 100644
index 127a39a6..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Interchange/Directive.php
+++ /dev/null
@@ -1,89 +0,0 @@
- true).
- * Null if all values are allowed.
- * @type array
- */
- public $allowed;
-
- /**
- * List of aliases for the directive.
- * e.g. array(new HTMLPurifier_ConfigSchema_Interchange_Id('Ns', 'Dir'))).
- * @type HTMLPurifier_ConfigSchema_Interchange_Id[]
- */
- public $aliases = array();
-
- /**
- * Hash of value aliases, e.g. array('alt' => 'real'). Null if value
- * aliasing is disabled (necessary for non-scalar types).
- * @type array
- */
- public $valueAliases;
-
- /**
- * Version of HTML Purifier the directive was introduced, e.g. '1.3.1'.
- * Null if the directive has always existed.
- * @type string
- */
- public $version;
-
- /**
- * ID of directive that supercedes this old directive.
- * Null if not deprecated.
- * @type HTMLPurifier_ConfigSchema_Interchange_Id
- */
- public $deprecatedUse;
-
- /**
- * Version of HTML Purifier this directive was deprecated. Null if not
- * deprecated.
- * @type string
- */
- public $deprecatedVersion;
-
- /**
- * List of external projects this directive depends on, e.g. array('CSSTidy').
- * @type array
- */
- public $external = array();
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Interchange/Id.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Interchange/Id.php
deleted file mode 100644
index 126f09d9..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Interchange/Id.php
+++ /dev/null
@@ -1,58 +0,0 @@
-key = $key;
- }
-
- /**
- * @return string
- * @warning This is NOT magic, to ensure that people don't abuse SPL and
- * cause problems for PHP 5.0 support.
- */
- public function toString()
- {
- return $this->key;
- }
-
- /**
- * @return string
- */
- public function getRootNamespace()
- {
- return substr($this->key, 0, strpos($this->key, "."));
- }
-
- /**
- * @return string
- */
- public function getDirective()
- {
- return substr($this->key, strpos($this->key, ".") + 1);
- }
-
- /**
- * @param string $id
- * @return HTMLPurifier_ConfigSchema_Interchange_Id
- */
- public static function make($id)
- {
- return new HTMLPurifier_ConfigSchema_Interchange_Id($id);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/InterchangeBuilder.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/InterchangeBuilder.php
deleted file mode 100644
index 655e6dd1..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/InterchangeBuilder.php
+++ /dev/null
@@ -1,226 +0,0 @@
-varParser = $varParser ? $varParser : new HTMLPurifier_VarParser_Native();
- }
-
- /**
- * @param string $dir
- * @return HTMLPurifier_ConfigSchema_Interchange
- */
- public static function buildFromDirectory($dir = null)
- {
- $builder = new HTMLPurifier_ConfigSchema_InterchangeBuilder();
- $interchange = new HTMLPurifier_ConfigSchema_Interchange();
- return $builder->buildDir($interchange, $dir);
- }
-
- /**
- * @param HTMLPurifier_ConfigSchema_Interchange $interchange
- * @param string $dir
- * @return HTMLPurifier_ConfigSchema_Interchange
- */
- public function buildDir($interchange, $dir = null)
- {
- if (!$dir) {
- $dir = HTMLPURIFIER_PREFIX . '/HTMLPurifier/ConfigSchema/schema';
- }
- if (file_exists($dir . '/info.ini')) {
- $info = parse_ini_file($dir . '/info.ini');
- $interchange->name = $info['name'];
- }
-
- $files = array();
- $dh = opendir($dir);
- while (false !== ($file = readdir($dh))) {
- if (!$file || $file[0] == '.' || strrchr($file, '.') !== '.txt') {
- continue;
- }
- $files[] = $file;
- }
- closedir($dh);
-
- sort($files);
- foreach ($files as $file) {
- $this->buildFile($interchange, $dir . '/' . $file);
- }
- return $interchange;
- }
-
- /**
- * @param HTMLPurifier_ConfigSchema_Interchange $interchange
- * @param string $file
- */
- public function buildFile($interchange, $file)
- {
- $parser = new HTMLPurifier_StringHashParser();
- $this->build(
- $interchange,
- new HTMLPurifier_StringHash($parser->parseFile($file))
- );
- }
-
- /**
- * Builds an interchange object based on a hash.
- * @param HTMLPurifier_ConfigSchema_Interchange $interchange HTMLPurifier_ConfigSchema_Interchange object to build
- * @param HTMLPurifier_StringHash $hash source data
- * @throws HTMLPurifier_ConfigSchema_Exception
- */
- public function build($interchange, $hash)
- {
- if (!$hash instanceof HTMLPurifier_StringHash) {
- $hash = new HTMLPurifier_StringHash($hash);
- }
- if (!isset($hash['ID'])) {
- throw new HTMLPurifier_ConfigSchema_Exception('Hash does not have any ID');
- }
- if (strpos($hash['ID'], '.') === false) {
- if (count($hash) == 2 && isset($hash['DESCRIPTION'])) {
- $hash->offsetGet('DESCRIPTION'); // prevent complaining
- } else {
- throw new HTMLPurifier_ConfigSchema_Exception('All directives must have a namespace');
- }
- } else {
- $this->buildDirective($interchange, $hash);
- }
- $this->_findUnused($hash);
- }
-
- /**
- * @param HTMLPurifier_ConfigSchema_Interchange $interchange
- * @param HTMLPurifier_StringHash $hash
- * @throws HTMLPurifier_ConfigSchema_Exception
- */
- public function buildDirective($interchange, $hash)
- {
- $directive = new HTMLPurifier_ConfigSchema_Interchange_Directive();
-
- // These are required elements:
- $directive->id = $this->id($hash->offsetGet('ID'));
- $id = $directive->id->toString(); // convenience
-
- if (isset($hash['TYPE'])) {
- $type = explode('/', $hash->offsetGet('TYPE'));
- if (isset($type[1])) {
- $directive->typeAllowsNull = true;
- }
- $directive->type = $type[0];
- } else {
- throw new HTMLPurifier_ConfigSchema_Exception("TYPE in directive hash '$id' not defined");
- }
-
- if (isset($hash['DEFAULT'])) {
- try {
- $directive->default = $this->varParser->parse(
- $hash->offsetGet('DEFAULT'),
- $directive->type,
- $directive->typeAllowsNull
- );
- } catch (HTMLPurifier_VarParserException $e) {
- throw new HTMLPurifier_ConfigSchema_Exception($e->getMessage() . " in DEFAULT in directive hash '$id'");
- }
- }
-
- if (isset($hash['DESCRIPTION'])) {
- $directive->description = $hash->offsetGet('DESCRIPTION');
- }
-
- if (isset($hash['ALLOWED'])) {
- $directive->allowed = $this->lookup($this->evalArray($hash->offsetGet('ALLOWED')));
- }
-
- if (isset($hash['VALUE-ALIASES'])) {
- $directive->valueAliases = $this->evalArray($hash->offsetGet('VALUE-ALIASES'));
- }
-
- if (isset($hash['ALIASES'])) {
- $raw_aliases = trim($hash->offsetGet('ALIASES'));
- $aliases = preg_split('/\s*,\s*/', $raw_aliases);
- foreach ($aliases as $alias) {
- $directive->aliases[] = $this->id($alias);
- }
- }
-
- if (isset($hash['VERSION'])) {
- $directive->version = $hash->offsetGet('VERSION');
- }
-
- if (isset($hash['DEPRECATED-USE'])) {
- $directive->deprecatedUse = $this->id($hash->offsetGet('DEPRECATED-USE'));
- }
-
- if (isset($hash['DEPRECATED-VERSION'])) {
- $directive->deprecatedVersion = $hash->offsetGet('DEPRECATED-VERSION');
- }
-
- if (isset($hash['EXTERNAL'])) {
- $directive->external = preg_split('/\s*,\s*/', trim($hash->offsetGet('EXTERNAL')));
- }
-
- $interchange->addDirective($directive);
- }
-
- /**
- * Evaluates an array PHP code string without array() wrapper
- * @param string $contents
- */
- protected function evalArray($contents)
- {
- return eval('return array(' . $contents . ');');
- }
-
- /**
- * Converts an array list into a lookup array.
- * @param array $array
- * @return array
- */
- protected function lookup($array)
- {
- $ret = array();
- foreach ($array as $val) {
- $ret[$val] = true;
- }
- return $ret;
- }
-
- /**
- * Convenience function that creates an HTMLPurifier_ConfigSchema_Interchange_Id
- * object based on a string Id.
- * @param string $id
- * @return HTMLPurifier_ConfigSchema_Interchange_Id
- */
- protected function id($id)
- {
- return HTMLPurifier_ConfigSchema_Interchange_Id::make($id);
- }
-
- /**
- * Triggers errors for any unused keys passed in the hash; such keys
- * may indicate typos, missing values, etc.
- * @param HTMLPurifier_StringHash $hash Hash to check.
- */
- protected function _findUnused($hash)
- {
- $accessed = $hash->getAccessed();
- foreach ($hash as $k => $v) {
- if (!isset($accessed[$k])) {
- trigger_error("String hash key '$k' not used by builder", E_USER_NOTICE);
- }
- }
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Validator.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Validator.php
deleted file mode 100644
index fb312778..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Validator.php
+++ /dev/null
@@ -1,248 +0,0 @@
-parser = new HTMLPurifier_VarParser();
- }
-
- /**
- * Validates a fully-formed interchange object.
- * @param HTMLPurifier_ConfigSchema_Interchange $interchange
- * @return bool
- */
- public function validate($interchange)
- {
- $this->interchange = $interchange;
- $this->aliases = array();
- // PHP is a bit lax with integer <=> string conversions in
- // arrays, so we don't use the identical !== comparison
- foreach ($interchange->directives as $i => $directive) {
- $id = $directive->id->toString();
- if ($i != $id) {
- $this->error(false, "Integrity violation: key '$i' does not match internal id '$id'");
- }
- $this->validateDirective($directive);
- }
- return true;
- }
-
- /**
- * Validates a HTMLPurifier_ConfigSchema_Interchange_Id object.
- * @param HTMLPurifier_ConfigSchema_Interchange_Id $id
- */
- public function validateId($id)
- {
- $id_string = $id->toString();
- $this->context[] = "id '$id_string'";
- if (!$id instanceof HTMLPurifier_ConfigSchema_Interchange_Id) {
- // handled by InterchangeBuilder
- $this->error(false, 'is not an instance of HTMLPurifier_ConfigSchema_Interchange_Id');
- }
- // keys are now unconstrained (we might want to narrow down to A-Za-z0-9.)
- // we probably should check that it has at least one namespace
- $this->with($id, 'key')
- ->assertNotEmpty()
- ->assertIsString(); // implicit assertIsString handled by InterchangeBuilder
- array_pop($this->context);
- }
-
- /**
- * Validates a HTMLPurifier_ConfigSchema_Interchange_Directive object.
- * @param HTMLPurifier_ConfigSchema_Interchange_Directive $d
- */
- public function validateDirective($d)
- {
- $id = $d->id->toString();
- $this->context[] = "directive '$id'";
- $this->validateId($d->id);
-
- $this->with($d, 'description')
- ->assertNotEmpty();
-
- // BEGIN - handled by InterchangeBuilder
- $this->with($d, 'type')
- ->assertNotEmpty();
- $this->with($d, 'typeAllowsNull')
- ->assertIsBool();
- try {
- // This also tests validity of $d->type
- $this->parser->parse($d->default, $d->type, $d->typeAllowsNull);
- } catch (HTMLPurifier_VarParserException $e) {
- $this->error('default', 'had error: ' . $e->getMessage());
- }
- // END - handled by InterchangeBuilder
-
- if (!is_null($d->allowed) || !empty($d->valueAliases)) {
- // allowed and valueAliases require that we be dealing with
- // strings, so check for that early.
- $d_int = HTMLPurifier_VarParser::$types[$d->type];
- if (!isset(HTMLPurifier_VarParser::$stringTypes[$d_int])) {
- $this->error('type', 'must be a string type when used with allowed or value aliases');
- }
- }
-
- $this->validateDirectiveAllowed($d);
- $this->validateDirectiveValueAliases($d);
- $this->validateDirectiveAliases($d);
-
- array_pop($this->context);
- }
-
- /**
- * Extra validation if $allowed member variable of
- * HTMLPurifier_ConfigSchema_Interchange_Directive is defined.
- * @param HTMLPurifier_ConfigSchema_Interchange_Directive $d
- */
- public function validateDirectiveAllowed($d)
- {
- if (is_null($d->allowed)) {
- return;
- }
- $this->with($d, 'allowed')
- ->assertNotEmpty()
- ->assertIsLookup(); // handled by InterchangeBuilder
- if (is_string($d->default) && !isset($d->allowed[$d->default])) {
- $this->error('default', 'must be an allowed value');
- }
- $this->context[] = 'allowed';
- foreach ($d->allowed as $val => $x) {
- if (!is_string($val)) {
- $this->error("value $val", 'must be a string');
- }
- }
- array_pop($this->context);
- }
-
- /**
- * Extra validation if $valueAliases member variable of
- * HTMLPurifier_ConfigSchema_Interchange_Directive is defined.
- * @param HTMLPurifier_ConfigSchema_Interchange_Directive $d
- */
- public function validateDirectiveValueAliases($d)
- {
- if (is_null($d->valueAliases)) {
- return;
- }
- $this->with($d, 'valueAliases')
- ->assertIsArray(); // handled by InterchangeBuilder
- $this->context[] = 'valueAliases';
- foreach ($d->valueAliases as $alias => $real) {
- if (!is_string($alias)) {
- $this->error("alias $alias", 'must be a string');
- }
- if (!is_string($real)) {
- $this->error("alias target $real from alias '$alias'", 'must be a string');
- }
- if ($alias === $real) {
- $this->error("alias '$alias'", "must not be an alias to itself");
- }
- }
- if (!is_null($d->allowed)) {
- foreach ($d->valueAliases as $alias => $real) {
- if (isset($d->allowed[$alias])) {
- $this->error("alias '$alias'", 'must not be an allowed value');
- } elseif (!isset($d->allowed[$real])) {
- $this->error("alias '$alias'", 'must be an alias to an allowed value');
- }
- }
- }
- array_pop($this->context);
- }
-
- /**
- * Extra validation if $aliases member variable of
- * HTMLPurifier_ConfigSchema_Interchange_Directive is defined.
- * @param HTMLPurifier_ConfigSchema_Interchange_Directive $d
- */
- public function validateDirectiveAliases($d)
- {
- $this->with($d, 'aliases')
- ->assertIsArray(); // handled by InterchangeBuilder
- $this->context[] = 'aliases';
- foreach ($d->aliases as $alias) {
- $this->validateId($alias);
- $s = $alias->toString();
- if (isset($this->interchange->directives[$s])) {
- $this->error("alias '$s'", 'collides with another directive');
- }
- if (isset($this->aliases[$s])) {
- $other_directive = $this->aliases[$s];
- $this->error("alias '$s'", "collides with alias for directive '$other_directive'");
- }
- $this->aliases[$s] = $d->id->toString();
- }
- array_pop($this->context);
- }
-
- // protected helper functions
-
- /**
- * Convenience function for generating HTMLPurifier_ConfigSchema_ValidatorAtom
- * for validating simple member variables of objects.
- * @param $obj
- * @param $member
- * @return HTMLPurifier_ConfigSchema_ValidatorAtom
- */
- protected function with($obj, $member)
- {
- return new HTMLPurifier_ConfigSchema_ValidatorAtom($this->getFormattedContext(), $obj, $member);
- }
-
- /**
- * Emits an error, providing helpful context.
- * @throws HTMLPurifier_ConfigSchema_Exception
- */
- protected function error($target, $msg)
- {
- if ($target !== false) {
- $prefix = ucfirst($target) . ' in ' . $this->getFormattedContext();
- } else {
- $prefix = ucfirst($this->getFormattedContext());
- }
- throw new HTMLPurifier_ConfigSchema_Exception(trim($prefix . ' ' . $msg));
- }
-
- /**
- * Returns a formatted context string.
- * @return string
- */
- protected function getFormattedContext()
- {
- return implode(' in ', array_reverse($this->context));
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/ValidatorAtom.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/ValidatorAtom.php
deleted file mode 100644
index c9aa3644..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/ValidatorAtom.php
+++ /dev/null
@@ -1,130 +0,0 @@
-context = $context;
- $this->obj = $obj;
- $this->member = $member;
- $this->contents =& $obj->$member;
- }
-
- /**
- * @return HTMLPurifier_ConfigSchema_ValidatorAtom
- */
- public function assertIsString()
- {
- if (!is_string($this->contents)) {
- $this->error('must be a string');
- }
- return $this;
- }
-
- /**
- * @return HTMLPurifier_ConfigSchema_ValidatorAtom
- */
- public function assertIsBool()
- {
- if (!is_bool($this->contents)) {
- $this->error('must be a boolean');
- }
- return $this;
- }
-
- /**
- * @return HTMLPurifier_ConfigSchema_ValidatorAtom
- */
- public function assertIsArray()
- {
- if (!is_array($this->contents)) {
- $this->error('must be an array');
- }
- return $this;
- }
-
- /**
- * @return HTMLPurifier_ConfigSchema_ValidatorAtom
- */
- public function assertNotNull()
- {
- if ($this->contents === null) {
- $this->error('must not be null');
- }
- return $this;
- }
-
- /**
- * @return HTMLPurifier_ConfigSchema_ValidatorAtom
- */
- public function assertAlnum()
- {
- $this->assertIsString();
- if (!ctype_alnum($this->contents)) {
- $this->error('must be alphanumeric');
- }
- return $this;
- }
-
- /**
- * @return HTMLPurifier_ConfigSchema_ValidatorAtom
- */
- public function assertNotEmpty()
- {
- if (empty($this->contents)) {
- $this->error('must not be empty');
- }
- return $this;
- }
-
- /**
- * @return HTMLPurifier_ConfigSchema_ValidatorAtom
- */
- public function assertIsLookup()
- {
- $this->assertIsArray();
- foreach ($this->contents as $v) {
- if ($v !== true) {
- $this->error('must be a lookup array');
- }
- }
- return $this;
- }
-
- /**
- * @param string $msg
- * @throws HTMLPurifier_ConfigSchema_Exception
- */
- protected function error($msg)
- {
- throw new HTMLPurifier_ConfigSchema_Exception(ucfirst($this->member) . ' in ' . $this->context . ' ' . $msg);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema.ser b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema.ser
deleted file mode 100644
index a5426c73..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema.ser
+++ /dev/null
@@ -1 +0,0 @@
-O:25:"HTMLPurifier_ConfigSchema":3:{s:8:"defaults";a:127:{s:19:"Attr.AllowedClasses";N;s:24:"Attr.AllowedFrameTargets";a:0:{}s:15:"Attr.AllowedRel";a:0:{}s:15:"Attr.AllowedRev";a:0:{}s:18:"Attr.ClassUseCDATA";N;s:20:"Attr.DefaultImageAlt";N;s:24:"Attr.DefaultInvalidImage";s:0:"";s:27:"Attr.DefaultInvalidImageAlt";s:13:"Invalid image";s:19:"Attr.DefaultTextDir";s:3:"ltr";s:13:"Attr.EnableID";b:0;s:21:"Attr.ForbiddenClasses";a:0:{}s:13:"Attr.ID.HTML5";N;s:16:"Attr.IDBlacklist";a:0:{}s:22:"Attr.IDBlacklistRegexp";N;s:13:"Attr.IDPrefix";s:0:"";s:18:"Attr.IDPrefixLocal";s:0:"";s:24:"AutoFormat.AutoParagraph";b:0;s:17:"AutoFormat.Custom";a:0:{}s:25:"AutoFormat.DisplayLinkURI";b:0;s:18:"AutoFormat.Linkify";b:0;s:33:"AutoFormat.PurifierLinkify.DocURL";s:3:"#%s";s:26:"AutoFormat.PurifierLinkify";b:0;s:32:"AutoFormat.RemoveEmpty.Predicate";a:4:{s:8:"colgroup";a:0:{}s:2:"th";a:0:{}s:2:"td";a:0:{}s:6:"iframe";a:1:{i:0;s:3:"src";}}s:44:"AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions";a:2:{s:2:"td";b:1;s:2:"th";b:1;}s:33:"AutoFormat.RemoveEmpty.RemoveNbsp";b:0;s:22:"AutoFormat.RemoveEmpty";b:0;s:39:"AutoFormat.RemoveSpansWithoutAttributes";b:0;s:19:"CSS.AllowDuplicates";b:0;s:18:"CSS.AllowImportant";b:0;s:15:"CSS.AllowTricky";b:0;s:16:"CSS.AllowedFonts";N;s:21:"CSS.AllowedProperties";N;s:17:"CSS.DefinitionRev";i:1;s:23:"CSS.ForbiddenProperties";a:0:{}s:16:"CSS.MaxImgLength";s:6:"1200px";s:15:"CSS.Proprietary";b:0;s:11:"CSS.Trusted";b:0;s:20:"Cache.DefinitionImpl";s:10:"Serializer";s:20:"Cache.SerializerPath";N;s:27:"Cache.SerializerPermissions";i:493;s:22:"Core.AggressivelyFixLt";b:1;s:29:"Core.AggressivelyRemoveScript";b:1;s:28:"Core.AllowHostnameUnderscore";b:0;s:23:"Core.AllowParseManyTags";b:0;s:18:"Core.CollectErrors";b:0;s:18:"Core.ColorKeywords";a:148:{s:9:"aliceblue";s:7:"#F0F8FF";s:12:"antiquewhite";s:7:"#FAEBD7";s:4:"aqua";s:7:"#00FFFF";s:10:"aquamarine";s:7:"#7FFFD4";s:5:"azure";s:7:"#F0FFFF";s:5:"beige";s:7:"#F5F5DC";s:6:"bisque";s:7:"#FFE4C4";s:5:"black";s:7:"#000000";s:14:"blanchedalmond";s:7:"#FFEBCD";s:4:"blue";s:7:"#0000FF";s:10:"blueviolet";s:7:"#8A2BE2";s:5:"brown";s:7:"#A52A2A";s:9:"burlywood";s:7:"#DEB887";s:9:"cadetblue";s:7:"#5F9EA0";s:10:"chartreuse";s:7:"#7FFF00";s:9:"chocolate";s:7:"#D2691E";s:5:"coral";s:7:"#FF7F50";s:14:"cornflowerblue";s:7:"#6495ED";s:8:"cornsilk";s:7:"#FFF8DC";s:7:"crimson";s:7:"#DC143C";s:4:"cyan";s:7:"#00FFFF";s:8:"darkblue";s:7:"#00008B";s:8:"darkcyan";s:7:"#008B8B";s:13:"darkgoldenrod";s:7:"#B8860B";s:8:"darkgray";s:7:"#A9A9A9";s:8:"darkgrey";s:7:"#A9A9A9";s:9:"darkgreen";s:7:"#006400";s:9:"darkkhaki";s:7:"#BDB76B";s:11:"darkmagenta";s:7:"#8B008B";s:14:"darkolivegreen";s:7:"#556B2F";s:10:"darkorange";s:7:"#FF8C00";s:10:"darkorchid";s:7:"#9932CC";s:7:"darkred";s:7:"#8B0000";s:10:"darksalmon";s:7:"#E9967A";s:12:"darkseagreen";s:7:"#8FBC8F";s:13:"darkslateblue";s:7:"#483D8B";s:13:"darkslategray";s:7:"#2F4F4F";s:13:"darkslategrey";s:7:"#2F4F4F";s:13:"darkturquoise";s:7:"#00CED1";s:10:"darkviolet";s:7:"#9400D3";s:8:"deeppink";s:7:"#FF1493";s:11:"deepskyblue";s:7:"#00BFFF";s:7:"dimgray";s:7:"#696969";s:7:"dimgrey";s:7:"#696969";s:10:"dodgerblue";s:7:"#1E90FF";s:9:"firebrick";s:7:"#B22222";s:11:"floralwhite";s:7:"#FFFAF0";s:11:"forestgreen";s:7:"#228B22";s:7:"fuchsia";s:7:"#FF00FF";s:9:"gainsboro";s:7:"#DCDCDC";s:10:"ghostwhite";s:7:"#F8F8FF";s:4:"gold";s:7:"#FFD700";s:9:"goldenrod";s:7:"#DAA520";s:4:"gray";s:7:"#808080";s:4:"grey";s:7:"#808080";s:5:"green";s:7:"#008000";s:11:"greenyellow";s:7:"#ADFF2F";s:8:"honeydew";s:7:"#F0FFF0";s:7:"hotpink";s:7:"#FF69B4";s:9:"indianred";s:7:"#CD5C5C";s:6:"indigo";s:7:"#4B0082";s:5:"ivory";s:7:"#FFFFF0";s:5:"khaki";s:7:"#F0E68C";s:8:"lavender";s:7:"#E6E6FA";s:13:"lavenderblush";s:7:"#FFF0F5";s:9:"lawngreen";s:7:"#7CFC00";s:12:"lemonchiffon";s:7:"#FFFACD";s:9:"lightblue";s:7:"#ADD8E6";s:10:"lightcoral";s:7:"#F08080";s:9:"lightcyan";s:7:"#E0FFFF";s:20:"lightgoldenrodyellow";s:7:"#FAFAD2";s:9:"lightgray";s:7:"#D3D3D3";s:9:"lightgrey";s:7:"#D3D3D3";s:10:"lightgreen";s:7:"#90EE90";s:9:"lightpink";s:7:"#FFB6C1";s:11:"lightsalmon";s:7:"#FFA07A";s:13:"lightseagreen";s:7:"#20B2AA";s:12:"lightskyblue";s:7:"#87CEFA";s:14:"lightslategray";s:7:"#778899";s:14:"lightslategrey";s:7:"#778899";s:14:"lightsteelblue";s:7:"#B0C4DE";s:11:"lightyellow";s:7:"#FFFFE0";s:4:"lime";s:7:"#00FF00";s:9:"limegreen";s:7:"#32CD32";s:5:"linen";s:7:"#FAF0E6";s:7:"magenta";s:7:"#FF00FF";s:6:"maroon";s:7:"#800000";s:16:"mediumaquamarine";s:7:"#66CDAA";s:10:"mediumblue";s:7:"#0000CD";s:12:"mediumorchid";s:7:"#BA55D3";s:12:"mediumpurple";s:7:"#9370DB";s:14:"mediumseagreen";s:7:"#3CB371";s:15:"mediumslateblue";s:7:"#7B68EE";s:17:"mediumspringgreen";s:7:"#00FA9A";s:15:"mediumturquoise";s:7:"#48D1CC";s:15:"mediumvioletred";s:7:"#C71585";s:12:"midnightblue";s:7:"#191970";s:9:"mintcream";s:7:"#F5FFFA";s:9:"mistyrose";s:7:"#FFE4E1";s:8:"moccasin";s:7:"#FFE4B5";s:11:"navajowhite";s:7:"#FFDEAD";s:4:"navy";s:7:"#000080";s:7:"oldlace";s:7:"#FDF5E6";s:5:"olive";s:7:"#808000";s:9:"olivedrab";s:7:"#6B8E23";s:6:"orange";s:7:"#FFA500";s:9:"orangered";s:7:"#FF4500";s:6:"orchid";s:7:"#DA70D6";s:13:"palegoldenrod";s:7:"#EEE8AA";s:9:"palegreen";s:7:"#98FB98";s:13:"paleturquoise";s:7:"#AFEEEE";s:13:"palevioletred";s:7:"#DB7093";s:10:"papayawhip";s:7:"#FFEFD5";s:9:"peachpuff";s:7:"#FFDAB9";s:4:"peru";s:7:"#CD853F";s:4:"pink";s:7:"#FFC0CB";s:4:"plum";s:7:"#DDA0DD";s:10:"powderblue";s:7:"#B0E0E6";s:6:"purple";s:7:"#800080";s:13:"rebeccapurple";s:7:"#663399";s:3:"red";s:7:"#FF0000";s:9:"rosybrown";s:7:"#BC8F8F";s:9:"royalblue";s:7:"#4169E1";s:11:"saddlebrown";s:7:"#8B4513";s:6:"salmon";s:7:"#FA8072";s:10:"sandybrown";s:7:"#F4A460";s:8:"seagreen";s:7:"#2E8B57";s:8:"seashell";s:7:"#FFF5EE";s:6:"sienna";s:7:"#A0522D";s:6:"silver";s:7:"#C0C0C0";s:7:"skyblue";s:7:"#87CEEB";s:9:"slateblue";s:7:"#6A5ACD";s:9:"slategray";s:7:"#708090";s:9:"slategrey";s:7:"#708090";s:4:"snow";s:7:"#FFFAFA";s:11:"springgreen";s:7:"#00FF7F";s:9:"steelblue";s:7:"#4682B4";s:3:"tan";s:7:"#D2B48C";s:4:"teal";s:7:"#008080";s:7:"thistle";s:7:"#D8BFD8";s:6:"tomato";s:7:"#FF6347";s:9:"turquoise";s:7:"#40E0D0";s:6:"violet";s:7:"#EE82EE";s:5:"wheat";s:7:"#F5DEB3";s:5:"white";s:7:"#FFFFFF";s:10:"whitesmoke";s:7:"#F5F5F5";s:6:"yellow";s:7:"#FFFF00";s:11:"yellowgreen";s:7:"#9ACD32";}s:30:"Core.ConvertDocumentToFragment";b:1;s:36:"Core.DirectLexLineNumberSyncInterval";i:0;s:20:"Core.DisableExcludes";b:0;s:15:"Core.EnableIDNA";b:0;s:13:"Core.Encoding";s:5:"utf-8";s:26:"Core.EscapeInvalidChildren";b:0;s:22:"Core.EscapeInvalidTags";b:0;s:29:"Core.EscapeNonASCIICharacters";b:0;s:19:"Core.HiddenElements";a:2:{s:6:"script";b:1;s:5:"style";b:1;}s:13:"Core.Language";s:2:"en";s:24:"Core.LegacyEntityDecoder";b:0;s:14:"Core.LexerImpl";N;s:24:"Core.MaintainLineNumbers";N;s:22:"Core.NormalizeNewlines";b:1;s:21:"Core.RemoveInvalidImg";b:1;s:33:"Core.RemoveProcessingInstructions";b:0;s:25:"Core.RemoveScriptContents";N;s:13:"Filter.Custom";a:0:{}s:34:"Filter.ExtractStyleBlocks.Escaping";b:1;s:31:"Filter.ExtractStyleBlocks.Scope";N;s:34:"Filter.ExtractStyleBlocks.TidyImpl";N;s:25:"Filter.ExtractStyleBlocks";b:0;s:14:"Filter.YouTube";b:0;s:12:"HTML.Allowed";N;s:22:"HTML.AllowedAttributes";N;s:20:"HTML.AllowedComments";a:0:{}s:26:"HTML.AllowedCommentsRegexp";N;s:20:"HTML.AllowedElements";N;s:19:"HTML.AllowedModules";N;s:23:"HTML.Attr.Name.UseCDATA";b:0;s:17:"HTML.BlockWrapper";s:1:"p";s:16:"HTML.CoreModules";a:7:{s:9:"Structure";b:1;s:4:"Text";b:1;s:9:"Hypertext";b:1;s:4:"List";b:1;s:22:"NonXMLCommonAttributes";b:1;s:19:"XMLCommonAttributes";b:1;s:16:"CommonAttributes";b:1;}s:18:"HTML.CustomDoctype";N;s:17:"HTML.DefinitionID";N;s:18:"HTML.DefinitionRev";i:1;s:12:"HTML.Doctype";N;s:25:"HTML.FlashAllowFullScreen";b:0;s:24:"HTML.ForbiddenAttributes";a:0:{}s:22:"HTML.ForbiddenElements";a:0:{}s:10:"HTML.Forms";b:0;s:17:"HTML.MaxImgLength";i:1200;s:13:"HTML.Nofollow";b:0;s:11:"HTML.Parent";s:3:"div";s:16:"HTML.Proprietary";b:0;s:14:"HTML.SafeEmbed";b:0;s:15:"HTML.SafeIframe";b:0;s:15:"HTML.SafeObject";b:0;s:18:"HTML.SafeScripting";a:0:{}s:11:"HTML.Strict";b:0;s:16:"HTML.TargetBlank";b:0;s:19:"HTML.TargetNoopener";b:1;s:21:"HTML.TargetNoreferrer";b:1;s:12:"HTML.TidyAdd";a:0:{}s:14:"HTML.TidyLevel";s:6:"medium";s:15:"HTML.TidyRemove";a:0:{}s:12:"HTML.Trusted";b:0;s:10:"HTML.XHTML";b:1;s:28:"Output.CommentScriptContents";b:1;s:19:"Output.FixInnerHTML";b:1;s:18:"Output.FlashCompat";b:0;s:14:"Output.Newline";N;s:15:"Output.SortAttr";b:0;s:17:"Output.TidyFormat";b:0;s:17:"Test.ForceNoIconv";b:0;s:18:"URI.AllowedSchemes";a:7:{s:4:"http";b:1;s:5:"https";b:1;s:6:"mailto";b:1;s:3:"ftp";b:1;s:4:"nntp";b:1;s:4:"news";b:1;s:3:"tel";b:1;}s:8:"URI.Base";N;s:17:"URI.DefaultScheme";s:4:"http";s:16:"URI.DefinitionID";N;s:17:"URI.DefinitionRev";i:1;s:11:"URI.Disable";b:0;s:19:"URI.DisableExternal";b:0;s:28:"URI.DisableExternalResources";b:0;s:20:"URI.DisableResources";b:0;s:8:"URI.Host";N;s:17:"URI.HostBlacklist";a:0:{}s:16:"URI.MakeAbsolute";b:0;s:9:"URI.Munge";N;s:18:"URI.MungeResources";b:0;s:18:"URI.MungeSecretKey";N;s:26:"URI.OverrideAllowedSchemes";b:1;s:20:"URI.SafeIframeRegexp";N;}s:12:"defaultPlist";O:25:"HTMLPurifier_PropertyList":3:{s:7:" * data";a:127:{s:19:"Attr.AllowedClasses";N;s:24:"Attr.AllowedFrameTargets";a:0:{}s:15:"Attr.AllowedRel";a:0:{}s:15:"Attr.AllowedRev";a:0:{}s:18:"Attr.ClassUseCDATA";N;s:20:"Attr.DefaultImageAlt";N;s:24:"Attr.DefaultInvalidImage";s:0:"";s:27:"Attr.DefaultInvalidImageAlt";s:13:"Invalid image";s:19:"Attr.DefaultTextDir";s:3:"ltr";s:13:"Attr.EnableID";b:0;s:21:"Attr.ForbiddenClasses";a:0:{}s:13:"Attr.ID.HTML5";N;s:16:"Attr.IDBlacklist";a:0:{}s:22:"Attr.IDBlacklistRegexp";N;s:13:"Attr.IDPrefix";s:0:"";s:18:"Attr.IDPrefixLocal";s:0:"";s:24:"AutoFormat.AutoParagraph";b:0;s:17:"AutoFormat.Custom";a:0:{}s:25:"AutoFormat.DisplayLinkURI";b:0;s:18:"AutoFormat.Linkify";b:0;s:33:"AutoFormat.PurifierLinkify.DocURL";s:3:"#%s";s:26:"AutoFormat.PurifierLinkify";b:0;s:32:"AutoFormat.RemoveEmpty.Predicate";a:4:{s:8:"colgroup";a:0:{}s:2:"th";a:0:{}s:2:"td";a:0:{}s:6:"iframe";a:1:{i:0;s:3:"src";}}s:44:"AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions";a:2:{s:2:"td";b:1;s:2:"th";b:1;}s:33:"AutoFormat.RemoveEmpty.RemoveNbsp";b:0;s:22:"AutoFormat.RemoveEmpty";b:0;s:39:"AutoFormat.RemoveSpansWithoutAttributes";b:0;s:19:"CSS.AllowDuplicates";b:0;s:18:"CSS.AllowImportant";b:0;s:15:"CSS.AllowTricky";b:0;s:16:"CSS.AllowedFonts";N;s:21:"CSS.AllowedProperties";N;s:17:"CSS.DefinitionRev";i:1;s:23:"CSS.ForbiddenProperties";a:0:{}s:16:"CSS.MaxImgLength";s:6:"1200px";s:15:"CSS.Proprietary";b:0;s:11:"CSS.Trusted";b:0;s:20:"Cache.DefinitionImpl";s:10:"Serializer";s:20:"Cache.SerializerPath";N;s:27:"Cache.SerializerPermissions";i:493;s:22:"Core.AggressivelyFixLt";b:1;s:29:"Core.AggressivelyRemoveScript";b:1;s:28:"Core.AllowHostnameUnderscore";b:0;s:23:"Core.AllowParseManyTags";b:0;s:18:"Core.CollectErrors";b:0;s:18:"Core.ColorKeywords";a:148:{s:9:"aliceblue";s:7:"#F0F8FF";s:12:"antiquewhite";s:7:"#FAEBD7";s:4:"aqua";s:7:"#00FFFF";s:10:"aquamarine";s:7:"#7FFFD4";s:5:"azure";s:7:"#F0FFFF";s:5:"beige";s:7:"#F5F5DC";s:6:"bisque";s:7:"#FFE4C4";s:5:"black";s:7:"#000000";s:14:"blanchedalmond";s:7:"#FFEBCD";s:4:"blue";s:7:"#0000FF";s:10:"blueviolet";s:7:"#8A2BE2";s:5:"brown";s:7:"#A52A2A";s:9:"burlywood";s:7:"#DEB887";s:9:"cadetblue";s:7:"#5F9EA0";s:10:"chartreuse";s:7:"#7FFF00";s:9:"chocolate";s:7:"#D2691E";s:5:"coral";s:7:"#FF7F50";s:14:"cornflowerblue";s:7:"#6495ED";s:8:"cornsilk";s:7:"#FFF8DC";s:7:"crimson";s:7:"#DC143C";s:4:"cyan";s:7:"#00FFFF";s:8:"darkblue";s:7:"#00008B";s:8:"darkcyan";s:7:"#008B8B";s:13:"darkgoldenrod";s:7:"#B8860B";s:8:"darkgray";s:7:"#A9A9A9";s:8:"darkgrey";s:7:"#A9A9A9";s:9:"darkgreen";s:7:"#006400";s:9:"darkkhaki";s:7:"#BDB76B";s:11:"darkmagenta";s:7:"#8B008B";s:14:"darkolivegreen";s:7:"#556B2F";s:10:"darkorange";s:7:"#FF8C00";s:10:"darkorchid";s:7:"#9932CC";s:7:"darkred";s:7:"#8B0000";s:10:"darksalmon";s:7:"#E9967A";s:12:"darkseagreen";s:7:"#8FBC8F";s:13:"darkslateblue";s:7:"#483D8B";s:13:"darkslategray";s:7:"#2F4F4F";s:13:"darkslategrey";s:7:"#2F4F4F";s:13:"darkturquoise";s:7:"#00CED1";s:10:"darkviolet";s:7:"#9400D3";s:8:"deeppink";s:7:"#FF1493";s:11:"deepskyblue";s:7:"#00BFFF";s:7:"dimgray";s:7:"#696969";s:7:"dimgrey";s:7:"#696969";s:10:"dodgerblue";s:7:"#1E90FF";s:9:"firebrick";s:7:"#B22222";s:11:"floralwhite";s:7:"#FFFAF0";s:11:"forestgreen";s:7:"#228B22";s:7:"fuchsia";s:7:"#FF00FF";s:9:"gainsboro";s:7:"#DCDCDC";s:10:"ghostwhite";s:7:"#F8F8FF";s:4:"gold";s:7:"#FFD700";s:9:"goldenrod";s:7:"#DAA520";s:4:"gray";s:7:"#808080";s:4:"grey";s:7:"#808080";s:5:"green";s:7:"#008000";s:11:"greenyellow";s:7:"#ADFF2F";s:8:"honeydew";s:7:"#F0FFF0";s:7:"hotpink";s:7:"#FF69B4";s:9:"indianred";s:7:"#CD5C5C";s:6:"indigo";s:7:"#4B0082";s:5:"ivory";s:7:"#FFFFF0";s:5:"khaki";s:7:"#F0E68C";s:8:"lavender";s:7:"#E6E6FA";s:13:"lavenderblush";s:7:"#FFF0F5";s:9:"lawngreen";s:7:"#7CFC00";s:12:"lemonchiffon";s:7:"#FFFACD";s:9:"lightblue";s:7:"#ADD8E6";s:10:"lightcoral";s:7:"#F08080";s:9:"lightcyan";s:7:"#E0FFFF";s:20:"lightgoldenrodyellow";s:7:"#FAFAD2";s:9:"lightgray";s:7:"#D3D3D3";s:9:"lightgrey";s:7:"#D3D3D3";s:10:"lightgreen";s:7:"#90EE90";s:9:"lightpink";s:7:"#FFB6C1";s:11:"lightsalmon";s:7:"#FFA07A";s:13:"lightseagreen";s:7:"#20B2AA";s:12:"lightskyblue";s:7:"#87CEFA";s:14:"lightslategray";s:7:"#778899";s:14:"lightslategrey";s:7:"#778899";s:14:"lightsteelblue";s:7:"#B0C4DE";s:11:"lightyellow";s:7:"#FFFFE0";s:4:"lime";s:7:"#00FF00";s:9:"limegreen";s:7:"#32CD32";s:5:"linen";s:7:"#FAF0E6";s:7:"magenta";s:7:"#FF00FF";s:6:"maroon";s:7:"#800000";s:16:"mediumaquamarine";s:7:"#66CDAA";s:10:"mediumblue";s:7:"#0000CD";s:12:"mediumorchid";s:7:"#BA55D3";s:12:"mediumpurple";s:7:"#9370DB";s:14:"mediumseagreen";s:7:"#3CB371";s:15:"mediumslateblue";s:7:"#7B68EE";s:17:"mediumspringgreen";s:7:"#00FA9A";s:15:"mediumturquoise";s:7:"#48D1CC";s:15:"mediumvioletred";s:7:"#C71585";s:12:"midnightblue";s:7:"#191970";s:9:"mintcream";s:7:"#F5FFFA";s:9:"mistyrose";s:7:"#FFE4E1";s:8:"moccasin";s:7:"#FFE4B5";s:11:"navajowhite";s:7:"#FFDEAD";s:4:"navy";s:7:"#000080";s:7:"oldlace";s:7:"#FDF5E6";s:5:"olive";s:7:"#808000";s:9:"olivedrab";s:7:"#6B8E23";s:6:"orange";s:7:"#FFA500";s:9:"orangered";s:7:"#FF4500";s:6:"orchid";s:7:"#DA70D6";s:13:"palegoldenrod";s:7:"#EEE8AA";s:9:"palegreen";s:7:"#98FB98";s:13:"paleturquoise";s:7:"#AFEEEE";s:13:"palevioletred";s:7:"#DB7093";s:10:"papayawhip";s:7:"#FFEFD5";s:9:"peachpuff";s:7:"#FFDAB9";s:4:"peru";s:7:"#CD853F";s:4:"pink";s:7:"#FFC0CB";s:4:"plum";s:7:"#DDA0DD";s:10:"powderblue";s:7:"#B0E0E6";s:6:"purple";s:7:"#800080";s:13:"rebeccapurple";s:7:"#663399";s:3:"red";s:7:"#FF0000";s:9:"rosybrown";s:7:"#BC8F8F";s:9:"royalblue";s:7:"#4169E1";s:11:"saddlebrown";s:7:"#8B4513";s:6:"salmon";s:7:"#FA8072";s:10:"sandybrown";s:7:"#F4A460";s:8:"seagreen";s:7:"#2E8B57";s:8:"seashell";s:7:"#FFF5EE";s:6:"sienna";s:7:"#A0522D";s:6:"silver";s:7:"#C0C0C0";s:7:"skyblue";s:7:"#87CEEB";s:9:"slateblue";s:7:"#6A5ACD";s:9:"slategray";s:7:"#708090";s:9:"slategrey";s:7:"#708090";s:4:"snow";s:7:"#FFFAFA";s:11:"springgreen";s:7:"#00FF7F";s:9:"steelblue";s:7:"#4682B4";s:3:"tan";s:7:"#D2B48C";s:4:"teal";s:7:"#008080";s:7:"thistle";s:7:"#D8BFD8";s:6:"tomato";s:7:"#FF6347";s:9:"turquoise";s:7:"#40E0D0";s:6:"violet";s:7:"#EE82EE";s:5:"wheat";s:7:"#F5DEB3";s:5:"white";s:7:"#FFFFFF";s:10:"whitesmoke";s:7:"#F5F5F5";s:6:"yellow";s:7:"#FFFF00";s:11:"yellowgreen";s:7:"#9ACD32";}s:30:"Core.ConvertDocumentToFragment";b:1;s:36:"Core.DirectLexLineNumberSyncInterval";i:0;s:20:"Core.DisableExcludes";b:0;s:15:"Core.EnableIDNA";b:0;s:13:"Core.Encoding";s:5:"utf-8";s:26:"Core.EscapeInvalidChildren";b:0;s:22:"Core.EscapeInvalidTags";b:0;s:29:"Core.EscapeNonASCIICharacters";b:0;s:19:"Core.HiddenElements";a:2:{s:6:"script";b:1;s:5:"style";b:1;}s:13:"Core.Language";s:2:"en";s:24:"Core.LegacyEntityDecoder";b:0;s:14:"Core.LexerImpl";N;s:24:"Core.MaintainLineNumbers";N;s:22:"Core.NormalizeNewlines";b:1;s:21:"Core.RemoveInvalidImg";b:1;s:33:"Core.RemoveProcessingInstructions";b:0;s:25:"Core.RemoveScriptContents";N;s:13:"Filter.Custom";a:0:{}s:34:"Filter.ExtractStyleBlocks.Escaping";b:1;s:31:"Filter.ExtractStyleBlocks.Scope";N;s:34:"Filter.ExtractStyleBlocks.TidyImpl";N;s:25:"Filter.ExtractStyleBlocks";b:0;s:14:"Filter.YouTube";b:0;s:12:"HTML.Allowed";N;s:22:"HTML.AllowedAttributes";N;s:20:"HTML.AllowedComments";a:0:{}s:26:"HTML.AllowedCommentsRegexp";N;s:20:"HTML.AllowedElements";N;s:19:"HTML.AllowedModules";N;s:23:"HTML.Attr.Name.UseCDATA";b:0;s:17:"HTML.BlockWrapper";s:1:"p";s:16:"HTML.CoreModules";a:7:{s:9:"Structure";b:1;s:4:"Text";b:1;s:9:"Hypertext";b:1;s:4:"List";b:1;s:22:"NonXMLCommonAttributes";b:1;s:19:"XMLCommonAttributes";b:1;s:16:"CommonAttributes";b:1;}s:18:"HTML.CustomDoctype";N;s:17:"HTML.DefinitionID";N;s:18:"HTML.DefinitionRev";i:1;s:12:"HTML.Doctype";N;s:25:"HTML.FlashAllowFullScreen";b:0;s:24:"HTML.ForbiddenAttributes";a:0:{}s:22:"HTML.ForbiddenElements";a:0:{}s:10:"HTML.Forms";b:0;s:17:"HTML.MaxImgLength";i:1200;s:13:"HTML.Nofollow";b:0;s:11:"HTML.Parent";s:3:"div";s:16:"HTML.Proprietary";b:0;s:14:"HTML.SafeEmbed";b:0;s:15:"HTML.SafeIframe";b:0;s:15:"HTML.SafeObject";b:0;s:18:"HTML.SafeScripting";a:0:{}s:11:"HTML.Strict";b:0;s:16:"HTML.TargetBlank";b:0;s:19:"HTML.TargetNoopener";b:1;s:21:"HTML.TargetNoreferrer";b:1;s:12:"HTML.TidyAdd";a:0:{}s:14:"HTML.TidyLevel";s:6:"medium";s:15:"HTML.TidyRemove";a:0:{}s:12:"HTML.Trusted";b:0;s:10:"HTML.XHTML";b:1;s:28:"Output.CommentScriptContents";b:1;s:19:"Output.FixInnerHTML";b:1;s:18:"Output.FlashCompat";b:0;s:14:"Output.Newline";N;s:15:"Output.SortAttr";b:0;s:17:"Output.TidyFormat";b:0;s:17:"Test.ForceNoIconv";b:0;s:18:"URI.AllowedSchemes";a:7:{s:4:"http";b:1;s:5:"https";b:1;s:6:"mailto";b:1;s:3:"ftp";b:1;s:4:"nntp";b:1;s:4:"news";b:1;s:3:"tel";b:1;}s:8:"URI.Base";N;s:17:"URI.DefaultScheme";s:4:"http";s:16:"URI.DefinitionID";N;s:17:"URI.DefinitionRev";i:1;s:11:"URI.Disable";b:0;s:19:"URI.DisableExternal";b:0;s:28:"URI.DisableExternalResources";b:0;s:20:"URI.DisableResources";b:0;s:8:"URI.Host";N;s:17:"URI.HostBlacklist";a:0:{}s:16:"URI.MakeAbsolute";b:0;s:9:"URI.Munge";N;s:18:"URI.MungeResources";b:0;s:18:"URI.MungeSecretKey";N;s:26:"URI.OverrideAllowedSchemes";b:1;s:20:"URI.SafeIframeRegexp";N;}s:9:" * parent";N;s:8:" * cache";N;}s:4:"info";a:140:{s:19:"Attr.AllowedClasses";i:-8;s:24:"Attr.AllowedFrameTargets";i:8;s:15:"Attr.AllowedRel";i:8;s:15:"Attr.AllowedRev";i:8;s:18:"Attr.ClassUseCDATA";i:-7;s:20:"Attr.DefaultImageAlt";i:-1;s:24:"Attr.DefaultInvalidImage";i:1;s:27:"Attr.DefaultInvalidImageAlt";i:1;s:19:"Attr.DefaultTextDir";O:8:"stdClass":2:{s:4:"type";i:1;s:7:"allowed";a:2:{s:3:"ltr";b:1;s:3:"rtl";b:1;}}s:13:"Attr.EnableID";i:7;s:17:"HTML.EnableAttrID";O:8:"stdClass":2:{s:3:"key";s:13:"Attr.EnableID";s:7:"isAlias";b:1;}s:21:"Attr.ForbiddenClasses";i:8;s:13:"Attr.ID.HTML5";i:-7;s:16:"Attr.IDBlacklist";i:9;s:22:"Attr.IDBlacklistRegexp";i:-1;s:13:"Attr.IDPrefix";i:1;s:18:"Attr.IDPrefixLocal";i:1;s:24:"AutoFormat.AutoParagraph";i:7;s:17:"AutoFormat.Custom";i:9;s:25:"AutoFormat.DisplayLinkURI";i:7;s:18:"AutoFormat.Linkify";i:7;s:33:"AutoFormat.PurifierLinkify.DocURL";i:1;s:37:"AutoFormatParam.PurifierLinkifyDocURL";O:8:"stdClass":2:{s:3:"key";s:33:"AutoFormat.PurifierLinkify.DocURL";s:7:"isAlias";b:1;}s:26:"AutoFormat.PurifierLinkify";i:7;s:32:"AutoFormat.RemoveEmpty.Predicate";i:10;s:44:"AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions";i:8;s:33:"AutoFormat.RemoveEmpty.RemoveNbsp";i:7;s:22:"AutoFormat.RemoveEmpty";i:7;s:39:"AutoFormat.RemoveSpansWithoutAttributes";i:7;s:19:"CSS.AllowDuplicates";i:7;s:18:"CSS.AllowImportant";i:7;s:15:"CSS.AllowTricky";i:7;s:16:"CSS.AllowedFonts";i:-8;s:21:"CSS.AllowedProperties";i:-8;s:17:"CSS.DefinitionRev";i:5;s:23:"CSS.ForbiddenProperties";i:8;s:16:"CSS.MaxImgLength";i:-1;s:15:"CSS.Proprietary";i:7;s:11:"CSS.Trusted";i:7;s:20:"Cache.DefinitionImpl";i:-1;s:20:"Core.DefinitionCache";O:8:"stdClass":2:{s:3:"key";s:20:"Cache.DefinitionImpl";s:7:"isAlias";b:1;}s:20:"Cache.SerializerPath";i:-1;s:27:"Cache.SerializerPermissions";i:-5;s:22:"Core.AggressivelyFixLt";i:7;s:29:"Core.AggressivelyRemoveScript";i:7;s:28:"Core.AllowHostnameUnderscore";i:7;s:23:"Core.AllowParseManyTags";i:7;s:18:"Core.CollectErrors";i:7;s:18:"Core.ColorKeywords";i:10;s:30:"Core.ConvertDocumentToFragment";i:7;s:24:"Core.AcceptFullDocuments";O:8:"stdClass":2:{s:3:"key";s:30:"Core.ConvertDocumentToFragment";s:7:"isAlias";b:1;}s:36:"Core.DirectLexLineNumberSyncInterval";i:5;s:20:"Core.DisableExcludes";i:7;s:15:"Core.EnableIDNA";i:7;s:13:"Core.Encoding";i:2;s:26:"Core.EscapeInvalidChildren";i:7;s:22:"Core.EscapeInvalidTags";i:7;s:29:"Core.EscapeNonASCIICharacters";i:7;s:19:"Core.HiddenElements";i:8;s:13:"Core.Language";i:1;s:24:"Core.LegacyEntityDecoder";i:7;s:14:"Core.LexerImpl";i:-11;s:24:"Core.MaintainLineNumbers";i:-7;s:22:"Core.NormalizeNewlines";i:7;s:21:"Core.RemoveInvalidImg";i:7;s:33:"Core.RemoveProcessingInstructions";i:7;s:25:"Core.RemoveScriptContents";i:-7;s:13:"Filter.Custom";i:9;s:34:"Filter.ExtractStyleBlocks.Escaping";i:7;s:33:"Filter.ExtractStyleBlocksEscaping";O:8:"stdClass":2:{s:3:"key";s:34:"Filter.ExtractStyleBlocks.Escaping";s:7:"isAlias";b:1;}s:38:"FilterParam.ExtractStyleBlocksEscaping";O:8:"stdClass":2:{s:3:"key";s:34:"Filter.ExtractStyleBlocks.Escaping";s:7:"isAlias";b:1;}s:31:"Filter.ExtractStyleBlocks.Scope";i:-1;s:30:"Filter.ExtractStyleBlocksScope";O:8:"stdClass":2:{s:3:"key";s:31:"Filter.ExtractStyleBlocks.Scope";s:7:"isAlias";b:1;}s:35:"FilterParam.ExtractStyleBlocksScope";O:8:"stdClass":2:{s:3:"key";s:31:"Filter.ExtractStyleBlocks.Scope";s:7:"isAlias";b:1;}s:34:"Filter.ExtractStyleBlocks.TidyImpl";i:-11;s:38:"FilterParam.ExtractStyleBlocksTidyImpl";O:8:"stdClass":2:{s:3:"key";s:34:"Filter.ExtractStyleBlocks.TidyImpl";s:7:"isAlias";b:1;}s:25:"Filter.ExtractStyleBlocks";i:7;s:14:"Filter.YouTube";i:7;s:12:"HTML.Allowed";i:-4;s:22:"HTML.AllowedAttributes";i:-8;s:20:"HTML.AllowedComments";i:8;s:26:"HTML.AllowedCommentsRegexp";i:-1;s:20:"HTML.AllowedElements";i:-8;s:19:"HTML.AllowedModules";i:-8;s:23:"HTML.Attr.Name.UseCDATA";i:7;s:17:"HTML.BlockWrapper";i:1;s:16:"HTML.CoreModules";i:8;s:18:"HTML.CustomDoctype";i:-1;s:17:"HTML.DefinitionID";i:-1;s:18:"HTML.DefinitionRev";i:5;s:12:"HTML.Doctype";O:8:"stdClass":3:{s:4:"type";i:1;s:10:"allow_null";b:1;s:7:"allowed";a:5:{s:22:"HTML 4.01 Transitional";b:1;s:16:"HTML 4.01 Strict";b:1;s:22:"XHTML 1.0 Transitional";b:1;s:16:"XHTML 1.0 Strict";b:1;s:9:"XHTML 1.1";b:1;}}s:25:"HTML.FlashAllowFullScreen";i:7;s:24:"HTML.ForbiddenAttributes";i:8;s:22:"HTML.ForbiddenElements";i:8;s:10:"HTML.Forms";i:7;s:17:"HTML.MaxImgLength";i:-5;s:13:"HTML.Nofollow";i:7;s:11:"HTML.Parent";i:1;s:16:"HTML.Proprietary";i:7;s:14:"HTML.SafeEmbed";i:7;s:15:"HTML.SafeIframe";i:7;s:15:"HTML.SafeObject";i:7;s:18:"HTML.SafeScripting";i:8;s:11:"HTML.Strict";i:7;s:16:"HTML.TargetBlank";i:7;s:19:"HTML.TargetNoopener";i:7;s:21:"HTML.TargetNoreferrer";i:7;s:12:"HTML.TidyAdd";i:8;s:14:"HTML.TidyLevel";O:8:"stdClass":2:{s:4:"type";i:1;s:7:"allowed";a:4:{s:4:"none";b:1;s:5:"light";b:1;s:6:"medium";b:1;s:5:"heavy";b:1;}}s:15:"HTML.TidyRemove";i:8;s:12:"HTML.Trusted";i:7;s:10:"HTML.XHTML";i:7;s:10:"Core.XHTML";O:8:"stdClass":2:{s:3:"key";s:10:"HTML.XHTML";s:7:"isAlias";b:1;}s:28:"Output.CommentScriptContents";i:7;s:26:"Core.CommentScriptContents";O:8:"stdClass":2:{s:3:"key";s:28:"Output.CommentScriptContents";s:7:"isAlias";b:1;}s:19:"Output.FixInnerHTML";i:7;s:18:"Output.FlashCompat";i:7;s:14:"Output.Newline";i:-1;s:15:"Output.SortAttr";i:7;s:17:"Output.TidyFormat";i:7;s:15:"Core.TidyFormat";O:8:"stdClass":2:{s:3:"key";s:17:"Output.TidyFormat";s:7:"isAlias";b:1;}s:17:"Test.ForceNoIconv";i:7;s:18:"URI.AllowedSchemes";i:8;s:8:"URI.Base";i:-1;s:17:"URI.DefaultScheme";i:-1;s:16:"URI.DefinitionID";i:-1;s:17:"URI.DefinitionRev";i:5;s:11:"URI.Disable";i:7;s:15:"Attr.DisableURI";O:8:"stdClass":2:{s:3:"key";s:11:"URI.Disable";s:7:"isAlias";b:1;}s:19:"URI.DisableExternal";i:7;s:28:"URI.DisableExternalResources";i:7;s:20:"URI.DisableResources";i:7;s:8:"URI.Host";i:-1;s:17:"URI.HostBlacklist";i:9;s:16:"URI.MakeAbsolute";i:7;s:9:"URI.Munge";i:-1;s:18:"URI.MungeResources";i:7;s:18:"URI.MungeSecretKey";i:-1;s:26:"URI.OverrideAllowedSchemes";i:7;s:20:"URI.SafeIframeRegexp";i:-1;}}
\ No newline at end of file
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.AllowedClasses.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.AllowedClasses.txt
deleted file mode 100644
index 0517fed0..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.AllowedClasses.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-Attr.AllowedClasses
-TYPE: lookup/null
-VERSION: 4.0.0
-DEFAULT: null
---DESCRIPTION--
-List of allowed class values in the class attribute. By default, this is null,
-which means all classes are allowed.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.AllowedFrameTargets.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.AllowedFrameTargets.txt
deleted file mode 100644
index 249edd64..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.AllowedFrameTargets.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-Attr.AllowedFrameTargets
-TYPE: lookup
-DEFAULT: array()
---DESCRIPTION--
-Lookup table of all allowed link frame targets. Some commonly used link
-targets include _blank, _self, _parent and _top. Values should be
-lowercase, as validation will be done in a case-sensitive manner despite
-W3C's recommendation. XHTML 1.0 Strict does not permit the target attribute
-so this directive will have no effect in that doctype. XHTML 1.1 does not
-enable the Target module by default, you will have to manually enable it
-(see the module documentation for more details.)
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.AllowedRel.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.AllowedRel.txt
deleted file mode 100644
index 9a8fa6a2..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.AllowedRel.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-Attr.AllowedRel
-TYPE: lookup
-VERSION: 1.6.0
-DEFAULT: array()
---DESCRIPTION--
-List of allowed forward document relationships in the rel attribute. Common
-values may be nofollow or print. By default, this is empty, meaning that no
-document relationships are allowed.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.AllowedRev.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.AllowedRev.txt
deleted file mode 100644
index b0178834..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.AllowedRev.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-Attr.AllowedRev
-TYPE: lookup
-VERSION: 1.6.0
-DEFAULT: array()
---DESCRIPTION--
-List of allowed reverse document relationships in the rev attribute. This
-attribute is a bit of an edge-case; if you don't know what it is for, stay
-away.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.ClassUseCDATA.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.ClassUseCDATA.txt
deleted file mode 100644
index e774b823..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.ClassUseCDATA.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-Attr.ClassUseCDATA
-TYPE: bool/null
-DEFAULT: null
-VERSION: 4.0.0
---DESCRIPTION--
-If null, class will auto-detect the doctype and, if matching XHTML 1.1 or
-XHTML 2.0, will use the restrictive NMTOKENS specification of class. Otherwise,
-it will use a relaxed CDATA definition. If true, the relaxed CDATA definition
-is forced; if false, the NMTOKENS definition is forced. To get behavior
-of HTML Purifier prior to 4.0.0, set this directive to false.
-
-Some rational behind the auto-detection:
-in previous versions of HTML Purifier, it was assumed that the form of
-class was NMTOKENS, as specified by the XHTML Modularization (representing
-XHTML 1.1 and XHTML 2.0). The DTDs for HTML 4.01 and XHTML 1.0, however
-specify class as CDATA. HTML 5 effectively defines it as CDATA, but
-with the additional constraint that each name should be unique (this is not
-explicitly outlined in previous specifications).
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.DefaultImageAlt.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.DefaultImageAlt.txt
deleted file mode 100644
index 533165e1..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.DefaultImageAlt.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-Attr.DefaultImageAlt
-TYPE: string/null
-DEFAULT: null
-VERSION: 3.2.0
---DESCRIPTION--
-This is the content of the alt tag of an image if the user had not
-previously specified an alt attribute. This applies to all images without
-a valid alt attribute, as opposed to %Attr.DefaultInvalidImageAlt, which
-only applies to invalid images, and overrides in the case of an invalid image.
-Default behavior with null is to use the basename of the src tag for the alt.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.DefaultInvalidImage.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.DefaultInvalidImage.txt
deleted file mode 100644
index 9eb7e384..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.DefaultInvalidImage.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-Attr.DefaultInvalidImage
-TYPE: string
-DEFAULT: ''
---DESCRIPTION--
-This is the default image an img tag will be pointed to if it does not have
-a valid src attribute. In future versions, we may allow the image tag to
-be removed completely, but due to design issues, this is not possible right
-now.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.DefaultInvalidImageAlt.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.DefaultInvalidImageAlt.txt
deleted file mode 100644
index 2f17bf47..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.DefaultInvalidImageAlt.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-Attr.DefaultInvalidImageAlt
-TYPE: string
-DEFAULT: 'Invalid image'
---DESCRIPTION--
-This is the content of the alt tag of an invalid image if the user had not
-previously specified an alt attribute. It has no effect when the image is
-valid but there was no alt attribute present.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.DefaultTextDir.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.DefaultTextDir.txt
deleted file mode 100644
index 52654b53..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.DefaultTextDir.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-Attr.DefaultTextDir
-TYPE: string
-DEFAULT: 'ltr'
---DESCRIPTION--
-Defines the default text direction (ltr or rtl) of the document being
-parsed. This generally is the same as the value of the dir attribute in
-HTML, or ltr if that is not specified.
---ALLOWED--
-'ltr', 'rtl'
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.EnableID.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.EnableID.txt
deleted file mode 100644
index 6440d210..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.EnableID.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-Attr.EnableID
-TYPE: bool
-DEFAULT: false
-VERSION: 1.2.0
---DESCRIPTION--
-Allows the ID attribute in HTML. This is disabled by default due to the
-fact that without proper configuration user input can easily break the
-validation of a webpage by specifying an ID that is already on the
-surrounding HTML. If you don't mind throwing caution to the wind, enable
-this directive, but I strongly recommend you also consider blacklisting IDs
-you use (%Attr.IDBlacklist) or prefixing all user supplied IDs
-(%Attr.IDPrefix). When set to true HTML Purifier reverts to the behavior of
-pre-1.2.0 versions.
---ALIASES--
-HTML.EnableAttrID
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.ForbiddenClasses.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.ForbiddenClasses.txt
deleted file mode 100644
index f31d226f..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.ForbiddenClasses.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-Attr.ForbiddenClasses
-TYPE: lookup
-VERSION: 4.0.0
-DEFAULT: array()
---DESCRIPTION--
-List of forbidden class values in the class attribute. By default, this is
-empty, which means that no classes are forbidden. See also %Attr.AllowedClasses.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.ID.HTML5.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.ID.HTML5.txt
deleted file mode 100644
index 735d4b7a..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.ID.HTML5.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-Attr.ID.HTML5
-TYPE: bool/null
-DEFAULT: null
-VERSION: 4.8.0
---DESCRIPTION--
-In HTML5, restrictions on the format of the id attribute have been significantly
-relaxed, such that any string is valid so long as it contains no spaces and
-is at least one character. In lieu of a general HTML5 compatibility flag,
-set this configuration directive to true to use the relaxed rules.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.IDBlacklist.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.IDBlacklist.txt
deleted file mode 100644
index 5f2b5e3d..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.IDBlacklist.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-Attr.IDBlacklist
-TYPE: list
-DEFAULT: array()
-DESCRIPTION: Array of IDs not allowed in the document.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.IDBlacklistRegexp.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.IDBlacklistRegexp.txt
deleted file mode 100644
index 6f582458..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.IDBlacklistRegexp.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-Attr.IDBlacklistRegexp
-TYPE: string/null
-VERSION: 1.6.0
-DEFAULT: NULL
---DESCRIPTION--
-PCRE regular expression to be matched against all IDs. If the expression is
-matches, the ID is rejected. Use this with care: may cause significant
-degradation. ID matching is done after all other validation.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.IDPrefix.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.IDPrefix.txt
deleted file mode 100644
index cc49d43f..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.IDPrefix.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-Attr.IDPrefix
-TYPE: string
-VERSION: 1.2.0
-DEFAULT: ''
---DESCRIPTION--
-String to prefix to IDs. If you have no idea what IDs your pages may use,
-you may opt to simply add a prefix to all user-submitted ID attributes so
-that they are still usable, but will not conflict with core page IDs.
-Example: setting the directive to 'user_' will result in a user submitted
-'foo' to become 'user_foo' Be sure to set %HTML.EnableAttrID to true
-before using this.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.IDPrefixLocal.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.IDPrefixLocal.txt
deleted file mode 100644
index 2c5924a7..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Attr.IDPrefixLocal.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-Attr.IDPrefixLocal
-TYPE: string
-VERSION: 1.2.0
-DEFAULT: ''
---DESCRIPTION--
-Temporary prefix for IDs used in conjunction with %Attr.IDPrefix. If you
-need to allow multiple sets of user content on web page, you may need to
-have a seperate prefix that changes with each iteration. This way,
-seperately submitted user content displayed on the same page doesn't
-clobber each other. Ideal values are unique identifiers for the content it
-represents (i.e. the id of the row in the database). Be sure to add a
-seperator (like an underscore) at the end. Warning: this directive will
-not work unless %Attr.IDPrefix is set to a non-empty value!
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.AutoParagraph.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.AutoParagraph.txt
deleted file mode 100644
index d5caa1bb..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.AutoParagraph.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-AutoFormat.AutoParagraph
-TYPE: bool
-VERSION: 2.0.1
-DEFAULT: false
---DESCRIPTION--
-
-
- This directive turns on auto-paragraphing, where double newlines are
- converted in to paragraphs whenever possible. Auto-paragraphing:
-
-
- Always applies to inline elements or text in the root node,
- Applies to inline elements or text with double newlines in nodes
- that allow paragraph tags,
- Applies to double newlines in paragraph tags
-
-
- p tags must be allowed for this directive to take effect.
- We do not use br tags for paragraphing, as that is
- semantically incorrect.
-
-
- To prevent auto-paragraphing as a content-producer, refrain from using
- double-newlines except to specify a new paragraph or in contexts where
- it has special meaning (whitespace usually has no meaning except in
- tags like pre, so this should not be difficult.) To prevent
- the paragraphing of inline text adjacent to block elements, wrap them
- in div tags (the behavior is slightly different outside of
- the root node.)
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.Custom.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.Custom.txt
deleted file mode 100644
index 2a476481..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.Custom.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-AutoFormat.Custom
-TYPE: list
-VERSION: 2.0.1
-DEFAULT: array()
---DESCRIPTION--
-
-
- This directive can be used to add custom auto-format injectors.
- Specify an array of injector names (class name minus the prefix)
- or concrete implementations. Injector class must exist.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.DisplayLinkURI.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.DisplayLinkURI.txt
deleted file mode 100644
index 663064a3..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.DisplayLinkURI.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-AutoFormat.DisplayLinkURI
-TYPE: bool
-VERSION: 3.2.0
-DEFAULT: false
---DESCRIPTION--
-
- This directive turns on the in-text display of URIs in <a> tags, and disables
- those links. For example, example becomes
- example (http://example.com ).
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.Linkify.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.Linkify.txt
deleted file mode 100644
index 3a48ba96..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.Linkify.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-AutoFormat.Linkify
-TYPE: bool
-VERSION: 2.0.1
-DEFAULT: false
---DESCRIPTION--
-
-
- This directive turns on linkification, auto-linking http, ftp and
- https URLs. a tags with the href attribute
- must be allowed.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.PurifierLinkify.DocURL.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.PurifierLinkify.DocURL.txt
deleted file mode 100644
index db58b134..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.PurifierLinkify.DocURL.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-AutoFormat.PurifierLinkify.DocURL
-TYPE: string
-VERSION: 2.0.1
-DEFAULT: '#%s'
-ALIASES: AutoFormatParam.PurifierLinkifyDocURL
---DESCRIPTION--
-
- Location of configuration documentation to link to, let %s substitute
- into the configuration's namespace and directive names sans the percent
- sign.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.PurifierLinkify.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.PurifierLinkify.txt
deleted file mode 100644
index 7996488b..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.PurifierLinkify.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-AutoFormat.PurifierLinkify
-TYPE: bool
-VERSION: 2.0.1
-DEFAULT: false
---DESCRIPTION--
-
-
- Internal auto-formatter that converts configuration directives in
- syntax %Namespace.Directive to links. a tags
- with the href attribute must be allowed.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveEmpty.Predicate.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveEmpty.Predicate.txt
deleted file mode 100644
index 6367fe23..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveEmpty.Predicate.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-AutoFormat.RemoveEmpty.Predicate
-TYPE: hash
-VERSION: 4.7.0
-DEFAULT: array('colgroup' => array(), 'th' => array(), 'td' => array(), 'iframe' => array('src'))
---DESCRIPTION--
-
- Given that an element has no contents, it will be removed by default, unless
- this predicate dictates otherwise. The predicate can either be an associative
- map from tag name to list of attributes that must be present for the element
- to be considered preserved: thus, the default always preserves colgroup,
- th and td, and also iframe if it
- has a src.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions.txt
deleted file mode 100644
index 35c393b4..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions
-TYPE: lookup
-VERSION: 4.0.0
-DEFAULT: array('td' => true, 'th' => true)
---DESCRIPTION--
-
- When %AutoFormat.RemoveEmpty and %AutoFormat.RemoveEmpty.RemoveNbsp
- are enabled, this directive defines what HTML elements should not be
- removede if they have only a non-breaking space in them.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveEmpty.RemoveNbsp.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveEmpty.RemoveNbsp.txt
deleted file mode 100644
index 9228dee2..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveEmpty.RemoveNbsp.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-AutoFormat.RemoveEmpty.RemoveNbsp
-TYPE: bool
-VERSION: 4.0.0
-DEFAULT: false
---DESCRIPTION--
-
- When enabled, HTML Purifier will treat any elements that contain only
- non-breaking spaces as well as regular whitespace as empty, and remove
- them when %AutoFormat.RemoveEmpty is enabled.
-
-
- See %AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions for a list of elements
- that don't have this behavior applied to them.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveEmpty.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveEmpty.txt
deleted file mode 100644
index 34657ba4..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveEmpty.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-AutoFormat.RemoveEmpty
-TYPE: bool
-VERSION: 3.2.0
-DEFAULT: false
---DESCRIPTION--
-
- When enabled, HTML Purifier will attempt to remove empty elements that
- contribute no semantic information to the document. The following types
- of nodes will be removed:
-
-
- Tags with no attributes and no content, and that are not empty
- elements (remove <a></a> but not
- <br />), and
-
-
- Tags with no content, except for:
- The colgroup element, or
-
- Elements with the id or name attribute,
- when those attributes are permitted on those elements.
-
-
-
-
- Please be very careful when using this functionality; while it may not
- seem that empty elements contain useful information, they can alter the
- layout of a document given appropriate styling. This directive is most
- useful when you are processing machine-generated HTML, please avoid using
- it on regular user HTML.
-
-
- Elements that contain only whitespace will be treated as empty. Non-breaking
- spaces, however, do not count as whitespace. See
- %AutoFormat.RemoveEmpty.RemoveNbsp for alternate behavior.
-
-
- This algorithm is not perfect; you may still notice some empty tags,
- particularly if a node had elements, but those elements were later removed
- because they were not permitted in that context, or tags that, after
- being auto-closed by another tag, where empty. This is for safety reasons
- to prevent clever code from breaking validation. The general rule of thumb:
- if a tag looked empty on the way in, it will get removed; if HTML Purifier
- made it empty, it will stay.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveSpansWithoutAttributes.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveSpansWithoutAttributes.txt
deleted file mode 100644
index dde990ab..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveSpansWithoutAttributes.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-AutoFormat.RemoveSpansWithoutAttributes
-TYPE: bool
-VERSION: 4.0.1
-DEFAULT: false
---DESCRIPTION--
-
- This directive causes span tags without any attributes
- to be removed. It will also remove spans that had all attributes
- removed during processing.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/CSS.AllowDuplicates.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/CSS.AllowDuplicates.txt
deleted file mode 100644
index 4d054b1f..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/CSS.AllowDuplicates.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-CSS.AllowDuplicates
-TYPE: bool
-DEFAULT: false
-VERSION: 4.8.0
---DESCRIPTION--
-
- By default, HTML Purifier removes duplicate CSS properties,
- like color:red; color:blue. If this is set to
- true, duplicate properties are allowed.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/CSS.AllowImportant.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/CSS.AllowImportant.txt
deleted file mode 100644
index b324608f..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/CSS.AllowImportant.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-CSS.AllowImportant
-TYPE: bool
-DEFAULT: false
-VERSION: 3.1.0
---DESCRIPTION--
-This parameter determines whether or not !important cascade modifiers should
-be allowed in user CSS. If false, !important will stripped.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/CSS.AllowTricky.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/CSS.AllowTricky.txt
deleted file mode 100644
index 748be0ee..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/CSS.AllowTricky.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-CSS.AllowTricky
-TYPE: bool
-DEFAULT: false
-VERSION: 3.1.0
---DESCRIPTION--
-This parameter determines whether or not to allow "tricky" CSS properties and
-values. Tricky CSS properties/values can drastically modify page layout or
-be used for deceptive practices but do not directly constitute a security risk.
-For example, display:none; is considered a tricky property that
-will only be allowed if this directive is set to true.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/CSS.AllowedFonts.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/CSS.AllowedFonts.txt
deleted file mode 100644
index 3fd46540..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/CSS.AllowedFonts.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-CSS.AllowedFonts
-TYPE: lookup/null
-VERSION: 4.3.0
-DEFAULT: NULL
---DESCRIPTION--
-
- Allows you to manually specify a set of allowed fonts. If
- NULL, all fonts are allowed. This directive
- affects generic names (serif, sans-serif, monospace, cursive,
- fantasy) as well as specific font families.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/CSS.AllowedProperties.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/CSS.AllowedProperties.txt
deleted file mode 100644
index 460112eb..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/CSS.AllowedProperties.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-CSS.AllowedProperties
-TYPE: lookup/null
-VERSION: 3.1.0
-DEFAULT: NULL
---DESCRIPTION--
-
-
- If HTML Purifier's style attributes set is unsatisfactory for your needs,
- you can overload it with your own list of tags to allow. Note that this
- method is subtractive: it does its job by taking away from HTML Purifier
- usual feature set, so you cannot add an attribute that HTML Purifier never
- supported in the first place.
-
-
- Warning: If another directive conflicts with the
- elements here, that directive will win and override.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/CSS.DefinitionRev.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/CSS.DefinitionRev.txt
deleted file mode 100644
index 5cb7dda3..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/CSS.DefinitionRev.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-CSS.DefinitionRev
-TYPE: int
-VERSION: 2.0.0
-DEFAULT: 1
---DESCRIPTION--
-
-
- Revision identifier for your custom definition. See
- %HTML.DefinitionRev for details.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/CSS.ForbiddenProperties.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/CSS.ForbiddenProperties.txt
deleted file mode 100644
index f1f5c5f1..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/CSS.ForbiddenProperties.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-CSS.ForbiddenProperties
-TYPE: lookup
-VERSION: 4.2.0
-DEFAULT: array()
---DESCRIPTION--
-
- This is the logical inverse of %CSS.AllowedProperties, and it will
- override that directive or any other directive. If possible,
- %CSS.AllowedProperties is recommended over this directive,
- because it can sometimes be difficult to tell whether or not you've
- forbidden all of the CSS properties you truly would like to disallow.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/CSS.MaxImgLength.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/CSS.MaxImgLength.txt
deleted file mode 100644
index 7a329147..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/CSS.MaxImgLength.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-CSS.MaxImgLength
-TYPE: string/null
-DEFAULT: '1200px'
-VERSION: 3.1.1
---DESCRIPTION--
-
- This parameter sets the maximum allowed length on img tags,
- effectively the width and height properties.
- Only absolute units of measurement (in, pt, pc, mm, cm) and pixels (px) are allowed. This is
- in place to prevent imagecrash attacks, disable with null at your own risk.
- This directive is similar to %HTML.MaxImgLength, and both should be
- concurrently edited, although there are
- subtle differences in the input format (the CSS max is a number with
- a unit).
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/CSS.Proprietary.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/CSS.Proprietary.txt
deleted file mode 100644
index 148eedb8..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/CSS.Proprietary.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-CSS.Proprietary
-TYPE: bool
-VERSION: 3.0.0
-DEFAULT: false
---DESCRIPTION--
-
-
- Whether or not to allow safe, proprietary CSS values.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/CSS.Trusted.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/CSS.Trusted.txt
deleted file mode 100644
index e733a61e..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/CSS.Trusted.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-CSS.Trusted
-TYPE: bool
-VERSION: 4.2.1
-DEFAULT: false
---DESCRIPTION--
-Indicates whether or not the user's CSS input is trusted or not. If the
-input is trusted, a more expansive set of allowed properties. See
-also %HTML.Trusted.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Cache.DefinitionImpl.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Cache.DefinitionImpl.txt
deleted file mode 100644
index c486724c..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Cache.DefinitionImpl.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-Cache.DefinitionImpl
-TYPE: string/null
-VERSION: 2.0.0
-DEFAULT: 'Serializer'
---DESCRIPTION--
-
-This directive defines which method to use when caching definitions,
-the complex data-type that makes HTML Purifier tick. Set to null
-to disable caching (not recommended, as you will see a definite
-performance degradation).
-
---ALIASES--
-Core.DefinitionCache
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Cache.SerializerPath.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Cache.SerializerPath.txt
deleted file mode 100644
index 54036507..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Cache.SerializerPath.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-Cache.SerializerPath
-TYPE: string/null
-VERSION: 2.0.0
-DEFAULT: NULL
---DESCRIPTION--
-
-
- Absolute path with no trailing slash to store serialized definitions in.
- Default is within the
- HTML Purifier library inside DefinitionCache/Serializer. This
- path must be writable by the webserver.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Cache.SerializerPermissions.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Cache.SerializerPermissions.txt
deleted file mode 100644
index 2e0cc810..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Cache.SerializerPermissions.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-Cache.SerializerPermissions
-TYPE: int/null
-VERSION: 4.3.0
-DEFAULT: 0755
---DESCRIPTION--
-
-
- Directory permissions of the files and directories created inside
- the DefinitionCache/Serializer or other custom serializer path.
-
-
- In HTML Purifier 4.8.0, this also supports NULL,
- which means that no chmod'ing or directory creation shall
- occur.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.AggressivelyFixLt.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.AggressivelyFixLt.txt
deleted file mode 100644
index 568cbf3b..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.AggressivelyFixLt.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-Core.AggressivelyFixLt
-TYPE: bool
-VERSION: 2.1.0
-DEFAULT: true
---DESCRIPTION--
-
- This directive enables aggressive pre-filter fixes HTML Purifier can
- perform in order to ensure that open angled-brackets do not get killed
- during parsing stage. Enabling this will result in two preg_replace_callback
- calls and at least two preg_replace calls for every HTML document parsed;
- if your users make very well-formed HTML, you can set this directive false.
- This has no effect when DirectLex is used.
-
-
- Notice: This directive's default turned from false to true
- in HTML Purifier 3.2.0.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.AggressivelyRemoveScript.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.AggressivelyRemoveScript.txt
deleted file mode 100644
index b2b6ab14..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.AggressivelyRemoveScript.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-Core.AggressivelyRemoveScript
-TYPE: bool
-VERSION: 4.9.0
-DEFAULT: true
---DESCRIPTION--
-
- This directive enables aggressive pre-filter removal of
- script tags. This is not necessary for security,
- but it can help work around a bug in libxml where embedded
- HTML elements inside script sections cause the parser to
- choke. To revert to pre-4.9.0 behavior, set this to false.
- This directive has no effect if %Core.Trusted is true,
- %Core.RemoveScriptContents is false, or %Core.HiddenElements
- does not contain script.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.AllowHostnameUnderscore.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.AllowHostnameUnderscore.txt
deleted file mode 100644
index 2c910cc7..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.AllowHostnameUnderscore.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-Core.AllowHostnameUnderscore
-TYPE: bool
-VERSION: 4.6.0
-DEFAULT: false
---DESCRIPTION--
-
- By RFC 1123, underscores are not permitted in host names.
- (This is in contrast to the specification for DNS, RFC
- 2181, which allows underscores.)
- However, most browsers do the right thing when faced with
- an underscore in the host name, and so some poorly written
- websites are written with the expectation this should work.
- Setting this parameter to true relaxes our allowed character
- check so that underscores are permitted.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.AllowParseManyTags.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.AllowParseManyTags.txt
deleted file mode 100644
index 06278f82..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.AllowParseManyTags.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-Core.AllowParseManyTags
-TYPE: bool
-DEFAULT: false
-VERSION: 4.10.1
---DESCRIPTION--
-
- This directive allows parsing of many nested tags.
- If you set true, relaxes any hardcoded limit from the parser.
- However, in that case it may cause a Dos attack.
- Be careful when enabling it.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.CollectErrors.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.CollectErrors.txt
deleted file mode 100644
index d7317911..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.CollectErrors.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-Core.CollectErrors
-TYPE: bool
-VERSION: 2.0.0
-DEFAULT: false
---DESCRIPTION--
-
-Whether or not to collect errors found while filtering the document. This
-is a useful way to give feedback to your users. Warning:
-Currently this feature is very patchy and experimental, with lots of
-possible error messages not yet implemented. It will not cause any
-problems, but it may not help your users either.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.ColorKeywords.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.ColorKeywords.txt
deleted file mode 100644
index a75844cd..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.ColorKeywords.txt
+++ /dev/null
@@ -1,160 +0,0 @@
-Core.ColorKeywords
-TYPE: hash
-VERSION: 2.0.0
---DEFAULT--
-array (
- 'aliceblue' => '#F0F8FF',
- 'antiquewhite' => '#FAEBD7',
- 'aqua' => '#00FFFF',
- 'aquamarine' => '#7FFFD4',
- 'azure' => '#F0FFFF',
- 'beige' => '#F5F5DC',
- 'bisque' => '#FFE4C4',
- 'black' => '#000000',
- 'blanchedalmond' => '#FFEBCD',
- 'blue' => '#0000FF',
- 'blueviolet' => '#8A2BE2',
- 'brown' => '#A52A2A',
- 'burlywood' => '#DEB887',
- 'cadetblue' => '#5F9EA0',
- 'chartreuse' => '#7FFF00',
- 'chocolate' => '#D2691E',
- 'coral' => '#FF7F50',
- 'cornflowerblue' => '#6495ED',
- 'cornsilk' => '#FFF8DC',
- 'crimson' => '#DC143C',
- 'cyan' => '#00FFFF',
- 'darkblue' => '#00008B',
- 'darkcyan' => '#008B8B',
- 'darkgoldenrod' => '#B8860B',
- 'darkgray' => '#A9A9A9',
- 'darkgrey' => '#A9A9A9',
- 'darkgreen' => '#006400',
- 'darkkhaki' => '#BDB76B',
- 'darkmagenta' => '#8B008B',
- 'darkolivegreen' => '#556B2F',
- 'darkorange' => '#FF8C00',
- 'darkorchid' => '#9932CC',
- 'darkred' => '#8B0000',
- 'darksalmon' => '#E9967A',
- 'darkseagreen' => '#8FBC8F',
- 'darkslateblue' => '#483D8B',
- 'darkslategray' => '#2F4F4F',
- 'darkslategrey' => '#2F4F4F',
- 'darkturquoise' => '#00CED1',
- 'darkviolet' => '#9400D3',
- 'deeppink' => '#FF1493',
- 'deepskyblue' => '#00BFFF',
- 'dimgray' => '#696969',
- 'dimgrey' => '#696969',
- 'dodgerblue' => '#1E90FF',
- 'firebrick' => '#B22222',
- 'floralwhite' => '#FFFAF0',
- 'forestgreen' => '#228B22',
- 'fuchsia' => '#FF00FF',
- 'gainsboro' => '#DCDCDC',
- 'ghostwhite' => '#F8F8FF',
- 'gold' => '#FFD700',
- 'goldenrod' => '#DAA520',
- 'gray' => '#808080',
- 'grey' => '#808080',
- 'green' => '#008000',
- 'greenyellow' => '#ADFF2F',
- 'honeydew' => '#F0FFF0',
- 'hotpink' => '#FF69B4',
- 'indianred' => '#CD5C5C',
- 'indigo' => '#4B0082',
- 'ivory' => '#FFFFF0',
- 'khaki' => '#F0E68C',
- 'lavender' => '#E6E6FA',
- 'lavenderblush' => '#FFF0F5',
- 'lawngreen' => '#7CFC00',
- 'lemonchiffon' => '#FFFACD',
- 'lightblue' => '#ADD8E6',
- 'lightcoral' => '#F08080',
- 'lightcyan' => '#E0FFFF',
- 'lightgoldenrodyellow' => '#FAFAD2',
- 'lightgray' => '#D3D3D3',
- 'lightgrey' => '#D3D3D3',
- 'lightgreen' => '#90EE90',
- 'lightpink' => '#FFB6C1',
- 'lightsalmon' => '#FFA07A',
- 'lightseagreen' => '#20B2AA',
- 'lightskyblue' => '#87CEFA',
- 'lightslategray' => '#778899',
- 'lightslategrey' => '#778899',
- 'lightsteelblue' => '#B0C4DE',
- 'lightyellow' => '#FFFFE0',
- 'lime' => '#00FF00',
- 'limegreen' => '#32CD32',
- 'linen' => '#FAF0E6',
- 'magenta' => '#FF00FF',
- 'maroon' => '#800000',
- 'mediumaquamarine' => '#66CDAA',
- 'mediumblue' => '#0000CD',
- 'mediumorchid' => '#BA55D3',
- 'mediumpurple' => '#9370DB',
- 'mediumseagreen' => '#3CB371',
- 'mediumslateblue' => '#7B68EE',
- 'mediumspringgreen' => '#00FA9A',
- 'mediumturquoise' => '#48D1CC',
- 'mediumvioletred' => '#C71585',
- 'midnightblue' => '#191970',
- 'mintcream' => '#F5FFFA',
- 'mistyrose' => '#FFE4E1',
- 'moccasin' => '#FFE4B5',
- 'navajowhite' => '#FFDEAD',
- 'navy' => '#000080',
- 'oldlace' => '#FDF5E6',
- 'olive' => '#808000',
- 'olivedrab' => '#6B8E23',
- 'orange' => '#FFA500',
- 'orangered' => '#FF4500',
- 'orchid' => '#DA70D6',
- 'palegoldenrod' => '#EEE8AA',
- 'palegreen' => '#98FB98',
- 'paleturquoise' => '#AFEEEE',
- 'palevioletred' => '#DB7093',
- 'papayawhip' => '#FFEFD5',
- 'peachpuff' => '#FFDAB9',
- 'peru' => '#CD853F',
- 'pink' => '#FFC0CB',
- 'plum' => '#DDA0DD',
- 'powderblue' => '#B0E0E6',
- 'purple' => '#800080',
- 'rebeccapurple' => '#663399',
- 'red' => '#FF0000',
- 'rosybrown' => '#BC8F8F',
- 'royalblue' => '#4169E1',
- 'saddlebrown' => '#8B4513',
- 'salmon' => '#FA8072',
- 'sandybrown' => '#F4A460',
- 'seagreen' => '#2E8B57',
- 'seashell' => '#FFF5EE',
- 'sienna' => '#A0522D',
- 'silver' => '#C0C0C0',
- 'skyblue' => '#87CEEB',
- 'slateblue' => '#6A5ACD',
- 'slategray' => '#708090',
- 'slategrey' => '#708090',
- 'snow' => '#FFFAFA',
- 'springgreen' => '#00FF7F',
- 'steelblue' => '#4682B4',
- 'tan' => '#D2B48C',
- 'teal' => '#008080',
- 'thistle' => '#D8BFD8',
- 'tomato' => '#FF6347',
- 'turquoise' => '#40E0D0',
- 'violet' => '#EE82EE',
- 'wheat' => '#F5DEB3',
- 'white' => '#FFFFFF',
- 'whitesmoke' => '#F5F5F5',
- 'yellow' => '#FFFF00',
- 'yellowgreen' => '#9ACD32'
-)
---DESCRIPTION--
-
-Lookup array of color names to six digit hexadecimal number corresponding
-to color, with preceding hash mark. Used when parsing colors. The lookup
-is done in a case-insensitive manner.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.ConvertDocumentToFragment.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.ConvertDocumentToFragment.txt
deleted file mode 100644
index 64b114fc..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.ConvertDocumentToFragment.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-Core.ConvertDocumentToFragment
-TYPE: bool
-DEFAULT: true
---DESCRIPTION--
-
-This parameter determines whether or not the filter should convert
-input that is a full document with html and body tags to a fragment
-of just the contents of a body tag. This parameter is simply something
-HTML Purifier can do during an edge-case: for most inputs, this
-processing is not necessary.
-
---ALIASES--
-Core.AcceptFullDocuments
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.DirectLexLineNumberSyncInterval.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.DirectLexLineNumberSyncInterval.txt
deleted file mode 100644
index 36f16e07..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.DirectLexLineNumberSyncInterval.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-Core.DirectLexLineNumberSyncInterval
-TYPE: int
-VERSION: 2.0.0
-DEFAULT: 0
---DESCRIPTION--
-
-
- Specifies the number of tokens the DirectLex line number tracking
- implementations should process before attempting to resyncronize the
- current line count by manually counting all previous new-lines. When
- at 0, this functionality is disabled. Lower values will decrease
- performance, and this is only strictly necessary if the counting
- algorithm is buggy (in which case you should report it as a bug).
- This has no effect when %Core.MaintainLineNumbers is disabled or DirectLex is
- not being used.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.DisableExcludes.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.DisableExcludes.txt
deleted file mode 100644
index 1cd4c2c9..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.DisableExcludes.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-Core.DisableExcludes
-TYPE: bool
-DEFAULT: false
-VERSION: 4.5.0
---DESCRIPTION--
-
- This directive disables SGML-style exclusions, e.g. the exclusion of
- <object> in any descendant of a
- <pre> tag. Disabling excludes will allow some
- invalid documents to pass through HTML Purifier, but HTML Purifier
- will also be less likely to accidentally remove large documents during
- processing.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.EnableIDNA.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.EnableIDNA.txt
deleted file mode 100644
index ce243c35..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.EnableIDNA.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-Core.EnableIDNA
-TYPE: bool
-DEFAULT: false
-VERSION: 4.4.0
---DESCRIPTION--
-Allows international domain names in URLs. This configuration option
-requires the PEAR Net_IDNA2 module to be installed. It operates by
-punycoding any internationalized host names for maximum portability.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.Encoding.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.Encoding.txt
deleted file mode 100644
index 8bfb47c3..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.Encoding.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-Core.Encoding
-TYPE: istring
-DEFAULT: 'utf-8'
---DESCRIPTION--
-If for some reason you are unable to convert all webpages to UTF-8, you can
-use this directive as a stop-gap compatibility change to let HTML Purifier
-deal with non UTF-8 input. This technique has notable deficiencies:
-absolutely no characters outside of the selected character encoding will be
-preserved, not even the ones that have been ampersand escaped (this is due
-to a UTF-8 specific feature that automatically resolves all
-entities), making it pretty useless for anything except the most I18N-blind
-applications, although %Core.EscapeNonASCIICharacters offers fixes this
-trouble with another tradeoff. This directive only accepts ISO-8859-1 if
-iconv is not enabled.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.EscapeInvalidChildren.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.EscapeInvalidChildren.txt
deleted file mode 100644
index a3881be7..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.EscapeInvalidChildren.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-Core.EscapeInvalidChildren
-TYPE: bool
-DEFAULT: false
---DESCRIPTION--
-Warning: this configuration option is no longer does anything as of 4.6.0.
-
-When true, a child is found that is not allowed in the context of the
-parent element will be transformed into text as if it were ASCII. When
-false, that element and all internal tags will be dropped, though text will
-be preserved. There is no option for dropping the element but preserving
-child nodes.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.EscapeInvalidTags.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.EscapeInvalidTags.txt
deleted file mode 100644
index a7a5b249..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.EscapeInvalidTags.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-Core.EscapeInvalidTags
-TYPE: bool
-DEFAULT: false
---DESCRIPTION--
-When true, invalid tags will be written back to the document as plain text.
-Otherwise, they are silently dropped.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.EscapeNonASCIICharacters.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.EscapeNonASCIICharacters.txt
deleted file mode 100644
index abb49994..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.EscapeNonASCIICharacters.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-Core.EscapeNonASCIICharacters
-TYPE: bool
-VERSION: 1.4.0
-DEFAULT: false
---DESCRIPTION--
-This directive overcomes a deficiency in %Core.Encoding by blindly
-converting all non-ASCII characters into decimal numeric entities before
-converting it to its native encoding. This means that even characters that
-can be expressed in the non-UTF-8 encoding will be entity-ized, which can
-be a real downer for encodings like Big5. It also assumes that the ASCII
-repetoire is available, although this is the case for almost all encodings.
-Anyway, use UTF-8!
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.HiddenElements.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.HiddenElements.txt
deleted file mode 100644
index 915391ed..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.HiddenElements.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-Core.HiddenElements
-TYPE: lookup
---DEFAULT--
-array (
- 'script' => true,
- 'style' => true,
-)
---DESCRIPTION--
-
-
- This directive is a lookup array of elements which should have their
- contents removed when they are not allowed by the HTML definition.
- For example, the contents of a script tag are not
- normally shown in a document, so if script tags are to be removed,
- their contents should be removed to. This is opposed to a b
- tag, which defines some presentational changes but does not hide its
- contents.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.Language.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.Language.txt
deleted file mode 100644
index 233fca14..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.Language.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-Core.Language
-TYPE: string
-VERSION: 2.0.0
-DEFAULT: 'en'
---DESCRIPTION--
-
-ISO 639 language code for localizable things in HTML Purifier to use,
-which is mainly error reporting. There is currently only an English (en)
-translation, so this directive is currently useless.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.LegacyEntityDecoder.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.LegacyEntityDecoder.txt
deleted file mode 100644
index 392b4364..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.LegacyEntityDecoder.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-Core.LegacyEntityDecoder
-TYPE: bool
-VERSION: 4.9.0
-DEFAULT: false
---DESCRIPTION--
-
- Prior to HTML Purifier 4.9.0, entities were decoded by performing
- a global search replace for all entities whose decoded versions
- did not have special meanings under HTML, and replaced them with
- their decoded versions. We would match all entities, even if they did
- not have a trailing semicolon, but only if there weren't any trailing
- alphanumeric characters.
-
-
-Original Text Attribute
-¥ ¥ ¥
-¥ ¥ ¥
-¥a ¥a ¥a
-¥= ¥= ¥=
-
-
- In HTML Purifier 4.9.0, we changed the behavior of entity parsing
- to match entities that had missing trailing semicolons in less
- cases, to more closely match HTML5 parsing behavior:
-
-
-Original Text Attribute
-¥ ¥ ¥
-¥ ¥ ¥
-¥a ¥a ¥a
-¥= ¥= ¥=
-
-
- This flag reverts back to pre-HTML Purifier 4.9.0 behavior.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.LexerImpl.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.LexerImpl.txt
deleted file mode 100644
index 8983e2cc..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.LexerImpl.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-Core.LexerImpl
-TYPE: mixed/null
-VERSION: 2.0.0
-DEFAULT: NULL
---DESCRIPTION--
-
-
- This parameter determines what lexer implementation can be used. The
- valid values are:
-
-
- null
-
- Recommended, the lexer implementation will be auto-detected based on
- your PHP-version and configuration.
-
- string lexer identifier
-
- This is a slim way of manually overridding the implementation.
- Currently recognized values are: DOMLex (the default PHP5
-implementation)
- and DirectLex (the default PHP4 implementation). Only use this if
- you know what you are doing: usually, the auto-detection will
- manage things for cases you aren't even aware of.
-
- object lexer instance
-
- Super-advanced: you can specify your own, custom, implementation that
- implements the interface defined by HTMLPurifier_Lexer.
- I may remove this option simply because I don't expect anyone
- to use it.
-
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.MaintainLineNumbers.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.MaintainLineNumbers.txt
deleted file mode 100644
index eb841a75..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.MaintainLineNumbers.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-Core.MaintainLineNumbers
-TYPE: bool/null
-VERSION: 2.0.0
-DEFAULT: NULL
---DESCRIPTION--
-
-
- If true, HTML Purifier will add line number information to all tokens.
- This is useful when error reporting is turned on, but can result in
- significant performance degradation and should not be used when
- unnecessary. This directive must be used with the DirectLex lexer,
- as the DOMLex lexer does not (yet) support this functionality.
- If the value is null, an appropriate value will be selected based
- on other configuration.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.NormalizeNewlines.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.NormalizeNewlines.txt
deleted file mode 100644
index d77f5360..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.NormalizeNewlines.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-Core.NormalizeNewlines
-TYPE: bool
-VERSION: 4.2.0
-DEFAULT: true
---DESCRIPTION--
-
- Whether or not to normalize newlines to the operating
- system default. When false, HTML Purifier
- will attempt to preserve mixed newline files.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.RemoveInvalidImg.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.RemoveInvalidImg.txt
deleted file mode 100644
index 4070c2a0..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.RemoveInvalidImg.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-Core.RemoveInvalidImg
-TYPE: bool
-DEFAULT: true
-VERSION: 1.3.0
---DESCRIPTION--
-
-
- This directive enables pre-emptive URI checking in img
- tags, as the attribute validation strategy is not authorized to
- remove elements from the document. Revert to pre-1.3.0 behavior by setting to false.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.RemoveProcessingInstructions.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.RemoveProcessingInstructions.txt
deleted file mode 100644
index 3397d9f7..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.RemoveProcessingInstructions.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-Core.RemoveProcessingInstructions
-TYPE: bool
-VERSION: 4.2.0
-DEFAULT: false
---DESCRIPTION--
-Instead of escaping processing instructions in the form <? ...
-?>, remove it out-right. This may be useful if the HTML
-you are validating contains XML processing instruction gunk, however,
-it can also be user-unfriendly for people attempting to post PHP
-snippets.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.RemoveScriptContents.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.RemoveScriptContents.txt
deleted file mode 100644
index a4cd966d..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.RemoveScriptContents.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-Core.RemoveScriptContents
-TYPE: bool/null
-DEFAULT: NULL
-VERSION: 2.0.0
-DEPRECATED-VERSION: 2.1.0
-DEPRECATED-USE: Core.HiddenElements
---DESCRIPTION--
-
- This directive enables HTML Purifier to remove not only script tags
- but all of their contents.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Filter.Custom.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Filter.Custom.txt
deleted file mode 100644
index 3db50ef2..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Filter.Custom.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-Filter.Custom
-TYPE: list
-VERSION: 3.1.0
-DEFAULT: array()
---DESCRIPTION--
-
- This directive can be used to add custom filters; it is nearly the
- equivalent of the now deprecated HTMLPurifier->addFilter()
- method. Specify an array of concrete implementations.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Filter.ExtractStyleBlocks.Escaping.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Filter.ExtractStyleBlocks.Escaping.txt
deleted file mode 100644
index 16829bcd..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Filter.ExtractStyleBlocks.Escaping.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-Filter.ExtractStyleBlocks.Escaping
-TYPE: bool
-VERSION: 3.0.0
-DEFAULT: true
-ALIASES: Filter.ExtractStyleBlocksEscaping, FilterParam.ExtractStyleBlocksEscaping
---DESCRIPTION--
-
-
- Whether or not to escape the dangerous characters <, > and &
- as \3C, \3E and \26, respectively. This is can be safely set to false
- if the contents of StyleBlocks will be placed in an external stylesheet,
- where there is no risk of it being interpreted as HTML.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Filter.ExtractStyleBlocks.Scope.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Filter.ExtractStyleBlocks.Scope.txt
deleted file mode 100644
index 7f95f54d..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Filter.ExtractStyleBlocks.Scope.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-Filter.ExtractStyleBlocks.Scope
-TYPE: string/null
-VERSION: 3.0.0
-DEFAULT: NULL
-ALIASES: Filter.ExtractStyleBlocksScope, FilterParam.ExtractStyleBlocksScope
---DESCRIPTION--
-
-
- If you would like users to be able to define external stylesheets, but
- only allow them to specify CSS declarations for a specific node and
- prevent them from fiddling with other elements, use this directive.
- It accepts any valid CSS selector, and will prepend this to any
- CSS declaration extracted from the document. For example, if this
- directive is set to #user-content and a user uses the
- selector a:hover, the final selector will be
- #user-content a:hover.
-
-
- The comma shorthand may be used; consider the above example, with
- #user-content, #user-content2, the final selector will
- be #user-content a:hover, #user-content2 a:hover.
-
-
- Warning: It is possible for users to bypass this measure
- using a naughty + selector. This is a bug in CSS Tidy 1.3, not HTML
- Purifier, and I am working to get it fixed. Until then, HTML Purifier
- performs a basic check to prevent this.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Filter.ExtractStyleBlocks.TidyImpl.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Filter.ExtractStyleBlocks.TidyImpl.txt
deleted file mode 100644
index 6c231b2d..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Filter.ExtractStyleBlocks.TidyImpl.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-Filter.ExtractStyleBlocks.TidyImpl
-TYPE: mixed/null
-VERSION: 3.1.0
-DEFAULT: NULL
-ALIASES: FilterParam.ExtractStyleBlocksTidyImpl
---DESCRIPTION--
-
- If left NULL, HTML Purifier will attempt to instantiate a csstidy
- class to use for internal cleaning. This will usually be good enough.
-
-
- However, for trusted user input, you can set this to false to
- disable cleaning. In addition, you can supply your own concrete implementation
- of Tidy's interface to use, although I don't know why you'd want to do that.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Filter.ExtractStyleBlocks.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Filter.ExtractStyleBlocks.txt
deleted file mode 100644
index 078d0874..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Filter.ExtractStyleBlocks.txt
+++ /dev/null
@@ -1,74 +0,0 @@
-Filter.ExtractStyleBlocks
-TYPE: bool
-VERSION: 3.1.0
-DEFAULT: false
-EXTERNAL: CSSTidy
---DESCRIPTION--
-
- This directive turns on the style block extraction filter, which removes
- style blocks from input HTML, cleans them up with CSSTidy,
- and places them in the StyleBlocks context variable, for further
- use by you, usually to be placed in an external stylesheet, or a
- style block in the head of your document.
-
-
- Sample usage:
-
-';
-?>
-
-
-
- Filter.ExtractStyleBlocks
-body {color:#F00;} Some text';
-
- $config = HTMLPurifier_Config::createDefault();
- $config->set('Filter', 'ExtractStyleBlocks', true);
- $purifier = new HTMLPurifier($config);
-
- $html = $purifier->purify($dirty);
-
- // This implementation writes the stylesheets to the styles/ directory.
- // You can also echo the styles inside the document, but it's a bit
- // more difficult to make sure they get interpreted properly by
- // browsers; try the usual CSS armoring techniques.
- $styles = $purifier->context->get('StyleBlocks');
- $dir = 'styles/';
- if (!is_dir($dir)) mkdir($dir);
- $hash = sha1($_GET['html']);
- foreach ($styles as $i => $style) {
- file_put_contents($name = $dir . $hash . "_$i");
- echo ' ';
- }
-?>
-
-
-
-
-
-
-
-]]>
-
- Warning: It is possible for a user to mount an
- imagecrash attack using this CSS. Counter-measures are difficult;
- it is not simply enough to limit the range of CSS lengths (using
- relative lengths with many nesting levels allows for large values
- to be attained without actually specifying them in the stylesheet),
- and the flexible nature of selectors makes it difficult to selectively
- disable lengths on image tags (HTML Purifier, however, does disable
- CSS width and height in inline styling). There are probably two effective
- counter measures: an explicit width and height set to auto in all
- images in your document (unlikely) or the disabling of width and
- height (somewhat reasonable). Whether or not these measures should be
- used is left to the reader.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Filter.YouTube.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Filter.YouTube.txt
deleted file mode 100644
index 321eaa2d..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Filter.YouTube.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-Filter.YouTube
-TYPE: bool
-VERSION: 3.1.0
-DEFAULT: false
---DESCRIPTION--
-
- Warning: Deprecated in favor of %HTML.SafeObject and
- %Output.FlashCompat (turn both on to allow YouTube videos and other
- Flash content).
-
-
- This directive enables YouTube video embedding in HTML Purifier. Check
- this document
- on embedding videos for more information on what this filter does.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.Allowed.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.Allowed.txt
deleted file mode 100644
index 0b2c106d..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.Allowed.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-HTML.Allowed
-TYPE: itext/null
-VERSION: 2.0.0
-DEFAULT: NULL
---DESCRIPTION--
-
-
- This is a preferred convenience directive that combines
- %HTML.AllowedElements and %HTML.AllowedAttributes.
- Specify elements and attributes that are allowed using:
- element1[attr1|attr2],element2.... For example,
- if you would like to only allow paragraphs and links, specify
- a[href],p. You can specify attributes that apply
- to all elements using an asterisk, e.g. *[lang].
- You can also use newlines instead of commas to separate elements.
-
-
- Warning :
- All of the constraints on the component directives are still enforced.
- The syntax is a subset of TinyMCE's valid_elements
- whitelist: directly copy-pasting it here will probably result in
- broken whitelists. If %HTML.AllowedElements or %HTML.AllowedAttributes
- are set, this directive has no effect.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedAttributes.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedAttributes.txt
deleted file mode 100644
index fcf093f1..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedAttributes.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-HTML.AllowedAttributes
-TYPE: lookup/null
-VERSION: 1.3.0
-DEFAULT: NULL
---DESCRIPTION--
-
-
- If HTML Purifier's attribute set is unsatisfactory, overload it!
- The syntax is "tag.attr" or "*.attr" for the global attributes
- (style, id, class, dir, lang, xml:lang).
-
-
- Warning: If another directive conflicts with the
- elements here, that directive will win and override. For
- example, %HTML.EnableAttrID will take precedence over *.id in this
- directive. You must set that directive to true before you can use
- IDs at all.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedComments.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedComments.txt
deleted file mode 100644
index 140e2142..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedComments.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-HTML.AllowedComments
-TYPE: lookup
-VERSION: 4.4.0
-DEFAULT: array()
---DESCRIPTION--
-A whitelist which indicates what explicit comment bodies should be
-allowed, modulo leading and trailing whitespace. See also %HTML.AllowedCommentsRegexp
-(these directives are union'ed together, so a comment is considered
-valid if any directive deems it valid.)
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedCommentsRegexp.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedCommentsRegexp.txt
deleted file mode 100644
index f22e977d..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedCommentsRegexp.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-HTML.AllowedCommentsRegexp
-TYPE: string/null
-VERSION: 4.4.0
-DEFAULT: NULL
---DESCRIPTION--
-A regexp, which if it matches the body of a comment, indicates that
-it should be allowed. Trailing and leading spaces are removed prior
-to running this regular expression.
-Warning: Make sure you specify
-correct anchor metacharacters ^regex$, otherwise you may accept
-comments that you did not mean to! In particular, the regex /foo|bar/
-is probably not sufficiently strict, since it also allows foobar.
-See also %HTML.AllowedComments (these directives are union'ed together,
-so a comment is considered valid if any directive deems it valid.)
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedElements.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedElements.txt
deleted file mode 100644
index 1d3fa790..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedElements.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-HTML.AllowedElements
-TYPE: lookup/null
-VERSION: 1.3.0
-DEFAULT: NULL
---DESCRIPTION--
-
- If HTML Purifier's tag set is unsatisfactory for your needs, you can
- overload it with your own list of tags to allow. If you change
- this, you probably also want to change %HTML.AllowedAttributes; see
- also %HTML.Allowed which lets you set allowed elements and
- attributes at the same time.
-
-
- If you attempt to allow an element that HTML Purifier does not know
- about, HTML Purifier will raise an error. You will need to manually
- tell HTML Purifier about this element by using the
- advanced customization features.
-
-
- Warning: If another directive conflicts with the
- elements here, that directive will win and override.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedModules.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedModules.txt
deleted file mode 100644
index 5a59a55c..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedModules.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-HTML.AllowedModules
-TYPE: lookup/null
-VERSION: 2.0.0
-DEFAULT: NULL
---DESCRIPTION--
-
-
- A doctype comes with a set of usual modules to use. Without having
- to mucking about with the doctypes, you can quickly activate or
- disable these modules by specifying which modules you wish to allow
- with this directive. This is most useful for unit testing specific
- modules, although end users may find it useful for their own ends.
-
-
- If you specify a module that does not exist, the manager will silently
- fail to use it, so be careful! User-defined modules are not affected
- by this directive. Modules defined in %HTML.CoreModules are not
- affected by this directive.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.Attr.Name.UseCDATA.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.Attr.Name.UseCDATA.txt
deleted file mode 100644
index 151fb7b8..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.Attr.Name.UseCDATA.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-HTML.Attr.Name.UseCDATA
-TYPE: bool
-DEFAULT: false
-VERSION: 4.0.0
---DESCRIPTION--
-The W3C specification DTD defines the name attribute to be CDATA, not ID, due
-to limitations of DTD. In certain documents, this relaxed behavior is desired,
-whether it is to specify duplicate names, or to specify names that would be
-illegal IDs (for example, names that begin with a digit.) Set this configuration
-directive to true to use the relaxed parsing rules.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.BlockWrapper.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.BlockWrapper.txt
deleted file mode 100644
index 45ae469e..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.BlockWrapper.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-HTML.BlockWrapper
-TYPE: string
-VERSION: 1.3.0
-DEFAULT: 'p'
---DESCRIPTION--
-
-
- String name of element to wrap inline elements that are inside a block
- context. This only occurs in the children of blockquote in strict mode.
-
-
- Example: by default value,
- <blockquote>Foo</blockquote> would become
- <blockquote><p>Foo</p></blockquote>.
- The <p> tags can be replaced with whatever you desire,
- as long as it is a block level element.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.CoreModules.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.CoreModules.txt
deleted file mode 100644
index 52461887..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.CoreModules.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-HTML.CoreModules
-TYPE: lookup
-VERSION: 2.0.0
---DEFAULT--
-array (
- 'Structure' => true,
- 'Text' => true,
- 'Hypertext' => true,
- 'List' => true,
- 'NonXMLCommonAttributes' => true,
- 'XMLCommonAttributes' => true,
- 'CommonAttributes' => true,
-)
---DESCRIPTION--
-
-
- Certain modularized doctypes (XHTML, namely), have certain modules
- that must be included for the doctype to be an conforming document
- type: put those modules here. By default, XHTML's core modules
- are used. You can set this to a blank array to disable core module
- protection, but this is not recommended.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.CustomDoctype.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.CustomDoctype.txt
deleted file mode 100644
index 6ed70b59..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.CustomDoctype.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-HTML.CustomDoctype
-TYPE: string/null
-VERSION: 2.0.1
-DEFAULT: NULL
---DESCRIPTION--
-
-A custom doctype for power-users who defined their own document
-type. This directive only applies when %HTML.Doctype is blank.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.DefinitionID.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.DefinitionID.txt
deleted file mode 100644
index 103db754..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.DefinitionID.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-HTML.DefinitionID
-TYPE: string/null
-DEFAULT: NULL
-VERSION: 2.0.0
---DESCRIPTION--
-
-
- Unique identifier for a custom-built HTML definition. If you edit
- the raw version of the HTMLDefinition, introducing changes that the
- configuration object does not reflect, you must specify this variable.
- If you change your custom edits, you should change this directive, or
- clear your cache. Example:
-
-
-$config = HTMLPurifier_Config::createDefault();
-$config->set('HTML', 'DefinitionID', '1');
-$def = $config->getHTMLDefinition();
-$def->addAttribute('a', 'tabindex', 'Number');
-
-
- In the above example, the configuration is still at the defaults, but
- using the advanced API, an extra attribute has been added. The
- configuration object normally has no way of knowing that this change
- has taken place, so it needs an extra directive: %HTML.DefinitionID.
- If someone else attempts to use the default configuration, these two
- pieces of code will not clobber each other in the cache, since one has
- an extra directive attached to it.
-
-
- You must specify a value to this directive to use the
- advanced API features.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.DefinitionRev.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.DefinitionRev.txt
deleted file mode 100644
index 229ae026..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.DefinitionRev.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-HTML.DefinitionRev
-TYPE: int
-VERSION: 2.0.0
-DEFAULT: 1
---DESCRIPTION--
-
-
- Revision identifier for your custom definition specified in
- %HTML.DefinitionID. This serves the same purpose: uniquely identifying
- your custom definition, but this one does so in a chronological
- context: revision 3 is more up-to-date then revision 2. Thus, when
- this gets incremented, the cache handling is smart enough to clean
- up any older revisions of your definition as well as flush the
- cache.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.Doctype.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.Doctype.txt
deleted file mode 100644
index 9dab497f..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.Doctype.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-HTML.Doctype
-TYPE: string/null
-DEFAULT: NULL
---DESCRIPTION--
-Doctype to use during filtering. Technically speaking this is not actually
-a doctype (as it does not identify a corresponding DTD), but we are using
-this name for sake of simplicity. When non-blank, this will override any
-older directives like %HTML.XHTML or %HTML.Strict.
---ALLOWED--
-'HTML 4.01 Transitional', 'HTML 4.01 Strict', 'XHTML 1.0 Transitional', 'XHTML 1.0 Strict', 'XHTML 1.1'
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.FlashAllowFullScreen.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.FlashAllowFullScreen.txt
deleted file mode 100644
index 7878dc0b..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.FlashAllowFullScreen.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-HTML.FlashAllowFullScreen
-TYPE: bool
-VERSION: 4.2.0
-DEFAULT: false
---DESCRIPTION--
-
- Whether or not to permit embedded Flash content from
- %HTML.SafeObject to expand to the full screen. Corresponds to
- the allowFullScreen parameter.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.ForbiddenAttributes.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.ForbiddenAttributes.txt
deleted file mode 100644
index 57358f9b..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.ForbiddenAttributes.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-HTML.ForbiddenAttributes
-TYPE: lookup
-VERSION: 3.1.0
-DEFAULT: array()
---DESCRIPTION--
-
- While this directive is similar to %HTML.AllowedAttributes, for
- forwards-compatibility with XML, this attribute has a different syntax. Instead of
- tag.attr, use tag@attr. To disallow href
- attributes in a tags, set this directive to
- a@href. You can also disallow an attribute globally with
- attr or *@attr (either syntax is fine; the latter
- is provided for consistency with %HTML.AllowedAttributes).
-
-
- Warning: This directive complements %HTML.ForbiddenElements,
- accordingly, check
- out that directive for a discussion of why you
- should think twice before using this directive.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.ForbiddenElements.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.ForbiddenElements.txt
deleted file mode 100644
index 93a53e14..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.ForbiddenElements.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-HTML.ForbiddenElements
-TYPE: lookup
-VERSION: 3.1.0
-DEFAULT: array()
---DESCRIPTION--
-
- This was, perhaps, the most requested feature ever in HTML
- Purifier. Please don't abuse it! This is the logical inverse of
- %HTML.AllowedElements, and it will override that directive, or any
- other directive.
-
-
- If possible, %HTML.Allowed is recommended over this directive, because it
- can sometimes be difficult to tell whether or not you've forbidden all of
- the behavior you would like to disallow. If you forbid img
- with the expectation of preventing images on your site, you'll be in for
- a nasty surprise when people start using the background-image
- CSS property.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.Forms.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.Forms.txt
deleted file mode 100644
index 4a432d89..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.Forms.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-HTML.Forms
-TYPE: bool
-VERSION: 4.13.0
-DEFAULT: false
---DESCRIPTION--
-
- Whether or not to permit form elements in the user input, regardless of
- %HTML.Trusted value. Please be very careful when using this functionality, as
- enabling forms in untrusted documents may allow for phishing attacks.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.MaxImgLength.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.MaxImgLength.txt
deleted file mode 100644
index e424c386..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.MaxImgLength.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-HTML.MaxImgLength
-TYPE: int/null
-DEFAULT: 1200
-VERSION: 3.1.1
---DESCRIPTION--
-
- This directive controls the maximum number of pixels in the width and
- height attributes in img tags. This is
- in place to prevent imagecrash attacks, disable with null at your own risk.
- This directive is similar to %CSS.MaxImgLength, and both should be
- concurrently edited, although there are
- subtle differences in the input format (the HTML max is an integer).
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.Nofollow.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.Nofollow.txt
deleted file mode 100644
index 700b3092..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.Nofollow.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-HTML.Nofollow
-TYPE: bool
-VERSION: 4.3.0
-DEFAULT: FALSE
---DESCRIPTION--
-If enabled, nofollow rel attributes are added to all outgoing links.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.Parent.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.Parent.txt
deleted file mode 100644
index 62e8e160..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.Parent.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-HTML.Parent
-TYPE: string
-VERSION: 1.3.0
-DEFAULT: 'div'
---DESCRIPTION--
-
-
- String name of element that HTML fragment passed to library will be
- inserted in. An interesting variation would be using span as the
- parent element, meaning that only inline tags would be allowed.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.Proprietary.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.Proprietary.txt
deleted file mode 100644
index dfb72049..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.Proprietary.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-HTML.Proprietary
-TYPE: bool
-VERSION: 3.1.0
-DEFAULT: false
---DESCRIPTION--
-
- Whether or not to allow proprietary elements and attributes in your
- documents, as per HTMLPurifier_HTMLModule_Proprietary.
- Warning: This can cause your documents to stop
- validating!
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.SafeEmbed.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.SafeEmbed.txt
deleted file mode 100644
index cdda09a4..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.SafeEmbed.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-HTML.SafeEmbed
-TYPE: bool
-VERSION: 3.1.1
-DEFAULT: false
---DESCRIPTION--
-
- Whether or not to permit embed tags in documents, with a number of extra
- security features added to prevent script execution. This is similar to
- what websites like MySpace do to embed tags. Embed is a proprietary
- element and will cause your website to stop validating; you should
- see if you can use %Output.FlashCompat with %HTML.SafeObject instead
- first.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.SafeIframe.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.SafeIframe.txt
deleted file mode 100644
index 5eb6ec2b..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.SafeIframe.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-HTML.SafeIframe
-TYPE: bool
-VERSION: 4.4.0
-DEFAULT: false
---DESCRIPTION--
-
- Whether or not to permit iframe tags in untrusted documents. This
- directive must be accompanied by a whitelist of permitted iframes,
- such as %URI.SafeIframeRegexp, otherwise it will fatally error.
- This directive has no effect on strict doctypes, as iframes are not
- valid.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.SafeObject.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.SafeObject.txt
deleted file mode 100644
index ceb342e2..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.SafeObject.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-HTML.SafeObject
-TYPE: bool
-VERSION: 3.1.1
-DEFAULT: false
---DESCRIPTION--
-
- Whether or not to permit object tags in documents, with a number of extra
- security features added to prevent script execution. This is similar to
- what websites like MySpace do to object tags. You should also enable
- %Output.FlashCompat in order to generate Internet Explorer
- compatibility code for your object tags.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.SafeScripting.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.SafeScripting.txt
deleted file mode 100644
index 5ebc7a19..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.SafeScripting.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-HTML.SafeScripting
-TYPE: lookup
-VERSION: 4.5.0
-DEFAULT: array()
---DESCRIPTION--
-
- Whether or not to permit script tags to external scripts in documents.
- Inline scripting is not allowed, and the script must match an explicit whitelist.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.Strict.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.Strict.txt
deleted file mode 100644
index a8b1de56..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.Strict.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-HTML.Strict
-TYPE: bool
-VERSION: 1.3.0
-DEFAULT: false
-DEPRECATED-VERSION: 1.7.0
-DEPRECATED-USE: HTML.Doctype
---DESCRIPTION--
-Determines whether or not to use Transitional (loose) or Strict rulesets.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.TargetBlank.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.TargetBlank.txt
deleted file mode 100644
index 587a1677..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.TargetBlank.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-HTML.TargetBlank
-TYPE: bool
-VERSION: 4.4.0
-DEFAULT: FALSE
---DESCRIPTION--
-If enabled, target=blank attributes are added to all outgoing links.
-(This includes links from an HTTPS version of a page to an HTTP version.)
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.TargetNoopener.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.TargetNoopener.txt
deleted file mode 100644
index dd514c0d..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.TargetNoopener.txt
+++ /dev/null
@@ -1,10 +0,0 @@
---# vim: et sw=4 sts=4
-HTML.TargetNoopener
-TYPE: bool
-VERSION: 4.8.0
-DEFAULT: TRUE
---DESCRIPTION--
-If enabled, noopener rel attributes are added to links which have
-a target attribute associated with them. This prevents malicious
-destinations from overwriting the original window.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.TargetNoreferrer.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.TargetNoreferrer.txt
deleted file mode 100644
index cb5a0b0e..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.TargetNoreferrer.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-HTML.TargetNoreferrer
-TYPE: bool
-VERSION: 4.8.0
-DEFAULT: TRUE
---DESCRIPTION--
-If enabled, noreferrer rel attributes are added to links which have
-a target attribute associated with them. This prevents malicious
-destinations from overwriting the original window.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.TidyAdd.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.TidyAdd.txt
deleted file mode 100644
index b4c271b7..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.TidyAdd.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-HTML.TidyAdd
-TYPE: lookup
-VERSION: 2.0.0
-DEFAULT: array()
---DESCRIPTION--
-
-Fixes to add to the default set of Tidy fixes as per your level.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.TidyLevel.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.TidyLevel.txt
deleted file mode 100644
index 4186ccd0..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.TidyLevel.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-HTML.TidyLevel
-TYPE: string
-VERSION: 2.0.0
-DEFAULT: 'medium'
---DESCRIPTION--
-
-General level of cleanliness the Tidy module should enforce.
-There are four allowed values:
-
- none
- No extra tidying should be done
- light
- Only fix elements that would be discarded otherwise due to
- lack of support in doctype
- medium
- Enforce best practices
- heavy
- Transform all deprecated elements and attributes to standards
- compliant equivalents
-
-
---ALLOWED--
-'none', 'light', 'medium', 'heavy'
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.TidyRemove.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.TidyRemove.txt
deleted file mode 100644
index 996762bd..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.TidyRemove.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-HTML.TidyRemove
-TYPE: lookup
-VERSION: 2.0.0
-DEFAULT: array()
---DESCRIPTION--
-
-Fixes to remove from the default set of Tidy fixes as per your level.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.Trusted.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.Trusted.txt
deleted file mode 100644
index 1db9237e..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.Trusted.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-HTML.Trusted
-TYPE: bool
-VERSION: 2.0.0
-DEFAULT: false
---DESCRIPTION--
-Indicates whether or not the user input is trusted or not. If the input is
-trusted, a more expansive set of allowed tags and attributes will be used.
-See also %CSS.Trusted.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.XHTML.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.XHTML.txt
deleted file mode 100644
index 2a47e384..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/HTML.XHTML.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-HTML.XHTML
-TYPE: bool
-DEFAULT: true
-VERSION: 1.1.0
-DEPRECATED-VERSION: 1.7.0
-DEPRECATED-USE: HTML.Doctype
---DESCRIPTION--
-Determines whether or not output is XHTML 1.0 or HTML 4.01 flavor.
---ALIASES--
-Core.XHTML
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Output.CommentScriptContents.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Output.CommentScriptContents.txt
deleted file mode 100644
index 08921fde..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Output.CommentScriptContents.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-Output.CommentScriptContents
-TYPE: bool
-VERSION: 2.0.0
-DEFAULT: true
---DESCRIPTION--
-Determines whether or not HTML Purifier should attempt to fix up the
-contents of script tags for legacy browsers with comments.
---ALIASES--
-Core.CommentScriptContents
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Output.FixInnerHTML.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Output.FixInnerHTML.txt
deleted file mode 100644
index d6f0d9f2..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Output.FixInnerHTML.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-Output.FixInnerHTML
-TYPE: bool
-VERSION: 4.3.0
-DEFAULT: true
---DESCRIPTION--
-
- If true, HTML Purifier will protect against Internet Explorer's
- mishandling of the innerHTML attribute by appending
- a space to any attribute that does not contain angled brackets, spaces
- or quotes, but contains a backtick. This slightly changes the
- semantics of any given attribute, so if this is unacceptable and
- you do not use innerHTML on any of your pages, you can
- turn this directive off.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Output.FlashCompat.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Output.FlashCompat.txt
deleted file mode 100644
index 93398e85..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Output.FlashCompat.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-Output.FlashCompat
-TYPE: bool
-VERSION: 4.1.0
-DEFAULT: false
---DESCRIPTION--
-
- If true, HTML Purifier will generate Internet Explorer compatibility
- code for all object code. This is highly recommended if you enable
- %HTML.SafeObject.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Output.Newline.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Output.Newline.txt
deleted file mode 100644
index 79f8ad82..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Output.Newline.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-Output.Newline
-TYPE: string/null
-VERSION: 2.0.1
-DEFAULT: NULL
---DESCRIPTION--
-
-
- Newline string to format final output with. If left null, HTML Purifier
- will auto-detect the default newline type of the system and use that;
- you can manually override it here. Remember, \r\n is Windows, \r
- is Mac, and \n is Unix.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Output.SortAttr.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Output.SortAttr.txt
deleted file mode 100644
index 232b0236..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Output.SortAttr.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-Output.SortAttr
-TYPE: bool
-VERSION: 3.2.0
-DEFAULT: false
---DESCRIPTION--
-
- If true, HTML Purifier will sort attributes by name before writing them back
- to the document, converting a tag like: <el b="" a="" c="" />
- to <el a="" b="" c="" />. This is a workaround for
- a bug in FCKeditor which causes it to swap attributes order, adding noise
- to text diffs. If you're not seeing this bug, chances are, you don't need
- this directive.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Output.TidyFormat.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Output.TidyFormat.txt
deleted file mode 100644
index 06bab00a..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Output.TidyFormat.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-Output.TidyFormat
-TYPE: bool
-VERSION: 1.1.1
-DEFAULT: false
---DESCRIPTION--
-
- Determines whether or not to run Tidy on the final output for pretty
- formatting reasons, such as indentation and wrap.
-
-
- This can greatly improve readability for editors who are hand-editing
- the HTML, but is by no means necessary as HTML Purifier has already
- fixed all major errors the HTML may have had. Tidy is a non-default
- extension, and this directive will silently fail if Tidy is not
- available.
-
-
- If you are looking to make the overall look of your page's source
- better, I recommend running Tidy on the entire page rather than just
- user-content (after all, the indentation relative to the containing
- blocks will be incorrect).
-
---ALIASES--
-Core.TidyFormat
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Test.ForceNoIconv.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Test.ForceNoIconv.txt
deleted file mode 100644
index 071bc029..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Test.ForceNoIconv.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-Test.ForceNoIconv
-TYPE: bool
-DEFAULT: false
---DESCRIPTION--
-When set to true, HTMLPurifier_Encoder will act as if iconv does not exist
-and use only pure PHP implementations.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.AllowedSchemes.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.AllowedSchemes.txt
deleted file mode 100644
index eb97307e..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.AllowedSchemes.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-URI.AllowedSchemes
-TYPE: lookup
---DEFAULT--
-array (
- 'http' => true,
- 'https' => true,
- 'mailto' => true,
- 'ftp' => true,
- 'nntp' => true,
- 'news' => true,
- 'tel' => true,
-)
---DESCRIPTION--
-Whitelist that defines the schemes that a URI is allowed to have. This
-prevents XSS attacks from using pseudo-schemes like javascript or mocha.
-There is also support for the data and file
-URI schemes, but they are not enabled by default.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.Base.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.Base.txt
deleted file mode 100644
index 876f0680..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.Base.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-URI.Base
-TYPE: string/null
-VERSION: 2.1.0
-DEFAULT: NULL
---DESCRIPTION--
-
-
- The base URI is the URI of the document this purified HTML will be
- inserted into. This information is important if HTML Purifier needs
- to calculate absolute URIs from relative URIs, such as when %URI.MakeAbsolute
- is on. You may use a non-absolute URI for this value, but behavior
- may vary (%URI.MakeAbsolute deals nicely with both absolute and
- relative paths, but forwards-compatibility is not guaranteed).
- Warning: If set, the scheme on this URI
- overrides the one specified by %URI.DefaultScheme.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.DefaultScheme.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.DefaultScheme.txt
deleted file mode 100644
index 834bc08c..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.DefaultScheme.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-URI.DefaultScheme
-TYPE: string/null
-DEFAULT: 'http'
---DESCRIPTION--
-
-
- Defines through what scheme the output will be served, in order to
- select the proper object validator when no scheme information is present.
-
-
-
- Starting with HTML Purifier 4.9.0, the default scheme can be null, in
- which case we reject all URIs which do not have explicit schemes.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.DefinitionID.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.DefinitionID.txt
deleted file mode 100644
index f05312ba..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.DefinitionID.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-URI.DefinitionID
-TYPE: string/null
-VERSION: 2.1.0
-DEFAULT: NULL
---DESCRIPTION--
-
-
- Unique identifier for a custom-built URI definition. If you want
- to add custom URIFilters, you must specify this value.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.DefinitionRev.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.DefinitionRev.txt
deleted file mode 100644
index 80cfea93..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.DefinitionRev.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-URI.DefinitionRev
-TYPE: int
-VERSION: 2.1.0
-DEFAULT: 1
---DESCRIPTION--
-
-
- Revision identifier for your custom definition. See
- %HTML.DefinitionRev for details.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.Disable.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.Disable.txt
deleted file mode 100644
index 71ce025a..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.Disable.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-URI.Disable
-TYPE: bool
-VERSION: 1.3.0
-DEFAULT: false
---DESCRIPTION--
-
-
- Disables all URIs in all forms. Not sure why you'd want to do that
- (after all, the Internet's founded on the notion of a hyperlink).
-
-
---ALIASES--
-Attr.DisableURI
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.DisableExternal.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.DisableExternal.txt
deleted file mode 100644
index 13c122c8..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.DisableExternal.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-URI.DisableExternal
-TYPE: bool
-VERSION: 1.2.0
-DEFAULT: false
---DESCRIPTION--
-Disables links to external websites. This is a highly effective anti-spam
-and anti-pagerank-leech measure, but comes at a hefty price: nolinks or
-images outside of your domain will be allowed. Non-linkified URIs will
-still be preserved. If you want to be able to link to subdomains or use
-absolute URIs, specify %URI.Host for your website.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.DisableExternalResources.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.DisableExternalResources.txt
deleted file mode 100644
index abcc1efd..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.DisableExternalResources.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-URI.DisableExternalResources
-TYPE: bool
-VERSION: 1.3.0
-DEFAULT: false
---DESCRIPTION--
-Disables the embedding of external resources, preventing users from
-embedding things like images from other hosts. This prevents access
-tracking (good for email viewers), bandwidth leeching, cross-site request
-forging, goatse.cx posting, and other nasties, but also results in a loss
-of end-user functionality (they can't directly post a pic they posted from
-Flickr anymore). Use it if you don't have a robust user-content moderation
-team.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.DisableResources.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.DisableResources.txt
deleted file mode 100644
index f891de49..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.DisableResources.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-URI.DisableResources
-TYPE: bool
-VERSION: 4.2.0
-DEFAULT: false
---DESCRIPTION--
-
- Disables embedding resources, essentially meaning no pictures. You can
- still link to them though. See %URI.DisableExternalResources for why
- this might be a good idea.
-
-
- Note: While this directive has been available since 1.3.0,
- it didn't actually start doing anything until 4.2.0.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.Host.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.Host.txt
deleted file mode 100644
index ee83b121..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.Host.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-URI.Host
-TYPE: string/null
-VERSION: 1.2.0
-DEFAULT: NULL
---DESCRIPTION--
-
-
- Defines the domain name of the server, so we can determine whether or
- an absolute URI is from your website or not. Not strictly necessary,
- as users should be using relative URIs to reference resources on your
- website. It will, however, let you use absolute URIs to link to
- subdomains of the domain you post here: i.e. example.com will allow
- sub.example.com. However, higher up domains will still be excluded:
- if you set %URI.Host to sub.example.com, example.com will be blocked.
- Note: This directive overrides %URI.Base because
- a given page may be on a sub-domain, but you wish HTML Purifier to be
- more relaxed and allow some of the parent domains too.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.HostBlacklist.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.HostBlacklist.txt
deleted file mode 100644
index 0b6df762..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.HostBlacklist.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-URI.HostBlacklist
-TYPE: list
-VERSION: 1.3.0
-DEFAULT: array()
---DESCRIPTION--
-List of strings that are forbidden in the host of any URI. Use it to kill
-domain names of spam, etc. Note that it will catch anything in the domain,
-so moo.com will catch moo.com.example.com .
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.MakeAbsolute.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.MakeAbsolute.txt
deleted file mode 100644
index 4214900a..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.MakeAbsolute.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-URI.MakeAbsolute
-TYPE: bool
-VERSION: 2.1.0
-DEFAULT: false
---DESCRIPTION--
-
-
- Converts all URIs into absolute forms. This is useful when the HTML
- being filtered assumes a specific base path, but will actually be
- viewed in a different context (and setting an alternate base URI is
- not possible). %URI.Base must be set for this directive to work.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.Munge.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.Munge.txt
deleted file mode 100644
index 58c81dcc..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.Munge.txt
+++ /dev/null
@@ -1,83 +0,0 @@
-URI.Munge
-TYPE: string/null
-VERSION: 1.3.0
-DEFAULT: NULL
---DESCRIPTION--
-
-
- Munges all browsable (usually http, https and ftp)
- absolute URIs into another URI, usually a URI redirection service.
- This directive accepts a URI, formatted with a %s where
- the url-encoded original URI should be inserted (sample:
- http://www.google.com/url?q=%s).
-
-
- Uses for this directive:
-
-
-
- Prevent PageRank leaks, while being fairly transparent
- to users (you may also want to add some client side JavaScript to
- override the text in the statusbar). Notice :
- Many security experts believe that this form of protection does not deter spam-bots.
-
-
- Redirect users to a splash page telling them they are leaving your
- website. While this is poor usability practice, it is often mandated
- in corporate environments.
-
-
-
- Prior to HTML Purifier 3.1.1, this directive also enabled the munging
- of browsable external resources, which could break things if your redirection
- script was a splash page or used meta tags. To revert to
- previous behavior, please use %URI.MungeResources.
-
-
- You may want to also use %URI.MungeSecretKey along with this directive
- in order to enforce what URIs your redirector script allows. Open
- redirector scripts can be a security risk and negatively affect the
- reputation of your domain name.
-
-
- Starting with HTML Purifier 3.1.1, there is also these substitutions:
-
-
-
-
- Key
- Description
- Example <a href="">
-
-
-
-
- %r
- 1 - The URI embeds a resource (blank) - The URI is merely a link
-
-
-
- %n
- The name of the tag this URI came from
- a
-
-
- %m
- The name of the attribute this URI came from
- href
-
-
- %p
- The name of the CSS property this URI came from, or blank if irrelevant
-
-
-
-
-
- Admittedly, these letters are somewhat arbitrary; the only stipulation
- was that they couldn't be a through f. r is for resource (I would have preferred
- e, but you take what you can get), n is for name, m
- was picked because it came after n (and I couldn't use a), p is for
- property.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.MungeResources.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.MungeResources.txt
deleted file mode 100644
index 6fce0fdc..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.MungeResources.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-URI.MungeResources
-TYPE: bool
-VERSION: 3.1.1
-DEFAULT: false
---DESCRIPTION--
-
- If true, any URI munging directives like %URI.Munge
- will also apply to embedded resources, such as <img src="">.
- Be careful enabling this directive if you have a redirector script
- that does not use the Location HTTP header; all of your images
- and other embedded resources will break.
-
-
- Warning: It is strongly advised you use this in conjunction
- %URI.MungeSecretKey to mitigate the security risk of an open redirector.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.MungeSecretKey.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.MungeSecretKey.txt
deleted file mode 100644
index 1e17c1d4..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.MungeSecretKey.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-URI.MungeSecretKey
-TYPE: string/null
-VERSION: 3.1.1
-DEFAULT: NULL
---DESCRIPTION--
-
- This directive enables secure checksum generation along with %URI.Munge.
- It should be set to a secure key that is not shared with anyone else.
- The checksum can be placed in the URI using %t. Use of this checksum
- affords an additional level of protection by allowing a redirector
- to check if a URI has passed through HTML Purifier with this line:
-
-
-$checksum === hash_hmac("sha256", $url, $secret_key)
-
-
- If the output is TRUE, the redirector script should accept the URI.
-
-
-
- Please note that it would still be possible for an attacker to procure
- secure hashes en-mass by abusing your website's Preview feature or the
- like, but this service affords an additional level of protection
- that should be combined with website blacklisting.
-
-
-
- Remember this has no effect if %URI.Munge is not on.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.OverrideAllowedSchemes.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.OverrideAllowedSchemes.txt
deleted file mode 100644
index 23331a4e..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.OverrideAllowedSchemes.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-URI.OverrideAllowedSchemes
-TYPE: bool
-DEFAULT: true
---DESCRIPTION--
-If this is set to true (which it is by default), you can override
-%URI.AllowedSchemes by simply registering a HTMLPurifier_URIScheme to the
-registry. If false, you will also have to update that directive in order
-to add more schemes.
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.SafeIframeRegexp.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.SafeIframeRegexp.txt
deleted file mode 100644
index 79084832..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/URI.SafeIframeRegexp.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-URI.SafeIframeRegexp
-TYPE: string/null
-VERSION: 4.4.0
-DEFAULT: NULL
---DESCRIPTION--
-
- A PCRE regular expression that will be matched against an iframe URI. This is
- a relatively inflexible scheme, but works well enough for the most common
- use-case of iframes: embedded video. This directive only has an effect if
- %HTML.SafeIframe is enabled. Here are some example values:
-
-
- %^http://www.youtube.com/embed/% - Allow YouTube videos
- %^http://player.vimeo.com/video/% - Allow Vimeo videos
- %^http://(www.youtube.com/embed/|player.vimeo.com/video/)% - Allow both
-
-
- Note that this directive does not give you enough granularity to, say, disable
- all autoplay videos. Pipe up on the HTML Purifier forums if this
- is a capability you want.
-
---# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/info.ini b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/info.ini
deleted file mode 100644
index 5de4505e..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/info.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-name = "HTML Purifier"
-
-; vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ContentSets.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ContentSets.php
deleted file mode 100644
index 543e3f8f..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ContentSets.php
+++ /dev/null
@@ -1,170 +0,0 @@
- true) indexed by name.
- * @type array
- * @note This is in HTMLPurifier_HTMLDefinition->info_content_sets
- */
- public $lookup = array();
-
- /**
- * Synchronized list of defined content sets (keys of info).
- * @type array
- */
- protected $keys = array();
- /**
- * Synchronized list of defined content values (values of info).
- * @type array
- */
- protected $values = array();
-
- /**
- * Merges in module's content sets, expands identifiers in the content
- * sets and populates the keys, values and lookup member variables.
- * @param HTMLPurifier_HTMLModule[] $modules List of HTMLPurifier_HTMLModule
- */
- public function __construct($modules)
- {
- if (!is_array($modules)) {
- $modules = array($modules);
- }
- // populate content_sets based on module hints
- // sorry, no way of overloading
- foreach ($modules as $module) {
- foreach ($module->content_sets as $key => $value) {
- $temp = $this->convertToLookup($value);
- if (isset($this->lookup[$key])) {
- // add it into the existing content set
- $this->lookup[$key] = array_merge($this->lookup[$key], $temp);
- } else {
- $this->lookup[$key] = $temp;
- }
- }
- }
- $old_lookup = false;
- while ($old_lookup !== $this->lookup) {
- $old_lookup = $this->lookup;
- foreach ($this->lookup as $i => $set) {
- $add = array();
- foreach ($set as $element => $x) {
- if (isset($this->lookup[$element])) {
- $add += $this->lookup[$element];
- unset($this->lookup[$i][$element]);
- }
- }
- $this->lookup[$i] += $add;
- }
- }
-
- foreach ($this->lookup as $key => $lookup) {
- $this->info[$key] = implode(' | ', array_keys($lookup));
- }
- $this->keys = array_keys($this->info);
- $this->values = array_values($this->info);
- }
-
- /**
- * Accepts a definition; generates and assigns a ChildDef for it
- * @param HTMLPurifier_ElementDef $def HTMLPurifier_ElementDef reference
- * @param HTMLPurifier_HTMLModule $module Module that defined the ElementDef
- */
- public function generateChildDef(&$def, $module)
- {
- if (!empty($def->child)) { // already done!
- return;
- }
- $content_model = $def->content_model;
- if (is_string($content_model)) {
- // Assume that $this->keys is alphanumeric
- $def->content_model = preg_replace_callback(
- '/\b(' . implode('|', $this->keys) . ')\b/',
- array($this, 'generateChildDefCallback'),
- $content_model
- );
- //$def->content_model = str_replace(
- // $this->keys, $this->values, $content_model);
- }
- $def->child = $this->getChildDef($def, $module);
- }
-
- public function generateChildDefCallback($matches)
- {
- return $this->info[$matches[0]];
- }
-
- /**
- * Instantiates a ChildDef based on content_model and content_model_type
- * member variables in HTMLPurifier_ElementDef
- * @note This will also defer to modules for custom HTMLPurifier_ChildDef
- * subclasses that need content set expansion
- * @param HTMLPurifier_ElementDef $def HTMLPurifier_ElementDef to have ChildDef extracted
- * @param HTMLPurifier_HTMLModule $module Module that defined the ElementDef
- * @return HTMLPurifier_ChildDef corresponding to ElementDef
- */
- public function getChildDef($def, $module)
- {
- $value = $def->content_model;
- if (is_object($value)) {
- trigger_error(
- 'Literal object child definitions should be stored in '.
- 'ElementDef->child not ElementDef->content_model',
- E_USER_NOTICE
- );
- return $value;
- }
- switch ($def->content_model_type) {
- case 'required':
- return new HTMLPurifier_ChildDef_Required($value);
- case 'optional':
- return new HTMLPurifier_ChildDef_Optional($value);
- case 'empty':
- return new HTMLPurifier_ChildDef_Empty();
- case 'custom':
- return new HTMLPurifier_ChildDef_Custom($value);
- }
- // defer to its module
- $return = false;
- if ($module->defines_child_def) { // save a func call
- $return = $module->getChildDef($def);
- }
- if ($return !== false) {
- return $return;
- }
- // error-out
- trigger_error(
- 'Could not determine which ChildDef class to instantiate',
- E_USER_ERROR
- );
- return false;
- }
-
- /**
- * Converts a string list of elements separated by pipes into
- * a lookup array.
- * @param string $string List of elements
- * @return array Lookup array of elements
- */
- protected function convertToLookup($string)
- {
- $array = explode('|', str_replace(' ', '', $string));
- $ret = array();
- foreach ($array as $k) {
- $ret[$k] = true;
- }
- return $ret;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Context.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Context.php
deleted file mode 100644
index 00e509c8..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Context.php
+++ /dev/null
@@ -1,95 +0,0 @@
-_storage)) {
- trigger_error(
- "Name $name produces collision, cannot re-register",
- E_USER_ERROR
- );
- return;
- }
- $this->_storage[$name] =& $ref;
- }
-
- /**
- * Retrieves a variable reference from the context.
- * @param string $name String name
- * @param bool $ignore_error Boolean whether or not to ignore error
- * @return mixed
- */
- public function &get($name, $ignore_error = false)
- {
- if (!array_key_exists($name, $this->_storage)) {
- if (!$ignore_error) {
- trigger_error(
- "Attempted to retrieve non-existent variable $name",
- E_USER_ERROR
- );
- }
- $var = null; // so we can return by reference
- return $var;
- }
- return $this->_storage[$name];
- }
-
- /**
- * Destroys a variable in the context.
- * @param string $name String name
- */
- public function destroy($name)
- {
- if (!array_key_exists($name, $this->_storage)) {
- trigger_error(
- "Attempted to destroy non-existent variable $name",
- E_USER_ERROR
- );
- return;
- }
- unset($this->_storage[$name]);
- }
-
- /**
- * Checks whether or not the variable exists.
- * @param string $name String name
- * @return bool
- */
- public function exists($name)
- {
- return array_key_exists($name, $this->_storage);
- }
-
- /**
- * Loads a series of variables from an associative array
- * @param array $context_array Assoc array of variables to load
- */
- public function loadArray($context_array)
- {
- foreach ($context_array as $key => $discard) {
- $this->register($key, $context_array[$key]);
- }
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Definition.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Definition.php
deleted file mode 100644
index bc6d4336..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Definition.php
+++ /dev/null
@@ -1,55 +0,0 @@
-setup) {
- return;
- }
- $this->setup = true;
- $this->doSetup($config);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache.php
deleted file mode 100644
index 9aa8ff35..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache.php
+++ /dev/null
@@ -1,129 +0,0 @@
-type = $type;
- }
-
- /**
- * Generates a unique identifier for a particular configuration
- * @param HTMLPurifier_Config $config Instance of HTMLPurifier_Config
- * @return string
- */
- public function generateKey($config)
- {
- return $config->version . ',' . // possibly replace with function calls
- $config->getBatchSerial($this->type) . ',' .
- $config->get($this->type . '.DefinitionRev');
- }
-
- /**
- * Tests whether or not a key is old with respect to the configuration's
- * version and revision number.
- * @param string $key Key to test
- * @param HTMLPurifier_Config $config Instance of HTMLPurifier_Config to test against
- * @return bool
- */
- public function isOld($key, $config)
- {
- if (substr_count($key, ',') < 2) {
- return true;
- }
- list($version, $hash, $revision) = explode(',', $key, 3);
- $compare = version_compare($version, $config->version);
- // version mismatch, is always old
- if ($compare != 0) {
- return true;
- }
- // versions match, ids match, check revision number
- if ($hash == $config->getBatchSerial($this->type) &&
- $revision < $config->get($this->type . '.DefinitionRev')) {
- return true;
- }
- return false;
- }
-
- /**
- * Checks if a definition's type jives with the cache's type
- * @note Throws an error on failure
- * @param HTMLPurifier_Definition $def Definition object to check
- * @return bool true if good, false if not
- */
- public function checkDefType($def)
- {
- if ($def->type !== $this->type) {
- trigger_error("Cannot use definition of type {$def->type} in cache for {$this->type}");
- return false;
- }
- return true;
- }
-
- /**
- * Adds a definition object to the cache
- * @param HTMLPurifier_Definition $def
- * @param HTMLPurifier_Config $config
- */
- abstract public function add($def, $config);
-
- /**
- * Unconditionally saves a definition object to the cache
- * @param HTMLPurifier_Definition $def
- * @param HTMLPurifier_Config $config
- */
- abstract public function set($def, $config);
-
- /**
- * Replace an object in the cache
- * @param HTMLPurifier_Definition $def
- * @param HTMLPurifier_Config $config
- */
- abstract public function replace($def, $config);
-
- /**
- * Retrieves a definition object from the cache
- * @param HTMLPurifier_Config $config
- */
- abstract public function get($config);
-
- /**
- * Removes a definition object to the cache
- * @param HTMLPurifier_Config $config
- */
- abstract public function remove($config);
-
- /**
- * Clears all objects from cache
- * @param HTMLPurifier_Config $config
- */
- abstract public function flush($config);
-
- /**
- * Clears all expired (older version or revision) objects from cache
- * @note Be careful implementing this method as flush. Flush must
- * not interfere with other Definition types, and cleanup()
- * should not be repeatedly called by userland code.
- * @param HTMLPurifier_Config $config
- */
- abstract public function cleanup($config);
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Decorator.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Decorator.php
deleted file mode 100644
index b57a51b6..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Decorator.php
+++ /dev/null
@@ -1,112 +0,0 @@
-copy();
- // reference is necessary for mocks in PHP 4
- $decorator->cache =& $cache;
- $decorator->type = $cache->type;
- return $decorator;
- }
-
- /**
- * Cross-compatible clone substitute
- * @return HTMLPurifier_DefinitionCache_Decorator
- */
- public function copy()
- {
- return new HTMLPurifier_DefinitionCache_Decorator();
- }
-
- /**
- * @param HTMLPurifier_Definition $def
- * @param HTMLPurifier_Config $config
- * @return mixed
- */
- public function add($def, $config)
- {
- return $this->cache->add($def, $config);
- }
-
- /**
- * @param HTMLPurifier_Definition $def
- * @param HTMLPurifier_Config $config
- * @return mixed
- */
- public function set($def, $config)
- {
- return $this->cache->set($def, $config);
- }
-
- /**
- * @param HTMLPurifier_Definition $def
- * @param HTMLPurifier_Config $config
- * @return mixed
- */
- public function replace($def, $config)
- {
- return $this->cache->replace($def, $config);
- }
-
- /**
- * @param HTMLPurifier_Config $config
- * @return mixed
- */
- public function get($config)
- {
- return $this->cache->get($config);
- }
-
- /**
- * @param HTMLPurifier_Config $config
- * @return mixed
- */
- public function remove($config)
- {
- return $this->cache->remove($config);
- }
-
- /**
- * @param HTMLPurifier_Config $config
- * @return mixed
- */
- public function flush($config)
- {
- return $this->cache->flush($config);
- }
-
- /**
- * @param HTMLPurifier_Config $config
- * @return mixed
- */
- public function cleanup($config)
- {
- return $this->cache->cleanup($config);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Decorator/Cleanup.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Decorator/Cleanup.php
deleted file mode 100644
index 4991777c..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Decorator/Cleanup.php
+++ /dev/null
@@ -1,78 +0,0 @@
-definitions[$this->generateKey($config)] = $def;
- }
- return $status;
- }
-
- /**
- * @param HTMLPurifier_Definition $def
- * @param HTMLPurifier_Config $config
- * @return mixed
- */
- public function set($def, $config)
- {
- $status = parent::set($def, $config);
- if ($status) {
- $this->definitions[$this->generateKey($config)] = $def;
- }
- return $status;
- }
-
- /**
- * @param HTMLPurifier_Definition $def
- * @param HTMLPurifier_Config $config
- * @return mixed
- */
- public function replace($def, $config)
- {
- $status = parent::replace($def, $config);
- if ($status) {
- $this->definitions[$this->generateKey($config)] = $def;
- }
- return $status;
- }
-
- /**
- * @param HTMLPurifier_Config $config
- * @return mixed
- */
- public function get($config)
- {
- $key = $this->generateKey($config);
- if (isset($this->definitions[$key])) {
- return $this->definitions[$key];
- }
- $this->definitions[$key] = parent::get($config);
- return $this->definitions[$key];
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Decorator/Template.php.in b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Decorator/Template.php.in
deleted file mode 100644
index b1fec8d3..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Decorator/Template.php.in
+++ /dev/null
@@ -1,82 +0,0 @@
-checkDefType($def)) {
- return;
- }
- $file = $this->generateFilePath($config);
- if (file_exists($file)) {
- return false;
- }
- if (!$this->_prepareDir($config)) {
- return false;
- }
- return $this->_write($file, serialize($def), $config);
- }
-
- /**
- * @param HTMLPurifier_Definition $def
- * @param HTMLPurifier_Config $config
- * @return int|bool
- */
- public function set($def, $config)
- {
- if (!$this->checkDefType($def)) {
- return;
- }
- $file = $this->generateFilePath($config);
- if (!$this->_prepareDir($config)) {
- return false;
- }
- return $this->_write($file, serialize($def), $config);
- }
-
- /**
- * @param HTMLPurifier_Definition $def
- * @param HTMLPurifier_Config $config
- * @return int|bool
- */
- public function replace($def, $config)
- {
- if (!$this->checkDefType($def)) {
- return;
- }
- $file = $this->generateFilePath($config);
- if (!file_exists($file)) {
- return false;
- }
- if (!$this->_prepareDir($config)) {
- return false;
- }
- return $this->_write($file, serialize($def), $config);
- }
-
- /**
- * @param HTMLPurifier_Config $config
- * @return bool|HTMLPurifier_Config
- */
- public function get($config)
- {
- $file = $this->generateFilePath($config);
- if (!file_exists($file)) {
- return false;
- }
- return unserialize(file_get_contents($file));
- }
-
- /**
- * @param HTMLPurifier_Config $config
- * @return bool
- */
- public function remove($config)
- {
- $file = $this->generateFilePath($config);
- if (!file_exists($file)) {
- return false;
- }
- return unlink($file);
- }
-
- /**
- * @param HTMLPurifier_Config $config
- * @return bool
- */
- public function flush($config)
- {
- if (!$this->_prepareDir($config)) {
- return false;
- }
- $dir = $this->generateDirectoryPath($config);
- $dh = opendir($dir);
- // Apparently, on some versions of PHP, readdir will return
- // an empty string if you pass an invalid argument to readdir.
- // So you need this test. See #49.
- if (false === $dh) {
- return false;
- }
- while (false !== ($filename = readdir($dh))) {
- if (empty($filename)) {
- continue;
- }
- if ($filename[0] === '.') {
- continue;
- }
- unlink($dir . '/' . $filename);
- }
- closedir($dh);
- return true;
- }
-
- /**
- * @param HTMLPurifier_Config $config
- * @return bool
- */
- public function cleanup($config)
- {
- if (!$this->_prepareDir($config)) {
- return false;
- }
- $dir = $this->generateDirectoryPath($config);
- $dh = opendir($dir);
- // See #49 (and above).
- if (false === $dh) {
- return false;
- }
- while (false !== ($filename = readdir($dh))) {
- if (empty($filename)) {
- continue;
- }
- if ($filename[0] === '.') {
- continue;
- }
- $key = substr($filename, 0, strlen($filename) - 4);
- if ($this->isOld($key, $config)) {
- unlink($dir . '/' . $filename);
- }
- }
- closedir($dh);
- return true;
- }
-
- /**
- * Generates the file path to the serial file corresponding to
- * the configuration and definition name
- * @param HTMLPurifier_Config $config
- * @return string
- * @todo Make protected
- */
- public function generateFilePath($config)
- {
- $key = $this->generateKey($config);
- return $this->generateDirectoryPath($config) . '/' . $key . '.ser';
- }
-
- /**
- * Generates the path to the directory contain this cache's serial files
- * @param HTMLPurifier_Config $config
- * @return string
- * @note No trailing slash
- * @todo Make protected
- */
- public function generateDirectoryPath($config)
- {
- $base = $this->generateBaseDirectoryPath($config);
- return $base . '/' . $this->type;
- }
-
- /**
- * Generates path to base directory that contains all definition type
- * serials
- * @param HTMLPurifier_Config $config
- * @return mixed|string
- * @todo Make protected
- */
- public function generateBaseDirectoryPath($config)
- {
- $base = $config->get('Cache.SerializerPath');
- $base = is_null($base) ? HTMLPURIFIER_PREFIX . '/HTMLPurifier/DefinitionCache/Serializer' : $base;
- return $base;
- }
-
- /**
- * Convenience wrapper function for file_put_contents
- * @param string $file File name to write to
- * @param string $data Data to write into file
- * @param HTMLPurifier_Config $config
- * @return int|bool Number of bytes written if success, or false if failure.
- */
- private function _write($file, $data, $config)
- {
- $result = file_put_contents($file, $data);
- if ($result !== false) {
- // set permissions of the new file (no execute)
- $chmod = $config->get('Cache.SerializerPermissions');
- if ($chmod !== null) {
- chmod($file, $chmod & 0666);
- }
- }
- return $result;
- }
-
- /**
- * Prepares the directory that this type stores the serials in
- * @param HTMLPurifier_Config $config
- * @return bool True if successful
- */
- private function _prepareDir($config)
- {
- $directory = $this->generateDirectoryPath($config);
- $chmod = $config->get('Cache.SerializerPermissions');
- if ($chmod === null) {
- if (!@mkdir($directory) && !is_dir($directory)) {
- trigger_error(
- 'Could not create directory ' . $directory . '',
- E_USER_WARNING
- );
- return false;
- }
- return true;
- }
- if (!is_dir($directory)) {
- $base = $this->generateBaseDirectoryPath($config);
- if (!is_dir($base)) {
- trigger_error(
- 'Base directory ' . $base . ' does not exist,
- please create or change using %Cache.SerializerPath',
- E_USER_WARNING
- );
- return false;
- } elseif (!$this->_testPermissions($base, $chmod)) {
- return false;
- }
- if (!@mkdir($directory, $chmod) && !is_dir($directory)) {
- trigger_error(
- 'Could not create directory ' . $directory . '',
- E_USER_WARNING
- );
- return false;
- }
- if (!$this->_testPermissions($directory, $chmod)) {
- return false;
- }
- } elseif (!$this->_testPermissions($directory, $chmod)) {
- return false;
- }
- return true;
- }
-
- /**
- * Tests permissions on a directory and throws out friendly
- * error messages and attempts to chmod it itself if possible
- * @param string $dir Directory path
- * @param int $chmod Permissions
- * @return bool True if directory is writable
- */
- private function _testPermissions($dir, $chmod)
- {
- // early abort, if it is writable, everything is hunky-dory
- if (is_writable($dir)) {
- return true;
- }
- if (!is_dir($dir)) {
- // generally, you'll want to handle this beforehand
- // so a more specific error message can be given
- trigger_error(
- 'Directory ' . $dir . ' does not exist',
- E_USER_WARNING
- );
- return false;
- }
- if (function_exists('posix_getuid') && $chmod !== null) {
- // POSIX system, we can give more specific advice
- if (fileowner($dir) === posix_getuid()) {
- // we can chmod it ourselves
- $chmod = $chmod | 0700;
- if (chmod($dir, $chmod)) {
- return true;
- }
- } elseif (filegroup($dir) === posix_getgid()) {
- $chmod = $chmod | 0070;
- } else {
- // PHP's probably running as nobody, so we'll
- // need to give global permissions
- $chmod = $chmod | 0777;
- }
- trigger_error(
- 'Directory ' . $dir . ' not writable, ' .
- 'please chmod to ' . decoct($chmod),
- E_USER_WARNING
- );
- } else {
- // generic error message
- trigger_error(
- 'Directory ' . $dir . ' not writable, ' .
- 'please alter file permissions',
- E_USER_WARNING
- );
- }
- return false;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer/README b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer/README
deleted file mode 100644
index 2e35c1c3..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer/README
+++ /dev/null
@@ -1,3 +0,0 @@
-This is a dummy file to prevent Git from ignoring this empty directory.
-
- vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCacheFactory.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCacheFactory.php
deleted file mode 100644
index fd1cc9be..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCacheFactory.php
+++ /dev/null
@@ -1,106 +0,0 @@
- array());
-
- /**
- * @type array
- */
- protected $implementations = array();
-
- /**
- * @type HTMLPurifier_DefinitionCache_Decorator[]
- */
- protected $decorators = array();
-
- /**
- * Initialize default decorators
- */
- public function setup()
- {
- $this->addDecorator('Cleanup');
- }
-
- /**
- * Retrieves an instance of global definition cache factory.
- * @param HTMLPurifier_DefinitionCacheFactory $prototype
- * @return HTMLPurifier_DefinitionCacheFactory
- */
- public static function instance($prototype = null)
- {
- static $instance;
- if ($prototype !== null) {
- $instance = $prototype;
- } elseif ($instance === null || $prototype === true) {
- $instance = new HTMLPurifier_DefinitionCacheFactory();
- $instance->setup();
- }
- return $instance;
- }
-
- /**
- * Registers a new definition cache object
- * @param string $short Short name of cache object, for reference
- * @param string $long Full class name of cache object, for construction
- */
- public function register($short, $long)
- {
- $this->implementations[$short] = $long;
- }
-
- /**
- * Factory method that creates a cache object based on configuration
- * @param string $type Name of definitions handled by cache
- * @param HTMLPurifier_Config $config Config instance
- * @return mixed
- */
- public function create($type, $config)
- {
- $method = $config->get('Cache.DefinitionImpl');
- if ($method === null) {
- return new HTMLPurifier_DefinitionCache_Null($type);
- }
- if (!empty($this->caches[$method][$type])) {
- return $this->caches[$method][$type];
- }
- if (isset($this->implementations[$method]) &&
- class_exists($class = $this->implementations[$method], false)) {
- $cache = new $class($type);
- } else {
- if ($method != 'Serializer') {
- trigger_error("Unrecognized DefinitionCache $method, using Serializer instead", E_USER_WARNING);
- }
- $cache = new HTMLPurifier_DefinitionCache_Serializer($type);
- }
- foreach ($this->decorators as $decorator) {
- $new_cache = $decorator->decorate($cache);
- // prevent infinite recursion in PHP 4
- unset($cache);
- $cache = $new_cache;
- }
- $this->caches[$method][$type] = $cache;
- return $this->caches[$method][$type];
- }
-
- /**
- * Registers a decorator to add to all new cache objects
- * @param HTMLPurifier_DefinitionCache_Decorator|string $decorator An instance or the name of a decorator
- */
- public function addDecorator($decorator)
- {
- if (is_string($decorator)) {
- $class = "HTMLPurifier_DefinitionCache_Decorator_$decorator";
- $decorator = new $class;
- }
- $this->decorators[$decorator->name] = $decorator;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Doctype.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Doctype.php
deleted file mode 100644
index 4acd06e5..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Doctype.php
+++ /dev/null
@@ -1,73 +0,0 @@
-renderDoctype.
- * If structure changes, please update that function.
- */
-class HTMLPurifier_Doctype
-{
- /**
- * Full name of doctype
- * @type string
- */
- public $name;
-
- /**
- * List of standard modules (string identifiers or literal objects)
- * that this doctype uses
- * @type array
- */
- public $modules = array();
-
- /**
- * List of modules to use for tidying up code
- * @type array
- */
- public $tidyModules = array();
-
- /**
- * Is the language derived from XML (i.e. XHTML)?
- * @type bool
- */
- public $xml = true;
-
- /**
- * List of aliases for this doctype
- * @type array
- */
- public $aliases = array();
-
- /**
- * Public DTD identifier
- * @type string
- */
- public $dtdPublic;
-
- /**
- * System DTD identifier
- * @type string
- */
- public $dtdSystem;
-
- public function __construct(
- $name = null,
- $xml = true,
- $modules = array(),
- $tidyModules = array(),
- $aliases = array(),
- $dtd_public = null,
- $dtd_system = null
- ) {
- $this->name = $name;
- $this->xml = $xml;
- $this->modules = $modules;
- $this->tidyModules = $tidyModules;
- $this->aliases = $aliases;
- $this->dtdPublic = $dtd_public;
- $this->dtdSystem = $dtd_system;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DoctypeRegistry.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DoctypeRegistry.php
deleted file mode 100644
index acc1d64a..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DoctypeRegistry.php
+++ /dev/null
@@ -1,142 +0,0 @@
-doctypes[$doctype->name] = $doctype;
- $name = $doctype->name;
- // hookup aliases
- foreach ($doctype->aliases as $alias) {
- if (isset($this->doctypes[$alias])) {
- continue;
- }
- $this->aliases[$alias] = $name;
- }
- // remove old aliases
- if (isset($this->aliases[$name])) {
- unset($this->aliases[$name]);
- }
- return $doctype;
- }
-
- /**
- * Retrieves reference to a doctype of a certain name
- * @note This function resolves aliases
- * @note When possible, use the more fully-featured make()
- * @param string $doctype Name of doctype
- * @return HTMLPurifier_Doctype Editable doctype object
- */
- public function get($doctype)
- {
- if (isset($this->aliases[$doctype])) {
- $doctype = $this->aliases[$doctype];
- }
- if (!isset($this->doctypes[$doctype])) {
- trigger_error('Doctype ' . htmlspecialchars($doctype) . ' does not exist', E_USER_ERROR);
- $anon = new HTMLPurifier_Doctype($doctype);
- return $anon;
- }
- return $this->doctypes[$doctype];
- }
-
- /**
- * Creates a doctype based on a configuration object,
- * will perform initialization on the doctype
- * @note Use this function to get a copy of doctype that config
- * can hold on to (this is necessary in order to tell
- * Generator whether or not the current document is XML
- * based or not).
- * @param HTMLPurifier_Config $config
- * @return HTMLPurifier_Doctype
- */
- public function make($config)
- {
- return clone $this->get($this->getDoctypeFromConfig($config));
- }
-
- /**
- * Retrieves the doctype from the configuration object
- * @param HTMLPurifier_Config $config
- * @return string
- */
- public function getDoctypeFromConfig($config)
- {
- // recommended test
- $doctype = $config->get('HTML.Doctype');
- if (!empty($doctype)) {
- return $doctype;
- }
- $doctype = $config->get('HTML.CustomDoctype');
- if (!empty($doctype)) {
- return $doctype;
- }
- // backwards-compatibility
- if ($config->get('HTML.XHTML')) {
- $doctype = 'XHTML 1.0';
- } else {
- $doctype = 'HTML 4.01';
- }
- if ($config->get('HTML.Strict')) {
- $doctype .= ' Strict';
- } else {
- $doctype .= ' Transitional';
- }
- return $doctype;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ElementDef.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ElementDef.php
deleted file mode 100644
index d5311ced..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ElementDef.php
+++ /dev/null
@@ -1,216 +0,0 @@
-setup(), this array may also
- * contain an array at index 0 that indicates which attribute
- * collections to load into the full array. It may also
- * contain string indentifiers in lieu of HTMLPurifier_AttrDef,
- * see HTMLPurifier_AttrTypes on how they are expanded during
- * HTMLPurifier_HTMLDefinition->setup() processing.
- */
- public $attr = array();
-
- // XXX: Design note: currently, it's not possible to override
- // previously defined AttrTransforms without messing around with
- // the final generated config. This is by design; a previous version
- // used an associated list of attr_transform, but it was extremely
- // easy to accidentally override other attribute transforms by
- // forgetting to specify an index (and just using 0.) While we
- // could check this by checking the index number and complaining,
- // there is a second problem which is that it is not at all easy to
- // tell when something is getting overridden. Combine this with a
- // codebase where this isn't really being used, and it's perfect for
- // nuking.
-
- /**
- * List of tags HTMLPurifier_AttrTransform to be done before validation.
- * @type array
- */
- public $attr_transform_pre = array();
-
- /**
- * List of tags HTMLPurifier_AttrTransform to be done after validation.
- * @type array
- */
- public $attr_transform_post = array();
-
- /**
- * HTMLPurifier_ChildDef of this tag.
- * @type HTMLPurifier_ChildDef
- */
- public $child;
-
- /**
- * Abstract string representation of internal ChildDef rules.
- * @see HTMLPurifier_ContentSets for how this is parsed and then transformed
- * into an HTMLPurifier_ChildDef.
- * @warning This is a temporary variable that is not available after
- * being processed by HTMLDefinition
- * @type string
- */
- public $content_model;
-
- /**
- * Value of $child->type, used to determine which ChildDef to use,
- * used in combination with $content_model.
- * @warning This must be lowercase
- * @warning This is a temporary variable that is not available after
- * being processed by HTMLDefinition
- * @type string
- */
- public $content_model_type;
-
- /**
- * Does the element have a content model (#PCDATA | Inline)*? This
- * is important for chameleon ins and del processing in
- * HTMLPurifier_ChildDef_Chameleon. Dynamically set: modules don't
- * have to worry about this one.
- * @type bool
- */
- public $descendants_are_inline = false;
-
- /**
- * List of the names of required attributes this element has.
- * Dynamically populated by HTMLPurifier_HTMLDefinition::getElement()
- * @type array
- */
- public $required_attr = array();
-
- /**
- * Lookup table of tags excluded from all descendants of this tag.
- * @type array
- * @note SGML permits exclusions for all descendants, but this is
- * not possible with DTDs or XML Schemas. W3C has elected to
- * use complicated compositions of content_models to simulate
- * exclusion for children, but we go the simpler, SGML-style
- * route of flat-out exclusions, which correctly apply to
- * all descendants and not just children. Note that the XHTML
- * Modularization Abstract Modules are blithely unaware of such
- * distinctions.
- */
- public $excludes = array();
-
- /**
- * This tag is explicitly auto-closed by the following tags.
- * @type array
- */
- public $autoclose = array();
-
- /**
- * If a foreign element is found in this element, test if it is
- * allowed by this sub-element; if it is, instead of closing the
- * current element, place it inside this element.
- * @type string
- */
- public $wrap;
-
- /**
- * Whether or not this is a formatting element affected by the
- * "Active Formatting Elements" algorithm.
- * @type bool
- */
- public $formatting;
-
- /**
- * Low-level factory constructor for creating new standalone element defs
- */
- public static function create($content_model, $content_model_type, $attr)
- {
- $def = new HTMLPurifier_ElementDef();
- $def->content_model = $content_model;
- $def->content_model_type = $content_model_type;
- $def->attr = $attr;
- return $def;
- }
-
- /**
- * Merges the values of another element definition into this one.
- * Values from the new element def take precedence if a value is
- * not mergeable.
- * @param HTMLPurifier_ElementDef $def
- */
- public function mergeIn($def)
- {
- // later keys takes precedence
- foreach ($def->attr as $k => $v) {
- if ($k === 0) {
- // merge in the includes
- // sorry, no way to override an include
- foreach ($v as $v2) {
- $this->attr[0][] = $v2;
- }
- continue;
- }
- if ($v === false) {
- if (isset($this->attr[$k])) {
- unset($this->attr[$k]);
- }
- continue;
- }
- $this->attr[$k] = $v;
- }
- $this->_mergeAssocArray($this->excludes, $def->excludes);
- $this->attr_transform_pre = array_merge($this->attr_transform_pre, $def->attr_transform_pre);
- $this->attr_transform_post = array_merge($this->attr_transform_post, $def->attr_transform_post);
-
- if (!empty($def->content_model)) {
- $this->content_model =
- str_replace("#SUPER", $this->content_model, $def->content_model);
- $this->child = false;
- }
- if (!empty($def->content_model_type)) {
- $this->content_model_type = $def->content_model_type;
- $this->child = false;
- }
- if (!is_null($def->child)) {
- $this->child = $def->child;
- }
- if (!is_null($def->formatting)) {
- $this->formatting = $def->formatting;
- }
- if ($def->descendants_are_inline) {
- $this->descendants_are_inline = $def->descendants_are_inline;
- }
- }
-
- /**
- * Merges one array into another, removes values which equal false
- * @param $a1 Array by reference that is merged into
- * @param $a2 Array that merges into $a1
- */
- private function _mergeAssocArray(&$a1, $a2)
- {
- foreach ($a2 as $k => $v) {
- if ($v === false) {
- if (isset($a1[$k])) {
- unset($a1[$k]);
- }
- continue;
- }
- $a1[$k] = $v;
- }
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Encoder.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Encoder.php
deleted file mode 100644
index 40a24266..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Encoder.php
+++ /dev/null
@@ -1,617 +0,0 @@
-= $c) {
- $r .= self::unsafeIconv($in, $out, substr($text, $i));
- break;
- }
- // wibble the boundary
- if (0x80 != (0xC0 & ord($text[$i + $max_chunk_size]))) {
- $chunk_size = $max_chunk_size;
- } elseif (0x80 != (0xC0 & ord($text[$i + $max_chunk_size - 1]))) {
- $chunk_size = $max_chunk_size - 1;
- } elseif (0x80 != (0xC0 & ord($text[$i + $max_chunk_size - 2]))) {
- $chunk_size = $max_chunk_size - 2;
- } elseif (0x80 != (0xC0 & ord($text[$i + $max_chunk_size - 3]))) {
- $chunk_size = $max_chunk_size - 3;
- } else {
- return false; // rather confusing UTF-8...
- }
- $chunk = substr($text, $i, $chunk_size); // substr doesn't mind overlong lengths
- $r .= self::unsafeIconv($in, $out, $chunk);
- $i += $chunk_size;
- }
- return $r;
- } else {
- return false;
- }
- } else {
- return false;
- }
- }
-
- /**
- * Cleans a UTF-8 string for well-formedness and SGML validity
- *
- * It will parse according to UTF-8 and return a valid UTF8 string, with
- * non-SGML codepoints excluded.
- *
- * Specifically, it will permit:
- * \x{9}\x{A}\x{D}\x{20}-\x{7E}\x{A0}-\x{D7FF}\x{E000}-\x{FFFD}\x{10000}-\x{10FFFF}
- * Source: https://www.w3.org/TR/REC-xml/#NT-Char
- * Arguably this function should be modernized to the HTML5 set
- * of allowed characters:
- * https://www.w3.org/TR/html5/syntax.html#preprocessing-the-input-stream
- * which simultaneously expand and restrict the set of allowed characters.
- *
- * @param string $str The string to clean
- * @param bool $force_php
- * @return string
- *
- * @note Just for reference, the non-SGML code points are 0 to 31 and
- * 127 to 159, inclusive. However, we allow code points 9, 10
- * and 13, which are the tab, line feed and carriage return
- * respectively. 128 and above the code points map to multibyte
- * UTF-8 representations.
- *
- * @note Fallback code adapted from utf8ToUnicode by Henri Sivonen and
- * hsivonen@iki.fi at under the
- * LGPL license. Notes on what changed are inside, but in general,
- * the original code transformed UTF-8 text into an array of integer
- * Unicode codepoints. Understandably, transforming that back to
- * a string would be somewhat expensive, so the function was modded to
- * directly operate on the string. However, this discourages code
- * reuse, and the logic enumerated here would be useful for any
- * function that needs to be able to understand UTF-8 characters.
- * As of right now, only smart lossless character encoding converters
- * would need that, and I'm probably not going to implement them.
- */
- public static function cleanUTF8($str, $force_php = false)
- {
- // UTF-8 validity is checked since PHP 4.3.5
- // This is an optimization: if the string is already valid UTF-8, no
- // need to do PHP stuff. 99% of the time, this will be the case.
- if (preg_match(
- '/^[\x{9}\x{A}\x{D}\x{20}-\x{7E}\x{A0}-\x{D7FF}\x{E000}-\x{FFFD}\x{10000}-\x{10FFFF}]*$/Du',
- $str
- )) {
- return $str;
- }
-
- $mState = 0; // cached expected number of octets after the current octet
- // until the beginning of the next UTF8 character sequence
- $mUcs4 = 0; // cached Unicode character
- $mBytes = 1; // cached expected number of octets in the current sequence
-
- // original code involved an $out that was an array of Unicode
- // codepoints. Instead of having to convert back into UTF-8, we've
- // decided to directly append valid UTF-8 characters onto a string
- // $out once they're done. $char accumulates raw bytes, while $mUcs4
- // turns into the Unicode code point, so there's some redundancy.
-
- $out = '';
- $char = '';
-
- $len = strlen($str);
- for ($i = 0; $i < $len; $i++) {
- $in = ord($str[$i]);
- $char .= $str[$i]; // append byte to char
- if (0 == $mState) {
- // When mState is zero we expect either a US-ASCII character
- // or a multi-octet sequence.
- if (0 == (0x80 & ($in))) {
- // US-ASCII, pass straight through.
- if (($in <= 31 || $in == 127) &&
- !($in == 9 || $in == 13 || $in == 10) // save \r\t\n
- ) {
- // control characters, remove
- } else {
- $out .= $char;
- }
- // reset
- $char = '';
- $mBytes = 1;
- } elseif (0xC0 == (0xE0 & ($in))) {
- // First octet of 2 octet sequence
- $mUcs4 = ($in);
- $mUcs4 = ($mUcs4 & 0x1F) << 6;
- $mState = 1;
- $mBytes = 2;
- } elseif (0xE0 == (0xF0 & ($in))) {
- // First octet of 3 octet sequence
- $mUcs4 = ($in);
- $mUcs4 = ($mUcs4 & 0x0F) << 12;
- $mState = 2;
- $mBytes = 3;
- } elseif (0xF0 == (0xF8 & ($in))) {
- // First octet of 4 octet sequence
- $mUcs4 = ($in);
- $mUcs4 = ($mUcs4 & 0x07) << 18;
- $mState = 3;
- $mBytes = 4;
- } elseif (0xF8 == (0xFC & ($in))) {
- // First octet of 5 octet sequence.
- //
- // This is illegal because the encoded codepoint must be
- // either:
- // (a) not the shortest form or
- // (b) outside the Unicode range of 0-0x10FFFF.
- // Rather than trying to resynchronize, we will carry on
- // until the end of the sequence and let the later error
- // handling code catch it.
- $mUcs4 = ($in);
- $mUcs4 = ($mUcs4 & 0x03) << 24;
- $mState = 4;
- $mBytes = 5;
- } elseif (0xFC == (0xFE & ($in))) {
- // First octet of 6 octet sequence, see comments for 5
- // octet sequence.
- $mUcs4 = ($in);
- $mUcs4 = ($mUcs4 & 1) << 30;
- $mState = 5;
- $mBytes = 6;
- } else {
- // Current octet is neither in the US-ASCII range nor a
- // legal first octet of a multi-octet sequence.
- $mState = 0;
- $mUcs4 = 0;
- $mBytes = 1;
- $char = '';
- }
- } else {
- // When mState is non-zero, we expect a continuation of the
- // multi-octet sequence
- if (0x80 == (0xC0 & ($in))) {
- // Legal continuation.
- $shift = ($mState - 1) * 6;
- $tmp = $in;
- $tmp = ($tmp & 0x0000003F) << $shift;
- $mUcs4 |= $tmp;
-
- if (0 == --$mState) {
- // End of the multi-octet sequence. mUcs4 now contains
- // the final Unicode codepoint to be output
-
- // Check for illegal sequences and codepoints.
-
- // From Unicode 3.1, non-shortest form is illegal
- if (((2 == $mBytes) && ($mUcs4 < 0x0080)) ||
- ((3 == $mBytes) && ($mUcs4 < 0x0800)) ||
- ((4 == $mBytes) && ($mUcs4 < 0x10000)) ||
- (4 < $mBytes) ||
- // From Unicode 3.2, surrogate characters = illegal
- (($mUcs4 & 0xFFFFF800) == 0xD800) ||
- // Codepoints outside the Unicode range are illegal
- ($mUcs4 > 0x10FFFF)
- ) {
-
- } elseif (0xFEFF != $mUcs4 && // omit BOM
- // check for valid Char unicode codepoints
- (
- 0x9 == $mUcs4 ||
- 0xA == $mUcs4 ||
- 0xD == $mUcs4 ||
- (0x20 <= $mUcs4 && 0x7E >= $mUcs4) ||
- // 7F-9F is not strictly prohibited by XML,
- // but it is non-SGML, and thus we don't allow it
- (0xA0 <= $mUcs4 && 0xD7FF >= $mUcs4) ||
- (0xE000 <= $mUcs4 && 0xFFFD >= $mUcs4) ||
- (0x10000 <= $mUcs4 && 0x10FFFF >= $mUcs4)
- )
- ) {
- $out .= $char;
- }
- // initialize UTF8 cache (reset)
- $mState = 0;
- $mUcs4 = 0;
- $mBytes = 1;
- $char = '';
- }
- } else {
- // ((0xC0 & (*in) != 0x80) && (mState != 0))
- // Incomplete multi-octet sequence.
- // used to result in complete fail, but we'll reset
- $mState = 0;
- $mUcs4 = 0;
- $mBytes = 1;
- $char ='';
- }
- }
- }
- return $out;
- }
-
- /**
- * Translates a Unicode codepoint into its corresponding UTF-8 character.
- * @note Based on Feyd's function at
- * ,
- * which is in public domain.
- * @note While we're going to do code point parsing anyway, a good
- * optimization would be to refuse to translate code points that
- * are non-SGML characters. However, this could lead to duplication.
- * @note This is very similar to the unichr function in
- * maintenance/generate-entity-file.php (although this is superior,
- * due to its sanity checks).
- */
-
- // +----------+----------+----------+----------+
- // | 33222222 | 22221111 | 111111 | |
- // | 10987654 | 32109876 | 54321098 | 76543210 | bit
- // +----------+----------+----------+----------+
- // | | | | 0xxxxxxx | 1 byte 0x00000000..0x0000007F
- // | | | 110yyyyy | 10xxxxxx | 2 byte 0x00000080..0x000007FF
- // | | 1110zzzz | 10yyyyyy | 10xxxxxx | 3 byte 0x00000800..0x0000FFFF
- // | 11110www | 10wwzzzz | 10yyyyyy | 10xxxxxx | 4 byte 0x00010000..0x0010FFFF
- // +----------+----------+----------+----------+
- // | 00000000 | 00011111 | 11111111 | 11111111 | Theoretical upper limit of legal scalars: 2097151 (0x001FFFFF)
- // | 00000000 | 00010000 | 11111111 | 11111111 | Defined upper limit of legal scalar codes
- // +----------+----------+----------+----------+
-
- public static function unichr($code)
- {
- if ($code > 1114111 or $code < 0 or
- ($code >= 55296 and $code <= 57343) ) {
- // bits are set outside the "valid" range as defined
- // by UNICODE 4.1.0
- return '';
- }
-
- $x = $y = $z = $w = 0;
- if ($code < 128) {
- // regular ASCII character
- $x = $code;
- } else {
- // set up bits for UTF-8
- $x = ($code & 63) | 128;
- if ($code < 2048) {
- $y = (($code & 2047) >> 6) | 192;
- } else {
- $y = (($code & 4032) >> 6) | 128;
- if ($code < 65536) {
- $z = (($code >> 12) & 15) | 224;
- } else {
- $z = (($code >> 12) & 63) | 128;
- $w = (($code >> 18) & 7) | 240;
- }
- }
- }
- // set up the actual character
- $ret = '';
- if ($w) {
- $ret .= chr($w);
- }
- if ($z) {
- $ret .= chr($z);
- }
- if ($y) {
- $ret .= chr($y);
- }
- $ret .= chr($x);
-
- return $ret;
- }
-
- /**
- * @return bool
- */
- public static function iconvAvailable()
- {
- static $iconv = null;
- if ($iconv === null) {
- $iconv = function_exists('iconv') && self::testIconvTruncateBug() != self::ICONV_UNUSABLE;
- }
- return $iconv;
- }
-
- /**
- * Convert a string to UTF-8 based on configuration.
- * @param string $str The string to convert
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return string
- */
- public static function convertToUTF8($str, $config, $context)
- {
- $encoding = $config->get('Core.Encoding');
- if ($encoding === 'utf-8') {
- return $str;
- }
- static $iconv = null;
- if ($iconv === null) {
- $iconv = self::iconvAvailable();
- }
- if ($iconv && !$config->get('Test.ForceNoIconv')) {
- // unaffected by bugs, since UTF-8 support all characters
- $str = self::unsafeIconv($encoding, 'utf-8//IGNORE', $str);
- if ($str === false) {
- // $encoding is not a valid encoding
- trigger_error('Invalid encoding ' . $encoding, E_USER_ERROR);
- return '';
- }
- // If the string is bjorked by Shift_JIS or a similar encoding
- // that doesn't support all of ASCII, convert the naughty
- // characters to their true byte-wise ASCII/UTF-8 equivalents.
- $str = strtr($str, self::testEncodingSupportsASCII($encoding));
- return $str;
- } elseif ($encoding === 'iso-8859-1') {
- $str = utf8_encode($str);
- return $str;
- }
- $bug = HTMLPurifier_Encoder::testIconvTruncateBug();
- if ($bug == self::ICONV_OK) {
- trigger_error('Encoding not supported, please install iconv', E_USER_ERROR);
- } else {
- trigger_error(
- 'You have a buggy version of iconv, see https://bugs.php.net/bug.php?id=48147 ' .
- 'and http://sourceware.org/bugzilla/show_bug.cgi?id=13541',
- E_USER_ERROR
- );
- }
- }
-
- /**
- * Converts a string from UTF-8 based on configuration.
- * @param string $str The string to convert
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return string
- * @note Currently, this is a lossy conversion, with unexpressable
- * characters being omitted.
- */
- public static function convertFromUTF8($str, $config, $context)
- {
- $encoding = $config->get('Core.Encoding');
- if ($escape = $config->get('Core.EscapeNonASCIICharacters')) {
- $str = self::convertToASCIIDumbLossless($str);
- }
- if ($encoding === 'utf-8') {
- return $str;
- }
- static $iconv = null;
- if ($iconv === null) {
- $iconv = self::iconvAvailable();
- }
- if ($iconv && !$config->get('Test.ForceNoIconv')) {
- // Undo our previous fix in convertToUTF8, otherwise iconv will barf
- $ascii_fix = self::testEncodingSupportsASCII($encoding);
- if (!$escape && !empty($ascii_fix)) {
- $clear_fix = array();
- foreach ($ascii_fix as $utf8 => $native) {
- $clear_fix[$utf8] = '';
- }
- $str = strtr($str, $clear_fix);
- }
- $str = strtr($str, array_flip($ascii_fix));
- // Normal stuff
- $str = self::iconv('utf-8', $encoding . '//IGNORE', $str);
- return $str;
- } elseif ($encoding === 'iso-8859-1') {
- $str = utf8_decode($str);
- return $str;
- }
- trigger_error('Encoding not supported', E_USER_ERROR);
- // You might be tempted to assume that the ASCII representation
- // might be OK, however, this is *not* universally true over all
- // encodings. So we take the conservative route here, rather
- // than forcibly turn on %Core.EscapeNonASCIICharacters
- }
-
- /**
- * Lossless (character-wise) conversion of HTML to ASCII
- * @param string $str UTF-8 string to be converted to ASCII
- * @return string ASCII encoded string with non-ASCII character entity-ized
- * @warning Adapted from MediaWiki, claiming fair use: this is a common
- * algorithm. If you disagree with this license fudgery,
- * implement it yourself.
- * @note Uses decimal numeric entities since they are best supported.
- * @note This is a DUMB function: it has no concept of keeping
- * character entities that the projected character encoding
- * can allow. We could possibly implement a smart version
- * but that would require it to also know which Unicode
- * codepoints the charset supported (not an easy task).
- * @note Sort of with cleanUTF8() but it assumes that $str is
- * well-formed UTF-8
- */
- public static function convertToASCIIDumbLossless($str)
- {
- $bytesleft = 0;
- $result = '';
- $working = 0;
- $len = strlen($str);
- for ($i = 0; $i < $len; $i++) {
- $bytevalue = ord($str[$i]);
- if ($bytevalue <= 0x7F) { //0xxx xxxx
- $result .= chr($bytevalue);
- $bytesleft = 0;
- } elseif ($bytevalue <= 0xBF) { //10xx xxxx
- $working = $working << 6;
- $working += ($bytevalue & 0x3F);
- $bytesleft--;
- if ($bytesleft <= 0) {
- $result .= "" . $working . ";";
- }
- } elseif ($bytevalue <= 0xDF) { //110x xxxx
- $working = $bytevalue & 0x1F;
- $bytesleft = 1;
- } elseif ($bytevalue <= 0xEF) { //1110 xxxx
- $working = $bytevalue & 0x0F;
- $bytesleft = 2;
- } else { //1111 0xxx
- $working = $bytevalue & 0x07;
- $bytesleft = 3;
- }
- }
- return $result;
- }
-
- /** No bugs detected in iconv. */
- const ICONV_OK = 0;
-
- /** Iconv truncates output if converting from UTF-8 to another
- * character set with //IGNORE, and a non-encodable character is found */
- const ICONV_TRUNCATES = 1;
-
- /** Iconv does not support //IGNORE, making it unusable for
- * transcoding purposes */
- const ICONV_UNUSABLE = 2;
-
- /**
- * glibc iconv has a known bug where it doesn't handle the magic
- * //IGNORE stanza correctly. In particular, rather than ignore
- * characters, it will return an EILSEQ after consuming some number
- * of characters, and expect you to restart iconv as if it were
- * an E2BIG. Old versions of PHP did not respect the errno, and
- * returned the fragment, so as a result you would see iconv
- * mysteriously truncating output. We can work around this by
- * manually chopping our input into segments of about 8000
- * characters, as long as PHP ignores the error code. If PHP starts
- * paying attention to the error code, iconv becomes unusable.
- *
- * @return int Error code indicating severity of bug.
- */
- public static function testIconvTruncateBug()
- {
- static $code = null;
- if ($code === null) {
- // better not use iconv, otherwise infinite loop!
- $r = self::unsafeIconv('utf-8', 'ascii//IGNORE', "\xCE\xB1" . str_repeat('a', 9000));
- if ($r === false) {
- $code = self::ICONV_UNUSABLE;
- } elseif (($c = strlen($r)) < 9000) {
- $code = self::ICONV_TRUNCATES;
- } elseif ($c > 9000) {
- trigger_error(
- 'Your copy of iconv is extremely buggy. Please notify HTML Purifier maintainers: ' .
- 'include your iconv version as per phpversion()',
- E_USER_ERROR
- );
- } else {
- $code = self::ICONV_OK;
- }
- }
- return $code;
- }
-
- /**
- * This expensive function tests whether or not a given character
- * encoding supports ASCII. 7/8-bit encodings like Shift_JIS will
- * fail this test, and require special processing. Variable width
- * encodings shouldn't ever fail.
- *
- * @param string $encoding Encoding name to test, as per iconv format
- * @param bool $bypass Whether or not to bypass the precompiled arrays.
- * @return Array of UTF-8 characters to their corresponding ASCII,
- * which can be used to "undo" any overzealous iconv action.
- */
- public static function testEncodingSupportsASCII($encoding, $bypass = false)
- {
- // All calls to iconv here are unsafe, proof by case analysis:
- // If ICONV_OK, no difference.
- // If ICONV_TRUNCATE, all calls involve one character inputs,
- // so bug is not triggered.
- // If ICONV_UNUSABLE, this call is irrelevant
- static $encodings = array();
- if (!$bypass) {
- if (isset($encodings[$encoding])) {
- return $encodings[$encoding];
- }
- $lenc = strtolower($encoding);
- switch ($lenc) {
- case 'shift_jis':
- return array("\xC2\xA5" => '\\', "\xE2\x80\xBE" => '~');
- case 'johab':
- return array("\xE2\x82\xA9" => '\\');
- }
- if (strpos($lenc, 'iso-8859-') === 0) {
- return array();
- }
- }
- $ret = array();
- if (self::unsafeIconv('UTF-8', $encoding, 'a') === false) {
- return false;
- }
- for ($i = 0x20; $i <= 0x7E; $i++) { // all printable ASCII chars
- $c = chr($i); // UTF-8 char
- $r = self::unsafeIconv('UTF-8', "$encoding//IGNORE", $c); // initial conversion
- if ($r === '' ||
- // This line is needed for iconv implementations that do not
- // omit characters that do not exist in the target character set
- ($r === $c && self::unsafeIconv($encoding, 'UTF-8//IGNORE', $r) !== $c)
- ) {
- // Reverse engineer: what's the UTF-8 equiv of this byte
- // sequence? This assumes that there's no variable width
- // encoding that doesn't support ASCII.
- $ret[self::unsafeIconv($encoding, 'UTF-8//IGNORE', $c)] = $c;
- }
- }
- $encodings[$encoding] = $ret;
- return $ret;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/EntityLookup.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/EntityLookup.php
deleted file mode 100644
index f12ff13a..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/EntityLookup.php
+++ /dev/null
@@ -1,48 +0,0 @@
-table = unserialize(file_get_contents($file));
- }
-
- /**
- * Retrieves sole instance of the object.
- * @param bool|HTMLPurifier_EntityLookup $prototype Optional prototype of custom lookup table to overload with.
- * @return HTMLPurifier_EntityLookup
- */
- public static function instance($prototype = false)
- {
- // no references, since PHP doesn't copy unless modified
- static $instance = null;
- if ($prototype) {
- $instance = $prototype;
- } elseif (!$instance) {
- $instance = new HTMLPurifier_EntityLookup();
- $instance->setup();
- }
- return $instance;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/EntityLookup/entities.ser b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/EntityLookup/entities.ser
deleted file mode 100644
index e8b08128..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/EntityLookup/entities.ser
+++ /dev/null
@@ -1 +0,0 @@
-a:253:{s:4:"fnof";s:2:"ƒ";s:5:"Alpha";s:2:"Α";s:4:"Beta";s:2:"Β";s:5:"Gamma";s:2:"Γ";s:5:"Delta";s:2:"Δ";s:7:"Epsilon";s:2:"Ε";s:4:"Zeta";s:2:"Ζ";s:3:"Eta";s:2:"Η";s:5:"Theta";s:2:"Θ";s:4:"Iota";s:2:"Ι";s:5:"Kappa";s:2:"Κ";s:6:"Lambda";s:2:"Λ";s:2:"Mu";s:2:"Μ";s:2:"Nu";s:2:"Ν";s:2:"Xi";s:2:"Ξ";s:7:"Omicron";s:2:"Ο";s:2:"Pi";s:2:"Π";s:3:"Rho";s:2:"Ρ";s:5:"Sigma";s:2:"Σ";s:3:"Tau";s:2:"Τ";s:7:"Upsilon";s:2:"Υ";s:3:"Phi";s:2:"Φ";s:3:"Chi";s:2:"Χ";s:3:"Psi";s:2:"Ψ";s:5:"Omega";s:2:"Ω";s:5:"alpha";s:2:"α";s:4:"beta";s:2:"β";s:5:"gamma";s:2:"γ";s:5:"delta";s:2:"δ";s:7:"epsilon";s:2:"ε";s:4:"zeta";s:2:"ζ";s:3:"eta";s:2:"η";s:5:"theta";s:2:"θ";s:4:"iota";s:2:"ι";s:5:"kappa";s:2:"κ";s:6:"lambda";s:2:"λ";s:2:"mu";s:2:"μ";s:2:"nu";s:2:"ν";s:2:"xi";s:2:"ξ";s:7:"omicron";s:2:"ο";s:2:"pi";s:2:"π";s:3:"rho";s:2:"ρ";s:6:"sigmaf";s:2:"ς";s:5:"sigma";s:2:"σ";s:3:"tau";s:2:"τ";s:7:"upsilon";s:2:"υ";s:3:"phi";s:2:"φ";s:3:"chi";s:2:"χ";s:3:"psi";s:2:"ψ";s:5:"omega";s:2:"ω";s:8:"thetasym";s:2:"ϑ";s:5:"upsih";s:2:"ϒ";s:3:"piv";s:2:"ϖ";s:4:"bull";s:3:"•";s:6:"hellip";s:3:"…";s:5:"prime";s:3:"′";s:5:"Prime";s:3:"″";s:5:"oline";s:3:"‾";s:5:"frasl";s:3:"⁄";s:6:"weierp";s:3:"℘";s:5:"image";s:3:"ℑ";s:4:"real";s:3:"ℜ";s:5:"trade";s:3:"™";s:7:"alefsym";s:3:"ℵ";s:4:"larr";s:3:"←";s:4:"uarr";s:3:"↑";s:4:"rarr";s:3:"→";s:4:"darr";s:3:"↓";s:4:"harr";s:3:"↔";s:5:"crarr";s:3:"↵";s:4:"lArr";s:3:"⇐";s:4:"uArr";s:3:"⇑";s:4:"rArr";s:3:"⇒";s:4:"dArr";s:3:"⇓";s:4:"hArr";s:3:"⇔";s:6:"forall";s:3:"∀";s:4:"part";s:3:"∂";s:5:"exist";s:3:"∃";s:5:"empty";s:3:"∅";s:5:"nabla";s:3:"∇";s:4:"isin";s:3:"∈";s:5:"notin";s:3:"∉";s:2:"ni";s:3:"∋";s:4:"prod";s:3:"∏";s:3:"sum";s:3:"∑";s:5:"minus";s:3:"−";s:6:"lowast";s:3:"∗";s:5:"radic";s:3:"√";s:4:"prop";s:3:"∝";s:5:"infin";s:3:"∞";s:3:"ang";s:3:"∠";s:3:"and";s:3:"∧";s:2:"or";s:3:"∨";s:3:"cap";s:3:"∩";s:3:"cup";s:3:"∪";s:3:"int";s:3:"∫";s:6:"there4";s:3:"∴";s:3:"sim";s:3:"∼";s:4:"cong";s:3:"≅";s:5:"asymp";s:3:"≈";s:2:"ne";s:3:"≠";s:5:"equiv";s:3:"≡";s:2:"le";s:3:"≤";s:2:"ge";s:3:"≥";s:3:"sub";s:3:"⊂";s:3:"sup";s:3:"⊃";s:4:"nsub";s:3:"⊄";s:4:"sube";s:3:"⊆";s:4:"supe";s:3:"⊇";s:5:"oplus";s:3:"⊕";s:6:"otimes";s:3:"⊗";s:4:"perp";s:3:"⊥";s:4:"sdot";s:3:"⋅";s:5:"lceil";s:3:"⌈";s:5:"rceil";s:3:"⌉";s:6:"lfloor";s:3:"⌊";s:6:"rfloor";s:3:"⌋";s:4:"lang";s:3:"〈";s:4:"rang";s:3:"〉";s:3:"loz";s:3:"◊";s:6:"spades";s:3:"♠";s:5:"clubs";s:3:"♣";s:6:"hearts";s:3:"♥";s:5:"diams";s:3:"♦";s:4:"quot";s:1:""";s:3:"amp";s:1:"&";s:2:"lt";s:1:"<";s:2:"gt";s:1:">";s:4:"apos";s:1:"'";s:5:"OElig";s:2:"Œ";s:5:"oelig";s:2:"œ";s:6:"Scaron";s:2:"Š";s:6:"scaron";s:2:"š";s:4:"Yuml";s:2:"Ÿ";s:4:"circ";s:2:"ˆ";s:5:"tilde";s:2:"˜";s:4:"ensp";s:3:" ";s:4:"emsp";s:3:" ";s:6:"thinsp";s:3:" ";s:4:"zwnj";s:3:"";s:3:"zwj";s:3:"";s:3:"lrm";s:3:"";s:3:"rlm";s:3:"";s:5:"ndash";s:3:"–";s:5:"mdash";s:3:"—";s:5:"lsquo";s:3:"‘";s:5:"rsquo";s:3:"’";s:5:"sbquo";s:3:"‚";s:5:"ldquo";s:3:"“";s:5:"rdquo";s:3:"”";s:5:"bdquo";s:3:"„";s:6:"dagger";s:3:"†";s:6:"Dagger";s:3:"‡";s:6:"permil";s:3:"‰";s:6:"lsaquo";s:3:"‹";s:6:"rsaquo";s:3:"›";s:4:"euro";s:3:"€";s:4:"nbsp";s:2:" ";s:5:"iexcl";s:2:"¡";s:4:"cent";s:2:"¢";s:5:"pound";s:2:"£";s:6:"curren";s:2:"¤";s:3:"yen";s:2:"¥";s:6:"brvbar";s:2:"¦";s:4:"sect";s:2:"§";s:3:"uml";s:2:"¨";s:4:"copy";s:2:"©";s:4:"ordf";s:2:"ª";s:5:"laquo";s:2:"«";s:3:"not";s:2:"¬";s:3:"shy";s:2:"";s:3:"reg";s:2:"®";s:4:"macr";s:2:"¯";s:3:"deg";s:2:"°";s:6:"plusmn";s:2:"±";s:4:"sup2";s:2:"²";s:4:"sup3";s:2:"³";s:5:"acute";s:2:"´";s:5:"micro";s:2:"µ";s:4:"para";s:2:"¶";s:6:"middot";s:2:"·";s:5:"cedil";s:2:"¸";s:4:"sup1";s:2:"¹";s:4:"ordm";s:2:"º";s:5:"raquo";s:2:"»";s:6:"frac14";s:2:"¼";s:6:"frac12";s:2:"½";s:6:"frac34";s:2:"¾";s:6:"iquest";s:2:"¿";s:6:"Agrave";s:2:"À";s:6:"Aacute";s:2:"Á";s:5:"Acirc";s:2:"Â";s:6:"Atilde";s:2:"Ã";s:4:"Auml";s:2:"Ä";s:5:"Aring";s:2:"Å";s:5:"AElig";s:2:"Æ";s:6:"Ccedil";s:2:"Ç";s:6:"Egrave";s:2:"È";s:6:"Eacute";s:2:"É";s:5:"Ecirc";s:2:"Ê";s:4:"Euml";s:2:"Ë";s:6:"Igrave";s:2:"Ì";s:6:"Iacute";s:2:"Í";s:5:"Icirc";s:2:"Î";s:4:"Iuml";s:2:"Ï";s:3:"ETH";s:2:"Ð";s:6:"Ntilde";s:2:"Ñ";s:6:"Ograve";s:2:"Ò";s:6:"Oacute";s:2:"Ó";s:5:"Ocirc";s:2:"Ô";s:6:"Otilde";s:2:"Õ";s:4:"Ouml";s:2:"Ö";s:5:"times";s:2:"×";s:6:"Oslash";s:2:"Ø";s:6:"Ugrave";s:2:"Ù";s:6:"Uacute";s:2:"Ú";s:5:"Ucirc";s:2:"Û";s:4:"Uuml";s:2:"Ü";s:6:"Yacute";s:2:"Ý";s:5:"THORN";s:2:"Þ";s:5:"szlig";s:2:"ß";s:6:"agrave";s:2:"à";s:6:"aacute";s:2:"á";s:5:"acirc";s:2:"â";s:6:"atilde";s:2:"ã";s:4:"auml";s:2:"ä";s:5:"aring";s:2:"å";s:5:"aelig";s:2:"æ";s:6:"ccedil";s:2:"ç";s:6:"egrave";s:2:"è";s:6:"eacute";s:2:"é";s:5:"ecirc";s:2:"ê";s:4:"euml";s:2:"ë";s:6:"igrave";s:2:"ì";s:6:"iacute";s:2:"í";s:5:"icirc";s:2:"î";s:4:"iuml";s:2:"ï";s:3:"eth";s:2:"ð";s:6:"ntilde";s:2:"ñ";s:6:"ograve";s:2:"ò";s:6:"oacute";s:2:"ó";s:5:"ocirc";s:2:"ô";s:6:"otilde";s:2:"õ";s:4:"ouml";s:2:"ö";s:6:"divide";s:2:"÷";s:6:"oslash";s:2:"ø";s:6:"ugrave";s:2:"ù";s:6:"uacute";s:2:"ú";s:5:"ucirc";s:2:"û";s:4:"uuml";s:2:"ü";s:6:"yacute";s:2:"ý";s:5:"thorn";s:2:"þ";s:4:"yuml";s:2:"ÿ";}
\ No newline at end of file
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/EntityParser.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/EntityParser.php
deleted file mode 100644
index 3ef2d09e..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/EntityParser.php
+++ /dev/null
@@ -1,285 +0,0 @@
-_semiOptionalPrefixRegex = "/&()()()($semi_optional)/";
-
- $this->_textEntitiesRegex =
- '/&(?:'.
- // hex
- '[#]x([a-fA-F0-9]+);?|'.
- // dec
- '[#]0*(\d+);?|'.
- // string (mandatory semicolon)
- // NB: order matters: match semicolon preferentially
- '([A-Za-z_:][A-Za-z0-9.\-_:]*);|'.
- // string (optional semicolon)
- "($semi_optional)".
- ')/';
-
- $this->_attrEntitiesRegex =
- '/&(?:'.
- // hex
- '[#]x([a-fA-F0-9]+);?|'.
- // dec
- '[#]0*(\d+);?|'.
- // string (mandatory semicolon)
- // NB: order matters: match semicolon preferentially
- '([A-Za-z_:][A-Za-z0-9.\-_:]*);|'.
- // string (optional semicolon)
- // don't match if trailing is equals or alphanumeric (URL
- // like)
- "($semi_optional)(?![=;A-Za-z0-9])".
- ')/';
-
- }
-
- /**
- * Substitute entities with the parsed equivalents. Use this on
- * textual data in an HTML document (as opposed to attributes.)
- *
- * @param string $string String to have entities parsed.
- * @return string Parsed string.
- */
- public function substituteTextEntities($string)
- {
- return preg_replace_callback(
- $this->_textEntitiesRegex,
- array($this, 'entityCallback'),
- $string
- );
- }
-
- /**
- * Substitute entities with the parsed equivalents. Use this on
- * attribute contents in documents.
- *
- * @param string $string String to have entities parsed.
- * @return string Parsed string.
- */
- public function substituteAttrEntities($string)
- {
- return preg_replace_callback(
- $this->_attrEntitiesRegex,
- array($this, 'entityCallback'),
- $string
- );
- }
-
- /**
- * Callback function for substituteNonSpecialEntities() that does the work.
- *
- * @param array $matches PCRE matches array, with 0 the entire match, and
- * either index 1, 2 or 3 set with a hex value, dec value,
- * or string (respectively).
- * @return string Replacement string.
- */
-
- protected function entityCallback($matches)
- {
- $entity = $matches[0];
- $hex_part = @$matches[1];
- $dec_part = @$matches[2];
- $named_part = empty($matches[3]) ? (empty($matches[4]) ? "" : $matches[4]) : $matches[3];
- if ($hex_part !== NULL && $hex_part !== "") {
- return HTMLPurifier_Encoder::unichr(hexdec($hex_part));
- } elseif ($dec_part !== NULL && $dec_part !== "") {
- return HTMLPurifier_Encoder::unichr((int) $dec_part);
- } else {
- if (!$this->_entity_lookup) {
- $this->_entity_lookup = HTMLPurifier_EntityLookup::instance();
- }
- if (isset($this->_entity_lookup->table[$named_part])) {
- return $this->_entity_lookup->table[$named_part];
- } else {
- // exact match didn't match anything, so test if
- // any of the semicolon optional match the prefix.
- // Test that this is an EXACT match is important to
- // prevent infinite loop
- if (!empty($matches[3])) {
- return preg_replace_callback(
- $this->_semiOptionalPrefixRegex,
- array($this, 'entityCallback'),
- $entity
- );
- }
- return $entity;
- }
- }
- }
-
- // LEGACY CODE BELOW
-
- /**
- * Callback regex string for parsing entities.
- * @type string
- */
- protected $_substituteEntitiesRegex =
- '/&(?:[#]x([a-fA-F0-9]+)|[#]0*(\d+)|([A-Za-z_:][A-Za-z0-9.\-_:]*));?/';
- // 1. hex 2. dec 3. string (XML style)
-
- /**
- * Decimal to parsed string conversion table for special entities.
- * @type array
- */
- protected $_special_dec2str =
- array(
- 34 => '"',
- 38 => '&',
- 39 => "'",
- 60 => '<',
- 62 => '>'
- );
-
- /**
- * Stripped entity names to decimal conversion table for special entities.
- * @type array
- */
- protected $_special_ent2dec =
- array(
- 'quot' => 34,
- 'amp' => 38,
- 'lt' => 60,
- 'gt' => 62
- );
-
- /**
- * Substitutes non-special entities with their parsed equivalents. Since
- * running this whenever you have parsed character is t3h 5uck, we run
- * it before everything else.
- *
- * @param string $string String to have non-special entities parsed.
- * @return string Parsed string.
- */
- public function substituteNonSpecialEntities($string)
- {
- // it will try to detect missing semicolons, but don't rely on it
- return preg_replace_callback(
- $this->_substituteEntitiesRegex,
- array($this, 'nonSpecialEntityCallback'),
- $string
- );
- }
-
- /**
- * Callback function for substituteNonSpecialEntities() that does the work.
- *
- * @param array $matches PCRE matches array, with 0 the entire match, and
- * either index 1, 2 or 3 set with a hex value, dec value,
- * or string (respectively).
- * @return string Replacement string.
- */
-
- protected function nonSpecialEntityCallback($matches)
- {
- // replaces all but big five
- $entity = $matches[0];
- $is_num = (@$matches[0][1] === '#');
- if ($is_num) {
- $is_hex = (@$entity[2] === 'x');
- $code = $is_hex ? hexdec($matches[1]) : (int) $matches[2];
- // abort for special characters
- if (isset($this->_special_dec2str[$code])) {
- return $entity;
- }
- return HTMLPurifier_Encoder::unichr($code);
- } else {
- if (isset($this->_special_ent2dec[$matches[3]])) {
- return $entity;
- }
- if (!$this->_entity_lookup) {
- $this->_entity_lookup = HTMLPurifier_EntityLookup::instance();
- }
- if (isset($this->_entity_lookup->table[$matches[3]])) {
- return $this->_entity_lookup->table[$matches[3]];
- } else {
- return $entity;
- }
- }
- }
-
- /**
- * Substitutes only special entities with their parsed equivalents.
- *
- * @notice We try to avoid calling this function because otherwise, it
- * would have to be called a lot (for every parsed section).
- *
- * @param string $string String to have non-special entities parsed.
- * @return string Parsed string.
- */
- public function substituteSpecialEntities($string)
- {
- return preg_replace_callback(
- $this->_substituteEntitiesRegex,
- array($this, 'specialEntityCallback'),
- $string
- );
- }
-
- /**
- * Callback function for substituteSpecialEntities() that does the work.
- *
- * This callback has same syntax as nonSpecialEntityCallback().
- *
- * @param array $matches PCRE-style matches array, with 0 the entire match, and
- * either index 1, 2 or 3 set with a hex value, dec value,
- * or string (respectively).
- * @return string Replacement string.
- */
- protected function specialEntityCallback($matches)
- {
- $entity = $matches[0];
- $is_num = (@$matches[0][1] === '#');
- if ($is_num) {
- $is_hex = (@$entity[2] === 'x');
- $int = $is_hex ? hexdec($matches[1]) : (int) $matches[2];
- return isset($this->_special_dec2str[$int]) ?
- $this->_special_dec2str[$int] :
- $entity;
- } else {
- return isset($this->_special_ent2dec[$matches[3]]) ?
- $this->_special_dec2str[$this->_special_ent2dec[$matches[3]]] :
- $entity;
- }
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ErrorCollector.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ErrorCollector.php
deleted file mode 100644
index d47e3f2e..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ErrorCollector.php
+++ /dev/null
@@ -1,244 +0,0 @@
-locale =& $context->get('Locale');
- $this->context = $context;
- $this->_current =& $this->_stacks[0];
- $this->errors =& $this->_stacks[0];
- }
-
- /**
- * Sends an error message to the collector for later use
- * @param int $severity Error severity, PHP error style (don't use E_USER_)
- * @param string $msg Error message text
- */
- public function send($severity, $msg)
- {
- $args = array();
- if (func_num_args() > 2) {
- $args = func_get_args();
- array_shift($args);
- unset($args[0]);
- }
-
- $token = $this->context->get('CurrentToken', true);
- $line = $token ? $token->line : $this->context->get('CurrentLine', true);
- $col = $token ? $token->col : $this->context->get('CurrentCol', true);
- $attr = $this->context->get('CurrentAttr', true);
-
- // perform special substitutions, also add custom parameters
- $subst = array();
- if (!is_null($token)) {
- $args['CurrentToken'] = $token;
- }
- if (!is_null($attr)) {
- $subst['$CurrentAttr.Name'] = $attr;
- if (isset($token->attr[$attr])) {
- $subst['$CurrentAttr.Value'] = $token->attr[$attr];
- }
- }
-
- if (empty($args)) {
- $msg = $this->locale->getMessage($msg);
- } else {
- $msg = $this->locale->formatMessage($msg, $args);
- }
-
- if (!empty($subst)) {
- $msg = strtr($msg, $subst);
- }
-
- // (numerically indexed)
- $error = array(
- self::LINENO => $line,
- self::SEVERITY => $severity,
- self::MESSAGE => $msg,
- self::CHILDREN => array()
- );
- $this->_current[] = $error;
-
- // NEW CODE BELOW ...
- // Top-level errors are either:
- // TOKEN type, if $value is set appropriately, or
- // "syntax" type, if $value is null
- $new_struct = new HTMLPurifier_ErrorStruct();
- $new_struct->type = HTMLPurifier_ErrorStruct::TOKEN;
- if ($token) {
- $new_struct->value = clone $token;
- }
- if (is_int($line) && is_int($col)) {
- if (isset($this->lines[$line][$col])) {
- $struct = $this->lines[$line][$col];
- } else {
- $struct = $this->lines[$line][$col] = $new_struct;
- }
- // These ksorts may present a performance problem
- ksort($this->lines[$line], SORT_NUMERIC);
- } else {
- if (isset($this->lines[-1])) {
- $struct = $this->lines[-1];
- } else {
- $struct = $this->lines[-1] = $new_struct;
- }
- }
- ksort($this->lines, SORT_NUMERIC);
-
- // Now, check if we need to operate on a lower structure
- if (!empty($attr)) {
- $struct = $struct->getChild(HTMLPurifier_ErrorStruct::ATTR, $attr);
- if (!$struct->value) {
- $struct->value = array($attr, 'PUT VALUE HERE');
- }
- }
- if (!empty($cssprop)) {
- $struct = $struct->getChild(HTMLPurifier_ErrorStruct::CSSPROP, $cssprop);
- if (!$struct->value) {
- // if we tokenize CSS this might be a little more difficult to do
- $struct->value = array($cssprop, 'PUT VALUE HERE');
- }
- }
-
- // Ok, structs are all setup, now time to register the error
- $struct->addError($severity, $msg);
- }
-
- /**
- * Retrieves raw error data for custom formatter to use
- */
- public function getRaw()
- {
- return $this->errors;
- }
-
- /**
- * Default HTML formatting implementation for error messages
- * @param HTMLPurifier_Config $config Configuration, vital for HTML output nature
- * @param array $errors Errors array to display; used for recursion.
- * @return string
- */
- public function getHTMLFormatted($config, $errors = null)
- {
- $ret = array();
-
- $this->generator = new HTMLPurifier_Generator($config, $this->context);
- if ($errors === null) {
- $errors = $this->errors;
- }
-
- // 'At line' message needs to be removed
-
- // generation code for new structure goes here. It needs to be recursive.
- foreach ($this->lines as $line => $col_array) {
- if ($line == -1) {
- continue;
- }
- foreach ($col_array as $col => $struct) {
- $this->_renderStruct($ret, $struct, $line, $col);
- }
- }
- if (isset($this->lines[-1])) {
- $this->_renderStruct($ret, $this->lines[-1]);
- }
-
- if (empty($errors)) {
- return '' . $this->locale->getMessage('ErrorCollector: No errors') . '
';
- } else {
- return '' . implode(' ', $ret) . ' ';
- }
-
- }
-
- private function _renderStruct(&$ret, $struct, $line = null, $col = null)
- {
- $stack = array($struct);
- $context_stack = array(array());
- while ($current = array_pop($stack)) {
- $context = array_pop($context_stack);
- foreach ($current->errors as $error) {
- list($severity, $msg) = $error;
- $string = '';
- $string .= '';
- // W3C uses an icon to indicate the severity of the error.
- $error = $this->locale->getErrorName($severity);
- $string .= "$error ";
- if (!is_null($line) && !is_null($col)) {
- $string .= "Line $line, Column $col: ";
- } else {
- $string .= 'End of Document: ';
- }
- $string .= '' . $this->generator->escape($msg) . ' ';
- $string .= '
';
- // Here, have a marker for the character on the column appropriate.
- // Be sure to clip extremely long lines.
- //$string .= '';
- //$string .= '';
- //$string .= ' ';
- $ret[] = $string;
- }
- foreach ($current->children as $array) {
- $context[] = $current;
- $stack = array_merge($stack, array_reverse($array, true));
- for ($i = count($array); $i > 0; $i--) {
- $context_stack[] = $context;
- }
- }
- }
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ErrorStruct.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ErrorStruct.php
deleted file mode 100644
index cf869d32..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ErrorStruct.php
+++ /dev/null
@@ -1,74 +0,0 @@
-children[$type][$id])) {
- $this->children[$type][$id] = new HTMLPurifier_ErrorStruct();
- $this->children[$type][$id]->type = $type;
- }
- return $this->children[$type][$id];
- }
-
- /**
- * @param int $severity
- * @param string $message
- */
- public function addError($severity, $message)
- {
- $this->errors[] = array($severity, $message);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Exception.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Exception.php
deleted file mode 100644
index be85b4c5..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Exception.php
+++ /dev/null
@@ -1,12 +0,0 @@
-preFilter,
- * 2->preFilter, 3->preFilter, purify, 3->postFilter, 2->postFilter,
- * 1->postFilter.
- *
- * @note Methods are not declared abstract as it is perfectly legitimate
- * for an implementation not to want anything to happen on a step
- */
-
-class HTMLPurifier_Filter
-{
-
- /**
- * Name of the filter for identification purposes.
- * @type string
- */
- public $name;
-
- /**
- * Pre-processor function, handles HTML before HTML Purifier
- * @param string $html
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return string
- */
- public function preFilter($html, $config, $context)
- {
- return $html;
- }
-
- /**
- * Post-processor function, handles HTML after HTML Purifier
- * @param string $html
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return string
- */
- public function postFilter($html, $config, $context)
- {
- return $html;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Filter/ExtractStyleBlocks.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Filter/ExtractStyleBlocks.php
deleted file mode 100644
index 66f70b0f..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Filter/ExtractStyleBlocks.php
+++ /dev/null
@@ -1,341 +0,0 @@
- blocks from input HTML, cleans them up
- * using CSSTidy, and then places them in $purifier->context->get('StyleBlocks')
- * so they can be used elsewhere in the document.
- *
- * @note
- * See tests/HTMLPurifier/Filter/ExtractStyleBlocksTest.php for
- * sample usage.
- *
- * @note
- * This filter can also be used on stylesheets not included in the
- * document--something purists would probably prefer. Just directly
- * call HTMLPurifier_Filter_ExtractStyleBlocks->cleanCSS()
- */
-class HTMLPurifier_Filter_ExtractStyleBlocks extends HTMLPurifier_Filter
-{
- /**
- * @type string
- */
- public $name = 'ExtractStyleBlocks';
-
- /**
- * @type array
- */
- private $_styleMatches = array();
-
- /**
- * @type csstidy
- */
- private $_tidy;
-
- /**
- * @type HTMLPurifier_AttrDef_HTML_ID
- */
- private $_id_attrdef;
-
- /**
- * @type HTMLPurifier_AttrDef_CSS_Ident
- */
- private $_class_attrdef;
-
- /**
- * @type HTMLPurifier_AttrDef_Enum
- */
- private $_enum_attrdef;
-
- public function __construct()
- {
- $this->_tidy = new csstidy();
- $this->_tidy->set_cfg('lowercase_s', false);
- $this->_id_attrdef = new HTMLPurifier_AttrDef_HTML_ID(true);
- $this->_class_attrdef = new HTMLPurifier_AttrDef_CSS_Ident();
- $this->_enum_attrdef = new HTMLPurifier_AttrDef_Enum(
- array(
- 'first-child',
- 'link',
- 'visited',
- 'active',
- 'hover',
- 'focus'
- )
- );
- }
-
- /**
- * Save the contents of CSS blocks to style matches
- * @param array $matches preg_replace style $matches array
- */
- protected function styleCallback($matches)
- {
- $this->_styleMatches[] = $matches[1];
- }
-
- /**
- * Removes inline
- // we must not grab foo in a font-family prop).
- if ($config->get('Filter.ExtractStyleBlocks.Escaping')) {
- $css = str_replace(
- array('<', '>', '&'),
- array('\3C ', '\3E ', '\26 '),
- $css
- );
- }
- return $css;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Filter/YouTube.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Filter/YouTube.php
deleted file mode 100644
index 276d8362..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Filter/YouTube.php
+++ /dev/null
@@ -1,65 +0,0 @@
-]+>.+?' .
- '(?:http:)?//www.youtube.com/((?:v|cp)/[A-Za-z0-9\-_=]+).+?#s';
- $pre_replace = '\1 ';
- return preg_replace($pre_regex, $pre_replace, $html);
- }
-
- /**
- * @param string $html
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return string
- */
- public function postFilter($html, $config, $context)
- {
- $post_regex = '#((?:v|cp)/[A-Za-z0-9\-_=]+) #';
- return preg_replace_callback($post_regex, array($this, 'postFilterCallback'), $html);
- }
-
- /**
- * @param $url
- * @return string
- */
- protected function armorUrl($url)
- {
- return str_replace('--', '--', $url);
- }
-
- /**
- * @param array $matches
- * @return string
- */
- protected function postFilterCallback($matches)
- {
- $url = $this->armorUrl($matches[1]);
- return '' .
- ' ' .
- '' .
- ' ';
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Generator.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Generator.php
deleted file mode 100644
index eb56e2df..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Generator.php
+++ /dev/null
@@ -1,286 +0,0 @@
- tags.
- * @type bool
- */
- private $_scriptFix = false;
-
- /**
- * Cache of HTMLDefinition during HTML output to determine whether or
- * not attributes should be minimized.
- * @type HTMLPurifier_HTMLDefinition
- */
- private $_def;
-
- /**
- * Cache of %Output.SortAttr.
- * @type bool
- */
- private $_sortAttr;
-
- /**
- * Cache of %Output.FlashCompat.
- * @type bool
- */
- private $_flashCompat;
-
- /**
- * Cache of %Output.FixInnerHTML.
- * @type bool
- */
- private $_innerHTMLFix;
-
- /**
- * Stack for keeping track of object information when outputting IE
- * compatibility code.
- * @type array
- */
- private $_flashStack = array();
-
- /**
- * Configuration for the generator
- * @type HTMLPurifier_Config
- */
- protected $config;
-
- /**
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- */
- public function __construct($config, $context)
- {
- $this->config = $config;
- $this->_scriptFix = $config->get('Output.CommentScriptContents');
- $this->_innerHTMLFix = $config->get('Output.FixInnerHTML');
- $this->_sortAttr = $config->get('Output.SortAttr');
- $this->_flashCompat = $config->get('Output.FlashCompat');
- $this->_def = $config->getHTMLDefinition();
- $this->_xhtml = $this->_def->doctype->xml;
- }
-
- /**
- * Generates HTML from an array of tokens.
- * @param HTMLPurifier_Token[] $tokens Array of HTMLPurifier_Token
- * @return string Generated HTML
- */
- public function generateFromTokens($tokens)
- {
- if (!$tokens) {
- return '';
- }
-
- // Basic algorithm
- $html = '';
- for ($i = 0, $size = count($tokens); $i < $size; $i++) {
- if ($this->_scriptFix && $tokens[$i]->name === 'script'
- && $i + 2 < $size && $tokens[$i+2] instanceof HTMLPurifier_Token_End) {
- // script special case
- // the contents of the script block must be ONE token
- // for this to work.
- $html .= $this->generateFromToken($tokens[$i++]);
- $html .= $this->generateScriptFromToken($tokens[$i++]);
- }
- $html .= $this->generateFromToken($tokens[$i]);
- }
-
- // Tidy cleanup
- if (extension_loaded('tidy') && $this->config->get('Output.TidyFormat')) {
- $tidy = new Tidy;
- $tidy->parseString(
- $html,
- array(
- 'indent'=> true,
- 'output-xhtml' => $this->_xhtml,
- 'show-body-only' => true,
- 'indent-spaces' => 2,
- 'wrap' => 68,
- ),
- 'utf8'
- );
- $tidy->cleanRepair();
- $html = (string) $tidy; // explicit cast necessary
- }
-
- // Normalize newlines to system defined value
- if ($this->config->get('Core.NormalizeNewlines')) {
- $nl = $this->config->get('Output.Newline');
- if ($nl === null) {
- $nl = PHP_EOL;
- }
- if ($nl !== "\n") {
- $html = str_replace("\n", $nl, $html);
- }
- }
- return $html;
- }
-
- /**
- * Generates HTML from a single token.
- * @param HTMLPurifier_Token $token HTMLPurifier_Token object.
- * @return string Generated HTML
- */
- public function generateFromToken($token)
- {
- if (!$token instanceof HTMLPurifier_Token) {
- trigger_error('Cannot generate HTML from non-HTMLPurifier_Token object', E_USER_WARNING);
- return '';
-
- } elseif ($token instanceof HTMLPurifier_Token_Start) {
- $attr = $this->generateAttributes($token->attr, $token->name);
- if ($this->_flashCompat) {
- if ($token->name == "object") {
- $flash = new stdClass();
- $flash->attr = $token->attr;
- $flash->param = array();
- $this->_flashStack[] = $flash;
- }
- }
- return '<' . $token->name . ($attr ? ' ' : '') . $attr . '>';
-
- } elseif ($token instanceof HTMLPurifier_Token_End) {
- $_extra = '';
- if ($this->_flashCompat) {
- if ($token->name == "object" && !empty($this->_flashStack)) {
- // doesn't do anything for now
- }
- }
- return $_extra . '' . $token->name . '>';
-
- } elseif ($token instanceof HTMLPurifier_Token_Empty) {
- if ($this->_flashCompat && $token->name == "param" && !empty($this->_flashStack)) {
- $this->_flashStack[count($this->_flashStack)-1]->param[$token->attr['name']] = $token->attr['value'];
- }
- $attr = $this->generateAttributes($token->attr, $token->name);
- return '<' . $token->name . ($attr ? ' ' : '') . $attr .
- ( $this->_xhtml ? ' /': '' ) // v.
- . '>';
-
- } elseif ($token instanceof HTMLPurifier_Token_Text) {
- return $this->escape($token->data, ENT_NOQUOTES);
-
- } elseif ($token instanceof HTMLPurifier_Token_Comment) {
- return '';
- } else {
- return '';
-
- }
- }
-
- /**
- * Special case processor for the contents of script tags
- * @param HTMLPurifier_Token $token HTMLPurifier_Token object.
- * @return string
- * @warning This runs into problems if there's already a literal
- * --> somewhere inside the script contents.
- */
- public function generateScriptFromToken($token)
- {
- if (!$token instanceof HTMLPurifier_Token_Text) {
- return $this->generateFromToken($token);
- }
- // Thanks
- $data = preg_replace('#//\s*$#', '', $token->data);
- return '';
- }
-
- /**
- * Generates attribute declarations from attribute array.
- * @note This does not include the leading or trailing space.
- * @param array $assoc_array_of_attributes Attribute array
- * @param string $element Name of element attributes are for, used to check
- * attribute minimization.
- * @return string Generated HTML fragment for insertion.
- */
- public function generateAttributes($assoc_array_of_attributes, $element = '')
- {
- $html = '';
- if ($this->_sortAttr) {
- ksort($assoc_array_of_attributes);
- }
- foreach ($assoc_array_of_attributes as $key => $value) {
- if (!$this->_xhtml) {
- // Remove namespaced attributes
- if (strpos($key, ':') !== false) {
- continue;
- }
- // Check if we should minimize the attribute: val="val" -> val
- if ($element && !empty($this->_def->info[$element]->attr[$key]->minimized)) {
- $html .= $key . ' ';
- continue;
- }
- }
- // Workaround for Internet Explorer innerHTML bug.
- // Essentially, Internet Explorer, when calculating
- // innerHTML, omits quotes if there are no instances of
- // angled brackets, quotes or spaces. However, when parsing
- // HTML (for example, when you assign to innerHTML), it
- // treats backticks as quotes. Thus,
- //
- // becomes
- //
- // becomes
- //
- // Fortunately, all we need to do is trigger an appropriate
- // quoting style, which we do by adding an extra space.
- // This also is consistent with the W3C spec, which states
- // that user agents may ignore leading or trailing
- // whitespace (in fact, most don't, at least for attributes
- // like alt, but an extra space at the end is barely
- // noticeable). Still, we have a configuration knob for
- // this, since this transformation is not necesary if you
- // don't process user input with innerHTML or you don't plan
- // on supporting Internet Explorer.
- if ($this->_innerHTMLFix) {
- if (strpos($value, '`') !== false) {
- // check if correct quoting style would not already be
- // triggered
- if (strcspn($value, '"\' <>') === strlen($value)) {
- // protect!
- $value .= ' ';
- }
- }
- }
- $html .= $key.'="'.$this->escape($value).'" ';
- }
- return rtrim($html);
- }
-
- /**
- * Escapes raw text data.
- * @todo This really ought to be protected, but until we have a facility
- * for properly generating HTML here w/o using tokens, it stays
- * public.
- * @param string $string String data to escape for HTML.
- * @param int $quote Quoting style, like htmlspecialchars. ENT_NOQUOTES is
- * permissible for non-attribute output.
- * @return string escaped data.
- */
- public function escape($string, $quote = null)
- {
- // Workaround for APC bug on Mac Leopard reported by sidepodcast
- // http://htmlpurifier.org/phorum/read.php?3,4823,4846
- if ($quote === null) {
- $quote = ENT_COMPAT;
- }
- return htmlspecialchars($string, $quote, 'UTF-8');
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLDefinition.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLDefinition.php
deleted file mode 100644
index 9b7b334d..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLDefinition.php
+++ /dev/null
@@ -1,493 +0,0 @@
-getAnonymousModule();
- if (!isset($module->info[$element_name])) {
- $element = $module->addBlankElement($element_name);
- } else {
- $element = $module->info[$element_name];
- }
- $element->attr[$attr_name] = $def;
- }
-
- /**
- * Adds a custom element to your HTML definition
- * @see HTMLPurifier_HTMLModule::addElement() for detailed
- * parameter and return value descriptions.
- */
- public function addElement($element_name, $type, $contents, $attr_collections, $attributes = array())
- {
- $module = $this->getAnonymousModule();
- // assume that if the user is calling this, the element
- // is safe. This may not be a good idea
- $element = $module->addElement($element_name, $type, $contents, $attr_collections, $attributes);
- return $element;
- }
-
- /**
- * Adds a blank element to your HTML definition, for overriding
- * existing behavior
- * @param string $element_name
- * @return HTMLPurifier_ElementDef
- * @see HTMLPurifier_HTMLModule::addBlankElement() for detailed
- * parameter and return value descriptions.
- */
- public function addBlankElement($element_name)
- {
- $module = $this->getAnonymousModule();
- $element = $module->addBlankElement($element_name);
- return $element;
- }
-
- /**
- * Retrieves a reference to the anonymous module, so you can
- * bust out advanced features without having to make your own
- * module.
- * @return HTMLPurifier_HTMLModule
- */
- public function getAnonymousModule()
- {
- if (!$this->_anonModule) {
- $this->_anonModule = new HTMLPurifier_HTMLModule();
- $this->_anonModule->name = 'Anonymous';
- }
- return $this->_anonModule;
- }
-
- private $_anonModule = null;
-
- // PUBLIC BUT INTERNAL VARIABLES --------------------------------------
-
- /**
- * @type string
- */
- public $type = 'HTML';
-
- /**
- * @type HTMLPurifier_HTMLModuleManager
- */
- public $manager;
-
- /**
- * Performs low-cost, preliminary initialization.
- */
- public function __construct()
- {
- $this->manager = new HTMLPurifier_HTMLModuleManager();
- }
-
- /**
- * @param HTMLPurifier_Config $config
- */
- protected function doSetup($config)
- {
- $this->processModules($config);
- $this->setupConfigStuff($config);
- unset($this->manager);
-
- // cleanup some of the element definitions
- foreach ($this->info as $k => $v) {
- unset($this->info[$k]->content_model);
- unset($this->info[$k]->content_model_type);
- }
- }
-
- /**
- * Extract out the information from the manager
- * @param HTMLPurifier_Config $config
- */
- protected function processModules($config)
- {
- if ($this->_anonModule) {
- // for user specific changes
- // this is late-loaded so we don't have to deal with PHP4
- // reference wonky-ness
- $this->manager->addModule($this->_anonModule);
- unset($this->_anonModule);
- }
-
- $this->manager->setup($config);
- $this->doctype = $this->manager->doctype;
-
- foreach ($this->manager->modules as $module) {
- foreach ($module->info_tag_transform as $k => $v) {
- if ($v === false) {
- unset($this->info_tag_transform[$k]);
- } else {
- $this->info_tag_transform[$k] = $v;
- }
- }
- foreach ($module->info_attr_transform_pre as $k => $v) {
- if ($v === false) {
- unset($this->info_attr_transform_pre[$k]);
- } else {
- $this->info_attr_transform_pre[$k] = $v;
- }
- }
- foreach ($module->info_attr_transform_post as $k => $v) {
- if ($v === false) {
- unset($this->info_attr_transform_post[$k]);
- } else {
- $this->info_attr_transform_post[$k] = $v;
- }
- }
- foreach ($module->info_injector as $k => $v) {
- if ($v === false) {
- unset($this->info_injector[$k]);
- } else {
- $this->info_injector[$k] = $v;
- }
- }
- }
- $this->info = $this->manager->getElements();
- $this->info_content_sets = $this->manager->contentSets->lookup;
- }
-
- /**
- * Sets up stuff based on config. We need a better way of doing this.
- * @param HTMLPurifier_Config $config
- */
- protected function setupConfigStuff($config)
- {
- $block_wrapper = $config->get('HTML.BlockWrapper');
- if (isset($this->info_content_sets['Block'][$block_wrapper])) {
- $this->info_block_wrapper = $block_wrapper;
- } else {
- trigger_error(
- 'Cannot use non-block element as block wrapper',
- E_USER_ERROR
- );
- }
-
- $parent = $config->get('HTML.Parent');
- $def = $this->manager->getElement($parent, true);
- if ($def) {
- $this->info_parent = $parent;
- $this->info_parent_def = $def;
- } else {
- trigger_error(
- 'Cannot use unrecognized element as parent',
- E_USER_ERROR
- );
- $this->info_parent_def = $this->manager->getElement($this->info_parent, true);
- }
-
- // support template text
- $support = "(for information on implementing this, see the support forums) ";
-
- // setup allowed elements -----------------------------------------
-
- $allowed_elements = $config->get('HTML.AllowedElements');
- $allowed_attributes = $config->get('HTML.AllowedAttributes'); // retrieve early
-
- if (!is_array($allowed_elements) && !is_array($allowed_attributes)) {
- $allowed = $config->get('HTML.Allowed');
- if (is_string($allowed)) {
- list($allowed_elements, $allowed_attributes) = $this->parseTinyMCEAllowedList($allowed);
- }
- }
-
- if (is_array($allowed_elements)) {
- foreach ($this->info as $name => $d) {
- if (!isset($allowed_elements[$name])) {
- unset($this->info[$name]);
- }
- unset($allowed_elements[$name]);
- }
- // emit errors
- foreach ($allowed_elements as $element => $d) {
- $element = htmlspecialchars($element); // PHP doesn't escape errors, be careful!
- trigger_error("Element '$element' is not supported $support", E_USER_WARNING);
- }
- }
-
- // setup allowed attributes ---------------------------------------
-
- $allowed_attributes_mutable = $allowed_attributes; // by copy!
- if (is_array($allowed_attributes)) {
- // This actually doesn't do anything, since we went away from
- // global attributes. It's possible that userland code uses
- // it, but HTMLModuleManager doesn't!
- foreach ($this->info_global_attr as $attr => $x) {
- $keys = array($attr, "*@$attr", "*.$attr");
- $delete = true;
- foreach ($keys as $key) {
- if ($delete && isset($allowed_attributes[$key])) {
- $delete = false;
- }
- if (isset($allowed_attributes_mutable[$key])) {
- unset($allowed_attributes_mutable[$key]);
- }
- }
- if ($delete) {
- unset($this->info_global_attr[$attr]);
- }
- }
-
- foreach ($this->info as $tag => $info) {
- foreach ($info->attr as $attr => $x) {
- $keys = array("$tag@$attr", $attr, "*@$attr", "$tag.$attr", "*.$attr");
- $delete = true;
- foreach ($keys as $key) {
- if ($delete && isset($allowed_attributes[$key])) {
- $delete = false;
- }
- if (isset($allowed_attributes_mutable[$key])) {
- unset($allowed_attributes_mutable[$key]);
- }
- }
- if ($delete) {
- if ($this->info[$tag]->attr[$attr]->required) {
- trigger_error(
- "Required attribute '$attr' in element '$tag' " .
- "was not allowed, which means '$tag' will not be allowed either",
- E_USER_WARNING
- );
- }
- unset($this->info[$tag]->attr[$attr]);
- }
- }
- }
- // emit errors
- foreach ($allowed_attributes_mutable as $elattr => $d) {
- $bits = preg_split('/[.@]/', $elattr, 2);
- $c = count($bits);
- switch ($c) {
- case 2:
- if ($bits[0] !== '*') {
- $element = htmlspecialchars($bits[0]);
- $attribute = htmlspecialchars($bits[1]);
- if (!isset($this->info[$element])) {
- trigger_error(
- "Cannot allow attribute '$attribute' if element " .
- "'$element' is not allowed/supported $support"
- );
- } else {
- trigger_error(
- "Attribute '$attribute' in element '$element' not supported $support",
- E_USER_WARNING
- );
- }
- break;
- }
- // otherwise fall through
- case 1:
- $attribute = htmlspecialchars($bits[0]);
- trigger_error(
- "Global attribute '$attribute' is not ".
- "supported in any elements $support",
- E_USER_WARNING
- );
- break;
- }
- }
- }
-
- // setup forbidden elements ---------------------------------------
-
- $forbidden_elements = $config->get('HTML.ForbiddenElements');
- $forbidden_attributes = $config->get('HTML.ForbiddenAttributes');
-
- foreach ($this->info as $tag => $info) {
- if (isset($forbidden_elements[$tag])) {
- unset($this->info[$tag]);
- continue;
- }
- foreach ($info->attr as $attr => $x) {
- if (isset($forbidden_attributes["$tag@$attr"]) ||
- isset($forbidden_attributes["*@$attr"]) ||
- isset($forbidden_attributes[$attr])
- ) {
- unset($this->info[$tag]->attr[$attr]);
- continue;
- } elseif (isset($forbidden_attributes["$tag.$attr"])) { // this segment might get removed eventually
- // $tag.$attr are not user supplied, so no worries!
- trigger_error(
- "Error with $tag.$attr: tag.attr syntax not supported for " .
- "HTML.ForbiddenAttributes; use tag@attr instead",
- E_USER_WARNING
- );
- }
- }
- }
- foreach ($forbidden_attributes as $key => $v) {
- if (strlen($key) < 2) {
- continue;
- }
- if ($key[0] != '*') {
- continue;
- }
- if ($key[1] == '.') {
- trigger_error(
- "Error with $key: *.attr syntax not supported for HTML.ForbiddenAttributes; use attr instead",
- E_USER_WARNING
- );
- }
- }
-
- // setup injectors -----------------------------------------------------
- foreach ($this->info_injector as $i => $injector) {
- if ($injector->checkNeeded($config) !== false) {
- // remove injector that does not have it's required
- // elements/attributes present, and is thus not needed.
- unset($this->info_injector[$i]);
- }
- }
- }
-
- /**
- * Parses a TinyMCE-flavored Allowed Elements and Attributes list into
- * separate lists for processing. Format is element[attr1|attr2],element2...
- * @warning Although it's largely drawn from TinyMCE's implementation,
- * it is different, and you'll probably have to modify your lists
- * @param array $list String list to parse
- * @return array
- * @todo Give this its own class, probably static interface
- */
- public function parseTinyMCEAllowedList($list)
- {
- $list = str_replace(array(' ', "\t"), '', $list);
-
- $elements = array();
- $attributes = array();
-
- $chunks = preg_split('/(,|[\n\r]+)/', $list);
- foreach ($chunks as $chunk) {
- if (empty($chunk)) {
- continue;
- }
- // remove TinyMCE element control characters
- if (!strpos($chunk, '[')) {
- $element = $chunk;
- $attr = false;
- } else {
- list($element, $attr) = explode('[', $chunk);
- }
- if ($element !== '*') {
- $elements[$element] = true;
- }
- if (!$attr) {
- continue;
- }
- $attr = substr($attr, 0, strlen($attr) - 1); // remove trailing ]
- $attr = explode('|', $attr);
- foreach ($attr as $key) {
- $attributes["$element.$key"] = true;
- }
- }
- return array($elements, $attributes);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule.php
deleted file mode 100644
index 6d898f80..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule.php
+++ /dev/null
@@ -1,284 +0,0 @@
-info, since the object's data is only info,
- * with extra behavior associated with it.
- * @type array
- */
- public $attr_collections = array();
-
- /**
- * Associative array of deprecated tag name to HTMLPurifier_TagTransform.
- * @type array
- */
- public $info_tag_transform = array();
-
- /**
- * List of HTMLPurifier_AttrTransform to be performed before validation.
- * @type array
- */
- public $info_attr_transform_pre = array();
-
- /**
- * List of HTMLPurifier_AttrTransform to be performed after validation.
- * @type array
- */
- public $info_attr_transform_post = array();
-
- /**
- * List of HTMLPurifier_Injector to be performed during well-formedness fixing.
- * An injector will only be invoked if all of it's pre-requisites are met;
- * if an injector fails setup, there will be no error; it will simply be
- * silently disabled.
- * @type array
- */
- public $info_injector = array();
-
- /**
- * Boolean flag that indicates whether or not getChildDef is implemented.
- * For optimization reasons: may save a call to a function. Be sure
- * to set it if you do implement getChildDef(), otherwise it will have
- * no effect!
- * @type bool
- */
- public $defines_child_def = false;
-
- /**
- * Boolean flag whether or not this module is safe. If it is not safe, all
- * of its members are unsafe. Modules are safe by default (this might be
- * slightly dangerous, but it doesn't make much sense to force HTML Purifier,
- * which is based off of safe HTML, to explicitly say, "This is safe," even
- * though there are modules which are "unsafe")
- *
- * @type bool
- * @note Previously, safety could be applied at an element level granularity.
- * We've removed this ability, so in order to add "unsafe" elements
- * or attributes, a dedicated module with this property set to false
- * must be used.
- */
- public $safe = true;
-
- /**
- * Retrieves a proper HTMLPurifier_ChildDef subclass based on
- * content_model and content_model_type member variables of
- * the HTMLPurifier_ElementDef class. There is a similar function
- * in HTMLPurifier_HTMLDefinition.
- * @param HTMLPurifier_ElementDef $def
- * @return HTMLPurifier_ChildDef subclass
- */
- public function getChildDef($def)
- {
- return false;
- }
-
- // -- Convenience -----------------------------------------------------
-
- /**
- * Convenience function that sets up a new element
- * @param string $element Name of element to add
- * @param string|bool $type What content set should element be registered to?
- * Set as false to skip this step.
- * @param string|HTMLPurifier_ChildDef $contents Allowed children in form of:
- * "$content_model_type: $content_model"
- * @param array|string $attr_includes What attribute collections to register to
- * element?
- * @param array $attr What unique attributes does the element define?
- * @see HTMLPurifier_ElementDef:: for in-depth descriptions of these parameters.
- * @return HTMLPurifier_ElementDef Created element definition object, so you
- * can set advanced parameters
- */
- public function addElement($element, $type, $contents, $attr_includes = array(), $attr = array())
- {
- $this->elements[] = $element;
- // parse content_model
- list($content_model_type, $content_model) = $this->parseContents($contents);
- // merge in attribute inclusions
- $this->mergeInAttrIncludes($attr, $attr_includes);
- // add element to content sets
- if ($type) {
- $this->addElementToContentSet($element, $type);
- }
- // create element
- $this->info[$element] = HTMLPurifier_ElementDef::create(
- $content_model,
- $content_model_type,
- $attr
- );
- // literal object $contents means direct child manipulation
- if (!is_string($contents)) {
- $this->info[$element]->child = $contents;
- }
- return $this->info[$element];
- }
-
- /**
- * Convenience function that creates a totally blank, non-standalone
- * element.
- * @param string $element Name of element to create
- * @return HTMLPurifier_ElementDef Created element
- */
- public function addBlankElement($element)
- {
- if (!isset($this->info[$element])) {
- $this->elements[] = $element;
- $this->info[$element] = new HTMLPurifier_ElementDef();
- $this->info[$element]->standalone = false;
- } else {
- trigger_error("Definition for $element already exists in module, cannot redefine");
- }
- return $this->info[$element];
- }
-
- /**
- * Convenience function that registers an element to a content set
- * @param string $element Element to register
- * @param string $type Name content set (warning: case sensitive, usually upper-case
- * first letter)
- */
- public function addElementToContentSet($element, $type)
- {
- if (!isset($this->content_sets[$type])) {
- $this->content_sets[$type] = '';
- } else {
- $this->content_sets[$type] .= ' | ';
- }
- $this->content_sets[$type] .= $element;
- }
-
- /**
- * Convenience function that transforms single-string contents
- * into separate content model and content model type
- * @param string $contents Allowed children in form of:
- * "$content_model_type: $content_model"
- * @return array
- * @note If contents is an object, an array of two nulls will be
- * returned, and the callee needs to take the original $contents
- * and use it directly.
- */
- public function parseContents($contents)
- {
- if (!is_string($contents)) {
- return array(null, null);
- } // defer
- switch ($contents) {
- // check for shorthand content model forms
- case 'Empty':
- return array('empty', '');
- case 'Inline':
- return array('optional', 'Inline | #PCDATA');
- case 'Flow':
- return array('optional', 'Flow | #PCDATA');
- }
- list($content_model_type, $content_model) = explode(':', $contents);
- $content_model_type = strtolower(trim($content_model_type));
- $content_model = trim($content_model);
- return array($content_model_type, $content_model);
- }
-
- /**
- * Convenience function that merges a list of attribute includes into
- * an attribute array.
- * @param array $attr Reference to attr array to modify
- * @param array $attr_includes Array of includes / string include to merge in
- */
- public function mergeInAttrIncludes(&$attr, $attr_includes)
- {
- if (!is_array($attr_includes)) {
- if (empty($attr_includes)) {
- $attr_includes = array();
- } else {
- $attr_includes = array($attr_includes);
- }
- }
- $attr[0] = $attr_includes;
- }
-
- /**
- * Convenience function that generates a lookup table with boolean
- * true as value.
- * @param string $list List of values to turn into a lookup
- * @note You can also pass an arbitrary number of arguments in
- * place of the regular argument
- * @return array array equivalent of list
- */
- public function makeLookup($list)
- {
- if (is_string($list)) {
- $list = func_get_args();
- }
- $ret = array();
- foreach ($list as $value) {
- if (is_null($value)) {
- continue;
- }
- $ret[$value] = true;
- }
- return $ret;
- }
-
- /**
- * Lazy load construction of the module after determining whether
- * or not it's needed, and also when a finalized configuration object
- * is available.
- * @param HTMLPurifier_Config $config
- */
- public function setup($config)
- {
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Bdo.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Bdo.php
deleted file mode 100644
index 1e67c790..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Bdo.php
+++ /dev/null
@@ -1,44 +0,0 @@
- array('dir' => false)
- );
-
- /**
- * @param HTMLPurifier_Config $config
- */
- public function setup($config)
- {
- $bdo = $this->addElement(
- 'bdo',
- 'Inline',
- 'Inline',
- array('Core', 'Lang'),
- array(
- 'dir' => 'Enum#ltr,rtl', // required
- // The Abstract Module specification has the attribute
- // inclusions wrong for bdo: bdo allows Lang
- )
- );
- $bdo->attr_transform_post[] = new HTMLPurifier_AttrTransform_BdoDir();
-
- $this->attr_collections['I18N']['dir'] = 'Enum#ltr,rtl';
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/CommonAttributes.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/CommonAttributes.php
deleted file mode 100644
index a96ab1be..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/CommonAttributes.php
+++ /dev/null
@@ -1,31 +0,0 @@
- array(
- 0 => array('Style'),
- // 'xml:space' => false,
- 'class' => 'Class',
- 'id' => 'ID',
- 'title' => 'CDATA',
- ),
- 'Lang' => array(),
- 'I18N' => array(
- 0 => array('Lang'), // proprietary, for xml:lang/lang
- ),
- 'Common' => array(
- 0 => array('Core', 'I18N')
- )
- );
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Edit.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Edit.php
deleted file mode 100644
index a9042a35..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Edit.php
+++ /dev/null
@@ -1,55 +0,0 @@
- 'URI',
- // 'datetime' => 'Datetime', // not implemented
- );
- $this->addElement('del', 'Inline', $contents, 'Common', $attr);
- $this->addElement('ins', 'Inline', $contents, 'Common', $attr);
- }
-
- // HTML 4.01 specifies that ins/del must not contain block
- // elements when used in an inline context, chameleon is
- // a complicated workaround to acheive this effect
-
- // Inline context ! Block context (exclamation mark is
- // separator, see getChildDef for parsing)
-
- /**
- * @type bool
- */
- public $defines_child_def = true;
-
- /**
- * @param HTMLPurifier_ElementDef $def
- * @return HTMLPurifier_ChildDef_Chameleon
- */
- public function getChildDef($def)
- {
- if ($def->content_model_type != 'chameleon') {
- return false;
- }
- $value = explode('!', $def->content_model);
- return new HTMLPurifier_ChildDef_Chameleon($value[0], $value[1]);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Forms.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Forms.php
deleted file mode 100644
index eb0edcff..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Forms.php
+++ /dev/null
@@ -1,194 +0,0 @@
- 'Form',
- 'Inline' => 'Formctrl',
- );
-
- /**
- * @param HTMLPurifier_Config $config
- */
- public function setup($config)
- {
- if ($config->get('HTML.Forms')) {
- $this->safe = true;
- }
-
- $form = $this->addElement(
- 'form',
- 'Form',
- 'Required: Heading | List | Block | fieldset',
- 'Common',
- array(
- 'accept' => 'ContentTypes',
- 'accept-charset' => 'Charsets',
- 'action*' => 'URI',
- 'method' => 'Enum#get,post',
- // really ContentType, but these two are the only ones used today
- 'enctype' => 'Enum#application/x-www-form-urlencoded,multipart/form-data',
- )
- );
- $form->excludes = array('form' => true);
-
- $input = $this->addElement(
- 'input',
- 'Formctrl',
- 'Empty',
- 'Common',
- array(
- 'accept' => 'ContentTypes',
- 'accesskey' => 'Character',
- 'alt' => 'Text',
- 'checked' => 'Bool#checked',
- 'disabled' => 'Bool#disabled',
- 'maxlength' => 'Number',
- 'name' => 'CDATA',
- 'readonly' => 'Bool#readonly',
- 'size' => 'Number',
- 'src' => 'URI#embedded',
- 'tabindex' => 'Number',
- 'type' => 'Enum#text,password,checkbox,button,radio,submit,reset,file,hidden,image',
- 'value' => 'CDATA',
- )
- );
- $input->attr_transform_post[] = new HTMLPurifier_AttrTransform_Input();
-
- $this->addElement(
- 'select',
- 'Formctrl',
- 'Required: optgroup | option',
- 'Common',
- array(
- 'disabled' => 'Bool#disabled',
- 'multiple' => 'Bool#multiple',
- 'name' => 'CDATA',
- 'size' => 'Number',
- 'tabindex' => 'Number',
- )
- );
-
- $this->addElement(
- 'option',
- false,
- 'Optional: #PCDATA',
- 'Common',
- array(
- 'disabled' => 'Bool#disabled',
- 'label' => 'Text',
- 'selected' => 'Bool#selected',
- 'value' => 'CDATA',
- )
- );
- // It's illegal for there to be more than one selected, but not
- // be multiple. Also, no selected means undefined behavior. This might
- // be difficult to implement; perhaps an injector, or a context variable.
-
- $textarea = $this->addElement(
- 'textarea',
- 'Formctrl',
- 'Optional: #PCDATA',
- 'Common',
- array(
- 'accesskey' => 'Character',
- 'cols*' => 'Number',
- 'disabled' => 'Bool#disabled',
- 'name' => 'CDATA',
- 'readonly' => 'Bool#readonly',
- 'rows*' => 'Number',
- 'tabindex' => 'Number',
- )
- );
- $textarea->attr_transform_pre[] = new HTMLPurifier_AttrTransform_Textarea();
-
- $button = $this->addElement(
- 'button',
- 'Formctrl',
- 'Optional: #PCDATA | Heading | List | Block | Inline',
- 'Common',
- array(
- 'accesskey' => 'Character',
- 'disabled' => 'Bool#disabled',
- 'name' => 'CDATA',
- 'tabindex' => 'Number',
- 'type' => 'Enum#button,submit,reset',
- 'value' => 'CDATA',
- )
- );
-
- // For exclusions, ideally we'd specify content sets, not literal elements
- $button->excludes = $this->makeLookup(
- 'form',
- 'fieldset', // Form
- 'input',
- 'select',
- 'textarea',
- 'label',
- 'button', // Formctrl
- 'a', // as per HTML 4.01 spec, this is omitted by modularization
- 'isindex',
- 'iframe' // legacy items
- );
-
- // Extra exclusion: img usemap="" is not permitted within this element.
- // We'll omit this for now, since we don't have any good way of
- // indicating it yet.
-
- // This is HIGHLY user-unfriendly; we need a custom child-def for this
- $this->addElement('fieldset', 'Form', 'Custom: (#WS?,legend,(Flow|#PCDATA)*)', 'Common');
-
- $label = $this->addElement(
- 'label',
- 'Formctrl',
- 'Optional: #PCDATA | Inline',
- 'Common',
- array(
- 'accesskey' => 'Character',
- // 'for' => 'IDREF', // IDREF not implemented, cannot allow
- )
- );
- $label->excludes = array('label' => true);
-
- $this->addElement(
- 'legend',
- false,
- 'Optional: #PCDATA | Inline',
- 'Common',
- array(
- 'accesskey' => 'Character',
- )
- );
-
- $this->addElement(
- 'optgroup',
- false,
- 'Required: option',
- 'Common',
- array(
- 'disabled' => 'Bool#disabled',
- 'label*' => 'Text',
- )
- );
- // Don't forget an injector for . This one's a little complex
- // because it maps to multiple elements.
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Hypertext.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Hypertext.php
deleted file mode 100644
index 72d7a31e..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Hypertext.php
+++ /dev/null
@@ -1,40 +0,0 @@
-addElement(
- 'a',
- 'Inline',
- 'Inline',
- 'Common',
- array(
- // 'accesskey' => 'Character',
- // 'charset' => 'Charset',
- 'href' => 'URI',
- // 'hreflang' => 'LanguageCode',
- 'rel' => new HTMLPurifier_AttrDef_HTML_LinkTypes('rel'),
- 'rev' => new HTMLPurifier_AttrDef_HTML_LinkTypes('rev'),
- // 'tabindex' => 'Number',
- // 'type' => 'ContentType',
- )
- );
- $a->formatting = true;
- $a->excludes = array('a' => true);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Iframe.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Iframe.php
deleted file mode 100644
index f7e7c91c..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Iframe.php
+++ /dev/null
@@ -1,51 +0,0 @@
-get('HTML.SafeIframe')) {
- $this->safe = true;
- }
- $this->addElement(
- 'iframe',
- 'Inline',
- 'Flow',
- 'Common',
- array(
- 'src' => 'URI#embedded',
- 'width' => 'Length',
- 'height' => 'Length',
- 'name' => 'ID',
- 'scrolling' => 'Enum#yes,no,auto',
- 'frameborder' => 'Enum#0,1',
- 'longdesc' => 'URI',
- 'marginheight' => 'Pixels',
- 'marginwidth' => 'Pixels',
- )
- );
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Image.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Image.php
deleted file mode 100644
index 0f5fdb3b..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Image.php
+++ /dev/null
@@ -1,49 +0,0 @@
-get('HTML.MaxImgLength');
- $img = $this->addElement(
- 'img',
- 'Inline',
- 'Empty',
- 'Common',
- array(
- 'alt*' => 'Text',
- // According to the spec, it's Length, but percents can
- // be abused, so we allow only Pixels.
- 'height' => 'Pixels#' . $max,
- 'width' => 'Pixels#' . $max,
- 'longdesc' => 'URI',
- 'src*' => new HTMLPurifier_AttrDef_URI(true), // embedded
- )
- );
- if ($max === null || $config->get('HTML.Trusted')) {
- $img->attr['height'] =
- $img->attr['width'] = 'Length';
- }
-
- // kind of strange, but splitting things up would be inefficient
- $img->attr_transform_pre[] =
- $img->attr_transform_post[] =
- new HTMLPurifier_AttrTransform_ImgRequired();
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Legacy.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Legacy.php
deleted file mode 100644
index 86b52995..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Legacy.php
+++ /dev/null
@@ -1,186 +0,0 @@
-addElement(
- 'basefont',
- 'Inline',
- 'Empty',
- null,
- array(
- 'color' => 'Color',
- 'face' => 'Text', // extremely broad, we should
- 'size' => 'Text', // tighten it
- 'id' => 'ID'
- )
- );
- $this->addElement('center', 'Block', 'Flow', 'Common');
- $this->addElement(
- 'dir',
- 'Block',
- 'Required: li',
- 'Common',
- array(
- 'compact' => 'Bool#compact'
- )
- );
- $this->addElement(
- 'font',
- 'Inline',
- 'Inline',
- array('Core', 'I18N'),
- array(
- 'color' => 'Color',
- 'face' => 'Text', // extremely broad, we should
- 'size' => 'Text', // tighten it
- )
- );
- $this->addElement(
- 'menu',
- 'Block',
- 'Required: li',
- 'Common',
- array(
- 'compact' => 'Bool#compact'
- )
- );
-
- $s = $this->addElement('s', 'Inline', 'Inline', 'Common');
- $s->formatting = true;
-
- $strike = $this->addElement('strike', 'Inline', 'Inline', 'Common');
- $strike->formatting = true;
-
- $u = $this->addElement('u', 'Inline', 'Inline', 'Common');
- $u->formatting = true;
-
- // setup modifications to old elements
-
- $align = 'Enum#left,right,center,justify';
-
- $address = $this->addBlankElement('address');
- $address->content_model = 'Inline | #PCDATA | p';
- $address->content_model_type = 'optional';
- $address->child = false;
-
- $blockquote = $this->addBlankElement('blockquote');
- $blockquote->content_model = 'Flow | #PCDATA';
- $blockquote->content_model_type = 'optional';
- $blockquote->child = false;
-
- $br = $this->addBlankElement('br');
- $br->attr['clear'] = 'Enum#left,all,right,none';
-
- $caption = $this->addBlankElement('caption');
- $caption->attr['align'] = 'Enum#top,bottom,left,right';
-
- $div = $this->addBlankElement('div');
- $div->attr['align'] = $align;
-
- $dl = $this->addBlankElement('dl');
- $dl->attr['compact'] = 'Bool#compact';
-
- for ($i = 1; $i <= 6; $i++) {
- $h = $this->addBlankElement("h$i");
- $h->attr['align'] = $align;
- }
-
- $hr = $this->addBlankElement('hr');
- $hr->attr['align'] = $align;
- $hr->attr['noshade'] = 'Bool#noshade';
- $hr->attr['size'] = 'Pixels';
- $hr->attr['width'] = 'Length';
-
- $img = $this->addBlankElement('img');
- $img->attr['align'] = 'IAlign';
- $img->attr['border'] = 'Pixels';
- $img->attr['hspace'] = 'Pixels';
- $img->attr['vspace'] = 'Pixels';
-
- // figure out this integer business
-
- $li = $this->addBlankElement('li');
- $li->attr['value'] = new HTMLPurifier_AttrDef_Integer();
- $li->attr['type'] = 'Enum#s:1,i,I,a,A,disc,square,circle';
-
- $ol = $this->addBlankElement('ol');
- $ol->attr['compact'] = 'Bool#compact';
- $ol->attr['start'] = new HTMLPurifier_AttrDef_Integer();
- $ol->attr['type'] = 'Enum#s:1,i,I,a,A';
-
- $p = $this->addBlankElement('p');
- $p->attr['align'] = $align;
-
- $pre = $this->addBlankElement('pre');
- $pre->attr['width'] = 'Number';
-
- // script omitted
-
- $table = $this->addBlankElement('table');
- $table->attr['align'] = 'Enum#left,center,right';
- $table->attr['bgcolor'] = 'Color';
-
- $tr = $this->addBlankElement('tr');
- $tr->attr['bgcolor'] = 'Color';
-
- $th = $this->addBlankElement('th');
- $th->attr['bgcolor'] = 'Color';
- $th->attr['height'] = 'Length';
- $th->attr['nowrap'] = 'Bool#nowrap';
- $th->attr['width'] = 'Length';
-
- $td = $this->addBlankElement('td');
- $td->attr['bgcolor'] = 'Color';
- $td->attr['height'] = 'Length';
- $td->attr['nowrap'] = 'Bool#nowrap';
- $td->attr['width'] = 'Length';
-
- $ul = $this->addBlankElement('ul');
- $ul->attr['compact'] = 'Bool#compact';
- $ul->attr['type'] = 'Enum#square,disc,circle';
-
- // "safe" modifications to "unsafe" elements
- // WARNING: If you want to add support for an unsafe, legacy
- // attribute, make a new TrustedLegacy module with the trusted
- // bit set appropriately
-
- $form = $this->addBlankElement('form');
- $form->content_model = 'Flow | #PCDATA';
- $form->content_model_type = 'optional';
- $form->attr['target'] = 'FrameTarget';
-
- $input = $this->addBlankElement('input');
- $input->attr['align'] = 'IAlign';
-
- $legend = $this->addBlankElement('legend');
- $legend->attr['align'] = 'LAlign';
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/List.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/List.php
deleted file mode 100644
index 7a20ff70..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/List.php
+++ /dev/null
@@ -1,51 +0,0 @@
- 'List');
-
- /**
- * @param HTMLPurifier_Config $config
- */
- public function setup($config)
- {
- $ol = $this->addElement('ol', 'List', new HTMLPurifier_ChildDef_List(), 'Common');
- $ul = $this->addElement('ul', 'List', new HTMLPurifier_ChildDef_List(), 'Common');
- // XXX The wrap attribute is handled by MakeWellFormed. This is all
- // quite unsatisfactory, because we generated this
- // *specifically* for lists, and now a big chunk of the handling
- // is done properly by the List ChildDef. So actually, we just
- // want enough information to make autoclosing work properly,
- // and then hand off the tricky stuff to the ChildDef.
- $ol->wrap = 'li';
- $ul->wrap = 'li';
- $this->addElement('dl', 'List', 'Required: dt | dd', 'Common');
-
- $this->addElement('li', false, 'Flow', 'Common');
-
- $this->addElement('dd', false, 'Flow', 'Common');
- $this->addElement('dt', false, 'Inline', 'Common');
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Name.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Name.php
deleted file mode 100644
index 60c05451..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Name.php
+++ /dev/null
@@ -1,26 +0,0 @@
-addBlankElement($name);
- $element->attr['name'] = 'CDATA';
- if (!$config->get('HTML.Attr.Name.UseCDATA')) {
- $element->attr_transform_post[] = new HTMLPurifier_AttrTransform_NameSync();
- }
- }
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Nofollow.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Nofollow.php
deleted file mode 100644
index dc9410a8..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Nofollow.php
+++ /dev/null
@@ -1,25 +0,0 @@
-addBlankElement('a');
- $a->attr_transform_post[] = new HTMLPurifier_AttrTransform_Nofollow();
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/NonXMLCommonAttributes.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/NonXMLCommonAttributes.php
deleted file mode 100644
index da722253..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/NonXMLCommonAttributes.php
+++ /dev/null
@@ -1,20 +0,0 @@
- array(
- 'lang' => 'LanguageCode',
- )
- );
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Object.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Object.php
deleted file mode 100644
index 2f9efc5c..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Object.php
+++ /dev/null
@@ -1,62 +0,0 @@
- to cater to legacy browsers: this
- * module does not allow this sort of behavior
- */
-class HTMLPurifier_HTMLModule_Object extends HTMLPurifier_HTMLModule
-{
- /**
- * @type string
- */
- public $name = 'Object';
-
- /**
- * @type bool
- */
- public $safe = false;
-
- /**
- * @param HTMLPurifier_Config $config
- */
- public function setup($config)
- {
- $this->addElement(
- 'object',
- 'Inline',
- 'Optional: #PCDATA | Flow | param',
- 'Common',
- array(
- 'archive' => 'URI',
- 'classid' => 'URI',
- 'codebase' => 'URI',
- 'codetype' => 'Text',
- 'data' => 'URI',
- 'declare' => 'Bool#declare',
- 'height' => 'Length',
- 'name' => 'CDATA',
- 'standby' => 'Text',
- 'tabindex' => 'Number',
- 'type' => 'ContentType',
- 'width' => 'Length'
- )
- );
-
- $this->addElement(
- 'param',
- false,
- 'Empty',
- null,
- array(
- 'id' => 'ID',
- 'name*' => 'Text',
- 'type' => 'Text',
- 'value' => 'Text',
- 'valuetype' => 'Enum#data,ref,object'
- )
- );
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Presentation.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Presentation.php
deleted file mode 100644
index 6458ce9d..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Presentation.php
+++ /dev/null
@@ -1,42 +0,0 @@
-addElement('hr', 'Block', 'Empty', 'Common');
- $this->addElement('sub', 'Inline', 'Inline', 'Common');
- $this->addElement('sup', 'Inline', 'Inline', 'Common');
- $b = $this->addElement('b', 'Inline', 'Inline', 'Common');
- $b->formatting = true;
- $big = $this->addElement('big', 'Inline', 'Inline', 'Common');
- $big->formatting = true;
- $i = $this->addElement('i', 'Inline', 'Inline', 'Common');
- $i->formatting = true;
- $small = $this->addElement('small', 'Inline', 'Inline', 'Common');
- $small->formatting = true;
- $tt = $this->addElement('tt', 'Inline', 'Inline', 'Common');
- $tt->formatting = true;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Proprietary.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Proprietary.php
deleted file mode 100644
index 5ee3c8e6..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Proprietary.php
+++ /dev/null
@@ -1,40 +0,0 @@
-addElement(
- 'marquee',
- 'Inline',
- 'Flow',
- 'Common',
- array(
- 'direction' => 'Enum#left,right,up,down',
- 'behavior' => 'Enum#alternate',
- 'width' => 'Length',
- 'height' => 'Length',
- 'scrolldelay' => 'Number',
- 'scrollamount' => 'Number',
- 'loop' => 'Number',
- 'bgcolor' => 'Color',
- 'hspace' => 'Pixels',
- 'vspace' => 'Pixels',
- )
- );
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Ruby.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Ruby.php
deleted file mode 100644
index a0d48924..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Ruby.php
+++ /dev/null
@@ -1,36 +0,0 @@
-addElement(
- 'ruby',
- 'Inline',
- 'Custom: ((rb, (rt | (rp, rt, rp))) | (rbc, rtc, rtc?))',
- 'Common'
- );
- $this->addElement('rbc', false, 'Required: rb', 'Common');
- $this->addElement('rtc', false, 'Required: rt', 'Common');
- $rb = $this->addElement('rb', false, 'Inline', 'Common');
- $rb->excludes = array('ruby' => true);
- $rt = $this->addElement('rt', false, 'Inline', 'Common', array('rbspan' => 'Number'));
- $rt->excludes = array('ruby' => true);
- $this->addElement('rp', false, 'Optional: #PCDATA', 'Common');
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/SafeEmbed.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/SafeEmbed.php
deleted file mode 100644
index 04e6689e..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/SafeEmbed.php
+++ /dev/null
@@ -1,40 +0,0 @@
-get('HTML.MaxImgLength');
- $embed = $this->addElement(
- 'embed',
- 'Inline',
- 'Empty',
- 'Common',
- array(
- 'src*' => 'URI#embedded',
- 'type' => 'Enum#application/x-shockwave-flash',
- 'width' => 'Pixels#' . $max,
- 'height' => 'Pixels#' . $max,
- 'allowscriptaccess' => 'Enum#never',
- 'allownetworking' => 'Enum#internal',
- 'flashvars' => 'Text',
- 'wmode' => 'Enum#window,transparent,opaque',
- 'name' => 'ID',
- )
- );
- $embed->attr_transform_post[] = new HTMLPurifier_AttrTransform_SafeEmbed();
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/SafeObject.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/SafeObject.php
deleted file mode 100644
index 1297f80a..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/SafeObject.php
+++ /dev/null
@@ -1,62 +0,0 @@
-get('HTML.MaxImgLength');
- $object = $this->addElement(
- 'object',
- 'Inline',
- 'Optional: param | Flow | #PCDATA',
- 'Common',
- array(
- // While technically not required by the spec, we're forcing
- // it to this value.
- 'type' => 'Enum#application/x-shockwave-flash',
- 'width' => 'Pixels#' . $max,
- 'height' => 'Pixels#' . $max,
- 'data' => 'URI#embedded',
- 'codebase' => new HTMLPurifier_AttrDef_Enum(
- array(
- 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0'
- )
- ),
- )
- );
- $object->attr_transform_post[] = new HTMLPurifier_AttrTransform_SafeObject();
-
- $param = $this->addElement(
- 'param',
- false,
- 'Empty',
- false,
- array(
- 'id' => 'ID',
- 'name*' => 'Text',
- 'value' => 'Text'
- )
- );
- $param->attr_transform_post[] = new HTMLPurifier_AttrTransform_SafeParam();
- $this->info_injector[] = 'SafeObject';
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/SafeScripting.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/SafeScripting.php
deleted file mode 100644
index aea7584c..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/SafeScripting.php
+++ /dev/null
@@ -1,40 +0,0 @@
-get('HTML.SafeScripting');
- $script = $this->addElement(
- 'script',
- 'Inline',
- 'Optional:', // Not `Empty` to not allow to autoclose the tag @see https://www.w3.org/TR/html4/interact/scripts.html
- null,
- array(
- // While technically not required by the spec, we're forcing
- // it to this value.
- 'type' => 'Enum#text/javascript',
- 'src*' => new HTMLPurifier_AttrDef_Enum(array_keys($allowed), /*case sensitive*/ true)
- )
- );
- $script->attr_transform_pre[] =
- $script->attr_transform_post[] = new HTMLPurifier_AttrTransform_ScriptRequired();
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Scripting.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Scripting.php
deleted file mode 100644
index 8b28a7b7..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Scripting.php
+++ /dev/null
@@ -1,73 +0,0 @@
- 'script | noscript', 'Inline' => 'script | noscript');
-
- /**
- * @type bool
- */
- public $safe = false;
-
- /**
- * @param HTMLPurifier_Config $config
- */
- public function setup($config)
- {
- // TODO: create custom child-definition for noscript that
- // auto-wraps stray #PCDATA in a similar manner to
- // blockquote's custom definition (we would use it but
- // blockquote's contents are optional while noscript's contents
- // are required)
-
- // TODO: convert this to new syntax, main problem is getting
- // both content sets working
-
- // In theory, this could be safe, but I don't see any reason to
- // allow it.
- $this->info['noscript'] = new HTMLPurifier_ElementDef();
- $this->info['noscript']->attr = array(0 => array('Common'));
- $this->info['noscript']->content_model = 'Heading | List | Block';
- $this->info['noscript']->content_model_type = 'required';
-
- $this->info['script'] = new HTMLPurifier_ElementDef();
- $this->info['script']->attr = array(
- 'defer' => new HTMLPurifier_AttrDef_Enum(array('defer')),
- 'src' => new HTMLPurifier_AttrDef_URI(true),
- 'type' => new HTMLPurifier_AttrDef_Enum(array('text/javascript'))
- );
- $this->info['script']->content_model = '#PCDATA';
- $this->info['script']->content_model_type = 'optional';
- $this->info['script']->attr_transform_pre[] =
- $this->info['script']->attr_transform_post[] =
- new HTMLPurifier_AttrTransform_ScriptRequired();
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/StyleAttribute.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/StyleAttribute.php
deleted file mode 100644
index 497b832a..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/StyleAttribute.php
+++ /dev/null
@@ -1,33 +0,0 @@
- array('style' => false), // see constructor
- 'Core' => array(0 => array('Style'))
- );
-
- /**
- * @param HTMLPurifier_Config $config
- */
- public function setup($config)
- {
- $this->attr_collections['Style']['style'] = new HTMLPurifier_AttrDef_CSS();
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tables.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tables.php
deleted file mode 100644
index 8a0b3b46..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tables.php
+++ /dev/null
@@ -1,75 +0,0 @@
-addElement('caption', false, 'Inline', 'Common');
-
- $this->addElement(
- 'table',
- 'Block',
- new HTMLPurifier_ChildDef_Table(),
- 'Common',
- array(
- 'border' => 'Pixels',
- 'cellpadding' => 'Length',
- 'cellspacing' => 'Length',
- 'frame' => 'Enum#void,above,below,hsides,lhs,rhs,vsides,box,border',
- 'rules' => 'Enum#none,groups,rows,cols,all',
- 'summary' => 'Text',
- 'width' => 'Length'
- )
- );
-
- // common attributes
- $cell_align = array(
- 'align' => 'Enum#left,center,right,justify,char',
- 'charoff' => 'Length',
- 'valign' => 'Enum#top,middle,bottom,baseline',
- );
-
- $cell_t = array_merge(
- array(
- 'abbr' => 'Text',
- 'colspan' => 'Number',
- 'rowspan' => 'Number',
- // Apparently, as of HTML5 this attribute only applies
- // to 'th' elements.
- 'scope' => 'Enum#row,col,rowgroup,colgroup',
- ),
- $cell_align
- );
- $this->addElement('td', false, 'Flow', 'Common', $cell_t);
- $this->addElement('th', false, 'Flow', 'Common', $cell_t);
-
- $this->addElement('tr', false, 'Required: td | th', 'Common', $cell_align);
-
- $cell_col = array_merge(
- array(
- 'span' => 'Number',
- 'width' => 'MultiLength',
- ),
- $cell_align
- );
- $this->addElement('col', false, 'Empty', 'Common', $cell_col);
- $this->addElement('colgroup', false, 'Optional: col', 'Common', $cell_col);
-
- $this->addElement('tbody', false, 'Required: tr', 'Common', $cell_align);
- $this->addElement('thead', false, 'Required: tr', 'Common', $cell_align);
- $this->addElement('tfoot', false, 'Required: tr', 'Common', $cell_align);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Target.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Target.php
deleted file mode 100644
index b188ac93..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Target.php
+++ /dev/null
@@ -1,28 +0,0 @@
-addBlankElement($name);
- $e->attr = array(
- 'target' => new HTMLPurifier_AttrDef_HTML_FrameTarget()
- );
- }
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/TargetBlank.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/TargetBlank.php
deleted file mode 100644
index 58ccc689..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/TargetBlank.php
+++ /dev/null
@@ -1,24 +0,0 @@
-addBlankElement('a');
- $a->attr_transform_post[] = new HTMLPurifier_AttrTransform_TargetBlank();
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/TargetNoopener.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/TargetNoopener.php
deleted file mode 100644
index b967ff56..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/TargetNoopener.php
+++ /dev/null
@@ -1,21 +0,0 @@
-addBlankElement('a');
- $a->attr_transform_post[] = new HTMLPurifier_AttrTransform_TargetNoopener();
- }
-}
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/TargetNoreferrer.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/TargetNoreferrer.php
deleted file mode 100644
index 32484d60..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/TargetNoreferrer.php
+++ /dev/null
@@ -1,21 +0,0 @@
-addBlankElement('a');
- $a->attr_transform_post[] = new HTMLPurifier_AttrTransform_TargetNoreferrer();
- }
-}
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Text.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Text.php
deleted file mode 100644
index 7a65e004..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Text.php
+++ /dev/null
@@ -1,87 +0,0 @@
- 'Heading | Block | Inline'
- );
-
- /**
- * @param HTMLPurifier_Config $config
- */
- public function setup($config)
- {
- // Inline Phrasal -------------------------------------------------
- $this->addElement('abbr', 'Inline', 'Inline', 'Common');
- $this->addElement('acronym', 'Inline', 'Inline', 'Common');
- $this->addElement('cite', 'Inline', 'Inline', 'Common');
- $this->addElement('dfn', 'Inline', 'Inline', 'Common');
- $this->addElement('kbd', 'Inline', 'Inline', 'Common');
- $this->addElement('q', 'Inline', 'Inline', 'Common', array('cite' => 'URI'));
- $this->addElement('samp', 'Inline', 'Inline', 'Common');
- $this->addElement('var', 'Inline', 'Inline', 'Common');
-
- $em = $this->addElement('em', 'Inline', 'Inline', 'Common');
- $em->formatting = true;
-
- $strong = $this->addElement('strong', 'Inline', 'Inline', 'Common');
- $strong->formatting = true;
-
- $code = $this->addElement('code', 'Inline', 'Inline', 'Common');
- $code->formatting = true;
-
- // Inline Structural ----------------------------------------------
- $this->addElement('span', 'Inline', 'Inline', 'Common');
- $this->addElement('br', 'Inline', 'Empty', 'Core');
-
- // Block Phrasal --------------------------------------------------
- $this->addElement('address', 'Block', 'Inline', 'Common');
- $this->addElement('blockquote', 'Block', 'Optional: Heading | Block | List', 'Common', array('cite' => 'URI'));
- $pre = $this->addElement('pre', 'Block', 'Inline', 'Common');
- $pre->excludes = $this->makeLookup(
- 'img',
- 'big',
- 'small',
- 'object',
- 'applet',
- 'font',
- 'basefont'
- );
- $this->addElement('h1', 'Heading', 'Inline', 'Common');
- $this->addElement('h2', 'Heading', 'Inline', 'Common');
- $this->addElement('h3', 'Heading', 'Inline', 'Common');
- $this->addElement('h4', 'Heading', 'Inline', 'Common');
- $this->addElement('h5', 'Heading', 'Inline', 'Common');
- $this->addElement('h6', 'Heading', 'Inline', 'Common');
-
- // Block Structural -----------------------------------------------
- $p = $this->addElement('p', 'Block', 'Inline', 'Common');
- $p->autoclose = array_flip(
- array("address", "blockquote", "center", "dir", "div", "dl", "fieldset", "ol", "p", "ul")
- );
-
- $this->addElement('div', 'Block', 'Flow', 'Common');
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tidy.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tidy.php
deleted file mode 100644
index 08aa2324..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tidy.php
+++ /dev/null
@@ -1,230 +0,0 @@
- 'none', 'light', 'medium', 'heavy');
-
- /**
- * Default level to place all fixes in.
- * Disabled by default.
- * @type string
- */
- public $defaultLevel = null;
-
- /**
- * Lists of fixes used by getFixesForLevel().
- * Format is:
- * HTMLModule_Tidy->fixesForLevel[$level] = array('fix-1', 'fix-2');
- * @type array
- */
- public $fixesForLevel = array(
- 'light' => array(),
- 'medium' => array(),
- 'heavy' => array()
- );
-
- /**
- * Lazy load constructs the module by determining the necessary
- * fixes to create and then delegating to the populate() function.
- * @param HTMLPurifier_Config $config
- * @todo Wildcard matching and error reporting when an added or
- * subtracted fix has no effect.
- */
- public function setup($config)
- {
- // create fixes, initialize fixesForLevel
- $fixes = $this->makeFixes();
- $this->makeFixesForLevel($fixes);
-
- // figure out which fixes to use
- $level = $config->get('HTML.TidyLevel');
- $fixes_lookup = $this->getFixesForLevel($level);
-
- // get custom fix declarations: these need namespace processing
- $add_fixes = $config->get('HTML.TidyAdd');
- $remove_fixes = $config->get('HTML.TidyRemove');
-
- foreach ($fixes as $name => $fix) {
- // needs to be refactored a little to implement globbing
- if (isset($remove_fixes[$name]) ||
- (!isset($add_fixes[$name]) && !isset($fixes_lookup[$name]))) {
- unset($fixes[$name]);
- }
- }
-
- // populate this module with necessary fixes
- $this->populate($fixes);
- }
-
- /**
- * Retrieves all fixes per a level, returning fixes for that specific
- * level as well as all levels below it.
- * @param string $level level identifier, see $levels for valid values
- * @return array Lookup up table of fixes
- */
- public function getFixesForLevel($level)
- {
- if ($level == $this->levels[0]) {
- return array();
- }
- $activated_levels = array();
- for ($i = 1, $c = count($this->levels); $i < $c; $i++) {
- $activated_levels[] = $this->levels[$i];
- if ($this->levels[$i] == $level) {
- break;
- }
- }
- if ($i == $c) {
- trigger_error(
- 'Tidy level ' . htmlspecialchars($level) . ' not recognized',
- E_USER_WARNING
- );
- return array();
- }
- $ret = array();
- foreach ($activated_levels as $level) {
- foreach ($this->fixesForLevel[$level] as $fix) {
- $ret[$fix] = true;
- }
- }
- return $ret;
- }
-
- /**
- * Dynamically populates the $fixesForLevel member variable using
- * the fixes array. It may be custom overloaded, used in conjunction
- * with $defaultLevel, or not used at all.
- * @param array $fixes
- */
- public function makeFixesForLevel($fixes)
- {
- if (!isset($this->defaultLevel)) {
- return;
- }
- if (!isset($this->fixesForLevel[$this->defaultLevel])) {
- trigger_error(
- 'Default level ' . $this->defaultLevel . ' does not exist',
- E_USER_ERROR
- );
- return;
- }
- $this->fixesForLevel[$this->defaultLevel] = array_keys($fixes);
- }
-
- /**
- * Populates the module with transforms and other special-case code
- * based on a list of fixes passed to it
- * @param array $fixes Lookup table of fixes to activate
- */
- public function populate($fixes)
- {
- foreach ($fixes as $name => $fix) {
- // determine what the fix is for
- list($type, $params) = $this->getFixType($name);
- switch ($type) {
- case 'attr_transform_pre':
- case 'attr_transform_post':
- $attr = $params['attr'];
- if (isset($params['element'])) {
- $element = $params['element'];
- if (empty($this->info[$element])) {
- $e = $this->addBlankElement($element);
- } else {
- $e = $this->info[$element];
- }
- } else {
- $type = "info_$type";
- $e = $this;
- }
- // PHP does some weird parsing when I do
- // $e->$type[$attr], so I have to assign a ref.
- $f =& $e->$type;
- $f[$attr] = $fix;
- break;
- case 'tag_transform':
- $this->info_tag_transform[$params['element']] = $fix;
- break;
- case 'child':
- case 'content_model_type':
- $element = $params['element'];
- if (empty($this->info[$element])) {
- $e = $this->addBlankElement($element);
- } else {
- $e = $this->info[$element];
- }
- $e->$type = $fix;
- break;
- default:
- trigger_error("Fix type $type not supported", E_USER_ERROR);
- break;
- }
- }
- }
-
- /**
- * Parses a fix name and determines what kind of fix it is, as well
- * as other information defined by the fix
- * @param $name String name of fix
- * @return array(string $fix_type, array $fix_parameters)
- * @note $fix_parameters is type dependant, see populate() for usage
- * of these parameters
- */
- public function getFixType($name)
- {
- // parse it
- $property = $attr = null;
- if (strpos($name, '#') !== false) {
- list($name, $property) = explode('#', $name);
- }
- if (strpos($name, '@') !== false) {
- list($name, $attr) = explode('@', $name);
- }
-
- // figure out the parameters
- $params = array();
- if ($name !== '') {
- $params['element'] = $name;
- }
- if (!is_null($attr)) {
- $params['attr'] = $attr;
- }
-
- // special case: attribute transform
- if (!is_null($attr)) {
- if (is_null($property)) {
- $property = 'pre';
- }
- $type = 'attr_transform_' . $property;
- return array($type, $params);
- }
-
- // special case: tag transform
- if (is_null($property)) {
- return array('tag_transform', $params);
- }
-
- return array($property, $params);
-
- }
-
- /**
- * Defines all fixes the module will perform in a compact
- * associative array of fix name to fix implementation.
- * @return array
- */
- public function makeFixes()
- {
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tidy/Name.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tidy/Name.php
deleted file mode 100644
index a995161b..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tidy/Name.php
+++ /dev/null
@@ -1,33 +0,0 @@
-content_model_type != 'strictblockquote') {
- return parent::getChildDef($def);
- }
- return new HTMLPurifier_ChildDef_StrictBlockquote($def->content_model);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tidy/Transitional.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tidy/Transitional.php
deleted file mode 100644
index c095ad97..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tidy/Transitional.php
+++ /dev/null
@@ -1,16 +0,0 @@
- 'text-align:left;',
- 'right' => 'text-align:right;',
- 'top' => 'caption-side:top;',
- 'bottom' => 'caption-side:bottom;' // not supported by IE
- )
- );
-
- // @align for img -------------------------------------------------
- $r['img@align'] =
- new HTMLPurifier_AttrTransform_EnumToCSS(
- 'align',
- array(
- 'left' => 'float:left;',
- 'right' => 'float:right;',
- 'top' => 'vertical-align:top;',
- 'middle' => 'vertical-align:middle;',
- 'bottom' => 'vertical-align:baseline;',
- )
- );
-
- // @align for table -----------------------------------------------
- $r['table@align'] =
- new HTMLPurifier_AttrTransform_EnumToCSS(
- 'align',
- array(
- 'left' => 'float:left;',
- 'center' => 'margin-left:auto;margin-right:auto;',
- 'right' => 'float:right;'
- )
- );
-
- // @align for hr -----------------------------------------------
- $r['hr@align'] =
- new HTMLPurifier_AttrTransform_EnumToCSS(
- 'align',
- array(
- // we use both text-align and margin because these work
- // for different browsers (IE and Firefox, respectively)
- // and the melange makes for a pretty cross-compatible
- // solution
- 'left' => 'margin-left:0;margin-right:auto;text-align:left;',
- 'center' => 'margin-left:auto;margin-right:auto;text-align:center;',
- 'right' => 'margin-left:auto;margin-right:0;text-align:right;'
- )
- );
-
- // @align for h1, h2, h3, h4, h5, h6, p, div ----------------------
- // {{{
- $align_lookup = array();
- $align_values = array('left', 'right', 'center', 'justify');
- foreach ($align_values as $v) {
- $align_lookup[$v] = "text-align:$v;";
- }
- // }}}
- $r['h1@align'] =
- $r['h2@align'] =
- $r['h3@align'] =
- $r['h4@align'] =
- $r['h5@align'] =
- $r['h6@align'] =
- $r['p@align'] =
- $r['div@align'] =
- new HTMLPurifier_AttrTransform_EnumToCSS('align', $align_lookup);
-
- // @bgcolor for table, tr, td, th ---------------------------------
- $r['table@bgcolor'] =
- $r['tr@bgcolor'] =
- $r['td@bgcolor'] =
- $r['th@bgcolor'] =
- new HTMLPurifier_AttrTransform_BgColor();
-
- // @border for img ------------------------------------------------
- $r['img@border'] = new HTMLPurifier_AttrTransform_Border();
-
- // @clear for br --------------------------------------------------
- $r['br@clear'] =
- new HTMLPurifier_AttrTransform_EnumToCSS(
- 'clear',
- array(
- 'left' => 'clear:left;',
- 'right' => 'clear:right;',
- 'all' => 'clear:both;',
- 'none' => 'clear:none;',
- )
- );
-
- // @height for td, th ---------------------------------------------
- $r['td@height'] =
- $r['th@height'] =
- new HTMLPurifier_AttrTransform_Length('height');
-
- // @hspace for img ------------------------------------------------
- $r['img@hspace'] = new HTMLPurifier_AttrTransform_ImgSpace('hspace');
-
- // @noshade for hr ------------------------------------------------
- // this transformation is not precise but often good enough.
- // different browsers use different styles to designate noshade
- $r['hr@noshade'] =
- new HTMLPurifier_AttrTransform_BoolToCSS(
- 'noshade',
- 'color:#808080;background-color:#808080;border:0;'
- );
-
- // @nowrap for td, th ---------------------------------------------
- $r['td@nowrap'] =
- $r['th@nowrap'] =
- new HTMLPurifier_AttrTransform_BoolToCSS(
- 'nowrap',
- 'white-space:nowrap;'
- );
-
- // @size for hr --------------------------------------------------
- $r['hr@size'] = new HTMLPurifier_AttrTransform_Length('size', 'height');
-
- // @type for li, ol, ul -------------------------------------------
- // {{{
- $ul_types = array(
- 'disc' => 'list-style-type:disc;',
- 'square' => 'list-style-type:square;',
- 'circle' => 'list-style-type:circle;'
- );
- $ol_types = array(
- '1' => 'list-style-type:decimal;',
- 'i' => 'list-style-type:lower-roman;',
- 'I' => 'list-style-type:upper-roman;',
- 'a' => 'list-style-type:lower-alpha;',
- 'A' => 'list-style-type:upper-alpha;'
- );
- $li_types = $ul_types + $ol_types;
- // }}}
-
- $r['ul@type'] = new HTMLPurifier_AttrTransform_EnumToCSS('type', $ul_types);
- $r['ol@type'] = new HTMLPurifier_AttrTransform_EnumToCSS('type', $ol_types, true);
- $r['li@type'] = new HTMLPurifier_AttrTransform_EnumToCSS('type', $li_types, true);
-
- // @vspace for img ------------------------------------------------
- $r['img@vspace'] = new HTMLPurifier_AttrTransform_ImgSpace('vspace');
-
- // @width for hr, td, th ------------------------------------------
- $r['td@width'] =
- $r['th@width'] =
- $r['hr@width'] = new HTMLPurifier_AttrTransform_Length('width');
-
- return $r;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/XMLCommonAttributes.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/XMLCommonAttributes.php
deleted file mode 100644
index 01dbe9de..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/XMLCommonAttributes.php
+++ /dev/null
@@ -1,20 +0,0 @@
- array(
- 'xml:lang' => 'LanguageCode',
- )
- );
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModuleManager.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModuleManager.php
deleted file mode 100644
index 38c058fe..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModuleManager.php
+++ /dev/null
@@ -1,467 +0,0 @@
-attrTypes = new HTMLPurifier_AttrTypes();
- $this->doctypes = new HTMLPurifier_DoctypeRegistry();
-
- // setup basic modules
- $common = array(
- 'CommonAttributes', 'Text', 'Hypertext', 'List',
- 'Presentation', 'Edit', 'Bdo', 'Tables', 'Image',
- 'StyleAttribute',
- // Unsafe:
- 'Scripting', 'Object', 'Forms',
- // Sorta legacy, but present in strict:
- 'Name',
- );
- $transitional = array('Legacy', 'Target', 'Iframe');
- $xml = array('XMLCommonAttributes');
- $non_xml = array('NonXMLCommonAttributes');
-
- // setup basic doctypes
- $this->doctypes->register(
- 'HTML 4.01 Transitional',
- false,
- array_merge($common, $transitional, $non_xml),
- array('Tidy_Transitional', 'Tidy_Proprietary'),
- array(),
- '-//W3C//DTD HTML 4.01 Transitional//EN',
- 'http://www.w3.org/TR/html4/loose.dtd'
- );
-
- $this->doctypes->register(
- 'HTML 4.01 Strict',
- false,
- array_merge($common, $non_xml),
- array('Tidy_Strict', 'Tidy_Proprietary', 'Tidy_Name'),
- array(),
- '-//W3C//DTD HTML 4.01//EN',
- 'http://www.w3.org/TR/html4/strict.dtd'
- );
-
- $this->doctypes->register(
- 'XHTML 1.0 Transitional',
- true,
- array_merge($common, $transitional, $xml, $non_xml),
- array('Tidy_Transitional', 'Tidy_XHTML', 'Tidy_Proprietary', 'Tidy_Name'),
- array(),
- '-//W3C//DTD XHTML 1.0 Transitional//EN',
- 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'
- );
-
- $this->doctypes->register(
- 'XHTML 1.0 Strict',
- true,
- array_merge($common, $xml, $non_xml),
- array('Tidy_Strict', 'Tidy_XHTML', 'Tidy_Strict', 'Tidy_Proprietary', 'Tidy_Name'),
- array(),
- '-//W3C//DTD XHTML 1.0 Strict//EN',
- 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'
- );
-
- $this->doctypes->register(
- 'XHTML 1.1',
- true,
- // Iframe is a real XHTML 1.1 module, despite being
- // "transitional"!
- array_merge($common, $xml, array('Ruby', 'Iframe')),
- array('Tidy_Strict', 'Tidy_XHTML', 'Tidy_Proprietary', 'Tidy_Strict', 'Tidy_Name'), // Tidy_XHTML1_1
- array(),
- '-//W3C//DTD XHTML 1.1//EN',
- 'http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd'
- );
-
- }
-
- /**
- * Registers a module to the recognized module list, useful for
- * overloading pre-existing modules.
- * @param $module Mixed: string module name, with or without
- * HTMLPurifier_HTMLModule prefix, or instance of
- * subclass of HTMLPurifier_HTMLModule.
- * @param $overload Boolean whether or not to overload previous modules.
- * If this is not set, and you do overload a module,
- * HTML Purifier will complain with a warning.
- * @note This function will not call autoload, you must instantiate
- * (and thus invoke) autoload outside the method.
- * @note If a string is passed as a module name, different variants
- * will be tested in this order:
- * - Check for HTMLPurifier_HTMLModule_$name
- * - Check all prefixes with $name in order they were added
- * - Check for literal object name
- * - Throw fatal error
- * If your object name collides with an internal class, specify
- * your module manually. All modules must have been included
- * externally: registerModule will not perform inclusions for you!
- */
- public function registerModule($module, $overload = false)
- {
- if (is_string($module)) {
- // attempt to load the module
- $original_module = $module;
- $ok = false;
- foreach ($this->prefixes as $prefix) {
- $module = $prefix . $original_module;
- if (class_exists($module)) {
- $ok = true;
- break;
- }
- }
- if (!$ok) {
- $module = $original_module;
- if (!class_exists($module)) {
- trigger_error(
- $original_module . ' module does not exist',
- E_USER_ERROR
- );
- return;
- }
- }
- $module = new $module();
- }
- if (empty($module->name)) {
- trigger_error('Module instance of ' . get_class($module) . ' must have name');
- return;
- }
- if (!$overload && isset($this->registeredModules[$module->name])) {
- trigger_error('Overloading ' . $module->name . ' without explicit overload parameter', E_USER_WARNING);
- }
- $this->registeredModules[$module->name] = $module;
- }
-
- /**
- * Adds a module to the current doctype by first registering it,
- * and then tacking it on to the active doctype
- */
- public function addModule($module)
- {
- $this->registerModule($module);
- if (is_object($module)) {
- $module = $module->name;
- }
- $this->userModules[] = $module;
- }
-
- /**
- * Adds a class prefix that registerModule() will use to resolve a
- * string name to a concrete class
- */
- public function addPrefix($prefix)
- {
- $this->prefixes[] = $prefix;
- }
-
- /**
- * Performs processing on modules, after being called you may
- * use getElement() and getElements()
- * @param HTMLPurifier_Config $config
- */
- public function setup($config)
- {
- $this->trusted = $config->get('HTML.Trusted');
-
- // generate
- $this->doctype = $this->doctypes->make($config);
- $modules = $this->doctype->modules;
-
- // take out the default modules that aren't allowed
- $lookup = $config->get('HTML.AllowedModules');
- $special_cases = $config->get('HTML.CoreModules');
-
- if (is_array($lookup)) {
- foreach ($modules as $k => $m) {
- if (isset($special_cases[$m])) {
- continue;
- }
- if (!isset($lookup[$m])) {
- unset($modules[$k]);
- }
- }
- }
-
- // custom modules
- if ($config->get('HTML.Proprietary')) {
- $modules[] = 'Proprietary';
- }
- if ($config->get('HTML.SafeObject')) {
- $modules[] = 'SafeObject';
- }
- if ($config->get('HTML.SafeEmbed')) {
- $modules[] = 'SafeEmbed';
- }
- if ($config->get('HTML.SafeScripting') !== array()) {
- $modules[] = 'SafeScripting';
- }
- if ($config->get('HTML.Nofollow')) {
- $modules[] = 'Nofollow';
- }
- if ($config->get('HTML.TargetBlank')) {
- $modules[] = 'TargetBlank';
- }
- // NB: HTML.TargetNoreferrer and HTML.TargetNoopener must be AFTER HTML.TargetBlank
- // so that its post-attr-transform gets run afterwards.
- if ($config->get('HTML.TargetNoreferrer')) {
- $modules[] = 'TargetNoreferrer';
- }
- if ($config->get('HTML.TargetNoopener')) {
- $modules[] = 'TargetNoopener';
- }
-
- // merge in custom modules
- $modules = array_merge($modules, $this->userModules);
-
- foreach ($modules as $module) {
- $this->processModule($module);
- $this->modules[$module]->setup($config);
- }
-
- foreach ($this->doctype->tidyModules as $module) {
- $this->processModule($module);
- $this->modules[$module]->setup($config);
- }
-
- // prepare any injectors
- foreach ($this->modules as $module) {
- $n = array();
- foreach ($module->info_injector as $injector) {
- if (!is_object($injector)) {
- $class = "HTMLPurifier_Injector_$injector";
- $injector = new $class;
- }
- $n[$injector->name] = $injector;
- }
- $module->info_injector = $n;
- }
-
- // setup lookup table based on all valid modules
- foreach ($this->modules as $module) {
- foreach ($module->info as $name => $def) {
- if (!isset($this->elementLookup[$name])) {
- $this->elementLookup[$name] = array();
- }
- $this->elementLookup[$name][] = $module->name;
- }
- }
-
- // note the different choice
- $this->contentSets = new HTMLPurifier_ContentSets(
- // content set assembly deals with all possible modules,
- // not just ones deemed to be "safe"
- $this->modules
- );
- $this->attrCollections = new HTMLPurifier_AttrCollections(
- $this->attrTypes,
- // there is no way to directly disable a global attribute,
- // but using AllowedAttributes or simply not including
- // the module in your custom doctype should be sufficient
- $this->modules
- );
- }
-
- /**
- * Takes a module and adds it to the active module collection,
- * registering it if necessary.
- */
- public function processModule($module)
- {
- if (!isset($this->registeredModules[$module]) || is_object($module)) {
- $this->registerModule($module);
- }
- $this->modules[$module] = $this->registeredModules[$module];
- }
-
- /**
- * Retrieves merged element definitions.
- * @return Array of HTMLPurifier_ElementDef
- */
- public function getElements()
- {
- $elements = array();
- foreach ($this->modules as $module) {
- if (!$this->trusted && !$module->safe) {
- continue;
- }
- foreach ($module->info as $name => $v) {
- if (isset($elements[$name])) {
- continue;
- }
- $elements[$name] = $this->getElement($name);
- }
- }
-
- // remove dud elements, this happens when an element that
- // appeared to be safe actually wasn't
- foreach ($elements as $n => $v) {
- if ($v === false) {
- unset($elements[$n]);
- }
- }
-
- return $elements;
-
- }
-
- /**
- * Retrieves a single merged element definition
- * @param string $name Name of element
- * @param bool $trusted Boolean trusted overriding parameter: set to true
- * if you want the full version of an element
- * @return HTMLPurifier_ElementDef Merged HTMLPurifier_ElementDef
- * @note You may notice that modules are getting iterated over twice (once
- * in getElements() and once here). This
- * is because
- */
- public function getElement($name, $trusted = null)
- {
- if (!isset($this->elementLookup[$name])) {
- return false;
- }
-
- // setup global state variables
- $def = false;
- if ($trusted === null) {
- $trusted = $this->trusted;
- }
-
- // iterate through each module that has registered itself to this
- // element
- foreach ($this->elementLookup[$name] as $module_name) {
- $module = $this->modules[$module_name];
-
- // refuse to create/merge from a module that is deemed unsafe--
- // pretend the module doesn't exist--when trusted mode is not on.
- if (!$trusted && !$module->safe) {
- continue;
- }
-
- // clone is used because, ideally speaking, the original
- // definition should not be modified. Usually, this will
- // make no difference, but for consistency's sake
- $new_def = clone $module->info[$name];
-
- if (!$def && $new_def->standalone) {
- $def = $new_def;
- } elseif ($def) {
- // This will occur even if $new_def is standalone. In practice,
- // this will usually result in a full replacement.
- $def->mergeIn($new_def);
- } else {
- // :TODO:
- // non-standalone definitions that don't have a standalone
- // to merge into could be deferred to the end
- // HOWEVER, it is perfectly valid for a non-standalone
- // definition to lack a standalone definition, even
- // after all processing: this allows us to safely
- // specify extra attributes for elements that may not be
- // enabled all in one place. In particular, this might
- // be the case for trusted elements. WARNING: care must
- // be taken that the /extra/ definitions are all safe.
- continue;
- }
-
- // attribute value expansions
- $this->attrCollections->performInclusions($def->attr);
- $this->attrCollections->expandIdentifiers($def->attr, $this->attrTypes);
-
- // descendants_are_inline, for ChildDef_Chameleon
- if (is_string($def->content_model) &&
- strpos($def->content_model, 'Inline') !== false) {
- if ($name != 'del' && $name != 'ins') {
- // this is for you, ins/del
- $def->descendants_are_inline = true;
- }
- }
-
- $this->contentSets->generateChildDef($def, $module);
- }
-
- // This can occur if there is a blank definition, but no base to
- // mix it in with
- if (!$def) {
- return false;
- }
-
- // add information on required attributes
- foreach ($def->attr as $attr_name => $attr_def) {
- if ($attr_def->required) {
- $def->required_attr[] = $attr_name;
- }
- }
- return $def;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/IDAccumulator.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/IDAccumulator.php
deleted file mode 100644
index 65c902c0..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/IDAccumulator.php
+++ /dev/null
@@ -1,57 +0,0 @@
-load($config->get('Attr.IDBlacklist'));
- return $id_accumulator;
- }
-
- /**
- * Add an ID to the lookup table.
- * @param string $id ID to be added.
- * @return bool status, true if success, false if there's a dupe
- */
- public function add($id)
- {
- if (isset($this->ids[$id])) {
- return false;
- }
- return $this->ids[$id] = true;
- }
-
- /**
- * Load a list of IDs into the lookup table
- * @param $array_of_ids Array of IDs to load
- * @note This function doesn't care about duplicates
- */
- public function load($array_of_ids)
- {
- foreach ($array_of_ids as $id) {
- $this->ids[$id] = true;
- }
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Injector.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Injector.php
deleted file mode 100644
index 116b470c..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Injector.php
+++ /dev/null
@@ -1,283 +0,0 @@
-processToken()
- * documentation.
- *
- * @todo Allow injectors to request a re-run on their output. This
- * would help if an operation is recursive.
- */
-abstract class HTMLPurifier_Injector
-{
-
- /**
- * Advisory name of injector, this is for friendly error messages.
- * @type string
- */
- public $name;
-
- /**
- * @type HTMLPurifier_HTMLDefinition
- */
- protected $htmlDefinition;
-
- /**
- * Reference to CurrentNesting variable in Context. This is an array
- * list of tokens that we are currently "inside"
- * @type array
- */
- protected $currentNesting;
-
- /**
- * Reference to current token.
- * @type HTMLPurifier_Token
- */
- protected $currentToken;
-
- /**
- * Reference to InputZipper variable in Context.
- * @type HTMLPurifier_Zipper
- */
- protected $inputZipper;
-
- /**
- * Array of elements and attributes this injector creates and therefore
- * need to be allowed by the definition. Takes form of
- * array('element' => array('attr', 'attr2'), 'element2')
- * @type array
- */
- public $needed = array();
-
- /**
- * Number of elements to rewind backwards (relative).
- * @type bool|int
- */
- protected $rewindOffset = false;
-
- /**
- * Rewind to a spot to re-perform processing. This is useful if you
- * deleted a node, and now need to see if this change affected any
- * earlier nodes. Rewinding does not affect other injectors, and can
- * result in infinite loops if not used carefully.
- * @param bool|int $offset
- * @warning HTML Purifier will prevent you from fast-forwarding with this
- * function.
- */
- public function rewindOffset($offset)
- {
- $this->rewindOffset = $offset;
- }
-
- /**
- * Retrieves rewind offset, and then unsets it.
- * @return bool|int
- */
- public function getRewindOffset()
- {
- $r = $this->rewindOffset;
- $this->rewindOffset = false;
- return $r;
- }
-
- /**
- * Prepares the injector by giving it the config and context objects:
- * this allows references to important variables to be made within
- * the injector. This function also checks if the HTML environment
- * will work with the Injector (see checkNeeded()).
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool|string Boolean false if success, string of missing needed element/attribute if failure
- */
- public function prepare($config, $context)
- {
- $this->htmlDefinition = $config->getHTMLDefinition();
- // Even though this might fail, some unit tests ignore this and
- // still test checkNeeded, so be careful. Maybe get rid of that
- // dependency.
- $result = $this->checkNeeded($config);
- if ($result !== false) {
- return $result;
- }
- $this->currentNesting =& $context->get('CurrentNesting');
- $this->currentToken =& $context->get('CurrentToken');
- $this->inputZipper =& $context->get('InputZipper');
- return false;
- }
-
- /**
- * This function checks if the HTML environment
- * will work with the Injector: if p tags are not allowed, the
- * Auto-Paragraphing injector should not be enabled.
- * @param HTMLPurifier_Config $config
- * @return bool|string Boolean false if success, string of missing needed element/attribute if failure
- */
- public function checkNeeded($config)
- {
- $def = $config->getHTMLDefinition();
- foreach ($this->needed as $element => $attributes) {
- if (is_int($element)) {
- $element = $attributes;
- }
- if (!isset($def->info[$element])) {
- return $element;
- }
- if (!is_array($attributes)) {
- continue;
- }
- foreach ($attributes as $name) {
- if (!isset($def->info[$element]->attr[$name])) {
- return "$element.$name";
- }
- }
- }
- return false;
- }
-
- /**
- * Tests if the context node allows a certain element
- * @param string $name Name of element to test for
- * @return bool True if element is allowed, false if it is not
- */
- public function allowsElement($name)
- {
- if (!empty($this->currentNesting)) {
- $parent_token = array_pop($this->currentNesting);
- $this->currentNesting[] = $parent_token;
- $parent = $this->htmlDefinition->info[$parent_token->name];
- } else {
- $parent = $this->htmlDefinition->info_parent_def;
- }
- if (!isset($parent->child->elements[$name]) || isset($parent->excludes[$name])) {
- return false;
- }
- // check for exclusion
- if (!empty($this->currentNesting)) {
- for ($i = count($this->currentNesting) - 2; $i >= 0; $i--) {
- $node = $this->currentNesting[$i];
- $def = $this->htmlDefinition->info[$node->name];
- if (isset($def->excludes[$name])) {
- return false;
- }
- }
- }
- return true;
- }
-
- /**
- * Iterator function, which starts with the next token and continues until
- * you reach the end of the input tokens.
- * @warning Please prevent previous references from interfering with this
- * functions by setting $i = null beforehand!
- * @param int $i Current integer index variable for inputTokens
- * @param HTMLPurifier_Token $current Current token variable.
- * Do NOT use $token, as that variable is also a reference
- * @return bool
- */
- protected function forward(&$i, &$current)
- {
- if ($i === null) {
- $i = count($this->inputZipper->back) - 1;
- } else {
- $i--;
- }
- if ($i < 0) {
- return false;
- }
- $current = $this->inputZipper->back[$i];
- return true;
- }
-
- /**
- * Similar to _forward, but accepts a third parameter $nesting (which
- * should be initialized at 0) and stops when we hit the end tag
- * for the node $this->inputIndex starts in.
- * @param int $i Current integer index variable for inputTokens
- * @param HTMLPurifier_Token $current Current token variable.
- * Do NOT use $token, as that variable is also a reference
- * @param int $nesting
- * @return bool
- */
- protected function forwardUntilEndToken(&$i, &$current, &$nesting)
- {
- $result = $this->forward($i, $current);
- if (!$result) {
- return false;
- }
- if ($nesting === null) {
- $nesting = 0;
- }
- if ($current instanceof HTMLPurifier_Token_Start) {
- $nesting++;
- } elseif ($current instanceof HTMLPurifier_Token_End) {
- if ($nesting <= 0) {
- return false;
- }
- $nesting--;
- }
- return true;
- }
-
- /**
- * Iterator function, starts with the previous token and continues until
- * you reach the beginning of input tokens.
- * @warning Please prevent previous references from interfering with this
- * functions by setting $i = null beforehand!
- * @param int $i Current integer index variable for inputTokens
- * @param HTMLPurifier_Token $current Current token variable.
- * Do NOT use $token, as that variable is also a reference
- * @return bool
- */
- protected function backward(&$i, &$current)
- {
- if ($i === null) {
- $i = count($this->inputZipper->front) - 1;
- } else {
- $i--;
- }
- if ($i < 0) {
- return false;
- }
- $current = $this->inputZipper->front[$i];
- return true;
- }
-
- /**
- * Handler that is called when a text token is processed
- */
- public function handleText(&$token)
- {
- }
-
- /**
- * Handler that is called when a start or empty token is processed
- */
- public function handleElement(&$token)
- {
- }
-
- /**
- * Handler that is called when an end token is processed
- */
- public function handleEnd(&$token)
- {
- $this->notifyEnd($token);
- }
-
- /**
- * Notifier that is called when an end token is processed
- * @param HTMLPurifier_Token $token Current token variable.
- * @note This differs from handlers in that the token is read-only
- * @deprecated
- */
- public function notifyEnd($token)
- {
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Injector/AutoParagraph.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Injector/AutoParagraph.php
deleted file mode 100644
index 4afdd128..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Injector/AutoParagraph.php
+++ /dev/null
@@ -1,356 +0,0 @@
-armor['MakeWellFormed_TagClosedError'] = true;
- return $par;
- }
-
- /**
- * @param HTMLPurifier_Token_Text $token
- */
- public function handleText(&$token)
- {
- $text = $token->data;
- // Does the current parent allow tags?
- if ($this->allowsElement('p')) {
- if (empty($this->currentNesting) || strpos($text, "\n\n") !== false) {
- // Note that we have differing behavior when dealing with text
- // in the anonymous root node, or a node inside the document.
- // If the text as a double-newline, the treatment is the same;
- // if it doesn't, see the next if-block if you're in the document.
-
- $i = $nesting = null;
- if (!$this->forwardUntilEndToken($i, $current, $nesting) && $token->is_whitespace) {
- // State 1.1: ... ^ (whitespace, then document end)
- // ----
- // This is a degenerate case
- } else {
- if (!$token->is_whitespace || $this->_isInline($current)) {
- // State 1.2: PAR1
- // ----
-
- // State 1.3: PAR1\n\nPAR2
- // ------------
-
- // State 1.4:
PAR1\n\nPAR2 (see State 2)
- // ------------
- $token = array($this->_pStart());
- $this->_splitText($text, $token);
- } else {
- // State 1.5: \n
- // --
- }
- }
- } else {
- // State 2:
PAR1... (similar to 1.4)
- // ----
-
- // We're in an element that allows paragraph tags, but we're not
- // sure if we're going to need them.
- if ($this->_pLookAhead()) {
- // State 2.1:
PAR1
PAR1\n\nPAR2
- // ----
- // Note: This will always be the first child, since any
- // previous inline element would have triggered this very
- // same routine, and found the double newline. One possible
- // exception would be a comment.
- $token = array($this->_pStart(), $token);
- } else {
- // State 2.2.1: PAR1
- // ----
-
- // State 2.2.2:
PAR1PAR1
- // ----
- }
- }
- // Is the current parent a
tag?
- } elseif (!empty($this->currentNesting) &&
- $this->currentNesting[count($this->currentNesting) - 1]->name == 'p') {
- // State 3.1: ...
PAR1
- // ----
-
- // State 3.2: ...
PAR1\n\nPAR2
- // ------------
- $token = array();
- $this->_splitText($text, $token);
- // Abort!
- } else {
- // State 4.1: ...PAR1
- // ----
-
- // State 4.2: ...PAR1\n\nPAR2
- // ------------
- }
- }
-
- /**
- * @param HTMLPurifier_Token $token
- */
- public function handleElement(&$token)
- {
- // We don't have to check if we're already in a
tag for block
- // tokens, because the tag would have been autoclosed by MakeWellFormed.
- if ($this->allowsElement('p')) {
- if (!empty($this->currentNesting)) {
- if ($this->_isInline($token)) {
- // State 1:
...
- // ---
- // Check if this token is adjacent to the parent token
- // (seek backwards until token isn't whitespace)
- $i = null;
- $this->backward($i, $prev);
-
- if (!$prev instanceof HTMLPurifier_Token_Start) {
- // Token wasn't adjacent
- if ($prev instanceof HTMLPurifier_Token_Text &&
- substr($prev->data, -2) === "\n\n"
- ) {
- // State 1.1.4: PAR1
\n\n
- // ---
- // Quite frankly, this should be handled by splitText
- $token = array($this->_pStart(), $token);
- } else {
- // State 1.1.1: PAR1
- // ---
- // State 1.1.2:
- // ---
- // State 1.1.3: PAR
- // ---
- }
- } else {
- // State 1.2.1:
- // ---
- // Lookahead to see if is needed.
- if ($this->_pLookAhead()) {
- // State 1.3.1:
PAR1\n\nPAR2
- // ---
- $token = array($this->_pStart(), $token);
- } else {
- // State 1.3.2: PAR1
- // ---
-
- // State 1.3.3:
- // ---
- }
- }
- } else {
- // State 2.3: ...
- // -----
- }
- } else {
- if ($this->_isInline($token)) {
- // State 3.1:
- // ---
- // This is where the {p} tag is inserted, not reflected in
- // inputTokens yet, however.
- $token = array($this->_pStart(), $token);
- } else {
- // State 3.2:
- // -----
- }
-
- $i = null;
- if ($this->backward($i, $prev)) {
- if (!$prev instanceof HTMLPurifier_Token_Text) {
- // State 3.1.1: ...{p}
- // ---
- // State 3.2.1: ...
- // -----
- if (!is_array($token)) {
- $token = array($token);
- }
- array_unshift($token, new HTMLPurifier_Token_Text("\n\n"));
- } else {
- // State 3.1.2: ...\n\n{p}
- // ---
- // State 3.2.2: ...\n\n
- // -----
- // Note: PAR
cannot occur because PAR would have been
- // wrapped in tags.
- }
- }
- }
- } else {
- // State 2.2:
- // ----
- // State 2.4:
- // ---
- }
- }
-
- /**
- * Splits up a text in paragraph tokens and appends them
- * to the result stream that will replace the original
- * @param string $data String text data that will be processed
- * into paragraphs
- * @param HTMLPurifier_Token[] $result Reference to array of tokens that the
- * tags will be appended onto
- */
- private function _splitText($data, &$result)
- {
- $raw_paragraphs = explode("\n\n", $data);
- $paragraphs = array(); // without empty paragraphs
- $needs_start = false;
- $needs_end = false;
-
- $c = count($raw_paragraphs);
- if ($c == 1) {
- // There were no double-newlines, abort quickly. In theory this
- // should never happen.
- $result[] = new HTMLPurifier_Token_Text($data);
- return;
- }
- for ($i = 0; $i < $c; $i++) {
- $par = $raw_paragraphs[$i];
- if (trim($par) !== '') {
- $paragraphs[] = $par;
- } else {
- if ($i == 0) {
- // Double newline at the front
- if (empty($result)) {
- // The empty result indicates that the AutoParagraph
- // injector did not add any start paragraph tokens.
- // This means that we have been in a paragraph for
- // a while, and the newline means we should start a new one.
- $result[] = new HTMLPurifier_Token_End('p');
- $result[] = new HTMLPurifier_Token_Text("\n\n");
- // However, the start token should only be added if
- // there is more processing to be done (i.e. there are
- // real paragraphs in here). If there are none, the
- // next start paragraph tag will be handled by the
- // next call to the injector
- $needs_start = true;
- } else {
- // We just started a new paragraph!
- // Reinstate a double-newline for presentation's sake, since
- // it was in the source code.
- array_unshift($result, new HTMLPurifier_Token_Text("\n\n"));
- }
- } elseif ($i + 1 == $c) {
- // Double newline at the end
- // There should be a trailing
when we're finally done.
- $needs_end = true;
- }
- }
- }
-
- // Check if this was just a giant blob of whitespace. Move this earlier,
- // perhaps?
- if (empty($paragraphs)) {
- return;
- }
-
- // Add the start tag indicated by \n\n at the beginning of $data
- if ($needs_start) {
- $result[] = $this->_pStart();
- }
-
- // Append the paragraphs onto the result
- foreach ($paragraphs as $par) {
- $result[] = new HTMLPurifier_Token_Text($par);
- $result[] = new HTMLPurifier_Token_End('p');
- $result[] = new HTMLPurifier_Token_Text("\n\n");
- $result[] = $this->_pStart();
- }
-
- // Remove trailing start token; Injector will handle this later if
- // it was indeed needed. This prevents from needing to do a lookahead,
- // at the cost of a lookbehind later.
- array_pop($result);
-
- // If there is no need for an end tag, remove all of it and let
- // MakeWellFormed close it later.
- if (!$needs_end) {
- array_pop($result); // removes \n\n
- array_pop($result); // removes
- }
- }
-
- /**
- * Returns true if passed token is inline (and, ergo, allowed in
- * paragraph tags)
- * @param HTMLPurifier_Token $token
- * @return bool
- */
- private function _isInline($token)
- {
- return isset($this->htmlDefinition->info['p']->child->elements[$token->name]);
- }
-
- /**
- * Looks ahead in the token list and determines whether or not we need
- * to insert a tag.
- * @return bool
- */
- private function _pLookAhead()
- {
- if ($this->currentToken instanceof HTMLPurifier_Token_Start) {
- $nesting = 1;
- } else {
- $nesting = 0;
- }
- $ok = false;
- $i = null;
- while ($this->forwardUntilEndToken($i, $current, $nesting)) {
- $result = $this->_checkNeedsP($current);
- if ($result !== null) {
- $ok = $result;
- break;
- }
- }
- return $ok;
- }
-
- /**
- * Determines if a particular token requires an earlier inline token
- * to get a paragraph. This should be used with _forwardUntilEndToken
- * @param HTMLPurifier_Token $current
- * @return bool
- */
- private function _checkNeedsP($current)
- {
- if ($current instanceof HTMLPurifier_Token_Start) {
- if (!$this->_isInline($current)) {
- //
PAR1
- // ----
- // Terminate early, since we hit a block element
- return false;
- }
- } elseif ($current instanceof HTMLPurifier_Token_Text) {
- if (strpos($current->data, "\n\n") !== false) {
- //
PAR1
PAR1\n\nPAR2
- // ----
- return true;
- } else {
- // PAR1
PAR1...
- // ----
- }
- }
- return null;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Injector/DisplayLinkURI.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Injector/DisplayLinkURI.php
deleted file mode 100644
index c19b1bc2..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Injector/DisplayLinkURI.php
+++ /dev/null
@@ -1,40 +0,0 @@
-start->attr['href'])) {
- $url = $token->start->attr['href'];
- unset($token->start->attr['href']);
- $token = array($token, new HTMLPurifier_Token_Text(" ($url)"));
- } else {
- // nothing to display
- }
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Injector/Linkify.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Injector/Linkify.php
deleted file mode 100644
index 74f83eaa..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Injector/Linkify.php
+++ /dev/null
@@ -1,64 +0,0 @@
- array('href'));
-
- /**
- * @param HTMLPurifier_Token $token
- */
- public function handleText(&$token)
- {
- if (!$this->allowsElement('a')) {
- return;
- }
-
- if (strpos($token->data, '://') === false) {
- // our really quick heuristic failed, abort
- // this may not work so well if we want to match things like
- // "google.com", but then again, most people don't
- return;
- }
-
- // there is/are URL(s). Let's split the string.
- // We use this regex:
- // https://gist.github.com/gruber/249502
- // but with @cscott's backtracking fix and also
- // the Unicode characters un-Unicodified.
- $bits = preg_split(
- '/\\b((?:[a-z][\\w\\-]+:(?:\\/{1,3}|[a-z0-9%])|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}\\/)(?:[^\\s()<>]|\\((?:[^\\s()<>]|(?:\\([^\\s()<>]+\\)))*\\))+(?:\\((?:[^\\s()<>]|(?:\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:\'".,<>?\x{00ab}\x{00bb}\x{201c}\x{201d}\x{2018}\x{2019}]))/iu',
- $token->data, -1, PREG_SPLIT_DELIM_CAPTURE);
-
-
- $token = array();
-
- // $i = index
- // $c = count
- // $l = is link
- for ($i = 0, $c = count($bits), $l = false; $i < $c; $i++, $l = !$l) {
- if (!$l) {
- if ($bits[$i] === '') {
- continue;
- }
- $token[] = new HTMLPurifier_Token_Text($bits[$i]);
- } else {
- $token[] = new HTMLPurifier_Token_Start('a', array('href' => $bits[$i]));
- $token[] = new HTMLPurifier_Token_Text($bits[$i]);
- $token[] = new HTMLPurifier_Token_End('a');
- }
- }
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Injector/PurifierLinkify.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Injector/PurifierLinkify.php
deleted file mode 100644
index cb9046f3..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Injector/PurifierLinkify.php
+++ /dev/null
@@ -1,71 +0,0 @@
- array('href'));
-
- /**
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return string
- */
- public function prepare($config, $context)
- {
- $this->docURL = $config->get('AutoFormat.PurifierLinkify.DocURL');
- return parent::prepare($config, $context);
- }
-
- /**
- * @param HTMLPurifier_Token $token
- */
- public function handleText(&$token)
- {
- if (!$this->allowsElement('a')) {
- return;
- }
- if (strpos($token->data, '%') === false) {
- return;
- }
-
- $bits = preg_split('#%([a-z0-9]+\.[a-z0-9]+)#Si', $token->data, -1, PREG_SPLIT_DELIM_CAPTURE);
- $token = array();
-
- // $i = index
- // $c = count
- // $l = is link
- for ($i = 0, $c = count($bits), $l = false; $i < $c; $i++, $l = !$l) {
- if (!$l) {
- if ($bits[$i] === '') {
- continue;
- }
- $token[] = new HTMLPurifier_Token_Text($bits[$i]);
- } else {
- $token[] = new HTMLPurifier_Token_Start(
- 'a',
- array('href' => str_replace('%s', $bits[$i], $this->docURL))
- );
- $token[] = new HTMLPurifier_Token_Text('%' . $bits[$i]);
- $token[] = new HTMLPurifier_Token_End('a');
- }
- }
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Injector/RemoveEmpty.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Injector/RemoveEmpty.php
deleted file mode 100644
index 0ebc477c..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Injector/RemoveEmpty.php
+++ /dev/null
@@ -1,112 +0,0 @@
-config = $config;
- $this->context = $context;
- $this->removeNbsp = $config->get('AutoFormat.RemoveEmpty.RemoveNbsp');
- $this->removeNbspExceptions = $config->get('AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions');
- $this->exclude = $config->get('AutoFormat.RemoveEmpty.Predicate');
- foreach ($this->exclude as $key => $attrs) {
- if (!is_array($attrs)) {
- // HACK, see HTMLPurifier/Printer/ConfigForm.php
- $this->exclude[$key] = explode(';', $attrs);
- }
- }
- $this->attrValidator = new HTMLPurifier_AttrValidator();
- }
-
- /**
- * @param HTMLPurifier_Token $token
- */
- public function handleElement(&$token)
- {
- if (!$token instanceof HTMLPurifier_Token_Start) {
- return;
- }
- $next = false;
- $deleted = 1; // the current tag
- for ($i = count($this->inputZipper->back) - 1; $i >= 0; $i--, $deleted++) {
- $next = $this->inputZipper->back[$i];
- if ($next instanceof HTMLPurifier_Token_Text) {
- if ($next->is_whitespace) {
- continue;
- }
- if ($this->removeNbsp && !isset($this->removeNbspExceptions[$token->name])) {
- $plain = str_replace("\xC2\xA0", "", $next->data);
- $isWsOrNbsp = $plain === '' || ctype_space($plain);
- if ($isWsOrNbsp) {
- continue;
- }
- }
- }
- break;
- }
- if (!$next || ($next instanceof HTMLPurifier_Token_End && $next->name == $token->name)) {
- $this->attrValidator->validateToken($token, $this->config, $this->context);
- $token->armor['ValidateAttributes'] = true;
- if (isset($this->exclude[$token->name])) {
- $r = true;
- foreach ($this->exclude[$token->name] as $elem) {
- if (!isset($token->attr[$elem])) $r = false;
- }
- if ($r) return;
- }
- if (isset($token->attr['id']) || isset($token->attr['name'])) {
- return;
- }
- $token = $deleted + 1;
- for ($b = 0, $c = count($this->inputZipper->front); $b < $c; $b++) {
- $prev = $this->inputZipper->front[$b];
- if ($prev instanceof HTMLPurifier_Token_Text && $prev->is_whitespace) {
- continue;
- }
- break;
- }
- // This is safe because we removed the token that triggered this.
- $this->rewindOffset($b+$deleted);
- return;
- }
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php
deleted file mode 100644
index 9ee7aa84..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php
+++ /dev/null
@@ -1,84 +0,0 @@
-attrValidator = new HTMLPurifier_AttrValidator();
- $this->config = $config;
- $this->context = $context;
- return parent::prepare($config, $context);
- }
-
- /**
- * @param HTMLPurifier_Token $token
- */
- public function handleElement(&$token)
- {
- if ($token->name !== 'span' || !$token instanceof HTMLPurifier_Token_Start) {
- return;
- }
-
- // We need to validate the attributes now since this doesn't normally
- // happen until after MakeWellFormed. If all the attributes are removed
- // the span needs to be removed too.
- $this->attrValidator->validateToken($token, $this->config, $this->context);
- $token->armor['ValidateAttributes'] = true;
-
- if (!empty($token->attr)) {
- return;
- }
-
- $nesting = 0;
- while ($this->forwardUntilEndToken($i, $current, $nesting)) {
- }
-
- if ($current instanceof HTMLPurifier_Token_End && $current->name === 'span') {
- // Mark closing span tag for deletion
- $current->markForDeletion = true;
- // Delete open span tag
- $token = false;
- }
- }
-
- /**
- * @param HTMLPurifier_Token $token
- */
- public function handleEnd(&$token)
- {
- if ($token->markForDeletion) {
- $token = false;
- }
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Injector/SafeObject.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Injector/SafeObject.php
deleted file mode 100644
index 317f7864..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Injector/SafeObject.php
+++ /dev/null
@@ -1,124 +0,0 @@
- 'never',
- 'allowNetworking' => 'internal',
- );
-
- /**
- * These are all lower-case keys.
- * @type array
- */
- protected $allowedParam = array(
- 'wmode' => true,
- 'movie' => true,
- 'flashvars' => true,
- 'src' => true,
- 'allowfullscreen' => true, // if omitted, assume to be 'false'
- );
-
- /**
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return void
- */
- public function prepare($config, $context)
- {
- parent::prepare($config, $context);
- }
-
- /**
- * @param HTMLPurifier_Token $token
- */
- public function handleElement(&$token)
- {
- if ($token->name == 'object') {
- $this->objectStack[] = $token;
- $this->paramStack[] = array();
- $new = array($token);
- foreach ($this->addParam as $name => $value) {
- $new[] = new HTMLPurifier_Token_Empty('param', array('name' => $name, 'value' => $value));
- }
- $token = $new;
- } elseif ($token->name == 'param') {
- $nest = count($this->currentNesting) - 1;
- if ($nest >= 0 && $this->currentNesting[$nest]->name === 'object') {
- $i = count($this->objectStack) - 1;
- if (!isset($token->attr['name'])) {
- $token = false;
- return;
- }
- $n = $token->attr['name'];
- // We need this fix because YouTube doesn't supply a data
- // attribute, which we need if a type is specified. This is
- // *very* Flash specific.
- if (!isset($this->objectStack[$i]->attr['data']) &&
- ($token->attr['name'] == 'movie' || $token->attr['name'] == 'src')
- ) {
- $this->objectStack[$i]->attr['data'] = $token->attr['value'];
- }
- // Check if the parameter is the correct value but has not
- // already been added
- if (!isset($this->paramStack[$i][$n]) &&
- isset($this->addParam[$n]) &&
- $token->attr['name'] === $this->addParam[$n]) {
- // keep token, and add to param stack
- $this->paramStack[$i][$n] = true;
- } elseif (isset($this->allowedParam[strtolower($n)])) {
- // keep token, don't do anything to it
- // (could possibly check for duplicates here)
- // Note: In principle, parameters should be case sensitive.
- // But it seems they are not really; so accept any case.
- } else {
- $token = false;
- }
- } else {
- // not directly inside an object, DENY!
- $token = false;
- }
- }
- }
-
- public function handleEnd(&$token)
- {
- // This is the WRONG way of handling the object and param stacks;
- // we should be inserting them directly on the relevant object tokens
- // so that the global stack handling handles it.
- if ($token->name == 'object') {
- array_pop($this->objectStack);
- array_pop($this->paramStack);
- }
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Language.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Language.php
deleted file mode 100644
index 65277dd4..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Language.php
+++ /dev/null
@@ -1,204 +0,0 @@
-config = $config;
- $this->context = $context;
- }
-
- /**
- * Loads language object with necessary info from factory cache
- * @note This is a lazy loader
- */
- public function load()
- {
- if ($this->_loaded) {
- return;
- }
- $factory = HTMLPurifier_LanguageFactory::instance();
- $factory->loadLanguage($this->code);
- foreach ($factory->keys as $key) {
- $this->$key = $factory->cache[$this->code][$key];
- }
- $this->_loaded = true;
- }
-
- /**
- * Retrieves a localised message.
- * @param string $key string identifier of message
- * @return string localised message
- */
- public function getMessage($key)
- {
- if (!$this->_loaded) {
- $this->load();
- }
- if (!isset($this->messages[$key])) {
- return "[$key]";
- }
- return $this->messages[$key];
- }
-
- /**
- * Retrieves a localised error name.
- * @param int $int error number, corresponding to PHP's error reporting
- * @return string localised message
- */
- public function getErrorName($int)
- {
- if (!$this->_loaded) {
- $this->load();
- }
- if (!isset($this->errorNames[$int])) {
- return "[Error: $int]";
- }
- return $this->errorNames[$int];
- }
-
- /**
- * Converts an array list into a string readable representation
- * @param array $array
- * @return string
- */
- public function listify($array)
- {
- $sep = $this->getMessage('Item separator');
- $sep_last = $this->getMessage('Item separator last');
- $ret = '';
- for ($i = 0, $c = count($array); $i < $c; $i++) {
- if ($i == 0) {
- } elseif ($i + 1 < $c) {
- $ret .= $sep;
- } else {
- $ret .= $sep_last;
- }
- $ret .= $array[$i];
- }
- return $ret;
- }
-
- /**
- * Formats a localised message with passed parameters
- * @param string $key string identifier of message
- * @param array $args Parameters to substitute in
- * @return string localised message
- * @todo Implement conditionals? Right now, some messages make
- * reference to line numbers, but those aren't always available
- */
- public function formatMessage($key, $args = array())
- {
- if (!$this->_loaded) {
- $this->load();
- }
- if (!isset($this->messages[$key])) {
- return "[$key]";
- }
- $raw = $this->messages[$key];
- $subst = array();
- $generator = false;
- foreach ($args as $i => $value) {
- if (is_object($value)) {
- if ($value instanceof HTMLPurifier_Token) {
- // factor this out some time
- if (!$generator) {
- $generator = $this->context->get('Generator');
- }
- if (isset($value->name)) {
- $subst['$'.$i.'.Name'] = $value->name;
- }
- if (isset($value->data)) {
- $subst['$'.$i.'.Data'] = $value->data;
- }
- $subst['$'.$i.'.Compact'] =
- $subst['$'.$i.'.Serialized'] = $generator->generateFromToken($value);
- // a more complex algorithm for compact representation
- // could be introduced for all types of tokens. This
- // may need to be factored out into a dedicated class
- if (!empty($value->attr)) {
- $stripped_token = clone $value;
- $stripped_token->attr = array();
- $subst['$'.$i.'.Compact'] = $generator->generateFromToken($stripped_token);
- }
- $subst['$'.$i.'.Line'] = $value->line ? $value->line : 'unknown';
- }
- continue;
- } elseif (is_array($value)) {
- $keys = array_keys($value);
- if (array_keys($keys) === $keys) {
- // list
- $subst['$'.$i] = $this->listify($value);
- } else {
- // associative array
- // no $i implementation yet, sorry
- $subst['$'.$i.'.Keys'] = $this->listify($keys);
- $subst['$'.$i.'.Values'] = $this->listify(array_values($value));
- }
- continue;
- }
- $subst['$' . $i] = $value;
- }
- return strtr($raw, $subst);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Language/messages/en.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Language/messages/en.php
deleted file mode 100644
index c7f197e1..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Language/messages/en.php
+++ /dev/null
@@ -1,55 +0,0 @@
- 'HTML Purifier',
-// for unit testing purposes
- 'LanguageFactoryTest: Pizza' => 'Pizza',
- 'LanguageTest: List' => '$1',
- 'LanguageTest: Hash' => '$1.Keys; $1.Values',
- 'Item separator' => ', ',
- 'Item separator last' => ' and ', // non-Harvard style
-
- 'ErrorCollector: No errors' => 'No errors detected. However, because error reporting is still incomplete, there may have been errors that the error collector was not notified of; please inspect the output HTML carefully.',
- 'ErrorCollector: At line' => ' at line $line',
- 'ErrorCollector: Incidental errors' => 'Incidental errors',
- 'Lexer: Unclosed comment' => 'Unclosed comment',
- 'Lexer: Unescaped lt' => 'Unescaped less-than sign (<) should be <',
- 'Lexer: Missing gt' => 'Missing greater-than sign (>), previous less-than sign (<) should be escaped',
- 'Lexer: Missing attribute key' => 'Attribute declaration has no key',
- 'Lexer: Missing end quote' => 'Attribute declaration has no end quote',
- 'Lexer: Extracted body' => 'Removed document metadata tags',
- 'Strategy_RemoveForeignElements: Tag transform' => '<$1> element transformed into $CurrentToken.Serialized',
- 'Strategy_RemoveForeignElements: Missing required attribute' => '$CurrentToken.Compact element missing required attribute $1',
- 'Strategy_RemoveForeignElements: Foreign element to text' => 'Unrecognized $CurrentToken.Serialized tag converted to text',
- 'Strategy_RemoveForeignElements: Foreign element removed' => 'Unrecognized $CurrentToken.Serialized tag removed',
- 'Strategy_RemoveForeignElements: Comment removed' => 'Comment containing "$CurrentToken.Data" removed',
- 'Strategy_RemoveForeignElements: Foreign meta element removed' => 'Unrecognized $CurrentToken.Serialized meta tag and all descendants removed',
- 'Strategy_RemoveForeignElements: Token removed to end' => 'Tags and text starting from $1 element where removed to end',
- 'Strategy_RemoveForeignElements: Trailing hyphen in comment removed' => 'Trailing hyphen(s) in comment removed',
- 'Strategy_RemoveForeignElements: Hyphens in comment collapsed' => 'Double hyphens in comments are not allowed, and were collapsed into single hyphens',
- 'Strategy_MakeWellFormed: Unnecessary end tag removed' => 'Unnecessary $CurrentToken.Serialized tag removed',
- 'Strategy_MakeWellFormed: Unnecessary end tag to text' => 'Unnecessary $CurrentToken.Serialized tag converted to text',
- 'Strategy_MakeWellFormed: Tag auto closed' => '$1.Compact started on line $1.Line auto-closed by $CurrentToken.Compact',
- 'Strategy_MakeWellFormed: Tag carryover' => '$1.Compact started on line $1.Line auto-continued into $CurrentToken.Compact',
- 'Strategy_MakeWellFormed: Stray end tag removed' => 'Stray $CurrentToken.Serialized tag removed',
- 'Strategy_MakeWellFormed: Stray end tag to text' => 'Stray $CurrentToken.Serialized tag converted to text',
- 'Strategy_MakeWellFormed: Tag closed by element end' => '$1.Compact tag started on line $1.Line closed by end of $CurrentToken.Serialized',
- 'Strategy_MakeWellFormed: Tag closed by document end' => '$1.Compact tag started on line $1.Line closed by end of document',
- 'Strategy_FixNesting: Node removed' => '$CurrentToken.Compact node removed',
- 'Strategy_FixNesting: Node excluded' => '$CurrentToken.Compact node removed due to descendant exclusion by ancestor element',
- 'Strategy_FixNesting: Node reorganized' => 'Contents of $CurrentToken.Compact node reorganized to enforce its content model',
- 'Strategy_FixNesting: Node contents removed' => 'Contents of $CurrentToken.Compact node removed',
- 'AttrValidator: Attributes transformed' => 'Attributes on $CurrentToken.Compact transformed from $1.Keys to $2.Keys',
- 'AttrValidator: Attribute removed' => '$CurrentAttr.Name attribute on $CurrentToken.Compact removed',
-);
-
-$errorNames = array(
- E_ERROR => 'Error',
- E_WARNING => 'Warning',
- E_NOTICE => 'Notice'
-);
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/LanguageFactory.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/LanguageFactory.php
deleted file mode 100644
index 4e35272d..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/LanguageFactory.php
+++ /dev/null
@@ -1,209 +0,0 @@
-cache[$language_code][$key] = $value
- * @type array
- */
- public $cache;
-
- /**
- * Valid keys in the HTMLPurifier_Language object. Designates which
- * variables to slurp out of a message file.
- * @type array
- */
- public $keys = array('fallback', 'messages', 'errorNames');
-
- /**
- * Instance to validate language codes.
- * @type HTMLPurifier_AttrDef_Lang
- *
- */
- protected $validator;
-
- /**
- * Cached copy of dirname(__FILE__), directory of current file without
- * trailing slash.
- * @type string
- */
- protected $dir;
-
- /**
- * Keys whose contents are a hash map and can be merged.
- * @type array
- */
- protected $mergeable_keys_map = array('messages' => true, 'errorNames' => true);
-
- /**
- * Keys whose contents are a list and can be merged.
- * @value array lookup
- */
- protected $mergeable_keys_list = array();
-
- /**
- * Retrieve sole instance of the factory.
- * @param HTMLPurifier_LanguageFactory $prototype Optional prototype to overload sole instance with,
- * or bool true to reset to default factory.
- * @return HTMLPurifier_LanguageFactory
- */
- public static function instance($prototype = null)
- {
- static $instance = null;
- if ($prototype !== null) {
- $instance = $prototype;
- } elseif ($instance === null || $prototype == true) {
- $instance = new HTMLPurifier_LanguageFactory();
- $instance->setup();
- }
- return $instance;
- }
-
- /**
- * Sets up the singleton, much like a constructor
- * @note Prevents people from getting this outside of the singleton
- */
- public function setup()
- {
- $this->validator = new HTMLPurifier_AttrDef_Lang();
- $this->dir = HTMLPURIFIER_PREFIX . '/HTMLPurifier';
- }
-
- /**
- * Creates a language object, handles class fallbacks
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @param bool|string $code Code to override configuration with. Private parameter.
- * @return HTMLPurifier_Language
- */
- public function create($config, $context, $code = false)
- {
- // validate language code
- if ($code === false) {
- $code = $this->validator->validate(
- $config->get('Core.Language'),
- $config,
- $context
- );
- } else {
- $code = $this->validator->validate($code, $config, $context);
- }
- if ($code === false) {
- $code = 'en'; // malformed code becomes English
- }
-
- $pcode = str_replace('-', '_', $code); // make valid PHP classname
- static $depth = 0; // recursion protection
-
- if ($code == 'en') {
- $lang = new HTMLPurifier_Language($config, $context);
- } else {
- $class = 'HTMLPurifier_Language_' . $pcode;
- $file = $this->dir . '/Language/classes/' . $code . '.php';
- if (file_exists($file) || class_exists($class, false)) {
- $lang = new $class($config, $context);
- } else {
- // Go fallback
- $raw_fallback = $this->getFallbackFor($code);
- $fallback = $raw_fallback ? $raw_fallback : 'en';
- $depth++;
- $lang = $this->create($config, $context, $fallback);
- if (!$raw_fallback) {
- $lang->error = true;
- }
- $depth--;
- }
- }
- $lang->code = $code;
- return $lang;
- }
-
- /**
- * Returns the fallback language for language
- * @note Loads the original language into cache
- * @param string $code language code
- * @return string|bool
- */
- public function getFallbackFor($code)
- {
- $this->loadLanguage($code);
- return $this->cache[$code]['fallback'];
- }
-
- /**
- * Loads language into the cache, handles message file and fallbacks
- * @param string $code language code
- */
- public function loadLanguage($code)
- {
- static $languages_seen = array(); // recursion guard
-
- // abort if we've already loaded it
- if (isset($this->cache[$code])) {
- return;
- }
-
- // generate filename
- $filename = $this->dir . '/Language/messages/' . $code . '.php';
-
- // default fallback : may be overwritten by the ensuing include
- $fallback = ($code != 'en') ? 'en' : false;
-
- // load primary localisation
- if (!file_exists($filename)) {
- // skip the include: will rely solely on fallback
- $filename = $this->dir . '/Language/messages/en.php';
- $cache = array();
- } else {
- include $filename;
- $cache = compact($this->keys);
- }
-
- // load fallback localisation
- if (!empty($fallback)) {
-
- // infinite recursion guard
- if (isset($languages_seen[$code])) {
- trigger_error(
- 'Circular fallback reference in language ' .
- $code,
- E_USER_ERROR
- );
- $fallback = 'en';
- }
- $language_seen[$code] = true;
-
- // load the fallback recursively
- $this->loadLanguage($fallback);
- $fallback_cache = $this->cache[$fallback];
-
- // merge fallback with current language
- foreach ($this->keys as $key) {
- if (isset($cache[$key]) && isset($fallback_cache[$key])) {
- if (isset($this->mergeable_keys_map[$key])) {
- $cache[$key] = $cache[$key] + $fallback_cache[$key];
- } elseif (isset($this->mergeable_keys_list[$key])) {
- $cache[$key] = array_merge($fallback_cache[$key], $cache[$key]);
- }
- } else {
- $cache[$key] = $fallback_cache[$key];
- }
- }
- }
-
- // save to cache for later retrieval
- $this->cache[$code] = $cache;
- return;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Length.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Length.php
deleted file mode 100644
index e70da55a..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Length.php
+++ /dev/null
@@ -1,162 +0,0 @@
- true, 'ex' => true, 'px' => true, 'in' => true,
- 'cm' => true, 'mm' => true, 'pt' => true, 'pc' => true,
- 'ch' => true, 'rem' => true, 'vw' => true, 'vh' => true,
- 'vmin' => true, 'vmax' => true
- );
-
- /**
- * @param string $n Magnitude
- * @param bool|string $u Unit
- */
- public function __construct($n = '0', $u = false)
- {
- $this->n = (string) $n;
- $this->unit = $u !== false ? (string) $u : false;
- }
-
- /**
- * @param string $s Unit string, like '2em' or '3.4in'
- * @return HTMLPurifier_Length
- * @warning Does not perform validation.
- */
- public static function make($s)
- {
- if ($s instanceof HTMLPurifier_Length) {
- return $s;
- }
- $n_length = strspn($s, '1234567890.+-');
- $n = substr($s, 0, $n_length);
- $unit = substr($s, $n_length);
- if ($unit === '') {
- $unit = false;
- }
- return new HTMLPurifier_Length($n, $unit);
- }
-
- /**
- * Validates the number and unit.
- * @return bool
- */
- protected function validate()
- {
- // Special case:
- if ($this->n === '+0' || $this->n === '-0') {
- $this->n = '0';
- }
- if ($this->n === '0' && $this->unit === false) {
- return true;
- }
- if (!ctype_lower($this->unit)) {
- $this->unit = strtolower($this->unit);
- }
- if (!isset(HTMLPurifier_Length::$allowedUnits[$this->unit])) {
- return false;
- }
- // Hack:
- $def = new HTMLPurifier_AttrDef_CSS_Number();
- $result = $def->validate($this->n, false, false);
- if ($result === false) {
- return false;
- }
- $this->n = $result;
- return true;
- }
-
- /**
- * Returns string representation of number.
- * @return string
- */
- public function toString()
- {
- if (!$this->isValid()) {
- return false;
- }
- return $this->n . $this->unit;
- }
-
- /**
- * Retrieves string numeric magnitude.
- * @return string
- */
- public function getN()
- {
- return $this->n;
- }
-
- /**
- * Retrieves string unit.
- * @return string
- */
- public function getUnit()
- {
- return $this->unit;
- }
-
- /**
- * Returns true if this length unit is valid.
- * @return bool
- */
- public function isValid()
- {
- if ($this->isValid === null) {
- $this->isValid = $this->validate();
- }
- return $this->isValid;
- }
-
- /**
- * Compares two lengths, and returns 1 if greater, -1 if less and 0 if equal.
- * @param HTMLPurifier_Length $l
- * @return int
- * @warning If both values are too large or small, this calculation will
- * not work properly
- */
- public function compareTo($l)
- {
- if ($l === false) {
- return false;
- }
- if ($l->unit !== $this->unit) {
- $converter = new HTMLPurifier_UnitConverter();
- $l = $converter->convert($l, $this->unit);
- if ($l === false) {
- return false;
- }
- }
- return $this->n - $l->n;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer.php
deleted file mode 100644
index e9da3ed5..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer.php
+++ /dev/null
@@ -1,382 +0,0 @@
-get('Core.LexerImpl');
- }
-
- $needs_tracking =
- $config->get('Core.MaintainLineNumbers') ||
- $config->get('Core.CollectErrors');
-
- $inst = null;
- if (is_object($lexer)) {
- $inst = $lexer;
- } else {
- if (is_null($lexer)) {
- do {
- // auto-detection algorithm
- if ($needs_tracking) {
- $lexer = 'DirectLex';
- break;
- }
-
- if (class_exists('DOMDocument', false) &&
- method_exists('DOMDocument', 'loadHTML') &&
- !extension_loaded('domxml')
- ) {
- // check for DOM support, because while it's part of the
- // core, it can be disabled compile time. Also, the PECL
- // domxml extension overrides the default DOM, and is evil
- // and nasty and we shan't bother to support it
- $lexer = 'DOMLex';
- } else {
- $lexer = 'DirectLex';
- }
- } while (0);
- } // do..while so we can break
-
- // instantiate recognized string names
- switch ($lexer) {
- case 'DOMLex':
- $inst = new HTMLPurifier_Lexer_DOMLex();
- break;
- case 'DirectLex':
- $inst = new HTMLPurifier_Lexer_DirectLex();
- break;
- case 'PH5P':
- $inst = new HTMLPurifier_Lexer_PH5P();
- break;
- default:
- throw new HTMLPurifier_Exception(
- "Cannot instantiate unrecognized Lexer type " .
- htmlspecialchars($lexer)
- );
- }
- }
-
- if (!$inst) {
- throw new HTMLPurifier_Exception('No lexer was instantiated');
- }
-
- // once PHP DOM implements native line numbers, or we
- // hack out something using XSLT, remove this stipulation
- if ($needs_tracking && !$inst->tracksLineNumbers) {
- throw new HTMLPurifier_Exception(
- 'Cannot use lexer that does not support line numbers with ' .
- 'Core.MaintainLineNumbers or Core.CollectErrors (use DirectLex instead)'
- );
- }
-
- return $inst;
-
- }
-
- // -- CONVENIENCE MEMBERS ---------------------------------------------
-
- public function __construct()
- {
- $this->_entity_parser = new HTMLPurifier_EntityParser();
- }
-
- /**
- * Most common entity to raw value conversion table for special entities.
- * @type array
- */
- protected $_special_entity2str =
- array(
- '"' => '"',
- '&' => '&',
- '<' => '<',
- '>' => '>',
- ''' => "'",
- ''' => "'",
- ''' => "'"
- );
-
- public function parseText($string, $config) {
- return $this->parseData($string, false, $config);
- }
-
- public function parseAttr($string, $config) {
- return $this->parseData($string, true, $config);
- }
-
- /**
- * Parses special entities into the proper characters.
- *
- * This string will translate escaped versions of the special characters
- * into the correct ones.
- *
- * @param string $string String character data to be parsed.
- * @return string Parsed character data.
- */
- public function parseData($string, $is_attr, $config)
- {
- // following functions require at least one character
- if ($string === '') {
- return '';
- }
-
- // subtracts amps that cannot possibly be escaped
- $num_amp = substr_count($string, '&') - substr_count($string, '& ') -
- ($string[strlen($string) - 1] === '&' ? 1 : 0);
-
- if (!$num_amp) {
- return $string;
- } // abort if no entities
- $num_esc_amp = substr_count($string, '&');
- $string = strtr($string, $this->_special_entity2str);
-
- // code duplication for sake of optimization, see above
- $num_amp_2 = substr_count($string, '&') - substr_count($string, '& ') -
- ($string[strlen($string) - 1] === '&' ? 1 : 0);
-
- if ($num_amp_2 <= $num_esc_amp) {
- return $string;
- }
-
- // hmm... now we have some uncommon entities. Use the callback.
- if ($config->get('Core.LegacyEntityDecoder')) {
- $string = $this->_entity_parser->substituteSpecialEntities($string);
- } else {
- if ($is_attr) {
- $string = $this->_entity_parser->substituteAttrEntities($string);
- } else {
- $string = $this->_entity_parser->substituteTextEntities($string);
- }
- }
- return $string;
- }
-
- /**
- * Lexes an HTML string into tokens.
- * @param $string String HTML.
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return HTMLPurifier_Token[] array representation of HTML.
- */
- public function tokenizeHTML($string, $config, $context)
- {
- trigger_error('Call to abstract class', E_USER_ERROR);
- }
-
- /**
- * Translates CDATA sections into regular sections (through escaping).
- * @param string $string HTML string to process.
- * @return string HTML with CDATA sections escaped.
- */
- protected static function escapeCDATA($string)
- {
- return preg_replace_callback(
- '//s',
- array('HTMLPurifier_Lexer', 'CDATACallback'),
- $string
- );
- }
-
- /**
- * Special CDATA case that is especially convoluted for #i', '', $html);
- }
-
- return $html;
- }
-
- /**
- * Takes a string of HTML (fragment or document) and returns the content
- * @todo Consider making protected
- */
- public function extractBody($html)
- {
- $matches = array();
- $result = preg_match('|(.*?)]*>(.*)|is', $html, $matches);
- if ($result) {
- // Make sure it's not in a comment
- $comment_start = strrpos($matches[1], '');
- if ($comment_start === false ||
- ($comment_end !== false && $comment_end > $comment_start)) {
- return $matches[2];
- }
- }
- return $html;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/DOMLex.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/DOMLex.php
deleted file mode 100644
index ca5f25b8..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/DOMLex.php
+++ /dev/null
@@ -1,338 +0,0 @@
-factory = new HTMLPurifier_TokenFactory();
- }
-
- /**
- * @param string $html
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return HTMLPurifier_Token[]
- */
- public function tokenizeHTML($html, $config, $context)
- {
- $html = $this->normalize($html, $config, $context);
-
- // attempt to armor stray angled brackets that cannot possibly
- // form tags and thus are probably being used as emoticons
- if ($config->get('Core.AggressivelyFixLt')) {
- $char = '[^a-z!\/]';
- $comment = "/|\z)/is";
- $html = preg_replace_callback($comment, array($this, 'callbackArmorCommentEntities'), $html);
- do {
- $old = $html;
- $html = preg_replace("/<($char)/i", '<\\1', $html);
- } while ($html !== $old);
- $html = preg_replace_callback($comment, array($this, 'callbackUndoCommentSubst'), $html); // fix comments
- }
-
- // preprocess html, essential for UTF-8
- $html = $this->wrapHTML($html, $config, $context);
-
- $doc = new DOMDocument();
- $doc->encoding = 'UTF-8'; // theoretically, the above has this covered
-
- $options = 0;
- if ($config->get('Core.AllowParseManyTags') && defined('LIBXML_PARSEHUGE')) {
- $options |= LIBXML_PARSEHUGE;
- }
-
- set_error_handler(array($this, 'muteErrorHandler'));
- // loadHTML() fails on PHP 5.3 when second parameter is given
- if ($options) {
- $doc->loadHTML($html, $options);
- } else {
- $doc->loadHTML($html);
- }
- restore_error_handler();
-
- $body = $doc->getElementsByTagName('html')->item(0)-> //
- getElementsByTagName('body')->item(0); //
-
- $div = $body->getElementsByTagName('div')->item(0); //
- $tokens = array();
- $this->tokenizeDOM($div, $tokens, $config);
- // If the div has a sibling, that means we tripped across
- // a premature
tag. So remove the div we parsed,
- // and then tokenize the rest of body. We can't tokenize
- // the sibling directly as we'll lose the tags in that case.
- if ($div->nextSibling) {
- $body->removeChild($div);
- $this->tokenizeDOM($body, $tokens, $config);
- }
- return $tokens;
- }
-
- /**
- * Iterative function that tokenizes a node, putting it into an accumulator.
- * To iterate is human, to recurse divine - L. Peter Deutsch
- * @param DOMNode $node DOMNode to be tokenized.
- * @param HTMLPurifier_Token[] $tokens Array-list of already tokenized tokens.
- * @return HTMLPurifier_Token of node appended to previously passed tokens.
- */
- protected function tokenizeDOM($node, &$tokens, $config)
- {
- $level = 0;
- $nodes = array($level => new HTMLPurifier_Queue(array($node)));
- $closingNodes = array();
- do {
- while (!$nodes[$level]->isEmpty()) {
- $node = $nodes[$level]->shift(); // FIFO
- $collect = $level > 0 ? true : false;
- $needEndingTag = $this->createStartNode($node, $tokens, $collect, $config);
- if ($needEndingTag) {
- $closingNodes[$level][] = $node;
- }
- if ($node->childNodes && $node->childNodes->length) {
- $level++;
- $nodes[$level] = new HTMLPurifier_Queue();
- foreach ($node->childNodes as $childNode) {
- $nodes[$level]->push($childNode);
- }
- }
- }
- $level--;
- if ($level && isset($closingNodes[$level])) {
- while ($node = array_pop($closingNodes[$level])) {
- $this->createEndNode($node, $tokens);
- }
- }
- } while ($level > 0);
- }
-
- /**
- * Portably retrieve the tag name of a node; deals with older versions
- * of libxml like 2.7.6
- * @param DOMNode $node
- */
- protected function getTagName($node)
- {
- if (isset($node->tagName)) {
- return $node->tagName;
- } else if (isset($node->nodeName)) {
- return $node->nodeName;
- } else if (isset($node->localName)) {
- return $node->localName;
- }
- return null;
- }
-
- /**
- * Portably retrieve the data of a node; deals with older versions
- * of libxml like 2.7.6
- * @param DOMNode $node
- */
- protected function getData($node)
- {
- if (isset($node->data)) {
- return $node->data;
- } else if (isset($node->nodeValue)) {
- return $node->nodeValue;
- } else if (isset($node->textContent)) {
- return $node->textContent;
- }
- return null;
- }
-
-
- /**
- * @param DOMNode $node DOMNode to be tokenized.
- * @param HTMLPurifier_Token[] $tokens Array-list of already tokenized tokens.
- * @param bool $collect Says whether or start and close are collected, set to
- * false at first recursion because it's the implicit DIV
- * tag you're dealing with.
- * @return bool if the token needs an endtoken
- * @todo data and tagName properties don't seem to exist in DOMNode?
- */
- protected function createStartNode($node, &$tokens, $collect, $config)
- {
- // intercept non element nodes. WE MUST catch all of them,
- // but we're not getting the character reference nodes because
- // those should have been preprocessed
- if ($node->nodeType === XML_TEXT_NODE) {
- $data = $this->getData($node); // Handle variable data property
- if ($data !== null) {
- $tokens[] = $this->factory->createText($data);
- }
- return false;
- } elseif ($node->nodeType === XML_CDATA_SECTION_NODE) {
- // undo libxml's special treatment of )#si',
- array($this, 'scriptCallback'),
- $html
- );
- }
-
- $html = $this->normalize($html, $config, $context);
-
- $cursor = 0; // our location in the text
- $inside_tag = false; // whether or not we're parsing the inside of a tag
- $array = array(); // result array
-
- // This is also treated to mean maintain *column* numbers too
- $maintain_line_numbers = $config->get('Core.MaintainLineNumbers');
-
- if ($maintain_line_numbers === null) {
- // automatically determine line numbering by checking
- // if error collection is on
- $maintain_line_numbers = $config->get('Core.CollectErrors');
- }
-
- if ($maintain_line_numbers) {
- $current_line = 1;
- $current_col = 0;
- $length = strlen($html);
- } else {
- $current_line = false;
- $current_col = false;
- $length = false;
- }
- $context->register('CurrentLine', $current_line);
- $context->register('CurrentCol', $current_col);
- $nl = "\n";
- // how often to manually recalculate. This will ALWAYS be right,
- // but it's pretty wasteful. Set to 0 to turn off
- $synchronize_interval = $config->get('Core.DirectLexLineNumberSyncInterval');
-
- $e = false;
- if ($config->get('Core.CollectErrors')) {
- $e =& $context->get('ErrorCollector');
- }
-
- // for testing synchronization
- $loops = 0;
-
- while (++$loops) {
- // $cursor is either at the start of a token, or inside of
- // a tag (i.e. there was a < immediately before it), as indicated
- // by $inside_tag
-
- if ($maintain_line_numbers) {
- // $rcursor, however, is always at the start of a token.
- $rcursor = $cursor - (int)$inside_tag;
-
- // Column number is cheap, so we calculate it every round.
- // We're interested at the *end* of the newline string, so
- // we need to add strlen($nl) == 1 to $nl_pos before subtracting it
- // from our "rcursor" position.
- $nl_pos = strrpos($html, $nl, $rcursor - $length);
- $current_col = $rcursor - (is_bool($nl_pos) ? 0 : $nl_pos + 1);
-
- // recalculate lines
- if ($synchronize_interval && // synchronization is on
- $cursor > 0 && // cursor is further than zero
- $loops % $synchronize_interval === 0) { // time to synchronize!
- $current_line = 1 + $this->substrCount($html, $nl, 0, $cursor);
- }
- }
-
- $position_next_lt = strpos($html, '<', $cursor);
- $position_next_gt = strpos($html, '>', $cursor);
-
- // triggers on "asdf " but not "asdf "
- // special case to set up context
- if ($position_next_lt === $cursor) {
- $inside_tag = true;
- $cursor++;
- }
-
- if (!$inside_tag && $position_next_lt !== false) {
- // We are not inside tag and there still is another tag to parse
- $token = new
- HTMLPurifier_Token_Text(
- $this->parseText(
- substr(
- $html,
- $cursor,
- $position_next_lt - $cursor
- ), $config
- )
- );
- if ($maintain_line_numbers) {
- $token->rawPosition($current_line, $current_col);
- $current_line += $this->substrCount($html, $nl, $cursor, $position_next_lt - $cursor);
- }
- $array[] = $token;
- $cursor = $position_next_lt + 1;
- $inside_tag = true;
- continue;
- } elseif (!$inside_tag) {
- // We are not inside tag but there are no more tags
- // If we're already at the end, break
- if ($cursor === strlen($html)) {
- break;
- }
- // Create Text of rest of string
- $token = new
- HTMLPurifier_Token_Text(
- $this->parseText(
- substr(
- $html,
- $cursor
- ), $config
- )
- );
- if ($maintain_line_numbers) {
- $token->rawPosition($current_line, $current_col);
- }
- $array[] = $token;
- break;
- } elseif ($inside_tag && $position_next_gt !== false) {
- // We are in tag and it is well formed
- // Grab the internals of the tag
- $strlen_segment = $position_next_gt - $cursor;
-
- if ($strlen_segment < 1) {
- // there's nothing to process!
- $token = new HTMLPurifier_Token_Text('<');
- $cursor++;
- continue;
- }
-
- $segment = substr($html, $cursor, $strlen_segment);
-
- if ($segment === false) {
- // somehow, we attempted to access beyond the end of
- // the string, defense-in-depth, reported by Nate Abele
- break;
- }
-
- // Check if it's a comment
- if (substr($segment, 0, 3) === '!--') {
- // re-determine segment length, looking for -->
- $position_comment_end = strpos($html, '-->', $cursor);
- if ($position_comment_end === false) {
- // uh oh, we have a comment that extends to
- // infinity. Can't be helped: set comment
- // end position to end of string
- if ($e) {
- $e->send(E_WARNING, 'Lexer: Unclosed comment');
- }
- $position_comment_end = strlen($html);
- $end = true;
- } else {
- $end = false;
- }
- $strlen_segment = $position_comment_end - $cursor;
- $segment = substr($html, $cursor, $strlen_segment);
- $token = new
- HTMLPurifier_Token_Comment(
- substr(
- $segment,
- 3,
- $strlen_segment - 3
- )
- );
- if ($maintain_line_numbers) {
- $token->rawPosition($current_line, $current_col);
- $current_line += $this->substrCount($html, $nl, $cursor, $strlen_segment);
- }
- $array[] = $token;
- $cursor = $end ? $position_comment_end : $position_comment_end + 3;
- $inside_tag = false;
- continue;
- }
-
- // Check if it's an end tag
- $is_end_tag = (strpos($segment, '/') === 0);
- if ($is_end_tag) {
- $type = substr($segment, 1);
- $token = new HTMLPurifier_Token_End($type);
- if ($maintain_line_numbers) {
- $token->rawPosition($current_line, $current_col);
- $current_line += $this->substrCount($html, $nl, $cursor, $position_next_gt - $cursor);
- }
- $array[] = $token;
- $inside_tag = false;
- $cursor = $position_next_gt + 1;
- continue;
- }
-
- // Check leading character is alnum, if not, we may
- // have accidently grabbed an emoticon. Translate into
- // text and go our merry way
- if (!ctype_alpha($segment[0])) {
- // XML: $segment[0] !== '_' && $segment[0] !== ':'
- if ($e) {
- $e->send(E_NOTICE, 'Lexer: Unescaped lt');
- }
- $token = new HTMLPurifier_Token_Text('<');
- if ($maintain_line_numbers) {
- $token->rawPosition($current_line, $current_col);
- $current_line += $this->substrCount($html, $nl, $cursor, $position_next_gt - $cursor);
- }
- $array[] = $token;
- $inside_tag = false;
- continue;
- }
-
- // Check if it is explicitly self closing, if so, remove
- // trailing slash. Remember, we could have a tag like , so
- // any later token processing scripts must convert improperly
- // classified EmptyTags from StartTags.
- $is_self_closing = (strrpos($segment, '/') === $strlen_segment - 1);
- if ($is_self_closing) {
- $strlen_segment--;
- $segment = substr($segment, 0, $strlen_segment);
- }
-
- // Check if there are any attributes
- $position_first_space = strcspn($segment, $this->_whitespace);
-
- if ($position_first_space >= $strlen_segment) {
- if ($is_self_closing) {
- $token = new HTMLPurifier_Token_Empty($segment);
- } else {
- $token = new HTMLPurifier_Token_Start($segment);
- }
- if ($maintain_line_numbers) {
- $token->rawPosition($current_line, $current_col);
- $current_line += $this->substrCount($html, $nl, $cursor, $position_next_gt - $cursor);
- }
- $array[] = $token;
- $inside_tag = false;
- $cursor = $position_next_gt + 1;
- continue;
- }
-
- // Grab out all the data
- $type = substr($segment, 0, $position_first_space);
- $attribute_string =
- trim(
- substr(
- $segment,
- $position_first_space
- )
- );
- if ($attribute_string) {
- $attr = $this->parseAttributeString(
- $attribute_string,
- $config,
- $context
- );
- } else {
- $attr = array();
- }
-
- if ($is_self_closing) {
- $token = new HTMLPurifier_Token_Empty($type, $attr);
- } else {
- $token = new HTMLPurifier_Token_Start($type, $attr);
- }
- if ($maintain_line_numbers) {
- $token->rawPosition($current_line, $current_col);
- $current_line += $this->substrCount($html, $nl, $cursor, $position_next_gt - $cursor);
- }
- $array[] = $token;
- $cursor = $position_next_gt + 1;
- $inside_tag = false;
- continue;
- } else {
- // inside tag, but there's no ending > sign
- if ($e) {
- $e->send(E_WARNING, 'Lexer: Missing gt');
- }
- $token = new
- HTMLPurifier_Token_Text(
- '<' .
- $this->parseText(
- substr($html, $cursor), $config
- )
- );
- if ($maintain_line_numbers) {
- $token->rawPosition($current_line, $current_col);
- }
- // no cursor scroll? Hmm...
- $array[] = $token;
- break;
- }
- break;
- }
-
- $context->destroy('CurrentLine');
- $context->destroy('CurrentCol');
- return $array;
- }
-
- /**
- * PHP 5.0.x compatible substr_count that implements offset and length
- * @param string $haystack
- * @param string $needle
- * @param int $offset
- * @param int $length
- * @return int
- */
- protected function substrCount($haystack, $needle, $offset, $length)
- {
- static $oldVersion;
- if ($oldVersion === null) {
- $oldVersion = version_compare(PHP_VERSION, '5.1', '<');
- }
- if ($oldVersion) {
- $haystack = substr($haystack, $offset, $length);
- return substr_count($haystack, $needle);
- } else {
- return substr_count($haystack, $needle, $offset, $length);
- }
- }
-
- /**
- * Takes the inside of an HTML tag and makes an assoc array of attributes.
- *
- * @param string $string Inside of tag excluding name.
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return array Assoc array of attributes.
- */
- public function parseAttributeString($string, $config, $context)
- {
- $string = (string)$string; // quick typecast
-
- if ($string == '') {
- return array();
- } // no attributes
-
- $e = false;
- if ($config->get('Core.CollectErrors')) {
- $e =& $context->get('ErrorCollector');
- }
-
- // let's see if we can abort as quickly as possible
- // one equal sign, no spaces => one attribute
- $num_equal = substr_count($string, '=');
- $has_space = strpos($string, ' ');
- if ($num_equal === 0 && !$has_space) {
- // bool attribute
- return array($string => $string);
- } elseif ($num_equal === 1 && !$has_space) {
- // only one attribute
- list($key, $quoted_value) = explode('=', $string);
- $quoted_value = trim($quoted_value);
- if (!$key) {
- if ($e) {
- $e->send(E_ERROR, 'Lexer: Missing attribute key');
- }
- return array();
- }
- if (!$quoted_value) {
- return array($key => '');
- }
- $first_char = @$quoted_value[0];
- $last_char = @$quoted_value[strlen($quoted_value) - 1];
-
- $same_quote = ($first_char == $last_char);
- $open_quote = ($first_char == '"' || $first_char == "'");
-
- if ($same_quote && $open_quote) {
- // well behaved
- $value = substr($quoted_value, 1, strlen($quoted_value) - 2);
- } else {
- // not well behaved
- if ($open_quote) {
- if ($e) {
- $e->send(E_ERROR, 'Lexer: Missing end quote');
- }
- $value = substr($quoted_value, 1);
- } else {
- $value = $quoted_value;
- }
- }
- if ($value === false) {
- $value = '';
- }
- return array($key => $this->parseAttr($value, $config));
- }
-
- // setup loop environment
- $array = array(); // return assoc array of attributes
- $cursor = 0; // current position in string (moves forward)
- $size = strlen($string); // size of the string (stays the same)
-
- // if we have unquoted attributes, the parser expects a terminating
- // space, so let's guarantee that there's always a terminating space.
- $string .= ' ';
-
- $old_cursor = -1;
- while ($cursor < $size) {
- if ($old_cursor >= $cursor) {
- throw new Exception("Infinite loop detected");
- }
- $old_cursor = $cursor;
-
- $cursor += ($value = strspn($string, $this->_whitespace, $cursor));
- // grab the key
-
- $key_begin = $cursor; //we're currently at the start of the key
-
- // scroll past all characters that are the key (not whitespace or =)
- $cursor += strcspn($string, $this->_whitespace . '=', $cursor);
-
- $key_end = $cursor; // now at the end of the key
-
- $key = substr($string, $key_begin, $key_end - $key_begin);
-
- if (!$key) {
- if ($e) {
- $e->send(E_ERROR, 'Lexer: Missing attribute key');
- }
- $cursor += 1 + strcspn($string, $this->_whitespace, $cursor + 1); // prevent infinite loop
- continue; // empty key
- }
-
- // scroll past all whitespace
- $cursor += strspn($string, $this->_whitespace, $cursor);
-
- if ($cursor >= $size) {
- $array[$key] = $key;
- break;
- }
-
- // if the next character is an equal sign, we've got a regular
- // pair, otherwise, it's a bool attribute
- $first_char = @$string[$cursor];
-
- if ($first_char == '=') {
- // key="value"
-
- $cursor++;
- $cursor += strspn($string, $this->_whitespace, $cursor);
-
- if ($cursor === false) {
- $array[$key] = '';
- break;
- }
-
- // we might be in front of a quote right now
-
- $char = @$string[$cursor];
-
- if ($char == '"' || $char == "'") {
- // it's quoted, end bound is $char
- $cursor++;
- $value_begin = $cursor;
- $cursor = strpos($string, $char, $cursor);
- $value_end = $cursor;
- } else {
- // it's not quoted, end bound is whitespace
- $value_begin = $cursor;
- $cursor += strcspn($string, $this->_whitespace, $cursor);
- $value_end = $cursor;
- }
-
- // we reached a premature end
- if ($cursor === false) {
- $cursor = $size;
- $value_end = $cursor;
- }
-
- $value = substr($string, $value_begin, $value_end - $value_begin);
- if ($value === false) {
- $value = '';
- }
- $array[$key] = $this->parseAttr($value, $config);
- $cursor++;
- } else {
- // boolattr
- if ($key !== '') {
- $array[$key] = $key;
- } else {
- // purely theoretical
- if ($e) {
- $e->send(E_ERROR, 'Lexer: Missing attribute key');
- }
- }
- }
- }
- return $array;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/PH5P.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/PH5P.php
deleted file mode 100644
index 72476ddf..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/PH5P.php
+++ /dev/null
@@ -1,4788 +0,0 @@
-normalize($html, $config, $context);
- $new_html = $this->wrapHTML($new_html, $config, $context, false /* no div */);
- try {
- $parser = new HTML5($new_html);
- $doc = $parser->save();
- } catch (DOMException $e) {
- // Uh oh, it failed. Punt to DirectLex.
- $lexer = new HTMLPurifier_Lexer_DirectLex();
- $context->register('PH5PError', $e); // save the error, so we can detect it
- return $lexer->tokenizeHTML($html, $config, $context); // use original HTML
- }
- $tokens = array();
- $this->tokenizeDOM(
- $doc->getElementsByTagName('html')->item(0)-> //
- getElementsByTagName('body')->item(0) //
- ,
- $tokens, $config
- );
- return $tokens;
- }
-}
-
-/*
-
-Copyright 2007 Jeroen van der Meer
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-*/
-
-class HTML5
-{
- private $data;
- private $char;
- private $EOF;
- private $state;
- private $tree;
- private $token;
- private $content_model;
- private $escape = false;
- private $entities = array(
- 'AElig;',
- 'AElig',
- 'AMP;',
- 'AMP',
- 'Aacute;',
- 'Aacute',
- 'Acirc;',
- 'Acirc',
- 'Agrave;',
- 'Agrave',
- 'Alpha;',
- 'Aring;',
- 'Aring',
- 'Atilde;',
- 'Atilde',
- 'Auml;',
- 'Auml',
- 'Beta;',
- 'COPY;',
- 'COPY',
- 'Ccedil;',
- 'Ccedil',
- 'Chi;',
- 'Dagger;',
- 'Delta;',
- 'ETH;',
- 'ETH',
- 'Eacute;',
- 'Eacute',
- 'Ecirc;',
- 'Ecirc',
- 'Egrave;',
- 'Egrave',
- 'Epsilon;',
- 'Eta;',
- 'Euml;',
- 'Euml',
- 'GT;',
- 'GT',
- 'Gamma;',
- 'Iacute;',
- 'Iacute',
- 'Icirc;',
- 'Icirc',
- 'Igrave;',
- 'Igrave',
- 'Iota;',
- 'Iuml;',
- 'Iuml',
- 'Kappa;',
- 'LT;',
- 'LT',
- 'Lambda;',
- 'Mu;',
- 'Ntilde;',
- 'Ntilde',
- 'Nu;',
- 'OElig;',
- 'Oacute;',
- 'Oacute',
- 'Ocirc;',
- 'Ocirc',
- 'Ograve;',
- 'Ograve',
- 'Omega;',
- 'Omicron;',
- 'Oslash;',
- 'Oslash',
- 'Otilde;',
- 'Otilde',
- 'Ouml;',
- 'Ouml',
- 'Phi;',
- 'Pi;',
- 'Prime;',
- 'Psi;',
- 'QUOT;',
- 'QUOT',
- 'REG;',
- 'REG',
- 'Rho;',
- 'Scaron;',
- 'Sigma;',
- 'THORN;',
- 'THORN',
- 'TRADE;',
- 'Tau;',
- 'Theta;',
- 'Uacute;',
- 'Uacute',
- 'Ucirc;',
- 'Ucirc',
- 'Ugrave;',
- 'Ugrave',
- 'Upsilon;',
- 'Uuml;',
- 'Uuml',
- 'Xi;',
- 'Yacute;',
- 'Yacute',
- 'Yuml;',
- 'Zeta;',
- 'aacute;',
- 'aacute',
- 'acirc;',
- 'acirc',
- 'acute;',
- 'acute',
- 'aelig;',
- 'aelig',
- 'agrave;',
- 'agrave',
- 'alefsym;',
- 'alpha;',
- 'amp;',
- 'amp',
- 'and;',
- 'ang;',
- 'apos;',
- 'aring;',
- 'aring',
- 'asymp;',
- 'atilde;',
- 'atilde',
- 'auml;',
- 'auml',
- 'bdquo;',
- 'beta;',
- 'brvbar;',
- 'brvbar',
- 'bull;',
- 'cap;',
- 'ccedil;',
- 'ccedil',
- 'cedil;',
- 'cedil',
- 'cent;',
- 'cent',
- 'chi;',
- 'circ;',
- 'clubs;',
- 'cong;',
- 'copy;',
- 'copy',
- 'crarr;',
- 'cup;',
- 'curren;',
- 'curren',
- 'dArr;',
- 'dagger;',
- 'darr;',
- 'deg;',
- 'deg',
- 'delta;',
- 'diams;',
- 'divide;',
- 'divide',
- 'eacute;',
- 'eacute',
- 'ecirc;',
- 'ecirc',
- 'egrave;',
- 'egrave',
- 'empty;',
- 'emsp;',
- 'ensp;',
- 'epsilon;',
- 'equiv;',
- 'eta;',
- 'eth;',
- 'eth',
- 'euml;',
- 'euml',
- 'euro;',
- 'exist;',
- 'fnof;',
- 'forall;',
- 'frac12;',
- 'frac12',
- 'frac14;',
- 'frac14',
- 'frac34;',
- 'frac34',
- 'frasl;',
- 'gamma;',
- 'ge;',
- 'gt;',
- 'gt',
- 'hArr;',
- 'harr;',
- 'hearts;',
- 'hellip;',
- 'iacute;',
- 'iacute',
- 'icirc;',
- 'icirc',
- 'iexcl;',
- 'iexcl',
- 'igrave;',
- 'igrave',
- 'image;',
- 'infin;',
- 'int;',
- 'iota;',
- 'iquest;',
- 'iquest',
- 'isin;',
- 'iuml;',
- 'iuml',
- 'kappa;',
- 'lArr;',
- 'lambda;',
- 'lang;',
- 'laquo;',
- 'laquo',
- 'larr;',
- 'lceil;',
- 'ldquo;',
- 'le;',
- 'lfloor;',
- 'lowast;',
- 'loz;',
- 'lrm;',
- 'lsaquo;',
- 'lsquo;',
- 'lt;',
- 'lt',
- 'macr;',
- 'macr',
- 'mdash;',
- 'micro;',
- 'micro',
- 'middot;',
- 'middot',
- 'minus;',
- 'mu;',
- 'nabla;',
- 'nbsp;',
- 'nbsp',
- 'ndash;',
- 'ne;',
- 'ni;',
- 'not;',
- 'not',
- 'notin;',
- 'nsub;',
- 'ntilde;',
- 'ntilde',
- 'nu;',
- 'oacute;',
- 'oacute',
- 'ocirc;',
- 'ocirc',
- 'oelig;',
- 'ograve;',
- 'ograve',
- 'oline;',
- 'omega;',
- 'omicron;',
- 'oplus;',
- 'or;',
- 'ordf;',
- 'ordf',
- 'ordm;',
- 'ordm',
- 'oslash;',
- 'oslash',
- 'otilde;',
- 'otilde',
- 'otimes;',
- 'ouml;',
- 'ouml',
- 'para;',
- 'para',
- 'part;',
- 'permil;',
- 'perp;',
- 'phi;',
- 'pi;',
- 'piv;',
- 'plusmn;',
- 'plusmn',
- 'pound;',
- 'pound',
- 'prime;',
- 'prod;',
- 'prop;',
- 'psi;',
- 'quot;',
- 'quot',
- 'rArr;',
- 'radic;',
- 'rang;',
- 'raquo;',
- 'raquo',
- 'rarr;',
- 'rceil;',
- 'rdquo;',
- 'real;',
- 'reg;',
- 'reg',
- 'rfloor;',
- 'rho;',
- 'rlm;',
- 'rsaquo;',
- 'rsquo;',
- 'sbquo;',
- 'scaron;',
- 'sdot;',
- 'sect;',
- 'sect',
- 'shy;',
- 'shy',
- 'sigma;',
- 'sigmaf;',
- 'sim;',
- 'spades;',
- 'sub;',
- 'sube;',
- 'sum;',
- 'sup1;',
- 'sup1',
- 'sup2;',
- 'sup2',
- 'sup3;',
- 'sup3',
- 'sup;',
- 'supe;',
- 'szlig;',
- 'szlig',
- 'tau;',
- 'there4;',
- 'theta;',
- 'thetasym;',
- 'thinsp;',
- 'thorn;',
- 'thorn',
- 'tilde;',
- 'times;',
- 'times',
- 'trade;',
- 'uArr;',
- 'uacute;',
- 'uacute',
- 'uarr;',
- 'ucirc;',
- 'ucirc',
- 'ugrave;',
- 'ugrave',
- 'uml;',
- 'uml',
- 'upsih;',
- 'upsilon;',
- 'uuml;',
- 'uuml',
- 'weierp;',
- 'xi;',
- 'yacute;',
- 'yacute',
- 'yen;',
- 'yen',
- 'yuml;',
- 'yuml',
- 'zeta;',
- 'zwj;',
- 'zwnj;'
- );
-
- const PCDATA = 0;
- const RCDATA = 1;
- const CDATA = 2;
- const PLAINTEXT = 3;
-
- const DOCTYPE = 0;
- const STARTTAG = 1;
- const ENDTAG = 2;
- const COMMENT = 3;
- const CHARACTR = 4;
- const EOF = 5;
-
- public function __construct($data)
- {
- $this->data = $data;
- $this->char = -1;
- $this->EOF = strlen($data);
- $this->tree = new HTML5TreeConstructer;
- $this->content_model = self::PCDATA;
-
- $this->state = 'data';
-
- while ($this->state !== null) {
- $this->{$this->state . 'State'}();
- }
- }
-
- public function save()
- {
- return $this->tree->save();
- }
-
- private function char()
- {
- return ($this->char < $this->EOF)
- ? $this->data[$this->char]
- : false;
- }
-
- private function character($s, $l = 0)
- {
- if ($s + $l < $this->EOF) {
- if ($l === 0) {
- return $this->data[$s];
- } else {
- return substr($this->data, $s, $l);
- }
- }
- }
-
- private function characters($char_class, $start)
- {
- return preg_replace('#^([' . $char_class . ']+).*#s', '\\1', substr($this->data, $start));
- }
-
- private function dataState()
- {
- // Consume the next input character
- $this->char++;
- $char = $this->char();
-
- if ($char === '&' && ($this->content_model === self::PCDATA || $this->content_model === self::RCDATA)) {
- /* U+0026 AMPERSAND (&)
- When the content model flag is set to one of the PCDATA or RCDATA
- states: switch to the entity data state. Otherwise: treat it as per
- the "anything else" entry below. */
- $this->state = 'entityData';
-
- } elseif ($char === '-') {
- /* If the content model flag is set to either the RCDATA state or
- the CDATA state, and the escape flag is false, and there are at
- least three characters before this one in the input stream, and the
- last four characters in the input stream, including this one, are
- U+003C LESS-THAN SIGN, U+0021 EXCLAMATION MARK, U+002D HYPHEN-MINUS,
- and U+002D HYPHEN-MINUS (""),
- set the escape flag to false. */
- if (($this->content_model === self::RCDATA ||
- $this->content_model === self::CDATA) && $this->escape === true &&
- $this->character($this->char, 3) === '-->'
- ) {
- $this->escape = false;
- }
-
- /* In any case, emit the input character as a character token.
- Stay in the data state. */
- $this->emitToken(
- array(
- 'type' => self::CHARACTR,
- 'data' => $char
- )
- );
-
- } elseif ($this->char === $this->EOF) {
- /* EOF
- Emit an end-of-file token. */
- $this->EOF();
-
- } elseif ($this->content_model === self::PLAINTEXT) {
- /* When the content model flag is set to the PLAINTEXT state
- THIS DIFFERS GREATLY FROM THE SPEC: Get the remaining characters of
- the text and emit it as a character token. */
- $this->emitToken(
- array(
- 'type' => self::CHARACTR,
- 'data' => substr($this->data, $this->char)
- )
- );
-
- $this->EOF();
-
- } else {
- /* Anything else
- THIS DIFFERS GREATLY FROM THE SPEC: Get as many character that
- otherwise would also be treated as a character token and emit it
- as a single character token. Stay in the data state. */
- $len = strcspn($this->data, '<&', $this->char);
- $char = substr($this->data, $this->char, $len);
- $this->char += $len - 1;
-
- $this->emitToken(
- array(
- 'type' => self::CHARACTR,
- 'data' => $char
- )
- );
-
- $this->state = 'data';
- }
- }
-
- private function entityDataState()
- {
- // Attempt to consume an entity.
- $entity = $this->entity();
-
- // If nothing is returned, emit a U+0026 AMPERSAND character token.
- // Otherwise, emit the character token that was returned.
- $char = (!$entity) ? '&' : $entity;
- $this->emitToken(
- array(
- 'type' => self::CHARACTR,
- 'data' => $char
- )
- );
-
- // Finally, switch to the data state.
- $this->state = 'data';
- }
-
- private function tagOpenState()
- {
- switch ($this->content_model) {
- case self::RCDATA:
- case self::CDATA:
- /* If the next input character is a U+002F SOLIDUS (/) character,
- consume it and switch to the close tag open state. If the next
- input character is not a U+002F SOLIDUS (/) character, emit a
- U+003C LESS-THAN SIGN character token and switch to the data
- state to process the next input character. */
- if ($this->character($this->char + 1) === '/') {
- $this->char++;
- $this->state = 'closeTagOpen';
-
- } else {
- $this->emitToken(
- array(
- 'type' => self::CHARACTR,
- 'data' => '<'
- )
- );
-
- $this->state = 'data';
- }
- break;
-
- case self::PCDATA:
- // If the content model flag is set to the PCDATA state
- // Consume the next input character:
- $this->char++;
- $char = $this->char();
-
- if ($char === '!') {
- /* U+0021 EXCLAMATION MARK (!)
- Switch to the markup declaration open state. */
- $this->state = 'markupDeclarationOpen';
-
- } elseif ($char === '/') {
- /* U+002F SOLIDUS (/)
- Switch to the close tag open state. */
- $this->state = 'closeTagOpen';
-
- } elseif (preg_match('/^[A-Za-z]$/', $char)) {
- /* U+0041 LATIN LETTER A through to U+005A LATIN LETTER Z
- Create a new start tag token, set its tag name to the lowercase
- version of the input character (add 0x0020 to the character's code
- point), then switch to the tag name state. (Don't emit the token
- yet; further details will be filled in before it is emitted.) */
- $this->token = array(
- 'name' => strtolower($char),
- 'type' => self::STARTTAG,
- 'attr' => array()
- );
-
- $this->state = 'tagName';
-
- } elseif ($char === '>') {
- /* U+003E GREATER-THAN SIGN (>)
- Parse error. Emit a U+003C LESS-THAN SIGN character token and a
- U+003E GREATER-THAN SIGN character token. Switch to the data state. */
- $this->emitToken(
- array(
- 'type' => self::CHARACTR,
- 'data' => '<>'
- )
- );
-
- $this->state = 'data';
-
- } elseif ($char === '?') {
- /* U+003F QUESTION MARK (?)
- Parse error. Switch to the bogus comment state. */
- $this->state = 'bogusComment';
-
- } else {
- /* Anything else
- Parse error. Emit a U+003C LESS-THAN SIGN character token and
- reconsume the current input character in the data state. */
- $this->emitToken(
- array(
- 'type' => self::CHARACTR,
- 'data' => '<'
- )
- );
-
- $this->char--;
- $this->state = 'data';
- }
- break;
- }
- }
-
- private function closeTagOpenState()
- {
- $next_node = strtolower($this->characters('A-Za-z', $this->char + 1));
- $the_same = count($this->tree->stack) > 0 && $next_node === end($this->tree->stack)->nodeName;
-
- if (($this->content_model === self::RCDATA || $this->content_model === self::CDATA) &&
- (!$the_same || ($the_same && (!preg_match(
- '/[\t\n\x0b\x0c >\/]/',
- $this->character($this->char + 1 + strlen($next_node))
- ) || $this->EOF === $this->char)))
- ) {
- /* If the content model flag is set to the RCDATA or CDATA states then
- examine the next few characters. If they do not match the tag name of
- the last start tag token emitted (case insensitively), or if they do but
- they are not immediately followed by one of the following characters:
- * U+0009 CHARACTER TABULATION
- * U+000A LINE FEED (LF)
- * U+000B LINE TABULATION
- * U+000C FORM FEED (FF)
- * U+0020 SPACE
- * U+003E GREATER-THAN SIGN (>)
- * U+002F SOLIDUS (/)
- * EOF
- ...then there is a parse error. Emit a U+003C LESS-THAN SIGN character
- token, a U+002F SOLIDUS character token, and switch to the data state
- to process the next input character. */
- $this->emitToken(
- array(
- 'type' => self::CHARACTR,
- 'data' => ''
- )
- );
-
- $this->state = 'data';
-
- } else {
- /* Otherwise, if the content model flag is set to the PCDATA state,
- or if the next few characters do match that tag name, consume the
- next input character: */
- $this->char++;
- $char = $this->char();
-
- if (preg_match('/^[A-Za-z]$/', $char)) {
- /* U+0041 LATIN LETTER A through to U+005A LATIN LETTER Z
- Create a new end tag token, set its tag name to the lowercase version
- of the input character (add 0x0020 to the character's code point), then
- switch to the tag name state. (Don't emit the token yet; further details
- will be filled in before it is emitted.) */
- $this->token = array(
- 'name' => strtolower($char),
- 'type' => self::ENDTAG
- );
-
- $this->state = 'tagName';
-
- } elseif ($char === '>') {
- /* U+003E GREATER-THAN SIGN (>)
- Parse error. Switch to the data state. */
- $this->state = 'data';
-
- } elseif ($this->char === $this->EOF) {
- /* EOF
- Parse error. Emit a U+003C LESS-THAN SIGN character token and a U+002F
- SOLIDUS character token. Reconsume the EOF character in the data state. */
- $this->emitToken(
- array(
- 'type' => self::CHARACTR,
- 'data' => ''
- )
- );
-
- $this->char--;
- $this->state = 'data';
-
- } else {
- /* Parse error. Switch to the bogus comment state. */
- $this->state = 'bogusComment';
- }
- }
- }
-
- private function tagNameState()
- {
- // Consume the next input character:
- $this->char++;
- $char = $this->character($this->char);
-
- if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
- /* U+0009 CHARACTER TABULATION
- U+000A LINE FEED (LF)
- U+000B LINE TABULATION
- U+000C FORM FEED (FF)
- U+0020 SPACE
- Switch to the before attribute name state. */
- $this->state = 'beforeAttributeName';
-
- } elseif ($char === '>') {
- /* U+003E GREATER-THAN SIGN (>)
- Emit the current tag token. Switch to the data state. */
- $this->emitToken($this->token);
- $this->state = 'data';
-
- } elseif ($this->char === $this->EOF) {
- /* EOF
- Parse error. Emit the current tag token. Reconsume the EOF
- character in the data state. */
- $this->emitToken($this->token);
-
- $this->char--;
- $this->state = 'data';
-
- } elseif ($char === '/') {
- /* U+002F SOLIDUS (/)
- Parse error unless this is a permitted slash. Switch to the before
- attribute name state. */
- $this->state = 'beforeAttributeName';
-
- } else {
- /* Anything else
- Append the current input character to the current tag token's tag name.
- Stay in the tag name state. */
- $this->token['name'] .= strtolower($char);
- $this->state = 'tagName';
- }
- }
-
- private function beforeAttributeNameState()
- {
- // Consume the next input character:
- $this->char++;
- $char = $this->character($this->char);
-
- if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
- /* U+0009 CHARACTER TABULATION
- U+000A LINE FEED (LF)
- U+000B LINE TABULATION
- U+000C FORM FEED (FF)
- U+0020 SPACE
- Stay in the before attribute name state. */
- $this->state = 'beforeAttributeName';
-
- } elseif ($char === '>') {
- /* U+003E GREATER-THAN SIGN (>)
- Emit the current tag token. Switch to the data state. */
- $this->emitToken($this->token);
- $this->state = 'data';
-
- } elseif ($char === '/') {
- /* U+002F SOLIDUS (/)
- Parse error unless this is a permitted slash. Stay in the before
- attribute name state. */
- $this->state = 'beforeAttributeName';
-
- } elseif ($this->char === $this->EOF) {
- /* EOF
- Parse error. Emit the current tag token. Reconsume the EOF
- character in the data state. */
- $this->emitToken($this->token);
-
- $this->char--;
- $this->state = 'data';
-
- } else {
- /* Anything else
- Start a new attribute in the current tag token. Set that attribute's
- name to the current input character, and its value to the empty string.
- Switch to the attribute name state. */
- $this->token['attr'][] = array(
- 'name' => strtolower($char),
- 'value' => null
- );
-
- $this->state = 'attributeName';
- }
- }
-
- private function attributeNameState()
- {
- // Consume the next input character:
- $this->char++;
- $char = $this->character($this->char);
-
- if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
- /* U+0009 CHARACTER TABULATION
- U+000A LINE FEED (LF)
- U+000B LINE TABULATION
- U+000C FORM FEED (FF)
- U+0020 SPACE
- Stay in the before attribute name state. */
- $this->state = 'afterAttributeName';
-
- } elseif ($char === '=') {
- /* U+003D EQUALS SIGN (=)
- Switch to the before attribute value state. */
- $this->state = 'beforeAttributeValue';
-
- } elseif ($char === '>') {
- /* U+003E GREATER-THAN SIGN (>)
- Emit the current tag token. Switch to the data state. */
- $this->emitToken($this->token);
- $this->state = 'data';
-
- } elseif ($char === '/' && $this->character($this->char + 1) !== '>') {
- /* U+002F SOLIDUS (/)
- Parse error unless this is a permitted slash. Switch to the before
- attribute name state. */
- $this->state = 'beforeAttributeName';
-
- } elseif ($this->char === $this->EOF) {
- /* EOF
- Parse error. Emit the current tag token. Reconsume the EOF
- character in the data state. */
- $this->emitToken($this->token);
-
- $this->char--;
- $this->state = 'data';
-
- } else {
- /* Anything else
- Append the current input character to the current attribute's name.
- Stay in the attribute name state. */
- $last = count($this->token['attr']) - 1;
- $this->token['attr'][$last]['name'] .= strtolower($char);
-
- $this->state = 'attributeName';
- }
- }
-
- private function afterAttributeNameState()
- {
- // Consume the next input character:
- $this->char++;
- $char = $this->character($this->char);
-
- if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
- /* U+0009 CHARACTER TABULATION
- U+000A LINE FEED (LF)
- U+000B LINE TABULATION
- U+000C FORM FEED (FF)
- U+0020 SPACE
- Stay in the after attribute name state. */
- $this->state = 'afterAttributeName';
-
- } elseif ($char === '=') {
- /* U+003D EQUALS SIGN (=)
- Switch to the before attribute value state. */
- $this->state = 'beforeAttributeValue';
-
- } elseif ($char === '>') {
- /* U+003E GREATER-THAN SIGN (>)
- Emit the current tag token. Switch to the data state. */
- $this->emitToken($this->token);
- $this->state = 'data';
-
- } elseif ($char === '/' && $this->character($this->char + 1) !== '>') {
- /* U+002F SOLIDUS (/)
- Parse error unless this is a permitted slash. Switch to the
- before attribute name state. */
- $this->state = 'beforeAttributeName';
-
- } elseif ($this->char === $this->EOF) {
- /* EOF
- Parse error. Emit the current tag token. Reconsume the EOF
- character in the data state. */
- $this->emitToken($this->token);
-
- $this->char--;
- $this->state = 'data';
-
- } else {
- /* Anything else
- Start a new attribute in the current tag token. Set that attribute's
- name to the current input character, and its value to the empty string.
- Switch to the attribute name state. */
- $this->token['attr'][] = array(
- 'name' => strtolower($char),
- 'value' => null
- );
-
- $this->state = 'attributeName';
- }
- }
-
- private function beforeAttributeValueState()
- {
- // Consume the next input character:
- $this->char++;
- $char = $this->character($this->char);
-
- if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
- /* U+0009 CHARACTER TABULATION
- U+000A LINE FEED (LF)
- U+000B LINE TABULATION
- U+000C FORM FEED (FF)
- U+0020 SPACE
- Stay in the before attribute value state. */
- $this->state = 'beforeAttributeValue';
-
- } elseif ($char === '"') {
- /* U+0022 QUOTATION MARK (")
- Switch to the attribute value (double-quoted) state. */
- $this->state = 'attributeValueDoubleQuoted';
-
- } elseif ($char === '&') {
- /* U+0026 AMPERSAND (&)
- Switch to the attribute value (unquoted) state and reconsume
- this input character. */
- $this->char--;
- $this->state = 'attributeValueUnquoted';
-
- } elseif ($char === '\'') {
- /* U+0027 APOSTROPHE (')
- Switch to the attribute value (single-quoted) state. */
- $this->state = 'attributeValueSingleQuoted';
-
- } elseif ($char === '>') {
- /* U+003E GREATER-THAN SIGN (>)
- Emit the current tag token. Switch to the data state. */
- $this->emitToken($this->token);
- $this->state = 'data';
-
- } else {
- /* Anything else
- Append the current input character to the current attribute's value.
- Switch to the attribute value (unquoted) state. */
- $last = count($this->token['attr']) - 1;
- $this->token['attr'][$last]['value'] .= $char;
-
- $this->state = 'attributeValueUnquoted';
- }
- }
-
- private function attributeValueDoubleQuotedState()
- {
- // Consume the next input character:
- $this->char++;
- $char = $this->character($this->char);
-
- if ($char === '"') {
- /* U+0022 QUOTATION MARK (")
- Switch to the before attribute name state. */
- $this->state = 'beforeAttributeName';
-
- } elseif ($char === '&') {
- /* U+0026 AMPERSAND (&)
- Switch to the entity in attribute value state. */
- $this->entityInAttributeValueState('double');
-
- } elseif ($this->char === $this->EOF) {
- /* EOF
- Parse error. Emit the current tag token. Reconsume the character
- in the data state. */
- $this->emitToken($this->token);
-
- $this->char--;
- $this->state = 'data';
-
- } else {
- /* Anything else
- Append the current input character to the current attribute's value.
- Stay in the attribute value (double-quoted) state. */
- $last = count($this->token['attr']) - 1;
- $this->token['attr'][$last]['value'] .= $char;
-
- $this->state = 'attributeValueDoubleQuoted';
- }
- }
-
- private function attributeValueSingleQuotedState()
- {
- // Consume the next input character:
- $this->char++;
- $char = $this->character($this->char);
-
- if ($char === '\'') {
- /* U+0022 QUOTATION MARK (')
- Switch to the before attribute name state. */
- $this->state = 'beforeAttributeName';
-
- } elseif ($char === '&') {
- /* U+0026 AMPERSAND (&)
- Switch to the entity in attribute value state. */
- $this->entityInAttributeValueState('single');
-
- } elseif ($this->char === $this->EOF) {
- /* EOF
- Parse error. Emit the current tag token. Reconsume the character
- in the data state. */
- $this->emitToken($this->token);
-
- $this->char--;
- $this->state = 'data';
-
- } else {
- /* Anything else
- Append the current input character to the current attribute's value.
- Stay in the attribute value (single-quoted) state. */
- $last = count($this->token['attr']) - 1;
- $this->token['attr'][$last]['value'] .= $char;
-
- $this->state = 'attributeValueSingleQuoted';
- }
- }
-
- private function attributeValueUnquotedState()
- {
- // Consume the next input character:
- $this->char++;
- $char = $this->character($this->char);
-
- if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
- /* U+0009 CHARACTER TABULATION
- U+000A LINE FEED (LF)
- U+000B LINE TABULATION
- U+000C FORM FEED (FF)
- U+0020 SPACE
- Switch to the before attribute name state. */
- $this->state = 'beforeAttributeName';
-
- } elseif ($char === '&') {
- /* U+0026 AMPERSAND (&)
- Switch to the entity in attribute value state. */
- $this->entityInAttributeValueState();
-
- } elseif ($char === '>') {
- /* U+003E GREATER-THAN SIGN (>)
- Emit the current tag token. Switch to the data state. */
- $this->emitToken($this->token);
- $this->state = 'data';
-
- } else {
- /* Anything else
- Append the current input character to the current attribute's value.
- Stay in the attribute value (unquoted) state. */
- $last = count($this->token['attr']) - 1;
- $this->token['attr'][$last]['value'] .= $char;
-
- $this->state = 'attributeValueUnquoted';
- }
- }
-
- private function entityInAttributeValueState()
- {
- // Attempt to consume an entity.
- $entity = $this->entity();
-
- // If nothing is returned, append a U+0026 AMPERSAND character to the
- // current attribute's value. Otherwise, emit the character token that
- // was returned.
- $char = (!$entity)
- ? '&'
- : $entity;
-
- $last = count($this->token['attr']) - 1;
- $this->token['attr'][$last]['value'] .= $char;
- }
-
- private function bogusCommentState()
- {
- /* Consume every character up to the first U+003E GREATER-THAN SIGN
- character (>) or the end of the file (EOF), whichever comes first. Emit
- a comment token whose data is the concatenation of all the characters
- starting from and including the character that caused the state machine
- to switch into the bogus comment state, up to and including the last
- consumed character before the U+003E character, if any, or up to the
- end of the file otherwise. (If the comment was started by the end of
- the file (EOF), the token is empty.) */
- $data = $this->characters('^>', $this->char);
- $this->emitToken(
- array(
- 'data' => $data,
- 'type' => self::COMMENT
- )
- );
-
- $this->char += strlen($data);
-
- /* Switch to the data state. */
- $this->state = 'data';
-
- /* If the end of the file was reached, reconsume the EOF character. */
- if ($this->char === $this->EOF) {
- $this->char = $this->EOF - 1;
- }
- }
-
- private function markupDeclarationOpenState()
- {
- /* If the next two characters are both U+002D HYPHEN-MINUS (-)
- characters, consume those two characters, create a comment token whose
- data is the empty string, and switch to the comment state. */
- if ($this->character($this->char + 1, 2) === '--') {
- $this->char += 2;
- $this->state = 'comment';
- $this->token = array(
- 'data' => null,
- 'type' => self::COMMENT
- );
-
- /* Otherwise if the next seven chacacters are a case-insensitive match
- for the word "DOCTYPE", then consume those characters and switch to the
- DOCTYPE state. */
- } elseif (strtolower($this->character($this->char + 1, 7)) === 'doctype') {
- $this->char += 7;
- $this->state = 'doctype';
-
- /* Otherwise, is is a parse error. Switch to the bogus comment state.
- The next character that is consumed, if any, is the first character
- that will be in the comment. */
- } else {
- $this->char++;
- $this->state = 'bogusComment';
- }
- }
-
- private function commentState()
- {
- /* Consume the next input character: */
- $this->char++;
- $char = $this->char();
-
- /* U+002D HYPHEN-MINUS (-) */
- if ($char === '-') {
- /* Switch to the comment dash state */
- $this->state = 'commentDash';
-
- /* EOF */
- } elseif ($this->char === $this->EOF) {
- /* Parse error. Emit the comment token. Reconsume the EOF character
- in the data state. */
- $this->emitToken($this->token);
- $this->char--;
- $this->state = 'data';
-
- /* Anything else */
- } else {
- /* Append the input character to the comment token's data. Stay in
- the comment state. */
- $this->token['data'] .= $char;
- }
- }
-
- private function commentDashState()
- {
- /* Consume the next input character: */
- $this->char++;
- $char = $this->char();
-
- /* U+002D HYPHEN-MINUS (-) */
- if ($char === '-') {
- /* Switch to the comment end state */
- $this->state = 'commentEnd';
-
- /* EOF */
- } elseif ($this->char === $this->EOF) {
- /* Parse error. Emit the comment token. Reconsume the EOF character
- in the data state. */
- $this->emitToken($this->token);
- $this->char--;
- $this->state = 'data';
-
- /* Anything else */
- } else {
- /* Append a U+002D HYPHEN-MINUS (-) character and the input
- character to the comment token's data. Switch to the comment state. */
- $this->token['data'] .= '-' . $char;
- $this->state = 'comment';
- }
- }
-
- private function commentEndState()
- {
- /* Consume the next input character: */
- $this->char++;
- $char = $this->char();
-
- if ($char === '>') {
- $this->emitToken($this->token);
- $this->state = 'data';
-
- } elseif ($char === '-') {
- $this->token['data'] .= '-';
-
- } elseif ($this->char === $this->EOF) {
- $this->emitToken($this->token);
- $this->char--;
- $this->state = 'data';
-
- } else {
- $this->token['data'] .= '--' . $char;
- $this->state = 'comment';
- }
- }
-
- private function doctypeState()
- {
- /* Consume the next input character: */
- $this->char++;
- $char = $this->char();
-
- if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
- $this->state = 'beforeDoctypeName';
-
- } else {
- $this->char--;
- $this->state = 'beforeDoctypeName';
- }
- }
-
- private function beforeDoctypeNameState()
- {
- /* Consume the next input character: */
- $this->char++;
- $char = $this->char();
-
- if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
- // Stay in the before DOCTYPE name state.
-
- } elseif (preg_match('/^[a-z]$/', $char)) {
- $this->token = array(
- 'name' => strtoupper($char),
- 'type' => self::DOCTYPE,
- 'error' => true
- );
-
- $this->state = 'doctypeName';
-
- } elseif ($char === '>') {
- $this->emitToken(
- array(
- 'name' => null,
- 'type' => self::DOCTYPE,
- 'error' => true
- )
- );
-
- $this->state = 'data';
-
- } elseif ($this->char === $this->EOF) {
- $this->emitToken(
- array(
- 'name' => null,
- 'type' => self::DOCTYPE,
- 'error' => true
- )
- );
-
- $this->char--;
- $this->state = 'data';
-
- } else {
- $this->token = array(
- 'name' => $char,
- 'type' => self::DOCTYPE,
- 'error' => true
- );
-
- $this->state = 'doctypeName';
- }
- }
-
- private function doctypeNameState()
- {
- /* Consume the next input character: */
- $this->char++;
- $char = $this->char();
-
- if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
- $this->state = 'AfterDoctypeName';
-
- } elseif ($char === '>') {
- $this->emitToken($this->token);
- $this->state = 'data';
-
- } elseif (preg_match('/^[a-z]$/', $char)) {
- $this->token['name'] .= strtoupper($char);
-
- } elseif ($this->char === $this->EOF) {
- $this->emitToken($this->token);
- $this->char--;
- $this->state = 'data';
-
- } else {
- $this->token['name'] .= $char;
- }
-
- $this->token['error'] = ($this->token['name'] === 'HTML')
- ? false
- : true;
- }
-
- private function afterDoctypeNameState()
- {
- /* Consume the next input character: */
- $this->char++;
- $char = $this->char();
-
- if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
- // Stay in the DOCTYPE name state.
-
- } elseif ($char === '>') {
- $this->emitToken($this->token);
- $this->state = 'data';
-
- } elseif ($this->char === $this->EOF) {
- $this->emitToken($this->token);
- $this->char--;
- $this->state = 'data';
-
- } else {
- $this->token['error'] = true;
- $this->state = 'bogusDoctype';
- }
- }
-
- private function bogusDoctypeState()
- {
- /* Consume the next input character: */
- $this->char++;
- $char = $this->char();
-
- if ($char === '>') {
- $this->emitToken($this->token);
- $this->state = 'data';
-
- } elseif ($this->char === $this->EOF) {
- $this->emitToken($this->token);
- $this->char--;
- $this->state = 'data';
-
- } else {
- // Stay in the bogus DOCTYPE state.
- }
- }
-
- private function entity()
- {
- $start = $this->char;
-
- // This section defines how to consume an entity. This definition is
- // used when parsing entities in text and in attributes.
-
- // The behaviour depends on the identity of the next character (the
- // one immediately after the U+0026 AMPERSAND character):
-
- switch ($this->character($this->char + 1)) {
- // U+0023 NUMBER SIGN (#)
- case '#':
-
- // The behaviour further depends on the character after the
- // U+0023 NUMBER SIGN:
- switch ($this->character($this->char + 1)) {
- // U+0078 LATIN SMALL LETTER X
- // U+0058 LATIN CAPITAL LETTER X
- case 'x':
- case 'X':
- // Follow the steps below, but using the range of
- // characters U+0030 DIGIT ZERO through to U+0039 DIGIT
- // NINE, U+0061 LATIN SMALL LETTER A through to U+0066
- // LATIN SMALL LETTER F, and U+0041 LATIN CAPITAL LETTER
- // A, through to U+0046 LATIN CAPITAL LETTER F (in other
- // words, 0-9, A-F, a-f).
- $char = 1;
- $char_class = '0-9A-Fa-f';
- break;
-
- // Anything else
- default:
- // Follow the steps below, but using the range of
- // characters U+0030 DIGIT ZERO through to U+0039 DIGIT
- // NINE (i.e. just 0-9).
- $char = 0;
- $char_class = '0-9';
- break;
- }
-
- // Consume as many characters as match the range of characters
- // given above.
- $this->char++;
- $e_name = $this->characters($char_class, $this->char + $char + 1);
- $entity = $this->character($start, $this->char);
- $cond = strlen($e_name) > 0;
-
- // The rest of the parsing happens below.
- break;
-
- // Anything else
- default:
- // Consume the maximum number of characters possible, with the
- // consumed characters case-sensitively matching one of the
- // identifiers in the first column of the entities table.
-
- $e_name = $this->characters('0-9A-Za-z;', $this->char + 1);
- $len = strlen($e_name);
-
- for ($c = 1; $c <= $len; $c++) {
- $id = substr($e_name, 0, $c);
- $this->char++;
-
- if (in_array($id, $this->entities)) {
- if ($e_name[$c - 1] !== ';') {
- if ($c < $len && $e_name[$c] == ';') {
- $this->char++; // consume extra semicolon
- }
- }
- $entity = $id;
- break;
- }
- }
-
- $cond = isset($entity);
- // The rest of the parsing happens below.
- break;
- }
-
- if (!$cond) {
- // If no match can be made, then this is a parse error. No
- // characters are consumed, and nothing is returned.
- $this->char = $start;
- return false;
- }
-
- // Return a character token for the character corresponding to the
- // entity name (as given by the second column of the entities table).
- return html_entity_decode('&' . rtrim($entity, ';') . ';', ENT_QUOTES, 'UTF-8');
- }
-
- private function emitToken($token)
- {
- $emit = $this->tree->emitToken($token);
-
- if (is_int($emit)) {
- $this->content_model = $emit;
-
- } elseif ($token['type'] === self::ENDTAG) {
- $this->content_model = self::PCDATA;
- }
- }
-
- private function EOF()
- {
- $this->state = null;
- $this->tree->emitToken(
- array(
- 'type' => self::EOF
- )
- );
- }
-}
-
-class HTML5TreeConstructer
-{
- public $stack = array();
-
- private $phase;
- private $mode;
- private $dom;
- private $foster_parent = null;
- private $a_formatting = array();
-
- private $head_pointer = null;
- private $form_pointer = null;
-
- private $scoping = array('button', 'caption', 'html', 'marquee', 'object', 'table', 'td', 'th');
- private $formatting = array(
- 'a',
- 'b',
- 'big',
- 'em',
- 'font',
- 'i',
- 'nobr',
- 's',
- 'small',
- 'strike',
- 'strong',
- 'tt',
- 'u'
- );
- private $special = array(
- 'address',
- 'area',
- 'base',
- 'basefont',
- 'bgsound',
- 'blockquote',
- 'body',
- 'br',
- 'center',
- 'col',
- 'colgroup',
- 'dd',
- 'dir',
- 'div',
- 'dl',
- 'dt',
- 'embed',
- 'fieldset',
- 'form',
- 'frame',
- 'frameset',
- 'h1',
- 'h2',
- 'h3',
- 'h4',
- 'h5',
- 'h6',
- 'head',
- 'hr',
- 'iframe',
- 'image',
- 'img',
- 'input',
- 'isindex',
- 'li',
- 'link',
- 'listing',
- 'menu',
- 'meta',
- 'noembed',
- 'noframes',
- 'noscript',
- 'ol',
- 'optgroup',
- 'option',
- 'p',
- 'param',
- 'plaintext',
- 'pre',
- 'script',
- 'select',
- 'spacer',
- 'style',
- 'tbody',
- 'textarea',
- 'tfoot',
- 'thead',
- 'title',
- 'tr',
- 'ul',
- 'wbr'
- );
-
- // The different phases.
- const INIT_PHASE = 0;
- const ROOT_PHASE = 1;
- const MAIN_PHASE = 2;
- const END_PHASE = 3;
-
- // The different insertion modes for the main phase.
- const BEFOR_HEAD = 0;
- const IN_HEAD = 1;
- const AFTER_HEAD = 2;
- const IN_BODY = 3;
- const IN_TABLE = 4;
- const IN_CAPTION = 5;
- const IN_CGROUP = 6;
- const IN_TBODY = 7;
- const IN_ROW = 8;
- const IN_CELL = 9;
- const IN_SELECT = 10;
- const AFTER_BODY = 11;
- const IN_FRAME = 12;
- const AFTR_FRAME = 13;
-
- // The different types of elements.
- const SPECIAL = 0;
- const SCOPING = 1;
- const FORMATTING = 2;
- const PHRASING = 3;
-
- const MARKER = 0;
-
- public function __construct()
- {
- $this->phase = self::INIT_PHASE;
- $this->mode = self::BEFOR_HEAD;
- $this->dom = new DOMDocument;
-
- $this->dom->encoding = 'UTF-8';
- $this->dom->preserveWhiteSpace = true;
- $this->dom->substituteEntities = true;
- $this->dom->strictErrorChecking = false;
- }
-
- // Process tag tokens
- public function emitToken($token)
- {
- switch ($this->phase) {
- case self::INIT_PHASE:
- return $this->initPhase($token);
- break;
- case self::ROOT_PHASE:
- return $this->rootElementPhase($token);
- break;
- case self::MAIN_PHASE:
- return $this->mainPhase($token);
- break;
- case self::END_PHASE :
- return $this->trailingEndPhase($token);
- break;
- }
- }
-
- private function initPhase($token)
- {
- /* Initially, the tree construction stage must handle each token
- emitted from the tokenisation stage as follows: */
-
- /* A DOCTYPE token that is marked as being in error
- A comment token
- A start tag token
- An end tag token
- A character token that is not one of one of U+0009 CHARACTER TABULATION,
- U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
- or U+0020 SPACE
- An end-of-file token */
- if ((isset($token['error']) && $token['error']) ||
- $token['type'] === HTML5::COMMENT ||
- $token['type'] === HTML5::STARTTAG ||
- $token['type'] === HTML5::ENDTAG ||
- $token['type'] === HTML5::EOF ||
- ($token['type'] === HTML5::CHARACTR && isset($token['data']) &&
- !preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data']))
- ) {
- /* This specification does not define how to handle this case. In
- particular, user agents may ignore the entirety of this specification
- altogether for such documents, and instead invoke special parse modes
- with a greater emphasis on backwards compatibility. */
-
- $this->phase = self::ROOT_PHASE;
- return $this->rootElementPhase($token);
-
- /* A DOCTYPE token marked as being correct */
- } elseif (isset($token['error']) && !$token['error']) {
- /* Append a DocumentType node to the Document node, with the name
- attribute set to the name given in the DOCTYPE token (which will be
- "HTML"), and the other attributes specific to DocumentType objects
- set to null, empty lists, or the empty string as appropriate. */
- $doctype = new DOMDocumentType(null, null, 'HTML');
-
- /* Then, switch to the root element phase of the tree construction
- stage. */
- $this->phase = self::ROOT_PHASE;
-
- /* A character token that is one of one of U+0009 CHARACTER TABULATION,
- U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
- or U+0020 SPACE */
- } elseif (isset($token['data']) && preg_match(
- '/^[\t\n\x0b\x0c ]+$/',
- $token['data']
- )
- ) {
- /* Append that character to the Document node. */
- $text = $this->dom->createTextNode($token['data']);
- $this->dom->appendChild($text);
- }
- }
-
- private function rootElementPhase($token)
- {
- /* After the initial phase, as each token is emitted from the tokenisation
- stage, it must be processed as described in this section. */
-
- /* A DOCTYPE token */
- if ($token['type'] === HTML5::DOCTYPE) {
- // Parse error. Ignore the token.
-
- /* A comment token */
- } elseif ($token['type'] === HTML5::COMMENT) {
- /* Append a Comment node to the Document object with the data
- attribute set to the data given in the comment token. */
- $comment = $this->dom->createComment($token['data']);
- $this->dom->appendChild($comment);
-
- /* A character token that is one of one of U+0009 CHARACTER TABULATION,
- U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
- or U+0020 SPACE */
- } elseif ($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])
- ) {
- /* Append that character to the Document node. */
- $text = $this->dom->createTextNode($token['data']);
- $this->dom->appendChild($text);
-
- /* A character token that is not one of U+0009 CHARACTER TABULATION,
- U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED
- (FF), or U+0020 SPACE
- A start tag token
- An end tag token
- An end-of-file token */
- } elseif (($token['type'] === HTML5::CHARACTR &&
- !preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) ||
- $token['type'] === HTML5::STARTTAG ||
- $token['type'] === HTML5::ENDTAG ||
- $token['type'] === HTML5::EOF
- ) {
- /* Create an HTMLElement node with the tag name html, in the HTML
- namespace. Append it to the Document object. Switch to the main
- phase and reprocess the current token. */
- $html = $this->dom->createElement('html');
- $this->dom->appendChild($html);
- $this->stack[] = $html;
-
- $this->phase = self::MAIN_PHASE;
- return $this->mainPhase($token);
- }
- }
-
- private function mainPhase($token)
- {
- /* Tokens in the main phase must be handled as follows: */
-
- /* A DOCTYPE token */
- if ($token['type'] === HTML5::DOCTYPE) {
- // Parse error. Ignore the token.
-
- /* A start tag token with the tag name "html" */
- } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'html') {
- /* If this start tag token was not the first start tag token, then
- it is a parse error. */
-
- /* For each attribute on the token, check to see if the attribute
- is already present on the top element of the stack of open elements.
- If it is not, add the attribute and its corresponding value to that
- element. */
- foreach ($token['attr'] as $attr) {
- if (!$this->stack[0]->hasAttribute($attr['name'])) {
- $this->stack[0]->setAttribute($attr['name'], $attr['value']);
- }
- }
-
- /* An end-of-file token */
- } elseif ($token['type'] === HTML5::EOF) {
- /* Generate implied end tags. */
- $this->generateImpliedEndTags();
-
- /* Anything else. */
- } else {
- /* Depends on the insertion mode: */
- switch ($this->mode) {
- case self::BEFOR_HEAD:
- return $this->beforeHead($token);
- break;
- case self::IN_HEAD:
- return $this->inHead($token);
- break;
- case self::AFTER_HEAD:
- return $this->afterHead($token);
- break;
- case self::IN_BODY:
- return $this->inBody($token);
- break;
- case self::IN_TABLE:
- return $this->inTable($token);
- break;
- case self::IN_CAPTION:
- return $this->inCaption($token);
- break;
- case self::IN_CGROUP:
- return $this->inColumnGroup($token);
- break;
- case self::IN_TBODY:
- return $this->inTableBody($token);
- break;
- case self::IN_ROW:
- return $this->inRow($token);
- break;
- case self::IN_CELL:
- return $this->inCell($token);
- break;
- case self::IN_SELECT:
- return $this->inSelect($token);
- break;
- case self::AFTER_BODY:
- return $this->afterBody($token);
- break;
- case self::IN_FRAME:
- return $this->inFrameset($token);
- break;
- case self::AFTR_FRAME:
- return $this->afterFrameset($token);
- break;
- case self::END_PHASE:
- return $this->trailingEndPhase($token);
- break;
- }
- }
- }
-
- private function beforeHead($token)
- {
- /* Handle the token as follows: */
-
- /* A character token that is one of one of U+0009 CHARACTER TABULATION,
- U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
- or U+0020 SPACE */
- if ($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])
- ) {
- /* Append the character to the current node. */
- $this->insertText($token['data']);
-
- /* A comment token */
- } elseif ($token['type'] === HTML5::COMMENT) {
- /* Append a Comment node to the current node with the data attribute
- set to the data given in the comment token. */
- $this->insertComment($token['data']);
-
- /* A start tag token with the tag name "head" */
- } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'head') {
- /* Create an element for the token, append the new element to the
- current node and push it onto the stack of open elements. */
- $element = $this->insertElement($token);
-
- /* Set the head element pointer to this new element node. */
- $this->head_pointer = $element;
-
- /* Change the insertion mode to "in head". */
- $this->mode = self::IN_HEAD;
-
- /* A start tag token whose tag name is one of: "base", "link", "meta",
- "script", "style", "title". Or an end tag with the tag name "html".
- Or a character token that is not one of U+0009 CHARACTER TABULATION,
- U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
- or U+0020 SPACE. Or any other start tag token */
- } elseif ($token['type'] === HTML5::STARTTAG ||
- ($token['type'] === HTML5::ENDTAG && $token['name'] === 'html') ||
- ($token['type'] === HTML5::CHARACTR && !preg_match(
- '/^[\t\n\x0b\x0c ]$/',
- $token['data']
- ))
- ) {
- /* Act as if a start tag token with the tag name "head" and no
- attributes had been seen, then reprocess the current token. */
- $this->beforeHead(
- array(
- 'name' => 'head',
- 'type' => HTML5::STARTTAG,
- 'attr' => array()
- )
- );
-
- return $this->inHead($token);
-
- /* Any other end tag */
- } elseif ($token['type'] === HTML5::ENDTAG) {
- /* Parse error. Ignore the token. */
- }
- }
-
- private function inHead($token)
- {
- /* Handle the token as follows: */
-
- /* A character token that is one of one of U+0009 CHARACTER TABULATION,
- U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
- or U+0020 SPACE.
-
- THIS DIFFERS FROM THE SPEC: If the current node is either a title, style
- or script element, append the character to the current node regardless
- of its content. */
- if (($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) || (
- $token['type'] === HTML5::CHARACTR && in_array(
- end($this->stack)->nodeName,
- array('title', 'style', 'script')
- ))
- ) {
- /* Append the character to the current node. */
- $this->insertText($token['data']);
-
- /* A comment token */
- } elseif ($token['type'] === HTML5::COMMENT) {
- /* Append a Comment node to the current node with the data attribute
- set to the data given in the comment token. */
- $this->insertComment($token['data']);
-
- } elseif ($token['type'] === HTML5::ENDTAG &&
- in_array($token['name'], array('title', 'style', 'script'))
- ) {
- array_pop($this->stack);
- return HTML5::PCDATA;
-
- /* A start tag with the tag name "title" */
- } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'title') {
- /* Create an element for the token and append the new element to the
- node pointed to by the head element pointer, or, if that is null
- (innerHTML case), to the current node. */
- if ($this->head_pointer !== null) {
- $element = $this->insertElement($token, false);
- $this->head_pointer->appendChild($element);
-
- } else {
- $element = $this->insertElement($token);
- }
-
- /* Switch the tokeniser's content model flag to the RCDATA state. */
- return HTML5::RCDATA;
-
- /* A start tag with the tag name "style" */
- } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'style') {
- /* Create an element for the token and append the new element to the
- node pointed to by the head element pointer, or, if that is null
- (innerHTML case), to the current node. */
- if ($this->head_pointer !== null) {
- $element = $this->insertElement($token, false);
- $this->head_pointer->appendChild($element);
-
- } else {
- $this->insertElement($token);
- }
-
- /* Switch the tokeniser's content model flag to the CDATA state. */
- return HTML5::CDATA;
-
- /* A start tag with the tag name "script" */
- } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'script') {
- /* Create an element for the token. */
- $element = $this->insertElement($token, false);
- $this->head_pointer->appendChild($element);
-
- /* Switch the tokeniser's content model flag to the CDATA state. */
- return HTML5::CDATA;
-
- /* A start tag with the tag name "base", "link", or "meta" */
- } elseif ($token['type'] === HTML5::STARTTAG && in_array(
- $token['name'],
- array('base', 'link', 'meta')
- )
- ) {
- /* Create an element for the token and append the new element to the
- node pointed to by the head element pointer, or, if that is null
- (innerHTML case), to the current node. */
- if ($this->head_pointer !== null) {
- $element = $this->insertElement($token, false);
- $this->head_pointer->appendChild($element);
- array_pop($this->stack);
-
- } else {
- $this->insertElement($token);
- }
-
- /* An end tag with the tag name "head" */
- } elseif ($token['type'] === HTML5::ENDTAG && $token['name'] === 'head') {
- /* If the current node is a head element, pop the current node off
- the stack of open elements. */
- if ($this->head_pointer->isSameNode(end($this->stack))) {
- array_pop($this->stack);
-
- /* Otherwise, this is a parse error. */
- } else {
- // k
- }
-
- /* Change the insertion mode to "after head". */
- $this->mode = self::AFTER_HEAD;
-
- /* A start tag with the tag name "head" or an end tag except "html". */
- } elseif (($token['type'] === HTML5::STARTTAG && $token['name'] === 'head') ||
- ($token['type'] === HTML5::ENDTAG && $token['name'] !== 'html')
- ) {
- // Parse error. Ignore the token.
-
- /* Anything else */
- } else {
- /* If the current node is a head element, act as if an end tag
- token with the tag name "head" had been seen. */
- if ($this->head_pointer->isSameNode(end($this->stack))) {
- $this->inHead(
- array(
- 'name' => 'head',
- 'type' => HTML5::ENDTAG
- )
- );
-
- /* Otherwise, change the insertion mode to "after head". */
- } else {
- $this->mode = self::AFTER_HEAD;
- }
-
- /* Then, reprocess the current token. */
- return $this->afterHead($token);
- }
- }
-
- private function afterHead($token)
- {
- /* Handle the token as follows: */
-
- /* A character token that is one of one of U+0009 CHARACTER TABULATION,
- U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
- or U+0020 SPACE */
- if ($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])
- ) {
- /* Append the character to the current node. */
- $this->insertText($token['data']);
-
- /* A comment token */
- } elseif ($token['type'] === HTML5::COMMENT) {
- /* Append a Comment node to the current node with the data attribute
- set to the data given in the comment token. */
- $this->insertComment($token['data']);
-
- /* A start tag token with the tag name "body" */
- } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'body') {
- /* Insert a body element for the token. */
- $this->insertElement($token);
-
- /* Change the insertion mode to "in body". */
- $this->mode = self::IN_BODY;
-
- /* A start tag token with the tag name "frameset" */
- } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'frameset') {
- /* Insert a frameset element for the token. */
- $this->insertElement($token);
-
- /* Change the insertion mode to "in frameset". */
- $this->mode = self::IN_FRAME;
-
- /* A start tag token whose tag name is one of: "base", "link", "meta",
- "script", "style", "title" */
- } elseif ($token['type'] === HTML5::STARTTAG && in_array(
- $token['name'],
- array('base', 'link', 'meta', 'script', 'style', 'title')
- )
- ) {
- /* Parse error. Switch the insertion mode back to "in head" and
- reprocess the token. */
- $this->mode = self::IN_HEAD;
- return $this->inHead($token);
-
- /* Anything else */
- } else {
- /* Act as if a start tag token with the tag name "body" and no
- attributes had been seen, and then reprocess the current token. */
- $this->afterHead(
- array(
- 'name' => 'body',
- 'type' => HTML5::STARTTAG,
- 'attr' => array()
- )
- );
-
- return $this->inBody($token);
- }
- }
-
- private function inBody($token)
- {
- /* Handle the token as follows: */
-
- switch ($token['type']) {
- /* A character token */
- case HTML5::CHARACTR:
- /* Reconstruct the active formatting elements, if any. */
- $this->reconstructActiveFormattingElements();
-
- /* Append the token's character to the current node. */
- $this->insertText($token['data']);
- break;
-
- /* A comment token */
- case HTML5::COMMENT:
- /* Append a Comment node to the current node with the data
- attribute set to the data given in the comment token. */
- $this->insertComment($token['data']);
- break;
-
- case HTML5::STARTTAG:
- switch ($token['name']) {
- /* A start tag token whose tag name is one of: "script",
- "style" */
- case 'script':
- case 'style':
- /* Process the token as if the insertion mode had been "in
- head". */
- return $this->inHead($token);
- break;
-
- /* A start tag token whose tag name is one of: "base", "link",
- "meta", "title" */
- case 'base':
- case 'link':
- case 'meta':
- case 'title':
- /* Parse error. Process the token as if the insertion mode
- had been "in head". */
- return $this->inHead($token);
- break;
-
- /* A start tag token with the tag name "body" */
- case 'body':
- /* Parse error. If the second element on the stack of open
- elements is not a body element, or, if the stack of open
- elements has only one node on it, then ignore the token.
- (innerHTML case) */
- if (count($this->stack) === 1 || $this->stack[1]->nodeName !== 'body') {
- // Ignore
-
- /* Otherwise, for each attribute on the token, check to see
- if the attribute is already present on the body element (the
- second element) on the stack of open elements. If it is not,
- add the attribute and its corresponding value to that
- element. */
- } else {
- foreach ($token['attr'] as $attr) {
- if (!$this->stack[1]->hasAttribute($attr['name'])) {
- $this->stack[1]->setAttribute($attr['name'], $attr['value']);
- }
- }
- }
- break;
-
- /* A start tag whose tag name is one of: "address",
- "blockquote", "center", "dir", "div", "dl", "fieldset",
- "listing", "menu", "ol", "p", "ul" */
- case 'address':
- case 'blockquote':
- case 'center':
- case 'dir':
- case 'div':
- case 'dl':
- case 'fieldset':
- case 'listing':
- case 'menu':
- case 'ol':
- case 'p':
- case 'ul':
- /* If the stack of open elements has a p element in scope,
- then act as if an end tag with the tag name p had been
- seen. */
- if ($this->elementInScope('p')) {
- $this->emitToken(
- array(
- 'name' => 'p',
- 'type' => HTML5::ENDTAG
- )
- );
- }
-
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
- break;
-
- /* A start tag whose tag name is "form" */
- case 'form':
- /* If the form element pointer is not null, ignore the
- token with a parse error. */
- if ($this->form_pointer !== null) {
- // Ignore.
-
- /* Otherwise: */
- } else {
- /* If the stack of open elements has a p element in
- scope, then act as if an end tag with the tag name p
- had been seen. */
- if ($this->elementInScope('p')) {
- $this->emitToken(
- array(
- 'name' => 'p',
- 'type' => HTML5::ENDTAG
- )
- );
- }
-
- /* Insert an HTML element for the token, and set the
- form element pointer to point to the element created. */
- $element = $this->insertElement($token);
- $this->form_pointer = $element;
- }
- break;
-
- /* A start tag whose tag name is "li", "dd" or "dt" */
- case 'li':
- case 'dd':
- case 'dt':
- /* If the stack of open elements has a p element in scope,
- then act as if an end tag with the tag name p had been
- seen. */
- if ($this->elementInScope('p')) {
- $this->emitToken(
- array(
- 'name' => 'p',
- 'type' => HTML5::ENDTAG
- )
- );
- }
-
- $stack_length = count($this->stack) - 1;
-
- for ($n = $stack_length; 0 <= $n; $n--) {
- /* 1. Initialise node to be the current node (the
- bottommost node of the stack). */
- $stop = false;
- $node = $this->stack[$n];
- $cat = $this->getElementCategory($node->tagName);
-
- /* 2. If node is an li, dd or dt element, then pop all
- the nodes from the current node up to node, including
- node, then stop this algorithm. */
- if ($token['name'] === $node->tagName || ($token['name'] !== 'li'
- && ($node->tagName === 'dd' || $node->tagName === 'dt'))
- ) {
- for ($x = $stack_length; $x >= $n; $x--) {
- array_pop($this->stack);
- }
-
- break;
- }
-
- /* 3. If node is not in the formatting category, and is
- not in the phrasing category, and is not an address or
- div element, then stop this algorithm. */
- if ($cat !== self::FORMATTING && $cat !== self::PHRASING &&
- $node->tagName !== 'address' && $node->tagName !== 'div'
- ) {
- break;
- }
- }
-
- /* Finally, insert an HTML element with the same tag
- name as the token's. */
- $this->insertElement($token);
- break;
-
- /* A start tag token whose tag name is "plaintext" */
- case 'plaintext':
- /* If the stack of open elements has a p element in scope,
- then act as if an end tag with the tag name p had been
- seen. */
- if ($this->elementInScope('p')) {
- $this->emitToken(
- array(
- 'name' => 'p',
- 'type' => HTML5::ENDTAG
- )
- );
- }
-
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
-
- return HTML5::PLAINTEXT;
- break;
-
- /* A start tag whose tag name is one of: "h1", "h2", "h3", "h4",
- "h5", "h6" */
- case 'h1':
- case 'h2':
- case 'h3':
- case 'h4':
- case 'h5':
- case 'h6':
- /* If the stack of open elements has a p element in scope,
- then act as if an end tag with the tag name p had been seen. */
- if ($this->elementInScope('p')) {
- $this->emitToken(
- array(
- 'name' => 'p',
- 'type' => HTML5::ENDTAG
- )
- );
- }
-
- /* If the stack of open elements has in scope an element whose
- tag name is one of "h1", "h2", "h3", "h4", "h5", or "h6", then
- this is a parse error; pop elements from the stack until an
- element with one of those tag names has been popped from the
- stack. */
- while ($this->elementInScope(array('h1', 'h2', 'h3', 'h4', 'h5', 'h6'))) {
- array_pop($this->stack);
- }
-
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
- break;
-
- /* A start tag whose tag name is "a" */
- case 'a':
- /* If the list of active formatting elements contains
- an element whose tag name is "a" between the end of the
- list and the last marker on the list (or the start of
- the list if there is no marker on the list), then this
- is a parse error; act as if an end tag with the tag name
- "a" had been seen, then remove that element from the list
- of active formatting elements and the stack of open
- elements if the end tag didn't already remove it (it
- might not have if the element is not in table scope). */
- $leng = count($this->a_formatting);
-
- for ($n = $leng - 1; $n >= 0; $n--) {
- if ($this->a_formatting[$n] === self::MARKER) {
- break;
-
- } elseif ($this->a_formatting[$n]->nodeName === 'a') {
- $this->emitToken(
- array(
- 'name' => 'a',
- 'type' => HTML5::ENDTAG
- )
- );
- break;
- }
- }
-
- /* Reconstruct the active formatting elements, if any. */
- $this->reconstructActiveFormattingElements();
-
- /* Insert an HTML element for the token. */
- $el = $this->insertElement($token);
-
- /* Add that element to the list of active formatting
- elements. */
- $this->a_formatting[] = $el;
- break;
-
- /* A start tag whose tag name is one of: "b", "big", "em", "font",
- "i", "nobr", "s", "small", "strike", "strong", "tt", "u" */
- case 'b':
- case 'big':
- case 'em':
- case 'font':
- case 'i':
- case 'nobr':
- case 's':
- case 'small':
- case 'strike':
- case 'strong':
- case 'tt':
- case 'u':
- /* Reconstruct the active formatting elements, if any. */
- $this->reconstructActiveFormattingElements();
-
- /* Insert an HTML element for the token. */
- $el = $this->insertElement($token);
-
- /* Add that element to the list of active formatting
- elements. */
- $this->a_formatting[] = $el;
- break;
-
- /* A start tag token whose tag name is "button" */
- case 'button':
- /* If the stack of open elements has a button element in scope,
- then this is a parse error; act as if an end tag with the tag
- name "button" had been seen, then reprocess the token. (We don't
- do that. Unnecessary.) */
- if ($this->elementInScope('button')) {
- $this->inBody(
- array(
- 'name' => 'button',
- 'type' => HTML5::ENDTAG
- )
- );
- }
-
- /* Reconstruct the active formatting elements, if any. */
- $this->reconstructActiveFormattingElements();
-
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
-
- /* Insert a marker at the end of the list of active
- formatting elements. */
- $this->a_formatting[] = self::MARKER;
- break;
-
- /* A start tag token whose tag name is one of: "marquee", "object" */
- case 'marquee':
- case 'object':
- /* Reconstruct the active formatting elements, if any. */
- $this->reconstructActiveFormattingElements();
-
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
-
- /* Insert a marker at the end of the list of active
- formatting elements. */
- $this->a_formatting[] = self::MARKER;
- break;
-
- /* A start tag token whose tag name is "xmp" */
- case 'xmp':
- /* Reconstruct the active formatting elements, if any. */
- $this->reconstructActiveFormattingElements();
-
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
-
- /* Switch the content model flag to the CDATA state. */
- return HTML5::CDATA;
- break;
-
- /* A start tag whose tag name is "table" */
- case 'table':
- /* If the stack of open elements has a p element in scope,
- then act as if an end tag with the tag name p had been seen. */
- if ($this->elementInScope('p')) {
- $this->emitToken(
- array(
- 'name' => 'p',
- 'type' => HTML5::ENDTAG
- )
- );
- }
-
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
-
- /* Change the insertion mode to "in table". */
- $this->mode = self::IN_TABLE;
- break;
-
- /* A start tag whose tag name is one of: "area", "basefont",
- "bgsound", "br", "embed", "img", "param", "spacer", "wbr" */
- case 'area':
- case 'basefont':
- case 'bgsound':
- case 'br':
- case 'embed':
- case 'img':
- case 'param':
- case 'spacer':
- case 'wbr':
- /* Reconstruct the active formatting elements, if any. */
- $this->reconstructActiveFormattingElements();
-
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
-
- /* Immediately pop the current node off the stack of open elements. */
- array_pop($this->stack);
- break;
-
- /* A start tag whose tag name is "hr" */
- case 'hr':
- /* If the stack of open elements has a p element in scope,
- then act as if an end tag with the tag name p had been seen. */
- if ($this->elementInScope('p')) {
- $this->emitToken(
- array(
- 'name' => 'p',
- 'type' => HTML5::ENDTAG
- )
- );
- }
-
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
-
- /* Immediately pop the current node off the stack of open elements. */
- array_pop($this->stack);
- break;
-
- /* A start tag whose tag name is "image" */
- case 'image':
- /* Parse error. Change the token's tag name to "img" and
- reprocess it. (Don't ask.) */
- $token['name'] = 'img';
- return $this->inBody($token);
- break;
-
- /* A start tag whose tag name is "input" */
- case 'input':
- /* Reconstruct the active formatting elements, if any. */
- $this->reconstructActiveFormattingElements();
-
- /* Insert an input element for the token. */
- $element = $this->insertElement($token, false);
-
- /* If the form element pointer is not null, then associate the
- input element with the form element pointed to by the form
- element pointer. */
- $this->form_pointer !== null
- ? $this->form_pointer->appendChild($element)
- : end($this->stack)->appendChild($element);
-
- /* Pop that input element off the stack of open elements. */
- array_pop($this->stack);
- break;
-
- /* A start tag whose tag name is "isindex" */
- case 'isindex':
- /* Parse error. */
- // w/e
-
- /* If the form element pointer is not null,
- then ignore the token. */
- if ($this->form_pointer === null) {
- /* Act as if a start tag token with the tag name "form" had
- been seen. */
- $this->inBody(
- array(
- 'name' => 'body',
- 'type' => HTML5::STARTTAG,
- 'attr' => array()
- )
- );
-
- /* Act as if a start tag token with the tag name "hr" had
- been seen. */
- $this->inBody(
- array(
- 'name' => 'hr',
- 'type' => HTML5::STARTTAG,
- 'attr' => array()
- )
- );
-
- /* Act as if a start tag token with the tag name "p" had
- been seen. */
- $this->inBody(
- array(
- 'name' => 'p',
- 'type' => HTML5::STARTTAG,
- 'attr' => array()
- )
- );
-
- /* Act as if a start tag token with the tag name "label"
- had been seen. */
- $this->inBody(
- array(
- 'name' => 'label',
- 'type' => HTML5::STARTTAG,
- 'attr' => array()
- )
- );
-
- /* Act as if a stream of character tokens had been seen. */
- $this->insertText(
- 'This is a searchable index. ' .
- 'Insert your search keywords here: '
- );
-
- /* Act as if a start tag token with the tag name "input"
- had been seen, with all the attributes from the "isindex"
- token, except with the "name" attribute set to the value
- "isindex" (ignoring any explicit "name" attribute). */
- $attr = $token['attr'];
- $attr[] = array('name' => 'name', 'value' => 'isindex');
-
- $this->inBody(
- array(
- 'name' => 'input',
- 'type' => HTML5::STARTTAG,
- 'attr' => $attr
- )
- );
-
- /* Act as if a stream of character tokens had been seen
- (see below for what they should say). */
- $this->insertText(
- 'This is a searchable index. ' .
- 'Insert your search keywords here: '
- );
-
- /* Act as if an end tag token with the tag name "label"
- had been seen. */
- $this->inBody(
- array(
- 'name' => 'label',
- 'type' => HTML5::ENDTAG
- )
- );
-
- /* Act as if an end tag token with the tag name "p" had
- been seen. */
- $this->inBody(
- array(
- 'name' => 'p',
- 'type' => HTML5::ENDTAG
- )
- );
-
- /* Act as if a start tag token with the tag name "hr" had
- been seen. */
- $this->inBody(
- array(
- 'name' => 'hr',
- 'type' => HTML5::ENDTAG
- )
- );
-
- /* Act as if an end tag token with the tag name "form" had
- been seen. */
- $this->inBody(
- array(
- 'name' => 'form',
- 'type' => HTML5::ENDTAG
- )
- );
- }
- break;
-
- /* A start tag whose tag name is "textarea" */
- case 'textarea':
- $this->insertElement($token);
-
- /* Switch the tokeniser's content model flag to the
- RCDATA state. */
- return HTML5::RCDATA;
- break;
-
- /* A start tag whose tag name is one of: "iframe", "noembed",
- "noframes" */
- case 'iframe':
- case 'noembed':
- case 'noframes':
- $this->insertElement($token);
-
- /* Switch the tokeniser's content model flag to the CDATA state. */
- return HTML5::CDATA;
- break;
-
- /* A start tag whose tag name is "select" */
- case 'select':
- /* Reconstruct the active formatting elements, if any. */
- $this->reconstructActiveFormattingElements();
-
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
-
- /* Change the insertion mode to "in select". */
- $this->mode = self::IN_SELECT;
- break;
-
- /* A start or end tag whose tag name is one of: "caption", "col",
- "colgroup", "frame", "frameset", "head", "option", "optgroup",
- "tbody", "td", "tfoot", "th", "thead", "tr". */
- case 'caption':
- case 'col':
- case 'colgroup':
- case 'frame':
- case 'frameset':
- case 'head':
- case 'option':
- case 'optgroup':
- case 'tbody':
- case 'td':
- case 'tfoot':
- case 'th':
- case 'thead':
- case 'tr':
- // Parse error. Ignore the token.
- break;
-
- /* A start or end tag whose tag name is one of: "event-source",
- "section", "nav", "article", "aside", "header", "footer",
- "datagrid", "command" */
- case 'event-source':
- case 'section':
- case 'nav':
- case 'article':
- case 'aside':
- case 'header':
- case 'footer':
- case 'datagrid':
- case 'command':
- // Work in progress!
- break;
-
- /* A start tag token not covered by the previous entries */
- default:
- /* Reconstruct the active formatting elements, if any. */
- $this->reconstructActiveFormattingElements();
-
- $this->insertElement($token, true, true);
- break;
- }
- break;
-
- case HTML5::ENDTAG:
- switch ($token['name']) {
- /* An end tag with the tag name "body" */
- case 'body':
- /* If the second element in the stack of open elements is
- not a body element, this is a parse error. Ignore the token.
- (innerHTML case) */
- if (count($this->stack) < 2 || $this->stack[1]->nodeName !== 'body') {
- // Ignore.
-
- /* If the current node is not the body element, then this
- is a parse error. */
- } elseif (end($this->stack)->nodeName !== 'body') {
- // Parse error.
- }
-
- /* Change the insertion mode to "after body". */
- $this->mode = self::AFTER_BODY;
- break;
-
- /* An end tag with the tag name "html" */
- case 'html':
- /* Act as if an end tag with tag name "body" had been seen,
- then, if that token wasn't ignored, reprocess the current
- token. */
- $this->inBody(
- array(
- 'name' => 'body',
- 'type' => HTML5::ENDTAG
- )
- );
-
- return $this->afterBody($token);
- break;
-
- /* An end tag whose tag name is one of: "address", "blockquote",
- "center", "dir", "div", "dl", "fieldset", "listing", "menu",
- "ol", "pre", "ul" */
- case 'address':
- case 'blockquote':
- case 'center':
- case 'dir':
- case 'div':
- case 'dl':
- case 'fieldset':
- case 'listing':
- case 'menu':
- case 'ol':
- case 'pre':
- case 'ul':
- /* If the stack of open elements has an element in scope
- with the same tag name as that of the token, then generate
- implied end tags. */
- if ($this->elementInScope($token['name'])) {
- $this->generateImpliedEndTags();
-
- /* Now, if the current node is not an element with
- the same tag name as that of the token, then this
- is a parse error. */
- // w/e
-
- /* If the stack of open elements has an element in
- scope with the same tag name as that of the token,
- then pop elements from this stack until an element
- with that tag name has been popped from the stack. */
- for ($n = count($this->stack) - 1; $n >= 0; $n--) {
- if ($this->stack[$n]->nodeName === $token['name']) {
- $n = -1;
- }
-
- array_pop($this->stack);
- }
- }
- break;
-
- /* An end tag whose tag name is "form" */
- case 'form':
- /* If the stack of open elements has an element in scope
- with the same tag name as that of the token, then generate
- implied end tags. */
- if ($this->elementInScope($token['name'])) {
- $this->generateImpliedEndTags();
-
- }
-
- if (end($this->stack)->nodeName !== $token['name']) {
- /* Now, if the current node is not an element with the
- same tag name as that of the token, then this is a parse
- error. */
- // w/e
-
- } else {
- /* Otherwise, if the current node is an element with
- the same tag name as that of the token pop that element
- from the stack. */
- array_pop($this->stack);
- }
-
- /* In any case, set the form element pointer to null. */
- $this->form_pointer = null;
- break;
-
- /* An end tag whose tag name is "p" */
- case 'p':
- /* If the stack of open elements has a p element in scope,
- then generate implied end tags, except for p elements. */
- if ($this->elementInScope('p')) {
- $this->generateImpliedEndTags(array('p'));
-
- /* If the current node is not a p element, then this is
- a parse error. */
- // k
-
- /* If the stack of open elements has a p element in
- scope, then pop elements from this stack until the stack
- no longer has a p element in scope. */
- for ($n = count($this->stack) - 1; $n >= 0; $n--) {
- if ($this->elementInScope('p')) {
- array_pop($this->stack);
-
- } else {
- break;
- }
- }
- }
- break;
-
- /* An end tag whose tag name is "dd", "dt", or "li" */
- case 'dd':
- case 'dt':
- case 'li':
- /* If the stack of open elements has an element in scope
- whose tag name matches the tag name of the token, then
- generate implied end tags, except for elements with the
- same tag name as the token. */
- if ($this->elementInScope($token['name'])) {
- $this->generateImpliedEndTags(array($token['name']));
-
- /* If the current node is not an element with the same
- tag name as the token, then this is a parse error. */
- // w/e
-
- /* If the stack of open elements has an element in scope
- whose tag name matches the tag name of the token, then
- pop elements from this stack until an element with that
- tag name has been popped from the stack. */
- for ($n = count($this->stack) - 1; $n >= 0; $n--) {
- if ($this->stack[$n]->nodeName === $token['name']) {
- $n = -1;
- }
-
- array_pop($this->stack);
- }
- }
- break;
-
- /* An end tag whose tag name is one of: "h1", "h2", "h3", "h4",
- "h5", "h6" */
- case 'h1':
- case 'h2':
- case 'h3':
- case 'h4':
- case 'h5':
- case 'h6':
- $elements = array('h1', 'h2', 'h3', 'h4', 'h5', 'h6');
-
- /* If the stack of open elements has in scope an element whose
- tag name is one of "h1", "h2", "h3", "h4", "h5", or "h6", then
- generate implied end tags. */
- if ($this->elementInScope($elements)) {
- $this->generateImpliedEndTags();
-
- /* Now, if the current node is not an element with the same
- tag name as that of the token, then this is a parse error. */
- // w/e
-
- /* If the stack of open elements has in scope an element
- whose tag name is one of "h1", "h2", "h3", "h4", "h5", or
- "h6", then pop elements from the stack until an element
- with one of those tag names has been popped from the stack. */
- while ($this->elementInScope($elements)) {
- array_pop($this->stack);
- }
- }
- break;
-
- /* An end tag whose tag name is one of: "a", "b", "big", "em",
- "font", "i", "nobr", "s", "small", "strike", "strong", "tt", "u" */
- case 'a':
- case 'b':
- case 'big':
- case 'em':
- case 'font':
- case 'i':
- case 'nobr':
- case 's':
- case 'small':
- case 'strike':
- case 'strong':
- case 'tt':
- case 'u':
- /* 1. Let the formatting element be the last element in
- the list of active formatting elements that:
- * is between the end of the list and the last scope
- marker in the list, if any, or the start of the list
- otherwise, and
- * has the same tag name as the token.
- */
- while (true) {
- for ($a = count($this->a_formatting) - 1; $a >= 0; $a--) {
- if ($this->a_formatting[$a] === self::MARKER) {
- break;
-
- } elseif ($this->a_formatting[$a]->tagName === $token['name']) {
- $formatting_element = $this->a_formatting[$a];
- $in_stack = in_array($formatting_element, $this->stack, true);
- $fe_af_pos = $a;
- break;
- }
- }
-
- /* If there is no such node, or, if that node is
- also in the stack of open elements but the element
- is not in scope, then this is a parse error. Abort
- these steps. The token is ignored. */
- if (!isset($formatting_element) || ($in_stack &&
- !$this->elementInScope($token['name']))
- ) {
- break;
-
- /* Otherwise, if there is such a node, but that node
- is not in the stack of open elements, then this is a
- parse error; remove the element from the list, and
- abort these steps. */
- } elseif (isset($formatting_element) && !$in_stack) {
- unset($this->a_formatting[$fe_af_pos]);
- $this->a_formatting = array_merge($this->a_formatting);
- break;
- }
-
- /* 2. Let the furthest block be the topmost node in the
- stack of open elements that is lower in the stack
- than the formatting element, and is not an element in
- the phrasing or formatting categories. There might
- not be one. */
- $fe_s_pos = array_search($formatting_element, $this->stack, true);
- $length = count($this->stack);
-
- for ($s = $fe_s_pos + 1; $s < $length; $s++) {
- $category = $this->getElementCategory($this->stack[$s]->nodeName);
-
- if ($category !== self::PHRASING && $category !== self::FORMATTING) {
- $furthest_block = $this->stack[$s];
- }
- }
-
- /* 3. If there is no furthest block, then the UA must
- skip the subsequent steps and instead just pop all
- the nodes from the bottom of the stack of open
- elements, from the current node up to the formatting
- element, and remove the formatting element from the
- list of active formatting elements. */
- if (!isset($furthest_block)) {
- for ($n = $length - 1; $n >= $fe_s_pos; $n--) {
- array_pop($this->stack);
- }
-
- unset($this->a_formatting[$fe_af_pos]);
- $this->a_formatting = array_merge($this->a_formatting);
- break;
- }
-
- /* 4. Let the common ancestor be the element
- immediately above the formatting element in the stack
- of open elements. */
- $common_ancestor = $this->stack[$fe_s_pos - 1];
-
- /* 5. If the furthest block has a parent node, then
- remove the furthest block from its parent node. */
- if ($furthest_block->parentNode !== null) {
- $furthest_block->parentNode->removeChild($furthest_block);
- }
-
- /* 6. Let a bookmark note the position of the
- formatting element in the list of active formatting
- elements relative to the elements on either side
- of it in the list. */
- $bookmark = $fe_af_pos;
-
- /* 7. Let node and last node be the furthest block.
- Follow these steps: */
- $node = $furthest_block;
- $last_node = $furthest_block;
-
- while (true) {
- for ($n = array_search($node, $this->stack, true) - 1; $n >= 0; $n--) {
- /* 7.1 Let node be the element immediately
- prior to node in the stack of open elements. */
- $node = $this->stack[$n];
-
- /* 7.2 If node is not in the list of active
- formatting elements, then remove node from
- the stack of open elements and then go back
- to step 1. */
- if (!in_array($node, $this->a_formatting, true)) {
- unset($this->stack[$n]);
- $this->stack = array_merge($this->stack);
-
- } else {
- break;
- }
- }
-
- /* 7.3 Otherwise, if node is the formatting
- element, then go to the next step in the overall
- algorithm. */
- if ($node === $formatting_element) {
- break;
-
- /* 7.4 Otherwise, if last node is the furthest
- block, then move the aforementioned bookmark to
- be immediately after the node in the list of
- active formatting elements. */
- } elseif ($last_node === $furthest_block) {
- $bookmark = array_search($node, $this->a_formatting, true) + 1;
- }
-
- /* 7.5 If node has any children, perform a
- shallow clone of node, replace the entry for
- node in the list of active formatting elements
- with an entry for the clone, replace the entry
- for node in the stack of open elements with an
- entry for the clone, and let node be the clone. */
- if ($node->hasChildNodes()) {
- $clone = $node->cloneNode();
- $s_pos = array_search($node, $this->stack, true);
- $a_pos = array_search($node, $this->a_formatting, true);
-
- $this->stack[$s_pos] = $clone;
- $this->a_formatting[$a_pos] = $clone;
- $node = $clone;
- }
-
- /* 7.6 Insert last node into node, first removing
- it from its previous parent node if any. */
- if ($last_node->parentNode !== null) {
- $last_node->parentNode->removeChild($last_node);
- }
-
- $node->appendChild($last_node);
-
- /* 7.7 Let last node be node. */
- $last_node = $node;
- }
-
- /* 8. Insert whatever last node ended up being in
- the previous step into the common ancestor node,
- first removing it from its previous parent node if
- any. */
- if ($last_node->parentNode !== null) {
- $last_node->parentNode->removeChild($last_node);
- }
-
- $common_ancestor->appendChild($last_node);
-
- /* 9. Perform a shallow clone of the formatting
- element. */
- $clone = $formatting_element->cloneNode();
-
- /* 10. Take all of the child nodes of the furthest
- block and append them to the clone created in the
- last step. */
- while ($furthest_block->hasChildNodes()) {
- $child = $furthest_block->firstChild;
- $furthest_block->removeChild($child);
- $clone->appendChild($child);
- }
-
- /* 11. Append that clone to the furthest block. */
- $furthest_block->appendChild($clone);
-
- /* 12. Remove the formatting element from the list
- of active formatting elements, and insert the clone
- into the list of active formatting elements at the
- position of the aforementioned bookmark. */
- $fe_af_pos = array_search($formatting_element, $this->a_formatting, true);
- unset($this->a_formatting[$fe_af_pos]);
- $this->a_formatting = array_merge($this->a_formatting);
-
- $af_part1 = array_slice($this->a_formatting, 0, $bookmark - 1);
- $af_part2 = array_slice($this->a_formatting, $bookmark, count($this->a_formatting));
- $this->a_formatting = array_merge($af_part1, array($clone), $af_part2);
-
- /* 13. Remove the formatting element from the stack
- of open elements, and insert the clone into the stack
- of open elements immediately after (i.e. in a more
- deeply nested position than) the position of the
- furthest block in that stack. */
- $fe_s_pos = array_search($formatting_element, $this->stack, true);
- $fb_s_pos = array_search($furthest_block, $this->stack, true);
- unset($this->stack[$fe_s_pos]);
-
- $s_part1 = array_slice($this->stack, 0, $fb_s_pos);
- $s_part2 = array_slice($this->stack, $fb_s_pos + 1, count($this->stack));
- $this->stack = array_merge($s_part1, array($clone), $s_part2);
-
- /* 14. Jump back to step 1 in this series of steps. */
- unset($formatting_element, $fe_af_pos, $fe_s_pos, $furthest_block);
- }
- break;
-
- /* An end tag token whose tag name is one of: "button",
- "marquee", "object" */
- case 'button':
- case 'marquee':
- case 'object':
- /* If the stack of open elements has an element in scope whose
- tag name matches the tag name of the token, then generate implied
- tags. */
- if ($this->elementInScope($token['name'])) {
- $this->generateImpliedEndTags();
-
- /* Now, if the current node is not an element with the same
- tag name as the token, then this is a parse error. */
- // k
-
- /* Now, if the stack of open elements has an element in scope
- whose tag name matches the tag name of the token, then pop
- elements from the stack until that element has been popped from
- the stack, and clear the list of active formatting elements up
- to the last marker. */
- for ($n = count($this->stack) - 1; $n >= 0; $n--) {
- if ($this->stack[$n]->nodeName === $token['name']) {
- $n = -1;
- }
-
- array_pop($this->stack);
- }
-
- $marker = end(array_keys($this->a_formatting, self::MARKER, true));
-
- for ($n = count($this->a_formatting) - 1; $n > $marker; $n--) {
- array_pop($this->a_formatting);
- }
- }
- break;
-
- /* Or an end tag whose tag name is one of: "area", "basefont",
- "bgsound", "br", "embed", "hr", "iframe", "image", "img",
- "input", "isindex", "noembed", "noframes", "param", "select",
- "spacer", "table", "textarea", "wbr" */
- case 'area':
- case 'basefont':
- case 'bgsound':
- case 'br':
- case 'embed':
- case 'hr':
- case 'iframe':
- case 'image':
- case 'img':
- case 'input':
- case 'isindex':
- case 'noembed':
- case 'noframes':
- case 'param':
- case 'select':
- case 'spacer':
- case 'table':
- case 'textarea':
- case 'wbr':
- // Parse error. Ignore the token.
- break;
-
- /* An end tag token not covered by the previous entries */
- default:
- for ($n = count($this->stack) - 1; $n >= 0; $n--) {
- /* Initialise node to be the current node (the bottommost
- node of the stack). */
- $node = end($this->stack);
-
- /* If node has the same tag name as the end tag token,
- then: */
- if ($token['name'] === $node->nodeName) {
- /* Generate implied end tags. */
- $this->generateImpliedEndTags();
-
- /* If the tag name of the end tag token does not
- match the tag name of the current node, this is a
- parse error. */
- // k
-
- /* Pop all the nodes from the current node up to
- node, including node, then stop this algorithm. */
- for ($x = count($this->stack) - $n; $x >= $n; $x--) {
- array_pop($this->stack);
- }
-
- } else {
- $category = $this->getElementCategory($node);
-
- if ($category !== self::SPECIAL && $category !== self::SCOPING) {
- /* Otherwise, if node is in neither the formatting
- category nor the phrasing category, then this is a
- parse error. Stop this algorithm. The end tag token
- is ignored. */
- return false;
- }
- }
- }
- break;
- }
- break;
- }
- }
-
- private function inTable($token)
- {
- $clear = array('html', 'table');
-
- /* A character token that is one of one of U+0009 CHARACTER TABULATION,
- U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
- or U+0020 SPACE */
- if ($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])
- ) {
- /* Append the character to the current node. */
- $text = $this->dom->createTextNode($token['data']);
- end($this->stack)->appendChild($text);
-
- /* A comment token */
- } elseif ($token['type'] === HTML5::COMMENT) {
- /* Append a Comment node to the current node with the data
- attribute set to the data given in the comment token. */
- $comment = $this->dom->createComment($token['data']);
- end($this->stack)->appendChild($comment);
-
- /* A start tag whose tag name is "caption" */
- } elseif ($token['type'] === HTML5::STARTTAG &&
- $token['name'] === 'caption'
- ) {
- /* Clear the stack back to a table context. */
- $this->clearStackToTableContext($clear);
-
- /* Insert a marker at the end of the list of active
- formatting elements. */
- $this->a_formatting[] = self::MARKER;
-
- /* Insert an HTML element for the token, then switch the
- insertion mode to "in caption". */
- $this->insertElement($token);
- $this->mode = self::IN_CAPTION;
-
- /* A start tag whose tag name is "colgroup" */
- } elseif ($token['type'] === HTML5::STARTTAG &&
- $token['name'] === 'colgroup'
- ) {
- /* Clear the stack back to a table context. */
- $this->clearStackToTableContext($clear);
-
- /* Insert an HTML element for the token, then switch the
- insertion mode to "in column group". */
- $this->insertElement($token);
- $this->mode = self::IN_CGROUP;
-
- /* A start tag whose tag name is "col" */
- } elseif ($token['type'] === HTML5::STARTTAG &&
- $token['name'] === 'col'
- ) {
- $this->inTable(
- array(
- 'name' => 'colgroup',
- 'type' => HTML5::STARTTAG,
- 'attr' => array()
- )
- );
-
- $this->inColumnGroup($token);
-
- /* A start tag whose tag name is one of: "tbody", "tfoot", "thead" */
- } elseif ($token['type'] === HTML5::STARTTAG && in_array(
- $token['name'],
- array('tbody', 'tfoot', 'thead')
- )
- ) {
- /* Clear the stack back to a table context. */
- $this->clearStackToTableContext($clear);
-
- /* Insert an HTML element for the token, then switch the insertion
- mode to "in table body". */
- $this->insertElement($token);
- $this->mode = self::IN_TBODY;
-
- /* A start tag whose tag name is one of: "td", "th", "tr" */
- } elseif ($token['type'] === HTML5::STARTTAG &&
- in_array($token['name'], array('td', 'th', 'tr'))
- ) {
- /* Act as if a start tag token with the tag name "tbody" had been
- seen, then reprocess the current token. */
- $this->inTable(
- array(
- 'name' => 'tbody',
- 'type' => HTML5::STARTTAG,
- 'attr' => array()
- )
- );
-
- return $this->inTableBody($token);
-
- /* A start tag whose tag name is "table" */
- } elseif ($token['type'] === HTML5::STARTTAG &&
- $token['name'] === 'table'
- ) {
- /* Parse error. Act as if an end tag token with the tag name "table"
- had been seen, then, if that token wasn't ignored, reprocess the
- current token. */
- $this->inTable(
- array(
- 'name' => 'table',
- 'type' => HTML5::ENDTAG
- )
- );
-
- return $this->mainPhase($token);
-
- /* An end tag whose tag name is "table" */
- } elseif ($token['type'] === HTML5::ENDTAG &&
- $token['name'] === 'table'
- ) {
- /* If the stack of open elements does not have an element in table
- scope with the same tag name as the token, this is a parse error.
- Ignore the token. (innerHTML case) */
- if (!$this->elementInScope($token['name'], true)) {
- return false;
-
- /* Otherwise: */
- } else {
- /* Generate implied end tags. */
- $this->generateImpliedEndTags();
-
- /* Now, if the current node is not a table element, then this
- is a parse error. */
- // w/e
-
- /* Pop elements from this stack until a table element has been
- popped from the stack. */
- while (true) {
- $current = end($this->stack)->nodeName;
- array_pop($this->stack);
-
- if ($current === 'table') {
- break;
- }
- }
-
- /* Reset the insertion mode appropriately. */
- $this->resetInsertionMode();
- }
-
- /* An end tag whose tag name is one of: "body", "caption", "col",
- "colgroup", "html", "tbody", "td", "tfoot", "th", "thead", "tr" */
- } elseif ($token['type'] === HTML5::ENDTAG && in_array(
- $token['name'],
- array(
- 'body',
- 'caption',
- 'col',
- 'colgroup',
- 'html',
- 'tbody',
- 'td',
- 'tfoot',
- 'th',
- 'thead',
- 'tr'
- )
- )
- ) {
- // Parse error. Ignore the token.
-
- /* Anything else */
- } else {
- /* Parse error. Process the token as if the insertion mode was "in
- body", with the following exception: */
-
- /* If the current node is a table, tbody, tfoot, thead, or tr
- element, then, whenever a node would be inserted into the current
- node, it must instead be inserted into the foster parent element. */
- if (in_array(
- end($this->stack)->nodeName,
- array('table', 'tbody', 'tfoot', 'thead', 'tr')
- )
- ) {
- /* The foster parent element is the parent element of the last
- table element in the stack of open elements, if there is a
- table element and it has such a parent element. If there is no
- table element in the stack of open elements (innerHTML case),
- then the foster parent element is the first element in the
- stack of open elements (the html element). Otherwise, if there
- is a table element in the stack of open elements, but the last
- table element in the stack of open elements has no parent, or
- its parent node is not an element, then the foster parent
- element is the element before the last table element in the
- stack of open elements. */
- for ($n = count($this->stack) - 1; $n >= 0; $n--) {
- if ($this->stack[$n]->nodeName === 'table') {
- $table = $this->stack[$n];
- break;
- }
- }
-
- if (isset($table) && $table->parentNode !== null) {
- $this->foster_parent = $table->parentNode;
-
- } elseif (!isset($table)) {
- $this->foster_parent = $this->stack[0];
-
- } elseif (isset($table) && ($table->parentNode === null ||
- $table->parentNode->nodeType !== XML_ELEMENT_NODE)
- ) {
- $this->foster_parent = $this->stack[$n - 1];
- }
- }
-
- $this->inBody($token);
- }
- }
-
- private function inCaption($token)
- {
- /* An end tag whose tag name is "caption" */
- if ($token['type'] === HTML5::ENDTAG && $token['name'] === 'caption') {
- /* If the stack of open elements does not have an element in table
- scope with the same tag name as the token, this is a parse error.
- Ignore the token. (innerHTML case) */
- if (!$this->elementInScope($token['name'], true)) {
- // Ignore
-
- /* Otherwise: */
- } else {
- /* Generate implied end tags. */
- $this->generateImpliedEndTags();
-
- /* Now, if the current node is not a caption element, then this
- is a parse error. */
- // w/e
-
- /* Pop elements from this stack until a caption element has
- been popped from the stack. */
- while (true) {
- $node = end($this->stack)->nodeName;
- array_pop($this->stack);
-
- if ($node === 'caption') {
- break;
- }
- }
-
- /* Clear the list of active formatting elements up to the last
- marker. */
- $this->clearTheActiveFormattingElementsUpToTheLastMarker();
-
- /* Switch the insertion mode to "in table". */
- $this->mode = self::IN_TABLE;
- }
-
- /* A start tag whose tag name is one of: "caption", "col", "colgroup",
- "tbody", "td", "tfoot", "th", "thead", "tr", or an end tag whose tag
- name is "table" */
- } elseif (($token['type'] === HTML5::STARTTAG && in_array(
- $token['name'],
- array(
- 'caption',
- 'col',
- 'colgroup',
- 'tbody',
- 'td',
- 'tfoot',
- 'th',
- 'thead',
- 'tr'
- )
- )) || ($token['type'] === HTML5::ENDTAG &&
- $token['name'] === 'table')
- ) {
- /* Parse error. Act as if an end tag with the tag name "caption"
- had been seen, then, if that token wasn't ignored, reprocess the
- current token. */
- $this->inCaption(
- array(
- 'name' => 'caption',
- 'type' => HTML5::ENDTAG
- )
- );
-
- return $this->inTable($token);
-
- /* An end tag whose tag name is one of: "body", "col", "colgroup",
- "html", "tbody", "td", "tfoot", "th", "thead", "tr" */
- } elseif ($token['type'] === HTML5::ENDTAG && in_array(
- $token['name'],
- array(
- 'body',
- 'col',
- 'colgroup',
- 'html',
- 'tbody',
- 'tfoot',
- 'th',
- 'thead',
- 'tr'
- )
- )
- ) {
- // Parse error. Ignore the token.
-
- /* Anything else */
- } else {
- /* Process the token as if the insertion mode was "in body". */
- $this->inBody($token);
- }
- }
-
- private function inColumnGroup($token)
- {
- /* A character token that is one of one of U+0009 CHARACTER TABULATION,
- U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
- or U+0020 SPACE */
- if ($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])
- ) {
- /* Append the character to the current node. */
- $text = $this->dom->createTextNode($token['data']);
- end($this->stack)->appendChild($text);
-
- /* A comment token */
- } elseif ($token['type'] === HTML5::COMMENT) {
- /* Append a Comment node to the current node with the data
- attribute set to the data given in the comment token. */
- $comment = $this->dom->createComment($token['data']);
- end($this->stack)->appendChild($comment);
-
- /* A start tag whose tag name is "col" */
- } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'col') {
- /* Insert a col element for the token. Immediately pop the current
- node off the stack of open elements. */
- $this->insertElement($token);
- array_pop($this->stack);
-
- /* An end tag whose tag name is "colgroup" */
- } elseif ($token['type'] === HTML5::ENDTAG &&
- $token['name'] === 'colgroup'
- ) {
- /* If the current node is the root html element, then this is a
- parse error, ignore the token. (innerHTML case) */
- if (end($this->stack)->nodeName === 'html') {
- // Ignore
-
- /* Otherwise, pop the current node (which will be a colgroup
- element) from the stack of open elements. Switch the insertion
- mode to "in table". */
- } else {
- array_pop($this->stack);
- $this->mode = self::IN_TABLE;
- }
-
- /* An end tag whose tag name is "col" */
- } elseif ($token['type'] === HTML5::ENDTAG && $token['name'] === 'col') {
- /* Parse error. Ignore the token. */
-
- /* Anything else */
- } else {
- /* Act as if an end tag with the tag name "colgroup" had been seen,
- and then, if that token wasn't ignored, reprocess the current token. */
- $this->inColumnGroup(
- array(
- 'name' => 'colgroup',
- 'type' => HTML5::ENDTAG
- )
- );
-
- return $this->inTable($token);
- }
- }
-
- private function inTableBody($token)
- {
- $clear = array('tbody', 'tfoot', 'thead', 'html');
-
- /* A start tag whose tag name is "tr" */
- if ($token['type'] === HTML5::STARTTAG && $token['name'] === 'tr') {
- /* Clear the stack back to a table body context. */
- $this->clearStackToTableContext($clear);
-
- /* Insert a tr element for the token, then switch the insertion
- mode to "in row". */
- $this->insertElement($token);
- $this->mode = self::IN_ROW;
-
- /* A start tag whose tag name is one of: "th", "td" */
- } elseif ($token['type'] === HTML5::STARTTAG &&
- ($token['name'] === 'th' || $token['name'] === 'td')
- ) {
- /* Parse error. Act as if a start tag with the tag name "tr" had
- been seen, then reprocess the current token. */
- $this->inTableBody(
- array(
- 'name' => 'tr',
- 'type' => HTML5::STARTTAG,
- 'attr' => array()
- )
- );
-
- return $this->inRow($token);
-
- /* An end tag whose tag name is one of: "tbody", "tfoot", "thead" */
- } elseif ($token['type'] === HTML5::ENDTAG &&
- in_array($token['name'], array('tbody', 'tfoot', 'thead'))
- ) {
- /* If the stack of open elements does not have an element in table
- scope with the same tag name as the token, this is a parse error.
- Ignore the token. */
- if (!$this->elementInScope($token['name'], true)) {
- // Ignore
-
- /* Otherwise: */
- } else {
- /* Clear the stack back to a table body context. */
- $this->clearStackToTableContext($clear);
-
- /* Pop the current node from the stack of open elements. Switch
- the insertion mode to "in table". */
- array_pop($this->stack);
- $this->mode = self::IN_TABLE;
- }
-
- /* A start tag whose tag name is one of: "caption", "col", "colgroup",
- "tbody", "tfoot", "thead", or an end tag whose tag name is "table" */
- } elseif (($token['type'] === HTML5::STARTTAG && in_array(
- $token['name'],
- array('caption', 'col', 'colgroup', 'tbody', 'tfoor', 'thead')
- )) ||
- ($token['type'] === HTML5::STARTTAG && $token['name'] === 'table')
- ) {
- /* If the stack of open elements does not have a tbody, thead, or
- tfoot element in table scope, this is a parse error. Ignore the
- token. (innerHTML case) */
- if (!$this->elementInScope(array('tbody', 'thead', 'tfoot'), true)) {
- // Ignore.
-
- /* Otherwise: */
- } else {
- /* Clear the stack back to a table body context. */
- $this->clearStackToTableContext($clear);
-
- /* Act as if an end tag with the same tag name as the current
- node ("tbody", "tfoot", or "thead") had been seen, then
- reprocess the current token. */
- $this->inTableBody(
- array(
- 'name' => end($this->stack)->nodeName,
- 'type' => HTML5::ENDTAG
- )
- );
-
- return $this->mainPhase($token);
- }
-
- /* An end tag whose tag name is one of: "body", "caption", "col",
- "colgroup", "html", "td", "th", "tr" */
- } elseif ($token['type'] === HTML5::ENDTAG && in_array(
- $token['name'],
- array('body', 'caption', 'col', 'colgroup', 'html', 'td', 'th', 'tr')
- )
- ) {
- /* Parse error. Ignore the token. */
-
- /* Anything else */
- } else {
- /* Process the token as if the insertion mode was "in table". */
- $this->inTable($token);
- }
- }
-
- private function inRow($token)
- {
- $clear = array('tr', 'html');
-
- /* A start tag whose tag name is one of: "th", "td" */
- if ($token['type'] === HTML5::STARTTAG &&
- ($token['name'] === 'th' || $token['name'] === 'td')
- ) {
- /* Clear the stack back to a table row context. */
- $this->clearStackToTableContext($clear);
-
- /* Insert an HTML element for the token, then switch the insertion
- mode to "in cell". */
- $this->insertElement($token);
- $this->mode = self::IN_CELL;
-
- /* Insert a marker at the end of the list of active formatting
- elements. */
- $this->a_formatting[] = self::MARKER;
-
- /* An end tag whose tag name is "tr" */
- } elseif ($token['type'] === HTML5::ENDTAG && $token['name'] === 'tr') {
- /* If the stack of open elements does not have an element in table
- scope with the same tag name as the token, this is a parse error.
- Ignore the token. (innerHTML case) */
- if (!$this->elementInScope($token['name'], true)) {
- // Ignore.
-
- /* Otherwise: */
- } else {
- /* Clear the stack back to a table row context. */
- $this->clearStackToTableContext($clear);
-
- /* Pop the current node (which will be a tr element) from the
- stack of open elements. Switch the insertion mode to "in table
- body". */
- array_pop($this->stack);
- $this->mode = self::IN_TBODY;
- }
-
- /* A start tag whose tag name is one of: "caption", "col", "colgroup",
- "tbody", "tfoot", "thead", "tr" or an end tag whose tag name is "table" */
- } elseif ($token['type'] === HTML5::STARTTAG && in_array(
- $token['name'],
- array('caption', 'col', 'colgroup', 'tbody', 'tfoot', 'thead', 'tr')
- )
- ) {
- /* Act as if an end tag with the tag name "tr" had been seen, then,
- if that token wasn't ignored, reprocess the current token. */
- $this->inRow(
- array(
- 'name' => 'tr',
- 'type' => HTML5::ENDTAG
- )
- );
-
- return $this->inCell($token);
-
- /* An end tag whose tag name is one of: "tbody", "tfoot", "thead" */
- } elseif ($token['type'] === HTML5::ENDTAG &&
- in_array($token['name'], array('tbody', 'tfoot', 'thead'))
- ) {
- /* If the stack of open elements does not have an element in table
- scope with the same tag name as the token, this is a parse error.
- Ignore the token. */
- if (!$this->elementInScope($token['name'], true)) {
- // Ignore.
-
- /* Otherwise: */
- } else {
- /* Otherwise, act as if an end tag with the tag name "tr" had
- been seen, then reprocess the current token. */
- $this->inRow(
- array(
- 'name' => 'tr',
- 'type' => HTML5::ENDTAG
- )
- );
-
- return $this->inCell($token);
- }
-
- /* An end tag whose tag name is one of: "body", "caption", "col",
- "colgroup", "html", "td", "th" */
- } elseif ($token['type'] === HTML5::ENDTAG && in_array(
- $token['name'],
- array('body', 'caption', 'col', 'colgroup', 'html', 'td', 'th', 'tr')
- )
- ) {
- /* Parse error. Ignore the token. */
-
- /* Anything else */
- } else {
- /* Process the token as if the insertion mode was "in table". */
- $this->inTable($token);
- }
- }
-
- private function inCell($token)
- {
- /* An end tag whose tag name is one of: "td", "th" */
- if ($token['type'] === HTML5::ENDTAG &&
- ($token['name'] === 'td' || $token['name'] === 'th')
- ) {
- /* If the stack of open elements does not have an element in table
- scope with the same tag name as that of the token, then this is a
- parse error and the token must be ignored. */
- if (!$this->elementInScope($token['name'], true)) {
- // Ignore.
-
- /* Otherwise: */
- } else {
- /* Generate implied end tags, except for elements with the same
- tag name as the token. */
- $this->generateImpliedEndTags(array($token['name']));
-
- /* Now, if the current node is not an element with the same tag
- name as the token, then this is a parse error. */
- // k
-
- /* Pop elements from this stack until an element with the same
- tag name as the token has been popped from the stack. */
- while (true) {
- $node = end($this->stack)->nodeName;
- array_pop($this->stack);
-
- if ($node === $token['name']) {
- break;
- }
- }
-
- /* Clear the list of active formatting elements up to the last
- marker. */
- $this->clearTheActiveFormattingElementsUpToTheLastMarker();
-
- /* Switch the insertion mode to "in row". (The current node
- will be a tr element at this point.) */
- $this->mode = self::IN_ROW;
- }
-
- /* A start tag whose tag name is one of: "caption", "col", "colgroup",
- "tbody", "td", "tfoot", "th", "thead", "tr" */
- } elseif ($token['type'] === HTML5::STARTTAG && in_array(
- $token['name'],
- array(
- 'caption',
- 'col',
- 'colgroup',
- 'tbody',
- 'td',
- 'tfoot',
- 'th',
- 'thead',
- 'tr'
- )
- )
- ) {
- /* If the stack of open elements does not have a td or th element
- in table scope, then this is a parse error; ignore the token.
- (innerHTML case) */
- if (!$this->elementInScope(array('td', 'th'), true)) {
- // Ignore.
-
- /* Otherwise, close the cell (see below) and reprocess the current
- token. */
- } else {
- $this->closeCell();
- return $this->inRow($token);
- }
-
- /* A start tag whose tag name is one of: "caption", "col", "colgroup",
- "tbody", "td", "tfoot", "th", "thead", "tr" */
- } elseif ($token['type'] === HTML5::STARTTAG && in_array(
- $token['name'],
- array(
- 'caption',
- 'col',
- 'colgroup',
- 'tbody',
- 'td',
- 'tfoot',
- 'th',
- 'thead',
- 'tr'
- )
- )
- ) {
- /* If the stack of open elements does not have a td or th element
- in table scope, then this is a parse error; ignore the token.
- (innerHTML case) */
- if (!$this->elementInScope(array('td', 'th'), true)) {
- // Ignore.
-
- /* Otherwise, close the cell (see below) and reprocess the current
- token. */
- } else {
- $this->closeCell();
- return $this->inRow($token);
- }
-
- /* An end tag whose tag name is one of: "body", "caption", "col",
- "colgroup", "html" */
- } elseif ($token['type'] === HTML5::ENDTAG && in_array(
- $token['name'],
- array('body', 'caption', 'col', 'colgroup', 'html')
- )
- ) {
- /* Parse error. Ignore the token. */
-
- /* An end tag whose tag name is one of: "table", "tbody", "tfoot",
- "thead", "tr" */
- } elseif ($token['type'] === HTML5::ENDTAG && in_array(
- $token['name'],
- array('table', 'tbody', 'tfoot', 'thead', 'tr')
- )
- ) {
- /* If the stack of open elements does not have an element in table
- scope with the same tag name as that of the token (which can only
- happen for "tbody", "tfoot" and "thead", or, in the innerHTML case),
- then this is a parse error and the token must be ignored. */
- if (!$this->elementInScope($token['name'], true)) {
- // Ignore.
-
- /* Otherwise, close the cell (see below) and reprocess the current
- token. */
- } else {
- $this->closeCell();
- return $this->inRow($token);
- }
-
- /* Anything else */
- } else {
- /* Process the token as if the insertion mode was "in body". */
- $this->inBody($token);
- }
- }
-
- private function inSelect($token)
- {
- /* Handle the token as follows: */
-
- /* A character token */
- if ($token['type'] === HTML5::CHARACTR) {
- /* Append the token's character to the current node. */
- $this->insertText($token['data']);
-
- /* A comment token */
- } elseif ($token['type'] === HTML5::COMMENT) {
- /* Append a Comment node to the current node with the data
- attribute set to the data given in the comment token. */
- $this->insertComment($token['data']);
-
- /* A start tag token whose tag name is "option" */
- } elseif ($token['type'] === HTML5::STARTTAG &&
- $token['name'] === 'option'
- ) {
- /* If the current node is an option element, act as if an end tag
- with the tag name "option" had been seen. */
- if (end($this->stack)->nodeName === 'option') {
- $this->inSelect(
- array(
- 'name' => 'option',
- 'type' => HTML5::ENDTAG
- )
- );
- }
-
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
-
- /* A start tag token whose tag name is "optgroup" */
- } elseif ($token['type'] === HTML5::STARTTAG &&
- $token['name'] === 'optgroup'
- ) {
- /* If the current node is an option element, act as if an end tag
- with the tag name "option" had been seen. */
- if (end($this->stack)->nodeName === 'option') {
- $this->inSelect(
- array(
- 'name' => 'option',
- 'type' => HTML5::ENDTAG
- )
- );
- }
-
- /* If the current node is an optgroup element, act as if an end tag
- with the tag name "optgroup" had been seen. */
- if (end($this->stack)->nodeName === 'optgroup') {
- $this->inSelect(
- array(
- 'name' => 'optgroup',
- 'type' => HTML5::ENDTAG
- )
- );
- }
-
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
-
- /* An end tag token whose tag name is "optgroup" */
- } elseif ($token['type'] === HTML5::ENDTAG &&
- $token['name'] === 'optgroup'
- ) {
- /* First, if the current node is an option element, and the node
- immediately before it in the stack of open elements is an optgroup
- element, then act as if an end tag with the tag name "option" had
- been seen. */
- $elements_in_stack = count($this->stack);
-
- if ($this->stack[$elements_in_stack - 1]->nodeName === 'option' &&
- $this->stack[$elements_in_stack - 2]->nodeName === 'optgroup'
- ) {
- $this->inSelect(
- array(
- 'name' => 'option',
- 'type' => HTML5::ENDTAG
- )
- );
- }
-
- /* If the current node is an optgroup element, then pop that node
- from the stack of open elements. Otherwise, this is a parse error,
- ignore the token. */
- if ($this->stack[$elements_in_stack - 1] === 'optgroup') {
- array_pop($this->stack);
- }
-
- /* An end tag token whose tag name is "option" */
- } elseif ($token['type'] === HTML5::ENDTAG &&
- $token['name'] === 'option'
- ) {
- /* If the current node is an option element, then pop that node
- from the stack of open elements. Otherwise, this is a parse error,
- ignore the token. */
- if (end($this->stack)->nodeName === 'option') {
- array_pop($this->stack);
- }
-
- /* An end tag whose tag name is "select" */
- } elseif ($token['type'] === HTML5::ENDTAG &&
- $token['name'] === 'select'
- ) {
- /* If the stack of open elements does not have an element in table
- scope with the same tag name as the token, this is a parse error.
- Ignore the token. (innerHTML case) */
- if (!$this->elementInScope($token['name'], true)) {
- // w/e
-
- /* Otherwise: */
- } else {
- /* Pop elements from the stack of open elements until a select
- element has been popped from the stack. */
- while (true) {
- $current = end($this->stack)->nodeName;
- array_pop($this->stack);
-
- if ($current === 'select') {
- break;
- }
- }
-
- /* Reset the insertion mode appropriately. */
- $this->resetInsertionMode();
- }
-
- /* A start tag whose tag name is "select" */
- } elseif ($token['name'] === 'select' &&
- $token['type'] === HTML5::STARTTAG
- ) {
- /* Parse error. Act as if the token had been an end tag with the
- tag name "select" instead. */
- $this->inSelect(
- array(
- 'name' => 'select',
- 'type' => HTML5::ENDTAG
- )
- );
-
- /* An end tag whose tag name is one of: "caption", "table", "tbody",
- "tfoot", "thead", "tr", "td", "th" */
- } elseif (in_array(
- $token['name'],
- array(
- 'caption',
- 'table',
- 'tbody',
- 'tfoot',
- 'thead',
- 'tr',
- 'td',
- 'th'
- )
- ) && $token['type'] === HTML5::ENDTAG
- ) {
- /* Parse error. */
- // w/e
-
- /* If the stack of open elements has an element in table scope with
- the same tag name as that of the token, then act as if an end tag
- with the tag name "select" had been seen, and reprocess the token.
- Otherwise, ignore the token. */
- if ($this->elementInScope($token['name'], true)) {
- $this->inSelect(
- array(
- 'name' => 'select',
- 'type' => HTML5::ENDTAG
- )
- );
-
- $this->mainPhase($token);
- }
-
- /* Anything else */
- } else {
- /* Parse error. Ignore the token. */
- }
- }
-
- private function afterBody($token)
- {
- /* Handle the token as follows: */
-
- /* A character token that is one of one of U+0009 CHARACTER TABULATION,
- U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
- or U+0020 SPACE */
- if ($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])
- ) {
- /* Process the token as it would be processed if the insertion mode
- was "in body". */
- $this->inBody($token);
-
- /* A comment token */
- } elseif ($token['type'] === HTML5::COMMENT) {
- /* Append a Comment node to the first element in the stack of open
- elements (the html element), with the data attribute set to the
- data given in the comment token. */
- $comment = $this->dom->createComment($token['data']);
- $this->stack[0]->appendChild($comment);
-
- /* An end tag with the tag name "html" */
- } elseif ($token['type'] === HTML5::ENDTAG && $token['name'] === 'html') {
- /* If the parser was originally created in order to handle the
- setting of an element's innerHTML attribute, this is a parse error;
- ignore the token. (The element will be an html element in this
- case.) (innerHTML case) */
-
- /* Otherwise, switch to the trailing end phase. */
- $this->phase = self::END_PHASE;
-
- /* Anything else */
- } else {
- /* Parse error. Set the insertion mode to "in body" and reprocess
- the token. */
- $this->mode = self::IN_BODY;
- return $this->inBody($token);
- }
- }
-
- private function inFrameset($token)
- {
- /* Handle the token as follows: */
-
- /* A character token that is one of one of U+0009 CHARACTER TABULATION,
- U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
- U+000D CARRIAGE RETURN (CR), or U+0020 SPACE */
- if ($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])
- ) {
- /* Append the character to the current node. */
- $this->insertText($token['data']);
-
- /* A comment token */
- } elseif ($token['type'] === HTML5::COMMENT) {
- /* Append a Comment node to the current node with the data
- attribute set to the data given in the comment token. */
- $this->insertComment($token['data']);
-
- /* A start tag with the tag name "frameset" */
- } elseif ($token['name'] === 'frameset' &&
- $token['type'] === HTML5::STARTTAG
- ) {
- $this->insertElement($token);
-
- /* An end tag with the tag name "frameset" */
- } elseif ($token['name'] === 'frameset' &&
- $token['type'] === HTML5::ENDTAG
- ) {
- /* If the current node is the root html element, then this is a
- parse error; ignore the token. (innerHTML case) */
- if (end($this->stack)->nodeName === 'html') {
- // Ignore
-
- } else {
- /* Otherwise, pop the current node from the stack of open
- elements. */
- array_pop($this->stack);
-
- /* If the parser was not originally created in order to handle
- the setting of an element's innerHTML attribute (innerHTML case),
- and the current node is no longer a frameset element, then change
- the insertion mode to "after frameset". */
- $this->mode = self::AFTR_FRAME;
- }
-
- /* A start tag with the tag name "frame" */
- } elseif ($token['name'] === 'frame' &&
- $token['type'] === HTML5::STARTTAG
- ) {
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
-
- /* Immediately pop the current node off the stack of open elements. */
- array_pop($this->stack);
-
- /* A start tag with the tag name "noframes" */
- } elseif ($token['name'] === 'noframes' &&
- $token['type'] === HTML5::STARTTAG
- ) {
- /* Process the token as if the insertion mode had been "in body". */
- $this->inBody($token);
-
- /* Anything else */
- } else {
- /* Parse error. Ignore the token. */
- }
- }
-
- private function afterFrameset($token)
- {
- /* Handle the token as follows: */
-
- /* A character token that is one of one of U+0009 CHARACTER TABULATION,
- U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
- U+000D CARRIAGE RETURN (CR), or U+0020 SPACE */
- if ($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])
- ) {
- /* Append the character to the current node. */
- $this->insertText($token['data']);
-
- /* A comment token */
- } elseif ($token['type'] === HTML5::COMMENT) {
- /* Append a Comment node to the current node with the data
- attribute set to the data given in the comment token. */
- $this->insertComment($token['data']);
-
- /* An end tag with the tag name "html" */
- } elseif ($token['name'] === 'html' &&
- $token['type'] === HTML5::ENDTAG
- ) {
- /* Switch to the trailing end phase. */
- $this->phase = self::END_PHASE;
-
- /* A start tag with the tag name "noframes" */
- } elseif ($token['name'] === 'noframes' &&
- $token['type'] === HTML5::STARTTAG
- ) {
- /* Process the token as if the insertion mode had been "in body". */
- $this->inBody($token);
-
- /* Anything else */
- } else {
- /* Parse error. Ignore the token. */
- }
- }
-
- private function trailingEndPhase($token)
- {
- /* After the main phase, as each token is emitted from the tokenisation
- stage, it must be processed as described in this section. */
-
- /* A DOCTYPE token */
- if ($token['type'] === HTML5::DOCTYPE) {
- // Parse error. Ignore the token.
-
- /* A comment token */
- } elseif ($token['type'] === HTML5::COMMENT) {
- /* Append a Comment node to the Document object with the data
- attribute set to the data given in the comment token. */
- $comment = $this->dom->createComment($token['data']);
- $this->dom->appendChild($comment);
-
- /* A character token that is one of one of U+0009 CHARACTER TABULATION,
- U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
- or U+0020 SPACE */
- } elseif ($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])
- ) {
- /* Process the token as it would be processed in the main phase. */
- $this->mainPhase($token);
-
- /* A character token that is not one of U+0009 CHARACTER TABULATION,
- U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
- or U+0020 SPACE. Or a start tag token. Or an end tag token. */
- } elseif (($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) ||
- $token['type'] === HTML5::STARTTAG || $token['type'] === HTML5::ENDTAG
- ) {
- /* Parse error. Switch back to the main phase and reprocess the
- token. */
- $this->phase = self::MAIN_PHASE;
- return $this->mainPhase($token);
-
- /* An end-of-file token */
- } elseif ($token['type'] === HTML5::EOF) {
- /* OMG DONE!! */
- }
- }
-
- private function insertElement($token, $append = true, $check = false)
- {
- // Proprietary workaround for libxml2's limitations with tag names
- if ($check) {
- // Slightly modified HTML5 tag-name modification,
- // removing anything that's not an ASCII letter, digit, or hyphen
- $token['name'] = preg_replace('/[^a-z0-9-]/i', '', $token['name']);
- // Remove leading hyphens and numbers
- $token['name'] = ltrim($token['name'], '-0..9');
- // In theory, this should ever be needed, but just in case
- if ($token['name'] === '') {
- $token['name'] = 'span';
- } // arbitrary generic choice
- }
-
- $el = $this->dom->createElement($token['name']);
-
- foreach ($token['attr'] as $attr) {
- if (!$el->hasAttribute($attr['name'])) {
- $el->setAttribute($attr['name'], $attr['value']);
- }
- }
-
- $this->appendToRealParent($el);
- $this->stack[] = $el;
-
- return $el;
- }
-
- private function insertText($data)
- {
- $text = $this->dom->createTextNode($data);
- $this->appendToRealParent($text);
- }
-
- private function insertComment($data)
- {
- $comment = $this->dom->createComment($data);
- $this->appendToRealParent($comment);
- }
-
- private function appendToRealParent($node)
- {
- if ($this->foster_parent === null) {
- end($this->stack)->appendChild($node);
-
- } elseif ($this->foster_parent !== null) {
- /* If the foster parent element is the parent element of the
- last table element in the stack of open elements, then the new
- node must be inserted immediately before the last table element
- in the stack of open elements in the foster parent element;
- otherwise, the new node must be appended to the foster parent
- element. */
- for ($n = count($this->stack) - 1; $n >= 0; $n--) {
- if ($this->stack[$n]->nodeName === 'table' &&
- $this->stack[$n]->parentNode !== null
- ) {
- $table = $this->stack[$n];
- break;
- }
- }
-
- if (isset($table) && $this->foster_parent->isSameNode($table->parentNode)) {
- $this->foster_parent->insertBefore($node, $table);
- } else {
- $this->foster_parent->appendChild($node);
- }
-
- $this->foster_parent = null;
- }
- }
-
- private function elementInScope($el, $table = false)
- {
- if (is_array($el)) {
- foreach ($el as $element) {
- if ($this->elementInScope($element, $table)) {
- return true;
- }
- }
-
- return false;
- }
-
- $leng = count($this->stack);
-
- for ($n = 0; $n < $leng; $n++) {
- /* 1. Initialise node to be the current node (the bottommost node of
- the stack). */
- $node = $this->stack[$leng - 1 - $n];
-
- if ($node->tagName === $el) {
- /* 2. If node is the target node, terminate in a match state. */
- return true;
-
- } elseif ($node->tagName === 'table') {
- /* 3. Otherwise, if node is a table element, terminate in a failure
- state. */
- return false;
-
- } elseif ($table === true && in_array(
- $node->tagName,
- array(
- 'caption',
- 'td',
- 'th',
- 'button',
- 'marquee',
- 'object'
- )
- )
- ) {
- /* 4. Otherwise, if the algorithm is the "has an element in scope"
- variant (rather than the "has an element in table scope" variant),
- and node is one of the following, terminate in a failure state. */
- return false;
-
- } elseif ($node === $node->ownerDocument->documentElement) {
- /* 5. Otherwise, if node is an html element (root element), terminate
- in a failure state. (This can only happen if the node is the topmost
- node of the stack of open elements, and prevents the next step from
- being invoked if there are no more elements in the stack.) */
- return false;
- }
-
- /* Otherwise, set node to the previous entry in the stack of open
- elements and return to step 2. (This will never fail, since the loop
- will always terminate in the previous step if the top of the stack
- is reached.) */
- }
- }
-
- private function reconstructActiveFormattingElements()
- {
- /* 1. If there are no entries in the list of active formatting elements,
- then there is nothing to reconstruct; stop this algorithm. */
- $formatting_elements = count($this->a_formatting);
-
- if ($formatting_elements === 0) {
- return false;
- }
-
- /* 3. Let entry be the last (most recently added) element in the list
- of active formatting elements. */
- $entry = end($this->a_formatting);
-
- /* 2. If the last (most recently added) entry in the list of active
- formatting elements is a marker, or if it is an element that is in the
- stack of open elements, then there is nothing to reconstruct; stop this
- algorithm. */
- if ($entry === self::MARKER || in_array($entry, $this->stack, true)) {
- return false;
- }
-
- for ($a = $formatting_elements - 1; $a >= 0; true) {
- /* 4. If there are no entries before entry in the list of active
- formatting elements, then jump to step 8. */
- if ($a === 0) {
- $step_seven = false;
- break;
- }
-
- /* 5. Let entry be the entry one earlier than entry in the list of
- active formatting elements. */
- $a--;
- $entry = $this->a_formatting[$a];
-
- /* 6. If entry is neither a marker nor an element that is also in
- thetack of open elements, go to step 4. */
- if ($entry === self::MARKER || in_array($entry, $this->stack, true)) {
- break;
- }
- }
-
- while (true) {
- /* 7. Let entry be the element one later than entry in the list of
- active formatting elements. */
- if (isset($step_seven) && $step_seven === true) {
- $a++;
- $entry = $this->a_formatting[$a];
- }
-
- /* 8. Perform a shallow clone of the element entry to obtain clone. */
- $clone = $entry->cloneNode();
-
- /* 9. Append clone to the current node and push it onto the stack
- of open elements so that it is the new current node. */
- end($this->stack)->appendChild($clone);
- $this->stack[] = $clone;
-
- /* 10. Replace the entry for entry in the list with an entry for
- clone. */
- $this->a_formatting[$a] = $clone;
-
- /* 11. If the entry for clone in the list of active formatting
- elements is not the last entry in the list, return to step 7. */
- if (end($this->a_formatting) !== $clone) {
- $step_seven = true;
- } else {
- break;
- }
- }
- }
-
- private function clearTheActiveFormattingElementsUpToTheLastMarker()
- {
- /* When the steps below require the UA to clear the list of active
- formatting elements up to the last marker, the UA must perform the
- following steps: */
-
- while (true) {
- /* 1. Let entry be the last (most recently added) entry in the list
- of active formatting elements. */
- $entry = end($this->a_formatting);
-
- /* 2. Remove entry from the list of active formatting elements. */
- array_pop($this->a_formatting);
-
- /* 3. If entry was a marker, then stop the algorithm at this point.
- The list has been cleared up to the last marker. */
- if ($entry === self::MARKER) {
- break;
- }
- }
- }
-
- private function generateImpliedEndTags($exclude = array())
- {
- /* When the steps below require the UA to generate implied end tags,
- then, if the current node is a dd element, a dt element, an li element,
- a p element, a td element, a th element, or a tr element, the UA must
- act as if an end tag with the respective tag name had been seen and
- then generate implied end tags again. */
- $node = end($this->stack);
- $elements = array_diff(array('dd', 'dt', 'li', 'p', 'td', 'th', 'tr'), $exclude);
-
- while (in_array(end($this->stack)->nodeName, $elements)) {
- array_pop($this->stack);
- }
- }
-
- private function getElementCategory($node)
- {
- $name = $node->tagName;
- if (in_array($name, $this->special)) {
- return self::SPECIAL;
- } elseif (in_array($name, $this->scoping)) {
- return self::SCOPING;
- } elseif (in_array($name, $this->formatting)) {
- return self::FORMATTING;
- } else {
- return self::PHRASING;
- }
- }
-
- private function clearStackToTableContext($elements)
- {
- /* When the steps above require the UA to clear the stack back to a
- table context, it means that the UA must, while the current node is not
- a table element or an html element, pop elements from the stack of open
- elements. If this causes any elements to be popped from the stack, then
- this is a parse error. */
- while (true) {
- $node = end($this->stack)->nodeName;
-
- if (in_array($node, $elements)) {
- break;
- } else {
- array_pop($this->stack);
- }
- }
- }
-
- private function resetInsertionMode()
- {
- /* 1. Let last be false. */
- $last = false;
- $leng = count($this->stack);
-
- for ($n = $leng - 1; $n >= 0; $n--) {
- /* 2. Let node be the last node in the stack of open elements. */
- $node = $this->stack[$n];
-
- /* 3. If node is the first node in the stack of open elements, then
- set last to true. If the element whose innerHTML attribute is being
- set is neither a td element nor a th element, then set node to the
- element whose innerHTML attribute is being set. (innerHTML case) */
- if ($this->stack[0]->isSameNode($node)) {
- $last = true;
- }
-
- /* 4. If node is a select element, then switch the insertion mode to
- "in select" and abort these steps. (innerHTML case) */
- if ($node->nodeName === 'select') {
- $this->mode = self::IN_SELECT;
- break;
-
- /* 5. If node is a td or th element, then switch the insertion mode
- to "in cell" and abort these steps. */
- } elseif ($node->nodeName === 'td' || $node->nodeName === 'th') {
- $this->mode = self::IN_CELL;
- break;
-
- /* 6. If node is a tr element, then switch the insertion mode to
- "in row" and abort these steps. */
- } elseif ($node->nodeName === 'tr') {
- $this->mode = self::IN_ROW;
- break;
-
- /* 7. If node is a tbody, thead, or tfoot element, then switch the
- insertion mode to "in table body" and abort these steps. */
- } elseif (in_array($node->nodeName, array('tbody', 'thead', 'tfoot'))) {
- $this->mode = self::IN_TBODY;
- break;
-
- /* 8. If node is a caption element, then switch the insertion mode
- to "in caption" and abort these steps. */
- } elseif ($node->nodeName === 'caption') {
- $this->mode = self::IN_CAPTION;
- break;
-
- /* 9. If node is a colgroup element, then switch the insertion mode
- to "in column group" and abort these steps. (innerHTML case) */
- } elseif ($node->nodeName === 'colgroup') {
- $this->mode = self::IN_CGROUP;
- break;
-
- /* 10. If node is a table element, then switch the insertion mode
- to "in table" and abort these steps. */
- } elseif ($node->nodeName === 'table') {
- $this->mode = self::IN_TABLE;
- break;
-
- /* 11. If node is a head element, then switch the insertion mode
- to "in body" ("in body"! not "in head"!) and abort these steps.
- (innerHTML case) */
- } elseif ($node->nodeName === 'head') {
- $this->mode = self::IN_BODY;
- break;
-
- /* 12. If node is a body element, then switch the insertion mode to
- "in body" and abort these steps. */
- } elseif ($node->nodeName === 'body') {
- $this->mode = self::IN_BODY;
- break;
-
- /* 13. If node is a frameset element, then switch the insertion
- mode to "in frameset" and abort these steps. (innerHTML case) */
- } elseif ($node->nodeName === 'frameset') {
- $this->mode = self::IN_FRAME;
- break;
-
- /* 14. If node is an html element, then: if the head element
- pointer is null, switch the insertion mode to "before head",
- otherwise, switch the insertion mode to "after head". In either
- case, abort these steps. (innerHTML case) */
- } elseif ($node->nodeName === 'html') {
- $this->mode = ($this->head_pointer === null)
- ? self::BEFOR_HEAD
- : self::AFTER_HEAD;
-
- break;
-
- /* 15. If last is true, then set the insertion mode to "in body"
- and abort these steps. (innerHTML case) */
- } elseif ($last) {
- $this->mode = self::IN_BODY;
- break;
- }
- }
- }
-
- private function closeCell()
- {
- /* If the stack of open elements has a td or th element in table scope,
- then act as if an end tag token with that tag name had been seen. */
- foreach (array('td', 'th') as $cell) {
- if ($this->elementInScope($cell, true)) {
- $this->inCell(
- array(
- 'name' => $cell,
- 'type' => HTML5::ENDTAG
- )
- );
-
- break;
- }
- }
- }
-
- public function save()
- {
- return $this->dom;
- }
-}
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Node.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Node.php
deleted file mode 100644
index 3995fec9..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Node.php
+++ /dev/null
@@ -1,49 +0,0 @@
-data = $data;
- $this->line = $line;
- $this->col = $col;
- }
-
- public function toTokenPair() {
- return array(new HTMLPurifier_Token_Comment($this->data, $this->line, $this->col), null);
- }
-}
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Node/Element.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Node/Element.php
deleted file mode 100644
index 6cbf56da..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Node/Element.php
+++ /dev/null
@@ -1,59 +0,0 @@
- form or the form, i.e.
- * is it a pair of start/end tokens or an empty token.
- * @bool
- */
- public $empty = false;
-
- public $endCol = null, $endLine = null, $endArmor = array();
-
- public function __construct($name, $attr = array(), $line = null, $col = null, $armor = array()) {
- $this->name = $name;
- $this->attr = $attr;
- $this->line = $line;
- $this->col = $col;
- $this->armor = $armor;
- }
-
- public function toTokenPair() {
- // XXX inefficiency here, normalization is not necessary
- if ($this->empty) {
- return array(new HTMLPurifier_Token_Empty($this->name, $this->attr, $this->line, $this->col, $this->armor), null);
- } else {
- $start = new HTMLPurifier_Token_Start($this->name, $this->attr, $this->line, $this->col, $this->armor);
- $end = new HTMLPurifier_Token_End($this->name, array(), $this->endLine, $this->endCol, $this->endArmor);
- //$end->start = $start;
- return array($start, $end);
- }
- }
-}
-
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Node/Text.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Node/Text.php
deleted file mode 100644
index aec91664..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Node/Text.php
+++ /dev/null
@@ -1,54 +0,0 @@
-data = $data;
- $this->is_whitespace = $is_whitespace;
- $this->line = $line;
- $this->col = $col;
- }
-
- public function toTokenPair() {
- return array(new HTMLPurifier_Token_Text($this->data, $this->line, $this->col), null);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/PercentEncoder.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/PercentEncoder.php
deleted file mode 100644
index 18c8bbb0..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/PercentEncoder.php
+++ /dev/null
@@ -1,111 +0,0 @@
-preserve[$i] = true;
- }
- for ($i = 65; $i <= 90; $i++) { // upper-case
- $this->preserve[$i] = true;
- }
- for ($i = 97; $i <= 122; $i++) { // lower-case
- $this->preserve[$i] = true;
- }
- $this->preserve[45] = true; // Dash -
- $this->preserve[46] = true; // Period .
- $this->preserve[95] = true; // Underscore _
- $this->preserve[126]= true; // Tilde ~
-
- // extra letters not to escape
- if ($preserve !== false) {
- for ($i = 0, $c = strlen($preserve); $i < $c; $i++) {
- $this->preserve[ord($preserve[$i])] = true;
- }
- }
- }
-
- /**
- * Our replacement for urlencode, it encodes all non-reserved characters,
- * as well as any extra characters that were instructed to be preserved.
- * @note
- * Assumes that the string has already been normalized, making any
- * and all percent escape sequences valid. Percents will not be
- * re-escaped, regardless of their status in $preserve
- * @param string $string String to be encoded
- * @return string Encoded string.
- */
- public function encode($string)
- {
- $ret = '';
- for ($i = 0, $c = strlen($string); $i < $c; $i++) {
- if ($string[$i] !== '%' && !isset($this->preserve[$int = ord($string[$i])])) {
- $ret .= '%' . sprintf('%02X', $int);
- } else {
- $ret .= $string[$i];
- }
- }
- return $ret;
- }
-
- /**
- * Fix up percent-encoding by decoding unreserved characters and normalizing.
- * @warning This function is affected by $preserve, even though the
- * usual desired behavior is for this not to preserve those
- * characters. Be careful when reusing instances of PercentEncoder!
- * @param string $string String to normalize
- * @return string
- */
- public function normalize($string)
- {
- if ($string == '') {
- return '';
- }
- $parts = explode('%', $string);
- $ret = array_shift($parts);
- foreach ($parts as $part) {
- $length = strlen($part);
- if ($length < 2) {
- $ret .= '%25' . $part;
- continue;
- }
- $encoding = substr($part, 0, 2);
- $text = substr($part, 2);
- if (!ctype_xdigit($encoding)) {
- $ret .= '%25' . $part;
- continue;
- }
- $int = hexdec($encoding);
- if (isset($this->preserve[$int])) {
- $ret .= chr($int) . $text;
- continue;
- }
- $encoding = strtoupper($encoding);
- $ret .= '%' . $encoding . $text;
- }
- return $ret;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer.php
deleted file mode 100644
index 549e4cea..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer.php
+++ /dev/null
@@ -1,218 +0,0 @@
-getAll();
- $context = new HTMLPurifier_Context();
- $this->generator = new HTMLPurifier_Generator($config, $context);
- }
-
- /**
- * Main function that renders object or aspect of that object
- * @note Parameters vary depending on printer
- */
- // function render() {}
-
- /**
- * Returns a start tag
- * @param string $tag Tag name
- * @param array $attr Attribute array
- * @return string
- */
- protected function start($tag, $attr = array())
- {
- return $this->generator->generateFromToken(
- new HTMLPurifier_Token_Start($tag, $attr ? $attr : array())
- );
- }
-
- /**
- * Returns an end tag
- * @param string $tag Tag name
- * @return string
- */
- protected function end($tag)
- {
- return $this->generator->generateFromToken(
- new HTMLPurifier_Token_End($tag)
- );
- }
-
- /**
- * Prints a complete element with content inside
- * @param string $tag Tag name
- * @param string $contents Element contents
- * @param array $attr Tag attributes
- * @param bool $escape whether or not to escape contents
- * @return string
- */
- protected function element($tag, $contents, $attr = array(), $escape = true)
- {
- return $this->start($tag, $attr) .
- ($escape ? $this->escape($contents) : $contents) .
- $this->end($tag);
- }
-
- /**
- * @param string $tag
- * @param array $attr
- * @return string
- */
- protected function elementEmpty($tag, $attr = array())
- {
- return $this->generator->generateFromToken(
- new HTMLPurifier_Token_Empty($tag, $attr)
- );
- }
-
- /**
- * @param string $text
- * @return string
- */
- protected function text($text)
- {
- return $this->generator->generateFromToken(
- new HTMLPurifier_Token_Text($text)
- );
- }
-
- /**
- * Prints a simple key/value row in a table.
- * @param string $name Key
- * @param mixed $value Value
- * @return string
- */
- protected function row($name, $value)
- {
- if (is_bool($value)) {
- $value = $value ? 'On' : 'Off';
- }
- return
- $this->start('tr') . "\n" .
- $this->element('th', $name) . "\n" .
- $this->element('td', $value) . "\n" .
- $this->end('tr');
- }
-
- /**
- * Escapes a string for HTML output.
- * @param string $string String to escape
- * @return string
- */
- protected function escape($string)
- {
- $string = HTMLPurifier_Encoder::cleanUTF8($string);
- $string = htmlspecialchars($string, ENT_COMPAT, 'UTF-8');
- return $string;
- }
-
- /**
- * Takes a list of strings and turns them into a single list
- * @param string[] $array List of strings
- * @param bool $polite Bool whether or not to add an end before the last
- * @return string
- */
- protected function listify($array, $polite = false)
- {
- if (empty($array)) {
- return 'None';
- }
- $ret = '';
- $i = count($array);
- foreach ($array as $value) {
- $i--;
- $ret .= $value;
- if ($i > 0 && !($polite && $i == 1)) {
- $ret .= ', ';
- }
- if ($polite && $i == 1) {
- $ret .= 'and ';
- }
- }
- return $ret;
- }
-
- /**
- * Retrieves the class of an object without prefixes, as well as metadata
- * @param object $obj Object to determine class of
- * @param string $sec_prefix Further prefix to remove
- * @return string
- */
- protected function getClass($obj, $sec_prefix = '')
- {
- static $five = null;
- if ($five === null) {
- $five = version_compare(PHP_VERSION, '5', '>=');
- }
- $prefix = 'HTMLPurifier_' . $sec_prefix;
- if (!$five) {
- $prefix = strtolower($prefix);
- }
- $class = str_replace($prefix, '', get_class($obj));
- $lclass = strtolower($class);
- $class .= '(';
- switch ($lclass) {
- case 'enum':
- $values = array();
- foreach ($obj->valid_values as $value => $bool) {
- $values[] = $value;
- }
- $class .= implode(', ', $values);
- break;
- case 'css_composite':
- $values = array();
- foreach ($obj->defs as $def) {
- $values[] = $this->getClass($def, $sec_prefix);
- }
- $class .= implode(', ', $values);
- break;
- case 'css_multiple':
- $class .= $this->getClass($obj->single, $sec_prefix) . ', ';
- $class .= $obj->max;
- break;
- case 'css_denyelementdecorator':
- $class .= $this->getClass($obj->def, $sec_prefix) . ', ';
- $class .= $obj->element;
- break;
- case 'css_importantdecorator':
- $class .= $this->getClass($obj->def, $sec_prefix);
- if ($obj->allow) {
- $class .= ', !important';
- }
- break;
- }
- $class .= ')';
- return $class;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/CSSDefinition.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/CSSDefinition.php
deleted file mode 100644
index 29505fe1..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/CSSDefinition.php
+++ /dev/null
@@ -1,44 +0,0 @@
-def = $config->getCSSDefinition();
- $ret = '';
-
- $ret .= $this->start('div', array('class' => 'HTMLPurifier_Printer'));
- $ret .= $this->start('table');
-
- $ret .= $this->element('caption', 'Properties ($info)');
-
- $ret .= $this->start('thead');
- $ret .= $this->start('tr');
- $ret .= $this->element('th', 'Property', array('class' => 'heavy'));
- $ret .= $this->element('th', 'Definition', array('class' => 'heavy', 'style' => 'width:auto;'));
- $ret .= $this->end('tr');
- $ret .= $this->end('thead');
-
- ksort($this->def->info);
- foreach ($this->def->info as $property => $obj) {
- $name = $this->getClass($obj, 'AttrDef_');
- $ret .= $this->row($property, $name);
- }
-
- $ret .= $this->end('table');
- $ret .= $this->end('div');
-
- return $ret;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.css b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.css
deleted file mode 100644
index 3ff1a88a..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.css
+++ /dev/null
@@ -1,10 +0,0 @@
-
-.hp-config {}
-
-.hp-config tbody th {text-align:right; padding-right:0.5em;}
-.hp-config thead, .hp-config .namespace {background:#3C578C; color:#FFF;}
-.hp-config .namespace th {text-align:center;}
-.hp-config .verbose {display:none;}
-.hp-config .controls {text-align:center;}
-
-/* vim: et sw=4 sts=4 */
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.js b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.js
deleted file mode 100644
index cba00c9b..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.js
+++ /dev/null
@@ -1,5 +0,0 @@
-function toggleWriteability(id_of_patient, checked) {
- document.getElementById(id_of_patient).disabled = checked;
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.php
deleted file mode 100644
index 33ae1139..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.php
+++ /dev/null
@@ -1,451 +0,0 @@
-docURL = $doc_url;
- $this->name = $name;
- $this->compress = $compress;
- // initialize sub-printers
- $this->fields[0] = new HTMLPurifier_Printer_ConfigForm_default();
- $this->fields[HTMLPurifier_VarParser::C_BOOL] = new HTMLPurifier_Printer_ConfigForm_bool();
- }
-
- /**
- * Sets default column and row size for textareas in sub-printers
- * @param $cols Integer columns of textarea, null to use default
- * @param $rows Integer rows of textarea, null to use default
- */
- public function setTextareaDimensions($cols = null, $rows = null)
- {
- if ($cols) {
- $this->fields['default']->cols = $cols;
- }
- if ($rows) {
- $this->fields['default']->rows = $rows;
- }
- }
-
- /**
- * Retrieves styling, in case it is not accessible by webserver
- */
- public static function getCSS()
- {
- return file_get_contents(HTMLPURIFIER_PREFIX . '/HTMLPurifier/Printer/ConfigForm.css');
- }
-
- /**
- * Retrieves JavaScript, in case it is not accessible by webserver
- */
- public static function getJavaScript()
- {
- return file_get_contents(HTMLPURIFIER_PREFIX . '/HTMLPurifier/Printer/ConfigForm.js');
- }
-
- /**
- * Returns HTML output for a configuration form
- * @param HTMLPurifier_Config|array $config Configuration object of current form state, or an array
- * where [0] has an HTML namespace and [1] is being rendered.
- * @param array|bool $allowed Optional namespace(s) and directives to restrict form to.
- * @param bool $render_controls
- * @return string
- */
- public function render($config, $allowed = true, $render_controls = true)
- {
- if (is_array($config) && isset($config[0])) {
- $gen_config = $config[0];
- $config = $config[1];
- } else {
- $gen_config = $config;
- }
-
- $this->config = $config;
- $this->genConfig = $gen_config;
- $this->prepareGenerator($gen_config);
-
- $allowed = HTMLPurifier_Config::getAllowedDirectivesForForm($allowed, $config->def);
- $all = array();
- foreach ($allowed as $key) {
- list($ns, $directive) = $key;
- $all[$ns][$directive] = $config->get($ns . '.' . $directive);
- }
-
- $ret = '';
- $ret .= $this->start('table', array('class' => 'hp-config'));
- $ret .= $this->start('thead');
- $ret .= $this->start('tr');
- $ret .= $this->element('th', 'Directive', array('class' => 'hp-directive'));
- $ret .= $this->element('th', 'Value', array('class' => 'hp-value'));
- $ret .= $this->end('tr');
- $ret .= $this->end('thead');
- foreach ($all as $ns => $directives) {
- $ret .= $this->renderNamespace($ns, $directives);
- }
- if ($render_controls) {
- $ret .= $this->start('tbody');
- $ret .= $this->start('tr');
- $ret .= $this->start('td', array('colspan' => 2, 'class' => 'controls'));
- $ret .= $this->elementEmpty('input', array('type' => 'submit', 'value' => 'Submit'));
- $ret .= '[Reset ]';
- $ret .= $this->end('td');
- $ret .= $this->end('tr');
- $ret .= $this->end('tbody');
- }
- $ret .= $this->end('table');
- return $ret;
- }
-
- /**
- * Renders a single namespace
- * @param $ns String namespace name
- * @param array $directives array of directives to values
- * @return string
- */
- protected function renderNamespace($ns, $directives)
- {
- $ret = '';
- $ret .= $this->start('tbody', array('class' => 'namespace'));
- $ret .= $this->start('tr');
- $ret .= $this->element('th', $ns, array('colspan' => 2));
- $ret .= $this->end('tr');
- $ret .= $this->end('tbody');
- $ret .= $this->start('tbody');
- foreach ($directives as $directive => $value) {
- $ret .= $this->start('tr');
- $ret .= $this->start('th');
- if ($this->docURL) {
- $url = str_replace('%s', urlencode("$ns.$directive"), $this->docURL);
- $ret .= $this->start('a', array('href' => $url));
- }
- $attr = array('for' => "{$this->name}:$ns.$directive");
-
- // crop directive name if it's too long
- if (!$this->compress || (strlen($directive) < $this->compress)) {
- $directive_disp = $directive;
- } else {
- $directive_disp = substr($directive, 0, $this->compress - 2) . '...';
- $attr['title'] = $directive;
- }
-
- $ret .= $this->element(
- 'label',
- $directive_disp,
- // component printers must create an element with this id
- $attr
- );
- if ($this->docURL) {
- $ret .= $this->end('a');
- }
- $ret .= $this->end('th');
-
- $ret .= $this->start('td');
- $def = $this->config->def->info["$ns.$directive"];
- if (is_int($def)) {
- $allow_null = $def < 0;
- $type = abs($def);
- } else {
- $type = $def->type;
- $allow_null = isset($def->allow_null);
- }
- if (!isset($this->fields[$type])) {
- $type = 0;
- } // default
- $type_obj = $this->fields[$type];
- if ($allow_null) {
- $type_obj = new HTMLPurifier_Printer_ConfigForm_NullDecorator($type_obj);
- }
- $ret .= $type_obj->render($ns, $directive, $value, $this->name, array($this->genConfig, $this->config));
- $ret .= $this->end('td');
- $ret .= $this->end('tr');
- }
- $ret .= $this->end('tbody');
- return $ret;
- }
-
-}
-
-/**
- * Printer decorator for directives that accept null
- */
-class HTMLPurifier_Printer_ConfigForm_NullDecorator extends HTMLPurifier_Printer
-{
- /**
- * Printer being decorated
- * @type HTMLPurifier_Printer
- */
- protected $obj;
-
- /**
- * @param HTMLPurifier_Printer $obj Printer to decorate
- */
- public function __construct($obj)
- {
- parent::__construct();
- $this->obj = $obj;
- }
-
- /**
- * @param string $ns
- * @param string $directive
- * @param string $value
- * @param string $name
- * @param HTMLPurifier_Config|array $config
- * @return string
- */
- public function render($ns, $directive, $value, $name, $config)
- {
- if (is_array($config) && isset($config[0])) {
- $gen_config = $config[0];
- $config = $config[1];
- } else {
- $gen_config = $config;
- }
- $this->prepareGenerator($gen_config);
-
- $ret = '';
- $ret .= $this->start('label', array('for' => "$name:Null_$ns.$directive"));
- $ret .= $this->element('span', "$ns.$directive:", array('class' => 'verbose'));
- $ret .= $this->text(' Null/Disabled');
- $ret .= $this->end('label');
- $attr = array(
- 'type' => 'checkbox',
- 'value' => '1',
- 'class' => 'null-toggle',
- 'name' => "$name" . "[Null_$ns.$directive]",
- 'id' => "$name:Null_$ns.$directive",
- 'onclick' => "toggleWriteability('$name:$ns.$directive',checked)" // INLINE JAVASCRIPT!!!!
- );
- if ($this->obj instanceof HTMLPurifier_Printer_ConfigForm_bool) {
- // modify inline javascript slightly
- $attr['onclick'] =
- "toggleWriteability('$name:Yes_$ns.$directive',checked);" .
- "toggleWriteability('$name:No_$ns.$directive',checked)";
- }
- if ($value === null) {
- $attr['checked'] = 'checked';
- }
- $ret .= $this->elementEmpty('input', $attr);
- $ret .= $this->text(' or ');
- $ret .= $this->elementEmpty('br');
- $ret .= $this->obj->render($ns, $directive, $value, $name, array($gen_config, $config));
- return $ret;
- }
-}
-
-/**
- * Swiss-army knife configuration form field printer
- */
-class HTMLPurifier_Printer_ConfigForm_default extends HTMLPurifier_Printer
-{
- /**
- * @type int
- */
- public $cols = 18;
-
- /**
- * @type int
- */
- public $rows = 5;
-
- /**
- * @param string $ns
- * @param string $directive
- * @param string $value
- * @param string $name
- * @param HTMLPurifier_Config|array $config
- * @return string
- */
- public function render($ns, $directive, $value, $name, $config)
- {
- if (is_array($config) && isset($config[0])) {
- $gen_config = $config[0];
- $config = $config[1];
- } else {
- $gen_config = $config;
- }
- $this->prepareGenerator($gen_config);
- // this should probably be split up a little
- $ret = '';
- $def = $config->def->info["$ns.$directive"];
- if (is_int($def)) {
- $type = abs($def);
- } else {
- $type = $def->type;
- }
- if (is_array($value)) {
- switch ($type) {
- case HTMLPurifier_VarParser::LOOKUP:
- $array = $value;
- $value = array();
- foreach ($array as $val => $b) {
- $value[] = $val;
- }
- //TODO does this need a break?
- case HTMLPurifier_VarParser::ALIST:
- $value = implode(PHP_EOL, $value);
- break;
- case HTMLPurifier_VarParser::HASH:
- $nvalue = '';
- foreach ($value as $i => $v) {
- if (is_array($v)) {
- // HACK
- $v = implode(";", $v);
- }
- $nvalue .= "$i:$v" . PHP_EOL;
- }
- $value = $nvalue;
- break;
- default:
- $value = '';
- }
- }
- if ($type === HTMLPurifier_VarParser::C_MIXED) {
- return 'Not supported';
- $value = serialize($value);
- }
- $attr = array(
- 'name' => "$name" . "[$ns.$directive]",
- 'id' => "$name:$ns.$directive"
- );
- if ($value === null) {
- $attr['disabled'] = 'disabled';
- }
- if (isset($def->allowed)) {
- $ret .= $this->start('select', $attr);
- foreach ($def->allowed as $val => $b) {
- $attr = array();
- if ($value == $val) {
- $attr['selected'] = 'selected';
- }
- $ret .= $this->element('option', $val, $attr);
- }
- $ret .= $this->end('select');
- } elseif ($type === HTMLPurifier_VarParser::TEXT ||
- $type === HTMLPurifier_VarParser::ITEXT ||
- $type === HTMLPurifier_VarParser::ALIST ||
- $type === HTMLPurifier_VarParser::HASH ||
- $type === HTMLPurifier_VarParser::LOOKUP) {
- $attr['cols'] = $this->cols;
- $attr['rows'] = $this->rows;
- $ret .= $this->start('textarea', $attr);
- $ret .= $this->text($value);
- $ret .= $this->end('textarea');
- } else {
- $attr['value'] = $value;
- $attr['type'] = 'text';
- $ret .= $this->elementEmpty('input', $attr);
- }
- return $ret;
- }
-}
-
-/**
- * Bool form field printer
- */
-class HTMLPurifier_Printer_ConfigForm_bool extends HTMLPurifier_Printer
-{
- /**
- * @param string $ns
- * @param string $directive
- * @param string $value
- * @param string $name
- * @param HTMLPurifier_Config|array $config
- * @return string
- */
- public function render($ns, $directive, $value, $name, $config)
- {
- if (is_array($config) && isset($config[0])) {
- $gen_config = $config[0];
- $config = $config[1];
- } else {
- $gen_config = $config;
- }
- $this->prepareGenerator($gen_config);
- $ret = '';
- $ret .= $this->start('div', array('id' => "$name:$ns.$directive"));
-
- $ret .= $this->start('label', array('for' => "$name:Yes_$ns.$directive"));
- $ret .= $this->element('span', "$ns.$directive:", array('class' => 'verbose'));
- $ret .= $this->text(' Yes');
- $ret .= $this->end('label');
-
- $attr = array(
- 'type' => 'radio',
- 'name' => "$name" . "[$ns.$directive]",
- 'id' => "$name:Yes_$ns.$directive",
- 'value' => '1'
- );
- if ($value === true) {
- $attr['checked'] = 'checked';
- }
- if ($value === null) {
- $attr['disabled'] = 'disabled';
- }
- $ret .= $this->elementEmpty('input', $attr);
-
- $ret .= $this->start('label', array('for' => "$name:No_$ns.$directive"));
- $ret .= $this->element('span', "$ns.$directive:", array('class' => 'verbose'));
- $ret .= $this->text(' No');
- $ret .= $this->end('label');
-
- $attr = array(
- 'type' => 'radio',
- 'name' => "$name" . "[$ns.$directive]",
- 'id' => "$name:No_$ns.$directive",
- 'value' => '0'
- );
- if ($value === false) {
- $attr['checked'] = 'checked';
- }
- if ($value === null) {
- $attr['disabled'] = 'disabled';
- }
- $ret .= $this->elementEmpty('input', $attr);
-
- $ret .= $this->end('div');
-
- return $ret;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/HTMLDefinition.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/HTMLDefinition.php
deleted file mode 100644
index ae863917..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/HTMLDefinition.php
+++ /dev/null
@@ -1,324 +0,0 @@
-config =& $config;
-
- $this->def = $config->getHTMLDefinition();
-
- $ret .= $this->start('div', array('class' => 'HTMLPurifier_Printer'));
-
- $ret .= $this->renderDoctype();
- $ret .= $this->renderEnvironment();
- $ret .= $this->renderContentSets();
- $ret .= $this->renderInfo();
-
- $ret .= $this->end('div');
-
- return $ret;
- }
-
- /**
- * Renders the Doctype table
- * @return string
- */
- protected function renderDoctype()
- {
- $doctype = $this->def->doctype;
- $ret = '';
- $ret .= $this->start('table');
- $ret .= $this->element('caption', 'Doctype');
- $ret .= $this->row('Name', $doctype->name);
- $ret .= $this->row('XML', $doctype->xml ? 'Yes' : 'No');
- $ret .= $this->row('Default Modules', implode(', ', $doctype->modules));
- $ret .= $this->row('Default Tidy Modules', implode(', ', $doctype->tidyModules));
- $ret .= $this->end('table');
- return $ret;
- }
-
-
- /**
- * Renders environment table, which is miscellaneous info
- * @return string
- */
- protected function renderEnvironment()
- {
- $def = $this->def;
-
- $ret = '';
-
- $ret .= $this->start('table');
- $ret .= $this->element('caption', 'Environment');
-
- $ret .= $this->row('Parent of fragment', $def->info_parent);
- $ret .= $this->renderChildren($def->info_parent_def->child);
- $ret .= $this->row('Block wrap name', $def->info_block_wrapper);
-
- $ret .= $this->start('tr');
- $ret .= $this->element('th', 'Global attributes');
- $ret .= $this->element('td', $this->listifyAttr($def->info_global_attr), null, 0);
- $ret .= $this->end('tr');
-
- $ret .= $this->start('tr');
- $ret .= $this->element('th', 'Tag transforms');
- $list = array();
- foreach ($def->info_tag_transform as $old => $new) {
- $new = $this->getClass($new, 'TagTransform_');
- $list[] = "<$old> with $new";
- }
- $ret .= $this->element('td', $this->listify($list));
- $ret .= $this->end('tr');
-
- $ret .= $this->start('tr');
- $ret .= $this->element('th', 'Pre-AttrTransform');
- $ret .= $this->element('td', $this->listifyObjectList($def->info_attr_transform_pre));
- $ret .= $this->end('tr');
-
- $ret .= $this->start('tr');
- $ret .= $this->element('th', 'Post-AttrTransform');
- $ret .= $this->element('td', $this->listifyObjectList($def->info_attr_transform_post));
- $ret .= $this->end('tr');
-
- $ret .= $this->end('table');
- return $ret;
- }
-
- /**
- * Renders the Content Sets table
- * @return string
- */
- protected function renderContentSets()
- {
- $ret = '';
- $ret .= $this->start('table');
- $ret .= $this->element('caption', 'Content Sets');
- foreach ($this->def->info_content_sets as $name => $lookup) {
- $ret .= $this->heavyHeader($name);
- $ret .= $this->start('tr');
- $ret .= $this->element('td', $this->listifyTagLookup($lookup));
- $ret .= $this->end('tr');
- }
- $ret .= $this->end('table');
- return $ret;
- }
-
- /**
- * Renders the Elements ($info) table
- * @return string
- */
- protected function renderInfo()
- {
- $ret = '';
- $ret .= $this->start('table');
- $ret .= $this->element('caption', 'Elements ($info)');
- ksort($this->def->info);
- $ret .= $this->heavyHeader('Allowed tags', 2);
- $ret .= $this->start('tr');
- $ret .= $this->element('td', $this->listifyTagLookup($this->def->info), array('colspan' => 2));
- $ret .= $this->end('tr');
- foreach ($this->def->info as $name => $def) {
- $ret .= $this->start('tr');
- $ret .= $this->element('th', "<$name>", array('class' => 'heavy', 'colspan' => 2));
- $ret .= $this->end('tr');
- $ret .= $this->start('tr');
- $ret .= $this->element('th', 'Inline content');
- $ret .= $this->element('td', $def->descendants_are_inline ? 'Yes' : 'No');
- $ret .= $this->end('tr');
- if (!empty($def->excludes)) {
- $ret .= $this->start('tr');
- $ret .= $this->element('th', 'Excludes');
- $ret .= $this->element('td', $this->listifyTagLookup($def->excludes));
- $ret .= $this->end('tr');
- }
- if (!empty($def->attr_transform_pre)) {
- $ret .= $this->start('tr');
- $ret .= $this->element('th', 'Pre-AttrTransform');
- $ret .= $this->element('td', $this->listifyObjectList($def->attr_transform_pre));
- $ret .= $this->end('tr');
- }
- if (!empty($def->attr_transform_post)) {
- $ret .= $this->start('tr');
- $ret .= $this->element('th', 'Post-AttrTransform');
- $ret .= $this->element('td', $this->listifyObjectList($def->attr_transform_post));
- $ret .= $this->end('tr');
- }
- if (!empty($def->auto_close)) {
- $ret .= $this->start('tr');
- $ret .= $this->element('th', 'Auto closed by');
- $ret .= $this->element('td', $this->listifyTagLookup($def->auto_close));
- $ret .= $this->end('tr');
- }
- $ret .= $this->start('tr');
- $ret .= $this->element('th', 'Allowed attributes');
- $ret .= $this->element('td', $this->listifyAttr($def->attr), array(), 0);
- $ret .= $this->end('tr');
-
- if (!empty($def->required_attr)) {
- $ret .= $this->row('Required attributes', $this->listify($def->required_attr));
- }
-
- $ret .= $this->renderChildren($def->child);
- }
- $ret .= $this->end('table');
- return $ret;
- }
-
- /**
- * Renders a row describing the allowed children of an element
- * @param HTMLPurifier_ChildDef $def HTMLPurifier_ChildDef of pertinent element
- * @return string
- */
- protected function renderChildren($def)
- {
- $context = new HTMLPurifier_Context();
- $ret = '';
- $ret .= $this->start('tr');
- $elements = array();
- $attr = array();
- if (isset($def->elements)) {
- if ($def->type == 'strictblockquote') {
- $def->validateChildren(array(), $this->config, $context);
- }
- $elements = $def->elements;
- }
- if ($def->type == 'chameleon') {
- $attr['rowspan'] = 2;
- } elseif ($def->type == 'empty') {
- $elements = array();
- } elseif ($def->type == 'table') {
- $elements = array_flip(
- array(
- 'col',
- 'caption',
- 'colgroup',
- 'thead',
- 'tfoot',
- 'tbody',
- 'tr'
- )
- );
- }
- $ret .= $this->element('th', 'Allowed children', $attr);
-
- if ($def->type == 'chameleon') {
-
- $ret .= $this->element(
- 'td',
- 'Block : ' .
- $this->escape($this->listifyTagLookup($def->block->elements)),
- null,
- 0
- );
- $ret .= $this->end('tr');
- $ret .= $this->start('tr');
- $ret .= $this->element(
- 'td',
- 'Inline : ' .
- $this->escape($this->listifyTagLookup($def->inline->elements)),
- null,
- 0
- );
-
- } elseif ($def->type == 'custom') {
-
- $ret .= $this->element(
- 'td',
- '' . ucfirst($def->type) . ' : ' .
- $def->dtd_regex
- );
-
- } else {
- $ret .= $this->element(
- 'td',
- '' . ucfirst($def->type) . ' : ' .
- $this->escape($this->listifyTagLookup($elements)),
- null,
- 0
- );
- }
- $ret .= $this->end('tr');
- return $ret;
- }
-
- /**
- * Listifies a tag lookup table.
- * @param array $array Tag lookup array in form of array('tagname' => true)
- * @return string
- */
- protected function listifyTagLookup($array)
- {
- ksort($array);
- $list = array();
- foreach ($array as $name => $discard) {
- if ($name !== '#PCDATA' && !isset($this->def->info[$name])) {
- continue;
- }
- $list[] = $name;
- }
- return $this->listify($list);
- }
-
- /**
- * Listifies a list of objects by retrieving class names and internal state
- * @param array $array List of objects
- * @return string
- * @todo Also add information about internal state
- */
- protected function listifyObjectList($array)
- {
- ksort($array);
- $list = array();
- foreach ($array as $obj) {
- $list[] = $this->getClass($obj, 'AttrTransform_');
- }
- return $this->listify($list);
- }
-
- /**
- * Listifies a hash of attributes to AttrDef classes
- * @param array $array Array hash in form of array('attrname' => HTMLPurifier_AttrDef)
- * @return string
- */
- protected function listifyAttr($array)
- {
- ksort($array);
- $list = array();
- foreach ($array as $name => $obj) {
- if ($obj === false) {
- continue;
- }
- $list[] = "$name = " . $this->getClass($obj, 'AttrDef_') . ' ';
- }
- return $this->listify($list);
- }
-
- /**
- * Creates a heavy header row
- * @param string $text
- * @param int $num
- * @return string
- */
- protected function heavyHeader($text, $num = 1)
- {
- $ret = '';
- $ret .= $this->start('tr');
- $ret .= $this->element('th', $text, array('colspan' => $num, 'class' => 'heavy'));
- $ret .= $this->end('tr');
- return $ret;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/PropertyList.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/PropertyList.php
deleted file mode 100644
index 189348fd..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/PropertyList.php
+++ /dev/null
@@ -1,122 +0,0 @@
-parent = $parent;
- }
-
- /**
- * Recursively retrieves the value for a key
- * @param string $name
- * @throws HTMLPurifier_Exception
- */
- public function get($name)
- {
- if ($this->has($name)) {
- return $this->data[$name];
- }
- // possible performance bottleneck, convert to iterative if necessary
- if ($this->parent) {
- return $this->parent->get($name);
- }
- throw new HTMLPurifier_Exception("Key '$name' not found");
- }
-
- /**
- * Sets the value of a key, for this plist
- * @param string $name
- * @param mixed $value
- */
- public function set($name, $value)
- {
- $this->data[$name] = $value;
- }
-
- /**
- * Returns true if a given key exists
- * @param string $name
- * @return bool
- */
- public function has($name)
- {
- return array_key_exists($name, $this->data);
- }
-
- /**
- * Resets a value to the value of it's parent, usually the default. If
- * no value is specified, the entire plist is reset.
- * @param string $name
- */
- public function reset($name = null)
- {
- if ($name == null) {
- $this->data = array();
- } else {
- unset($this->data[$name]);
- }
- }
-
- /**
- * Squashes this property list and all of its property lists into a single
- * array, and returns the array. This value is cached by default.
- * @param bool $force If true, ignores the cache and regenerates the array.
- * @return array
- */
- public function squash($force = false)
- {
- if ($this->cache !== null && !$force) {
- return $this->cache;
- }
- if ($this->parent) {
- return $this->cache = array_merge($this->parent->squash($force), $this->data);
- } else {
- return $this->cache = $this->data;
- }
- }
-
- /**
- * Returns the parent plist.
- * @return HTMLPurifier_PropertyList
- */
- public function getParent()
- {
- return $this->parent;
- }
-
- /**
- * Sets the parent plist.
- * @param HTMLPurifier_PropertyList $plist Parent plist
- */
- public function setParent($plist)
- {
- $this->parent = $plist;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/PropertyListIterator.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/PropertyListIterator.php
deleted file mode 100644
index 15b330ea..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/PropertyListIterator.php
+++ /dev/null
@@ -1,42 +0,0 @@
-l = strlen($filter);
- $this->filter = $filter;
- }
-
- /**
- * @return bool
- */
- public function accept()
- {
- $key = $this->getInnerIterator()->key();
- if (strncmp($key, $this->filter, $this->l) !== 0) {
- return false;
- }
- return true;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Queue.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Queue.php
deleted file mode 100644
index f58db904..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Queue.php
+++ /dev/null
@@ -1,56 +0,0 @@
-input = $input;
- $this->output = array();
- }
-
- /**
- * Shifts an element off the front of the queue.
- */
- public function shift() {
- if (empty($this->output)) {
- $this->output = array_reverse($this->input);
- $this->input = array();
- }
- if (empty($this->output)) {
- return NULL;
- }
- return array_pop($this->output);
- }
-
- /**
- * Pushes an element onto the front of the queue.
- */
- public function push($x) {
- array_push($this->input, $x);
- }
-
- /**
- * Checks if it's empty.
- */
- public function isEmpty() {
- return empty($this->input) && empty($this->output);
- }
-}
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Strategy.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Strategy.php
deleted file mode 100644
index e1ff3b72..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Strategy.php
+++ /dev/null
@@ -1,26 +0,0 @@
-strategies as $strategy) {
- $tokens = $strategy->execute($tokens, $config, $context);
- }
- return $tokens;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/Core.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/Core.php
deleted file mode 100644
index 4414c17d..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/Core.php
+++ /dev/null
@@ -1,17 +0,0 @@
-strategies[] = new HTMLPurifier_Strategy_RemoveForeignElements();
- $this->strategies[] = new HTMLPurifier_Strategy_MakeWellFormed();
- $this->strategies[] = new HTMLPurifier_Strategy_FixNesting();
- $this->strategies[] = new HTMLPurifier_Strategy_ValidateAttributes();
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/FixNesting.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/FixNesting.php
deleted file mode 100644
index 6fa673db..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/FixNesting.php
+++ /dev/null
@@ -1,181 +0,0 @@
-getHTMLDefinition();
-
- $excludes_enabled = !$config->get('Core.DisableExcludes');
-
- // setup the context variable 'IsInline', for chameleon processing
- // is 'false' when we are not inline, 'true' when it must always
- // be inline, and an integer when it is inline for a certain
- // branch of the document tree
- $is_inline = $definition->info_parent_def->descendants_are_inline;
- $context->register('IsInline', $is_inline);
-
- // setup error collector
- $e =& $context->get('ErrorCollector', true);
-
- //####################################################################//
- // Loop initialization
-
- // stack that contains all elements that are excluded
- // it is organized by parent elements, similar to $stack,
- // but it is only populated when an element with exclusions is
- // processed, i.e. there won't be empty exclusions.
- $exclude_stack = array($definition->info_parent_def->excludes);
-
- // variable that contains the start token while we are processing
- // nodes. This enables error reporting to do its job
- $node = $top_node;
- // dummy token
- list($token, $d) = $node->toTokenPair();
- $context->register('CurrentNode', $node);
- $context->register('CurrentToken', $token);
-
- //####################################################################//
- // Loop
-
- // We need to implement a post-order traversal iteratively, to
- // avoid running into stack space limits. This is pretty tricky
- // to reason about, so we just manually stack-ify the recursive
- // variant:
- //
- // function f($node) {
- // foreach ($node->children as $child) {
- // f($child);
- // }
- // validate($node);
- // }
- //
- // Thus, we will represent a stack frame as array($node,
- // $is_inline, stack of children)
- // e.g. array_reverse($node->children) - already processed
- // children.
-
- $parent_def = $definition->info_parent_def;
- $stack = array(
- array($top_node,
- $parent_def->descendants_are_inline,
- $parent_def->excludes, // exclusions
- 0)
- );
-
- while (!empty($stack)) {
- list($node, $is_inline, $excludes, $ix) = array_pop($stack);
- // recursive call
- $go = false;
- $def = empty($stack) ? $definition->info_parent_def : $definition->info[$node->name];
- while (isset($node->children[$ix])) {
- $child = $node->children[$ix++];
- if ($child instanceof HTMLPurifier_Node_Element) {
- $go = true;
- $stack[] = array($node, $is_inline, $excludes, $ix);
- $stack[] = array($child,
- // ToDo: I don't think it matters if it's def or
- // child_def, but double check this...
- $is_inline || $def->descendants_are_inline,
- empty($def->excludes) ? $excludes
- : array_merge($excludes, $def->excludes),
- 0);
- break;
- }
- };
- if ($go) continue;
- list($token, $d) = $node->toTokenPair();
- // base case
- if ($excludes_enabled && isset($excludes[$node->name])) {
- $node->dead = true;
- if ($e) $e->send(E_ERROR, 'Strategy_FixNesting: Node excluded');
- } else {
- // XXX I suppose it would be slightly more efficient to
- // avoid the allocation here and have children
- // strategies handle it
- $children = array();
- foreach ($node->children as $child) {
- if (!$child->dead) $children[] = $child;
- }
- $result = $def->child->validateChildren($children, $config, $context);
- if ($result === true) {
- // nop
- $node->children = $children;
- } elseif ($result === false) {
- $node->dead = true;
- if ($e) $e->send(E_ERROR, 'Strategy_FixNesting: Node removed');
- } else {
- $node->children = $result;
- if ($e) {
- // XXX This will miss mutations of internal nodes. Perhaps defer to the child validators
- if (empty($result) && !empty($children)) {
- $e->send(E_ERROR, 'Strategy_FixNesting: Node contents removed');
- } else if ($result != $children) {
- $e->send(E_WARNING, 'Strategy_FixNesting: Node reorganized');
- }
- }
- }
- }
- }
-
- //####################################################################//
- // Post-processing
-
- // remove context variables
- $context->destroy('IsInline');
- $context->destroy('CurrentNode');
- $context->destroy('CurrentToken');
-
- //####################################################################//
- // Return
-
- return HTMLPurifier_Arborize::flatten($node, $config, $context);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/MakeWellFormed.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/MakeWellFormed.php
deleted file mode 100644
index a6eb09e4..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/MakeWellFormed.php
+++ /dev/null
@@ -1,659 +0,0 @@
-getHTMLDefinition();
-
- // local variables
- $generator = new HTMLPurifier_Generator($config, $context);
- $escape_invalid_tags = $config->get('Core.EscapeInvalidTags');
- // used for autoclose early abortion
- $global_parent_allowed_elements = $definition->info_parent_def->child->getAllowedElements($config);
- $e = $context->get('ErrorCollector', true);
- $i = false; // injector index
- list($zipper, $token) = HTMLPurifier_Zipper::fromArray($tokens);
- if ($token === NULL) {
- return array();
- }
- $reprocess = false; // whether or not to reprocess the same token
- $stack = array();
-
- // member variables
- $this->stack =& $stack;
- $this->tokens =& $tokens;
- $this->token =& $token;
- $this->zipper =& $zipper;
- $this->config = $config;
- $this->context = $context;
-
- // context variables
- $context->register('CurrentNesting', $stack);
- $context->register('InputZipper', $zipper);
- $context->register('CurrentToken', $token);
-
- // -- begin INJECTOR --
-
- $this->injectors = array();
-
- $injectors = $config->getBatch('AutoFormat');
- $def_injectors = $definition->info_injector;
- $custom_injectors = $injectors['Custom'];
- unset($injectors['Custom']); // special case
- foreach ($injectors as $injector => $b) {
- // XXX: Fix with a legitimate lookup table of enabled filters
- if (strpos($injector, '.') !== false) {
- continue;
- }
- $injector = "HTMLPurifier_Injector_$injector";
- if (!$b) {
- continue;
- }
- $this->injectors[] = new $injector;
- }
- foreach ($def_injectors as $injector) {
- // assumed to be objects
- $this->injectors[] = $injector;
- }
- foreach ($custom_injectors as $injector) {
- if (!$injector) {
- continue;
- }
- if (is_string($injector)) {
- $injector = "HTMLPurifier_Injector_$injector";
- $injector = new $injector;
- }
- $this->injectors[] = $injector;
- }
-
- // give the injectors references to the definition and context
- // variables for performance reasons
- foreach ($this->injectors as $ix => $injector) {
- $error = $injector->prepare($config, $context);
- if (!$error) {
- continue;
- }
- array_splice($this->injectors, $ix, 1); // rm the injector
- trigger_error("Cannot enable {$injector->name} injector because $error is not allowed", E_USER_WARNING);
- }
-
- // -- end INJECTOR --
-
- // a note on reprocessing:
- // In order to reduce code duplication, whenever some code needs
- // to make HTML changes in order to make things "correct", the
- // new HTML gets sent through the purifier, regardless of its
- // status. This means that if we add a start token, because it
- // was totally necessary, we don't have to update nesting; we just
- // punt ($reprocess = true; continue;) and it does that for us.
-
- // isset is in loop because $tokens size changes during loop exec
- for (;;
- // only increment if we don't need to reprocess
- $reprocess ? $reprocess = false : $token = $zipper->next($token)) {
-
- // check for a rewind
- if (is_int($i)) {
- // possibility: disable rewinding if the current token has a
- // rewind set on it already. This would offer protection from
- // infinite loop, but might hinder some advanced rewinding.
- $rewind_offset = $this->injectors[$i]->getRewindOffset();
- if (is_int($rewind_offset)) {
- for ($j = 0; $j < $rewind_offset; $j++) {
- if (empty($zipper->front)) break;
- $token = $zipper->prev($token);
- // indicate that other injectors should not process this token,
- // but we need to reprocess it. See Note [Injector skips]
- unset($token->skip[$i]);
- $token->rewind = $i;
- if ($token instanceof HTMLPurifier_Token_Start) {
- array_pop($this->stack);
- } elseif ($token instanceof HTMLPurifier_Token_End) {
- $this->stack[] = $token->start;
- }
- }
- }
- $i = false;
- }
-
- // handle case of document end
- if ($token === NULL) {
- // kill processing if stack is empty
- if (empty($this->stack)) {
- break;
- }
-
- // peek
- $top_nesting = array_pop($this->stack);
- $this->stack[] = $top_nesting;
-
- // send error [TagClosedSuppress]
- if ($e && !isset($top_nesting->armor['MakeWellFormed_TagClosedError'])) {
- $e->send(E_NOTICE, 'Strategy_MakeWellFormed: Tag closed by document end', $top_nesting);
- }
-
- // append, don't splice, since this is the end
- $token = new HTMLPurifier_Token_End($top_nesting->name);
-
- // punt!
- $reprocess = true;
- continue;
- }
-
- //echo ' '; printZipper($zipper, $token);//printTokens($this->stack);
- //flush();
-
- // quick-check: if it's not a tag, no need to process
- if (empty($token->is_tag)) {
- if ($token instanceof HTMLPurifier_Token_Text) {
- foreach ($this->injectors as $i => $injector) {
- if (isset($token->skip[$i])) {
- // See Note [Injector skips]
- continue;
- }
- if ($token->rewind !== null && $token->rewind !== $i) {
- continue;
- }
- // XXX fuckup
- $r = $token;
- $injector->handleText($r);
- $token = $this->processToken($r, $i);
- $reprocess = true;
- break;
- }
- }
- // another possibility is a comment
- continue;
- }
-
- if (isset($definition->info[$token->name])) {
- $type = $definition->info[$token->name]->child->type;
- } else {
- $type = false; // Type is unknown, treat accordingly
- }
-
- // quick tag checks: anything that's *not* an end tag
- $ok = false;
- if ($type === 'empty' && $token instanceof HTMLPurifier_Token_Start) {
- // claims to be a start tag but is empty
- $token = new HTMLPurifier_Token_Empty(
- $token->name,
- $token->attr,
- $token->line,
- $token->col,
- $token->armor
- );
- $ok = true;
- } elseif ($type && $type !== 'empty' && $token instanceof HTMLPurifier_Token_Empty) {
- // claims to be empty but really is a start tag
- // NB: this assignment is required
- $old_token = $token;
- $token = new HTMLPurifier_Token_End($token->name);
- $token = $this->insertBefore(
- new HTMLPurifier_Token_Start($old_token->name, $old_token->attr, $old_token->line, $old_token->col, $old_token->armor)
- );
- // punt (since we had to modify the input stream in a non-trivial way)
- $reprocess = true;
- continue;
- } elseif ($token instanceof HTMLPurifier_Token_Empty) {
- // real empty token
- $ok = true;
- } elseif ($token instanceof HTMLPurifier_Token_Start) {
- // start tag
-
- // ...unless they also have to close their parent
- if (!empty($this->stack)) {
-
- // Performance note: you might think that it's rather
- // inefficient, recalculating the autoclose information
- // for every tag that a token closes (since when we
- // do an autoclose, we push a new token into the
- // stream and then /process/ that, before
- // re-processing this token.) But this is
- // necessary, because an injector can make an
- // arbitrary transformations to the autoclosing
- // tokens we introduce, so things may have changed
- // in the meantime. Also, doing the inefficient thing is
- // "easy" to reason about (for certain perverse definitions
- // of "easy")
-
- $parent = array_pop($this->stack);
- $this->stack[] = $parent;
-
- $parent_def = null;
- $parent_elements = null;
- $autoclose = false;
- if (isset($definition->info[$parent->name])) {
- $parent_def = $definition->info[$parent->name];
- $parent_elements = $parent_def->child->getAllowedElements($config);
- $autoclose = !isset($parent_elements[$token->name]);
- }
-
- if ($autoclose && $definition->info[$token->name]->wrap) {
- // Check if an element can be wrapped by another
- // element to make it valid in a context (for
- // example, needs a in between)
- $wrapname = $definition->info[$token->name]->wrap;
- $wrapdef = $definition->info[$wrapname];
- $elements = $wrapdef->child->getAllowedElements($config);
- if (isset($elements[$token->name]) && isset($parent_elements[$wrapname])) {
- $newtoken = new HTMLPurifier_Token_Start($wrapname);
- $token = $this->insertBefore($newtoken);
- $reprocess = true;
- continue;
- }
- }
-
- $carryover = false;
- if ($autoclose && $parent_def->formatting) {
- $carryover = true;
- }
-
- if ($autoclose) {
- // check if this autoclose is doomed to fail
- // (this rechecks $parent, which his harmless)
- $autoclose_ok = isset($global_parent_allowed_elements[$token->name]);
- if (!$autoclose_ok) {
- foreach ($this->stack as $ancestor) {
- $elements = $definition->info[$ancestor->name]->child->getAllowedElements($config);
- if (isset($elements[$token->name])) {
- $autoclose_ok = true;
- break;
- }
- if ($definition->info[$token->name]->wrap) {
- $wrapname = $definition->info[$token->name]->wrap;
- $wrapdef = $definition->info[$wrapname];
- $wrap_elements = $wrapdef->child->getAllowedElements($config);
- if (isset($wrap_elements[$token->name]) && isset($elements[$wrapname])) {
- $autoclose_ok = true;
- break;
- }
- }
- }
- }
- if ($autoclose_ok) {
- // errors need to be updated
- $new_token = new HTMLPurifier_Token_End($parent->name);
- $new_token->start = $parent;
- // [TagClosedSuppress]
- if ($e && !isset($parent->armor['MakeWellFormed_TagClosedError'])) {
- if (!$carryover) {
- $e->send(E_NOTICE, 'Strategy_MakeWellFormed: Tag auto closed', $parent);
- } else {
- $e->send(E_NOTICE, 'Strategy_MakeWellFormed: Tag carryover', $parent);
- }
- }
- if ($carryover) {
- $element = clone $parent;
- // [TagClosedAuto]
- $element->armor['MakeWellFormed_TagClosedError'] = true;
- $element->carryover = true;
- $token = $this->processToken(array($new_token, $token, $element));
- } else {
- $token = $this->insertBefore($new_token);
- }
- } else {
- $token = $this->remove();
- }
- $reprocess = true;
- continue;
- }
-
- }
- $ok = true;
- }
-
- if ($ok) {
- foreach ($this->injectors as $i => $injector) {
- if (isset($token->skip[$i])) {
- // See Note [Injector skips]
- continue;
- }
- if ($token->rewind !== null && $token->rewind !== $i) {
- continue;
- }
- $r = $token;
- $injector->handleElement($r);
- $token = $this->processToken($r, $i);
- $reprocess = true;
- break;
- }
- if (!$reprocess) {
- // ah, nothing interesting happened; do normal processing
- if ($token instanceof HTMLPurifier_Token_Start) {
- $this->stack[] = $token;
- } elseif ($token instanceof HTMLPurifier_Token_End) {
- throw new HTMLPurifier_Exception(
- 'Improper handling of end tag in start code; possible error in MakeWellFormed'
- );
- }
- }
- continue;
- }
-
- // sanity check: we should be dealing with a closing tag
- if (!$token instanceof HTMLPurifier_Token_End) {
- throw new HTMLPurifier_Exception('Unaccounted for tag token in input stream, bug in HTML Purifier');
- }
-
- // make sure that we have something open
- if (empty($this->stack)) {
- if ($escape_invalid_tags) {
- if ($e) {
- $e->send(E_WARNING, 'Strategy_MakeWellFormed: Unnecessary end tag to text');
- }
- $token = new HTMLPurifier_Token_Text($generator->generateFromToken($token));
- } else {
- if ($e) {
- $e->send(E_WARNING, 'Strategy_MakeWellFormed: Unnecessary end tag removed');
- }
- $token = $this->remove();
- }
- $reprocess = true;
- continue;
- }
-
- // first, check for the simplest case: everything closes neatly.
- // Eventually, everything passes through here; if there are problems
- // we modify the input stream accordingly and then punt, so that
- // the tokens get processed again.
- $current_parent = array_pop($this->stack);
- if ($current_parent->name == $token->name) {
- $token->start = $current_parent;
- foreach ($this->injectors as $i => $injector) {
- if (isset($token->skip[$i])) {
- // See Note [Injector skips]
- continue;
- }
- if ($token->rewind !== null && $token->rewind !== $i) {
- continue;
- }
- $r = $token;
- $injector->handleEnd($r);
- $token = $this->processToken($r, $i);
- $this->stack[] = $current_parent;
- $reprocess = true;
- break;
- }
- continue;
- }
-
- // okay, so we're trying to close the wrong tag
-
- // undo the pop previous pop
- $this->stack[] = $current_parent;
-
- // scroll back the entire nest, trying to find our tag.
- // (feature could be to specify how far you'd like to go)
- $size = count($this->stack);
- // -2 because -1 is the last element, but we already checked that
- $skipped_tags = false;
- for ($j = $size - 2; $j >= 0; $j--) {
- if ($this->stack[$j]->name == $token->name) {
- $skipped_tags = array_slice($this->stack, $j);
- break;
- }
- }
-
- // we didn't find the tag, so remove
- if ($skipped_tags === false) {
- if ($escape_invalid_tags) {
- if ($e) {
- $e->send(E_WARNING, 'Strategy_MakeWellFormed: Stray end tag to text');
- }
- $token = new HTMLPurifier_Token_Text($generator->generateFromToken($token));
- } else {
- if ($e) {
- $e->send(E_WARNING, 'Strategy_MakeWellFormed: Stray end tag removed');
- }
- $token = $this->remove();
- }
- $reprocess = true;
- continue;
- }
-
- // do errors, in REVERSE $j order: a,b,c with
- $c = count($skipped_tags);
- if ($e) {
- for ($j = $c - 1; $j > 0; $j--) {
- // notice we exclude $j == 0, i.e. the current ending tag, from
- // the errors... [TagClosedSuppress]
- if (!isset($skipped_tags[$j]->armor['MakeWellFormed_TagClosedError'])) {
- $e->send(E_NOTICE, 'Strategy_MakeWellFormed: Tag closed by element end', $skipped_tags[$j]);
- }
- }
- }
-
- // insert tags, in FORWARD $j order: c,b,a with
- $replace = array($token);
- for ($j = 1; $j < $c; $j++) {
- // ...as well as from the insertions
- $new_token = new HTMLPurifier_Token_End($skipped_tags[$j]->name);
- $new_token->start = $skipped_tags[$j];
- array_unshift($replace, $new_token);
- if (isset($definition->info[$new_token->name]) && $definition->info[$new_token->name]->formatting) {
- // [TagClosedAuto]
- $element = clone $skipped_tags[$j];
- $element->carryover = true;
- $element->armor['MakeWellFormed_TagClosedError'] = true;
- $replace[] = $element;
- }
- }
- $token = $this->processToken($replace);
- $reprocess = true;
- continue;
- }
-
- $context->destroy('CurrentToken');
- $context->destroy('CurrentNesting');
- $context->destroy('InputZipper');
-
- unset($this->injectors, $this->stack, $this->tokens);
- return $zipper->toArray($token);
- }
-
- /**
- * Processes arbitrary token values for complicated substitution patterns.
- * In general:
- *
- * If $token is an array, it is a list of tokens to substitute for the
- * current token. These tokens then get individually processed. If there
- * is a leading integer in the list, that integer determines how many
- * tokens from the stream should be removed.
- *
- * If $token is a regular token, it is swapped with the current token.
- *
- * If $token is false, the current token is deleted.
- *
- * If $token is an integer, that number of tokens (with the first token
- * being the current one) will be deleted.
- *
- * @param HTMLPurifier_Token|array|int|bool $token Token substitution value
- * @param HTMLPurifier_Injector|int $injector Injector that performed the substitution; default is if
- * this is not an injector related operation.
- * @throws HTMLPurifier_Exception
- */
- protected function processToken($token, $injector = -1)
- {
- // Zend OpCache miscompiles $token = array($token), so
- // avoid this pattern. See: https://github.com/ezyang/htmlpurifier/issues/108
-
- // normalize forms of token
- if (is_object($token)) {
- $tmp = $token;
- $token = array(1, $tmp);
- }
- if (is_int($token)) {
- $tmp = $token;
- $token = array($tmp);
- }
- if ($token === false) {
- $token = array(1);
- }
- if (!is_array($token)) {
- throw new HTMLPurifier_Exception('Invalid token type from injector');
- }
- if (!is_int($token[0])) {
- array_unshift($token, 1);
- }
- if ($token[0] === 0) {
- throw new HTMLPurifier_Exception('Deleting zero tokens is not valid');
- }
-
- // $token is now an array with the following form:
- // array(number nodes to delete, new node 1, new node 2, ...)
-
- $delete = array_shift($token);
- list($old, $r) = $this->zipper->splice($this->token, $delete, $token);
-
- if ($injector > -1) {
- // See Note [Injector skips]
- // Determine appropriate skips. Here's what the code does:
- // *If* we deleted one or more tokens, copy the skips
- // of those tokens into the skips of the new tokens (in $token).
- // Also, mark the newly inserted tokens as having come from
- // $injector.
- $oldskip = isset($old[0]) ? $old[0]->skip : array();
- foreach ($token as $object) {
- $object->skip = $oldskip;
- $object->skip[$injector] = true;
- }
- }
-
- return $r;
-
- }
-
- /**
- * Inserts a token before the current token. Cursor now points to
- * this token. You must reprocess after this.
- * @param HTMLPurifier_Token $token
- */
- private function insertBefore($token)
- {
- // NB not $this->zipper->insertBefore(), due to positioning
- // differences
- $splice = $this->zipper->splice($this->token, 0, array($token));
-
- return $splice[1];
- }
-
- /**
- * Removes current token. Cursor now points to new token occupying previously
- * occupied space. You must reprocess after this.
- */
- private function remove()
- {
- return $this->zipper->delete();
- }
-}
-
-// Note [Injector skips]
-// ~~~~~~~~~~~~~~~~~~~~~
-// When I originally designed this class, the idea behind the 'skip'
-// property of HTMLPurifier_Token was to help avoid infinite loops
-// in injector processing. For example, suppose you wrote an injector
-// that bolded swear words. Naively, you might write it so that
-// whenever you saw ****, you replaced it with
**** .
-//
-// When this happens, we will reprocess all of the tokens with the
-// other injectors. Now there is an opportunity for infinite loop:
-// if we rerun the swear-word injector on these tokens, we might
-// see **** and then reprocess again to get
-//
**** ad infinitum.
-//
-// Thus, the idea of a skip is that once we process a token with
-// an injector, we mark all of those tokens as having "come from"
-// the injector, and we never run the injector again on these
-// tokens.
-//
-// There were two more complications, however:
-//
-// - With HTMLPurifier_Injector_RemoveEmpty, we noticed that if
-// you had
, after you removed the
, you
-// really would like this injector to go back and reprocess
-// the
tag, discovering that it is now empty and can be
-// removed. So we reintroduced the possibility of infinite looping
-// by adding a "rewind" function, which let you go back to an
-// earlier point in the token stream and reprocess it with injectors.
-// Needless to say, we need to UN-skip the token so it gets
-// reprocessed.
-//
-// - Suppose that you successfuly process a token, replace it with
-// one with your skip mark, but now another injector wants to
-// process the skipped token with another token. Should you continue
-// to skip that new token, or reprocess it? If you reprocess,
-// you can end up with an infinite loop where one injector converts
-// to , and then another injector converts it back. So
-// we inherit the skips, but for some reason, I thought that we
-// should inherit the skip from the first token of the token
-// that we deleted. Why? Well, it seems to work OK.
-//
-// If I were to redesign this functionality, I would absolutely not
-// go about doing it this way: the semantics are just not very well
-// defined, and in any case you probably wanted to operate on trees,
-// not token streams.
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/RemoveForeignElements.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/RemoveForeignElements.php
deleted file mode 100644
index 1a8149ec..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/RemoveForeignElements.php
+++ /dev/null
@@ -1,207 +0,0 @@
-getHTMLDefinition();
- $generator = new HTMLPurifier_Generator($config, $context);
- $result = array();
-
- $escape_invalid_tags = $config->get('Core.EscapeInvalidTags');
- $remove_invalid_img = $config->get('Core.RemoveInvalidImg');
-
- // currently only used to determine if comments should be kept
- $trusted = $config->get('HTML.Trusted');
- $comment_lookup = $config->get('HTML.AllowedComments');
- $comment_regexp = $config->get('HTML.AllowedCommentsRegexp');
- $check_comments = $comment_lookup !== array() || $comment_regexp !== null;
-
- $remove_script_contents = $config->get('Core.RemoveScriptContents');
- $hidden_elements = $config->get('Core.HiddenElements');
-
- // remove script contents compatibility
- if ($remove_script_contents === true) {
- $hidden_elements['script'] = true;
- } elseif ($remove_script_contents === false && isset($hidden_elements['script'])) {
- unset($hidden_elements['script']);
- }
-
- $attr_validator = new HTMLPurifier_AttrValidator();
-
- // removes tokens until it reaches a closing tag with its value
- $remove_until = false;
-
- // converts comments into text tokens when this is equal to a tag name
- $textify_comments = false;
-
- $token = false;
- $context->register('CurrentToken', $token);
-
- $e = false;
- if ($config->get('Core.CollectErrors')) {
- $e =& $context->get('ErrorCollector');
- }
-
- foreach ($tokens as $token) {
- if ($remove_until) {
- if (empty($token->is_tag) || $token->name !== $remove_until) {
- continue;
- }
- }
- if (!empty($token->is_tag)) {
- // DEFINITION CALL
-
- // before any processing, try to transform the element
- if (isset($definition->info_tag_transform[$token->name])) {
- $original_name = $token->name;
- // there is a transformation for this tag
- // DEFINITION CALL
- $token = $definition->
- info_tag_transform[$token->name]->transform($token, $config, $context);
- if ($e) {
- $e->send(E_NOTICE, 'Strategy_RemoveForeignElements: Tag transform', $original_name);
- }
- }
-
- if (isset($definition->info[$token->name])) {
- // mostly everything's good, but
- // we need to make sure required attributes are in order
- if (($token instanceof HTMLPurifier_Token_Start || $token instanceof HTMLPurifier_Token_Empty) &&
- $definition->info[$token->name]->required_attr &&
- ($token->name != 'img' || $remove_invalid_img) // ensure config option still works
- ) {
- $attr_validator->validateToken($token, $config, $context);
- $ok = true;
- foreach ($definition->info[$token->name]->required_attr as $name) {
- if (!isset($token->attr[$name])) {
- $ok = false;
- break;
- }
- }
- if (!$ok) {
- if ($e) {
- $e->send(
- E_ERROR,
- 'Strategy_RemoveForeignElements: Missing required attribute',
- $name
- );
- }
- continue;
- }
- $token->armor['ValidateAttributes'] = true;
- }
-
- if (isset($hidden_elements[$token->name]) && $token instanceof HTMLPurifier_Token_Start) {
- $textify_comments = $token->name;
- } elseif ($token->name === $textify_comments && $token instanceof HTMLPurifier_Token_End) {
- $textify_comments = false;
- }
-
- } elseif ($escape_invalid_tags) {
- // invalid tag, generate HTML representation and insert in
- if ($e) {
- $e->send(E_WARNING, 'Strategy_RemoveForeignElements: Foreign element to text');
- }
- $token = new HTMLPurifier_Token_Text(
- $generator->generateFromToken($token)
- );
- } else {
- // check if we need to destroy all of the tag's children
- // CAN BE GENERICIZED
- if (isset($hidden_elements[$token->name])) {
- if ($token instanceof HTMLPurifier_Token_Start) {
- $remove_until = $token->name;
- } elseif ($token instanceof HTMLPurifier_Token_Empty) {
- // do nothing: we're still looking
- } else {
- $remove_until = false;
- }
- if ($e) {
- $e->send(E_ERROR, 'Strategy_RemoveForeignElements: Foreign meta element removed');
- }
- } else {
- if ($e) {
- $e->send(E_ERROR, 'Strategy_RemoveForeignElements: Foreign element removed');
- }
- }
- continue;
- }
- } elseif ($token instanceof HTMLPurifier_Token_Comment) {
- // textify comments in script tags when they are allowed
- if ($textify_comments !== false) {
- $data = $token->data;
- $token = new HTMLPurifier_Token_Text($data);
- } elseif ($trusted || $check_comments) {
- // always cleanup comments
- $trailing_hyphen = false;
- if ($e) {
- // perform check whether or not there's a trailing hyphen
- if (substr($token->data, -1) == '-') {
- $trailing_hyphen = true;
- }
- }
- $token->data = rtrim($token->data, '-');
- $found_double_hyphen = false;
- while (strpos($token->data, '--') !== false) {
- $found_double_hyphen = true;
- $token->data = str_replace('--', '-', $token->data);
- }
- if ($trusted || !empty($comment_lookup[trim($token->data)]) ||
- ($comment_regexp !== null && preg_match($comment_regexp, trim($token->data)))) {
- // OK good
- if ($e) {
- if ($trailing_hyphen) {
- $e->send(
- E_NOTICE,
- 'Strategy_RemoveForeignElements: Trailing hyphen in comment removed'
- );
- }
- if ($found_double_hyphen) {
- $e->send(E_NOTICE, 'Strategy_RemoveForeignElements: Hyphens in comment collapsed');
- }
- }
- } else {
- if ($e) {
- $e->send(E_NOTICE, 'Strategy_RemoveForeignElements: Comment removed');
- }
- continue;
- }
- } else {
- // strip comments
- if ($e) {
- $e->send(E_NOTICE, 'Strategy_RemoveForeignElements: Comment removed');
- }
- continue;
- }
- } elseif ($token instanceof HTMLPurifier_Token_Text) {
- } else {
- continue;
- }
- $result[] = $token;
- }
- if ($remove_until && $e) {
- // we removed tokens until the end, throw error
- $e->send(E_ERROR, 'Strategy_RemoveForeignElements: Token removed to end', $remove_until);
- }
- $context->destroy('CurrentToken');
- return $result;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/ValidateAttributes.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/ValidateAttributes.php
deleted file mode 100644
index fbb3d27c..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/ValidateAttributes.php
+++ /dev/null
@@ -1,45 +0,0 @@
-register('CurrentToken', $token);
-
- foreach ($tokens as $key => $token) {
-
- // only process tokens that have attributes,
- // namely start and empty tags
- if (!$token instanceof HTMLPurifier_Token_Start && !$token instanceof HTMLPurifier_Token_Empty) {
- continue;
- }
-
- // skip tokens that are armored
- if (!empty($token->armor['ValidateAttributes'])) {
- continue;
- }
-
- // note that we have no facilities here for removing tokens
- $validator->validateToken($token, $config, $context);
- }
- $context->destroy('CurrentToken');
- return $tokens;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/StringHash.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/StringHash.php
deleted file mode 100644
index c0737019..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/StringHash.php
+++ /dev/null
@@ -1,47 +0,0 @@
-accessed[$index] = true;
- return parent::offsetGet($index);
- }
-
- /**
- * Returns a lookup array of all array indexes that have been accessed.
- * @return array in form array($index => true).
- */
- public function getAccessed()
- {
- return $this->accessed;
- }
-
- /**
- * Resets the access array.
- */
- public function resetAccessed()
- {
- $this->accessed = array();
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/StringHashParser.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/StringHashParser.php
deleted file mode 100644
index 7c73f808..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/StringHashParser.php
+++ /dev/null
@@ -1,136 +0,0 @@
- 'DefaultKeyValue',
- * 'KEY' => 'Value',
- * 'KEY2' => 'Value2',
- * 'MULTILINE-KEY' => "Multiline\nvalue.\n",
- * )
- *
- * We use this as an easy to use file-format for configuration schema
- * files, but the class itself is usage agnostic.
- *
- * You can use ---- to forcibly terminate parsing of a single string-hash;
- * this marker is used in multi string-hashes to delimit boundaries.
- */
-class HTMLPurifier_StringHashParser
-{
-
- /**
- * @type string
- */
- public $default = 'ID';
-
- /**
- * Parses a file that contains a single string-hash.
- * @param string $file
- * @return array
- */
- public function parseFile($file)
- {
- if (!file_exists($file)) {
- return false;
- }
- $fh = fopen($file, 'r');
- if (!$fh) {
- return false;
- }
- $ret = $this->parseHandle($fh);
- fclose($fh);
- return $ret;
- }
-
- /**
- * Parses a file that contains multiple string-hashes delimited by '----'
- * @param string $file
- * @return array
- */
- public function parseMultiFile($file)
- {
- if (!file_exists($file)) {
- return false;
- }
- $ret = array();
- $fh = fopen($file, 'r');
- if (!$fh) {
- return false;
- }
- while (!feof($fh)) {
- $ret[] = $this->parseHandle($fh);
- }
- fclose($fh);
- return $ret;
- }
-
- /**
- * Internal parser that acepts a file handle.
- * @note While it's possible to simulate in-memory parsing by using
- * custom stream wrappers, if such a use-case arises we should
- * factor out the file handle into its own class.
- * @param resource $fh File handle with pointer at start of valid string-hash
- * block.
- * @return array
- */
- protected function parseHandle($fh)
- {
- $state = false;
- $single = false;
- $ret = array();
- do {
- $line = fgets($fh);
- if ($line === false) {
- break;
- }
- $line = rtrim($line, "\n\r");
- if (!$state && $line === '') {
- continue;
- }
- if ($line === '----') {
- break;
- }
- if (strncmp('--#', $line, 3) === 0) {
- // Comment
- continue;
- } elseif (strncmp('--', $line, 2) === 0) {
- // Multiline declaration
- $state = trim($line, '- ');
- if (!isset($ret[$state])) {
- $ret[$state] = '';
- }
- continue;
- } elseif (!$state) {
- $single = true;
- if (strpos($line, ':') !== false) {
- // Single-line declaration
- list($state, $line) = explode(':', $line, 2);
- $line = trim($line);
- } else {
- // Use default declaration
- $state = $this->default;
- }
- }
- if ($single) {
- $ret[$state] = $line;
- $single = false;
- $state = false;
- } else {
- $ret[$state] .= "$line\n";
- }
- } while (!feof($fh));
- return $ret;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/TagTransform.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/TagTransform.php
deleted file mode 100644
index 7b8d8334..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/TagTransform.php
+++ /dev/null
@@ -1,37 +0,0 @@
- 'xx-small',
- '1' => 'xx-small',
- '2' => 'small',
- '3' => 'medium',
- '4' => 'large',
- '5' => 'x-large',
- '6' => 'xx-large',
- '7' => '300%',
- '-1' => 'smaller',
- '-2' => '60%',
- '+1' => 'larger',
- '+2' => '150%',
- '+3' => '200%',
- '+4' => '300%'
- );
-
- /**
- * @param HTMLPurifier_Token_Tag $tag
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return HTMLPurifier_Token_End|string
- */
- public function transform($tag, $config, $context)
- {
- if ($tag instanceof HTMLPurifier_Token_End) {
- $new_tag = clone $tag;
- $new_tag->name = $this->transform_to;
- return $new_tag;
- }
-
- $attr = $tag->attr;
- $prepend_style = '';
-
- // handle color transform
- if (isset($attr['color'])) {
- $prepend_style .= 'color:' . $attr['color'] . ';';
- unset($attr['color']);
- }
-
- // handle face transform
- if (isset($attr['face'])) {
- $prepend_style .= 'font-family:' . $attr['face'] . ';';
- unset($attr['face']);
- }
-
- // handle size transform
- if (isset($attr['size'])) {
- // normalize large numbers
- if ($attr['size'] !== '') {
- if ($attr['size'][0] == '+' || $attr['size'][0] == '-') {
- $size = (int)$attr['size'];
- if ($size < -2) {
- $attr['size'] = '-2';
- }
- if ($size > 4) {
- $attr['size'] = '+4';
- }
- } else {
- $size = (int)$attr['size'];
- if ($size > 7) {
- $attr['size'] = '7';
- }
- }
- }
- if (isset($this->_size_lookup[$attr['size']])) {
- $prepend_style .= 'font-size:' .
- $this->_size_lookup[$attr['size']] . ';';
- }
- unset($attr['size']);
- }
-
- if ($prepend_style) {
- $attr['style'] = isset($attr['style']) ?
- $prepend_style . $attr['style'] :
- $prepend_style;
- }
-
- $new_tag = clone $tag;
- $new_tag->name = $this->transform_to;
- $new_tag->attr = $attr;
-
- return $new_tag;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/TagTransform/Simple.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/TagTransform/Simple.php
deleted file mode 100644
index 71bf10b9..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/TagTransform/Simple.php
+++ /dev/null
@@ -1,44 +0,0 @@
-transform_to = $transform_to;
- $this->style = $style;
- }
-
- /**
- * @param HTMLPurifier_Token_Tag $tag
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return string
- */
- public function transform($tag, $config, $context)
- {
- $new_tag = clone $tag;
- $new_tag->name = $this->transform_to;
- if (!is_null($this->style) &&
- ($new_tag instanceof HTMLPurifier_Token_Start || $new_tag instanceof HTMLPurifier_Token_Empty)
- ) {
- $this->prependCSS($new_tag->attr, $this->style);
- }
- return $new_tag;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Token.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Token.php
deleted file mode 100644
index 84d3619a..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Token.php
+++ /dev/null
@@ -1,100 +0,0 @@
-line = $l;
- $this->col = $c;
- }
-
- /**
- * Convenience function for DirectLex settings line/col position.
- * @param int $l
- * @param int $c
- */
- public function rawPosition($l, $c)
- {
- if ($c === -1) {
- $l++;
- }
- $this->line = $l;
- $this->col = $c;
- }
-
- /**
- * Converts a token into its corresponding node.
- */
- abstract public function toNode();
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Token/Comment.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Token/Comment.php
deleted file mode 100644
index 23453c70..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Token/Comment.php
+++ /dev/null
@@ -1,38 +0,0 @@
-data = $data;
- $this->line = $line;
- $this->col = $col;
- }
-
- public function toNode() {
- return new HTMLPurifier_Node_Comment($this->data, $this->line, $this->col);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Token/Empty.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Token/Empty.php
deleted file mode 100644
index 78a95f55..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Token/Empty.php
+++ /dev/null
@@ -1,15 +0,0 @@
-empty = true;
- return $n;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Token/End.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Token/End.php
deleted file mode 100644
index 59b38fdc..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Token/End.php
+++ /dev/null
@@ -1,24 +0,0 @@
-toNode not supported!");
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Token/Start.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Token/Start.php
deleted file mode 100644
index 019f317a..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Token/Start.php
+++ /dev/null
@@ -1,10 +0,0 @@
-!empty($obj->is_tag)
- * without having to use a function call is_a() .
- * @type bool
- */
- public $is_tag = true;
-
- /**
- * The lower-case name of the tag, like 'a', 'b' or 'blockquote'.
- *
- * @note Strictly speaking, XML tags are case sensitive, so we shouldn't
- * be lower-casing them, but these tokens cater to HTML tags, which are
- * insensitive.
- * @type string
- */
- public $name;
-
- /**
- * Associative array of the tag's attributes.
- * @type array
- */
- public $attr = array();
-
- /**
- * Non-overloaded constructor, which lower-cases passed tag name.
- *
- * @param string $name String name.
- * @param array $attr Associative array of attributes.
- * @param int $line
- * @param int $col
- * @param array $armor
- */
- public function __construct($name, $attr = array(), $line = null, $col = null, $armor = array())
- {
- $this->name = ctype_lower($name) ? $name : strtolower($name);
- foreach ($attr as $key => $value) {
- // normalization only necessary when key is not lowercase
- if (!ctype_lower($key)) {
- $new_key = strtolower($key);
- if (!isset($attr[$new_key])) {
- $attr[$new_key] = $attr[$key];
- }
- if ($new_key !== $key) {
- unset($attr[$key]);
- }
- }
- }
- $this->attr = $attr;
- $this->line = $line;
- $this->col = $col;
- $this->armor = $armor;
- }
-
- public function toNode() {
- return new HTMLPurifier_Node_Element($this->name, $this->attr, $this->line, $this->col, $this->armor);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Token/Text.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Token/Text.php
deleted file mode 100644
index f26a1c21..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Token/Text.php
+++ /dev/null
@@ -1,53 +0,0 @@
-data = $data;
- $this->is_whitespace = ctype_space($data);
- $this->line = $line;
- $this->col = $col;
- }
-
- public function toNode() {
- return new HTMLPurifier_Node_Text($this->data, $this->is_whitespace, $this->line, $this->col);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/TokenFactory.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/TokenFactory.php
deleted file mode 100644
index dea2446b..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/TokenFactory.php
+++ /dev/null
@@ -1,118 +0,0 @@
-p_start = new HTMLPurifier_Token_Start('', array());
- $this->p_end = new HTMLPurifier_Token_End('');
- $this->p_empty = new HTMLPurifier_Token_Empty('', array());
- $this->p_text = new HTMLPurifier_Token_Text('');
- $this->p_comment = new HTMLPurifier_Token_Comment('');
- }
-
- /**
- * Creates a HTMLPurifier_Token_Start.
- * @param string $name Tag name
- * @param array $attr Associative array of attributes
- * @return HTMLPurifier_Token_Start Generated HTMLPurifier_Token_Start
- */
- public function createStart($name, $attr = array())
- {
- $p = clone $this->p_start;
- $p->__construct($name, $attr);
- return $p;
- }
-
- /**
- * Creates a HTMLPurifier_Token_End.
- * @param string $name Tag name
- * @return HTMLPurifier_Token_End Generated HTMLPurifier_Token_End
- */
- public function createEnd($name)
- {
- $p = clone $this->p_end;
- $p->__construct($name);
- return $p;
- }
-
- /**
- * Creates a HTMLPurifier_Token_Empty.
- * @param string $name Tag name
- * @param array $attr Associative array of attributes
- * @return HTMLPurifier_Token_Empty Generated HTMLPurifier_Token_Empty
- */
- public function createEmpty($name, $attr = array())
- {
- $p = clone $this->p_empty;
- $p->__construct($name, $attr);
- return $p;
- }
-
- /**
- * Creates a HTMLPurifier_Token_Text.
- * @param string $data Data of text token
- * @return HTMLPurifier_Token_Text Generated HTMLPurifier_Token_Text
- */
- public function createText($data)
- {
- $p = clone $this->p_text;
- $p->__construct($data);
- return $p;
- }
-
- /**
- * Creates a HTMLPurifier_Token_Comment.
- * @param string $data Data of comment token
- * @return HTMLPurifier_Token_Comment Generated HTMLPurifier_Token_Comment
- */
- public function createComment($data)
- {
- $p = clone $this->p_comment;
- $p->__construct($data);
- return $p;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URI.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URI.php
deleted file mode 100644
index 9c5be39d..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URI.php
+++ /dev/null
@@ -1,316 +0,0 @@
-scheme = is_null($scheme) || ctype_lower($scheme) ? $scheme : strtolower($scheme);
- $this->userinfo = $userinfo;
- $this->host = $host;
- $this->port = is_null($port) ? $port : (int)$port;
- $this->path = $path;
- $this->query = $query;
- $this->fragment = $fragment;
- }
-
- /**
- * Retrieves a scheme object corresponding to the URI's scheme/default
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return HTMLPurifier_URIScheme Scheme object appropriate for validating this URI
- */
- public function getSchemeObj($config, $context)
- {
- $registry = HTMLPurifier_URISchemeRegistry::instance();
- if ($this->scheme !== null) {
- $scheme_obj = $registry->getScheme($this->scheme, $config, $context);
- if (!$scheme_obj) {
- return false;
- } // invalid scheme, clean it out
- } else {
- // no scheme: retrieve the default one
- $def = $config->getDefinition('URI');
- $scheme_obj = $def->getDefaultScheme($config, $context);
- if (!$scheme_obj) {
- if ($def->defaultScheme !== null) {
- // something funky happened to the default scheme object
- trigger_error(
- 'Default scheme object "' . $def->defaultScheme . '" was not readable',
- E_USER_WARNING
- );
- } // suppress error if it's null
- return false;
- }
- }
- return $scheme_obj;
- }
-
- /**
- * Generic validation method applicable for all schemes. May modify
- * this URI in order to get it into a compliant form.
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool True if validation/filtering succeeds, false if failure
- */
- public function validate($config, $context)
- {
- // ABNF definitions from RFC 3986
- $chars_sub_delims = '!$&\'()*+,;=';
- $chars_gen_delims = ':/?#[]@';
- $chars_pchar = $chars_sub_delims . ':@';
-
- // validate host
- if (!is_null($this->host)) {
- $host_def = new HTMLPurifier_AttrDef_URI_Host();
- $this->host = $host_def->validate($this->host, $config, $context);
- if ($this->host === false) {
- $this->host = null;
- }
- }
-
- // validate scheme
- // NOTE: It's not appropriate to check whether or not this
- // scheme is in our registry, since a URIFilter may convert a
- // URI that we don't allow into one we do. So instead, we just
- // check if the scheme can be dropped because there is no host
- // and it is our default scheme.
- if (!is_null($this->scheme) && is_null($this->host) || $this->host === '') {
- // support for relative paths is pretty abysmal when the
- // scheme is present, so axe it when possible
- $def = $config->getDefinition('URI');
- if ($def->defaultScheme === $this->scheme) {
- $this->scheme = null;
- }
- }
-
- // validate username
- if (!is_null($this->userinfo)) {
- $encoder = new HTMLPurifier_PercentEncoder($chars_sub_delims . ':');
- $this->userinfo = $encoder->encode($this->userinfo);
- }
-
- // validate port
- if (!is_null($this->port)) {
- if ($this->port < 1 || $this->port > 65535) {
- $this->port = null;
- }
- }
-
- // validate path
- $segments_encoder = new HTMLPurifier_PercentEncoder($chars_pchar . '/');
- if (!is_null($this->host)) { // this catches $this->host === ''
- // path-abempty (hier and relative)
- // http://www.example.com/my/path
- // //www.example.com/my/path (looks odd, but works, and
- // recognized by most browsers)
- // (this set is valid or invalid on a scheme by scheme
- // basis, so we'll deal with it later)
- // file:///my/path
- // ///my/path
- $this->path = $segments_encoder->encode($this->path);
- } elseif ($this->path !== '') {
- if ($this->path[0] === '/') {
- // path-absolute (hier and relative)
- // http:/my/path
- // /my/path
- if (strlen($this->path) >= 2 && $this->path[1] === '/') {
- // This could happen if both the host gets stripped
- // out
- // http://my/path
- // //my/path
- $this->path = '';
- } else {
- $this->path = $segments_encoder->encode($this->path);
- }
- } elseif (!is_null($this->scheme)) {
- // path-rootless (hier)
- // http:my/path
- // Short circuit evaluation means we don't need to check nz
- $this->path = $segments_encoder->encode($this->path);
- } else {
- // path-noscheme (relative)
- // my/path
- // (once again, not checking nz)
- $segment_nc_encoder = new HTMLPurifier_PercentEncoder($chars_sub_delims . '@');
- $c = strpos($this->path, '/');
- if ($c !== false) {
- $this->path =
- $segment_nc_encoder->encode(substr($this->path, 0, $c)) .
- $segments_encoder->encode(substr($this->path, $c));
- } else {
- $this->path = $segment_nc_encoder->encode($this->path);
- }
- }
- } else {
- // path-empty (hier and relative)
- $this->path = ''; // just to be safe
- }
-
- // qf = query and fragment
- $qf_encoder = new HTMLPurifier_PercentEncoder($chars_pchar . '/?');
-
- if (!is_null($this->query)) {
- $this->query = $qf_encoder->encode($this->query);
- }
-
- if (!is_null($this->fragment)) {
- $this->fragment = $qf_encoder->encode($this->fragment);
- }
- return true;
- }
-
- /**
- * Convert URI back to string
- * @return string URI appropriate for output
- */
- public function toString()
- {
- // reconstruct authority
- $authority = null;
- // there is a rendering difference between a null authority
- // (http:foo-bar) and an empty string authority
- // (http:///foo-bar).
- if (!is_null($this->host)) {
- $authority = '';
- if (!is_null($this->userinfo)) {
- $authority .= $this->userinfo . '@';
- }
- $authority .= $this->host;
- if (!is_null($this->port)) {
- $authority .= ':' . $this->port;
- }
- }
-
- // Reconstruct the result
- // One might wonder about parsing quirks from browsers after
- // this reconstruction. Unfortunately, parsing behavior depends
- // on what *scheme* was employed (file:///foo is handled *very*
- // differently than http:///foo), so unfortunately we have to
- // defer to the schemes to do the right thing.
- $result = '';
- if (!is_null($this->scheme)) {
- $result .= $this->scheme . ':';
- }
- if (!is_null($authority)) {
- $result .= '//' . $authority;
- }
- $result .= $this->path;
- if (!is_null($this->query)) {
- $result .= '?' . $this->query;
- }
- if (!is_null($this->fragment)) {
- $result .= '#' . $this->fragment;
- }
-
- return $result;
- }
-
- /**
- * Returns true if this URL might be considered a 'local' URL given
- * the current context. This is true when the host is null, or
- * when it matches the host supplied to the configuration.
- *
- * Note that this does not do any scheme checking, so it is mostly
- * only appropriate for metadata that doesn't care about protocol
- * security. isBenign is probably what you actually want.
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool
- */
- public function isLocal($config, $context)
- {
- if ($this->host === null) {
- return true;
- }
- $uri_def = $config->getDefinition('URI');
- if ($uri_def->host === $this->host) {
- return true;
- }
- return false;
- }
-
- /**
- * Returns true if this URL should be considered a 'benign' URL,
- * that is:
- *
- * - It is a local URL (isLocal), and
- * - It has a equal or better level of security
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool
- */
- public function isBenign($config, $context)
- {
- if (!$this->isLocal($config, $context)) {
- return false;
- }
-
- $scheme_obj = $this->getSchemeObj($config, $context);
- if (!$scheme_obj) {
- return false;
- } // conservative approach
-
- $current_scheme_obj = $config->getDefinition('URI')->getDefaultScheme($config, $context);
- if ($current_scheme_obj->secure) {
- if (!$scheme_obj->secure) {
- return false;
- }
- }
- return true;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIDefinition.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIDefinition.php
deleted file mode 100644
index e0bd8bcc..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIDefinition.php
+++ /dev/null
@@ -1,112 +0,0 @@
-registerFilter(new HTMLPurifier_URIFilter_DisableExternal());
- $this->registerFilter(new HTMLPurifier_URIFilter_DisableExternalResources());
- $this->registerFilter(new HTMLPurifier_URIFilter_DisableResources());
- $this->registerFilter(new HTMLPurifier_URIFilter_HostBlacklist());
- $this->registerFilter(new HTMLPurifier_URIFilter_SafeIframe());
- $this->registerFilter(new HTMLPurifier_URIFilter_MakeAbsolute());
- $this->registerFilter(new HTMLPurifier_URIFilter_Munge());
- }
-
- public function registerFilter($filter)
- {
- $this->registeredFilters[$filter->name] = $filter;
- }
-
- public function addFilter($filter, $config)
- {
- $r = $filter->prepare($config);
- if ($r === false) return; // null is ok, for backwards compat
- if ($filter->post) {
- $this->postFilters[$filter->name] = $filter;
- } else {
- $this->filters[$filter->name] = $filter;
- }
- }
-
- protected function doSetup($config)
- {
- $this->setupMemberVariables($config);
- $this->setupFilters($config);
- }
-
- protected function setupFilters($config)
- {
- foreach ($this->registeredFilters as $name => $filter) {
- if ($filter->always_load) {
- $this->addFilter($filter, $config);
- } else {
- $conf = $config->get('URI.' . $name);
- if ($conf !== false && $conf !== null) {
- $this->addFilter($filter, $config);
- }
- }
- }
- unset($this->registeredFilters);
- }
-
- protected function setupMemberVariables($config)
- {
- $this->host = $config->get('URI.Host');
- $base_uri = $config->get('URI.Base');
- if (!is_null($base_uri)) {
- $parser = new HTMLPurifier_URIParser();
- $this->base = $parser->parse($base_uri);
- $this->defaultScheme = $this->base->scheme;
- if (is_null($this->host)) $this->host = $this->base->host;
- }
- if (is_null($this->defaultScheme)) $this->defaultScheme = $config->get('URI.DefaultScheme');
- }
-
- public function getDefaultScheme($config, $context)
- {
- return HTMLPurifier_URISchemeRegistry::instance()->getScheme($this->defaultScheme, $config, $context);
- }
-
- public function filter(&$uri, $config, $context)
- {
- foreach ($this->filters as $name => $f) {
- $result = $f->filter($uri, $config, $context);
- if (!$result) return false;
- }
- return true;
- }
-
- public function postFilter(&$uri, $config, $context)
- {
- foreach ($this->postFilters as $name => $f) {
- $result = $f->filter($uri, $config, $context);
- if (!$result) return false;
- }
- return true;
- }
-
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter.php
deleted file mode 100644
index 09724e9f..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter.php
+++ /dev/null
@@ -1,74 +0,0 @@
-getDefinition('URI')->host;
- if ($our_host !== null) {
- $this->ourHostParts = array_reverse(explode('.', $our_host));
- }
- }
-
- /**
- * @param HTMLPurifier_URI $uri Reference
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool
- */
- public function filter(&$uri, $config, $context)
- {
- if (is_null($uri->host)) {
- return true;
- }
- if ($this->ourHostParts === false) {
- return false;
- }
- $host_parts = array_reverse(explode('.', $uri->host));
- foreach ($this->ourHostParts as $i => $x) {
- if (!isset($host_parts[$i])) {
- return false;
- }
- if ($host_parts[$i] != $this->ourHostParts[$i]) {
- return false;
- }
- }
- return true;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/DisableExternalResources.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/DisableExternalResources.php
deleted file mode 100644
index c6562169..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/DisableExternalResources.php
+++ /dev/null
@@ -1,25 +0,0 @@
-get('EmbeddedURI', true)) {
- return true;
- }
- return parent::filter($uri, $config, $context);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/DisableResources.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/DisableResources.php
deleted file mode 100644
index d5c412c4..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/DisableResources.php
+++ /dev/null
@@ -1,22 +0,0 @@
-get('EmbeddedURI', true);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/HostBlacklist.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/HostBlacklist.php
deleted file mode 100644
index a6645c17..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/HostBlacklist.php
+++ /dev/null
@@ -1,46 +0,0 @@
-blacklist = $config->get('URI.HostBlacklist');
- return true;
- }
-
- /**
- * @param HTMLPurifier_URI $uri
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool
- */
- public function filter(&$uri, $config, $context)
- {
- foreach ($this->blacklist as $blacklisted_host_fragment) {
- if (strpos($uri->host, $blacklisted_host_fragment) !== false) {
- return false;
- }
- }
- return true;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/MakeAbsolute.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/MakeAbsolute.php
deleted file mode 100644
index c507bbff..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/MakeAbsolute.php
+++ /dev/null
@@ -1,158 +0,0 @@
-getDefinition('URI');
- $this->base = $def->base;
- if (is_null($this->base)) {
- trigger_error(
- 'URI.MakeAbsolute is being ignored due to lack of ' .
- 'value for URI.Base configuration',
- E_USER_WARNING
- );
- return false;
- }
- $this->base->fragment = null; // fragment is invalid for base URI
- $stack = explode('/', $this->base->path);
- array_pop($stack); // discard last segment
- $stack = $this->_collapseStack($stack); // do pre-parsing
- $this->basePathStack = $stack;
- return true;
- }
-
- /**
- * @param HTMLPurifier_URI $uri
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool
- */
- public function filter(&$uri, $config, $context)
- {
- if (is_null($this->base)) {
- return true;
- } // abort early
- if ($uri->path === '' && is_null($uri->scheme) &&
- is_null($uri->host) && is_null($uri->query) && is_null($uri->fragment)) {
- // reference to current document
- $uri = clone $this->base;
- return true;
- }
- if (!is_null($uri->scheme)) {
- // absolute URI already: don't change
- if (!is_null($uri->host)) {
- return true;
- }
- $scheme_obj = $uri->getSchemeObj($config, $context);
- if (!$scheme_obj) {
- // scheme not recognized
- return false;
- }
- if (!$scheme_obj->hierarchical) {
- // non-hierarchal URI with explicit scheme, don't change
- return true;
- }
- // special case: had a scheme but always is hierarchical and had no authority
- }
- if (!is_null($uri->host)) {
- // network path, don't bother
- return true;
- }
- if ($uri->path === '') {
- $uri->path = $this->base->path;
- } elseif ($uri->path[0] !== '/') {
- // relative path, needs more complicated processing
- $stack = explode('/', $uri->path);
- $new_stack = array_merge($this->basePathStack, $stack);
- if ($new_stack[0] !== '' && !is_null($this->base->host)) {
- array_unshift($new_stack, '');
- }
- $new_stack = $this->_collapseStack($new_stack);
- $uri->path = implode('/', $new_stack);
- } else {
- // absolute path, but still we should collapse
- $uri->path = implode('/', $this->_collapseStack(explode('/', $uri->path)));
- }
- // re-combine
- $uri->scheme = $this->base->scheme;
- if (is_null($uri->userinfo)) {
- $uri->userinfo = $this->base->userinfo;
- }
- if (is_null($uri->host)) {
- $uri->host = $this->base->host;
- }
- if (is_null($uri->port)) {
- $uri->port = $this->base->port;
- }
- return true;
- }
-
- /**
- * Resolve dots and double-dots in a path stack
- * @param array $stack
- * @return array
- */
- private function _collapseStack($stack)
- {
- $result = array();
- $is_folder = false;
- for ($i = 0; isset($stack[$i]); $i++) {
- $is_folder = false;
- // absorb an internally duplicated slash
- if ($stack[$i] == '' && $i && isset($stack[$i + 1])) {
- continue;
- }
- if ($stack[$i] == '..') {
- if (!empty($result)) {
- $segment = array_pop($result);
- if ($segment === '' && empty($result)) {
- // error case: attempted to back out too far:
- // restore the leading slash
- $result[] = '';
- } elseif ($segment === '..') {
- $result[] = '..'; // cannot remove .. with ..
- }
- } else {
- // relative path, preserve the double-dots
- $result[] = '..';
- }
- $is_folder = true;
- continue;
- }
- if ($stack[$i] == '.') {
- // silently absorb
- $is_folder = true;
- continue;
- }
- $result[] = $stack[$i];
- }
- if ($is_folder) {
- $result[] = '';
- }
- return $result;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/Munge.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/Munge.php
deleted file mode 100644
index 6e03315a..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/Munge.php
+++ /dev/null
@@ -1,115 +0,0 @@
-target = $config->get('URI.' . $this->name);
- $this->parser = new HTMLPurifier_URIParser();
- $this->doEmbed = $config->get('URI.MungeResources');
- $this->secretKey = $config->get('URI.MungeSecretKey');
- if ($this->secretKey && !function_exists('hash_hmac')) {
- throw new Exception("Cannot use %URI.MungeSecretKey without hash_hmac support.");
- }
- return true;
- }
-
- /**
- * @param HTMLPurifier_URI $uri
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool
- */
- public function filter(&$uri, $config, $context)
- {
- if ($context->get('EmbeddedURI', true) && !$this->doEmbed) {
- return true;
- }
-
- $scheme_obj = $uri->getSchemeObj($config, $context);
- if (!$scheme_obj) {
- return true;
- } // ignore unknown schemes, maybe another postfilter did it
- if (!$scheme_obj->browsable) {
- return true;
- } // ignore non-browseable schemes, since we can't munge those in a reasonable way
- if ($uri->isBenign($config, $context)) {
- return true;
- } // don't redirect if a benign URL
-
- $this->makeReplace($uri, $config, $context);
- $this->replace = array_map('rawurlencode', $this->replace);
-
- $new_uri = strtr($this->target, $this->replace);
- $new_uri = $this->parser->parse($new_uri);
- // don't redirect if the target host is the same as the
- // starting host
- if ($uri->host === $new_uri->host) {
- return true;
- }
- $uri = $new_uri; // overwrite
- return true;
- }
-
- /**
- * @param HTMLPurifier_URI $uri
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- */
- protected function makeReplace($uri, $config, $context)
- {
- $string = $uri->toString();
- // always available
- $this->replace['%s'] = $string;
- $this->replace['%r'] = $context->get('EmbeddedURI', true);
- $token = $context->get('CurrentToken', true);
- $this->replace['%n'] = $token ? $token->name : null;
- $this->replace['%m'] = $context->get('CurrentAttr', true);
- $this->replace['%p'] = $context->get('CurrentCSSProperty', true);
- // not always available
- if ($this->secretKey) {
- $this->replace['%t'] = hash_hmac("sha256", $string, $this->secretKey);
- }
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/SafeIframe.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/SafeIframe.php
deleted file mode 100644
index f609c47a..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/SafeIframe.php
+++ /dev/null
@@ -1,68 +0,0 @@
-regexp = $config->get('URI.SafeIframeRegexp');
- return true;
- }
-
- /**
- * @param HTMLPurifier_URI $uri
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool
- */
- public function filter(&$uri, $config, $context)
- {
- // check if filter not applicable
- if (!$config->get('HTML.SafeIframe')) {
- return true;
- }
- // check if the filter should actually trigger
- if (!$context->get('EmbeddedURI', true)) {
- return true;
- }
- $token = $context->get('CurrentToken', true);
- if (!($token && $token->name == 'iframe')) {
- return true;
- }
- // check if we actually have some whitelists enabled
- if ($this->regexp === null) {
- return false;
- }
- // actually check the whitelists
- return preg_match($this->regexp, $uri->toString());
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIParser.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIParser.php
deleted file mode 100644
index 0e7381a0..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIParser.php
+++ /dev/null
@@ -1,71 +0,0 @@
-percentEncoder = new HTMLPurifier_PercentEncoder();
- }
-
- /**
- * Parses a URI.
- * @param $uri string URI to parse
- * @return HTMLPurifier_URI representation of URI. This representation has
- * not been validated yet and may not conform to RFC.
- */
- public function parse($uri)
- {
- $uri = $this->percentEncoder->normalize($uri);
-
- // Regexp is as per Appendix B.
- // Note that ["<>] are an addition to the RFC's recommended
- // characters, because they represent external delimeters.
- $r_URI = '!'.
- '(([a-zA-Z0-9\.\+\-]+):)?'. // 2. Scheme
- '(//([^/?#"<>]*))?'. // 4. Authority
- '([^?#"<>]*)'. // 5. Path
- '(\?([^#"<>]*))?'. // 7. Query
- '(#([^"<>]*))?'. // 8. Fragment
- '!';
-
- $matches = array();
- $result = preg_match($r_URI, $uri, $matches);
-
- if (!$result) return false; // *really* invalid URI
-
- // seperate out parts
- $scheme = !empty($matches[1]) ? $matches[2] : null;
- $authority = !empty($matches[3]) ? $matches[4] : null;
- $path = $matches[5]; // always present, can be empty
- $query = !empty($matches[6]) ? $matches[7] : null;
- $fragment = !empty($matches[8]) ? $matches[9] : null;
-
- // further parse authority
- if ($authority !== null) {
- $r_authority = "/^((.+?)@)?(\[[^\]]+\]|[^:]*)(:(\d*))?/";
- $matches = array();
- preg_match($r_authority, $authority, $matches);
- $userinfo = !empty($matches[1]) ? $matches[2] : null;
- $host = !empty($matches[3]) ? $matches[3] : '';
- $port = !empty($matches[4]) ? (int) $matches[5] : null;
- } else {
- $port = $host = $userinfo = null;
- }
-
- return new HTMLPurifier_URI(
- $scheme, $userinfo, $host, $port, $path, $query, $fragment);
- }
-
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme.php
deleted file mode 100644
index fe9e82cf..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme.php
+++ /dev/null
@@ -1,102 +0,0 @@
-, resolves edge cases
- * with making relative URIs absolute
- * @type bool
- */
- public $hierarchical = false;
-
- /**
- * Whether or not the URI may omit a hostname when the scheme is
- * explicitly specified, ala file:///path/to/file. As of writing,
- * 'file' is the only scheme that browsers support his properly.
- * @type bool
- */
- public $may_omit_host = false;
-
- /**
- * Validates the components of a URI for a specific scheme.
- * @param HTMLPurifier_URI $uri Reference to a HTMLPurifier_URI object
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool success or failure
- */
- abstract public function doValidate(&$uri, $config, $context);
-
- /**
- * Public interface for validating components of a URI. Performs a
- * bunch of default actions. Don't overload this method.
- * @param HTMLPurifier_URI $uri Reference to a HTMLPurifier_URI object
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool success or failure
- */
- public function validate(&$uri, $config, $context)
- {
- if ($this->default_port == $uri->port) {
- $uri->port = null;
- }
- // kludge: browsers do funny things when the scheme but not the
- // authority is set
- if (!$this->may_omit_host &&
- // if the scheme is present, a missing host is always in error
- (!is_null($uri->scheme) && ($uri->host === '' || is_null($uri->host))) ||
- // if the scheme is not present, a *blank* host is in error,
- // since this translates into '///path' which most browsers
- // interpret as being 'http://path'.
- (is_null($uri->scheme) && $uri->host === '')
- ) {
- do {
- if (is_null($uri->scheme)) {
- if (substr($uri->path, 0, 2) != '//') {
- $uri->host = null;
- break;
- }
- // URI is '////path', so we cannot nullify the
- // host to preserve semantics. Try expanding the
- // hostname instead (fall through)
- }
- // first see if we can manually insert a hostname
- $host = $config->get('URI.Host');
- if (!is_null($host)) {
- $uri->host = $host;
- } else {
- // we can't do anything sensible, reject the URL.
- return false;
- }
- } while (false);
- }
- return $this->doValidate($uri, $config, $context);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/data.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/data.php
deleted file mode 100644
index 41c49d55..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/data.php
+++ /dev/null
@@ -1,136 +0,0 @@
- true,
- 'image/gif' => true,
- 'image/png' => true,
- );
- // this is actually irrelevant since we only write out the path
- // component
- /**
- * @type bool
- */
- public $may_omit_host = true;
-
- /**
- * @param HTMLPurifier_URI $uri
- * @param HTMLPurifier_Config $config
- * @param HTMLPurifier_Context $context
- * @return bool
- */
- public function doValidate(&$uri, $config, $context)
- {
- $result = explode(',', $uri->path, 2);
- $is_base64 = false;
- $charset = null;
- $content_type = null;
- if (count($result) == 2) {
- list($metadata, $data) = $result;
- // do some legwork on the metadata
- $metas = explode(';', $metadata);
- while (!empty($metas)) {
- $cur = array_shift($metas);
- if ($cur == 'base64') {
- $is_base64 = true;
- break;
- }
- if (substr($cur, 0, 8) == 'charset=') {
- // doesn't match if there are arbitrary spaces, but
- // whatever dude
- if ($charset !== null) {
- continue;
- } // garbage
- $charset = substr($cur, 8); // not used
- } else {
- if ($content_type !== null) {
- continue;
- } // garbage
- $content_type = $cur;
- }
- }
- } else {
- $data = $result[0];
- }
- if ($content_type !== null && empty($this->allowed_types[$content_type])) {
- return false;
- }
- if ($charset !== null) {
- // error; we don't allow plaintext stuff
- $charset = null;
- }
- $data = rawurldecode($data);
- if ($is_base64) {
- $raw_data = base64_decode($data);
- } else {
- $raw_data = $data;
- }
- if ( strlen($raw_data) < 12 ) {
- // error; exif_imagetype throws exception with small files,
- // and this likely indicates a corrupt URI/failed parse anyway
- return false;
- }
- // XXX probably want to refactor this into a general mechanism
- // for filtering arbitrary content types
- if (function_exists('sys_get_temp_dir')) {
- $file = tempnam(sys_get_temp_dir(), "");
- } else {
- $file = tempnam("/tmp", "");
- }
- file_put_contents($file, $raw_data);
- if (function_exists('exif_imagetype')) {
- $image_code = exif_imagetype($file);
- unlink($file);
- } elseif (function_exists('getimagesize')) {
- set_error_handler(array($this, 'muteErrorHandler'));
- $info = getimagesize($file);
- restore_error_handler();
- unlink($file);
- if ($info == false) {
- return false;
- }
- $image_code = $info[2];
- } else {
- trigger_error("could not find exif_imagetype or getimagesize functions", E_USER_ERROR);
- }
- $real_content_type = image_type_to_mime_type($image_code);
- if ($real_content_type != $content_type) {
- // we're nice guys; if the content type is something else we
- // support, change it over
- if (empty($this->allowed_types[$real_content_type])) {
- return false;
- }
- $content_type = $real_content_type;
- }
- // ok, it's kosher, rewrite what we need
- $uri->userinfo = null;
- $uri->host = null;
- $uri->port = null;
- $uri->fragment = null;
- $uri->query = null;
- $uri->path = "$content_type;base64," . base64_encode($raw_data);
- return true;
- }
-
- /**
- * @param int $errno
- * @param string $errstr
- */
- public function muteErrorHandler($errno, $errstr)
- {
- }
-}
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/file.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/file.php
deleted file mode 100644
index 215be4ba..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/file.php
+++ /dev/null
@@ -1,44 +0,0 @@
-userinfo = null;
- // file:// makes no provisions for accessing the resource
- $uri->port = null;
- // While it seems to work on Firefox, the querystring has
- // no possible effect and is thus stripped.
- $uri->query = null;
- return true;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/ftp.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/ftp.php
deleted file mode 100644
index 1eb43ee5..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/ftp.php
+++ /dev/null
@@ -1,58 +0,0 @@
-query = null;
-
- // typecode check
- $semicolon_pos = strrpos($uri->path, ';'); // reverse
- if ($semicolon_pos !== false) {
- $type = substr($uri->path, $semicolon_pos + 1); // no semicolon
- $uri->path = substr($uri->path, 0, $semicolon_pos);
- $type_ret = '';
- if (strpos($type, '=') !== false) {
- // figure out whether or not the declaration is correct
- list($key, $typecode) = explode('=', $type, 2);
- if ($key !== 'type') {
- // invalid key, tack it back on encoded
- $uri->path .= '%3B' . $type;
- } elseif ($typecode === 'a' || $typecode === 'i' || $typecode === 'd') {
- $type_ret = ";type=$typecode";
- }
- } else {
- $uri->path .= '%3B' . $type;
- }
- $uri->path = str_replace(';', '%3B', $uri->path);
- $uri->path .= $type_ret;
- }
- return true;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/http.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/http.php
deleted file mode 100644
index ce69ec43..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/http.php
+++ /dev/null
@@ -1,36 +0,0 @@
-userinfo = null;
- return true;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/https.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/https.php
deleted file mode 100644
index 0e96882d..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/https.php
+++ /dev/null
@@ -1,18 +0,0 @@
-userinfo = null;
- $uri->host = null;
- $uri->port = null;
- // we need to validate path against RFC 2368's addr-spec
- return true;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/news.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/news.php
deleted file mode 100644
index 7490927d..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/news.php
+++ /dev/null
@@ -1,35 +0,0 @@
-userinfo = null;
- $uri->host = null;
- $uri->port = null;
- $uri->query = null;
- // typecode check needed on path
- return true;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/nntp.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/nntp.php
deleted file mode 100644
index f211d715..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/nntp.php
+++ /dev/null
@@ -1,32 +0,0 @@
-userinfo = null;
- $uri->query = null;
- return true;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/tel.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/tel.php
deleted file mode 100644
index 8cd19335..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/tel.php
+++ /dev/null
@@ -1,46 +0,0 @@
-userinfo = null;
- $uri->host = null;
- $uri->port = null;
-
- // Delete all non-numeric characters, non-x characters
- // from phone number, EXCEPT for a leading plus sign.
- $uri->path = preg_replace('/(?!^\+)[^\dx]/', '',
- // Normalize e(x)tension to lower-case
- str_replace('X', 'x', $uri->path));
-
- return true;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URISchemeRegistry.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URISchemeRegistry.php
deleted file mode 100644
index 4ac8a0b7..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URISchemeRegistry.php
+++ /dev/null
@@ -1,81 +0,0 @@
-get('URI.AllowedSchemes');
- if (!$config->get('URI.OverrideAllowedSchemes') &&
- !isset($allowed_schemes[$scheme])
- ) {
- return;
- }
-
- if (isset($this->schemes[$scheme])) {
- return $this->schemes[$scheme];
- }
- if (!isset($allowed_schemes[$scheme])) {
- return;
- }
-
- $class = 'HTMLPurifier_URIScheme_' . $scheme;
- if (!class_exists($class)) {
- return;
- }
- $this->schemes[$scheme] = new $class();
- return $this->schemes[$scheme];
- }
-
- /**
- * Registers a custom scheme to the cache, bypassing reflection.
- * @param string $scheme Scheme name
- * @param HTMLPurifier_URIScheme $scheme_obj
- */
- public function register($scheme, $scheme_obj)
- {
- $this->schemes[$scheme] = $scheme_obj;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/UnitConverter.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/UnitConverter.php
deleted file mode 100644
index 166f3bf3..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/UnitConverter.php
+++ /dev/null
@@ -1,307 +0,0 @@
- array(
- 'px' => 3, // This is as per CSS 2.1 and Firefox. Your mileage may vary
- 'pt' => 4,
- 'pc' => 48,
- 'in' => 288,
- self::METRIC => array('pt', '0.352777778', 'mm'),
- ),
- self::METRIC => array(
- 'mm' => 1,
- 'cm' => 10,
- self::ENGLISH => array('mm', '2.83464567', 'pt'),
- ),
- );
-
- /**
- * Minimum bcmath precision for output.
- * @type int
- */
- protected $outputPrecision;
-
- /**
- * Bcmath precision for internal calculations.
- * @type int
- */
- protected $internalPrecision;
-
- /**
- * Whether or not BCMath is available.
- * @type bool
- */
- private $bcmath;
-
- public function __construct($output_precision = 4, $internal_precision = 10, $force_no_bcmath = false)
- {
- $this->outputPrecision = $output_precision;
- $this->internalPrecision = $internal_precision;
- $this->bcmath = !$force_no_bcmath && function_exists('bcmul');
- }
-
- /**
- * Converts a length object of one unit into another unit.
- * @param HTMLPurifier_Length $length
- * Instance of HTMLPurifier_Length to convert. You must validate()
- * it before passing it here!
- * @param string $to_unit
- * Unit to convert to.
- * @return HTMLPurifier_Length|bool
- * @note
- * About precision: This conversion function pays very special
- * attention to the incoming precision of values and attempts
- * to maintain a number of significant figure. Results are
- * fairly accurate up to nine digits. Some caveats:
- * - If a number is zero-padded as a result of this significant
- * figure tracking, the zeroes will be eliminated.
- * - If a number contains less than four sigfigs ($outputPrecision)
- * and this causes some decimals to be excluded, those
- * decimals will be added on.
- */
- public function convert($length, $to_unit)
- {
- if (!$length->isValid()) {
- return false;
- }
-
- $n = $length->getN();
- $unit = $length->getUnit();
-
- if ($n === '0' || $unit === false) {
- return new HTMLPurifier_Length('0', false);
- }
-
- $state = $dest_state = false;
- foreach (self::$units as $k => $x) {
- if (isset($x[$unit])) {
- $state = $k;
- }
- if (isset($x[$to_unit])) {
- $dest_state = $k;
- }
- }
- if (!$state || !$dest_state) {
- return false;
- }
-
- // Some calculations about the initial precision of the number;
- // this will be useful when we need to do final rounding.
- $sigfigs = $this->getSigFigs($n);
- if ($sigfigs < $this->outputPrecision) {
- $sigfigs = $this->outputPrecision;
- }
-
- // BCMath's internal precision deals only with decimals. Use
- // our default if the initial number has no decimals, or increase
- // it by how ever many decimals, thus, the number of guard digits
- // will always be greater than or equal to internalPrecision.
- $log = (int)floor(log(abs($n), 10));
- $cp = ($log < 0) ? $this->internalPrecision - $log : $this->internalPrecision; // internal precision
-
- for ($i = 0; $i < 2; $i++) {
-
- // Determine what unit IN THIS SYSTEM we need to convert to
- if ($dest_state === $state) {
- // Simple conversion
- $dest_unit = $to_unit;
- } else {
- // Convert to the smallest unit, pending a system shift
- $dest_unit = self::$units[$state][$dest_state][0];
- }
-
- // Do the conversion if necessary
- if ($dest_unit !== $unit) {
- $factor = $this->div(self::$units[$state][$unit], self::$units[$state][$dest_unit], $cp);
- $n = $this->mul($n, $factor, $cp);
- $unit = $dest_unit;
- }
-
- // Output was zero, so bail out early. Shouldn't ever happen.
- if ($n === '') {
- $n = '0';
- $unit = $to_unit;
- break;
- }
-
- // It was a simple conversion, so bail out
- if ($dest_state === $state) {
- break;
- }
-
- if ($i !== 0) {
- // Conversion failed! Apparently, the system we forwarded
- // to didn't have this unit. This should never happen!
- return false;
- }
-
- // Pre-condition: $i == 0
-
- // Perform conversion to next system of units
- $n = $this->mul($n, self::$units[$state][$dest_state][1], $cp);
- $unit = self::$units[$state][$dest_state][2];
- $state = $dest_state;
-
- // One more loop around to convert the unit in the new system.
-
- }
-
- // Post-condition: $unit == $to_unit
- if ($unit !== $to_unit) {
- return false;
- }
-
- // Useful for debugging:
- //echo "n";
- //echo "$n\nsigfigs = $sigfigs\nnew_log = $new_log\nlog = $log\nrp = $rp\n \n";
-
- $n = $this->round($n, $sigfigs);
- if (strpos($n, '.') !== false) {
- $n = rtrim($n, '0');
- }
- $n = rtrim($n, '.');
-
- return new HTMLPurifier_Length($n, $unit);
- }
-
- /**
- * Returns the number of significant figures in a string number.
- * @param string $n Decimal number
- * @return int number of sigfigs
- */
- public function getSigFigs($n)
- {
- $n = ltrim($n, '0+-');
- $dp = strpos($n, '.'); // decimal position
- if ($dp === false) {
- $sigfigs = strlen(rtrim($n, '0'));
- } else {
- $sigfigs = strlen(ltrim($n, '0.')); // eliminate extra decimal character
- if ($dp !== 0) {
- $sigfigs--;
- }
- }
- return $sigfigs;
- }
-
- /**
- * Adds two numbers, using arbitrary precision when available.
- * @param string $s1
- * @param string $s2
- * @param int $scale
- * @return string
- */
- private function add($s1, $s2, $scale)
- {
- if ($this->bcmath) {
- return bcadd($s1, $s2, $scale);
- } else {
- return $this->scale((float)$s1 + (float)$s2, $scale);
- }
- }
-
- /**
- * Multiples two numbers, using arbitrary precision when available.
- * @param string $s1
- * @param string $s2
- * @param int $scale
- * @return string
- */
- private function mul($s1, $s2, $scale)
- {
- if ($this->bcmath) {
- return bcmul($s1, $s2, $scale);
- } else {
- return $this->scale((float)$s1 * (float)$s2, $scale);
- }
- }
-
- /**
- * Divides two numbers, using arbitrary precision when available.
- * @param string $s1
- * @param string $s2
- * @param int $scale
- * @return string
- */
- private function div($s1, $s2, $scale)
- {
- if ($this->bcmath) {
- return bcdiv($s1, $s2, $scale);
- } else {
- return $this->scale((float)$s1 / (float)$s2, $scale);
- }
- }
-
- /**
- * Rounds a number according to the number of sigfigs it should have,
- * using arbitrary precision when available.
- * @param float $n
- * @param int $sigfigs
- * @return string
- */
- private function round($n, $sigfigs)
- {
- $new_log = (int)floor(log(abs($n), 10)); // Number of digits left of decimal - 1
- $rp = $sigfigs - $new_log - 1; // Number of decimal places needed
- $neg = $n < 0 ? '-' : ''; // Negative sign
- if ($this->bcmath) {
- if ($rp >= 0) {
- $n = bcadd($n, $neg . '0.' . str_repeat('0', $rp) . '5', $rp + 1);
- $n = bcdiv($n, '1', $rp);
- } else {
- // This algorithm partially depends on the standardized
- // form of numbers that comes out of bcmath.
- $n = bcadd($n, $neg . '5' . str_repeat('0', $new_log - $sigfigs), 0);
- $n = substr($n, 0, $sigfigs + strlen($neg)) . str_repeat('0', $new_log - $sigfigs + 1);
- }
- return $n;
- } else {
- return $this->scale(round($n, $sigfigs - $new_log - 1), $rp + 1);
- }
- }
-
- /**
- * Scales a float to $scale digits right of decimal point, like BCMath.
- * @param float $r
- * @param int $scale
- * @return string
- */
- private function scale($r, $scale)
- {
- if ($scale < 0) {
- // The f sprintf type doesn't support negative numbers, so we
- // need to cludge things manually. First get the string.
- $r = sprintf('%.0f', (float)$r);
- // Due to floating point precision loss, $r will more than likely
- // look something like 4652999999999.9234. We grab one more digit
- // than we need to precise from $r and then use that to round
- // appropriately.
- $precise = (string)round(substr($r, 0, strlen($r) + $scale), -1);
- // Now we return it, truncating the zero that was rounded off.
- return substr($precise, 0, -1) . str_repeat('0', -$scale + 1);
- }
- return sprintf('%.' . $scale . 'f', (float)$r);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/VarParser.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/VarParser.php
deleted file mode 100644
index 0c97c828..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/VarParser.php
+++ /dev/null
@@ -1,198 +0,0 @@
- self::C_STRING,
- 'istring' => self::ISTRING,
- 'text' => self::TEXT,
- 'itext' => self::ITEXT,
- 'int' => self::C_INT,
- 'float' => self::C_FLOAT,
- 'bool' => self::C_BOOL,
- 'lookup' => self::LOOKUP,
- 'list' => self::ALIST,
- 'hash' => self::HASH,
- 'mixed' => self::C_MIXED
- );
-
- /**
- * Lookup table of types that are string, and can have aliases or
- * allowed value lists.
- */
- public static $stringTypes = array(
- self::C_STRING => true,
- self::ISTRING => true,
- self::TEXT => true,
- self::ITEXT => true,
- );
-
- /**
- * Validate a variable according to type.
- * It may return NULL as a valid type if $allow_null is true.
- *
- * @param mixed $var Variable to validate
- * @param int $type Type of variable, see HTMLPurifier_VarParser->types
- * @param bool $allow_null Whether or not to permit null as a value
- * @return string Validated and type-coerced variable
- * @throws HTMLPurifier_VarParserException
- */
- final public function parse($var, $type, $allow_null = false)
- {
- if (is_string($type)) {
- if (!isset(HTMLPurifier_VarParser::$types[$type])) {
- throw new HTMLPurifier_VarParserException("Invalid type '$type'");
- } else {
- $type = HTMLPurifier_VarParser::$types[$type];
- }
- }
- $var = $this->parseImplementation($var, $type, $allow_null);
- if ($allow_null && $var === null) {
- return null;
- }
- // These are basic checks, to make sure nothing horribly wrong
- // happened in our implementations.
- switch ($type) {
- case (self::C_STRING):
- case (self::ISTRING):
- case (self::TEXT):
- case (self::ITEXT):
- if (!is_string($var)) {
- break;
- }
- if ($type == self::ISTRING || $type == self::ITEXT) {
- $var = strtolower($var);
- }
- return $var;
- case (self::C_INT):
- if (!is_int($var)) {
- break;
- }
- return $var;
- case (self::C_FLOAT):
- if (!is_float($var)) {
- break;
- }
- return $var;
- case (self::C_BOOL):
- if (!is_bool($var)) {
- break;
- }
- return $var;
- case (self::LOOKUP):
- case (self::ALIST):
- case (self::HASH):
- if (!is_array($var)) {
- break;
- }
- if ($type === self::LOOKUP) {
- foreach ($var as $k) {
- if ($k !== true) {
- $this->error('Lookup table contains value other than true');
- }
- }
- } elseif ($type === self::ALIST) {
- $keys = array_keys($var);
- if (array_keys($keys) !== $keys) {
- $this->error('Indices for list are not uniform');
- }
- }
- return $var;
- case (self::C_MIXED):
- return $var;
- default:
- $this->errorInconsistent(get_class($this), $type);
- }
- $this->errorGeneric($var, $type);
- }
-
- /**
- * Actually implements the parsing. Base implementation does not
- * do anything to $var. Subclasses should overload this!
- * @param mixed $var
- * @param int $type
- * @param bool $allow_null
- * @return string
- */
- protected function parseImplementation($var, $type, $allow_null)
- {
- return $var;
- }
-
- /**
- * Throws an exception.
- * @throws HTMLPurifier_VarParserException
- */
- protected function error($msg)
- {
- throw new HTMLPurifier_VarParserException($msg);
- }
-
- /**
- * Throws an inconsistency exception.
- * @note This should not ever be called. It would be called if we
- * extend the allowed values of HTMLPurifier_VarParser without
- * updating subclasses.
- * @param string $class
- * @param int $type
- * @throws HTMLPurifier_Exception
- */
- protected function errorInconsistent($class, $type)
- {
- throw new HTMLPurifier_Exception(
- "Inconsistency in $class: " . HTMLPurifier_VarParser::getTypeName($type) .
- " not implemented"
- );
- }
-
- /**
- * Generic error for if a type didn't work.
- * @param mixed $var
- * @param int $type
- */
- protected function errorGeneric($var, $type)
- {
- $vtype = gettype($var);
- $this->error("Expected type " . HTMLPurifier_VarParser::getTypeName($type) . ", got $vtype");
- }
-
- /**
- * @param int $type
- * @return string
- */
- public static function getTypeName($type)
- {
- static $lookup;
- if (!$lookup) {
- // Lazy load the alternative lookup table
- $lookup = array_flip(HTMLPurifier_VarParser::$types);
- }
- if (!isset($lookup[$type])) {
- return 'unknown';
- }
- return $lookup[$type];
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/VarParser/Flexible.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/VarParser/Flexible.php
deleted file mode 100644
index 3bfbe838..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/VarParser/Flexible.php
+++ /dev/null
@@ -1,130 +0,0 @@
- $j) {
- $var[$i] = trim($j);
- }
- if ($type === self::HASH) {
- // key:value,key2:value2
- $nvar = array();
- foreach ($var as $keypair) {
- $c = explode(':', $keypair, 2);
- if (!isset($c[1])) {
- continue;
- }
- $nvar[trim($c[0])] = trim($c[1]);
- }
- $var = $nvar;
- }
- }
- if (!is_array($var)) {
- break;
- }
- $keys = array_keys($var);
- if ($keys === array_keys($keys)) {
- if ($type == self::ALIST) {
- return $var;
- } elseif ($type == self::LOOKUP) {
- $new = array();
- foreach ($var as $key) {
- $new[$key] = true;
- }
- return $new;
- } else {
- break;
- }
- }
- if ($type === self::ALIST) {
- trigger_error("Array list did not have consecutive integer indexes", E_USER_WARNING);
- return array_values($var);
- }
- if ($type === self::LOOKUP) {
- foreach ($var as $key => $value) {
- if ($value !== true) {
- trigger_error(
- "Lookup array has non-true value at key '$key'; " .
- "maybe your input array was not indexed numerically",
- E_USER_WARNING
- );
- }
- $var[$key] = true;
- }
- }
- return $var;
- default:
- $this->errorInconsistent(__CLASS__, $type);
- }
- $this->errorGeneric($var, $type);
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/VarParser/Native.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/VarParser/Native.php
deleted file mode 100644
index f11c318e..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/VarParser/Native.php
+++ /dev/null
@@ -1,38 +0,0 @@
-evalExpression($var);
- }
-
- /**
- * @param string $expr
- * @return mixed
- * @throws HTMLPurifier_VarParserException
- */
- protected function evalExpression($expr)
- {
- $var = null;
- $result = eval("\$var = $expr;");
- if ($result === false) {
- throw new HTMLPurifier_VarParserException("Fatal error in evaluated code");
- }
- return $var;
- }
-}
-
-// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/VarParserException.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/VarParserException.php
deleted file mode 100644
index 5df34149..00000000
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/VarParserException.php
+++ /dev/null
@@ -1,11 +0,0 @@
-front = $front;
- $this->back = $back;
- }
-
- /**
- * Creates a zipper from an array, with a hole in the
- * 0-index position.
- * @param Array to zipper-ify.
- * @return Tuple of zipper and element of first position.
- */
- static public function fromArray($array) {
- $z = new self(array(), array_reverse($array));
- $t = $z->delete(); // delete the "dummy hole"
- return array($z, $t);
- }
-
- /**
- * Convert zipper back into a normal array, optionally filling in
- * the hole with a value. (Usually you should supply a $t, unless you
- * are at the end of the array.)
- */
- public function toArray($t = NULL) {
- $a = $this->front;
- if ($t !== NULL) $a[] = $t;
- for ($i = count($this->back)-1; $i >= 0; $i--) {
- $a[] = $this->back[$i];
- }
- return $a;
- }
-
- /**
- * Move hole to the next element.
- * @param $t Element to fill hole with
- * @return Original contents of new hole.
- */
- public function next($t) {
- if ($t !== NULL) array_push($this->front, $t);
- return empty($this->back) ? NULL : array_pop($this->back);
- }
-
- /**
- * Iterated hole advancement.
- * @param $t Element to fill hole with
- * @param $i How many forward to advance hole
- * @return Original contents of new hole, i away
- */
- public function advance($t, $n) {
- for ($i = 0; $i < $n; $i++) {
- $t = $this->next($t);
- }
- return $t;
- }
-
- /**
- * Move hole to the previous element
- * @param $t Element to fill hole with
- * @return Original contents of new hole.
- */
- public function prev($t) {
- if ($t !== NULL) array_push($this->back, $t);
- return empty($this->front) ? NULL : array_pop($this->front);
- }
-
- /**
- * Delete contents of current hole, shifting hole to
- * next element.
- * @return Original contents of new hole.
- */
- public function delete() {
- return empty($this->back) ? NULL : array_pop($this->back);
- }
-
- /**
- * Returns true if we are at the end of the list.
- * @return bool
- */
- public function done() {
- return empty($this->back);
- }
-
- /**
- * Insert element before hole.
- * @param Element to insert
- */
- public function insertBefore($t) {
- if ($t !== NULL) array_push($this->front, $t);
- }
-
- /**
- * Insert element after hole.
- * @param Element to insert
- */
- public function insertAfter($t) {
- if ($t !== NULL) array_push($this->back, $t);
- }
-
- /**
- * Splice in multiple elements at hole. Functional specification
- * in terms of array_splice:
- *
- * $arr1 = $arr;
- * $old1 = array_splice($arr1, $i, $delete, $replacement);
- *
- * list($z, $t) = HTMLPurifier_Zipper::fromArray($arr);
- * $t = $z->advance($t, $i);
- * list($old2, $t) = $z->splice($t, $delete, $replacement);
- * $arr2 = $z->toArray($t);
- *
- * assert($old1 === $old2);
- * assert($arr1 === $arr2);
- *
- * NB: the absolute index location after this operation is
- * *unchanged!*
- *
- * @param Current contents of hole.
- */
- public function splice($t, $delete, $replacement) {
- // delete
- $old = array();
- $r = $t;
- for ($i = $delete; $i > 0; $i--) {
- $old[] = $r;
- $r = $this->delete();
- }
- // insert
- for ($i = count($replacement)-1; $i >= 0; $i--) {
- $this->insertAfter($r);
- $r = $replacement[$i];
- }
- return array($old, $r);
- }
-}
diff --git a/vendor/felixfbecker/advanced-json-rpc/.github/workflows/build.yml b/vendor/felixfbecker/advanced-json-rpc/.github/workflows/build.yml
deleted file mode 100644
index 4b0bd562..00000000
--- a/vendor/felixfbecker/advanced-json-rpc/.github/workflows/build.yml
+++ /dev/null
@@ -1,63 +0,0 @@
-name: build
-
-on: [push, pull_request]
-
-env:
- FORCE_COLOR: 1
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
-jobs:
- test:
- strategy:
- matrix:
- php:
- - 7.1
- - 7.2
- - 7.3
- - 7.4
- - 8.0
- deps:
- - lowest
- - highest
- include:
- - php: 8.1
- deps: highest
- composer-options: --ignore-platform-reqs
- exclude:
- # that config currently breaks as older PHPUnit cannot generate coverage on PHP 8
- - php: 8
- deps: lowest
-
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
-
- - name: Setup PHP
- uses: shivammathur/setup-php@v2
- with:
- php-version: ${{ matrix.php }}
-
- - uses: ramsey/composer-install@v1
- with:
- dependency-versions: ${{ matrix.deps }}
- composer-options: ${{ matrix.composer-options }}
-
- - run: vendor/bin/phpunit --coverage-clover=coverage.xml --whitelist lib --bootstrap vendor/autoload.php tests
-
- - uses: codecov/codecov-action@v1
-
- release:
- needs: test
- if: github.repository_owner == 'felixfbecker' && github.event_name == 'push' && github.ref == 'refs/heads/master'
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
-
- - name: Setup Node.js
- uses: actions/setup-node@v2
-
- - name: Install npm dependencies
- run: npm ci
-
- - name: Release
- run: npm run semantic-release
diff --git a/vendor/felixfbecker/advanced-json-rpc/LICENSE b/vendor/felixfbecker/advanced-json-rpc/LICENSE
deleted file mode 100644
index fc354170..00000000
--- a/vendor/felixfbecker/advanced-json-rpc/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-ISC License
-
-Copyright (c) 2016, Felix Frederick Becker
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/vendor/felixfbecker/advanced-json-rpc/composer.json b/vendor/felixfbecker/advanced-json-rpc/composer.json
deleted file mode 100644
index c4d5739e..00000000
--- a/vendor/felixfbecker/advanced-json-rpc/composer.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "felixfbecker/advanced-json-rpc",
- "description": "A more advanced JSONRPC implementation",
- "type": "library",
- "license": "ISC",
- "authors": [
- {
- "name": "Felix Becker",
- "email": "felix.b@outlook.com"
- }
- ],
- "autoload": {
- "psr-4": {
- "AdvancedJsonRpc\\": "lib/"
- }
- },
- "autoload-dev": {
- "psr-4": {
- "AdvancedJsonRpc\\Tests\\": "tests/"
- }
- },
- "require": {
- "php": "^7.1 || ^8.0",
- "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
- "phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^7.0 || ^8.0"
- },
- "minimum-stability": "dev",
- "prefer-stable": true
-}
diff --git a/vendor/felixfbecker/advanced-json-rpc/lib/Dispatcher.php b/vendor/felixfbecker/advanced-json-rpc/lib/Dispatcher.php
deleted file mode 100644
index 5f045df6..00000000
--- a/vendor/felixfbecker/advanced-json-rpc/lib/Dispatcher.php
+++ /dev/null
@@ -1,171 +0,0 @@
- ReflectionMethod[]
- *
- * @var ReflectionMethod
- */
- private $methods;
-
- /**
- * @var \phpDocumentor\Reflection\DocBlockFactory
- */
- private $docBlockFactory;
-
- /**
- * @var \phpDocumentor\Reflection\Types\ContextFactory
- */
- private $contextFactory;
-
- /**
- * @param object $target The target object that should receive the method calls
- * @param string $delimiter A delimiter for method calls on properties, for example someProperty->someMethod
- */
- public function __construct($target, $delimiter = '->')
- {
- $this->target = $target;
- $this->delimiter = $delimiter;
- $this->docBlockFactory = DocBlockFactory::createInstance();
- $this->contextFactory = new Types\ContextFactory();
- $this->mapper = new JsonMapper();
- }
-
- /**
- * Calls the appropriate method handler for an incoming Message
- *
- * @param string|object $msg The incoming message
- * @return mixed
- */
- public function dispatch($msg)
- {
- if (is_string($msg)) {
- $msg = json_decode($msg);
- if (json_last_error() !== JSON_ERROR_NONE) {
- throw new Error(json_last_error_msg(), ErrorCode::PARSE_ERROR);
- }
- }
- // Find out the object and function that should be called
- $obj = $this->target;
- $parts = explode($this->delimiter, $msg->method);
- // The function to call is always the last part of the method
- $fn = array_pop($parts);
- // For namespaced methods like textDocument/didOpen, call the didOpen method on the $textDocument property
- // For simple methods like initialize, shutdown, exit, this loop will simply not be entered and $obj will be
- // the target
- foreach ($parts as $part) {
- if (!isset($obj->$part)) {
- throw new Error("Method {$msg->method} is not implemented", ErrorCode::METHOD_NOT_FOUND);
- }
- $obj = $obj->$part;
- }
- if (!isset($this->methods[$msg->method])) {
- try {
- $method = new ReflectionMethod($obj, $fn);
- $this->methods[$msg->method] = $method;
- } catch (ReflectionException $e) {
- throw new Error($e->getMessage(), ErrorCode::METHOD_NOT_FOUND, null, $e);
- }
- }
- $method = $this->methods[$msg->method];
- $parameters = $method->getParameters();
- if ($method->getDocComment()) {
- $docBlock = $this->docBlockFactory->create(
- $method->getDocComment(),
- $this->contextFactory->createFromReflector($method->getDeclaringClass())
- );
- $paramTags = $docBlock->getTagsByName('param');
- }
- $args = [];
- if (isset($msg->params)) {
- // Find out the position
- if (is_array($msg->params)) {
- $args = $msg->params;
- } else if (is_object($msg->params)) {
- foreach ($parameters as $pos => $parameter) {
- $value = null;
- foreach(get_object_vars($msg->params) as $key => $val) {
- if ($parameter->name === $key) {
- $value = $val;
- break;
- }
- }
- $args[$pos] = $value;
- }
- } else {
- throw new Error('Params must be structured or omitted', ErrorCode::INVALID_REQUEST);
- }
- foreach ($args as $position => $value) {
- try {
- // If the type is structured (array or object), map it with JsonMapper
- if (is_object($value)) {
- // Does the parameter have a type hint?
- $param = $parameters[$position];
- if ($param->hasType()) {
- $paramType = $param->getType();
- if ($paramType instanceof ReflectionNamedType) {
- // We have object data to map and want the class name.
- // This should not include the `?` if the type was nullable.
- $class = $paramType->getName();
- } else {
- // Fallback for php 7.0, which is still supported (and doesn't have nullable).
- $class = (string)$paramType;
- }
- $value = $this->mapper->map($value, new $class());
- }
- } else if (is_array($value) && isset($docBlock)) {
- // Get the array type from the DocBlock
- $type = $paramTags[$position]->getType();
- // For union types, use the first one that is a class array (often it is SomeClass[]|null)
- if ($type instanceof Types\Compound) {
- for ($i = 0; $t = $type->get($i); $i++) {
- if (
- $t instanceof Types\Array_
- && $t->getValueType() instanceof Types\Object_
- && (string)$t->getValueType() !== 'object'
- ) {
- $class = (string)$t->getValueType()->getFqsen();
- $value = $this->mapper->mapArray($value, [], $class);
- break;
- }
- }
- } else if ($type instanceof Types\Array_) {
- $class = (string)$type->getValueType()->getFqsen();
- $value = $this->mapper->mapArray($value, [], $class);
- } else {
- throw new Error('Type is not matching @param tag', ErrorCode::INVALID_PARAMS);
- }
- }
- } catch (JsonMapper_Exception $e) {
- throw new Error($e->getMessage(), ErrorCode::INVALID_PARAMS, null, $e);
- }
- $args[$position] = $value;
- }
- }
- ksort($args);
- $result = $obj->$fn(...$args);
- return $result;
- }
-}
diff --git a/vendor/felixfbecker/advanced-json-rpc/lib/Error.php b/vendor/felixfbecker/advanced-json-rpc/lib/Error.php
deleted file mode 100644
index b2801918..00000000
--- a/vendor/felixfbecker/advanced-json-rpc/lib/Error.php
+++ /dev/null
@@ -1,38 +0,0 @@
-data = $data;
- }
-}
diff --git a/vendor/felixfbecker/advanced-json-rpc/lib/ErrorCode.php b/vendor/felixfbecker/advanced-json-rpc/lib/ErrorCode.php
deleted file mode 100644
index f0ef4792..00000000
--- a/vendor/felixfbecker/advanced-json-rpc/lib/ErrorCode.php
+++ /dev/null
@@ -1,48 +0,0 @@
-id) && isset($msg->error);
- }
-
- /**
- * @param int|string $id
- * @param \AdvancedJsonRpc\Error $error
- */
- public function __construct($id, Error $error)
- {
- parent::__construct($id);
- $this->error = $error;
- }
-}
diff --git a/vendor/felixfbecker/advanced-json-rpc/lib/Message.php b/vendor/felixfbecker/advanced-json-rpc/lib/Message.php
deleted file mode 100644
index e2231dc5..00000000
--- a/vendor/felixfbecker/advanced-json-rpc/lib/Message.php
+++ /dev/null
@@ -1,52 +0,0 @@
-method, $decoded->params ?? null);
- } else if (Request::isRequest($decoded)) {
- $obj = new Request($decoded->id, $decoded->method, $decoded->params ?? null);
- } else if (SuccessResponse::isSuccessResponse($decoded)) {
- $obj = new SuccessResponse($decoded->id, $decoded->result);
- } else if (ErrorResponse::isErrorResponse($decoded)) {
- $obj = new ErrorResponse($decoded->id, new Error($decoded->error->message, $decoded->error->code, $decoded->error->data ?? null));
- } else {
- throw new Error('Invalid message', ErrorCode::INVALID_REQUEST);
- }
- return $obj;
- }
-
- public function __toString(): string
- {
- $encoded = json_encode($this);
- if ($encoded === false) {
- throw new Error(json_last_error_msg(), ErrorCode::INTERNAL_ERROR);
- }
- return $encoded;
- }
-}
diff --git a/vendor/felixfbecker/advanced-json-rpc/lib/Notification.php b/vendor/felixfbecker/advanced-json-rpc/lib/Notification.php
deleted file mode 100644
index 3440164d..00000000
--- a/vendor/felixfbecker/advanced-json-rpc/lib/Notification.php
+++ /dev/null
@@ -1,56 +0,0 @@
-method);
- }
-
- /**
- * @param string $method
- * @param mixed $params
- */
- public function __construct(string $method, $params = null)
- {
- $this->method = $method;
- $this->params = $params;
- }
-}
diff --git a/vendor/felixfbecker/advanced-json-rpc/lib/Request.php b/vendor/felixfbecker/advanced-json-rpc/lib/Request.php
deleted file mode 100644
index 14290082..00000000
--- a/vendor/felixfbecker/advanced-json-rpc/lib/Request.php
+++ /dev/null
@@ -1,63 +0,0 @@
-method);
- }
-
- /**
- * @param string|int $id
- * @param string $method
- * @param object|array $params
- */
- public function __construct($id, string $method, $params = null)
- {
- $this->id = $id;
- $this->method = $method;
- $this->params = $params;
- }
-}
diff --git a/vendor/felixfbecker/advanced-json-rpc/lib/Response.php b/vendor/felixfbecker/advanced-json-rpc/lib/Response.php
deleted file mode 100644
index a871eeac..00000000
--- a/vendor/felixfbecker/advanced-json-rpc/lib/Response.php
+++ /dev/null
@@ -1,40 +0,0 @@
-error));
- }
-
- /**
- * @param int|string $id
- * @param mixed $result
- * @param ResponseError $error
- */
- public function __construct($id)
- {
- $this->id = $id;
- }
-}
diff --git a/vendor/felixfbecker/advanced-json-rpc/lib/SuccessResponse.php b/vendor/felixfbecker/advanced-json-rpc/lib/SuccessResponse.php
deleted file mode 100644
index 222fd46e..00000000
--- a/vendor/felixfbecker/advanced-json-rpc/lib/SuccessResponse.php
+++ /dev/null
@@ -1,40 +0,0 @@
-result = $result;
- }
-}
diff --git a/vendor/firephp/firephp-core/.gitignore b/vendor/firephp/firephp-core/.gitignore
deleted file mode 100644
index d1638636..00000000
--- a/vendor/firephp/firephp-core/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-build/
\ No newline at end of file
diff --git a/vendor/firephp/firephp-core/CHANGELOG.md b/vendor/firephp/firephp-core/CHANGELOG.md
deleted file mode 100644
index d8b0f86d..00000000
--- a/vendor/firephp/firephp-core/CHANGELOG.md
+++ /dev/null
@@ -1,171 +0,0 @@
-
-TODO:
-
- * Fix code indenting in PHP 4 code
- * Port maxDepth option to PHP 4 code
-
-2013-04-23 - Release Version: 0.4.0
-
- * No changes
-
-2011-06-22 - Release Version: 0.4.0rc3
-
- * Build fixes
-
-2011-06-20 - Release Version: 0.4.0rc1
-
- * (Issue 163) PHP5 class_exists() throws Exception without second parameter
- * (Issue 166) Non-utf8 array values replaced with null
- * Cleaned up code formatting [sokolov.innokenty@gmail.com]
- * Ensure JSON keys are never NULL (due to NULL key in some arrays)
- * Better UTF-8 encoding detection
- * Code style cleanup (qbbr)
- * Changed license to MIT
- * Refactored project
-
-2010-10-26 - Release Version: 0.3.2
-
-2010-10-12 - Release Version: 0.3.2rc6
-
- * (Issue 154) getRequestHeader uses "getallheaders" even though it doesn't always exist. [25m]
-
-2010-10-09 - Release Version: 0.3.2rc5
-
- * (Issue 153) FirePHP incorrectly double-encodes UTF8 when mbstring.func_overload is enabled
-
-2010-10-08 - Release Version: 0.3.2rc4
-
- * Trigger upgrade message if part of FirePHP 1.0
- * Removed FirePHP/Init.php inclusion logic and only load FirePHP.class.php if not already loaded
-
-2010-07-19 - Release Version: 0.3.2rc3
-
- * Fixed FirePHP/Init.php inclusion logic
-
-2010-07-19 - Release Version: 0.3.2rc2
-
- * (Issue 145) maxDepth option
- * Changed maxObjectDepth and maxArrayDepth option defaults to 5
- * Fixed code indentation
-
-2010-03-05 - Release Version: 0.3.2rc1
-
- * (Issue 114) Allow options to be passed on to basic logging wrappers
- * (Issue 122) Filter objectStack property of FirePHP class
- * (Issue 123) registerErrorHandler(false) by default
- * Added setOption() and getOption() methods
- * (Issue 117) dump() method argument validation
- * Started adding PHPUnit tests
- * Some refactoring to support unit testing
- * Deprecated setProcessorUrl() and setRendererUrl()
- * Check User-Agent and X-FirePHP-Version header to detect FirePHP on client
- * (Issue 135) FirePHP 0.4.3 with Firebug 1.5 changes user agent on the fly
- * (Issue 112) Error Predefined Constants Not available for PHP 5.x versions
-
-2008-06-14 - Release Version: 0.3.1
-
- * (Issue 108) ignore class name case in object filter
-
-2009-05-11 - Release Version: 0.3
-2009-05-01 - Release Version: 0.3.rc.1
-
- * (Issue 90) PHP4 compatible version of FirePHPCore
- * (Issue 98) Thrown exceptions don't send an HTTP 500 if the FirePHP exception handler is enabled
- * (Issue 85) Support associative arrays in encodeTable method in FirePHP.class.php
- * (Issue 66) Add a new getOptions() public method in API
- * (Issue 82) Define $this->options outside of __construct
- * (Issue 72) Message error if group name is null
- * (Issue 68) registerErrorHandler() and registerExceptionHandler() should returns previous handlers defined
- * (Issue 69) Add the missing register handler in the triumvirate (error, exception, assert)
- * (Issue 75) [Error & Exception Handling] Option to not exit script execution
- * (Issue 83) Exception handler can't throw exceptions
- * (Issue 80) Auto/Pre collapsing groups AND Custom group row colors
-
-2008-11-09 - Release Version: 0.2.1
-
- * (Issue 70) Problem when logging resources
-
-2008-10-21 - Release Version: 0.2.0
-
- * Updated version to 0.2.0
- * Switched to using __sleep instead of __wakeup
- * Added support to exclude object members when encoding
- * Add support to enable/disable logging
-
-2008-10-17 - Release Version: 0.2.b.8
-
- * New implementation for is_utf8()
- * (Issue 55) maxObjectDepth Option not working correctly when using TABLE and EXCEPTION Type
- * Bugfix for max[Object|Array]Depth when encoding nested array/object graphs
- * Bugfix for FB::setOptions()
-
-2008-10-16 - Release Version: 0.2.b.7
-
- * (Issue 45) Truncate dump when string have non utf8 cars
- * (Issue 52) logging will not work when firephp object gets stored in the session.
-
-2008-10-16 - Release Version: 0.2.b.6
-
- * (Issue 37) Display file and line information for each log message
- * (Issue 51) Limit output of object graphs
- * Bugfix for encoding object members set to NULL|false|''
-
-2008-10-14 - Release Version: 0.2.b.5
-
- * Updated JsonStream wildfire protocol to be more robust
- * (Issue 33) PHP error notices running demos
- * (Issue 48) Warning: ReflectionProperty::getValue() expects exactly 1 parameter, 0 given
-
-2008-10-08 - Release Version: 0.2.b.4
-
- * Bugfix for logging objects with recursion
-
-2008-10-08 - Release Version: 0.2.b.3
-
- * (Issue 43) Notice message in 0.2b2
- * Added support for PHP's native json_encode() if available
- * Revised object encoder to detect object recursion
-
-2008-10-07 - Release Version: 0.2.b.2
-
- * (Issue 28) Need solution for logging private and protected object variables
- * Added trace() and table() aliases in FirePHP class
- * (Issue 41) Use PHP doc in FirePHP
- * (Issue 39) Static logging method for object oriented API
-
-2008-10-01 - Release Version: 0.2.b.1
-
- * Added support for error and exception handling
- * Updated min PHP version for PEAR package to 5.2
- * Added version constant for library
- * Gave server library it's own wildfire plugin namespace
- * Migrated communication protocol to Wildfire JsonStream
- * Added support for console groups using "group" and "groupEnd"
- * Added support for log, info, warn and error logging aliases
- * (Issue 29) problem with TRACE when using with error_handler
- * (Issue 33) PHP error notices running demos
- * (Issue 12) undefined index php notice
- * Removed closing ?> php tags
- * (Issue 13) the code in the fb() function has a second return statement that will never be reached
-
-2008-07-30 - Release Version: 0.1.1.3
-
- * Include __className property in JSON string if variable was an object
- * Bugfix - Mis-spelt "Exception" in JSON encoding code
-
-2008-06-13 - Release Version: 0.1.1.1
-
- * Bugfix - Standardize windows paths in stack traces
- * Bugfix - Display correct stack trace info in windows environments
- * Bugfix - Check $_SERVER['HTTP_USER_AGENT'] before returning
-
-2008-06-13 - Release Version: 0.1.1
-
- * Added support for FirePHP::TRACE log style
- * Changed license to New BSD License
-
-2008-06-06 - Release Version: 0.0.2
-
- * Bugfix - Added usleep() to header writing loop to ensure unique index
- * Bugfix - Ensure chunk_split does not generate trailing "\n" with empty data header
- * Added support for FirePHP::TABLE log style
diff --git a/vendor/firephp/firephp-core/README.md b/vendor/firephp/firephp-core/README.md
deleted file mode 100644
index b1b32f84..00000000
--- a/vendor/firephp/firephp-core/README.md
+++ /dev/null
@@ -1,75 +0,0 @@
-FirePHPCore
-===========
-
-**Status: stable**
-
-> **FirePHP is an advanced logging system that can display PHP variables in the browser as an application is navigated.**
-> All communication is out of band to the application meaning that the logging data will not interfere with the normal functioning of the application.
-
-This project contains the *FirePHPCore* PHP server library and provides a development environment (see `./workspace/`) for working on *FirePHPCore*.
-
-
-Usage
-=====
-
-See [Install/Traditional: FirePHPCore](http://docs.sourcemint.org/firephp.org/firephp/1/-docs/Configuration/Traditional) in the
-[FirePHP 1.0 Documentation](http://docs.sourcemint.org/firephp.org/firephp/1/-docs/).
-
-
-Testing
-=======
-
- cd tests
- phpunit .
-
-
-Support & Feedback
-==================
-
-See [Support](http://docs.sourcemint.org/firephp.org/firephp/1/-docs/OpenSource#support) in the [FirePHP 1.0 Documentation](http://docs.sourcemint.org/firephp.org/firephp/1/-docs/).
-
-
-Contribute
-==========
-
-See [Contribute](http://docs.sourcemint.org/firephp.org/firephp/1/-docs/OpenSource#contribute) in the [FirePHP 1.0 Documentation](http://docs.sourcemint.org/firephp.org/firephp/1/-docs/).
-
-
-Author
-======
-
-This project is authored and maintained by [Christoph Dorn](http://www.christophdorn.com/).
-
-
-Documentation License
-=====================
-
-[Creative Commons Attribution-NonCommercial-ShareAlike 3.0](http://creativecommons.org/licenses/by-nc-sa/3.0/)
-
-Copyright (c) 2007+ [Christoph Dorn](http://www.christophdorn.com/)
-
-
-Code License
-============
-
-[MIT License](http://www.opensource.org/licenses/mit-license.php)
-
-Copyright (c) 2007+ [Christoph Dorn](http://www.christophdorn.com/)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/firephp/firephp-core/composer.json b/vendor/firephp/firephp-core/composer.json
deleted file mode 100644
index 7cab85a9..00000000
--- a/vendor/firephp/firephp-core/composer.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "name": "firephp/firephp-core",
- "description": "Traditional FirePHPCore library for sending PHP variables to the browser.",
- "type": "library",
- "homepage": "https://github.com/firephp/firephp-core",
- "license": "MIT",
- "authors": [
- {
- "name": "Christoph Dorn",
- "email": "christoph@christophdorn.com",
- "homepage": "http://christophdorn.com"
- }
- ],
- "support": {
- "forum": "http://groups.google.com/group/firephp-dev",
- "issues": "https://github.com/firephp/firephp-core/issues",
- "source": "https://github.com/firephp/firephp-core"
- },
- "autoload": {
- "classmap": [
- "lib/FirePHPCore/FirePHP.class.php",
- "lib/FirePHPCore/fb.php"
- ]
- }
-}
-
diff --git a/vendor/firephp/firephp-core/examples/oo.php b/vendor/firephp/firephp-core/examples/oo.php
deleted file mode 100644
index f5f39875..00000000
--- a/vendor/firephp/firephp-core/examples/oo.php
+++ /dev/null
@@ -1,82 +0,0 @@
-, Copyright 2007, New BSD License
-// - cadorn, Christoph Dorn , Copyright 2011, MIT License
-
-/* *** BEGIN LICENSE BLOCK *****
- *
- * [MIT License](http://www.opensource.org/licenses/mit-license.php)
- *
- * Copyright (c) 2007+ [Christoph Dorn](http://www.christophdorn.com/)
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-
-/* NOTE: You must have the FirePHPCore library in your include path */
-
-set_include_path(dirname(dirname(__FILE__)).'/lib'.PATH_SEPARATOR.get_include_path());
-
-
-require('FirePHPCore/FirePHP.class.php');
-
-/* NOTE: You must have Output Buffering enabled via
- ob_start() or output_buffering ini directive. */
-
-
-$firephp = FirePHP::getInstance(true);
-
-
-$firephp->fb('Hello World'); /* Defaults to FirePHP::LOG */
-
-$firephp->fb('Log message' ,FirePHP::LOG);
-$firephp->fb('Info message' ,FirePHP::INFO);
-$firephp->fb('Warn message' ,FirePHP::WARN);
-$firephp->fb('Error message',FirePHP::ERROR);
-
-$firephp->fb('Message with label','Label',FirePHP::LOG);
-
-$firephp->fb(array('key1'=>'val1',
- 'key2'=>array(array('v1','v2'),'v3')),
- 'TestArray',FirePHP::LOG);
-
-function test($Arg1) {
- throw new Exception('Test Exception');
-}
-try {
- test(array('Hello'=>'World'));
-} catch(Exception $e) {
- /* Log exception including stack trace & variables */
- $firephp->fb($e);
-}
-
-$firephp->fb('Backtrace to here',FirePHP::TRACE);
-
-$firephp->fb(array('2 SQL queries took 0.06 seconds',array(
- array('SQL Statement','Time','Result'),
- array('SELECT * FROM Foo','0.02',array('row1','row2')),
- array('SELECT * FROM Bar','0.04',array('row1','row2'))
- )),FirePHP::TABLE);
-
-/* Will show only in "Server" tab for the request */
-$firephp->fb(apache_request_headers(),'RequestHeaders',FirePHP::DUMP);
-
-
-print 'Hello World';
diff --git a/vendor/firephp/firephp-core/examples/oo.php4 b/vendor/firephp/firephp-core/examples/oo.php4
deleted file mode 100644
index 75ec1ee3..00000000
--- a/vendor/firephp/firephp-core/examples/oo.php4
+++ /dev/null
@@ -1,72 +0,0 @@
-, Copyright 2007, New BSD License
-// - cadorn, Christoph Dorn , Copyright 2011, MIT License
-
-/* *** BEGIN LICENSE BLOCK *****
- *
- * [MIT License](http://www.opensource.org/licenses/mit-license.php)
- *
- * Copyright (c) 2007+ [Christoph Dorn](http://www.christophdorn.com/)
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-
-/* NOTE: You must have the FirePHPCore library in your include path */
-
-set_include_path(dirname(dirname(__FILE__)).'/lib'.PATH_SEPARATOR.get_include_path());
-
-
-require('FirePHPCore/FirePHP.class.php4');
-
-/* NOTE: You must have Output Buffering enabled via
- ob_start() or output_buffering ini directive. */
-
-
-$firephp =& FirePHP::getInstance(true);
-
-
-$firephp->fb('Hello World'); /* Defaults to FirePHP::LOG */
-
-$firephp->fb('Log message' ,FirePHP_LOG);
-$firephp->fb('Info message' ,FirePHP_INFO);
-$firephp->fb('Warn message' ,FirePHP_WARN);
-$firephp->fb('Error message',FirePHP_ERROR);
-
-$firephp->fb('Message with label','Label',FirePHP_LOG);
-
-$firephp->fb(array('key1'=>'val1',
- 'key2'=>array(array('v1','v2'),'v3')),
- 'TestArray',FirePHP_LOG);
-
-$firephp->fb('Backtrace to here',FirePHP_TRACE);
-
-$firephp->fb(array('2 SQL queries took 0.06 seconds',array(
- array('SQL Statement','Time','Result'),
- array('SELECT * FROM Foo','0.02',array('row1','row2')),
- array('SELECT * FROM Bar','0.04',array('row1','row2'))
- )),FirePHP_TABLE);
-
-/* Will show only in "Server" tab for the request */
-$firephp->fb(apache_request_headers(),'RequestHeaders',FirePHP_DUMP);
-
-
-print 'Hello World';
diff --git a/vendor/firephp/firephp-core/examples/procedural.php b/vendor/firephp/firephp-core/examples/procedural.php
deleted file mode 100644
index d1d3920b..00000000
--- a/vendor/firephp/firephp-core/examples/procedural.php
+++ /dev/null
@@ -1,79 +0,0 @@
-, Copyright 2007, New BSD License
-// - cadorn, Christoph Dorn , Copyright 2011, MIT License
-
-/* *** BEGIN LICENSE BLOCK *****
- *
- * [MIT License](http://www.opensource.org/licenses/mit-license.php)
- *
- * Copyright (c) 2007+ [Christoph Dorn](http://www.christophdorn.com/)
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-
-/* NOTE: You must have the FirePHPCore library in your include path */
-
-set_include_path(dirname(dirname(__FILE__)).'/lib'.PATH_SEPARATOR.get_include_path());
-
-
-require('FirePHPCore/fb.php');
-
-/* NOTE: You must have Output Buffering enabled via
- ob_start() or output_buffering ini directive. */
-
-fb('Hello World'); /* Defaults to FirePHP::LOG */
-
-fb('Log message' ,FirePHP::LOG);
-fb('Info message' ,FirePHP::INFO);
-fb('Warn message' ,FirePHP::WARN);
-fb('Error message',FirePHP::ERROR);
-
-fb('Message with label','Label',FirePHP::LOG);
-
-fb(array('key1'=>'val1',
- 'key2'=>array(array('v1','v2'),'v3')),
- 'TestArray',FirePHP::LOG);
-
-function test($Arg1) {
- throw new Exception('Test Exception');
-}
-try {
- test(array('Hello'=>'World'));
-} catch(Exception $e) {
- /* Log exception including stack trace & variables */
- fb($e);
-}
-
-fb('Backtrace to here',FirePHP::TRACE);
-
-fb(array('2 SQL queries took 0.06 seconds',array(
- array('SQL Statement','Time','Result'),
- array('SELECT * FROM Foo','0.02',array('row1','row2')),
- array('SELECT * FROM Bar','0.04',array('row1','row2'))
- )),FirePHP::TABLE);
-
-/* Will show only in "Server" tab for the request */
-fb(apache_request_headers(),'RequestHeaders',FirePHP::DUMP);
-
-
-print 'Hello World';
-
diff --git a/vendor/firephp/firephp-core/examples/procedural.php4 b/vendor/firephp/firephp-core/examples/procedural.php4
deleted file mode 100644
index 28eb7dc1..00000000
--- a/vendor/firephp/firephp-core/examples/procedural.php4
+++ /dev/null
@@ -1,69 +0,0 @@
-, Copyright 2007, New BSD License
-// - cadorn, Christoph Dorn , Copyright 2011, MIT License
-
-/* *** BEGIN LICENSE BLOCK *****
- *
- * [MIT License](http://www.opensource.org/licenses/mit-license.php)
- *
- * Copyright (c) 2007+ [Christoph Dorn](http://www.christophdorn.com/)
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-
-/* NOTE: You must have the FirePHPCore library in your include path */
-
-set_include_path(dirname(dirname(__FILE__)).'/lib'.PATH_SEPARATOR.get_include_path());
-
-
-require('FirePHPCore/fb.php');
-
-/* NOTE: You must have Output Buffering enabled via
- ob_start() or output_buffering ini directive. */
-
-fb('Hello World'); /* Defaults to FirePHP::LOG */
-
-fb('Log message' ,FirePHP_LOG);
-fb('Info message' ,FirePHP_INFO);
-fb('Warn message' ,FirePHP_WARN);
-fb('Error message',FirePHP_ERROR);
-
-fb('Message with label','Label',FirePHP_LOG);
-
-fb(array('key1'=>'val1',
- 'key2'=>array(array('v1','v2'),'v3')),
- 'TestArray',FirePHP_LOG);
-
-fb('Backtrace to here',FirePHP_TRACE);
-
-fb(array('2 SQL queries took 0.06 seconds',array(
- array('SQL Statement','Time','Result'),
- array('SELECT * FROM Foo','0.02',array('row1','row2')),
- array('SELECT * FROM Bar','0.04',array('row1','row2'))
- )),FirePHP_TABLE);
-
-/* Will show only in "Server" tab for the request */
-fb(apache_request_headers(),'RequestHeaders',FirePHP_DUMP);
-
-
-print 'Hello World';
-
diff --git a/vendor/firephp/firephp-core/lib/FirePHPCore/FirePHP.class.php b/vendor/firephp/firephp-core/lib/FirePHPCore/FirePHP.class.php
deleted file mode 100644
index 65d83b56..00000000
--- a/vendor/firephp/firephp-core/lib/FirePHPCore/FirePHP.class.php
+++ /dev/null
@@ -1,1828 +0,0 @@
-, Copyright 2007, New BSD License
-// - qbbr, Sokolov Innokenty , Copyright 2011, New BSD License
-// - cadorn, Christoph Dorn , Copyright 2011, MIT License
-
-/**
- * *** BEGIN LICENSE BLOCK *****
- *
- * [MIT License](http://www.opensource.org/licenses/mit-license.php)
- *
- * Copyright (c) 2007+ [Christoph Dorn](http://www.christophdorn.com/)
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * ***** END LICENSE BLOCK *****
- *
- * @copyright Copyright (C) 2007+ Christoph Dorn
- * @author Christoph Dorn
- * @license [MIT License](http://www.opensource.org/licenses/mit-license.php)
- * @package FirePHPCore
- */
-
-/**
- * @see http://code.google.com/p/firephp/issues/detail?id=112
- */
-if (!defined('E_STRICT')) {
- define('E_STRICT', 2048);
-}
-if (!defined('E_RECOVERABLE_ERROR')) {
- define('E_RECOVERABLE_ERROR', 4096);
-}
-if (!defined('E_DEPRECATED')) {
- define('E_DEPRECATED', 8192);
-}
-if (!defined('E_USER_DEPRECATED')) {
- define('E_USER_DEPRECATED', 16384);
-}
-
-/**
- * Sends the given data to the FirePHP Firefox Extension.
- * The data can be displayed in the Firebug Console or in the
- * "Server" request tab.
- *
- * For more information see: http://www.firephp.org/
- *
- * @copyright Copyright (C) 2007+ Christoph Dorn
- * @author Christoph Dorn
- * @license [MIT License](http://www.opensource.org/licenses/mit-license.php)
- * @package FirePHPCore
- */
-class FirePHP {
-
- /**
- * FirePHP version
- *
- * @var string
- */
- const VERSION = '0.3'; // @pinf replace '0.3' with '%%VERSION%%'
-
- /**
- * Firebug LOG level
- *
- * Logs a message to firebug console.
- *
- * @var string
- */
- const LOG = 'LOG';
-
- /**
- * Firebug INFO level
- *
- * Logs a message to firebug console and displays an info icon before the message.
- *
- * @var string
- */
- const INFO = 'INFO';
-
- /**
- * Firebug WARN level
- *
- * Logs a message to firebug console, displays an warning icon before the message and colors the line turquoise.
- *
- * @var string
- */
- const WARN = 'WARN';
-
- /**
- * Firebug ERROR level
- *
- * Logs a message to firebug console, displays an error icon before the message and colors the line yellow. Also increments the firebug error count.
- *
- * @var string
- */
- const ERROR = 'ERROR';
-
- /**
- * Dumps a variable to firebug's server panel
- *
- * @var string
- */
- const DUMP = 'DUMP';
-
- /**
- * Displays a stack trace in firebug console
- *
- * @var string
- */
- const TRACE = 'TRACE';
-
- /**
- * Displays an exception in firebug console
- *
- * Increments the firebug error count.
- *
- * @var string
- */
- const EXCEPTION = 'EXCEPTION';
-
- /**
- * Displays an table in firebug console
- *
- * @var string
- */
- const TABLE = 'TABLE';
-
- /**
- * Starts a group in firebug console
- *
- * @var string
- */
- const GROUP_START = 'GROUP_START';
-
- /**
- * Ends a group in firebug console
- *
- * @var string
- */
- const GROUP_END = 'GROUP_END';
-
- /**
- * Singleton instance of FirePHP
- *
- * @var FirePHP
- */
- protected static $instance = null;
-
- /**
- * Flag whether we are logging from within the exception handler
- *
- * @var boolean
- */
- protected $inExceptionHandler = false;
-
- /**
- * Flag whether to throw PHP errors that have been converted to ErrorExceptions
- *
- * @var boolean
- */
- protected $throwErrorExceptions = true;
-
- /**
- * Flag whether to convert PHP assertion errors to Exceptions
- *
- * @var boolean
- */
- protected $convertAssertionErrorsToExceptions = true;
-
- /**
- * Flag whether to throw PHP assertion errors that have been converted to Exceptions
- *
- * @var boolean
- */
- protected $throwAssertionExceptions = false;
-
- /**
- * Wildfire protocol message index
- *
- * @var integer
- */
- protected $messageIndex = 1;
-
- /**
- * Options for the library
- *
- * @var array
- */
- protected $options = array('maxDepth' => 10,
- 'maxObjectDepth' => 5,
- 'maxArrayDepth' => 5,
- 'useNativeJsonEncode' => true,
- 'includeLineNumbers' => true);
-
- /**
- * Filters used to exclude object members when encoding
- *
- * @var array
- */
- protected $objectFilters = array(
- 'firephp' => array('objectStack', 'instance', 'json_objectStack'),
- 'firephp_test_class' => array('objectStack', 'instance', 'json_objectStack')
- );
-
- /**
- * A stack of objects used to detect recursion during object encoding
- *
- * @var object
- */
- protected $objectStack = array();
-
- /**
- * Flag to enable/disable logging
- *
- * @var boolean
- */
- protected $enabled = true;
-
- /**
- * The insight console to log to if applicable
- *
- * @var object
- */
- protected $logToInsightConsole = null;
-
- /**
- * When the object gets serialized only include specific object members.
- *
- * @return array
- */
- public function __sleep()
- {
- return array('options', 'objectFilters', 'enabled');
- }
-
- /**
- * Gets singleton instance of FirePHP
- *
- * @param boolean $autoCreate
- * @return FirePHP
- */
- public static function getInstance($autoCreate = false)
- {
- if ($autoCreate === true && !self::$instance) {
- self::init();
- }
- return self::$instance;
- }
-
- /**
- * Creates FirePHP object and stores it for singleton access
- *
- * @return FirePHP
- */
- public static function init()
- {
- return self::setInstance(new self());
- }
-
- /**
- * Set the instance of the FirePHP singleton
- *
- * @param FirePHP $instance The FirePHP object instance
- * @return FirePHP
- */
- public static function setInstance($instance)
- {
- return self::$instance = $instance;
- }
-
- /**
- * Set an Insight console to direct all logging calls to
- *
- * @param object $console The console object to log to
- * @return void
- */
- public function setLogToInsightConsole($console)
- {
- if (is_string($console)) {
- if (get_class($this) != 'FirePHP_Insight' && !is_subclass_of($this, 'FirePHP_Insight')) {
- throw new Exception('FirePHP instance not an instance or subclass of FirePHP_Insight!');
- }
- $this->logToInsightConsole = $this->to('request')->console($console);
- } else {
- $this->logToInsightConsole = $console;
- }
- }
-
- /**
- * Enable and disable logging to Firebug
- *
- * @param boolean $enabled TRUE to enable, FALSE to disable
- * @return void
- */
- public function setEnabled($enabled)
- {
- $this->enabled = $enabled;
- }
-
- /**
- * Check if logging is enabled
- *
- * @return boolean TRUE if enabled
- */
- public function getEnabled()
- {
- return $this->enabled;
- }
-
- /**
- * Specify a filter to be used when encoding an object
- *
- * Filters are used to exclude object members.
- *
- * @param string $class The class name of the object
- * @param array $filter An array of members to exclude
- * @return void
- */
- public function setObjectFilter($class, $filter)
- {
- $this->objectFilters[strtolower($class)] = $filter;
- }
-
- /**
- * Set some options for the library
- *
- * Options:
- * - maxDepth: The maximum depth to traverse (default: 10)
- * - maxObjectDepth: The maximum depth to traverse objects (default: 5)
- * - maxArrayDepth: The maximum depth to traverse arrays (default: 5)
- * - useNativeJsonEncode: If true will use json_encode() (default: true)
- * - includeLineNumbers: If true will include line numbers and filenames (default: true)
- *
- * @param array $options The options to be set
- * @return void
- */
- public function setOptions($options)
- {
- $this->options = array_merge($this->options, $options);
- }
-
- /**
- * Get options from the library
- *
- * @return array The currently set options
- */
- public function getOptions()
- {
- return $this->options;
- }
-
- /**
- * Set an option for the library
- *
- * @param string $name
- * @param mixed $value
- * @return void
- * @throws Exception
- */
- public function setOption($name, $value)
- {
- if (!isset($this->options[$name])) {
- throw $this->newException('Unknown option: ' . $name);
- }
- $this->options[$name] = $value;
- }
-
- /**
- * Get an option from the library
- *
- * @param string $name
- * @return mixed
- * @throws Exception
- */
- public function getOption($name)
- {
- if (!isset($this->options[$name])) {
- throw $this->newException('Unknown option: ' . $name);
- }
- return $this->options[$name];
- }
-
- /**
- * Register FirePHP as your error handler
- *
- * Will throw exceptions for each php error.
- *
- * @return mixed Returns a string containing the previously defined error handler (if any)
- */
- public function registerErrorHandler($throwErrorExceptions = false)
- {
- //NOTE: The following errors will not be caught by this error handler:
- // E_ERROR, E_PARSE, E_CORE_ERROR,
- // E_CORE_WARNING, E_COMPILE_ERROR,
- // E_COMPILE_WARNING, E_STRICT
-
- $this->throwErrorExceptions = $throwErrorExceptions;
-
- return set_error_handler(array($this, 'errorHandler'));
- }
-
- /**
- * FirePHP's error handler
- *
- * Throws exception for each php error that will occur.
- *
- * @param integer $errno
- * @param string $errstr
- * @param string $errfile
- * @param integer $errline
- * @param array $errcontext
- */
- public function errorHandler($errno, $errstr, $errfile, $errline, $errcontext)
- {
- // Don't throw exception if error reporting is switched off
- if (error_reporting() == 0) {
- return;
- }
- // Only throw exceptions for errors we are asking for
- if (error_reporting() & $errno) {
-
- $exception = new ErrorException($errstr, 0, $errno, $errfile, $errline);
- if ($this->throwErrorExceptions) {
- throw $exception;
- } else {
- $this->fb($exception);
- }
- }
- }
-
- /**
- * Register FirePHP as your exception handler
- *
- * @return mixed Returns the name of the previously defined exception handler,
- * or NULL on error.
- * If no previous handler was defined, NULL is also returned.
- */
- public function registerExceptionHandler()
- {
- return set_exception_handler(array($this, 'exceptionHandler'));
- }
-
- /**
- * FirePHP's exception handler
- *
- * Logs all exceptions to your firebug console and then stops the script.
- *
- * @param Exception $exception
- * @throws Exception
- */
- function exceptionHandler($exception)
- {
- $this->inExceptionHandler = true;
-
- header('HTTP/1.1 500 Internal Server Error');
-
- try {
- $this->fb($exception);
- } catch (Exception $e) {
- echo 'We had an exception: ' . $e;
- }
-
- $this->inExceptionHandler = false;
- }
-
- /**
- * Register FirePHP driver as your assert callback
- *
- * @param boolean $convertAssertionErrorsToExceptions
- * @param boolean $throwAssertionExceptions
- * @return mixed Returns the original setting or FALSE on errors
- */
- public function registerAssertionHandler($convertAssertionErrorsToExceptions = true, $throwAssertionExceptions = false)
- {
- $this->convertAssertionErrorsToExceptions = $convertAssertionErrorsToExceptions;
- $this->throwAssertionExceptions = $throwAssertionExceptions;
-
- if ($throwAssertionExceptions && !$convertAssertionErrorsToExceptions) {
- throw $this->newException('Cannot throw assertion exceptions as assertion errors are not being converted to exceptions!');
- }
-
- return assert_options(ASSERT_CALLBACK, array($this, 'assertionHandler'));
- }
-
- /**
- * FirePHP's assertion handler
- *
- * Logs all assertions to your firebug console and then stops the script.
- *
- * @param string $file File source of assertion
- * @param integer $line Line source of assertion
- * @param mixed $code Assertion code
- */
- public function assertionHandler($file, $line, $code)
- {
- if ($this->convertAssertionErrorsToExceptions) {
-
- $exception = new ErrorException('Assertion Failed - Code[ ' . $code . ' ]', 0, null, $file, $line);
-
- if ($this->throwAssertionExceptions) {
- throw $exception;
- } else {
- $this->fb($exception);
- }
-
- } else {
- $this->fb($code, 'Assertion Failed', FirePHP::ERROR, array('File' => $file, 'Line' => $line));
- }
- }
-
- /**
- * Start a group for following messages.
- *
- * Options:
- * Collapsed: [true|false]
- * Color: [#RRGGBB|ColorName]
- *
- * @param string $name
- * @param array $options OPTIONAL Instructions on how to log the group
- * @return true
- * @throws Exception
- */
- public function group($name, $options = null)
- {
-
- if (!$name) {
- throw $this->newException('You must specify a label for the group!');
- }
-
- if ($options) {
- if (!is_array($options)) {
- throw $this->newException('Options must be defined as an array!');
- }
- if (array_key_exists('Collapsed', $options)) {
- $options['Collapsed'] = ($options['Collapsed']) ? 'true' : 'false';
- }
- }
-
- return $this->fb(null, $name, FirePHP::GROUP_START, $options);
- }
-
- /**
- * Ends a group you have started before
- *
- * @return true
- * @throws Exception
- */
- public function groupEnd()
- {
- return $this->fb(null, null, FirePHP::GROUP_END);
- }
-
- /**
- * Log object with label to firebug console
- *
- * @see FirePHP::LOG
- * @param mixes $object
- * @param string $label
- * @return true
- * @throws Exception
- */
- public function log($object, $label = null, $options = array())
- {
- return $this->fb($object, $label, FirePHP::LOG, $options);
- }
-
- /**
- * Log object with label to firebug console
- *
- * @see FirePHP::INFO
- * @param mixes $object
- * @param string $label
- * @return true
- * @throws Exception
- */
- public function info($object, $label = null, $options = array())
- {
- return $this->fb($object, $label, FirePHP::INFO, $options);
- }
-
- /**
- * Log object with label to firebug console
- *
- * @see FirePHP::WARN
- * @param mixes $object
- * @param string $label
- * @return true
- * @throws Exception
- */
- public function warn($object, $label = null, $options = array())
- {
- return $this->fb($object, $label, FirePHP::WARN, $options);
- }
-
- /**
- * Log object with label to firebug console
- *
- * @see FirePHP::ERROR
- * @param mixes $object
- * @param string $label
- * @return true
- * @throws Exception
- */
- public function error($object, $label = null, $options = array())
- {
- return $this->fb($object, $label, FirePHP::ERROR, $options);
- }
-
- /**
- * Dumps key and variable to firebug server panel
- *
- * @see FirePHP::DUMP
- * @param string $key
- * @param mixed $variable
- * @return true
- * @throws Exception
- */
- public function dump($key, $variable, $options = array())
- {
- if (!is_string($key)) {
- throw $this->newException('Key passed to dump() is not a string');
- }
- if (strlen($key) > 100) {
- throw $this->newException('Key passed to dump() is longer than 100 characters');
- }
- if (!preg_match_all('/^[a-zA-Z0-9-_\.:]*$/', $key, $m)) {
- throw $this->newException('Key passed to dump() contains invalid characters [a-zA-Z0-9-_\.:]');
- }
- return $this->fb($variable, $key, FirePHP::DUMP, $options);
- }
-
- /**
- * Log a trace in the firebug console
- *
- * @see FirePHP::TRACE
- * @param string $label
- * @return true
- * @throws Exception
- */
- public function trace($label)
- {
- return $this->fb($label, FirePHP::TRACE);
- }
-
- /**
- * Log a table in the firebug console
- *
- * @see FirePHP::TABLE
- * @param string $label
- * @param string $table
- * @return true
- * @throws Exception
- */
- public function table($label, $table, $options = array())
- {
- return $this->fb($table, $label, FirePHP::TABLE, $options);
- }
-
- /**
- * Insight API wrapper
- *
- * @see Insight_Helper::to()
- */
- public static function to()
- {
- $instance = self::getInstance();
- if (!method_exists($instance, '_to')) {
- throw new Exception('FirePHP::to() implementation not loaded');
- }
- $args = func_get_args();
- return call_user_func_array(array($instance, '_to'), $args);
- }
-
- /**
- * Insight API wrapper
- *
- * @see Insight_Helper::plugin()
- */
- public static function plugin()
- {
- $instance = self::getInstance();
- if (!method_exists($instance, '_plugin')) {
- throw new Exception('FirePHP::plugin() implementation not loaded');
- }
- $args = func_get_args();
- return call_user_func_array(array($instance, '_plugin'), $args);
- }
-
- /**
- * Check if FirePHP is installed on client
- *
- * @return boolean
- */
- public function detectClientExtension()
- {
- // Check if FirePHP is installed on client via User-Agent header
- if (@preg_match_all('/\sFirePHP\/([\.\d]*)\s?/si', $this->getUserAgent(), $m) &&
- version_compare($m[1][0], '0.0.6', '>=')) {
- return true;
- } else
- // Check if FirePHP is installed on client via X-FirePHP-Version header
- if (@preg_match_all('/^([\.\d]*)$/si', $this->getRequestHeader('X-FirePHP-Version'), $m) &&
- version_compare($m[1][0], '0.0.6', '>=')) {
- return true;
- }
- return false;
- }
-
- /**
- * Log varible to Firebug
- *
- * @see http://www.firephp.org/Wiki/Reference/Fb
- * @param mixed $object The variable to be logged
- * @return boolean Return TRUE if message was added to headers, FALSE otherwise
- * @throws Exception
- */
- public function fb($object)
- {
- if ($this instanceof FirePHP_Insight && method_exists($this, '_logUpgradeClientMessage')) {
- if (!FirePHP_Insight::$upgradeClientMessageLogged) { // avoid infinite recursion as _logUpgradeClientMessage() logs a message
- $this->_logUpgradeClientMessage();
- }
- }
-
- static $insightGroupStack = array();
-
- if (!$this->getEnabled()) {
- return false;
- }
-
- if ($this->headersSent($filename, $linenum)) {
- // If we are logging from within the exception handler we cannot throw another exception
- if ($this->inExceptionHandler) {
- // Simply echo the error out to the page
- echo 'FirePHP ERROR: Headers already sent in ' . $filename . ' on line ' . $linenum . ' . Cannot send log data to FirePHP. You must have Output Buffering enabled via ob_start() or output_buffering ini directive.
';
- } else {
- throw $this->newException('Headers already sent in ' . $filename . ' on line ' . $linenum . '. Cannot send log data to FirePHP. You must have Output Buffering enabled via ob_start() or output_buffering ini directive.');
- }
- }
-
- $type = null;
- $label = null;
- $options = array();
-
- if (func_num_args() == 1) {
- } else if (func_num_args() == 2) {
- switch (func_get_arg(1)) {
- case self::LOG:
- case self::INFO:
- case self::WARN:
- case self::ERROR:
- case self::DUMP:
- case self::TRACE:
- case self::EXCEPTION:
- case self::TABLE:
- case self::GROUP_START:
- case self::GROUP_END:
- $type = func_get_arg(1);
- break;
- default:
- $label = func_get_arg(1);
- break;
- }
- } else if (func_num_args() == 3) {
- $type = func_get_arg(2);
- $label = func_get_arg(1);
- } else if (func_num_args() == 4) {
- $type = func_get_arg(2);
- $label = func_get_arg(1);
- $options = func_get_arg(3);
- } else {
- throw $this->newException('Wrong number of arguments to fb() function!');
- }
-
- if ($this->logToInsightConsole !== null && (get_class($this) == 'FirePHP_Insight' || is_subclass_of($this, 'FirePHP_Insight'))) {
- $trace = debug_backtrace();
- if (!$trace) return false;
- for ($i = 0; $i < sizeof($trace); $i++) {
- if (isset($trace[$i]['class'])) {
- if ($trace[$i]['class'] == 'FirePHP' || $trace[$i]['class'] == 'FB') {
- continue;
- }
- }
- if (isset($trace[$i]['file'])) {
- $path = $this->_standardizePath($trace[$i]['file']);
- if (substr($path, -18, 18) == 'FirePHPCore/fb.php' || substr($path, -29, 29) == 'FirePHPCore/FirePHP.class.php') {
- continue;
- }
- }
- if (isset($trace[$i]['function']) && $trace[$i]['function'] == 'fb' &&
- isset($trace[$i - 1]['file']) && substr($this->_standardizePath($trace[$i - 1]['file']), -18, 18) == 'FirePHPCore/fb.php') {
- continue;
- }
- if (isset($trace[$i]['class']) && $trace[$i]['class'] == 'FB' &&
- isset($trace[$i - 1]['file']) && substr($this->_standardizePath($trace[$i - 1]['file']), -18, 18) == 'FirePHPCore/fb.php') {
- continue;
- }
- break;
- }
- // adjust trace offset
- $msg = $this->logToInsightConsole->option('encoder.trace.offsetAdjustment', $i);
-
- if ($object instanceof Exception) {
- $type = self::EXCEPTION;
- }
- if ($label && $type != self::TABLE && $type != self::GROUP_START) {
- $msg = $msg->label($label);
- }
- switch ($type) {
- case self::DUMP:
- case self::LOG:
- return $msg->log($object);
- case self::INFO:
- return $msg->info($object);
- case self::WARN:
- return $msg->warn($object);
- case self::ERROR:
- return $msg->error($object);
- case self::TRACE:
- return $msg->trace($object);
- case self::EXCEPTION:
- return $this->plugin('error')->handleException($object, $msg);
- case self::TABLE:
- if (isset($object[0]) && !is_string($object[0]) && $label) {
- $object = array($label, $object);
- }
- return $msg->table($object[0], array_slice($object[1], 1), $object[1][0]);
- case self::GROUP_START:
- $insightGroupStack[] = $msg->group(md5($label))->open();
- return $msg->log($label);
- case self::GROUP_END:
- if (count($insightGroupStack) == 0) {
- throw new Error('Too many groupEnd() as opposed to group() calls!');
- }
- $group = array_pop($insightGroupStack);
- return $group->close();
- default:
- return $msg->log($object);
- }
- }
-
- if (!$this->detectClientExtension()) {
- return false;
- }
-
- $meta = array();
- $skipFinalObjectEncode = false;
-
- if ($object instanceof Exception) {
-
- $meta['file'] = $this->_escapeTraceFile($object->getFile());
- $meta['line'] = $object->getLine();
-
- $trace = $object->getTrace();
- if ($object instanceof ErrorException
- && isset($trace[0]['function'])
- && $trace[0]['function'] == 'errorHandler'
- && isset($trace[0]['class'])
- && $trace[0]['class'] == 'FirePHP') {
-
- $severity = false;
- switch ($object->getSeverity()) {
- case E_WARNING:
- $severity = 'E_WARNING';
- break;
-
- case E_NOTICE:
- $severity = 'E_NOTICE';
- break;
-
- case E_USER_ERROR:
- $severity = 'E_USER_ERROR';
- break;
-
- case E_USER_WARNING:
- $severity = 'E_USER_WARNING';
- break;
-
- case E_USER_NOTICE:
- $severity = 'E_USER_NOTICE';
- break;
-
- case E_STRICT:
- $severity = 'E_STRICT';
- break;
-
- case E_RECOVERABLE_ERROR:
- $severity = 'E_RECOVERABLE_ERROR';
- break;
-
- case E_DEPRECATED:
- $severity = 'E_DEPRECATED';
- break;
-
- case E_USER_DEPRECATED:
- $severity = 'E_USER_DEPRECATED';
- break;
- }
-
- $object = array('Class' => get_class($object),
- 'Message' => $severity . ': ' . $object->getMessage(),
- 'File' => $this->_escapeTraceFile($object->getFile()),
- 'Line' => $object->getLine(),
- 'Type' => 'trigger',
- 'Trace' => $this->_escapeTrace(array_splice($trace, 2)));
- $skipFinalObjectEncode = true;
- } else {
- $object = array('Class' => get_class($object),
- 'Message' => $object->getMessage(),
- 'File' => $this->_escapeTraceFile($object->getFile()),
- 'Line' => $object->getLine(),
- 'Type' => 'throw',
- 'Trace' => $this->_escapeTrace($trace));
- $skipFinalObjectEncode = true;
- }
- $type = self::EXCEPTION;
-
- } else if ($type == self::TRACE) {
-
- $trace = debug_backtrace();
- if (!$trace) return false;
- for ($i = 0; $i < sizeof($trace); $i++) {
-
- if (isset($trace[$i]['class'])
- && isset($trace[$i]['file'])
- && ($trace[$i]['class'] == 'FirePHP'
- || $trace[$i]['class'] == 'FB')
- && (substr($this->_standardizePath($trace[$i]['file']), -18, 18) == 'FirePHPCore/fb.php'
- || substr($this->_standardizePath($trace[$i]['file']), -29, 29) == 'FirePHPCore/FirePHP.class.php')) {
- /* Skip - FB::trace(), FB::send(), $firephp->trace(), $firephp->fb() */
- } else
- if (isset($trace[$i]['class'])
- && isset($trace[$i+1]['file'])
- && $trace[$i]['class'] == 'FirePHP'
- && substr($this->_standardizePath($trace[$i + 1]['file']), -18, 18) == 'FirePHPCore/fb.php') {
- /* Skip fb() */
- } else
- if ($trace[$i]['function'] == 'fb'
- || $trace[$i]['function'] == 'trace'
- || $trace[$i]['function'] == 'send') {
-
- $object = array('Class' => isset($trace[$i]['class']) ? $trace[$i]['class'] : '',
- 'Type' => isset($trace[$i]['type']) ? $trace[$i]['type'] : '',
- 'Function' => isset($trace[$i]['function']) ? $trace[$i]['function'] : '',
- 'Message' => $trace[$i]['args'][0],
- 'File' => isset($trace[$i]['file']) ? $this->_escapeTraceFile($trace[$i]['file']) : '',
- 'Line' => isset($trace[$i]['line']) ? $trace[$i]['line'] : '',
- 'Args' => isset($trace[$i]['args']) ? $this->encodeObject($trace[$i]['args']) : '',
- 'Trace' => $this->_escapeTrace(array_splice($trace, $i + 1)));
-
- $skipFinalObjectEncode = true;
- $meta['file'] = isset($trace[$i]['file']) ? $this->_escapeTraceFile($trace[$i]['file']) : '';
- $meta['line'] = isset($trace[$i]['line']) ? $trace[$i]['line'] : '';
- break;
- }
- }
-
- } else
- if ($type == self::TABLE) {
-
- if (isset($object[0]) && is_string($object[0])) {
- $object[1] = $this->encodeTable($object[1]);
- } else {
- $object = $this->encodeTable($object);
- }
-
- $skipFinalObjectEncode = true;
-
- } else if ($type == self::GROUP_START) {
-
- if (!$label) {
- throw $this->newException('You must specify a label for the group!');
- }
-
- } else {
- if ($type === null) {
- $type = self::LOG;
- }
- }
-
- if ($this->options['includeLineNumbers']) {
- if (!isset($meta['file']) || !isset($meta['line'])) {
-
- $trace = debug_backtrace();
- for ($i = 0; $trace && $i < sizeof($trace); $i++) {
-
- if (isset($trace[$i]['class'])
- && isset($trace[$i]['file'])
- && ($trace[$i]['class'] == 'FirePHP'
- || $trace[$i]['class'] == 'FB')
- && (substr($this->_standardizePath($trace[$i]['file']), -18, 18) == 'FirePHPCore/fb.php'
- || substr($this->_standardizePath($trace[$i]['file']), -29, 29) == 'FirePHPCore/FirePHP.class.php')) {
- /* Skip - FB::trace(), FB::send(), $firephp->trace(), $firephp->fb() */
- } else
- if (isset($trace[$i]['class'])
- && isset($trace[$i + 1]['file'])
- && $trace[$i]['class'] == 'FirePHP'
- && substr($this->_standardizePath($trace[$i + 1]['file']), -18, 18) == 'FirePHPCore/fb.php') {
- /* Skip fb() */
- } else
- if (isset($trace[$i]['file'])
- && substr($this->_standardizePath($trace[$i]['file']), -18, 18) == 'FirePHPCore/fb.php') {
- /* Skip FB::fb() */
- } else {
- $meta['file'] = isset($trace[$i]['file']) ? $this->_escapeTraceFile($trace[$i]['file']) : '';
- $meta['line'] = isset($trace[$i]['line']) ? $trace[$i]['line'] : '';
- break;
- }
- }
- }
- } else {
- unset($meta['file']);
- unset($meta['line']);
- }
-
- $this->setHeader('X-Wf-Protocol-1', 'http://meta.wildfirehq.org/Protocol/JsonStream/0.2');
- $this->setHeader('X-Wf-1-Plugin-1', 'http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/' . self::VERSION);
-
- $structureIndex = 1;
- if ($type == self::DUMP) {
- $structureIndex = 2;
- $this->setHeader('X-Wf-1-Structure-2', 'http://meta.firephp.org/Wildfire/Structure/FirePHP/Dump/0.1');
- } else {
- $this->setHeader('X-Wf-1-Structure-1', 'http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1');
- }
-
- if ($type == self::DUMP) {
- $msg = '{"' . $label . '":' . $this->jsonEncode($object, $skipFinalObjectEncode) . '}';
- } else {
- $msgMeta = $options;
- $msgMeta['Type'] = $type;
- if ($label !== null) {
- $msgMeta['Label'] = $label;
- }
- if (isset($meta['file']) && !isset($msgMeta['File'])) {
- $msgMeta['File'] = $meta['file'];
- }
- if (isset($meta['line']) && !isset($msgMeta['Line'])) {
- $msgMeta['Line'] = $meta['line'];
- }
- $msg = '[' . $this->jsonEncode($msgMeta) . ',' . $this->jsonEncode($object, $skipFinalObjectEncode) . ']';
- }
-
- $parts = explode("\n", chunk_split($msg, 5000, "\n"));
-
- for ($i = 0; $i < count($parts); $i++) {
-
- $part = $parts[$i];
- if ($part) {
-
- if (count($parts) > 2) {
- // Message needs to be split into multiple parts
- $this->setHeader('X-Wf-1-' . $structureIndex . '-' . '1-' . $this->messageIndex,
- (($i == 0) ? strlen($msg) : '')
- . '|' . $part . '|'
- . (($i < count($parts) - 2) ? '\\' : ''));
- } else {
- $this->setHeader('X-Wf-1-' . $structureIndex . '-' . '1-' . $this->messageIndex,
- strlen($part) . '|' . $part . '|');
- }
-
- $this->messageIndex++;
-
- if ($this->messageIndex > 99999) {
- throw $this->newException('Maximum number (99,999) of messages reached!');
- }
- }
- }
-
- $this->setHeader('X-Wf-1-Index', $this->messageIndex - 1);
-
- return true;
- }
-
- /**
- * Standardizes path for windows systems.
- *
- * @param string $path
- * @return string
- */
- protected function _standardizePath($path)
- {
- return preg_replace('/\\\\+/', '/', $path);
- }
-
- /**
- * Escape trace path for windows systems
- *
- * @param array $trace
- * @return array
- */
- protected function _escapeTrace($trace)
- {
- if (!$trace) return $trace;
- for ($i = 0; $i < sizeof($trace); $i++) {
- if (isset($trace[$i]['file'])) {
- $trace[$i]['file'] = $this->_escapeTraceFile($trace[$i]['file']);
- }
- if (isset($trace[$i]['args'])) {
- $trace[$i]['args'] = $this->encodeObject($trace[$i]['args']);
- }
- }
- return $trace;
- }
-
- /**
- * Escape file information of trace for windows systems
- *
- * @param string $file
- * @return string
- */
- protected function _escapeTraceFile($file)
- {
- /* Check if we have a windows filepath */
- if (strpos($file, '\\')) {
- /* First strip down to single \ */
-
- $file = preg_replace('/\\\\+/', '\\', $file);
-
- return $file;
- }
- return $file;
- }
-
- /**
- * Check if headers have already been sent
- *
- * @param string $filename
- * @param integer $linenum
- */
- protected function headersSent(&$filename, &$linenum)
- {
- return headers_sent($filename, $linenum);
- }
-
- /**
- * Send header
- *
- * @param string $name
- * @param string $value
- */
- protected function setHeader($name, $value)
- {
- return header($name . ': ' . $value);
- }
-
- /**
- * Get user agent
- *
- * @return string|false
- */
- protected function getUserAgent()
- {
- if (!isset($_SERVER['HTTP_USER_AGENT'])) return false;
- return $_SERVER['HTTP_USER_AGENT'];
- }
-
- /**
- * Get all request headers
- *
- * @return array
- */
- public static function getAllRequestHeaders()
- {
- static $_cachedHeaders = false;
- if ($_cachedHeaders !== false) {
- return $_cachedHeaders;
- }
- $headers = array();
- if (function_exists('getallheaders')) {
- foreach (getallheaders() as $name => $value) {
- $headers[strtolower($name)] = $value;
- }
- } else {
- foreach ($_SERVER as $name => $value) {
- if (substr($name, 0, 5) == 'HTTP_') {
- $headers[strtolower(str_replace(' ', '-', str_replace('_', ' ', substr($name, 5))))] = $value;
- }
- }
- }
- return $_cachedHeaders = $headers;
- }
-
- /**
- * Get a request header
- *
- * @return string|false
- */
- protected function getRequestHeader($name)
- {
- $headers = self::getAllRequestHeaders();
- if (isset($headers[strtolower($name)])) {
- return $headers[strtolower($name)];
- }
- return false;
- }
-
- /**
- * Returns a new exception
- *
- * @param string $message
- * @return Exception
- */
- protected function newException($message)
- {
- return new Exception($message);
- }
-
- /**
- * Encode an object into a JSON string
- *
- * Uses PHP's jeson_encode() if available
- *
- * @param object $object The object to be encoded
- * @param boolean $skipObjectEncode
- * @return string The JSON string
- */
- public function jsonEncode($object, $skipObjectEncode = false)
- {
- if (!$skipObjectEncode) {
- $object = $this->encodeObject($object);
- }
-
- if (function_exists('json_encode')
- && $this->options['useNativeJsonEncode'] != false) {
-
- return json_encode($object);
- } else {
- return $this->json_encode($object);
- }
- }
-
- /**
- * Encodes a table by encoding each row and column with encodeObject()
- *
- * @param array $table The table to be encoded
- * @return array
- */
- protected function encodeTable($table)
- {
- if (!$table) return $table;
-
- $newTable = array();
- foreach ($table as $row) {
-
- if (is_array($row)) {
- $newRow = array();
-
- foreach ($row as $item) {
- $newRow[] = $this->encodeObject($item);
- }
-
- $newTable[] = $newRow;
- }
- }
-
- return $newTable;
- }
-
- /**
- * Encodes an object including members with
- * protected and private visibility
- *
- * @param object $object The object to be encoded
- * @param integer $Depth The current traversal depth
- * @return array All members of the object
- */
- protected function encodeObject($object, $objectDepth = 1, $arrayDepth = 1, $maxDepth = 1)
- {
- if ($maxDepth > $this->options['maxDepth']) {
- return '** Max Depth (' . $this->options['maxDepth'] . ') **';
- }
-
- $return = array();
-
- if (is_resource($object)) {
-
- return '** ' . (string) $object . ' **';
-
- } else if (is_object($object)) {
-
- if ($objectDepth > $this->options['maxObjectDepth']) {
- return '** Max Object Depth (' . $this->options['maxObjectDepth'] . ') **';
- }
-
- foreach ($this->objectStack as $refVal) {
- if ($refVal === $object) {
- return '** Recursion (' . get_class($object) . ') **';
- }
- }
- array_push($this->objectStack, $object);
-
- $return['__className'] = $class = get_class($object);
- $classLower = strtolower($class);
-
- $reflectionClass = new ReflectionClass($class);
- $properties = array();
- foreach ($reflectionClass->getProperties() as $property) {
- $properties[$property->getName()] = $property;
- }
-
- $members = (array)$object;
-
- foreach ($properties as $plainName => $property) {
-
- $name = $rawName = $plainName;
- if ($property->isStatic()) {
- $name = 'static:' . $name;
- }
- if ($property->isPublic()) {
- $name = 'public:' . $name;
- } else if ($property->isPrivate()) {
- $name = 'private:' . $name;
- $rawName = "\0" . $class . "\0" . $rawName;
- } else if ($property->isProtected()) {
- $name = 'protected:' . $name;
- $rawName = "\0" . '*' . "\0" . $rawName;
- }
-
- if (!(isset($this->objectFilters[$classLower])
- && is_array($this->objectFilters[$classLower])
- && in_array($plainName, $this->objectFilters[$classLower]))) {
-
- if (array_key_exists($rawName, $members) && !$property->isStatic()) {
- $return[$name] = $this->encodeObject($members[$rawName], $objectDepth + 1, 1, $maxDepth + 1);
- } else {
- if (method_exists($property, 'setAccessible')) {
- $property->setAccessible(true);
- $return[$name] = $this->encodeObject($property->getValue($object), $objectDepth + 1, 1, $maxDepth + 1);
- } else
- if ($property->isPublic()) {
- $return[$name] = $this->encodeObject($property->getValue($object), $objectDepth + 1, 1, $maxDepth + 1);
- } else {
- $return[$name] = '** Need PHP 5.3 to get value **';
- }
- }
- } else {
- $return[$name] = '** Excluded by Filter **';
- }
- }
-
- // Include all members that are not defined in the class
- // but exist in the object
- foreach ($members as $rawName => $value) {
-
- $name = $rawName;
-
- if ($name{0} == "\0") {
- $parts = explode("\0", $name);
- $name = $parts[2];
- }
-
- $plainName = $name;
-
- if (!isset($properties[$name])) {
- $name = 'undeclared:' . $name;
-
- if (!(isset($this->objectFilters[$classLower])
- && is_array($this->objectFilters[$classLower])
- && in_array($plainName, $this->objectFilters[$classLower]))) {
-
- $return[$name] = $this->encodeObject($value, $objectDepth + 1, 1, $maxDepth + 1);
- } else {
- $return[$name] = '** Excluded by Filter **';
- }
- }
- }
-
- array_pop($this->objectStack);
-
- } elseif (is_array($object)) {
-
- if ($arrayDepth > $this->options['maxArrayDepth']) {
- return '** Max Array Depth (' . $this->options['maxArrayDepth'] . ') **';
- }
-
- foreach ($object as $key => $val) {
-
- // Encoding the $GLOBALS PHP array causes an infinite loop
- // if the recursion is not reset here as it contains
- // a reference to itself. This is the only way I have come up
- // with to stop infinite recursion in this case.
- if ($key == 'GLOBALS'
- && is_array($val)
- && array_key_exists('GLOBALS', $val)) {
- $val['GLOBALS'] = '** Recursion (GLOBALS) **';
- }
-
- if (!$this->is_utf8($key)) {
- $key = utf8_encode($key);
- }
-
- $return[$key] = $this->encodeObject($val, 1, $arrayDepth + 1, $maxDepth + 1);
- }
- } else {
- if ($this->is_utf8($object)) {
- return $object;
- } else {
- return utf8_encode($object);
- }
- }
- return $return;
- }
-
- /**
- * Returns true if $string is valid UTF-8 and false otherwise.
- *
- * @param mixed $str String to be tested
- * @return boolean
- */
- protected function is_utf8($str)
- {
- if (function_exists('mb_detect_encoding')) {
- return (
- mb_detect_encoding($str, 'UTF-8', true) == 'UTF-8' &&
- ($str === null || $this->jsonEncode($str, true) !== 'null')
- );
- }
- $c = 0;
- $b = 0;
- $bits = 0;
- $len = strlen($str);
- for ($i = 0; $i < $len; $i++) {
- $c = ord($str[$i]);
- if ($c > 128) {
- if (($c >= 254)) return false;
- elseif ($c >= 252) $bits = 6;
- elseif ($c >= 248) $bits = 5;
- elseif ($c >= 240) $bits = 4;
- elseif ($c >= 224) $bits = 3;
- elseif ($c >= 192) $bits = 2;
- else return false;
- if (($i + $bits) > $len) return false;
- while($bits > 1) {
- $i++;
- $b = ord($str[$i]);
- if ($b < 128 || $b > 191) return false;
- $bits--;
- }
- }
- }
- return ($str === null || $this->jsonEncode($str, true) !== 'null');
- }
-
- /**
- * Converts to and from JSON format.
- *
- * JSON (JavaScript Object Notation) is a lightweight data-interchange
- * format. It is easy for humans to read and write. It is easy for machines
- * to parse and generate. It is based on a subset of the JavaScript
- * Programming Language, Standard ECMA-262 3rd Edition - December 1999.
- * This feature can also be found in Python. JSON is a text format that is
- * completely language independent but uses conventions that are familiar
- * to programmers of the C-family of languages, including C, C++, C#, Java,
- * JavaScript, Perl, TCL, and many others. These properties make JSON an
- * ideal data-interchange language.
- *
- * This package provides a simple encoder and decoder for JSON notation. It
- * is intended for use with client-side Javascript applications that make
- * use of HTTPRequest to perform server communication functions - data can
- * be encoded into JSON notation for use in a client-side javascript, or
- * decoded from incoming Javascript requests. JSON format is native to
- * Javascript, and can be directly eval()'ed with no further parsing
- * overhead
- *
- * All strings should be in ASCII or UTF-8 format!
- *
- * LICENSE: Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met: Redistributions of source code must retain the
- * above copyright notice, this list of conditions and the following
- * disclaimer. Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
- * NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
- * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
- * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * @category
- * @package Services_JSON
- * @author Michal Migurski
- * @author Matt Knapp
- * @author Brett Stimmerman
- * @author Christoph Dorn
- * @copyright 2005 Michal Migurski
- * @version CVS: $Id: JSON.php,v 1.31 2006/06/28 05:54:17 migurski Exp $
- * @license http://www.opensource.org/licenses/bsd-license.php
- * @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198
- */
-
-
- /**
- * Keep a list of objects as we descend into the array so we can detect recursion.
- */
- private $json_objectStack = array();
-
-
- /**
- * convert a string from one UTF-8 char to one UTF-16 char
- *
- * Normally should be handled by mb_convert_encoding, but
- * provides a slower PHP-only method for installations
- * that lack the multibye string extension.
- *
- * @param string $utf8 UTF-8 character
- * @return string UTF-16 character
- * @access private
- */
- private function json_utf82utf16($utf8)
- {
- // oh please oh please oh please oh please oh please
- if (function_exists('mb_convert_encoding')) {
- return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8');
- }
-
- switch (strlen($utf8)) {
- case 1:
- // this case should never be reached, because we are in ASCII range
- // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- return $utf8;
-
- case 2:
- // return a UTF-16 character from a 2-byte UTF-8 char
- // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- return chr(0x07 & (ord($utf8{0}) >> 2))
- . chr((0xC0 & (ord($utf8{0}) << 6))
- | (0x3F & ord($utf8{1})));
-
- case 3:
- // return a UTF-16 character from a 3-byte UTF-8 char
- // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- return chr((0xF0 & (ord($utf8{0}) << 4))
- | (0x0F & (ord($utf8{1}) >> 2)))
- . chr((0xC0 & (ord($utf8{1}) << 6))
- | (0x7F & ord($utf8{2})));
- }
-
- // ignoring UTF-32 for now, sorry
- return '';
- }
-
- /**
- * encodes an arbitrary variable into JSON format
- *
- * @param mixed $var any number, boolean, string, array, or object to be encoded.
- * see argument 1 to Services_JSON() above for array-parsing behavior.
- * if var is a strng, note that encode() always expects it
- * to be in ASCII or UTF-8 format!
- *
- * @return mixed JSON string representation of input var or an error if a problem occurs
- * @access public
- */
- private function json_encode($var)
- {
- if (is_object($var)) {
- if (in_array($var, $this->json_objectStack)) {
- return '"** Recursion **"';
- }
- }
-
- switch (gettype($var)) {
- case 'boolean':
- return $var ? 'true' : 'false';
-
- case 'NULL':
- return 'null';
-
- case 'integer':
- return (int) $var;
-
- case 'double':
- case 'float':
- return (float) $var;
-
- case 'string':
- // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT
- $ascii = '';
- $strlen_var = strlen($var);
-
- /*
- * Iterate over every character in the string,
- * escaping with a slash or encoding to UTF-8 where necessary
- */
- for ($c = 0; $c < $strlen_var; ++$c) {
-
- $ord_var_c = ord($var{$c});
-
- switch (true) {
- case $ord_var_c == 0x08:
- $ascii .= '\b';
- break;
- case $ord_var_c == 0x09:
- $ascii .= '\t';
- break;
- case $ord_var_c == 0x0A:
- $ascii .= '\n';
- break;
- case $ord_var_c == 0x0C:
- $ascii .= '\f';
- break;
- case $ord_var_c == 0x0D:
- $ascii .= '\r';
- break;
-
- case $ord_var_c == 0x22:
- case $ord_var_c == 0x2F:
- case $ord_var_c == 0x5C:
- // double quote, slash, slosh
- $ascii .= '\\' . $var{$c};
- break;
-
- case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
- // characters U-00000000 - U-0000007F (same as ASCII)
- $ascii .= $var{$c};
- break;
-
- case (($ord_var_c & 0xE0) == 0xC0):
- // characters U-00000080 - U-000007FF, mask 110XXXXX
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- $char = pack('C*', $ord_var_c, ord($var{$c + 1}));
- $c += 1;
- $utf16 = $this->json_utf82utf16($char);
- $ascii .= sprintf('\u%04s', bin2hex($utf16));
- break;
-
- case (($ord_var_c & 0xF0) == 0xE0):
- // characters U-00000800 - U-0000FFFF, mask 1110XXXX
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- $char = pack('C*', $ord_var_c,
- ord($var{$c + 1}),
- ord($var{$c + 2}));
- $c += 2;
- $utf16 = $this->json_utf82utf16($char);
- $ascii .= sprintf('\u%04s', bin2hex($utf16));
- break;
-
- case (($ord_var_c & 0xF8) == 0xF0):
- // characters U-00010000 - U-001FFFFF, mask 11110XXX
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- $char = pack('C*', $ord_var_c,
- ord($var{$c + 1}),
- ord($var{$c + 2}),
- ord($var{$c + 3}));
- $c += 3;
- $utf16 = $this->json_utf82utf16($char);
- $ascii .= sprintf('\u%04s', bin2hex($utf16));
- break;
-
- case (($ord_var_c & 0xFC) == 0xF8):
- // characters U-00200000 - U-03FFFFFF, mask 111110XX
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- $char = pack('C*', $ord_var_c,
- ord($var{$c + 1}),
- ord($var{$c + 2}),
- ord($var{$c + 3}),
- ord($var{$c + 4}));
- $c += 4;
- $utf16 = $this->json_utf82utf16($char);
- $ascii .= sprintf('\u%04s', bin2hex($utf16));
- break;
-
- case (($ord_var_c & 0xFE) == 0xFC):
- // characters U-04000000 - U-7FFFFFFF, mask 1111110X
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- $char = pack('C*', $ord_var_c,
- ord($var{$c + 1}),
- ord($var{$c + 2}),
- ord($var{$c + 3}),
- ord($var{$c + 4}),
- ord($var{$c + 5}));
- $c += 5;
- $utf16 = $this->json_utf82utf16($char);
- $ascii .= sprintf('\u%04s', bin2hex($utf16));
- break;
- }
- }
-
- return '"' . $ascii . '"';
-
- case 'array':
- /*
- * As per JSON spec if any array key is not an integer
- * we must treat the the whole array as an object. We
- * also try to catch a sparsely populated associative
- * array with numeric keys here because some JS engines
- * will create an array with empty indexes up to
- * max_index which can cause memory issues and because
- * the keys, which may be relevant, will be remapped
- * otherwise.
- *
- * As per the ECMA and JSON specification an object may
- * have any string as a property. Unfortunately due to
- * a hole in the ECMA specification if the key is a
- * ECMA reserved word or starts with a digit the
- * parameter is only accessible using ECMAScript's
- * bracket notation.
- */
-
- // treat as a JSON object
- if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) {
-
- $this->json_objectStack[] = $var;
-
- $properties = array_map(array($this, 'json_name_value'),
- array_keys($var),
- array_values($var));
-
- array_pop($this->json_objectStack);
-
- foreach ($properties as $property) {
- if ($property instanceof Exception) {
- return $property;
- }
- }
-
- return '{' . join(',', $properties) . '}';
- }
-
- $this->json_objectStack[] = $var;
-
- // treat it like a regular array
- $elements = array_map(array($this, 'json_encode'), $var);
-
- array_pop($this->json_objectStack);
-
- foreach ($elements as $element) {
- if ($element instanceof Exception) {
- return $element;
- }
- }
-
- return '[' . join(',', $elements) . ']';
-
- case 'object':
- $vars = self::encodeObject($var);
-
- $this->json_objectStack[] = $var;
-
- $properties = array_map(array($this, 'json_name_value'),
- array_keys($vars),
- array_values($vars));
-
- array_pop($this->json_objectStack);
-
- foreach ($properties as $property) {
- if ($property instanceof Exception) {
- return $property;
- }
- }
-
- return '{' . join(',', $properties) . '}';
-
- default:
- return null;
- }
- }
-
- /**
- * array-walking function for use in generating JSON-formatted name-value pairs
- *
- * @param string $name name of key to use
- * @param mixed $value reference to an array element to be encoded
- *
- * @return string JSON-formatted name-value pair, like '"name":value'
- * @access private
- */
- private function json_name_value($name, $value)
- {
- // Encoding the $GLOBALS PHP array causes an infinite loop
- // if the recursion is not reset here as it contains
- // a reference to itself. This is the only way I have come up
- // with to stop infinite recursion in this case.
- if ($name == 'GLOBALS'
- && is_array($value)
- && array_key_exists('GLOBALS', $value)) {
- $value['GLOBALS'] = '** Recursion **';
- }
-
- $encodedValue = $this->json_encode($value);
-
- if ($encodedValue instanceof Exception) {
- return $encodedValue;
- }
-
- return $this->json_encode(strval($name)) . ':' . $encodedValue;
- }
-
- /**
- * @deprecated
- */
- public function setProcessorUrl($URL)
- {
- trigger_error('The FirePHP::setProcessorUrl() method is no longer supported', E_USER_DEPRECATED);
- }
-
- /**
- * @deprecated
- */
- public function setRendererUrl($URL)
- {
- trigger_error('The FirePHP::setRendererUrl() method is no longer supported', E_USER_DEPRECATED);
- }
-}
\ No newline at end of file
diff --git a/vendor/firephp/firephp-core/lib/FirePHPCore/FirePHP.class.php4 b/vendor/firephp/firephp-core/lib/FirePHPCore/FirePHP.class.php4
deleted file mode 100644
index d702cea4..00000000
--- a/vendor/firephp/firephp-core/lib/FirePHPCore/FirePHP.class.php4
+++ /dev/null
@@ -1,1327 +0,0 @@
-, Copyright 2007, New BSD License
-// - qbbr, Michael Day , Copyright 2008, New BSD License
-// - cadorn, Christoph Dorn , Copyright 2011, MIT License
-
-/**
- * *** BEGIN LICENSE BLOCK *****
- *
- * [MIT License](http://www.opensource.org/licenses/mit-license.php)
- *
- * Copyright (c) 2007+ [Christoph Dorn](http://www.christophdorn.com/)
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * ***** END LICENSE BLOCK *****
- *
- * This verion of FirePHPCore is for use with PHP4. If you do not require PHP4
- * compatibility, it is suggested you use FirePHPCore.class.php instead.
- *
- * @copyright Copyright (C) 2007+ Christoph Dorn
- * @author Christoph Dorn
- * @author Michael Day
- * @license [MIT License](http://www.opensource.org/licenses/mit-license.php)
- * @package FirePHPCore
- */
-
-/**
- * FirePHP version
- *
- * @var string
- */
-define('FirePHP_VERSION', '0.3'); // @pinf replace '0.3' with '%%VERSION%%'
-
-/**
- * Firebug LOG level
- *
- * Logs a message to firebug console
- *
- * @var string
- */
-define('FirePHP_LOG', 'LOG');
-
-/**
- * Firebug INFO level
- *
- * Logs a message to firebug console and displays an info icon before the message
- *
- * @var string
- */
-define('FirePHP_INFO', 'INFO');
-
-/**
- * Firebug WARN level
- *
- * Logs a message to firebug console, displays a warning icon before the message and colors the line turquoise
- *
- * @var string
- */
-define('FirePHP_WARN', 'WARN');
-
-/**
- * Firebug ERROR level
- *
- * Logs a message to firebug console, displays an error icon before the message and colors the line yellow. Also increments the firebug error count.
- *
- * @var string
- */
-define('FirePHP_ERROR', 'ERROR');
-
-/**
- * Dumps a variable to firebug's server panel
- *
- * @var string
- */
-define('FirePHP_DUMP', 'DUMP');
-
-/**
- * Displays a stack trace in firebug console
- *
- * @var string
- */
-define('FirePHP_TRACE', 'TRACE');
-
-/**
- * Displays a table in firebug console
- *
- * @var string
- */
-define('FirePHP_TABLE', 'TABLE');
-
-/**
- * Starts a group in firebug console
- *
- * @var string
- */
-define('FirePHP_GROUP_START', 'GROUP_START');
-
-/**
- * Ends a group in firebug console
- *
- * @var string
- */
-define('FirePHP_GROUP_END', 'GROUP_END');
-
-/**
- * Sends the given data to the FirePHP Firefox Extension.
- * The data can be displayed in the Firebug Console or in the
- * "Server" request tab.
- *
- * For more information see: http://www.firephp.org/
- *
- * @copyright Copyright (C) 2007+ Christoph Dorn
- * @author Christoph Dorn
- * @author Michael Day
- * @license [MIT License](http://www.opensource.org/licenses/mit-license.php)
- * @package FirePHPCore
- */
-class FirePHP {
- /**
- * Wildfire protocol message index
- *
- * @var int
- */
- var $messageIndex = 1;
-
- /**
- * Options for the library
- *
- * @var array
- */
- var $options = array('maxObjectDepth' => 5,
- 'maxArrayDepth' => 5,
- 'useNativeJsonEncode' => true,
- 'includeLineNumbers' => true);
-
- /**
- * Filters used to exclude object members when encoding
- *
- * @var array
- */
- var $objectFilters = array();
-
- /**
- * A stack of objects used to detect recursion during object encoding
- *
- * @var object
- */
- var $objectStack = array();
-
- /**
- * Flag to enable/disable logging
- *
- * @var boolean
- */
- var $enabled = true;
-
- /**
- * The object constructor
- */
- function FirePHP() {
- }
-
-
- /**
- * When the object gets serialized only include specific object members.
- *
- * @return array
- */
- function __sleep() {
- return array('options','objectFilters','enabled');
- }
-
- /**
- * Gets singleton instance of FirePHP
- *
- * @param boolean $AutoCreate
- * @return FirePHP
- */
- function &getInstance($AutoCreate=false) {
- global $FirePHP_Instance;
-
- if($AutoCreate===true && !$FirePHP_Instance) {
- $FirePHP_Instance = new FirePHP();
- }
-
- return $FirePHP_Instance;
- }
-
- /**
- * Enable and disable logging to Firebug
- *
- * @param boolean $Enabled TRUE to enable, FALSE to disable
- * @return void
- */
- function setEnabled($Enabled) {
- $this->enabled = $Enabled;
- }
-
- /**
- * Check if logging is enabled
- *
- * @return boolean TRUE if enabled
- */
- function getEnabled() {
- return $this->enabled;
- }
-
- /**
- * Specify a filter to be used when encoding an object
- *
- * Filters are used to exclude object members.
- *
- * @param string $Class The class name of the object
- * @param array $Filter An array of members to exclude
- * @return void
- */
- function setObjectFilter($Class, $Filter) {
- $this->objectFilters[strtolower($Class)] = $Filter;
- }
-
- /**
- * Set some options for the library
- *
- * Options:
- * - maxObjectDepth: The maximum depth to traverse objects (default: 5)
- * - maxArrayDepth: The maximum depth to traverse arrays (default: 5)
- * - useNativeJsonEncode: If true will use json_encode() (default: true)
- * - includeLineNumbers: If true will include line numbers and filenames (default: true)
- *
- * @param array $Options The options to be set
- * @return void
- */
- function setOptions($Options) {
- $this->options = array_merge($this->options,$Options);
- }
-
- /**
- * Get options from the library
- *
- * @return array The currently set options
- */
- function getOptions() {
- return $this->options;
- }
-
- /**
- * Register FirePHP as your error handler
- *
- * Will use FirePHP to log each php error.
- *
- * @return mixed Returns a string containing the previously defined error handler (if any)
- */
- function registerErrorHandler()
- {
- //NOTE: The following errors will not be caught by this error handler:
- // E_ERROR, E_PARSE, E_CORE_ERROR,
- // E_CORE_WARNING, E_COMPILE_ERROR,
- // E_COMPILE_WARNING, E_STRICT
-
- return set_error_handler(array($this,'errorHandler'));
- }
-
- /**
- * FirePHP's error handler
- *
- * Logs each php error that will occur.
- *
- * @param int $errno
- * @param string $errstr
- * @param string $errfile
- * @param int $errline
- * @param array $errcontext
- */
- function errorHandler($errno, $errstr, $errfile, $errline, $errcontext)
- {
- global $FirePHP_Instance;
- // Don't log error if error reporting is switched off
- if (error_reporting() == 0) {
- return;
- }
- // Only log error for errors we are asking for
- if (error_reporting() & $errno) {
- $FirePHP_Instance->group($errstr);
- $FirePHP_Instance->error("{$errfile}, line $errline");
- $FirePHP_Instance->groupEnd();
- }
- }
-
- /**
- * Register FirePHP driver as your assert callback
- *
- * @return mixed Returns the original setting
- */
- function registerAssertionHandler()
- {
- return assert_options(ASSERT_CALLBACK, array($this, 'assertionHandler'));
- }
-
- /**
- * FirePHP's assertion handler
- *
- * Logs all assertions to your firebug console and then stops the script.
- *
- * @param string $file File source of assertion
- * @param int $line Line source of assertion
- * @param mixed $code Assertion code
- */
- function assertionHandler($file, $line, $code)
- {
- $this->fb($code, 'Assertion Failed', FirePHP_ERROR, array('File'=>$file,'Line'=>$line));
- }
-
- /**
- * Set custom processor url for FirePHP
- *
- * @param string $URL
- */
- function setProcessorUrl($URL)
- {
- $this->setHeader('X-FirePHP-ProcessorURL', $URL);
- }
-
- /**
- * Set custom renderer url for FirePHP
- *
- * @param string $URL
- */
- function setRendererUrl($URL)
- {
- $this->setHeader('X-FirePHP-RendererURL', $URL);
- }
-
- /**
- * Start a group for following messages.
- *
- * Options:
- * Collapsed: [true|false]
- * Color: [#RRGGBB|ColorName]
- *
- * @param string $Name
- * @param array $Options OPTIONAL Instructions on how to log the group
- * @return true
- * @throws Exception
- */
- function group($Name, $Options=null) {
-
- if(!$Name) {
- trigger_error('You must specify a label for the group!');
- }
-
- if($Options) {
- if(!is_array($Options)) {
- trigger_error('Options must be defined as an array!');
- }
- if(array_key_exists('Collapsed', $Options)) {
- $Options['Collapsed'] = ($Options['Collapsed'])?'true':'false';
- }
- }
-
- return $this->fb(null, $Name, FirePHP_GROUP_START, $Options);
- }
-
- /**
- * Ends a group you have started before
- *
- * @return true
- * @throws Exception
- */
- function groupEnd() {
- return $this->fb(null, null, FirePHP_GROUP_END);
- }
-
- /**
- * Log object with label to firebug console
- *
- * @see FirePHP::LOG
- * @param mixes $Object
- * @param string $Label
- * @return true
- * @throws Exception
- */
- function log($Object, $Label=null) {
- return $this->fb($Object, $Label, FirePHP_LOG);
- }
-
- /**
- * Log object with label to firebug console
- *
- * @see FirePHP::INFO
- * @param mixes $Object
- * @param string $Label
- * @return true
- * @throws Exception
- */
- function info($Object, $Label=null) {
- return $this->fb($Object, $Label, FirePHP_INFO);
- }
-
- /**
- * Log object with label to firebug console
- *
- * @see FirePHP::WARN
- * @param mixes $Object
- * @param string $Label
- * @return true
- * @throws Exception
- */
- function warn($Object, $Label=null) {
- return $this->fb($Object, $Label, FirePHP_WARN);
- }
-
- /**
- * Log object with label to firebug console
- *
- * @see FirePHP::ERROR
- * @param mixes $Object
- * @param string $Label
- * @return true
- * @throws Exception
- */
- function error($Object, $Label=null) {
- return $this->fb($Object, $Label, FirePHP_ERROR);
- }
-
- /**
- * Dumps key and variable to firebug server panel
- *
- * @see FirePHP::DUMP
- * @param string $Key
- * @param mixed $Variable
- * @return true
- * @throws Exception
- */
- function dump($Key, $Variable) {
- return $this->fb($Variable, $Key, FirePHP_DUMP);
- }
-
- /**
- * Log a trace in the firebug console
- *
- * @see FirePHP::TRACE
- * @param string $Label
- * @return true
- * @throws Exception
- */
- function trace($Label) {
- return $this->fb($Label, FirePHP_TRACE);
- }
-
- /**
- * Log a table in the firebug console
- *
- * @see FirePHP::TABLE
- * @param string $Label
- * @param string $Table
- * @return true
- * @throws Exception
- */
- function table($Label, $Table) {
- return $this->fb($Table, $Label, FirePHP_TABLE);
- }
-
- /**
- * Check if FirePHP is installed on client
- *
- * @return boolean
- */
- function detectClientExtension() {
- // Check if FirePHP is installed on client via User-Agent header
- if(@preg_match_all('/\sFirePHP\/([\.\d]*)\s?/si',$this->getUserAgent(),$m) &&
- version_compare($m[1][0],'0.0.6','>=')) {
- return true;
- } else
- // Check if FirePHP is installed on client via X-FirePHP-Version header
- if(@preg_match_all('/^([\.\d]*)$/si',$this->getRequestHeader("X-FirePHP-Version"),$m) &&
- version_compare($m[1][0],'0.0.6','>=')) {
- return true;
- }
- return false;
- }
-
- /**
- * Log varible to Firebug
- *
- * @see http://www.firephp.org/Wiki/Reference/Fb
- * @param mixed $Object The variable to be logged
- * @return true Return TRUE if message was added to headers, FALSE otherwise
- * @throws Exception
- */
- function fb($Object) {
-
- if(!$this->enabled) {
- return false;
- }
-
- if (headers_sent($filename, $linenum)) {
- trigger_error('Headers already sent in '.$filename.' on line '.$linenum.'. Cannot send log data to FirePHP. You must have Output Buffering enabled via ob_start() or output_buffering ini directive.');
- }
-
- $Type = null;
- $Label = null;
- $Options = array();
-
- if(func_num_args()==1) {
- } else
- if(func_num_args()==2) {
- switch(func_get_arg(1)) {
- case FirePHP_LOG:
- case FirePHP_INFO:
- case FirePHP_WARN:
- case FirePHP_ERROR:
- case FirePHP_DUMP:
- case FirePHP_TRACE:
- case FirePHP_TABLE:
- case FirePHP_GROUP_START:
- case FirePHP_GROUP_END:
- $Type = func_get_arg(1);
- break;
- default:
- $Label = func_get_arg(1);
- break;
- }
- } else
- if(func_num_args()==3) {
- $Type = func_get_arg(2);
- $Label = func_get_arg(1);
- } else
- if(func_num_args()==4) {
- $Type = func_get_arg(2);
- $Label = func_get_arg(1);
- $Options = func_get_arg(3);
- } else {
- trigger_error('Wrong number of arguments to fb() function!');
- }
-
-
- if(!$this->detectClientExtension()) {
- return false;
- }
-
- $meta = array();
- $skipFinalObjectEncode = false;
-
- if($Type==FirePHP_TRACE) {
-
- $trace = debug_backtrace();
- if(!$trace) return false;
- for( $i=0 ; $i_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php'
- || substr($this->_standardizePath($trace[$i]['file']),-29,29)=='FirePHPCore/FirePHP.class.php')) {
- /* Skip - FB::trace(), FB::send(), $firephp->trace(), $firephp->fb() */
- } else
- if(isset($trace[$i]['class'])
- && isset($trace[$i+1]['file'])
- && $trace[$i]['class']=='FirePHP'
- && substr($this->_standardizePath($trace[$i+1]['file']),-18,18)=='FirePHPCore/fb.php') {
- /* Skip fb() */
- } else
- if($trace[$i]['function']=='fb'
- || $trace[$i]['function']=='trace'
- || $trace[$i]['function']=='send') {
- $Object = array('Class'=>isset($trace[$i]['class'])?$trace[$i]['class']:'',
- 'Type'=>isset($trace[$i]['type'])?$trace[$i]['type']:'',
- 'Function'=>isset($trace[$i]['function'])?$trace[$i]['function']:'',
- 'Message'=>$trace[$i]['args'][0],
- 'File'=>isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):'',
- 'Line'=>isset($trace[$i]['line'])?$trace[$i]['line']:'',
- 'Args'=>isset($trace[$i]['args'])?$this->encodeObject($trace[$i]['args']):'',
- 'Trace'=>$this->_escapeTrace(array_splice($trace,$i+1)));
-
- $skipFinalObjectEncode = true;
- $meta['file'] = isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):'';
- $meta['line'] = isset($trace[$i]['line'])?$trace[$i]['line']:'';
- break;
- }
- }
-
- } else
- if($Type==FirePHP_TABLE) {
-
- if(isset($Object[0]) && is_string($Object[0])) {
- $Object[1] = $this->encodeTable($Object[1]);
- } else {
- $Object = $this->encodeTable($Object);
- }
-
- $skipFinalObjectEncode = true;
-
- } else
- if($Type==FirePHP_GROUP_START) {
-
- if(!$Label) {
- trigger_error('You must specify a label for the group!');
- }
- } else {
- if($Type===null) {
- $Type = FirePHP_LOG;
- }
- }
-
- if($this->options['includeLineNumbers']) {
- if(!isset($meta['file']) || !isset($meta['line'])) {
-
- $trace = debug_backtrace();
- for( $i=0 ; $trace && $i_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php'
- || substr($this->_standardizePath($trace[$i]['file']),-29,29)=='FirePHPCore/FirePHP.class.php')) {
- /* Skip - FB::trace(), FB::send(), $firephp->trace(), $firephp->fb() */
- } else
- if(isset($trace[$i]['class'])
- && isset($trace[$i+1]['file'])
- && $trace[$i]['class']=='FirePHP'
- && substr($this->_standardizePath($trace[$i+1]['file']),-18,18)=='FirePHPCore/fb.php') {
- /* Skip fb() */
- } else
- if(isset($trace[$i]['file'])
- && substr($this->_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php') {
- /* Skip FB::fb() */
- } else {
- $meta['file'] = isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):'';
- $meta['line'] = isset($trace[$i]['line'])?$trace[$i]['line']:'';
- break;
- }
- }
-
- }
- } else {
- unset($meta['file']);
- unset($meta['line']);
- }
-
- $this->setHeader('X-Wf-Protocol-1','http://meta.wildfirehq.org/Protocol/JsonStream/0.2');
- $this->setHeader('X-Wf-1-Plugin-1','http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/'.FirePHP_VERSION);
-
- $structure_index = 1;
- if($Type==FirePHP_DUMP) {
- $structure_index = 2;
- $this->setHeader('X-Wf-1-Structure-2','http://meta.firephp.org/Wildfire/Structure/FirePHP/Dump/0.1');
- } else {
- $this->setHeader('X-Wf-1-Structure-1','http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1');
- }
-
- if($Type==FirePHP_DUMP) {
- $msg = '{"'.$Label.'":'.$this->jsonEncode($Object, $skipFinalObjectEncode).'}';
- } else {
- $msg_meta = $Options;
- $msg_meta['Type'] = $Type;
- if($Label!==null) {
- $msg_meta['Label'] = $Label;
- }
- if(isset($meta['file']) && !isset($msg_meta['File'])) {
- $msg_meta['File'] = $meta['file'];
- }
- if(isset($meta['line']) && !isset($msg_meta['Line'])) {
- $msg_meta['Line'] = $meta['line'];
- }
- $msg = '['.$this->jsonEncode($msg_meta).','.$this->jsonEncode($Object, $skipFinalObjectEncode).']';
- }
-
- $parts = explode("\n",chunk_split($msg, 5000, "\n"));
-
- for( $i=0 ; $i2) {
- // Message needs to be split into multiple parts
- $this->setHeader('X-Wf-1-'.$structure_index.'-'.'1-'.$this->messageIndex,
- (($i==0)?strlen($msg):'')
- . '|' . $part . '|'
- . (($isetHeader('X-Wf-1-'.$structure_index.'-'.'1-'.$this->messageIndex,
- strlen($part) . '|' . $part . '|');
- }
-
- $this->messageIndex++;
-
- if ($this->messageIndex > 99999) {
- trigger_error('Maximum number (99,999) of messages reached!');
- }
- }
- }
-
- $this->setHeader('X-Wf-1-Index',$this->messageIndex-1);
-
- return true;
- }
-
-
- /**
- * Standardizes path for windows systems.
- *
- * @param string $Path
- * @return string
- */
- function _standardizePath($Path) {
- return preg_replace('/\\\\+/','/',$Path);
- }
-
- /**
- * Escape trace path for windows systems
- *
- * @param array $Trace
- * @return array
- */
- function _escapeTrace($Trace) {
- if(!$Trace) return $Trace;
- for( $i=0 ; $i_escapeTraceFile($Trace[$i]['file']);
- }
- if(isset($Trace[$i]['args'])) {
- $Trace[$i]['args'] = $this->encodeObject($Trace[$i]['args']);
- }
- }
- return $Trace;
- }
-
- /**
- * Escape file information of trace for windows systems
- *
- * @param string $File
- * @return string
- */
- function _escapeTraceFile($File) {
- /* Check if we have a windows filepath */
- if(strpos($File,'\\')) {
- /* First strip down to single \ */
-
- $file = preg_replace('/\\\\+/','\\',$File);
-
- return $file;
- }
- return $File;
- }
-
- /**
- * Send header
- *
- * @param string $Name
- * @param string_type $Value
- */
- function setHeader($Name, $Value) {
- return header($Name.': '.$Value);
- }
-
- /**
- * Get user agent
- *
- * @return string|false
- */
- function getUserAgent() {
- if(!isset($_SERVER['HTTP_USER_AGENT'])) return false;
- return $_SERVER['HTTP_USER_AGENT'];
- }
-
- /**
- * Get all request headers
- *
- * @return array
- */
- function getAllRequestHeaders() {
- $headers = array();
- if(function_exists('getallheaders')) {
- foreach( getallheaders() as $name => $value ) {
- $headers[strtolower($name)] = $value;
- }
- } else {
- foreach($_SERVER as $name => $value) {
- if(substr($name, 0, 5) == 'HTTP_') {
- $headers[strtolower(str_replace(' ', '-', str_replace('_', ' ', substr($name, 5))))] = $value;
- }
- }
- }
- return $headers;
- }
-
- /**
- * Get a request header
- *
- * @return string|false
- */
- function getRequestHeader($Name)
- {
- $headers = $this->getAllRequestHeaders();
- if (isset($headers[strtolower($Name)])) {
- return $headers[strtolower($Name)];
- }
- return false;
- }
-
- /**
- * Encode an object into a JSON string
- *
- * Uses PHP's jeson_encode() if available
- *
- * @param object $Object The object to be encoded
- * @return string The JSON string
- */
- function jsonEncode($Object, $skipObjectEncode=false)
- {
- if(!$skipObjectEncode) {
- $Object = $this->encodeObject($Object);
- }
-
- if(function_exists('json_encode')
- && $this->options['useNativeJsonEncode']!=false) {
-
- return json_encode($Object);
- } else {
- return $this->json_encode($Object);
- }
- }
-
- /**
- * Encodes a table by encoding each row and column with encodeObject()
- *
- * @param array $Table The table to be encoded
- * @return array
- */
- function encodeTable($Table) {
-
- if(!$Table) return $Table;
-
- $new_table = array();
- foreach($Table as $row) {
-
- if(is_array($row)) {
- $new_row = array();
-
- foreach($row as $item) {
- $new_row[] = $this->encodeObject($item);
- }
-
- $new_table[] = $new_row;
- }
- }
-
- return $new_table;
- }
-
- /**
- * Encodes an object
- *
- * @param Object $Object The object to be encoded
- * @param int $Depth The current traversal depth
- * @return array All members of the object
- */
- function encodeObject($Object, $ObjectDepth = 1, $ArrayDepth = 1)
- {
- $return = array();
-
- if (is_resource($Object)) {
-
- return '** '.(string)$Object.' **';
-
- } else
- if (is_object($Object)) {
-
- if ($ObjectDepth > $this->options['maxObjectDepth']) {
- return '** Max Object Depth ('.$this->options['maxObjectDepth'].') **';
- }
-
- foreach ($this->objectStack as $refVal) {
- if ($refVal === $Object) {
- return '** Recursion ('.get_class($Object).') **';
- }
- }
- array_push($this->objectStack, $Object);
-
- $return['__className'] = $class = get_class($Object);
- $class_lower = strtolower($class);
-
- $members = (array)$Object;
-
- // Include all members that are not defined in the class
- // but exist in the object
- foreach( $members as $raw_name => $value ) {
-
- $name = $raw_name;
-
- if ($name{0} == "\0") {
- $parts = explode("\0", $name);
- $name = $parts[2];
- }
-
- if(!isset($properties[$name])) {
- $name = 'undeclared:'.$name;
-
- if(!(isset($this->objectFilters[$class_lower])
- && is_array($this->objectFilters[$class_lower])
- && in_array($raw_name,$this->objectFilters[$class_lower]))) {
-
- $return[$name] = $this->encodeObject($value, $ObjectDepth + 1, 1);
- } else {
- $return[$name] = '** Excluded by Filter **';
- }
- }
- }
-
- array_pop($this->objectStack);
-
- } elseif (is_array($Object)) {
-
- if ($ArrayDepth > $this->options['maxArrayDepth']) {
- return '** Max Array Depth ('.$this->options['maxArrayDepth'].') **';
- }
-
- foreach ($Object as $key => $val) {
-
- // Encoding the $GLOBALS PHP array causes an infinite loop
- // if the recursion is not reset here as it contains
- // a reference to itself. This is the only way I have come up
- // with to stop infinite recursion in this case.
- if($key=='GLOBALS'
- && is_array($val)
- && array_key_exists('GLOBALS',$val)) {
- $val['GLOBALS'] = '** Recursion (GLOBALS) **';
- }
-
- $return[$key] = $this->encodeObject($val, 1, $ArrayDepth + 1);
- }
- } else {
- if($this->is_utf8($Object)) {
- return $Object;
- } else {
- return utf8_encode($Object);
- }
- }
- return $return;
-
- }
-
- /**
- * Returns true if $string is valid UTF-8 and false otherwise.
- *
- * @param mixed $str String to be tested
- * @return boolean
- */
- function is_utf8($str) {
- $c=0; $b=0;
- $bits=0;
- $len=strlen($str);
- for($i=0; $i<$len; $i++){
- $c=ord($str[$i]);
- if($c > 128){
- if(($c >= 254)) return false;
- elseif($c >= 252) $bits=6;
- elseif($c >= 248) $bits=5;
- elseif($c >= 240) $bits=4;
- elseif($c >= 224) $bits=3;
- elseif($c >= 192) $bits=2;
- else return false;
- if(($i+$bits) > $len) return false;
- while($bits > 1){
- $i++;
- $b=ord($str[$i]);
- if($b < 128 || $b > 191) return false;
- $bits--;
- }
- }
- }
- return true;
- }
-
- /**
- * Converts to and from JSON format.
- *
- * JSON (JavaScript Object Notation) is a lightweight data-interchange
- * format. It is easy for humans to read and write. It is easy for machines
- * to parse and generate. It is based on a subset of the JavaScript
- * Programming Language, Standard ECMA-262 3rd Edition - December 1999.
- * This feature can also be found in Python. JSON is a text format that is
- * completely language independent but uses conventions that are familiar
- * to programmers of the C-family of languages, including C, C++, C#, Java,
- * JavaScript, Perl, TCL, and many others. These properties make JSON an
- * ideal data-interchange language.
- *
- * This package provides a simple encoder and decoder for JSON notation. It
- * is intended for use with client-side Javascript applications that make
- * use of HTTPRequest to perform server communication functions - data can
- * be encoded into JSON notation for use in a client-side javascript, or
- * decoded from incoming Javascript requests. JSON format is native to
- * Javascript, and can be directly eval()'ed with no further parsing
- * overhead
- *
- * All strings should be in ASCII or UTF-8 format!
- *
- * LICENSE: Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met: Redistributions of source code must retain the
- * above copyright notice, this list of conditions and the following
- * disclaimer. Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
- * NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
- * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
- * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * @category
- * @package Services_JSON
- * @author Michal Migurski
- * @author Matt Knapp
- * @author Brett Stimmerman
- * @author Christoph Dorn
- * @copyright 2005 Michal Migurski
- * @version CVS: $Id: JSON.php,v 1.31 2006/06/28 05:54:17 migurski Exp $
- * @license http://www.opensource.org/licenses/bsd-license.php
- * @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198
- */
-
-
- /**
- * Keep a list of objects as we descend into the array so we can detect recursion.
- */
- var $json_objectStack = array();
-
-
- /**
- * convert a string from one UTF-8 char to one UTF-16 char
- *
- * Normally should be handled by mb_convert_encoding, but
- * provides a slower PHP-only method for installations
- * that lack the multibye string extension.
- *
- * @param string $utf8 UTF-8 character
- * @return string UTF-16 character
- * @access private
- */
- function json_utf82utf16($utf8)
- {
- // oh please oh please oh please oh please oh please
- if(function_exists('mb_convert_encoding')) {
- return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8');
- }
-
- switch(strlen($utf8)) {
- case 1:
- // this case should never be reached, because we are in ASCII range
- // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- return $utf8;
-
- case 2:
- // return a UTF-16 character from a 2-byte UTF-8 char
- // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- return chr(0x07 & (ord($utf8{0}) >> 2))
- . chr((0xC0 & (ord($utf8{0}) << 6))
- | (0x3F & ord($utf8{1})));
-
- case 3:
- // return a UTF-16 character from a 3-byte UTF-8 char
- // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- return chr((0xF0 & (ord($utf8{0}) << 4))
- | (0x0F & (ord($utf8{1}) >> 2)))
- . chr((0xC0 & (ord($utf8{1}) << 6))
- | (0x7F & ord($utf8{2})));
- }
-
- // ignoring UTF-32 for now, sorry
- return '';
- }
-
- /**
- * encodes an arbitrary variable into JSON format
- *
- * @param mixed $var any number, boolean, string, array, or object to be encoded.
- * see argument 1 to Services_JSON() above for array-parsing behavior.
- * if var is a strng, note that encode() always expects it
- * to be in ASCII or UTF-8 format!
- *
- * @return mixed JSON string representation of input var or an error if a problem occurs
- * @access public
- */
- function json_encode($var)
- {
-
- if(is_object($var)) {
- if(in_array($var,$this->json_objectStack)) {
- return '"** Recursion **"';
- }
- }
-
- switch (gettype($var)) {
- case 'boolean':
- return $var ? 'true' : 'false';
-
- case 'NULL':
- return 'null';
-
- case 'integer':
- return (int) $var;
-
- case 'double':
- case 'float':
- return (float) $var;
-
- case 'string':
- // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT
- $ascii = '';
- $strlen_var = strlen($var);
-
- /*
- * Iterate over every character in the string,
- * escaping with a slash or encoding to UTF-8 where necessary
- */
- for ($c = 0; $c < $strlen_var; ++$c) {
-
- $ord_var_c = ord($var{$c});
-
- switch (true) {
- case $ord_var_c == 0x08:
- $ascii .= '\b';
- break;
- case $ord_var_c == 0x09:
- $ascii .= '\t';
- break;
- case $ord_var_c == 0x0A:
- $ascii .= '\n';
- break;
- case $ord_var_c == 0x0C:
- $ascii .= '\f';
- break;
- case $ord_var_c == 0x0D:
- $ascii .= '\r';
- break;
-
- case $ord_var_c == 0x22:
- case $ord_var_c == 0x2F:
- case $ord_var_c == 0x5C:
- // double quote, slash, slosh
- $ascii .= '\\'.$var{$c};
- break;
-
- case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
- // characters U-00000000 - U-0000007F (same as ASCII)
- $ascii .= $var{$c};
- break;
-
- case (($ord_var_c & 0xE0) == 0xC0):
- // characters U-00000080 - U-000007FF, mask 110XXXXX
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- $char = pack('C*', $ord_var_c, ord($var{$c + 1}));
- $c += 1;
- $utf16 = $this->json_utf82utf16($char);
- $ascii .= sprintf('\u%04s', bin2hex($utf16));
- break;
-
- case (($ord_var_c & 0xF0) == 0xE0):
- // characters U-00000800 - U-0000FFFF, mask 1110XXXX
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- $char = pack('C*', $ord_var_c,
- ord($var{$c + 1}),
- ord($var{$c + 2}));
- $c += 2;
- $utf16 = $this->json_utf82utf16($char);
- $ascii .= sprintf('\u%04s', bin2hex($utf16));
- break;
-
- case (($ord_var_c & 0xF8) == 0xF0):
- // characters U-00010000 - U-001FFFFF, mask 11110XXX
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- $char = pack('C*', $ord_var_c,
- ord($var{$c + 1}),
- ord($var{$c + 2}),
- ord($var{$c + 3}));
- $c += 3;
- $utf16 = $this->json_utf82utf16($char);
- $ascii .= sprintf('\u%04s', bin2hex($utf16));
- break;
-
- case (($ord_var_c & 0xFC) == 0xF8):
- // characters U-00200000 - U-03FFFFFF, mask 111110XX
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- $char = pack('C*', $ord_var_c,
- ord($var{$c + 1}),
- ord($var{$c + 2}),
- ord($var{$c + 3}),
- ord($var{$c + 4}));
- $c += 4;
- $utf16 = $this->json_utf82utf16($char);
- $ascii .= sprintf('\u%04s', bin2hex($utf16));
- break;
-
- case (($ord_var_c & 0xFE) == 0xFC):
- // characters U-04000000 - U-7FFFFFFF, mask 1111110X
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- $char = pack('C*', $ord_var_c,
- ord($var{$c + 1}),
- ord($var{$c + 2}),
- ord($var{$c + 3}),
- ord($var{$c + 4}),
- ord($var{$c + 5}));
- $c += 5;
- $utf16 = $this->json_utf82utf16($char);
- $ascii .= sprintf('\u%04s', bin2hex($utf16));
- break;
- }
- }
-
- return '"'.$ascii.'"';
-
- case 'array':
- /*
- * As per JSON spec if any array key is not an integer
- * we must treat the the whole array as an object. We
- * also try to catch a sparsely populated associative
- * array with numeric keys here because some JS engines
- * will create an array with empty indexes up to
- * max_index which can cause memory issues and because
- * the keys, which may be relevant, will be remapped
- * otherwise.
- *
- * As per the ECMA and JSON specification an object may
- * have any string as a property. Unfortunately due to
- * a hole in the ECMA specification if the key is a
- * ECMA reserved word or starts with a digit the
- * parameter is only accessible using ECMAScript's
- * bracket notation.
- */
-
- // treat as a JSON object
- if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) {
-
- $this->json_objectStack[] = $var;
-
- $properties = array_map(array($this, 'json_name_value'),
- array_keys($var),
- array_values($var));
-
- array_pop($this->json_objectStack);
-
- return '{' . join(',', $properties) . '}';
- }
-
- $this->json_objectStack[] = $var;
-
- // treat it like a regular array
- $elements = array_map(array($this, 'json_encode'), $var);
-
- array_pop($this->json_objectStack);
-
- return '[' . join(',', $elements) . ']';
-
- case 'object':
- $vars = FirePHP::encodeObject($var);
-
- $this->json_objectStack[] = $var;
-
- $properties = array_map(array($this, 'json_name_value'),
- array_keys($vars),
- array_values($vars));
-
- array_pop($this->json_objectStack);
-
- return '{' . join(',', $properties) . '}';
-
- default:
- return null;
- }
- }
-
- /**
- * array-walking function for use in generating JSON-formatted name-value pairs
- *
- * @param string $name name of key to use
- * @param mixed $value reference to an array element to be encoded
- *
- * @return string JSON-formatted name-value pair, like '"name":value'
- * @access private
- */
- function json_name_value($name, $value)
- {
- // Encoding the $GLOBALS PHP array causes an infinite loop
- // if the recursion is not reset here as it contains
- // a reference to itself. This is the only way I have come up
- // with to stop infinite recursion in this case.
- if($name=='GLOBALS'
- && is_array($value)
- && array_key_exists('GLOBALS',$value)) {
- $value['GLOBALS'] = '** Recursion **';
- }
-
- $encoded_value = $this->json_encode($value);
-
- return $this->json_encode(strval($name)) . ':' . $encoded_value;
- }
-}
-
diff --git a/vendor/firephp/firephp-core/lib/FirePHPCore/fb.php b/vendor/firephp/firephp-core/lib/FirePHPCore/fb.php
deleted file mode 100644
index 8827ba15..00000000
--- a/vendor/firephp/firephp-core/lib/FirePHPCore/fb.php
+++ /dev/null
@@ -1,275 +0,0 @@
-, Copyright 2007, New BSD License
-// - qbbr, Sokolov Innokenty , Copyright 2011, New BSD License
-// - cadorn, Christoph Dorn , Copyright 2011, MIT License
-
-/**
- * ***** BEGIN LICENSE BLOCK *****
- *
- * [MIT License](http://www.opensource.org/licenses/mit-license.php)
- *
- * Copyright (c) 2007+ [Christoph Dorn](http://www.christophdorn.com/)
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * ***** END LICENSE BLOCK *****
- *
- * @copyright Copyright (C) 2007+ Christoph Dorn
- * @author Christoph Dorn
- * @license [MIT License](http://www.opensource.org/licenses/mit-license.php)
- * @package FirePHPCore
- */
-
-if (!class_exists('FirePHP', false)) {
- require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'FirePHP.class.php';
-}
-
-/**
- * Sends the given data to the FirePHP Firefox Extension.
- * The data can be displayed in the Firebug Console or in the
- * "Server" request tab.
- *
- * @see http://www.firephp.org/Wiki/Reference/Fb
- * @param mixed $Object
- * @return true
- * @throws Exception
- */
-function fb()
-{
- $instance = FirePHP::getInstance(true);
-
- $args = func_get_args();
- return call_user_func_array(array($instance, 'fb'), $args);
-}
-
-
-class FB
-{
- /**
- * Set an Insight console to direct all logging calls to
- *
- * @param object $console The console object to log to
- * @return void
- */
- public static function setLogToInsightConsole($console)
- {
- FirePHP::getInstance(true)->setLogToInsightConsole($console);
- }
-
- /**
- * Enable and disable logging to Firebug
- *
- * @see FirePHP->setEnabled()
- * @param boolean $enabled TRUE to enable, FALSE to disable
- * @return void
- */
- public static function setEnabled($enabled)
- {
- FirePHP::getInstance(true)->setEnabled($enabled);
- }
-
- /**
- * Check if logging is enabled
- *
- * @see FirePHP->getEnabled()
- * @return boolean TRUE if enabled
- */
- public static function getEnabled()
- {
- return FirePHP::getInstance(true)->getEnabled();
- }
-
- /**
- * Specify a filter to be used when encoding an object
- *
- * Filters are used to exclude object members.
- *
- * @see FirePHP->setObjectFilter()
- * @param string $class The class name of the object
- * @param array $filter An array or members to exclude
- * @return void
- */
- public static function setObjectFilter($class, $filter)
- {
- FirePHP::getInstance(true)->setObjectFilter($class, $filter);
- }
-
- /**
- * Set some options for the library
- *
- * @see FirePHP->setOptions()
- * @param array $options The options to be set
- * @return void
- */
- public static function setOptions($options)
- {
- FirePHP::getInstance(true)->setOptions($options);
- }
-
- /**
- * Get options for the library
- *
- * @see FirePHP->getOptions()
- * @return array The options
- */
- public static function getOptions()
- {
- return FirePHP::getInstance(true)->getOptions();
- }
-
- /**
- * Log object to firebug
- *
- * @see http://www.firephp.org/Wiki/Reference/Fb
- * @param mixed $object
- * @return true
- * @throws Exception
- */
- public static function send()
- {
- $args = func_get_args();
- return call_user_func_array(array(FirePHP::getInstance(true), 'fb'), $args);
- }
-
- /**
- * Start a group for following messages
- *
- * Options:
- * Collapsed: [true|false]
- * Color: [#RRGGBB|ColorName]
- *
- * @param string $name
- * @param array $options OPTIONAL Instructions on how to log the group
- * @return true
- */
- public static function group($name, $options=null)
- {
- return FirePHP::getInstance(true)->group($name, $options);
- }
-
- /**
- * Ends a group you have started before
- *
- * @return true
- * @throws Exception
- */
- public static function groupEnd()
- {
- return self::send(null, null, FirePHP::GROUP_END);
- }
-
- /**
- * Log object with label to firebug console
- *
- * @see FirePHP::LOG
- * @param mixes $object
- * @param string $label
- * @return true
- * @throws Exception
- */
- public static function log($object, $label=null)
- {
- return self::send($object, $label, FirePHP::LOG);
- }
-
- /**
- * Log object with label to firebug console
- *
- * @see FirePHP::INFO
- * @param mixes $object
- * @param string $label
- * @return true
- * @throws Exception
- */
- public static function info($object, $label=null)
- {
- return self::send($object, $label, FirePHP::INFO);
- }
-
- /**
- * Log object with label to firebug console
- *
- * @see FirePHP::WARN
- * @param mixes $object
- * @param string $label
- * @return true
- * @throws Exception
- */
- public static function warn($object, $label=null)
- {
- return self::send($object, $label, FirePHP::WARN);
- }
-
- /**
- * Log object with label to firebug console
- *
- * @see FirePHP::ERROR
- * @param mixes $object
- * @param string $label
- * @return true
- * @throws Exception
- */
- public static function error($object, $label=null)
- {
- return self::send($object, $label, FirePHP::ERROR);
- }
-
- /**
- * Dumps key and variable to firebug server panel
- *
- * @see FirePHP::DUMP
- * @param string $key
- * @param mixed $variable
- * @return true
- * @throws Exception
- */
- public static function dump($key, $variable)
- {
- return self::send($variable, $key, FirePHP::DUMP);
- }
-
- /**
- * Log a trace in the firebug console
- *
- * @see FirePHP::TRACE
- * @param string $label
- * @return true
- * @throws Exception
- */
- public static function trace($label)
- {
- return self::send($label, FirePHP::TRACE);
- }
-
- /**
- * Log a table in the firebug console
- *
- * @see FirePHP::TABLE
- * @param string $label
- * @param string $table
- * @return true
- * @throws Exception
- */
- public static function table($label, $table)
- {
- return self::send($table, $label, FirePHP::TABLE);
- }
-
-}
\ No newline at end of file
diff --git a/vendor/firephp/firephp-core/lib/FirePHPCore/fb.php4 b/vendor/firephp/firephp-core/lib/FirePHPCore/fb.php4
deleted file mode 100644
index eab2f0f6..00000000
--- a/vendor/firephp/firephp-core/lib/FirePHPCore/fb.php4
+++ /dev/null
@@ -1,245 +0,0 @@
-, Copyright 2007, New BSD License
-// - qbbr, Michael Day , Copyright 2008, New BSD License
-// - cadorn, Christoph Dorn , Copyright 2011, MIT License
-
-/* ***** BEGIN LICENSE BLOCK *****
- *
- * [MIT License](http://www.opensource.org/licenses/mit-license.php)
- *
- * Copyright (c) 2007+ [Christoph Dorn](http://www.christophdorn.com/)
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * ***** END LICENSE BLOCK *****
- *
- * @copyright Copyright (C) 2007+ Christoph Dorn
- * @author Christoph Dorn
- * @author Michael Day
- * @license [MIT License](http://www.opensource.org/licenses/mit-license.php)
- * @package FirePHPCore
- */
-
-require_once dirname(__FILE__).'/FirePHP.class.php4';
-
-/**
- * Sends the given data to the FirePHP Firefox Extension.
- * The data can be displayed in the Firebug Console or in the
- * "Server" request tab.
- *
- * @see http://www.firephp.org/Wiki/Reference/Fb
- * @param mixed $Object
- * @return true
- * @throws Exception
- */
-function fb()
-{
- $instance =& FirePHP::getInstance(true);
-
- $args = func_get_args();
- return call_user_func_array(array(&$instance,'fb'),$args);
-}
-
-
-class FB
-{
- /**
- * Enable and disable logging to Firebug
- *
- * @see FirePHP->setEnabled()
- * @param boolean $Enabled TRUE to enable, FALSE to disable
- * @return void
- */
- function setEnabled($Enabled) {
- $instance =& FirePHP::getInstance(true);
- $instance->setEnabled($Enabled);
- }
-
- /**
- * Check if logging is enabled
- *
- * @see FirePHP->getEnabled()
- * @return boolean TRUE if enabled
- */
- function getEnabled() {
- $instance =& FirePHP::getInstance(true);
- return $instance->getEnabled();
- }
-
- /**
- * Specify a filter to be used when encoding an object
- *
- * Filters are used to exclude object members.
- *
- * @see FirePHP->setObjectFilter()
- * @param string $Class The class name of the object
- * @param array $Filter An array or members to exclude
- * @return void
- */
- function setObjectFilter($Class, $Filter) {
- $instance =& FirePHP::getInstance(true);
- $instance->setObjectFilter($Class, $Filter);
- }
-
- /**
- * Set some options for the library
- *
- * @see FirePHP->setOptions()
- * @param array $Options The options to be set
- * @return void
- */
- function setOptions($Options) {
- $instance =& FirePHP::getInstance(true);
- $instance->setOptions($Options);
- }
-
- /**
- * Get options for the library
- *
- * @see FirePHP->getOptions()
- * @return array The options
- */
- function getOptions() {
- $instance =& FirePHP::getInstance(true);
- return $instance->getOptions();
- }
-
- /**
- * Log object to firebug
- *
- * @see http://www.firephp.org/Wiki/Reference/Fb
- * @param mixed $Object
- * @return true
- */
- function send()
- {
- $instance =& FirePHP::getInstance(true);
- $args = func_get_args();
- return call_user_func_array(array(&$instance,'fb'),$args);
- }
-
- /**
- * Start a group for following messages
- *
- * Options:
- * Collapsed: [true|false]
- * Color: [#RRGGBB|ColorName]
- *
- * @param string $Name
- * @param array $Options OPTIONAL Instructions on how to log the group
- * @return true
- */
- function group($Name, $Options=null) {
- $instance =& FirePHP::getInstance(true);
- return $instance->group($Name, $Options);
- }
-
- /**
- * Ends a group you have started before
- *
- * @return true
- */
- function groupEnd() {
- return FB::send(null, null, FirePHP_GROUP_END);
- }
-
- /**
- * Log object with label to firebug console
- *
- * @see FirePHP::LOG
- * @param mixes $Object
- * @param string $Label
- * @return true
- */
- function log($Object, $Label=null) {
- return FB::send($Object, $Label, FirePHP_LOG);
- }
-
- /**
- * Log object with label to firebug console
- *
- * @see FirePHP::INFO
- * @param mixes $Object
- * @param string $Label
- * @return true
- */
- function info($Object, $Label=null) {
- return FB::send($Object, $Label, FirePHP_INFO);
- }
-
- /**
- * Log object with label to firebug console
- *
- * @see FirePHP::WARN
- * @param mixes $Object
- * @param string $Label
- * @return true
- */
- function warn($Object, $Label=null) {
- return FB::send($Object, $Label, FirePHP_WARN);
- }
-
- /**
- * Log object with label to firebug console
- *
- * @see FirePHP::ERROR
- * @param mixes $Object
- * @param string $Label
- * @return true
- */
- function error($Object, $Label=null) {
- return FB::send($Object, $Label, FirePHP_ERROR);
- }
-
- /**
- * Dumps key and variable to firebug server panel
- *
- * @see FirePHP::DUMP
- * @param string $Key
- * @param mixed $Variable
- * @return true
- */
- function dump($Key, $Variable) {
- return FB::send($Variable, $Key, FirePHP_DUMP);
- }
-
- /**
- * Log a trace in the firebug console
- *
- * @see FirePHP::TRACE
- * @param string $Label
- * @return true
- */
- function trace($Label) {
- return FB::send($Label, FirePHP_TRACE);
- }
-
- /**
- * Log a table in the firebug console
- *
- * @see FirePHP::TABLE
- * @param string $Label
- * @param string $Table
- * @return true
- */
- function table($Label, $Table) {
- return FB::send($Table, $Label, FirePHP_TABLE);
- }
-}
diff --git a/vendor/firephp/firephp-core/package.json b/vendor/firephp/firephp-core/package.json
deleted file mode 100644
index 291a9202..00000000
--- a/vendor/firephp/firephp-core/package.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "uid": "https://github.com/firephp/firephp-core/",
- "name": "firephp-core",
- "version": "0.4.0",
- "label": "FirePHP Server Library",
- "repositories": [
- {
- "type": "git",
- "url": "git://github.com/firephp/firephp-core.git"
- }
- ],
- "maintainers": [
- {
- "name": "Christoph Dorn",
- "email": "christoph@christophdorn.com",
- "web": "http://www.christophdorn.com/",
- "alias": {
- "github": "cadorn"
- }
- }
- ],
- "contributors": [
- {
- "name": "Christoph Dorn",
- "email": "christoph@christophdorn.com",
- "web": "http://www.christophdorn.com/",
- "alias": {
- "github": "cadorn"
- }
- },
- {
- "name": "Michael Day",
- "email": "manveru.alma@gmail.com"
- },
- {
- "name": "Sokolov Innokenty",
- "email": "sokolov.innokenty@gmail.com",
- "alias": {
- "github": "qbbr"
- }
- }
- ]
-}
\ No newline at end of file
diff --git a/vendor/firephp/firephp-core/program.json b/vendor/firephp/firephp-core/program.json
deleted file mode 100644
index 9889e97a..00000000
--- a/vendor/firephp/firephp-core/program.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "extends": {
- "location": "./workspace/program.json"
- }
-}
\ No newline at end of file
diff --git a/vendor/firephp/firephp-core/tests/API/newlines.php b/vendor/firephp/firephp-core/tests/API/newlines.php
deleted file mode 100644
index 1e5511e5..00000000
--- a/vendor/firephp/firephp-core/tests/API/newlines.php
+++ /dev/null
@@ -1,12 +0,0 @@
-dump("key", "value");
- $headers = $firephp->_getHeaders();
- $this->assertEquals('15|{"key":"value"}|', $headers['X-Wf-1-2-1-1']);
- $firephp->_clearHeaders();
-
- $caught = false;
- try {
- $firephp->dump(array(), "value");
- } catch(Exception $e) {
- // Key passed to dump() is not a string
- $caught = true;
- }
- if(!$caught) $this->fail('No exception thrown');
-
- $caught = false;
- try {
- $firephp->dump("key \n\r value", "value");
- } catch(Exception $e) {
- // Key passed to dump() contains invalid characters [a-zA-Z0-9-_\.:]
- $caught = true;
- }
- if(!$caught) $this->fail('No exception thrown');
-
- $caught = false;
- try {
- $firephp->dump("keykeykeykkeykeykeykkeykeykeykkeykeykeykkeykeykeykkeykeykeykkeykeykeykkeykeykeykkeykeykeykkeykeykeyk1", "value");
- } catch(Exception $e) {
- // Key passed to dump() is longer than 100 characters
- $caught = true;
- }
- if(!$caught) $this->fail('No exception thrown');
- }
-
- /**
- * @issue http://code.google.com/p/firephp/issues/detail?id=123
- */
- public function testRegisterErrorHandler()
- {
- $firephp = new FirePHP_Test_Class();
- $firephp->setOption("maxObjectDepth", 1);
- $firephp->setOption("maxArrayDepth", 1);
-
- $firephp->registerErrorHandler();
- trigger_error("Hello World");
- $headers = $firephp->_getHeaders();
- if(!isset($headers["X-Wf-1-1-1-1"])) {
- $this->fail("Error not in headers");
- }
- }
-
- /**
- * @issue http://code.google.com/p/firephp/issues/detail?id=122
- */
- public function testFirePHPClassInstanceLogging()
- {
- $firephp = new FirePHP_Test_Class();
-
- $firephp->log($firephp);
- $headers = $firephp->_getHeaders();
- if(!preg_match_all('/"protected:objectStack":"\\*\\* Excluded by Filter \\*\\*"/', $headers['X-Wf-1-1-1-1'], $m)) {
- $this->fail("objectStack member contains value");
- }
- if(!preg_match_all('/"protected:static:instance":"\\*\\* Excluded by Filter \\*\\*"/', $headers['X-Wf-1-1-1-1'], $m)) {
- $this->fail("instance member should not be logged");
- }
- if(!preg_match_all('/"undeclared:json_objectStack":"\\*\\* Excluded by Filter \\*\\*"/', $headers['X-Wf-1-1-1-1'], $m)) {
- $this->fail("json_objectStack member should not be logged");
- }
- }
-
- /**
- * @issue http://code.google.com/p/firephp/issues/detail?id=114
- */
- public function testCustomFileLineOptions()
- {
- $firephp = new FirePHP_Test_Class();
-
- $firephp->log("message", "label", array("File"=>"/file/path", "Line"=>"1"));
- $firephp->info("message", "label", array("File"=>"/file/path", "Line"=>"1"));
- $firephp->warn("message", "label", array("File"=>"/file/path", "Line"=>"1"));
- $firephp->error("message", "label", array("File"=>"/file/path", "Line"=>"1"));
- $firephp->dump("key", "value", array("File"=>"/file/path", "Line"=>"1"));
- $firephp->table("label", array(array("header"),array("cell")), array("File"=>"/file/path", "Line"=>"1"));
-
- $headers = $firephp->_getHeaders();
-
- $this->assertEquals('75|[{"File":"\/file\/path","Line":"1","Type":"LOG","Label":"label"},"message"]|', $headers['X-Wf-1-1-1-1']);
- $this->assertEquals('76|[{"File":"\/file\/path","Line":"1","Type":"INFO","Label":"label"},"message"]|', $headers['X-Wf-1-1-1-2']);
- $this->assertEquals('76|[{"File":"\/file\/path","Line":"1","Type":"WARN","Label":"label"},"message"]|', $headers['X-Wf-1-1-1-3']);
- $this->assertEquals('77|[{"File":"\/file\/path","Line":"1","Type":"ERROR","Label":"label"},"message"]|', $headers['X-Wf-1-1-1-4']);
- $this->assertEquals('15|{"key":"value"}|', $headers['X-Wf-1-2-1-5']);
- $this->assertEquals('89|[{"File":"\/file\/path","Line":"1","Type":"TABLE","Label":"label"},[["header"],["cell"]]]|', $headers['X-Wf-1-1-1-6']);
- }
-
- public function testRecursiveEncode()
- {
- $firephp = new FirePHP_Test_Class();
-
- $obj = new FirePHPCore_FirePHPTest__TestObject();
- $obj->child = $obj;
-
- $firephp->log($obj, "label", array("File"=>"/file/path", "Line"=>"1"));
- $headers = $firephp->_getHeaders();
- $this->assertEquals('215|[{"File":"\/file\/path","Line":"1","Type":"LOG","Label":"label"},{"__className":"FirePHPCore_FirePHPTest__TestObject","public:var":"value","undeclared:child":"** Recursion (FirePHPCore_FirePHPTest__TestObject) **"}]|', $headers['X-Wf-1-1-1-1']);
- }
-
- public function testOptions()
- {
- $firephp = new FirePHP_Test_Class();
-
- // defaults
- $this->assertEquals(5, $firephp->getOption("maxObjectDepth"));
- $this->assertEquals(5, $firephp->getOption("maxArrayDepth"));
- $this->assertEquals(true, $firephp->getOption("useNativeJsonEncode"));
- $this->assertEquals(true, $firephp->getOption("includeLineNumbers"));
-
- // modify
- $firephp->setOption("maxObjectDepth", 1);
- $this->assertEquals(1, $firephp->getOption("maxObjectDepth"));
-
- // invalid
- $caught = false;
- try {
- $firephp->setOption("invalidName", 1);
- } catch(Exception $e) {
- $caught = true;
- }
- if(!$caught) $this->fail('No exception thrown');
-
- $caught = false;
- try {
- $firephp->getOption("invalidName");
- } catch(Exception $e) {
- $caught = true;
- }
- if(!$caught) $this->fail('No exception thrown');
- }
-
- public function testDeprecatedMethods()
- {
- $firephp = new FirePHP_Test_Class();
-
- $caught = false;
- try {
- $firephp->setProcessorUrl('URL');
- } catch(Exception $e) {
- $caught = true;
- $this->assertEquals(E_USER_DEPRECATED, $e->getCode());
- $this->assertEquals('The FirePHP::setProcessorUrl() method is no longer supported', $e->getMessage());
- }
- if(!$caught) $this->fail('No deprecation error thrown');
-
- $caught = false;
- try {
- $firephp->setRendererUrl('URL');
- } catch(Exception $e) {
- $caught = true;
- $this->assertEquals(E_USER_DEPRECATED, $e->getCode());
- $this->assertEquals('The FirePHP::setRendererUrl() method is no longer supported', $e->getMessage());
- }
- if(!$caught) $this->fail('No deprecation error thrown');
- }
-
-}
-
-
-class FirePHPCore_FirePHPTest__TestObject
-{
- public $var = "value";
-}
diff --git a/vendor/firephp/firephp-core/tests/TestHelper.php b/vendor/firephp/firephp-core/tests/TestHelper.php
deleted file mode 100644
index bb65e732..00000000
--- a/vendor/firephp/firephp-core/tests/TestHelper.php
+++ /dev/null
@@ -1,55 +0,0 @@
-_headers;
- }
- public function _clearHeaders() {
- $this->_headers = array();
- }
-
-
- // ######################
- // # Subclassed Methods #
- // ######################
-
- protected function setHeader($Name, $Value) {
- $this->_headers[$Name] = $Value;
- }
-
- protected function headersSent(&$Filename, &$Linenum) {
- return false;
- }
-
- public function detectClientExtension() {
- return true;
- }
-
-}
diff --git a/vendor/firephp/firephp-core/tests/phpunit.xml b/vendor/firephp/firephp-core/tests/phpunit.xml
deleted file mode 100644
index b0474e9d..00000000
--- a/vendor/firephp/firephp-core/tests/phpunit.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/vendor/firephp/firephp-core/workspace/README.md b/vendor/firephp/firephp-core/workspace/README.md
deleted file mode 100644
index 999f09a9..00000000
--- a/vendor/firephp/firephp-core/workspace/README.md
+++ /dev/null
@@ -1,19 +0,0 @@
-
-The [PINF JavaScript Loader](https://github.com/pinf/loader-js) is used to provide a development environment and package releases for this project.
-
-**NOTE:** It is assumed you have the _PINF JavaScript Loader_ mapped to the `commonjs` command and are using the `node` platform by default as explained [here](https://github.com/pinf/loader-js/blob/master/docs/Setup.md).
-
-
-Publishing
-==========
-
- git tag v...
-
- commonjs -v --script build .
-
- commonjs -v --script publish .
-
-
-TODO: Auto-upload to PEAR channel server at http://pear.firephp.org/
-
-NOTE: For PEAR RC releases: Change release stability to "beta" and capitalize "RC" in release version in package.xml
diff --git a/vendor/firephp/firephp-core/workspace/lib/project.js b/vendor/firephp/firephp-core/workspace/lib/project.js
deleted file mode 100644
index 913c6d7c..00000000
--- a/vendor/firephp/firephp-core/workspace/lib/project.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-exports.main = function(options)
-{
-
-}
diff --git a/vendor/firephp/firephp-core/workspace/package.json b/vendor/firephp/firephp-core/workspace/package.json
deleted file mode 100644
index 19e8385e..00000000
--- a/vendor/firephp/firephp-core/workspace/package.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "name": "firephp-core",
- "engine": [
- "node"
- ],
- "main": "lib/project.js",
- "scripts": {
- "build": {
- "location": "./",
- "module": "/scripts/build.js"
- },
- "publish": {
- "location": "./",
- "module": "/scripts/publish.js"
- }
- },
- "mappings": {
- "nodejs": {
- "id": "nodejs.org/"
- },
- "pinf": {
- "id": "pinf.org/loader/"
- },
- "modules": {
- "id": "github.com/pinf/modules-js/"
- }
- }
-}
\ No newline at end of file
diff --git a/vendor/firephp/firephp-core/workspace/program.json b/vendor/firephp/firephp-core/workspace/program.json
deleted file mode 100644
index 9628b525..00000000
--- a/vendor/firephp/firephp-core/workspace/program.json
+++ /dev/null
@@ -1,78 +0,0 @@
-{
- "boot": "workspace",
- "engine": [
- "node"
- ],
- "packages": {
- "workspace": {
- "locator": {
- "location": "./"
- }
- },
- "nodejs.org/": {
- "provider": "nodejs.org/"
- },
- "pinf.org/loader/": {
- "provider": "pinf.org/loader/"
- },
- "github.com/pinf/modules-js/": {
- "locator": {
- "archive": "https://github.com/pinf/modules-js/zipball/master"
- }
- },
- "github.com/kriskowal/q/": {
- "locator": {
- "archive": "https://github.com/kriskowal/q/zipball/v0.3.0"
- },
- "descriptor": {
- "uid": "https://github.com/kriskowal/q/",
- "dependencies": [
- {
- "id": "github.com/pinf/modules-js/"
- }
- ]
- }
- },
- "private-registry.appspot.com/cadorn.com/github/com.cadorn.baby/projects/sourcemint/packages/client-js/": {
- "locator": {
- "archive": "https://github.com/cadorn/com.cadorn.baby/zipball/master",
- "path": "projects/sourcemint/packages/client-js"
- }
- },
- "github.com/cadorn/aws-lib/": {
- "locator": {
- "archive": "https://github.com/cadorn/aws-lib/zipball/master"
- },
- "descriptor": {
- "uid": "https://github.com/cadorn/aws-lib/",
- "native": true,
- "dependencies": [
- {
- "id": "registry.npmjs.org/sax/"
- },
- {
- "id": "registry.npmjs.org/xml2js/"
- }
- ]
- }
- },
- "registry.npmjs.org/sax/": {
- "locator": {
- "archive": "http://registry.npmjs.org/sax/-/sax-0.1.2.tgz"
- },
- "descriptor": {
- "uid": "http://registry.npmjs.org/sax/",
- "native": true
- }
- },
- "registry.npmjs.org/xml2js/": {
- "locator": {
- "archive": "http://registry.npmjs.org/xml2js/-/xml2js-0.1.6.tgz"
- },
- "descriptor": {
- "uid": "http://registry.npmjs.org/xml2js/",
- "native": true
- }
- }
- }
-}
\ No newline at end of file
diff --git a/vendor/firephp/firephp-core/workspace/scripts/build.js b/vendor/firephp/firephp-core/workspace/scripts/build.js
deleted file mode 100644
index 2481d99d..00000000
--- a/vendor/firephp/firephp-core/workspace/scripts/build.js
+++ /dev/null
@@ -1,164 +0,0 @@
-
-var FILE = require("modules/file"),
- Q = require("modules/q"),
- SYSTEM = require("modules/system"),
- UTIL = require("modules/util"),
- JSON = require("modules/json");
-
-
-var pkgPath = FILE.dirname(FILE.dirname(FILE.dirname(module.id))),
- buildPath = pkgPath + "/build",
- tplPath = pkgPath + "/workspace/tpl",
- version = false;
-
-exports.getBuildPath = function()
-{
- return buildPath;
-}
-
-exports.main = function()
-{
-
- SYSTEM.exec("rm -Rf " + buildPath, function()
- {
- FILE.mkdirs(buildPath, 0775);
-
- SYSTEM.exec("git tag", function(stdout)
- {
- version = UTIL.trim(stdout).split("\n").pop().match(/^v(.*)$/)[1];
-
- // TODO: Compare against version in `../../program.json ~ version` (ensure =)
-
- module.print("\0cyan(Building version: " + version + "\0)\n");
-
- buildZipArchive(function()
- {
- buildPEARArchive(function()
- {
- done();
- });
- });
- });
- });
-
- function done()
- {
- module.print("\0green(Done\0)\n");
- }
-}
-
-function buildZipArchive(callback)
-{
- var targetBasePath = buildPath + "/FirePHPCore-" + version;
-
- FILE.mkdirs(targetBasePath, 0775);
-
- SYSTEM.exec("rsync -r --copy-links --exclude \"- .DS_Store\" --exclude \"- .git/\" --exclude \"- .tmp_*\" " + pkgPath + "/lib " + targetBasePath, function()
- {
- replaceVariablesInFile(targetBasePath + "/lib/FirePHPCore/FirePHP.class.php");
- replaceVariablesInFile(targetBasePath + "/lib/FirePHPCore/FirePHP.class.php4");
-
- SYSTEM.exec("cp -Rf " + pkgPath + "/examples " + targetBasePath, function()
- {
- next1();
- });
- });
-
- function next1()
- {
- var content = FILE.read(tplPath + "/readme.tpl.md");
- content = content.replace(/%%VERSION%%/g, version);
- FILE.write(targetBasePath + "/README.md", content);
-
- var content = FILE.read(tplPath + "/license.tpl.md");
- FILE.write(targetBasePath + "/LICENSE.md", content);
-
- FILE.write(buildPath + "/info.json", JSON.encode({
- version: version
- }));
-
- next2();
- }
-
- function next2()
- {
- SYSTEM.exec("cd " + buildPath + " ; zip -vr FirePHPCore-" + version + ".zip FirePHPCore-" + version, function(stdout)
- {
- console.log(stdout);
-
- callback();
- });
- }
-}
-
-function buildPEARArchive(callback)
-{
- var targetBasePath = buildPath + "/pear";
-
- FILE.mkdirs(targetBasePath, 0775);
-
- SYSTEM.exec("rsync -r --copy-links --exclude \"- .DS_Store\" --exclude \"- .git/\" --exclude \"- .tmp_*\" " + pkgPath + "/lib/FirePHPCore/* " + targetBasePath, function()
- {
- replaceVariablesInFile(targetBasePath + "/FirePHP.class.php");
- replaceVariablesInFile(targetBasePath + "/FirePHP.class.php4");
-
- next1();
- });
-
- function next1()
- {
- var content = FILE.read(tplPath + "/pear.package.tpl.xml");
-
- var date = new Date();
- content = content.replace(/%%DATE%%/g, date.getFullYear() + "-" + UTIL.padBegin(date.getMonth()+1, 2, "0") + "-" + date.getDate());
- content = content.replace(/%%VERSION%%/g, version);
- content = content.replace(/%%STABILITY%%/g, "stable");
-
- FILE.write(targetBasePath + "/package.xml", content);
-
- next2();
- }
-
- function next2()
- {
- SYSTEM.exec("pear channel-discover pear.firephp.org", function(stdout)
- {
- console.log(stdout);
-
- SYSTEM.exec("cd " + targetBasePath + "; pear package package.xml", function(stdout)
- {
- console.log(stdout);
-
- callback();
- });
- });
- }
-}
-
-function replaceVariablesInFile(path)
-{
- var content = FILE.read(path);
-
- // @pinf replace '0.3' with '%%VERSION%%'
- var re1 = /\n(.*)\/\/\s*@pinf\s(.*)\n/g;
- var match1;
- while (match1 = re1.exec(content)) {
- var rule = match1[2].match(/^replace (.*?) with (.*)$/);
- if(rule) {
- // replace variables in rule
- var re2 = /%%([^%]*)%%/g;
- var match2;
- while (match2 = re2.exec(rule[2])) {
- var value;
- if(match2[1]=="VERSION") {
- value = version;
- }
- rule[2] = rule[2].replace(match2[0], value);
- }
- match1[1] = match1[1].replace(rule[1], rule[2]);
- content = content.replace(match1[0], "\n"+match1[1]+"\n");
- }
- }
-
- FILE.write(path, content);
-}
diff --git a/vendor/firephp/firephp-core/workspace/scripts/publish.js b/vendor/firephp/firephp-core/workspace/scripts/publish.js
deleted file mode 100644
index 39106e1b..00000000
--- a/vendor/firephp/firephp-core/workspace/scripts/publish.js
+++ /dev/null
@@ -1,65 +0,0 @@
-
-var PINF_LOADER = require("pinf/loader"),
- SANDBOX = PINF_LOADER.getSandbox(),
- FILE = require("modules/file"),
- Q = require("modules/q"),
- SYSTEM = require("modules/system"),
- BUILD = require("./build"),
- JSON = require("modules/json"),
- SOURCEMINT_CLIENT = false;
-
-exports.main = function()
-{
- module.load({
- id: "private-registry.appspot.com/cadorn.com/github/com.cadorn.baby/projects/sourcemint/packages/client-js/",
- descriptor: {
- main: "lib/client.js"
- }
- }, function(id)
- {
- SOURCEMINT_CLIENT = require(id);
-
- publish();
- });
-}
-
-function publish()
-{
- var buildPath = BUILD.getBuildPath(),
- info = JSON.decode(FILE.read(buildPath + "/info.json")),
- descriptor = JSON.decode(FILE.read(FILE.dirname(FILE.dirname(FILE.dirname(module.id))) + "/package.json"));
-
- var bundles = {};
- bundles["firephp-core.zip"] = {
- "type": "zip",
- "options": {
- "archivePath": buildPath + "/FirePHPCore-" + info.version + ".zip",
- }
- };
-
- var packages = [
- {
- "uid": descriptor.uid,
- "stream": "stable",
- "version": info.version,
- "bundles": bundles
- }
- ];
-
- try
- {
- Q.when(SOURCEMINT_CLIENT.publish(packages), function(info)
- {
- module.print("\0green(Published:\n");
- console.log(info);
- module.print("\0)");
- }, function(e)
- {
- throw e;
- });
- }
- catch(e)
- {
- console.error("Error: " + e);
- }
-}
diff --git a/vendor/firephp/firephp-core/workspace/tpl/license.tpl.md b/vendor/firephp/firephp-core/workspace/tpl/license.tpl.md
deleted file mode 100644
index 1b0aaf26..00000000
--- a/vendor/firephp/firephp-core/workspace/tpl/license.tpl.md
+++ /dev/null
@@ -1,21 +0,0 @@
-[MIT License](http://www.opensource.org/licenses/mit-license.php)
-
-Copyright (c) 2007+ [Christoph Dorn](http://www.christophdorn.com/)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
\ No newline at end of file
diff --git a/vendor/firephp/firephp-core/workspace/tpl/pear.package.tpl.xml b/vendor/firephp/firephp-core/workspace/tpl/pear.package.tpl.xml
deleted file mode 100644
index b9f3d65a..00000000
--- a/vendor/firephp/firephp-core/workspace/tpl/pear.package.tpl.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-
-
-
- FirePHPCore
- pear.firephp.org
- Log variables from PHP to the browser (Firebug Console)
- Handles all communication between the PHP code on the server and the client. Also implements all core FirePHP features.
-
-
- Christoph Dorn
- cadorn
- christoph@christophdorn.com
- yes
-
-
- %%DATE%%
-
- %%VERSION%%
- 0.3
-
-
-
- %%STABILITY%%
- stable
-
-
- MIT
-
- No Notes
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4.0
-
-
- 1.4.5
-
-
-
-
-
-
-
diff --git a/vendor/firephp/firephp-core/workspace/tpl/readme.tpl.md b/vendor/firephp/firephp-core/workspace/tpl/readme.tpl.md
deleted file mode 100644
index 01264662..00000000
--- a/vendor/firephp/firephp-core/workspace/tpl/readme.tpl.md
+++ /dev/null
@@ -1,17 +0,0 @@
-FirePHPCore Server Library
-==========================
-
-Status: stable
-
-Version: [%%VERSION%%](https://github.com/firephp/firephp-core/tree/v%%VERSION%%)
-
-This archive contains the *FirePHPCore* PHP server library.
-
-Links
------
-
- * Documentation: http://docs.sourcemint.org/firephp.org/firephp/1/-docs/
- * Install: http://docs.sourcemint.org/firephp.org/firephp/1/-docs/Configuration/Traditional
- * Support: http://docs.sourcemint.org/firephp.org/firephp/1/-docs/OpenSource#support
- * Author: [Christoph Dorn](http://www.christophdorn.com/)
- * License: [MIT License](http://www.opensource.org/licenses/mit-license.php)
diff --git a/vendor/guzzlehttp/guzzle/.php_cs b/vendor/guzzlehttp/guzzle/.php_cs
deleted file mode 100644
index 2dd5036c..00000000
--- a/vendor/guzzlehttp/guzzle/.php_cs
+++ /dev/null
@@ -1,23 +0,0 @@
-setRiskyAllowed(true)
- ->setRules([
- '@PSR2' => true,
- 'array_syntax' => ['syntax' => 'short'],
- 'declare_strict_types' => false,
- 'concat_space' => ['spacing'=>'one'],
- 'php_unit_test_case_static_method_calls' => ['call_type' => 'self'],
- 'ordered_imports' => true,
- // 'phpdoc_align' => ['align'=>'vertical'],
- // 'native_function_invocation' => true,
- ])
- ->setFinder(
- PhpCsFixer\Finder::create()
- ->in(__DIR__.'/src')
- ->in(__DIR__.'/tests')
- ->name('*.php')
- )
-;
-
-return $config;
diff --git a/vendor/guzzlehttp/guzzle/CHANGELOG.md b/vendor/guzzlehttp/guzzle/CHANGELOG.md
deleted file mode 100644
index 464cf1c5..00000000
--- a/vendor/guzzlehttp/guzzle/CHANGELOG.md
+++ /dev/null
@@ -1,1338 +0,0 @@
-# Change Log
-
-## 6.5.5 - 2020-06-16
-
-* Unpin version constraint for `symfony/polyfill-intl-idn` [#2678](https://github.com/guzzle/guzzle/pull/2678)
-
-## 6.5.4 - 2020-05-25
-
-* Fix various intl icu issues [#2626](https://github.com/guzzle/guzzle/pull/2626)
-
-## 6.5.3 - 2020-04-18
-
-* Use Symfony intl-idn polyfill [#2550](https://github.com/guzzle/guzzle/pull/2550)
-* Remove use of internal functions [#2548](https://github.com/guzzle/guzzle/pull/2548)
-
-## 6.5.2 - 2019-12-23
-
-* idn_to_ascii() fix for old PHP versions [#2489](https://github.com/guzzle/guzzle/pull/2489)
-
-## 6.5.1 - 2019-12-21
-
-* Better defaults for PHP installations with old ICU lib [#2454](https://github.com/guzzle/guzzle/pull/2454)
-* IDN support for redirects [#2424](https://github.com/guzzle/guzzle/pull/2424)
-
-## 6.5.0 - 2019-12-07
-
-* Improvement: Added support for reset internal queue in MockHandler. [#2143](https://github.com/guzzle/guzzle/pull/2143)
-* Improvement: Added support to pass arbitrary options to `curl_multi_init`. [#2287](https://github.com/guzzle/guzzle/pull/2287)
-* Fix: Gracefully handle passing `null` to the `header` option. [#2132](https://github.com/guzzle/guzzle/pull/2132)
-* Fix: `RetryMiddleware` did not do exponential delay between retries due unit mismatch. [#2132](https://github.com/guzzle/guzzle/pull/2132)
- Previously, `RetryMiddleware` would sleep for 1 millisecond, then 2 milliseconds, then 4 milliseconds.
- **After this change, `RetryMiddleware` will sleep for 1 second, then 2 seconds, then 4 seconds.**
- `Middleware::retry()` accepts a second callback parameter to override the default timeouts if needed.
-* Fix: Prevent undefined offset when using array for ssl_key options. [#2348](https://github.com/guzzle/guzzle/pull/2348)
-* Deprecated `ClientInterface::VERSION`
-
-## 6.4.1 - 2019-10-23
-
-* No `guzzle.phar` was created in 6.4.0 due expired API token. This release will fix that
-* Added `parent::__construct()` to `FileCookieJar` and `SessionCookieJar`
-
-## 6.4.0 - 2019-10-23
-
-* Improvement: Improved error messages when using curl < 7.21.2 [#2108](https://github.com/guzzle/guzzle/pull/2108)
-* Fix: Test if response is readable before returning a summary in `RequestException::getResponseBodySummary()` [#2081](https://github.com/guzzle/guzzle/pull/2081)
-* Fix: Add support for GUZZLE_CURL_SELECT_TIMEOUT environment variable [#2161](https://github.com/guzzle/guzzle/pull/2161)
-* Improvement: Added `GuzzleHttp\Exception\InvalidArgumentException` [#2163](https://github.com/guzzle/guzzle/pull/2163)
-* Improvement: Added `GuzzleHttp\_current_time()` to use `hrtime()` if that function exists. [#2242](https://github.com/guzzle/guzzle/pull/2242)
-* Improvement: Added curl's `appconnect_time` in `TransferStats` [#2284](https://github.com/guzzle/guzzle/pull/2284)
-* Improvement: Make GuzzleException extend Throwable wherever it's available [#2273](https://github.com/guzzle/guzzle/pull/2273)
-* Fix: Prevent concurrent writes to file when saving `CookieJar` [#2335](https://github.com/guzzle/guzzle/pull/2335)
-* Improvement: Update `MockHandler` so we can test transfer time [#2362](https://github.com/guzzle/guzzle/pull/2362)
-
-## 6.3.3 - 2018-04-22
-
-* Fix: Default headers when decode_content is specified
-
-
-## 6.3.2 - 2018-03-26
-
-* Fix: Release process
-
-
-## 6.3.1 - 2018-03-26
-
-* Bug fix: Parsing 0 epoch expiry times in cookies [#2014](https://github.com/guzzle/guzzle/pull/2014)
-* Improvement: Better ConnectException detection [#2012](https://github.com/guzzle/guzzle/pull/2012)
-* Bug fix: Malformed domain that contains a "/" [#1999](https://github.com/guzzle/guzzle/pull/1999)
-* Bug fix: Undefined offset when a cookie has no first key-value pair [#1998](https://github.com/guzzle/guzzle/pull/1998)
-* Improvement: Support PHPUnit 6 [#1953](https://github.com/guzzle/guzzle/pull/1953)
-* Bug fix: Support empty headers [#1915](https://github.com/guzzle/guzzle/pull/1915)
-* Bug fix: Ignore case during header modifications [#1916](https://github.com/guzzle/guzzle/pull/1916)
-
-+ Minor code cleanups, documentation fixes and clarifications.
-
-
-## 6.3.0 - 2017-06-22
-
-* Feature: force IP resolution (ipv4 or ipv6) [#1608](https://github.com/guzzle/guzzle/pull/1608), [#1659](https://github.com/guzzle/guzzle/pull/1659)
-* Improvement: Don't include summary in exception message when body is empty [#1621](https://github.com/guzzle/guzzle/pull/1621)
-* Improvement: Handle `on_headers` option in MockHandler [#1580](https://github.com/guzzle/guzzle/pull/1580)
-* Improvement: Added SUSE Linux CA path [#1609](https://github.com/guzzle/guzzle/issues/1609)
-* Improvement: Use class reference for getting the name of the class instead of using hardcoded strings [#1641](https://github.com/guzzle/guzzle/pull/1641)
-* Feature: Added `read_timeout` option [#1611](https://github.com/guzzle/guzzle/pull/1611)
-* Bug fix: PHP 7.x fixes [#1685](https://github.com/guzzle/guzzle/pull/1685), [#1686](https://github.com/guzzle/guzzle/pull/1686), [#1811](https://github.com/guzzle/guzzle/pull/1811)
-* Deprecation: BadResponseException instantiation without a response [#1642](https://github.com/guzzle/guzzle/pull/1642)
-* Feature: Added NTLM auth [#1569](https://github.com/guzzle/guzzle/pull/1569)
-* Feature: Track redirect HTTP status codes [#1711](https://github.com/guzzle/guzzle/pull/1711)
-* Improvement: Check handler type during construction [#1745](https://github.com/guzzle/guzzle/pull/1745)
-* Improvement: Always include the Content-Length if there's a body [#1721](https://github.com/guzzle/guzzle/pull/1721)
-* Feature: Added convenience method to access a cookie by name [#1318](https://github.com/guzzle/guzzle/pull/1318)
-* Bug fix: Fill `CURLOPT_CAPATH` and `CURLOPT_CAINFO` properly [#1684](https://github.com/guzzle/guzzle/pull/1684)
-* Improvement: Use `\GuzzleHttp\Promise\rejection_for` function instead of object init [#1827](https://github.com/guzzle/guzzle/pull/1827)
-
-
-+ Minor code cleanups, documentation fixes and clarifications.
-
-## 6.2.3 - 2017-02-28
-
-* Fix deprecations with guzzle/psr7 version 1.4
-
-## 6.2.2 - 2016-10-08
-
-* Allow to pass nullable Response to delay callable
-* Only add scheme when host is present
-* Fix drain case where content-length is the literal string zero
-* Obfuscate in-URL credentials in exceptions
-
-## 6.2.1 - 2016-07-18
-
-* Address HTTP_PROXY security vulnerability, CVE-2016-5385:
- https://httpoxy.org/
-* Fixing timeout bug with StreamHandler:
- https://github.com/guzzle/guzzle/pull/1488
-* Only read up to `Content-Length` in PHP StreamHandler to avoid timeouts when
- a server does not honor `Connection: close`.
-* Ignore URI fragment when sending requests.
-
-## 6.2.0 - 2016-03-21
-
-* Feature: added `GuzzleHttp\json_encode` and `GuzzleHttp\json_decode`.
- https://github.com/guzzle/guzzle/pull/1389
-* Bug fix: Fix sleep calculation when waiting for delayed requests.
- https://github.com/guzzle/guzzle/pull/1324
-* Feature: More flexible history containers.
- https://github.com/guzzle/guzzle/pull/1373
-* Bug fix: defer sink stream opening in StreamHandler.
- https://github.com/guzzle/guzzle/pull/1377
-* Bug fix: do not attempt to escape cookie values.
- https://github.com/guzzle/guzzle/pull/1406
-* Feature: report original content encoding and length on decoded responses.
- https://github.com/guzzle/guzzle/pull/1409
-* Bug fix: rewind seekable request bodies before dispatching to cURL.
- https://github.com/guzzle/guzzle/pull/1422
-* Bug fix: provide an empty string to `http_build_query` for HHVM workaround.
- https://github.com/guzzle/guzzle/pull/1367
-
-## 6.1.1 - 2015-11-22
-
-* Bug fix: Proxy::wrapSync() now correctly proxies to the appropriate handler
- https://github.com/guzzle/guzzle/commit/911bcbc8b434adce64e223a6d1d14e9a8f63e4e4
-* Feature: HandlerStack is now more generic.
- https://github.com/guzzle/guzzle/commit/f2102941331cda544745eedd97fc8fd46e1ee33e
-* Bug fix: setting verify to false in the StreamHandler now disables peer
- verification. https://github.com/guzzle/guzzle/issues/1256
-* Feature: Middleware now uses an exception factory, including more error
- context. https://github.com/guzzle/guzzle/pull/1282
-* Feature: better support for disabled functions.
- https://github.com/guzzle/guzzle/pull/1287
-* Bug fix: fixed regression where MockHandler was not using `sink`.
- https://github.com/guzzle/guzzle/pull/1292
-
-## 6.1.0 - 2015-09-08
-
-* Feature: Added the `on_stats` request option to provide access to transfer
- statistics for requests. https://github.com/guzzle/guzzle/pull/1202
-* Feature: Added the ability to persist session cookies in CookieJars.
- https://github.com/guzzle/guzzle/pull/1195
-* Feature: Some compatibility updates for Google APP Engine
- https://github.com/guzzle/guzzle/pull/1216
-* Feature: Added support for NO_PROXY to prevent the use of a proxy based on
- a simple set of rules. https://github.com/guzzle/guzzle/pull/1197
-* Feature: Cookies can now contain square brackets.
- https://github.com/guzzle/guzzle/pull/1237
-* Bug fix: Now correctly parsing `=` inside of quotes in Cookies.
- https://github.com/guzzle/guzzle/pull/1232
-* Bug fix: Cusotm cURL options now correctly override curl options of the
- same name. https://github.com/guzzle/guzzle/pull/1221
-* Bug fix: Content-Type header is now added when using an explicitly provided
- multipart body. https://github.com/guzzle/guzzle/pull/1218
-* Bug fix: Now ignoring Set-Cookie headers that have no name.
-* Bug fix: Reason phrase is no longer cast to an int in some cases in the
- cURL handler. https://github.com/guzzle/guzzle/pull/1187
-* Bug fix: Remove the Authorization header when redirecting if the Host
- header changes. https://github.com/guzzle/guzzle/pull/1207
-* Bug fix: Cookie path matching fixes
- https://github.com/guzzle/guzzle/issues/1129
-* Bug fix: Fixing the cURL `body_as_string` setting
- https://github.com/guzzle/guzzle/pull/1201
-* Bug fix: quotes are no longer stripped when parsing cookies.
- https://github.com/guzzle/guzzle/issues/1172
-* Bug fix: `form_params` and `query` now always uses the `&` separator.
- https://github.com/guzzle/guzzle/pull/1163
-* Bug fix: Adding a Content-Length to PHP stream wrapper requests if not set.
- https://github.com/guzzle/guzzle/pull/1189
-
-## 6.0.2 - 2015-07-04
-
-* Fixed a memory leak in the curl handlers in which references to callbacks
- were not being removed by `curl_reset`.
-* Cookies are now extracted properly before redirects.
-* Cookies now allow more character ranges.
-* Decoded Content-Encoding responses are now modified to correctly reflect
- their state if the encoding was automatically removed by a handler. This
- means that the `Content-Encoding` header may be removed an the
- `Content-Length` modified to reflect the message size after removing the
- encoding.
-* Added a more explicit error message when trying to use `form_params` and
- `multipart` in the same request.
-* Several fixes for HHVM support.
-* Functions are now conditionally required using an additional level of
- indirection to help with global Composer installations.
-
-## 6.0.1 - 2015-05-27
-
-* Fixed a bug with serializing the `query` request option where the `&`
- separator was missing.
-* Added a better error message for when `body` is provided as an array. Please
- use `form_params` or `multipart` instead.
-* Various doc fixes.
-
-## 6.0.0 - 2015-05-26
-
-* See the UPGRADING.md document for more information.
-* Added `multipart` and `form_params` request options.
-* Added `synchronous` request option.
-* Added the `on_headers` request option.
-* Fixed `expect` handling.
-* No longer adding default middlewares in the client ctor. These need to be
- present on the provided handler in order to work.
-* Requests are no longer initiated when sending async requests with the
- CurlMultiHandler. This prevents unexpected recursion from requests completing
- while ticking the cURL loop.
-* Removed the semantics of setting `default` to `true`. This is no longer
- required now that the cURL loop is not ticked for async requests.
-* Added request and response logging middleware.
-* No longer allowing self signed certificates when using the StreamHandler.
-* Ensuring that `sink` is valid if saving to a file.
-* Request exceptions now include a "handler context" which provides handler
- specific contextual information.
-* Added `GuzzleHttp\RequestOptions` to allow request options to be applied
- using constants.
-* `$maxHandles` has been removed from CurlMultiHandler.
-* `MultipartPostBody` is now part of the `guzzlehttp/psr7` package.
-
-## 5.3.0 - 2015-05-19
-
-* Mock now supports `save_to`
-* Marked `AbstractRequestEvent::getTransaction()` as public.
-* Fixed a bug in which multiple headers using different casing would overwrite
- previous headers in the associative array.
-* Added `Utils::getDefaultHandler()`
-* Marked `GuzzleHttp\Client::getDefaultUserAgent` as deprecated.
-* URL scheme is now always lowercased.
-
-## 6.0.0-beta.1
-
-* Requires PHP >= 5.5
-* Updated to use PSR-7
- * Requires immutable messages, which basically means an event based system
- owned by a request instance is no longer possible.
- * Utilizing the [Guzzle PSR-7 package](https://github.com/guzzle/psr7).
- * Removed the dependency on `guzzlehttp/streams`. These stream abstractions
- are available in the `guzzlehttp/psr7` package under the `GuzzleHttp\Psr7`
- namespace.
-* Added middleware and handler system
- * Replaced the Guzzle event and subscriber system with a middleware system.
- * No longer depends on RingPHP, but rather places the HTTP handlers directly
- in Guzzle, operating on PSR-7 messages.
- * Retry logic is now encapsulated in `GuzzleHttp\Middleware::retry`, which
- means the `guzzlehttp/retry-subscriber` is now obsolete.
- * Mocking responses is now handled using `GuzzleHttp\Handler\MockHandler`.
-* Asynchronous responses
- * No longer supports the `future` request option to send an async request.
- Instead, use one of the `*Async` methods of a client (e.g., `requestAsync`,
- `getAsync`, etc.).
- * Utilizing `GuzzleHttp\Promise` instead of React's promise library to avoid
- recursion required by chaining and forwarding react promises. See
- https://github.com/guzzle/promises
- * Added `requestAsync` and `sendAsync` to send request asynchronously.
- * Added magic methods for `getAsync()`, `postAsync()`, etc. to send requests
- asynchronously.
-* Request options
- * POST and form updates
- * Added the `form_fields` and `form_files` request options.
- * Removed the `GuzzleHttp\Post` namespace.
- * The `body` request option no longer accepts an array for POST requests.
- * The `exceptions` request option has been deprecated in favor of the
- `http_errors` request options.
- * The `save_to` request option has been deprecated in favor of `sink` request
- option.
-* Clients no longer accept an array of URI template string and variables for
- URI variables. You will need to expand URI templates before passing them
- into a client constructor or request method.
-* Client methods `get()`, `post()`, `put()`, `patch()`, `options()`, etc. are
- now magic methods that will send synchronous requests.
-* Replaced `Utils.php` with plain functions in `functions.php`.
-* Removed `GuzzleHttp\Collection`.
-* Removed `GuzzleHttp\BatchResults`. Batched pool results are now returned as
- an array.
-* Removed `GuzzleHttp\Query`. Query string handling is now handled using an
- associative array passed into the `query` request option. The query string
- is serialized using PHP's `http_build_query`. If you need more control, you
- can pass the query string in as a string.
-* `GuzzleHttp\QueryParser` has been replaced with the
- `GuzzleHttp\Psr7\parse_query`.
-
-## 5.2.0 - 2015-01-27
-
-* Added `AppliesHeadersInterface` to make applying headers to a request based
- on the body more generic and not specific to `PostBodyInterface`.
-* Reduced the number of stack frames needed to send requests.
-* Nested futures are now resolved in the client rather than the RequestFsm
-* Finishing state transitions is now handled in the RequestFsm rather than the
- RingBridge.
-* Added a guard in the Pool class to not use recursion for request retries.
-
-## 5.1.0 - 2014-12-19
-
-* Pool class no longer uses recursion when a request is intercepted.
-* The size of a Pool can now be dynamically adjusted using a callback.
- See https://github.com/guzzle/guzzle/pull/943.
-* Setting a request option to `null` when creating a request with a client will
- ensure that the option is not set. This allows you to overwrite default
- request options on a per-request basis.
- See https://github.com/guzzle/guzzle/pull/937.
-* Added the ability to limit which protocols are allowed for redirects by
- specifying a `protocols` array in the `allow_redirects` request option.
-* Nested futures due to retries are now resolved when waiting for synchronous
- responses. See https://github.com/guzzle/guzzle/pull/947.
-* `"0"` is now an allowed URI path. See
- https://github.com/guzzle/guzzle/pull/935.
-* `Query` no longer typehints on the `$query` argument in the constructor,
- allowing for strings and arrays.
-* Exceptions thrown in the `end` event are now correctly wrapped with Guzzle
- specific exceptions if necessary.
-
-## 5.0.3 - 2014-11-03
-
-This change updates query strings so that they are treated as un-encoded values
-by default where the value represents an un-encoded value to send over the
-wire. A Query object then encodes the value before sending over the wire. This
-means that even value query string values (e.g., ":") are url encoded. This
-makes the Query class match PHP's http_build_query function. However, if you
-want to send requests over the wire using valid query string characters that do
-not need to be encoded, then you can provide a string to Url::setQuery() and
-pass true as the second argument to specify that the query string is a raw
-string that should not be parsed or encoded (unless a call to getQuery() is
-subsequently made, forcing the query-string to be converted into a Query
-object).
-
-## 5.0.2 - 2014-10-30
-
-* Added a trailing `\r\n` to multipart/form-data payloads. See
- https://github.com/guzzle/guzzle/pull/871
-* Added a `GuzzleHttp\Pool::send()` convenience method to match the docs.
-* Status codes are now returned as integers. See
- https://github.com/guzzle/guzzle/issues/881
-* No longer overwriting an existing `application/x-www-form-urlencoded` header
- when sending POST requests, allowing for customized headers. See
- https://github.com/guzzle/guzzle/issues/877
-* Improved path URL serialization.
-
- * No longer double percent-encoding characters in the path or query string if
- they are already encoded.
- * Now properly encoding the supplied path to a URL object, instead of only
- encoding ' ' and '?'.
- * Note: This has been changed in 5.0.3 to now encode query string values by
- default unless the `rawString` argument is provided when setting the query
- string on a URL: Now allowing many more characters to be present in the
- query string without being percent encoded. See http://tools.ietf.org/html/rfc3986#appendix-A
-
-## 5.0.1 - 2014-10-16
-
-Bugfix release.
-
-* Fixed an issue where connection errors still returned response object in
- error and end events event though the response is unusable. This has been
- corrected so that a response is not returned in the `getResponse` method of
- these events if the response did not complete. https://github.com/guzzle/guzzle/issues/867
-* Fixed an issue where transfer statistics were not being populated in the
- RingBridge. https://github.com/guzzle/guzzle/issues/866
-
-## 5.0.0 - 2014-10-12
-
-Adding support for non-blocking responses and some minor API cleanup.
-
-### New Features
-
-* Added support for non-blocking responses based on `guzzlehttp/guzzle-ring`.
-* Added a public API for creating a default HTTP adapter.
-* Updated the redirect plugin to be non-blocking so that redirects are sent
- concurrently. Other plugins like this can now be updated to be non-blocking.
-* Added a "progress" event so that you can get upload and download progress
- events.
-* Added `GuzzleHttp\Pool` which implements FutureInterface and transfers
- requests concurrently using a capped pool size as efficiently as possible.
-* Added `hasListeners()` to EmitterInterface.
-* Removed `GuzzleHttp\ClientInterface::sendAll` and marked
- `GuzzleHttp\Client::sendAll` as deprecated (it's still there, just not the
- recommended way).
-
-### Breaking changes
-
-The breaking changes in this release are relatively minor. The biggest thing to
-look out for is that request and response objects no longer implement fluent
-interfaces.
-
-* Removed the fluent interfaces (i.e., `return $this`) from requests,
- responses, `GuzzleHttp\Collection`, `GuzzleHttp\Url`,
- `GuzzleHttp\Query`, `GuzzleHttp\Post\PostBody`, and
- `GuzzleHttp\Cookie\SetCookie`. This blog post provides a good outline of
- why I did this: http://ocramius.github.io/blog/fluent-interfaces-are-evil/.
- This also makes the Guzzle message interfaces compatible with the current
- PSR-7 message proposal.
-* Removed "functions.php", so that Guzzle is truly PSR-4 compliant. Except
- for the HTTP request functions from function.php, these functions are now
- implemented in `GuzzleHttp\Utils` using camelCase. `GuzzleHttp\json_decode`
- moved to `GuzzleHttp\Utils::jsonDecode`. `GuzzleHttp\get_path` moved to
- `GuzzleHttp\Utils::getPath`. `GuzzleHttp\set_path` moved to
- `GuzzleHttp\Utils::setPath`. `GuzzleHttp\batch` should now be
- `GuzzleHttp\Pool::batch`, which returns an `objectStorage`. Using functions.php
- caused problems for many users: they aren't PSR-4 compliant, require an
- explicit include, and needed an if-guard to ensure that the functions are not
- declared multiple times.
-* Rewrote adapter layer.
- * Removing all classes from `GuzzleHttp\Adapter`, these are now
- implemented as callables that are stored in `GuzzleHttp\Ring\Client`.
- * Removed the concept of "parallel adapters". Sending requests serially or
- concurrently is now handled using a single adapter.
- * Moved `GuzzleHttp\Adapter\Transaction` to `GuzzleHttp\Transaction`. The
- Transaction object now exposes the request, response, and client as public
- properties. The getters and setters have been removed.
-* Removed the "headers" event. This event was only useful for changing the
- body a response once the headers of the response were known. You can implement
- a similar behavior in a number of ways. One example might be to use a
- FnStream that has access to the transaction being sent. For example, when the
- first byte is written, you could check if the response headers match your
- expectations, and if so, change the actual stream body that is being
- written to.
-* Removed the `asArray` parameter from
- `GuzzleHttp\Message\MessageInterface::getHeader`. If you want to get a header
- value as an array, then use the newly added `getHeaderAsArray()` method of
- `MessageInterface`. This change makes the Guzzle interfaces compatible with
- the PSR-7 interfaces.
-* `GuzzleHttp\Message\MessageFactory` no longer allows subclasses to add
- custom request options using double-dispatch (this was an implementation
- detail). Instead, you should now provide an associative array to the
- constructor which is a mapping of the request option name mapping to a
- function that applies the option value to a request.
-* Removed the concept of "throwImmediately" from exceptions and error events.
- This control mechanism was used to stop a transfer of concurrent requests
- from completing. This can now be handled by throwing the exception or by
- cancelling a pool of requests or each outstanding future request individually.
-* Updated to "GuzzleHttp\Streams" 3.0.
- * `GuzzleHttp\Stream\StreamInterface::getContents()` no longer accepts a
- `maxLen` parameter. This update makes the Guzzle streams project
- compatible with the current PSR-7 proposal.
- * `GuzzleHttp\Stream\Stream::__construct`,
- `GuzzleHttp\Stream\Stream::factory`, and
- `GuzzleHttp\Stream\Utils::create` no longer accept a size in the second
- argument. They now accept an associative array of options, including the
- "size" key and "metadata" key which can be used to provide custom metadata.
-
-## 4.2.2 - 2014-09-08
-
-* Fixed a memory leak in the CurlAdapter when reusing cURL handles.
-* No longer using `request_fulluri` in stream adapter proxies.
-* Relative redirects are now based on the last response, not the first response.
-
-## 4.2.1 - 2014-08-19
-
-* Ensuring that the StreamAdapter does not always add a Content-Type header
-* Adding automated github releases with a phar and zip
-
-## 4.2.0 - 2014-08-17
-
-* Now merging in default options using a case-insensitive comparison.
- Closes https://github.com/guzzle/guzzle/issues/767
-* Added the ability to automatically decode `Content-Encoding` response bodies
- using the `decode_content` request option. This is set to `true` by default
- to decode the response body if it comes over the wire with a
- `Content-Encoding`. Set this value to `false` to disable decoding the
- response content, and pass a string to provide a request `Accept-Encoding`
- header and turn on automatic response decoding. This feature now allows you
- to pass an `Accept-Encoding` header in the headers of a request but still
- disable automatic response decoding.
- Closes https://github.com/guzzle/guzzle/issues/764
-* Added the ability to throw an exception immediately when transferring
- requests in parallel. Closes https://github.com/guzzle/guzzle/issues/760
-* Updating guzzlehttp/streams dependency to ~2.1
-* No longer utilizing the now deprecated namespaced methods from the stream
- package.
-
-## 4.1.8 - 2014-08-14
-
-* Fixed an issue in the CurlFactory that caused setting the `stream=false`
- request option to throw an exception.
- See: https://github.com/guzzle/guzzle/issues/769
-* TransactionIterator now calls rewind on the inner iterator.
- See: https://github.com/guzzle/guzzle/pull/765
-* You can now set the `Content-Type` header to `multipart/form-data`
- when creating POST requests to force multipart bodies.
- See https://github.com/guzzle/guzzle/issues/768
-
-## 4.1.7 - 2014-08-07
-
-* Fixed an error in the HistoryPlugin that caused the same request and response
- to be logged multiple times when an HTTP protocol error occurs.
-* Ensuring that cURL does not add a default Content-Type when no Content-Type
- has been supplied by the user. This prevents the adapter layer from modifying
- the request that is sent over the wire after any listeners may have already
- put the request in a desired state (e.g., signed the request).
-* Throwing an exception when you attempt to send requests that have the
- "stream" set to true in parallel using the MultiAdapter.
-* Only calling curl_multi_select when there are active cURL handles. This was
- previously changed and caused performance problems on some systems due to PHP
- always selecting until the maximum select timeout.
-* Fixed a bug where multipart/form-data POST fields were not correctly
- aggregated (e.g., values with "&").
-
-## 4.1.6 - 2014-08-03
-
-* Added helper methods to make it easier to represent messages as strings,
- including getting the start line and getting headers as a string.
-
-## 4.1.5 - 2014-08-02
-
-* Automatically retrying cURL "Connection died, retrying a fresh connect"
- errors when possible.
-* cURL implementation cleanup
-* Allowing multiple event subscriber listeners to be registered per event by
- passing an array of arrays of listener configuration.
-
-## 4.1.4 - 2014-07-22
-
-* Fixed a bug that caused multi-part POST requests with more than one field to
- serialize incorrectly.
-* Paths can now be set to "0"
-* `ResponseInterface::xml` now accepts a `libxml_options` option and added a
- missing default argument that was required when parsing XML response bodies.
-* A `save_to` stream is now created lazily, which means that files are not
- created on disk unless a request succeeds.
-
-## 4.1.3 - 2014-07-15
-
-* Various fixes to multipart/form-data POST uploads
-* Wrapping function.php in an if-statement to ensure Guzzle can be used
- globally and in a Composer install
-* Fixed an issue with generating and merging in events to an event array
-* POST headers are only applied before sending a request to allow you to change
- the query aggregator used before uploading
-* Added much more robust query string parsing
-* Fixed various parsing and normalization issues with URLs
-* Fixing an issue where multi-valued headers were not being utilized correctly
- in the StreamAdapter
-
-## 4.1.2 - 2014-06-18
-
-* Added support for sending payloads with GET requests
-
-## 4.1.1 - 2014-06-08
-
-* Fixed an issue related to using custom message factory options in subclasses
-* Fixed an issue with nested form fields in a multi-part POST
-* Fixed an issue with using the `json` request option for POST requests
-* Added `ToArrayInterface` to `GuzzleHttp\Cookie\CookieJar`
-
-## 4.1.0 - 2014-05-27
-
-* Added a `json` request option to easily serialize JSON payloads.
-* Added a `GuzzleHttp\json_decode()` wrapper to safely parse JSON.
-* Added `setPort()` and `getPort()` to `GuzzleHttp\Message\RequestInterface`.
-* Added the ability to provide an emitter to a client in the client constructor.
-* Added the ability to persist a cookie session using $_SESSION.
-* Added a trait that can be used to add event listeners to an iterator.
-* Removed request method constants from RequestInterface.
-* Fixed warning when invalid request start-lines are received.
-* Updated MessageFactory to work with custom request option methods.
-* Updated cacert bundle to latest build.
-
-4.0.2 (2014-04-16)
-------------------
-
-* Proxy requests using the StreamAdapter now properly use request_fulluri (#632)
-* Added the ability to set scalars as POST fields (#628)
-
-## 4.0.1 - 2014-04-04
-
-* The HTTP status code of a response is now set as the exception code of
- RequestException objects.
-* 303 redirects will now correctly switch from POST to GET requests.
-* The default parallel adapter of a client now correctly uses the MultiAdapter.
-* HasDataTrait now initializes the internal data array as an empty array so
- that the toArray() method always returns an array.
-
-## 4.0.0 - 2014-03-29
-
-* For more information on the 4.0 transition, see:
- http://mtdowling.com/blog/2014/03/15/guzzle-4-rc/
-* For information on changes and upgrading, see:
- https://github.com/guzzle/guzzle/blob/master/UPGRADING.md#3x-to-40
-* Added `GuzzleHttp\batch()` as a convenience function for sending requests in
- parallel without needing to write asynchronous code.
-* Restructured how events are added to `GuzzleHttp\ClientInterface::sendAll()`.
- You can now pass a callable or an array of associative arrays where each
- associative array contains the "fn", "priority", and "once" keys.
-
-## 4.0.0.rc-2 - 2014-03-25
-
-* Removed `getConfig()` and `setConfig()` from clients to avoid confusion
- around whether things like base_url, message_factory, etc. should be able to
- be retrieved or modified.
-* Added `getDefaultOption()` and `setDefaultOption()` to ClientInterface
-* functions.php functions were renamed using snake_case to match PHP idioms
-* Added support for `HTTP_PROXY`, `HTTPS_PROXY`, and
- `GUZZLE_CURL_SELECT_TIMEOUT` environment variables
-* Added the ability to specify custom `sendAll()` event priorities
-* Added the ability to specify custom stream context options to the stream
- adapter.
-* Added a functions.php function for `get_path()` and `set_path()`
-* CurlAdapter and MultiAdapter now use a callable to generate curl resources
-* MockAdapter now properly reads a body and emits a `headers` event
-* Updated Url class to check if a scheme and host are set before adding ":"
- and "//". This allows empty Url (e.g., "") to be serialized as "".
-* Parsing invalid XML no longer emits warnings
-* Curl classes now properly throw AdapterExceptions
-* Various performance optimizations
-* Streams are created with the faster `Stream\create()` function
-* Marked deprecation_proxy() as internal
-* Test server is now a collection of static methods on a class
-
-## 4.0.0-rc.1 - 2014-03-15
-
-* See https://github.com/guzzle/guzzle/blob/master/UPGRADING.md#3x-to-40
-
-## 3.8.1 - 2014-01-28
-
-* Bug: Always using GET requests when redirecting from a 303 response
-* Bug: CURLOPT_SSL_VERIFYHOST is now correctly set to false when setting `$certificateAuthority` to false in
- `Guzzle\Http\ClientInterface::setSslVerification()`
-* Bug: RedirectPlugin now uses strict RFC 3986 compliance when combining a base URL with a relative URL
-* Bug: The body of a request can now be set to `"0"`
-* Sending PHP stream requests no longer forces `HTTP/1.0`
-* Adding more information to ExceptionCollection exceptions so that users have more context, including a stack trace of
- each sub-exception
-* Updated the `$ref` attribute in service descriptions to merge over any existing parameters of a schema (rather than
- clobbering everything).
-* Merging URLs will now use the query string object from the relative URL (thus allowing custom query aggregators)
-* Query strings are now parsed in a way that they do no convert empty keys with no value to have a dangling `=`.
- For example `foo&bar=baz` is now correctly parsed and recognized as `foo&bar=baz` rather than `foo=&bar=baz`.
-* Now properly escaping the regular expression delimiter when matching Cookie domains.
-* Network access is now disabled when loading XML documents
-
-## 3.8.0 - 2013-12-05
-
-* Added the ability to define a POST name for a file
-* JSON response parsing now properly walks additionalProperties
-* cURL error code 18 is now retried automatically in the BackoffPlugin
-* Fixed a cURL error when URLs contain fragments
-* Fixed an issue in the BackoffPlugin retry event where it was trying to access all exceptions as if they were
- CurlExceptions
-* CURLOPT_PROGRESS function fix for PHP 5.5 (69fcc1e)
-* Added the ability for Guzzle to work with older versions of cURL that do not support `CURLOPT_TIMEOUT_MS`
-* Fixed a bug that was encountered when parsing empty header parameters
-* UriTemplate now has a `setRegex()` method to match the docs
-* The `debug` request parameter now checks if it is truthy rather than if it exists
-* Setting the `debug` request parameter to true shows verbose cURL output instead of using the LogPlugin
-* Added the ability to combine URLs using strict RFC 3986 compliance
-* Command objects can now return the validation errors encountered by the command
-* Various fixes to cache revalidation (#437 and 29797e5)
-* Various fixes to the AsyncPlugin
-* Cleaned up build scripts
-
-## 3.7.4 - 2013-10-02
-
-* Bug fix: 0 is now an allowed value in a description parameter that has a default value (#430)
-* Bug fix: SchemaFormatter now returns an integer when formatting to a Unix timestamp
- (see https://github.com/aws/aws-sdk-php/issues/147)
-* Bug fix: Cleaned up and fixed URL dot segment removal to properly resolve internal dots
-* Minimum PHP version is now properly specified as 5.3.3 (up from 5.3.2) (#420)
-* Updated the bundled cacert.pem (#419)
-* OauthPlugin now supports adding authentication to headers or query string (#425)
-
-## 3.7.3 - 2013-09-08
-
-* Added the ability to get the exception associated with a request/command when using `MultiTransferException` and
- `CommandTransferException`.
-* Setting `additionalParameters` of a response to false is now honored when parsing responses with a service description
-* Schemas are only injected into response models when explicitly configured.
-* No longer guessing Content-Type based on the path of a request. Content-Type is now only guessed based on the path of
- an EntityBody.
-* Bug fix: ChunkedIterator can now properly chunk a \Traversable as well as an \Iterator.
-* Bug fix: FilterIterator now relies on `\Iterator` instead of `\Traversable`.
-* Bug fix: Gracefully handling malformed responses in RequestMediator::writeResponseBody()
-* Bug fix: Replaced call to canCache with canCacheRequest in the CallbackCanCacheStrategy of the CachePlugin
-* Bug fix: Visiting XML attributes first before visiting XML children when serializing requests
-* Bug fix: Properly parsing headers that contain commas contained in quotes
-* Bug fix: mimetype guessing based on a filename is now case-insensitive
-
-## 3.7.2 - 2013-08-02
-
-* Bug fix: Properly URL encoding paths when using the PHP-only version of the UriTemplate expander
- See https://github.com/guzzle/guzzle/issues/371
-* Bug fix: Cookie domains are now matched correctly according to RFC 6265
- See https://github.com/guzzle/guzzle/issues/377
-* Bug fix: GET parameters are now used when calculating an OAuth signature
-* Bug fix: Fixed an issue with cache revalidation where the If-None-Match header was being double quoted
-* `Guzzle\Common\AbstractHasDispatcher::dispatch()` now returns the event that was dispatched
-* `Guzzle\Http\QueryString::factory()` now guesses the most appropriate query aggregator to used based on the input.
- See https://github.com/guzzle/guzzle/issues/379
-* Added a way to add custom domain objects to service description parsing using the `operation.parse_class` event. See
- https://github.com/guzzle/guzzle/pull/380
-* cURL multi cleanup and optimizations
-
-## 3.7.1 - 2013-07-05
-
-* Bug fix: Setting default options on a client now works
-* Bug fix: Setting options on HEAD requests now works. See #352
-* Bug fix: Moving stream factory before send event to before building the stream. See #353
-* Bug fix: Cookies no longer match on IP addresses per RFC 6265
-* Bug fix: Correctly parsing header parameters that are in `<>` and quotes
-* Added `cert` and `ssl_key` as request options
-* `Host` header can now diverge from the host part of a URL if the header is set manually
-* `Guzzle\Service\Command\LocationVisitor\Request\XmlVisitor` was rewritten to change from using SimpleXML to XMLWriter
-* OAuth parameters are only added via the plugin if they aren't already set
-* Exceptions are now thrown when a URL cannot be parsed
-* Returning `false` if `Guzzle\Http\EntityBody::getContentMd5()` fails
-* Not setting a `Content-MD5` on a command if calculating the Content-MD5 fails via the CommandContentMd5Plugin
-
-## 3.7.0 - 2013-06-10
-
-* See UPGRADING.md for more information on how to upgrade.
-* Requests now support the ability to specify an array of $options when creating a request to more easily modify a
- request. You can pass a 'request.options' configuration setting to a client to apply default request options to
- every request created by a client (e.g. default query string variables, headers, curl options, etc.).
-* Added a static facade class that allows you to use Guzzle with static methods and mount the class to `\Guzzle`.
- See `Guzzle\Http\StaticClient::mount`.
-* Added `command.request_options` to `Guzzle\Service\Command\AbstractCommand` to pass request options to requests
- created by a command (e.g. custom headers, query string variables, timeout settings, etc.).
-* Stream size in `Guzzle\Stream\PhpStreamRequestFactory` will now be set if Content-Length is returned in the
- headers of a response
-* Added `Guzzle\Common\Collection::setPath($path, $value)` to set a value into an array using a nested key
- (e.g. `$collection->setPath('foo/baz/bar', 'test'); echo $collection['foo']['bar']['bar'];`)
-* ServiceBuilders now support storing and retrieving arbitrary data
-* CachePlugin can now purge all resources for a given URI
-* CachePlugin can automatically purge matching cached items when a non-idempotent request is sent to a resource
-* CachePlugin now uses the Vary header to determine if a resource is a cache hit
-* `Guzzle\Http\Message\Response` now implements `\Serializable`
-* Added `Guzzle\Cache\CacheAdapterFactory::fromCache()` to more easily create cache adapters
-* `Guzzle\Service\ClientInterface::execute()` now accepts an array, single command, or Traversable
-* Fixed a bug in `Guzzle\Http\Message\Header\Link::addLink()`
-* Better handling of calculating the size of a stream in `Guzzle\Stream\Stream` using fstat() and caching the size
-* `Guzzle\Common\Exception\ExceptionCollection` now creates a more readable exception message
-* Fixing BC break: Added back the MonologLogAdapter implementation rather than extending from PsrLog so that older
- Symfony users can still use the old version of Monolog.
-* Fixing BC break: Added the implementation back in for `Guzzle\Http\Message\AbstractMessage::getTokenizedHeader()`.
- Now triggering an E_USER_DEPRECATED warning when used. Use `$message->getHeader()->parseParams()`.
-* Several performance improvements to `Guzzle\Common\Collection`
-* Added an `$options` argument to the end of the following methods of `Guzzle\Http\ClientInterface`:
- createRequest, head, delete, put, patch, post, options, prepareRequest
-* Added an `$options` argument to the end of `Guzzle\Http\Message\Request\RequestFactoryInterface::createRequest()`
-* Added an `applyOptions()` method to `Guzzle\Http\Message\Request\RequestFactoryInterface`
-* Changed `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $body = null)` to
- `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $options = array())`. You can still pass in a
- resource, string, or EntityBody into the $options parameter to specify the download location of the response.
-* Changed `Guzzle\Common\Collection::__construct($data)` to no longer accepts a null value for `$data` but a
- default `array()`
-* Added `Guzzle\Stream\StreamInterface::isRepeatable`
-* Removed `Guzzle\Http\ClientInterface::setDefaultHeaders(). Use
- $client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`. or
- $client->getConfig()->setPath('request.options/headers', array('header_name' => 'value'))`.
-* Removed `Guzzle\Http\ClientInterface::getDefaultHeaders(). Use $client->getConfig()->getPath('request.options/headers')`.
-* Removed `Guzzle\Http\ClientInterface::expandTemplate()`
-* Removed `Guzzle\Http\ClientInterface::setRequestFactory()`
-* Removed `Guzzle\Http\ClientInterface::getCurlMulti()`
-* Removed `Guzzle\Http\Message\RequestInterface::canCache`
-* Removed `Guzzle\Http\Message\RequestInterface::setIsRedirect`
-* Removed `Guzzle\Http\Message\RequestInterface::isRedirect`
-* Made `Guzzle\Http\Client::expandTemplate` and `getUriTemplate` protected methods.
-* You can now enable E_USER_DEPRECATED warnings to see if you are using a deprecated method by setting
- `Guzzle\Common\Version::$emitWarnings` to true.
-* Marked `Guzzle\Http\Message\Request::isResponseBodyRepeatable()` as deprecated. Use
- `$request->getResponseBody()->isRepeatable()` instead.
-* Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use
- `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead.
-* Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use
- `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead.
-* Marked `Guzzle\Http\Message\Request::setIsRedirect()` as deprecated. Use the HistoryPlugin instead.
-* Marked `Guzzle\Http\Message\Request::isRedirect()` as deprecated. Use the HistoryPlugin instead.
-* Marked `Guzzle\Cache\CacheAdapterFactory::factory()` as deprecated
-* Marked 'command.headers', 'command.response_body' and 'command.on_complete' as deprecated for AbstractCommand.
- These will work through Guzzle 4.0
-* Marked 'request.params' for `Guzzle\Http\Client` as deprecated. Use [request.options][params].
-* Marked `Guzzle\Service\Client::enableMagicMethods()` as deprecated. Magic methods can no longer be disabled on a Guzzle\Service\Client.
-* Marked `Guzzle\Service\Client::getDefaultHeaders()` as deprecated. Use $client->getConfig()->getPath('request.options/headers')`.
-* Marked `Guzzle\Service\Client::setDefaultHeaders()` as deprecated. Use $client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`.
-* Marked `Guzzle\Parser\Url\UrlParser` as deprecated. Just use PHP's `parse_url()` and percent encode your UTF-8.
-* Marked `Guzzle\Common\Collection::inject()` as deprecated.
-* Marked `Guzzle\Plugin\CurlAuth\CurlAuthPlugin` as deprecated. Use `$client->getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest');`
-* CacheKeyProviderInterface and DefaultCacheKeyProvider are no longer used. All of this logic is handled in a
- CacheStorageInterface. These two objects and interface will be removed in a future version.
-* Always setting X-cache headers on cached responses
-* Default cache TTLs are now handled by the CacheStorageInterface of a CachePlugin
-* `CacheStorageInterface::cache($key, Response $response, $ttl = null)` has changed to `cache(RequestInterface
- $request, Response $response);`
-* `CacheStorageInterface::fetch($key)` has changed to `fetch(RequestInterface $request);`
-* `CacheStorageInterface::delete($key)` has changed to `delete(RequestInterface $request);`
-* Added `CacheStorageInterface::purge($url)`
-* `DefaultRevalidation::__construct(CacheKeyProviderInterface $cacheKey, CacheStorageInterface $cache, CachePlugin
- $plugin)` has changed to `DefaultRevalidation::__construct(CacheStorageInterface $cache,
- CanCacheStrategyInterface $canCache = null)`
-* Added `RevalidationInterface::shouldRevalidate(RequestInterface $request, Response $response)`
-
-## 3.6.0 - 2013-05-29
-
-* ServiceDescription now implements ToArrayInterface
-* Added command.hidden_params to blacklist certain headers from being treated as additionalParameters
-* Guzzle can now correctly parse incomplete URLs
-* Mixed casing of headers are now forced to be a single consistent casing across all values for that header.
-* Messages internally use a HeaderCollection object to delegate handling case-insensitive header resolution
-* Removed the whole changedHeader() function system of messages because all header changes now go through addHeader().
-* Specific header implementations can be created for complex headers. When a message creates a header, it uses a
- HeaderFactory which can map specific headers to specific header classes. There is now a Link header and
- CacheControl header implementation.
-* Removed from interface: Guzzle\Http\ClientInterface::setUriTemplate
-* Removed from interface: Guzzle\Http\ClientInterface::setCurlMulti()
-* Removed Guzzle\Http\Message\Request::receivedRequestHeader() and implemented this functionality in
- Guzzle\Http\Curl\RequestMediator
-* Removed the optional $asString parameter from MessageInterface::getHeader(). Just cast the header to a string.
-* Removed the optional $tryChunkedTransfer option from Guzzle\Http\Message\EntityEnclosingRequestInterface
-* Removed the $asObjects argument from Guzzle\Http\Message\MessageInterface::getHeaders()
-* Removed Guzzle\Parser\ParserRegister::get(). Use getParser()
-* Removed Guzzle\Parser\ParserRegister::set(). Use registerParser().
-* All response header helper functions return a string rather than mixing Header objects and strings inconsistently
-* Removed cURL blacklist support. This is no longer necessary now that Expect, Accept, etc. are managed by Guzzle
- directly via interfaces
-* Removed the injecting of a request object onto a response object. The methods to get and set a request still exist
- but are a no-op until removed.
-* Most classes that used to require a `Guzzle\Service\Command\CommandInterface` typehint now request a
- `Guzzle\Service\Command\ArrayCommandInterface`.
-* Added `Guzzle\Http\Message\RequestInterface::startResponse()` to the RequestInterface to handle injecting a response
- on a request while the request is still being transferred
-* The ability to case-insensitively search for header values
-* Guzzle\Http\Message\Header::hasExactHeader
-* Guzzle\Http\Message\Header::raw. Use getAll()
-* Deprecated cache control specific methods on Guzzle\Http\Message\AbstractMessage. Use the CacheControl header object
- instead.
-* `Guzzle\Service\Command\CommandInterface` now extends from ToArrayInterface and ArrayAccess
-* Added the ability to cast Model objects to a string to view debug information.
-
-## 3.5.0 - 2013-05-13
-
-* Bug: Fixed a regression so that request responses are parsed only once per oncomplete event rather than multiple times
-* Bug: Better cleanup of one-time events across the board (when an event is meant to fire once, it will now remove
- itself from the EventDispatcher)
-* Bug: `Guzzle\Log\MessageFormatter` now properly writes "total_time" and "connect_time" values
-* Bug: Cloning an EntityEnclosingRequest now clones the EntityBody too
-* Bug: Fixed an undefined index error when parsing nested JSON responses with a sentAs parameter that reference a
- non-existent key
-* Bug: All __call() method arguments are now required (helps with mocking frameworks)
-* Deprecating Response::getRequest() and now using a shallow clone of a request object to remove a circular reference
- to help with refcount based garbage collection of resources created by sending a request
-* Deprecating ZF1 cache and log adapters. These will be removed in the next major version.
-* Deprecating `Response::getPreviousResponse()` (method signature still exists, but it's deprecated). Use the
- HistoryPlugin for a history.
-* Added a `responseBody` alias for the `response_body` location
-* Refactored internals to no longer rely on Response::getRequest()
-* HistoryPlugin can now be cast to a string
-* HistoryPlugin now logs transactions rather than requests and responses to more accurately keep track of the requests
- and responses that are sent over the wire
-* Added `getEffectiveUrl()` and `getRedirectCount()` to Response objects
-
-## 3.4.3 - 2013-04-30
-
-* Bug fix: Fixing bug introduced in 3.4.2 where redirect responses are duplicated on the final redirected response
-* Added a check to re-extract the temp cacert bundle from the phar before sending each request
-
-## 3.4.2 - 2013-04-29
-
-* Bug fix: Stream objects now work correctly with "a" and "a+" modes
-* Bug fix: Removing `Transfer-Encoding: chunked` header when a Content-Length is present
-* Bug fix: AsyncPlugin no longer forces HEAD requests
-* Bug fix: DateTime timezones are now properly handled when using the service description schema formatter
-* Bug fix: CachePlugin now properly handles stale-if-error directives when a request to the origin server fails
-* Setting a response on a request will write to the custom request body from the response body if one is specified
-* LogPlugin now writes to php://output when STDERR is undefined
-* Added the ability to set multiple POST files for the same key in a single call
-* application/x-www-form-urlencoded POSTs now use the utf-8 charset by default
-* Added the ability to queue CurlExceptions to the MockPlugin
-* Cleaned up how manual responses are queued on requests (removed "queued_response" and now using request.before_send)
-* Configuration loading now allows remote files
-
-## 3.4.1 - 2013-04-16
-
-* Large refactoring to how CurlMulti handles work. There is now a proxy that sits in front of a pool of CurlMulti
- handles. This greatly simplifies the implementation, fixes a couple bugs, and provides a small performance boost.
-* Exceptions are now properly grouped when sending requests in parallel
-* Redirects are now properly aggregated when a multi transaction fails
-* Redirects now set the response on the original object even in the event of a failure
-* Bug fix: Model names are now properly set even when using $refs
-* Added support for PHP 5.5's CurlFile to prevent warnings with the deprecated @ syntax
-* Added support for oauth_callback in OAuth signatures
-* Added support for oauth_verifier in OAuth signatures
-* Added support to attempt to retrieve a command first literally, then ucfirst, the with inflection
-
-## 3.4.0 - 2013-04-11
-
-* Bug fix: URLs are now resolved correctly based on http://tools.ietf.org/html/rfc3986#section-5.2. #289
-* Bug fix: Absolute URLs with a path in a service description will now properly override the base URL. #289
-* Bug fix: Parsing a query string with a single PHP array value will now result in an array. #263
-* Bug fix: Better normalization of the User-Agent header to prevent duplicate headers. #264.
-* Bug fix: Added `number` type to service descriptions.
-* Bug fix: empty parameters are removed from an OAuth signature
-* Bug fix: Revalidating a cache entry prefers the Last-Modified over the Date header
-* Bug fix: Fixed "array to string" error when validating a union of types in a service description
-* Bug fix: Removed code that attempted to determine the size of a stream when data is written to the stream
-* Bug fix: Not including an `oauth_token` if the value is null in the OauthPlugin.
-* Bug fix: Now correctly aggregating successful requests and failed requests in CurlMulti when a redirect occurs.
-* The new default CURLOPT_TIMEOUT setting has been increased to 150 seconds so that Guzzle works on poor connections.
-* Added a feature to EntityEnclosingRequest::setBody() that will automatically set the Content-Type of the request if
- the Content-Type can be determined based on the entity body or the path of the request.
-* Added the ability to overwrite configuration settings in a client when grabbing a throwaway client from a builder.
-* Added support for a PSR-3 LogAdapter.
-* Added a `command.after_prepare` event
-* Added `oauth_callback` parameter to the OauthPlugin
-* Added the ability to create a custom stream class when using a stream factory
-* Added a CachingEntityBody decorator
-* Added support for `additionalParameters` in service descriptions to define how custom parameters are serialized.
-* The bundled SSL certificate is now provided in the phar file and extracted when running Guzzle from a phar.
-* You can now send any EntityEnclosingRequest with POST fields or POST files and cURL will handle creating bodies
-* POST requests using a custom entity body are now treated exactly like PUT requests but with a custom cURL method. This
- means that the redirect behavior of POST requests with custom bodies will not be the same as POST requests that use
- POST fields or files (the latter is only used when emulating a form POST in the browser).
-* Lots of cleanup to CurlHandle::factory and RequestFactory::createRequest
-
-## 3.3.1 - 2013-03-10
-
-* Added the ability to create PHP streaming responses from HTTP requests
-* Bug fix: Running any filters when parsing response headers with service descriptions
-* Bug fix: OauthPlugin fixes to allow for multi-dimensional array signing, and sorting parameters before signing
-* Bug fix: Removed the adding of default empty arrays and false Booleans to responses in order to be consistent across
- response location visitors.
-* Bug fix: Removed the possibility of creating configuration files with circular dependencies
-* RequestFactory::create() now uses the key of a POST file when setting the POST file name
-* Added xmlAllowEmpty to serialize an XML body even if no XML specific parameters are set
-
-## 3.3.0 - 2013-03-03
-
-* A large number of performance optimizations have been made
-* Bug fix: Added 'wb' as a valid write mode for streams
-* Bug fix: `Guzzle\Http\Message\Response::json()` now allows scalar values to be returned
-* Bug fix: Fixed bug in `Guzzle\Http\Message\Response` where wrapping quotes were stripped from `getEtag()`
-* BC: Removed `Guzzle\Http\Utils` class
-* BC: Setting a service description on a client will no longer modify the client's command factories.
-* BC: Emitting IO events from a RequestMediator is now a parameter that must be set in a request's curl options using
- the 'emit_io' key. This was previously set under a request's parameters using 'curl.emit_io'
-* BC: `Guzzle\Stream\Stream::getWrapper()` and `Guzzle\Stream\Stream::getSteamType()` are no longer converted to
- lowercase
-* Operation parameter objects are now lazy loaded internally
-* Added ErrorResponsePlugin that can throw errors for responses defined in service description operations' errorResponses
-* Added support for instantiating responseType=class responseClass classes. Classes must implement
- `Guzzle\Service\Command\ResponseClassInterface`
-* Added support for additionalProperties for top-level parameters in responseType=model responseClasses. These
- additional properties also support locations and can be used to parse JSON responses where the outermost part of the
- JSON is an array
-* Added support for nested renaming of JSON models (rename sentAs to name)
-* CachePlugin
- * Added support for stale-if-error so that the CachePlugin can now serve stale content from the cache on error
- * Debug headers can now added to cached response in the CachePlugin
-
-## 3.2.0 - 2013-02-14
-
-* CurlMulti is no longer reused globally. A new multi object is created per-client. This helps to isolate clients.
-* URLs with no path no longer contain a "/" by default
-* Guzzle\Http\QueryString does no longer manages the leading "?". This is now handled in Guzzle\Http\Url.
-* BadResponseException no longer includes the full request and response message
-* Adding setData() to Guzzle\Service\Description\ServiceDescriptionInterface
-* Adding getResponseBody() to Guzzle\Http\Message\RequestInterface
-* Various updates to classes to use ServiceDescriptionInterface type hints rather than ServiceDescription
-* Header values can now be normalized into distinct values when multiple headers are combined with a comma separated list
-* xmlEncoding can now be customized for the XML declaration of a XML service description operation
-* Guzzle\Http\QueryString now uses Guzzle\Http\QueryAggregator\QueryAggregatorInterface objects to add custom value
- aggregation and no longer uses callbacks
-* The URL encoding implementation of Guzzle\Http\QueryString can now be customized
-* Bug fix: Filters were not always invoked for array service description parameters
-* Bug fix: Redirects now use a target response body rather than a temporary response body
-* Bug fix: The default exponential backoff BackoffPlugin was not giving when the request threshold was exceeded
-* Bug fix: Guzzle now takes the first found value when grabbing Cache-Control directives
-
-## 3.1.2 - 2013-01-27
-
-* Refactored how operation responses are parsed. Visitors now include a before() method responsible for parsing the
- response body. For example, the XmlVisitor now parses the XML response into an array in the before() method.
-* Fixed an issue where cURL would not automatically decompress responses when the Accept-Encoding header was sent
-* CURLOPT_SSL_VERIFYHOST is never set to 1 because it is deprecated (see 5e0ff2ef20f839e19d1eeb298f90ba3598784444)
-* Fixed a bug where redirect responses were not chained correctly using getPreviousResponse()
-* Setting default headers on a client after setting the user-agent will not erase the user-agent setting
-
-## 3.1.1 - 2013-01-20
-
-* Adding wildcard support to Guzzle\Common\Collection::getPath()
-* Adding alias support to ServiceBuilder configs
-* Adding Guzzle\Service\Resource\CompositeResourceIteratorFactory and cleaning up factory interface
-
-## 3.1.0 - 2013-01-12
-
-* BC: CurlException now extends from RequestException rather than BadResponseException
-* BC: Renamed Guzzle\Plugin\Cache\CanCacheStrategyInterface::canCache() to canCacheRequest() and added CanCacheResponse()
-* Added getData to ServiceDescriptionInterface
-* Added context array to RequestInterface::setState()
-* Bug: Removing hard dependency on the BackoffPlugin from Guzzle\Http
-* Bug: Adding required content-type when JSON request visitor adds JSON to a command
-* Bug: Fixing the serialization of a service description with custom data
-* Made it easier to deal with exceptions thrown when transferring commands or requests in parallel by providing
- an array of successful and failed responses
-* Moved getPath from Guzzle\Service\Resource\Model to Guzzle\Common\Collection
-* Added Guzzle\Http\IoEmittingEntityBody
-* Moved command filtration from validators to location visitors
-* Added `extends` attributes to service description parameters
-* Added getModels to ServiceDescriptionInterface
-
-## 3.0.7 - 2012-12-19
-
-* Fixing phar detection when forcing a cacert to system if null or true
-* Allowing filename to be passed to `Guzzle\Http\Message\Request::setResponseBody()`
-* Cleaning up `Guzzle\Common\Collection::inject` method
-* Adding a response_body location to service descriptions
-
-## 3.0.6 - 2012-12-09
-
-* CurlMulti performance improvements
-* Adding setErrorResponses() to Operation
-* composer.json tweaks
-
-## 3.0.5 - 2012-11-18
-
-* Bug: Fixing an infinite recursion bug caused from revalidating with the CachePlugin
-* Bug: Response body can now be a string containing "0"
-* Bug: Using Guzzle inside of a phar uses system by default but now allows for a custom cacert
-* Bug: QueryString::fromString now properly parses query string parameters that contain equal signs
-* Added support for XML attributes in service description responses
-* DefaultRequestSerializer now supports array URI parameter values for URI template expansion
-* Added better mimetype guessing to requests and post files
-
-## 3.0.4 - 2012-11-11
-
-* Bug: Fixed a bug when adding multiple cookies to a request to use the correct glue value
-* Bug: Cookies can now be added that have a name, domain, or value set to "0"
-* Bug: Using the system cacert bundle when using the Phar
-* Added json and xml methods to Response to make it easier to parse JSON and XML response data into data structures
-* Enhanced cookie jar de-duplication
-* Added the ability to enable strict cookie jars that throw exceptions when invalid cookies are added
-* Added setStream to StreamInterface to actually make it possible to implement custom rewind behavior for entity bodies
-* Added the ability to create any sort of hash for a stream rather than just an MD5 hash
-
-## 3.0.3 - 2012-11-04
-
-* Implementing redirects in PHP rather than cURL
-* Added PECL URI template extension and using as default parser if available
-* Bug: Fixed Content-Length parsing of Response factory
-* Adding rewind() method to entity bodies and streams. Allows for custom rewinding of non-repeatable streams.
-* Adding ToArrayInterface throughout library
-* Fixing OauthPlugin to create unique nonce values per request
-
-## 3.0.2 - 2012-10-25
-
-* Magic methods are enabled by default on clients
-* Magic methods return the result of a command
-* Service clients no longer require a base_url option in the factory
-* Bug: Fixed an issue with URI templates where null template variables were being expanded
-
-## 3.0.1 - 2012-10-22
-
-* Models can now be used like regular collection objects by calling filter, map, etc.
-* Models no longer require a Parameter structure or initial data in the constructor
-* Added a custom AppendIterator to get around a PHP bug with the `\AppendIterator`
-
-## 3.0.0 - 2012-10-15
-
-* Rewrote service description format to be based on Swagger
- * Now based on JSON schema
- * Added nested input structures and nested response models
- * Support for JSON and XML input and output models
- * Renamed `commands` to `operations`
- * Removed dot class notation
- * Removed custom types
-* Broke the project into smaller top-level namespaces to be more component friendly
-* Removed support for XML configs and descriptions. Use arrays or JSON files.
-* Removed the Validation component and Inspector
-* Moved all cookie code to Guzzle\Plugin\Cookie
-* Magic methods on a Guzzle\Service\Client now return the command un-executed.
-* Calling getResult() or getResponse() on a command will lazily execute the command if needed.
-* Now shipping with cURL's CA certs and using it by default
-* Added previousResponse() method to response objects
-* No longer sending Accept and Accept-Encoding headers on every request
-* Only sending an Expect header by default when a payload is greater than 1MB
-* Added/moved client options:
- * curl.blacklist to curl.option.blacklist
- * Added ssl.certificate_authority
-* Added a Guzzle\Iterator component
-* Moved plugins from Guzzle\Http\Plugin to Guzzle\Plugin
-* Added a more robust backoff retry strategy (replaced the ExponentialBackoffPlugin)
-* Added a more robust caching plugin
-* Added setBody to response objects
-* Updating LogPlugin to use a more flexible MessageFormatter
-* Added a completely revamped build process
-* Cleaning up Collection class and removing default values from the get method
-* Fixed ZF2 cache adapters
-
-## 2.8.8 - 2012-10-15
-
-* Bug: Fixed a cookie issue that caused dot prefixed domains to not match where popular browsers did
-
-## 2.8.7 - 2012-09-30
-
-* Bug: Fixed config file aliases for JSON includes
-* Bug: Fixed cookie bug on a request object by using CookieParser to parse cookies on requests
-* Bug: Removing the path to a file when sending a Content-Disposition header on a POST upload
-* Bug: Hardening request and response parsing to account for missing parts
-* Bug: Fixed PEAR packaging
-* Bug: Fixed Request::getInfo
-* Bug: Fixed cases where CURLM_CALL_MULTI_PERFORM return codes were causing curl transactions to fail
-* Adding the ability for the namespace Iterator factory to look in multiple directories
-* Added more getters/setters/removers from service descriptions
-* Added the ability to remove POST fields from OAuth signatures
-* OAuth plugin now supports 2-legged OAuth
-
-## 2.8.6 - 2012-09-05
-
-* Added the ability to modify and build service descriptions
-* Added the use of visitors to apply parameters to locations in service descriptions using the dynamic command
-* Added a `json` parameter location
-* Now allowing dot notation for classes in the CacheAdapterFactory
-* Using the union of two arrays rather than an array_merge when extending service builder services and service params
-* Ensuring that a service is a string before doing strpos() checks on it when substituting services for references
- in service builder config files.
-* Services defined in two different config files that include one another will by default replace the previously
- defined service, but you can now create services that extend themselves and merge their settings over the previous
-* The JsonLoader now supports aliasing filenames with different filenames. This allows you to alias something like
- '_default' with a default JSON configuration file.
-
-## 2.8.5 - 2012-08-29
-
-* Bug: Suppressed empty arrays from URI templates
-* Bug: Added the missing $options argument from ServiceDescription::factory to enable caching
-* Added support for HTTP responses that do not contain a reason phrase in the start-line
-* AbstractCommand commands are now invokable
-* Added a way to get the data used when signing an Oauth request before a request is sent
-
-## 2.8.4 - 2012-08-15
-
-* Bug: Custom delay time calculations are no longer ignored in the ExponentialBackoffPlugin
-* Added the ability to transfer entity bodies as a string rather than streamed. This gets around curl error 65. Set `body_as_string` in a request's curl options to enable.
-* Added a StreamInterface, EntityBodyInterface, and added ftell() to Guzzle\Common\Stream
-* Added an AbstractEntityBodyDecorator and a ReadLimitEntityBody decorator to transfer only a subset of a decorated stream
-* Stream and EntityBody objects will now return the file position to the previous position after a read required operation (e.g. getContentMd5())
-* Added additional response status codes
-* Removed SSL information from the default User-Agent header
-* DELETE requests can now send an entity body
-* Added an EventDispatcher to the ExponentialBackoffPlugin and added an ExponentialBackoffLogger to log backoff retries
-* Added the ability of the MockPlugin to consume mocked request bodies
-* LogPlugin now exposes request and response objects in the extras array
-
-## 2.8.3 - 2012-07-30
-
-* Bug: Fixed a case where empty POST requests were sent as GET requests
-* Bug: Fixed a bug in ExponentialBackoffPlugin that caused fatal errors when retrying an EntityEnclosingRequest that does not have a body
-* Bug: Setting the response body of a request to null after completing a request, not when setting the state of a request to new
-* Added multiple inheritance to service description commands
-* Added an ApiCommandInterface and added `getParamNames()` and `hasParam()`
-* Removed the default 2mb size cutoff from the Md5ValidatorPlugin so that it now defaults to validating everything
-* Changed CurlMulti::perform to pass a smaller timeout to CurlMulti::executeHandles
-
-## 2.8.2 - 2012-07-24
-
-* Bug: Query string values set to 0 are no longer dropped from the query string
-* Bug: A Collection object is no longer created each time a call is made to `Guzzle\Service\Command\AbstractCommand::getRequestHeaders()`
-* Bug: `+` is now treated as an encoded space when parsing query strings
-* QueryString and Collection performance improvements
-* Allowing dot notation for class paths in filters attribute of a service descriptions
-
-## 2.8.1 - 2012-07-16
-
-* Loosening Event Dispatcher dependency
-* POST redirects can now be customized using CURLOPT_POSTREDIR
-
-## 2.8.0 - 2012-07-15
-
-* BC: Guzzle\Http\Query
- * Query strings with empty variables will always show an equal sign unless the variable is set to QueryString::BLANK (e.g. ?acl= vs ?acl)
- * Changed isEncodingValues() and isEncodingFields() to isUrlEncoding()
- * Changed setEncodeValues(bool) and setEncodeFields(bool) to useUrlEncoding(bool)
- * Changed the aggregation functions of QueryString to be static methods
- * Can now use fromString() with querystrings that have a leading ?
-* cURL configuration values can be specified in service descriptions using `curl.` prefixed parameters
-* Content-Length is set to 0 before emitting the request.before_send event when sending an empty request body
-* Cookies are no longer URL decoded by default
-* Bug: URI template variables set to null are no longer expanded
-
-## 2.7.2 - 2012-07-02
-
-* BC: Moving things to get ready for subtree splits. Moving Inflection into Common. Moving Guzzle\Http\Parser to Guzzle\Parser.
-* BC: Removing Guzzle\Common\Batch\Batch::count() and replacing it with isEmpty()
-* CachePlugin now allows for a custom request parameter function to check if a request can be cached
-* Bug fix: CachePlugin now only caches GET and HEAD requests by default
-* Bug fix: Using header glue when transferring headers over the wire
-* Allowing deeply nested arrays for composite variables in URI templates
-* Batch divisors can now return iterators or arrays
-
-## 2.7.1 - 2012-06-26
-
-* Minor patch to update version number in UA string
-* Updating build process
-
-## 2.7.0 - 2012-06-25
-
-* BC: Inflection classes moved to Guzzle\Inflection. No longer static methods. Can now inject custom inflectors into classes.
-* BC: Removed magic setX methods from commands
-* BC: Magic methods mapped to service description commands are now inflected in the command factory rather than the client __call() method
-* Verbose cURL options are no longer enabled by default. Set curl.debug to true on a client to enable.
-* Bug: Now allowing colons in a response start-line (e.g. HTTP/1.1 503 Service Unavailable: Back-end server is at capacity)
-* Guzzle\Service\Resource\ResourceIteratorApplyBatched now internally uses the Guzzle\Common\Batch namespace
-* Added Guzzle\Service\Plugin namespace and a PluginCollectionPlugin
-* Added the ability to set POST fields and files in a service description
-* Guzzle\Http\EntityBody::factory() now accepts objects with a __toString() method
-* Adding a command.before_prepare event to clients
-* Added BatchClosureTransfer and BatchClosureDivisor
-* BatchTransferException now includes references to the batch divisor and transfer strategies
-* Fixed some tests so that they pass more reliably
-* Added Guzzle\Common\Log\ArrayLogAdapter
-
-## 2.6.6 - 2012-06-10
-
-* BC: Removing Guzzle\Http\Plugin\BatchQueuePlugin
-* BC: Removing Guzzle\Service\Command\CommandSet
-* Adding generic batching system (replaces the batch queue plugin and command set)
-* Updating ZF cache and log adapters and now using ZF's composer repository
-* Bug: Setting the name of each ApiParam when creating through an ApiCommand
-* Adding result_type, result_doc, deprecated, and doc_url to service descriptions
-* Bug: Changed the default cookie header casing back to 'Cookie'
-
-## 2.6.5 - 2012-06-03
-
-* BC: Renaming Guzzle\Http\Message\RequestInterface::getResourceUri() to getResource()
-* BC: Removing unused AUTH_BASIC and AUTH_DIGEST constants from
-* BC: Guzzle\Http\Cookie is now used to manage Set-Cookie data, not Cookie data
-* BC: Renaming methods in the CookieJarInterface
-* Moving almost all cookie logic out of the CookiePlugin and into the Cookie or CookieJar implementations
-* Making the default glue for HTTP headers ';' instead of ','
-* Adding a removeValue to Guzzle\Http\Message\Header
-* Adding getCookies() to request interface.
-* Making it easier to add event subscribers to HasDispatcherInterface classes. Can now directly call addSubscriber()
-
-## 2.6.4 - 2012-05-30
-
-* BC: Cleaning up how POST files are stored in EntityEnclosingRequest objects. Adding PostFile class.
-* BC: Moving ApiCommand specific functionality from the Inspector and on to the ApiCommand
-* Bug: Fixing magic method command calls on clients
-* Bug: Email constraint only validates strings
-* Bug: Aggregate POST fields when POST files are present in curl handle
-* Bug: Fixing default User-Agent header
-* Bug: Only appending or prepending parameters in commands if they are specified
-* Bug: Not requiring response reason phrases or status codes to match a predefined list of codes
-* Allowing the use of dot notation for class namespaces when using instance_of constraint
-* Added any_match validation constraint
-* Added an AsyncPlugin
-* Passing request object to the calculateWait method of the ExponentialBackoffPlugin
-* Allowing the result of a command object to be changed
-* Parsing location and type sub values when instantiating a service description rather than over and over at runtime
-
-## 2.6.3 - 2012-05-23
-
-* [BC] Guzzle\Common\FromConfigInterface no longer requires any config options.
-* [BC] Refactoring how POST files are stored on an EntityEnclosingRequest. They are now separate from POST fields.
-* You can now use an array of data when creating PUT request bodies in the request factory.
-* Removing the requirement that HTTPS requests needed a Cache-Control: public directive to be cacheable.
-* [Http] Adding support for Content-Type in multipart POST uploads per upload
-* [Http] Added support for uploading multiple files using the same name (foo[0], foo[1])
-* Adding more POST data operations for easier manipulation of POST data.
-* You can now set empty POST fields.
-* The body of a request is only shown on EntityEnclosingRequest objects that do not use POST files.
-* Split the Guzzle\Service\Inspector::validateConfig method into two methods. One to initialize when a command is created, and one to validate.
-* CS updates
-
-## 2.6.2 - 2012-05-19
-
-* [Http] Better handling of nested scope requests in CurlMulti. Requests are now always prepares in the send() method rather than the addRequest() method.
-
-## 2.6.1 - 2012-05-19
-
-* [BC] Removing 'path' support in service descriptions. Use 'uri'.
-* [BC] Guzzle\Service\Inspector::parseDocBlock is now protected. Adding getApiParamsForClass() with cache.
-* [BC] Removing Guzzle\Common\NullObject. Use https://github.com/mtdowling/NullObject if you need it.
-* [BC] Removing Guzzle\Common\XmlElement.
-* All commands, both dynamic and concrete, have ApiCommand objects.
-* Adding a fix for CurlMulti so that if all of the connections encounter some sort of curl error, then the loop exits.
-* Adding checks to EntityEnclosingRequest so that empty POST files and fields are ignored.
-* Making the method signature of Guzzle\Service\Builder\ServiceBuilder::factory more flexible.
-
-## 2.6.0 - 2012-05-15
-
-* [BC] Moving Guzzle\Service\Builder to Guzzle\Service\Builder\ServiceBuilder
-* [BC] Executing a Command returns the result of the command rather than the command
-* [BC] Moving all HTTP parsing logic to Guzzle\Http\Parsers. Allows for faster C implementations if needed.
-* [BC] Changing the Guzzle\Http\Message\Response::setProtocol() method to accept a protocol and version in separate args.
-* [BC] Moving ResourceIterator* to Guzzle\Service\Resource
-* [BC] Completely refactored ResourceIterators to iterate over a cloned command object
-* [BC] Moved Guzzle\Http\UriTemplate to Guzzle\Http\Parser\UriTemplate\UriTemplate
-* [BC] Guzzle\Guzzle is now deprecated
-* Moving Guzzle\Common\Guzzle::inject to Guzzle\Common\Collection::inject
-* Adding Guzzle\Version class to give version information about Guzzle
-* Adding Guzzle\Http\Utils class to provide getDefaultUserAgent() and getHttpDate()
-* Adding Guzzle\Curl\CurlVersion to manage caching curl_version() data
-* ServiceDescription and ServiceBuilder are now cacheable using similar configs
-* Changing the format of XML and JSON service builder configs. Backwards compatible.
-* Cleaned up Cookie parsing
-* Trimming the default Guzzle User-Agent header
-* Adding a setOnComplete() method to Commands that is called when a command completes
-* Keeping track of requests that were mocked in the MockPlugin
-* Fixed a caching bug in the CacheAdapterFactory
-* Inspector objects can be injected into a Command object
-* Refactoring a lot of code and tests to be case insensitive when dealing with headers
-* Adding Guzzle\Http\Message\HeaderComparison for easy comparison of HTTP headers using a DSL
-* Adding the ability to set global option overrides to service builder configs
-* Adding the ability to include other service builder config files from within XML and JSON files
-* Moving the parseQuery method out of Url and on to QueryString::fromString() as a static factory method.
-
-## 2.5.0 - 2012-05-08
-
-* Major performance improvements
-* [BC] Simplifying Guzzle\Common\Collection. Please check to see if you are using features that are now deprecated.
-* [BC] Using a custom validation system that allows a flyweight implementation for much faster validation. No longer using Symfony2 Validation component.
-* [BC] No longer supporting "{{ }}" for injecting into command or UriTemplates. Use "{}"
-* Added the ability to passed parameters to all requests created by a client
-* Added callback functionality to the ExponentialBackoffPlugin
-* Using microtime in ExponentialBackoffPlugin to allow more granular backoff strategies.
-* Rewinding request stream bodies when retrying requests
-* Exception is thrown when JSON response body cannot be decoded
-* Added configurable magic method calls to clients and commands. This is off by default.
-* Fixed a defect that added a hash to every parsed URL part
-* Fixed duplicate none generation for OauthPlugin.
-* Emitting an event each time a client is generated by a ServiceBuilder
-* Using an ApiParams object instead of a Collection for parameters of an ApiCommand
-* cache.* request parameters should be renamed to params.cache.*
-* Added the ability to set arbitrary curl options on requests (disable_wire, progress, etc.). See CurlHandle.
-* Added the ability to disable type validation of service descriptions
-* ServiceDescriptions and ServiceBuilders are now Serializable
diff --git a/vendor/guzzlehttp/guzzle/Dockerfile b/vendor/guzzlehttp/guzzle/Dockerfile
deleted file mode 100644
index f6a09523..00000000
--- a/vendor/guzzlehttp/guzzle/Dockerfile
+++ /dev/null
@@ -1,18 +0,0 @@
-FROM composer:latest as setup
-
-RUN mkdir /guzzle
-
-WORKDIR /guzzle
-
-RUN set -xe \
- && composer init --name=guzzlehttp/test --description="Simple project for testing Guzzle scripts" --author="Márk Sági-Kazár " --no-interaction \
- && composer require guzzlehttp/guzzle
-
-
-FROM php:7.3
-
-RUN mkdir /guzzle
-
-WORKDIR /guzzle
-
-COPY --from=setup /guzzle /guzzle
diff --git a/vendor/guzzlehttp/guzzle/LICENSE b/vendor/guzzlehttp/guzzle/LICENSE
deleted file mode 100644
index 50a177b0..00000000
--- a/vendor/guzzlehttp/guzzle/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2011-2018 Michael Dowling, https://github.com/mtdowling
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/guzzlehttp/guzzle/README.md b/vendor/guzzlehttp/guzzle/README.md
deleted file mode 100644
index 5fdb6c5f..00000000
--- a/vendor/guzzlehttp/guzzle/README.md
+++ /dev/null
@@ -1,90 +0,0 @@
-Guzzle, PHP HTTP client
-=======================
-
-[](https://github.com/guzzle/guzzle/releases)
-[](https://travis-ci.org/guzzle/guzzle)
-[](https://packagist.org/packages/guzzlehttp/guzzle)
-
-Guzzle is a PHP HTTP client that makes it easy to send HTTP requests and
-trivial to integrate with web services.
-
-- Simple interface for building query strings, POST requests, streaming large
- uploads, streaming large downloads, using HTTP cookies, uploading JSON data,
- etc...
-- Can send both synchronous and asynchronous requests using the same interface.
-- Uses PSR-7 interfaces for requests, responses, and streams. This allows you
- to utilize other PSR-7 compatible libraries with Guzzle.
-- Abstracts away the underlying HTTP transport, allowing you to write
- environment and transport agnostic code; i.e., no hard dependency on cURL,
- PHP streams, sockets, or non-blocking event loops.
-- Middleware system allows you to augment and compose client behavior.
-
-```php
-$client = new \GuzzleHttp\Client();
-$response = $client->request('GET', 'https://api.github.com/repos/guzzle/guzzle');
-
-echo $response->getStatusCode(); # 200
-echo $response->getHeaderLine('content-type'); # 'application/json; charset=utf8'
-echo $response->getBody(); # '{"id": 1420053, "name": "guzzle", ...}'
-
-# Send an asynchronous request.
-$request = new \GuzzleHttp\Psr7\Request('GET', 'http://httpbin.org');
-$promise = $client->sendAsync($request)->then(function ($response) {
- echo 'I completed! ' . $response->getBody();
-});
-
-$promise->wait();
-```
-
-## Help and docs
-
-- [Documentation](http://guzzlephp.org/)
-- [Stack Overflow](http://stackoverflow.com/questions/tagged/guzzle)
-- [Gitter](https://gitter.im/guzzle/guzzle)
-
-
-## Installing Guzzle
-
-The recommended way to install Guzzle is through
-[Composer](http://getcomposer.org).
-
-```bash
-# Install Composer
-curl -sS https://getcomposer.org/installer | php
-```
-
-Next, run the Composer command to install the latest stable version of Guzzle:
-
-```bash
-composer require guzzlehttp/guzzle
-```
-
-After installing, you need to require Composer's autoloader:
-
-```php
-require 'vendor/autoload.php';
-```
-
-You can then later update Guzzle using composer:
-
- ```bash
-composer update
- ```
-
-
-## Version Guidance
-
-| Version | Status | Packagist | Namespace | Repo | Docs | PSR-7 | PHP Version |
-|---------|------------|---------------------|--------------|---------------------|---------------------|-------|-------------|
-| 3.x | EOL | `guzzle/guzzle` | `Guzzle` | [v3][guzzle-3-repo] | [v3][guzzle-3-docs] | No | >= 5.3.3 |
-| 4.x | EOL | `guzzlehttp/guzzle` | `GuzzleHttp` | [v4][guzzle-4-repo] | N/A | No | >= 5.4 |
-| 5.x | EOL | `guzzlehttp/guzzle` | `GuzzleHttp` | [v5][guzzle-5-repo] | [v5][guzzle-5-docs] | No | >= 5.4 |
-| 6.x | Latest | `guzzlehttp/guzzle` | `GuzzleHttp` | [v6][guzzle-6-repo] | [v6][guzzle-6-docs] | Yes | >= 5.5 |
-
-[guzzle-3-repo]: https://github.com/guzzle/guzzle3
-[guzzle-4-repo]: https://github.com/guzzle/guzzle/tree/4.x
-[guzzle-5-repo]: https://github.com/guzzle/guzzle/tree/5.3
-[guzzle-6-repo]: https://github.com/guzzle/guzzle
-[guzzle-3-docs]: http://guzzle3.readthedocs.org
-[guzzle-5-docs]: http://guzzle.readthedocs.org/en/5.3/
-[guzzle-6-docs]: http://guzzle.readthedocs.org/en/latest/
diff --git a/vendor/guzzlehttp/guzzle/UPGRADING.md b/vendor/guzzlehttp/guzzle/UPGRADING.md
deleted file mode 100644
index 91d1dcc9..00000000
--- a/vendor/guzzlehttp/guzzle/UPGRADING.md
+++ /dev/null
@@ -1,1203 +0,0 @@
-Guzzle Upgrade Guide
-====================
-
-5.0 to 6.0
-----------
-
-Guzzle now uses [PSR-7](http://www.php-fig.org/psr/psr-7/) for HTTP messages.
-Due to the fact that these messages are immutable, this prompted a refactoring
-of Guzzle to use a middleware based system rather than an event system. Any
-HTTP message interaction (e.g., `GuzzleHttp\Message\Request`) need to be
-updated to work with the new immutable PSR-7 request and response objects. Any
-event listeners or subscribers need to be updated to become middleware
-functions that wrap handlers (or are injected into a
-`GuzzleHttp\HandlerStack`).
-
-- Removed `GuzzleHttp\BatchResults`
-- Removed `GuzzleHttp\Collection`
-- Removed `GuzzleHttp\HasDataTrait`
-- Removed `GuzzleHttp\ToArrayInterface`
-- The `guzzlehttp/streams` dependency has been removed. Stream functionality
- is now present in the `GuzzleHttp\Psr7` namespace provided by the
- `guzzlehttp/psr7` package.
-- Guzzle no longer uses ReactPHP promises and now uses the
- `guzzlehttp/promises` library. We use a custom promise library for three
- significant reasons:
- 1. React promises (at the time of writing this) are recursive. Promise
- chaining and promise resolution will eventually blow the stack. Guzzle
- promises are not recursive as they use a sort of trampolining technique.
- Note: there has been movement in the React project to modify promises to
- no longer utilize recursion.
- 2. Guzzle needs to have the ability to synchronously block on a promise to
- wait for a result. Guzzle promises allows this functionality (and does
- not require the use of recursion).
- 3. Because we need to be able to wait on a result, doing so using React
- promises requires wrapping react promises with RingPHP futures. This
- overhead is no longer needed, reducing stack sizes, reducing complexity,
- and improving performance.
-- `GuzzleHttp\Mimetypes` has been moved to a function in
- `GuzzleHttp\Psr7\mimetype_from_extension` and
- `GuzzleHttp\Psr7\mimetype_from_filename`.
-- `GuzzleHttp\Query` and `GuzzleHttp\QueryParser` have been removed. Query
- strings must now be passed into request objects as strings, or provided to
- the `query` request option when creating requests with clients. The `query`
- option uses PHP's `http_build_query` to convert an array to a string. If you
- need a different serialization technique, you will need to pass the query
- string in as a string. There are a couple helper functions that will make
- working with query strings easier: `GuzzleHttp\Psr7\parse_query` and
- `GuzzleHttp\Psr7\build_query`.
-- Guzzle no longer has a dependency on RingPHP. Due to the use of a middleware
- system based on PSR-7, using RingPHP and it's middleware system as well adds
- more complexity than the benefits it provides. All HTTP handlers that were
- present in RingPHP have been modified to work directly with PSR-7 messages
- and placed in the `GuzzleHttp\Handler` namespace. This significantly reduces
- complexity in Guzzle, removes a dependency, and improves performance. RingPHP
- will be maintained for Guzzle 5 support, but will no longer be a part of
- Guzzle 6.
-- As Guzzle now uses a middleware based systems the event system and RingPHP
- integration has been removed. Note: while the event system has been removed,
- it is possible to add your own type of event system that is powered by the
- middleware system.
- - Removed the `Event` namespace.
- - Removed the `Subscriber` namespace.
- - Removed `Transaction` class
- - Removed `RequestFsm`
- - Removed `RingBridge`
- - `GuzzleHttp\Subscriber\Cookie` is now provided by
- `GuzzleHttp\Middleware::cookies`
- - `GuzzleHttp\Subscriber\HttpError` is now provided by
- `GuzzleHttp\Middleware::httpError`
- - `GuzzleHttp\Subscriber\History` is now provided by
- `GuzzleHttp\Middleware::history`
- - `GuzzleHttp\Subscriber\Mock` is now provided by
- `GuzzleHttp\Handler\MockHandler`
- - `GuzzleHttp\Subscriber\Prepare` is now provided by
- `GuzzleHttp\PrepareBodyMiddleware`
- - `GuzzleHttp\Subscriber\Redirect` is now provided by
- `GuzzleHttp\RedirectMiddleware`
-- Guzzle now uses `Psr\Http\Message\UriInterface` (implements in
- `GuzzleHttp\Psr7\Uri`) for URI support. `GuzzleHttp\Url` is now gone.
-- Static functions in `GuzzleHttp\Utils` have been moved to namespaced
- functions under the `GuzzleHttp` namespace. This requires either a Composer
- based autoloader or you to include functions.php.
-- `GuzzleHttp\ClientInterface::getDefaultOption` has been renamed to
- `GuzzleHttp\ClientInterface::getConfig`.
-- `GuzzleHttp\ClientInterface::setDefaultOption` has been removed.
-- The `json` and `xml` methods of response objects has been removed. With the
- migration to strictly adhering to PSR-7 as the interface for Guzzle messages,
- adding methods to message interfaces would actually require Guzzle messages
- to extend from PSR-7 messages rather then work with them directly.
-
-## Migrating to middleware
-
-The change to PSR-7 unfortunately required significant refactoring to Guzzle
-due to the fact that PSR-7 messages are immutable. Guzzle 5 relied on an event
-system from plugins. The event system relied on mutability of HTTP messages and
-side effects in order to work. With immutable messages, you have to change your
-workflow to become more about either returning a value (e.g., functional
-middlewares) or setting a value on an object. Guzzle v6 has chosen the
-functional middleware approach.
-
-Instead of using the event system to listen for things like the `before` event,
-you now create a stack based middleware function that intercepts a request on
-the way in and the promise of the response on the way out. This is a much
-simpler and more predictable approach than the event system and works nicely
-with PSR-7 middleware. Due to the use of promises, the middleware system is
-also asynchronous.
-
-v5:
-
-```php
-use GuzzleHttp\Event\BeforeEvent;
-$client = new GuzzleHttp\Client();
-// Get the emitter and listen to the before event.
-$client->getEmitter()->on('before', function (BeforeEvent $e) {
- // Guzzle v5 events relied on mutation
- $e->getRequest()->setHeader('X-Foo', 'Bar');
-});
-```
-
-v6:
-
-In v6, you can modify the request before it is sent using the `mapRequest`
-middleware. The idiomatic way in v6 to modify the request/response lifecycle is
-to setup a handler middleware stack up front and inject the handler into a
-client.
-
-```php
-use GuzzleHttp\Middleware;
-// Create a handler stack that has all of the default middlewares attached
-$handler = GuzzleHttp\HandlerStack::create();
-// Push the handler onto the handler stack
-$handler->push(Middleware::mapRequest(function (RequestInterface $request) {
- // Notice that we have to return a request object
- return $request->withHeader('X-Foo', 'Bar');
-}));
-// Inject the handler into the client
-$client = new GuzzleHttp\Client(['handler' => $handler]);
-```
-
-## POST Requests
-
-This version added the [`form_params`](http://guzzle.readthedocs.org/en/latest/request-options.html#form_params)
-and `multipart` request options. `form_params` is an associative array of
-strings or array of strings and is used to serialize an
-`application/x-www-form-urlencoded` POST request. The
-[`multipart`](http://guzzle.readthedocs.org/en/latest/request-options.html#multipart)
-option is now used to send a multipart/form-data POST request.
-
-`GuzzleHttp\Post\PostFile` has been removed. Use the `multipart` option to add
-POST files to a multipart/form-data request.
-
-The `body` option no longer accepts an array to send POST requests. Please use
-`multipart` or `form_params` instead.
-
-The `base_url` option has been renamed to `base_uri`.
-
-4.x to 5.0
-----------
-
-## Rewritten Adapter Layer
-
-Guzzle now uses [RingPHP](http://ringphp.readthedocs.org/en/latest) to send
-HTTP requests. The `adapter` option in a `GuzzleHttp\Client` constructor
-is still supported, but it has now been renamed to `handler`. Instead of
-passing a `GuzzleHttp\Adapter\AdapterInterface`, you must now pass a PHP
-`callable` that follows the RingPHP specification.
-
-## Removed Fluent Interfaces
-
-[Fluent interfaces were removed](http://ocramius.github.io/blog/fluent-interfaces-are-evil)
-from the following classes:
-
-- `GuzzleHttp\Collection`
-- `GuzzleHttp\Url`
-- `GuzzleHttp\Query`
-- `GuzzleHttp\Post\PostBody`
-- `GuzzleHttp\Cookie\SetCookie`
-
-## Removed functions.php
-
-Removed "functions.php", so that Guzzle is truly PSR-4 compliant. The following
-functions can be used as replacements.
-
-- `GuzzleHttp\json_decode` -> `GuzzleHttp\Utils::jsonDecode`
-- `GuzzleHttp\get_path` -> `GuzzleHttp\Utils::getPath`
-- `GuzzleHttp\Utils::setPath` -> `GuzzleHttp\set_path`
-- `GuzzleHttp\Pool::batch` -> `GuzzleHttp\batch`. This function is, however,
- deprecated in favor of using `GuzzleHttp\Pool::batch()`.
-
-The "procedural" global client has been removed with no replacement (e.g.,
-`GuzzleHttp\get()`, `GuzzleHttp\post()`, etc.). Use a `GuzzleHttp\Client`
-object as a replacement.
-
-## `throwImmediately` has been removed
-
-The concept of "throwImmediately" has been removed from exceptions and error
-events. This control mechanism was used to stop a transfer of concurrent
-requests from completing. This can now be handled by throwing the exception or
-by cancelling a pool of requests or each outstanding future request
-individually.
-
-## headers event has been removed
-
-Removed the "headers" event. This event was only useful for changing the
-body a response once the headers of the response were known. You can implement
-a similar behavior in a number of ways. One example might be to use a
-FnStream that has access to the transaction being sent. For example, when the
-first byte is written, you could check if the response headers match your
-expectations, and if so, change the actual stream body that is being
-written to.
-
-## Updates to HTTP Messages
-
-Removed the `asArray` parameter from
-`GuzzleHttp\Message\MessageInterface::getHeader`. If you want to get a header
-value as an array, then use the newly added `getHeaderAsArray()` method of
-`MessageInterface`. This change makes the Guzzle interfaces compatible with
-the PSR-7 interfaces.
-
-3.x to 4.0
-----------
-
-## Overarching changes:
-
-- Now requires PHP 5.4 or greater.
-- No longer requires cURL to send requests.
-- Guzzle no longer wraps every exception it throws. Only exceptions that are
- recoverable are now wrapped by Guzzle.
-- Various namespaces have been removed or renamed.
-- No longer requiring the Symfony EventDispatcher. A custom event dispatcher
- based on the Symfony EventDispatcher is
- now utilized in `GuzzleHttp\Event\EmitterInterface` (resulting in significant
- speed and functionality improvements).
-
-Changes per Guzzle 3.x namespace are described below.
-
-## Batch
-
-The `Guzzle\Batch` namespace has been removed. This is best left to
-third-parties to implement on top of Guzzle's core HTTP library.
-
-## Cache
-
-The `Guzzle\Cache` namespace has been removed. (Todo: No suitable replacement
-has been implemented yet, but hoping to utilize a PSR cache interface).
-
-## Common
-
-- Removed all of the wrapped exceptions. It's better to use the standard PHP
- library for unrecoverable exceptions.
-- `FromConfigInterface` has been removed.
-- `Guzzle\Common\Version` has been removed. The VERSION constant can be found
- at `GuzzleHttp\ClientInterface::VERSION`.
-
-### Collection
-
-- `getAll` has been removed. Use `toArray` to convert a collection to an array.
-- `inject` has been removed.
-- `keySearch` has been removed.
-- `getPath` no longer supports wildcard expressions. Use something better like
- JMESPath for this.
-- `setPath` now supports appending to an existing array via the `[]` notation.
-
-### Events
-
-Guzzle no longer requires Symfony's EventDispatcher component. Guzzle now uses
-`GuzzleHttp\Event\Emitter`.
-
-- `Symfony\Component\EventDispatcher\EventDispatcherInterface` is replaced by
- `GuzzleHttp\Event\EmitterInterface`.
-- `Symfony\Component\EventDispatcher\EventDispatcher` is replaced by
- `GuzzleHttp\Event\Emitter`.
-- `Symfony\Component\EventDispatcher\Event` is replaced by
- `GuzzleHttp\Event\Event`, and Guzzle now has an EventInterface in
- `GuzzleHttp\Event\EventInterface`.
-- `AbstractHasDispatcher` has moved to a trait, `HasEmitterTrait`, and
- `HasDispatcherInterface` has moved to `HasEmitterInterface`. Retrieving the
- event emitter of a request, client, etc. now uses the `getEmitter` method
- rather than the `getDispatcher` method.
-
-#### Emitter
-
-- Use the `once()` method to add a listener that automatically removes itself
- the first time it is invoked.
-- Use the `listeners()` method to retrieve a list of event listeners rather than
- the `getListeners()` method.
-- Use `emit()` instead of `dispatch()` to emit an event from an emitter.
-- Use `attach()` instead of `addSubscriber()` and `detach()` instead of
- `removeSubscriber()`.
-
-```php
-$mock = new Mock();
-// 3.x
-$request->getEventDispatcher()->addSubscriber($mock);
-$request->getEventDispatcher()->removeSubscriber($mock);
-// 4.x
-$request->getEmitter()->attach($mock);
-$request->getEmitter()->detach($mock);
-```
-
-Use the `on()` method to add a listener rather than the `addListener()` method.
-
-```php
-// 3.x
-$request->getEventDispatcher()->addListener('foo', function (Event $event) { /* ... */ } );
-// 4.x
-$request->getEmitter()->on('foo', function (Event $event, $name) { /* ... */ } );
-```
-
-## Http
-
-### General changes
-
-- The cacert.pem certificate has been moved to `src/cacert.pem`.
-- Added the concept of adapters that are used to transfer requests over the
- wire.
-- Simplified the event system.
-- Sending requests in parallel is still possible, but batching is no longer a
- concept of the HTTP layer. Instead, you must use the `complete` and `error`
- events to asynchronously manage parallel request transfers.
-- `Guzzle\Http\Url` has moved to `GuzzleHttp\Url`.
-- `Guzzle\Http\QueryString` has moved to `GuzzleHttp\Query`.
-- QueryAggregators have been rewritten so that they are simply callable
- functions.
-- `GuzzleHttp\StaticClient` has been removed. Use the functions provided in
- `functions.php` for an easy to use static client instance.
-- Exceptions in `GuzzleHttp\Exception` have been updated to all extend from
- `GuzzleHttp\Exception\TransferException`.
-
-### Client
-
-Calling methods like `get()`, `post()`, `head()`, etc. no longer create and
-return a request, but rather creates a request, sends the request, and returns
-the response.
-
-```php
-// 3.0
-$request = $client->get('/');
-$response = $request->send();
-
-// 4.0
-$response = $client->get('/');
-
-// or, to mirror the previous behavior
-$request = $client->createRequest('GET', '/');
-$response = $client->send($request);
-```
-
-`GuzzleHttp\ClientInterface` has changed.
-
-- The `send` method no longer accepts more than one request. Use `sendAll` to
- send multiple requests in parallel.
-- `setUserAgent()` has been removed. Use a default request option instead. You
- could, for example, do something like:
- `$client->setConfig('defaults/headers/User-Agent', 'Foo/Bar ' . $client::getDefaultUserAgent())`.
-- `setSslVerification()` has been removed. Use default request options instead,
- like `$client->setConfig('defaults/verify', true)`.
-
-`GuzzleHttp\Client` has changed.
-
-- The constructor now accepts only an associative array. You can include a
- `base_url` string or array to use a URI template as the base URL of a client.
- You can also specify a `defaults` key that is an associative array of default
- request options. You can pass an `adapter` to use a custom adapter,
- `batch_adapter` to use a custom adapter for sending requests in parallel, or
- a `message_factory` to change the factory used to create HTTP requests and
- responses.
-- The client no longer emits a `client.create_request` event.
-- Creating requests with a client no longer automatically utilize a URI
- template. You must pass an array into a creational method (e.g.,
- `createRequest`, `get`, `put`, etc.) in order to expand a URI template.
-
-### Messages
-
-Messages no longer have references to their counterparts (i.e., a request no
-longer has a reference to it's response, and a response no loger has a
-reference to its request). This association is now managed through a
-`GuzzleHttp\Adapter\TransactionInterface` object. You can get references to
-these transaction objects using request events that are emitted over the
-lifecycle of a request.
-
-#### Requests with a body
-
-- `GuzzleHttp\Message\EntityEnclosingRequest` and
- `GuzzleHttp\Message\EntityEnclosingRequestInterface` have been removed. The
- separation between requests that contain a body and requests that do not
- contain a body has been removed, and now `GuzzleHttp\Message\RequestInterface`
- handles both use cases.
-- Any method that previously accepts a `GuzzleHttp\Response` object now accept a
- `GuzzleHttp\Message\ResponseInterface`.
-- `GuzzleHttp\Message\RequestFactoryInterface` has been renamed to
- `GuzzleHttp\Message\MessageFactoryInterface`. This interface is used to create
- both requests and responses and is implemented in
- `GuzzleHttp\Message\MessageFactory`.
-- POST field and file methods have been removed from the request object. You
- must now use the methods made available to `GuzzleHttp\Post\PostBodyInterface`
- to control the format of a POST body. Requests that are created using a
- standard `GuzzleHttp\Message\MessageFactoryInterface` will automatically use
- a `GuzzleHttp\Post\PostBody` body if the body was passed as an array or if
- the method is POST and no body is provided.
-
-```php
-$request = $client->createRequest('POST', '/');
-$request->getBody()->setField('foo', 'bar');
-$request->getBody()->addFile(new PostFile('file_key', fopen('/path/to/content', 'r')));
-```
-
-#### Headers
-
-- `GuzzleHttp\Message\Header` has been removed. Header values are now simply
- represented by an array of values or as a string. Header values are returned
- as a string by default when retrieving a header value from a message. You can
- pass an optional argument of `true` to retrieve a header value as an array
- of strings instead of a single concatenated string.
-- `GuzzleHttp\PostFile` and `GuzzleHttp\PostFileInterface` have been moved to
- `GuzzleHttp\Post`. This interface has been simplified and now allows the
- addition of arbitrary headers.
-- Custom headers like `GuzzleHttp\Message\Header\Link` have been removed. Most
- of the custom headers are now handled separately in specific
- subscribers/plugins, and `GuzzleHttp\Message\HeaderValues::parseParams()` has
- been updated to properly handle headers that contain parameters (like the
- `Link` header).
-
-#### Responses
-
-- `GuzzleHttp\Message\Response::getInfo()` and
- `GuzzleHttp\Message\Response::setInfo()` have been removed. Use the event
- system to retrieve this type of information.
-- `GuzzleHttp\Message\Response::getRawHeaders()` has been removed.
-- `GuzzleHttp\Message\Response::getMessage()` has been removed.
-- `GuzzleHttp\Message\Response::calculateAge()` and other cache specific
- methods have moved to the CacheSubscriber.
-- Header specific helper functions like `getContentMd5()` have been removed.
- Just use `getHeader('Content-MD5')` instead.
-- `GuzzleHttp\Message\Response::setRequest()` and
- `GuzzleHttp\Message\Response::getRequest()` have been removed. Use the event
- system to work with request and response objects as a transaction.
-- `GuzzleHttp\Message\Response::getRedirectCount()` has been removed. Use the
- Redirect subscriber instead.
-- `GuzzleHttp\Message\Response::isSuccessful()` and other related methods have
- been removed. Use `getStatusCode()` instead.
-
-#### Streaming responses
-
-Streaming requests can now be created by a client directly, returning a
-`GuzzleHttp\Message\ResponseInterface` object that contains a body stream
-referencing an open PHP HTTP stream.
-
-```php
-// 3.0
-use Guzzle\Stream\PhpStreamRequestFactory;
-$request = $client->get('/');
-$factory = new PhpStreamRequestFactory();
-$stream = $factory->fromRequest($request);
-$data = $stream->read(1024);
-
-// 4.0
-$response = $client->get('/', ['stream' => true]);
-// Read some data off of the stream in the response body
-$data = $response->getBody()->read(1024);
-```
-
-#### Redirects
-
-The `configureRedirects()` method has been removed in favor of a
-`allow_redirects` request option.
-
-```php
-// Standard redirects with a default of a max of 5 redirects
-$request = $client->createRequest('GET', '/', ['allow_redirects' => true]);
-
-// Strict redirects with a custom number of redirects
-$request = $client->createRequest('GET', '/', [
- 'allow_redirects' => ['max' => 5, 'strict' => true]
-]);
-```
-
-#### EntityBody
-
-EntityBody interfaces and classes have been removed or moved to
-`GuzzleHttp\Stream`. All classes and interfaces that once required
-`GuzzleHttp\EntityBodyInterface` now require
-`GuzzleHttp\Stream\StreamInterface`. Creating a new body for a request no
-longer uses `GuzzleHttp\EntityBody::factory` but now uses
-`GuzzleHttp\Stream\Stream::factory` or even better:
-`GuzzleHttp\Stream\create()`.
-
-- `Guzzle\Http\EntityBodyInterface` is now `GuzzleHttp\Stream\StreamInterface`
-- `Guzzle\Http\EntityBody` is now `GuzzleHttp\Stream\Stream`
-- `Guzzle\Http\CachingEntityBody` is now `GuzzleHttp\Stream\CachingStream`
-- `Guzzle\Http\ReadLimitEntityBody` is now `GuzzleHttp\Stream\LimitStream`
-- `Guzzle\Http\IoEmittyinEntityBody` has been removed.
-
-#### Request lifecycle events
-
-Requests previously submitted a large number of requests. The number of events
-emitted over the lifecycle of a request has been significantly reduced to make
-it easier to understand how to extend the behavior of a request. All events
-emitted during the lifecycle of a request now emit a custom
-`GuzzleHttp\Event\EventInterface` object that contains context providing
-methods and a way in which to modify the transaction at that specific point in
-time (e.g., intercept the request and set a response on the transaction).
-
-- `request.before_send` has been renamed to `before` and now emits a
- `GuzzleHttp\Event\BeforeEvent`
-- `request.complete` has been renamed to `complete` and now emits a
- `GuzzleHttp\Event\CompleteEvent`.
-- `request.sent` has been removed. Use `complete`.
-- `request.success` has been removed. Use `complete`.
-- `error` is now an event that emits a `GuzzleHttp\Event\ErrorEvent`.
-- `request.exception` has been removed. Use `error`.
-- `request.receive.status_line` has been removed.
-- `curl.callback.progress` has been removed. Use a custom `StreamInterface` to
- maintain a status update.
-- `curl.callback.write` has been removed. Use a custom `StreamInterface` to
- intercept writes.
-- `curl.callback.read` has been removed. Use a custom `StreamInterface` to
- intercept reads.
-
-`headers` is a new event that is emitted after the response headers of a
-request have been received before the body of the response is downloaded. This
-event emits a `GuzzleHttp\Event\HeadersEvent`.
-
-You can intercept a request and inject a response using the `intercept()` event
-of a `GuzzleHttp\Event\BeforeEvent`, `GuzzleHttp\Event\CompleteEvent`, and
-`GuzzleHttp\Event\ErrorEvent` event.
-
-See: http://docs.guzzlephp.org/en/latest/events.html
-
-## Inflection
-
-The `Guzzle\Inflection` namespace has been removed. This is not a core concern
-of Guzzle.
-
-## Iterator
-
-The `Guzzle\Iterator` namespace has been removed.
-
-- `Guzzle\Iterator\AppendIterator`, `Guzzle\Iterator\ChunkedIterator`, and
- `Guzzle\Iterator\MethodProxyIterator` are nice, but not a core requirement of
- Guzzle itself.
-- `Guzzle\Iterator\FilterIterator` is no longer needed because an equivalent
- class is shipped with PHP 5.4.
-- `Guzzle\Iterator\MapIterator` is not really needed when using PHP 5.5 because
- it's easier to just wrap an iterator in a generator that maps values.
-
-For a replacement of these iterators, see https://github.com/nikic/iter
-
-## Log
-
-The LogPlugin has moved to https://github.com/guzzle/log-subscriber. The
-`Guzzle\Log` namespace has been removed. Guzzle now relies on
-`Psr\Log\LoggerInterface` for all logging. The MessageFormatter class has been
-moved to `GuzzleHttp\Subscriber\Log\Formatter`.
-
-## Parser
-
-The `Guzzle\Parser` namespace has been removed. This was previously used to
-make it possible to plug in custom parsers for cookies, messages, URI
-templates, and URLs; however, this level of complexity is not needed in Guzzle
-so it has been removed.
-
-- Cookie: Cookie parsing logic has been moved to
- `GuzzleHttp\Cookie\SetCookie::fromString`.
-- Message: Message parsing logic for both requests and responses has been moved
- to `GuzzleHttp\Message\MessageFactory::fromMessage`. Message parsing is only
- used in debugging or deserializing messages, so it doesn't make sense for
- Guzzle as a library to add this level of complexity to parsing messages.
-- UriTemplate: URI template parsing has been moved to
- `GuzzleHttp\UriTemplate`. The Guzzle library will automatically use the PECL
- URI template library if it is installed.
-- Url: URL parsing is now performed in `GuzzleHttp\Url::fromString` (previously
- it was `Guzzle\Http\Url::factory()`). If custom URL parsing is necessary,
- then developers are free to subclass `GuzzleHttp\Url`.
-
-## Plugin
-
-The `Guzzle\Plugin` namespace has been renamed to `GuzzleHttp\Subscriber`.
-Several plugins are shipping with the core Guzzle library under this namespace.
-
-- `GuzzleHttp\Subscriber\Cookie`: Replaces the old CookiePlugin. Cookie jar
- code has moved to `GuzzleHttp\Cookie`.
-- `GuzzleHttp\Subscriber\History`: Replaces the old HistoryPlugin.
-- `GuzzleHttp\Subscriber\HttpError`: Throws errors when a bad HTTP response is
- received.
-- `GuzzleHttp\Subscriber\Mock`: Replaces the old MockPlugin.
-- `GuzzleHttp\Subscriber\Prepare`: Prepares the body of a request just before
- sending. This subscriber is attached to all requests by default.
-- `GuzzleHttp\Subscriber\Redirect`: Replaces the RedirectPlugin.
-
-The following plugins have been removed (third-parties are free to re-implement
-these if needed):
-
-- `GuzzleHttp\Plugin\Async` has been removed.
-- `GuzzleHttp\Plugin\CurlAuth` has been removed.
-- `GuzzleHttp\Plugin\ErrorResponse\ErrorResponsePlugin` has been removed. This
- functionality should instead be implemented with event listeners that occur
- after normal response parsing occurs in the guzzle/command package.
-
-The following plugins are not part of the core Guzzle package, but are provided
-in separate repositories:
-
-- `Guzzle\Http\Plugin\BackoffPlugin` has been rewritten to be much simpler
- to build custom retry policies using simple functions rather than various
- chained classes. See: https://github.com/guzzle/retry-subscriber
-- `Guzzle\Http\Plugin\Cache\CachePlugin` has moved to
- https://github.com/guzzle/cache-subscriber
-- `Guzzle\Http\Plugin\Log\LogPlugin` has moved to
- https://github.com/guzzle/log-subscriber
-- `Guzzle\Http\Plugin\Md5\Md5Plugin` has moved to
- https://github.com/guzzle/message-integrity-subscriber
-- `Guzzle\Http\Plugin\Mock\MockPlugin` has moved to
- `GuzzleHttp\Subscriber\MockSubscriber`.
-- `Guzzle\Http\Plugin\Oauth\OauthPlugin` has moved to
- https://github.com/guzzle/oauth-subscriber
-
-## Service
-
-The service description layer of Guzzle has moved into two separate packages:
-
-- http://github.com/guzzle/command Provides a high level abstraction over web
- services by representing web service operations using commands.
-- http://github.com/guzzle/guzzle-services Provides an implementation of
- guzzle/command that provides request serialization and response parsing using
- Guzzle service descriptions.
-
-## Stream
-
-Stream have moved to a separate package available at
-https://github.com/guzzle/streams.
-
-`Guzzle\Stream\StreamInterface` has been given a large update to cleanly take
-on the responsibilities of `Guzzle\Http\EntityBody` and
-`Guzzle\Http\EntityBodyInterface` now that they have been removed. The number
-of methods implemented by the `StreamInterface` has been drastically reduced to
-allow developers to more easily extend and decorate stream behavior.
-
-## Removed methods from StreamInterface
-
-- `getStream` and `setStream` have been removed to better encapsulate streams.
-- `getMetadata` and `setMetadata` have been removed in favor of
- `GuzzleHttp\Stream\MetadataStreamInterface`.
-- `getWrapper`, `getWrapperData`, `getStreamType`, and `getUri` have all been
- removed. This data is accessible when
- using streams that implement `GuzzleHttp\Stream\MetadataStreamInterface`.
-- `rewind` has been removed. Use `seek(0)` for a similar behavior.
-
-## Renamed methods
-
-- `detachStream` has been renamed to `detach`.
-- `feof` has been renamed to `eof`.
-- `ftell` has been renamed to `tell`.
-- `readLine` has moved from an instance method to a static class method of
- `GuzzleHttp\Stream\Stream`.
-
-## Metadata streams
-
-`GuzzleHttp\Stream\MetadataStreamInterface` has been added to denote streams
-that contain additional metadata accessible via `getMetadata()`.
-`GuzzleHttp\Stream\StreamInterface::getMetadata` and
-`GuzzleHttp\Stream\StreamInterface::setMetadata` have been removed.
-
-## StreamRequestFactory
-
-The entire concept of the StreamRequestFactory has been removed. The way this
-was used in Guzzle 3 broke the actual interface of sending streaming requests
-(instead of getting back a Response, you got a StreamInterface). Streaming
-PHP requests are now implemented through the `GuzzleHttp\Adapter\StreamAdapter`.
-
-3.6 to 3.7
-----------
-
-### Deprecations
-
-- You can now enable E_USER_DEPRECATED warnings to see if you are using any deprecated methods.:
-
-```php
-\Guzzle\Common\Version::$emitWarnings = true;
-```
-
-The following APIs and options have been marked as deprecated:
-
-- Marked `Guzzle\Http\Message\Request::isResponseBodyRepeatable()` as deprecated. Use `$request->getResponseBody()->isRepeatable()` instead.
-- Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead.
-- Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead.
-- Marked `Guzzle\Http\Message\Request::setIsRedirect()` as deprecated. Use the HistoryPlugin instead.
-- Marked `Guzzle\Http\Message\Request::isRedirect()` as deprecated. Use the HistoryPlugin instead.
-- Marked `Guzzle\Cache\CacheAdapterFactory::factory()` as deprecated
-- Marked `Guzzle\Service\Client::enableMagicMethods()` as deprecated. Magic methods can no longer be disabled on a Guzzle\Service\Client.
-- Marked `Guzzle\Parser\Url\UrlParser` as deprecated. Just use PHP's `parse_url()` and percent encode your UTF-8.
-- Marked `Guzzle\Common\Collection::inject()` as deprecated.
-- Marked `Guzzle\Plugin\CurlAuth\CurlAuthPlugin` as deprecated. Use
- `$client->getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest|NTLM|Any'));` or
- `$client->setDefaultOption('auth', array('user', 'pass', 'Basic|Digest|NTLM|Any'));`
-
-3.7 introduces `request.options` as a parameter for a client configuration and as an optional argument to all creational
-request methods. When paired with a client's configuration settings, these options allow you to specify default settings
-for various aspects of a request. Because these options make other previous configuration options redundant, several
-configuration options and methods of a client and AbstractCommand have been deprecated.
-
-- Marked `Guzzle\Service\Client::getDefaultHeaders()` as deprecated. Use `$client->getDefaultOption('headers')`.
-- Marked `Guzzle\Service\Client::setDefaultHeaders()` as deprecated. Use `$client->setDefaultOption('headers/{header_name}', 'value')`.
-- Marked 'request.params' for `Guzzle\Http\Client` as deprecated. Use `$client->setDefaultOption('params/{param_name}', 'value')`
-- Marked 'command.headers', 'command.response_body' and 'command.on_complete' as deprecated for AbstractCommand. These will work through Guzzle 4.0
-
- $command = $client->getCommand('foo', array(
- 'command.headers' => array('Test' => '123'),
- 'command.response_body' => '/path/to/file'
- ));
-
- // Should be changed to:
-
- $command = $client->getCommand('foo', array(
- 'command.request_options' => array(
- 'headers' => array('Test' => '123'),
- 'save_as' => '/path/to/file'
- )
- ));
-
-### Interface changes
-
-Additions and changes (you will need to update any implementations or subclasses you may have created):
-
-- Added an `$options` argument to the end of the following methods of `Guzzle\Http\ClientInterface`:
- createRequest, head, delete, put, patch, post, options, prepareRequest
-- Added an `$options` argument to the end of `Guzzle\Http\Message\Request\RequestFactoryInterface::createRequest()`
-- Added an `applyOptions()` method to `Guzzle\Http\Message\Request\RequestFactoryInterface`
-- Changed `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $body = null)` to
- `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $options = array())`. You can still pass in a
- resource, string, or EntityBody into the $options parameter to specify the download location of the response.
-- Changed `Guzzle\Common\Collection::__construct($data)` to no longer accepts a null value for `$data` but a
- default `array()`
-- Added `Guzzle\Stream\StreamInterface::isRepeatable`
-- Made `Guzzle\Http\Client::expandTemplate` and `getUriTemplate` protected methods.
-
-The following methods were removed from interfaces. All of these methods are still available in the concrete classes
-that implement them, but you should update your code to use alternative methods:
-
-- Removed `Guzzle\Http\ClientInterface::setDefaultHeaders(). Use
- `$client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`. or
- `$client->getConfig()->setPath('request.options/headers', array('header_name' => 'value'))` or
- `$client->setDefaultOption('headers/{header_name}', 'value')`. or
- `$client->setDefaultOption('headers', array('header_name' => 'value'))`.
-- Removed `Guzzle\Http\ClientInterface::getDefaultHeaders(). Use `$client->getConfig()->getPath('request.options/headers')`.
-- Removed `Guzzle\Http\ClientInterface::expandTemplate()`. This is an implementation detail.
-- Removed `Guzzle\Http\ClientInterface::setRequestFactory()`. This is an implementation detail.
-- Removed `Guzzle\Http\ClientInterface::getCurlMulti()`. This is a very specific implementation detail.
-- Removed `Guzzle\Http\Message\RequestInterface::canCache`. Use the CachePlugin.
-- Removed `Guzzle\Http\Message\RequestInterface::setIsRedirect`. Use the HistoryPlugin.
-- Removed `Guzzle\Http\Message\RequestInterface::isRedirect`. Use the HistoryPlugin.
-
-### Cache plugin breaking changes
-
-- CacheKeyProviderInterface and DefaultCacheKeyProvider are no longer used. All of this logic is handled in a
- CacheStorageInterface. These two objects and interface will be removed in a future version.
-- Always setting X-cache headers on cached responses
-- Default cache TTLs are now handled by the CacheStorageInterface of a CachePlugin
-- `CacheStorageInterface::cache($key, Response $response, $ttl = null)` has changed to `cache(RequestInterface
- $request, Response $response);`
-- `CacheStorageInterface::fetch($key)` has changed to `fetch(RequestInterface $request);`
-- `CacheStorageInterface::delete($key)` has changed to `delete(RequestInterface $request);`
-- Added `CacheStorageInterface::purge($url)`
-- `DefaultRevalidation::__construct(CacheKeyProviderInterface $cacheKey, CacheStorageInterface $cache, CachePlugin
- $plugin)` has changed to `DefaultRevalidation::__construct(CacheStorageInterface $cache,
- CanCacheStrategyInterface $canCache = null)`
-- Added `RevalidationInterface::shouldRevalidate(RequestInterface $request, Response $response)`
-
-3.5 to 3.6
-----------
-
-* Mixed casing of headers are now forced to be a single consistent casing across all values for that header.
-* Messages internally use a HeaderCollection object to delegate handling case-insensitive header resolution
-* Removed the whole changedHeader() function system of messages because all header changes now go through addHeader().
- For example, setHeader() first removes the header using unset on a HeaderCollection and then calls addHeader().
- Keeping the Host header and URL host in sync is now handled by overriding the addHeader method in Request.
-* Specific header implementations can be created for complex headers. When a message creates a header, it uses a
- HeaderFactory which can map specific headers to specific header classes. There is now a Link header and
- CacheControl header implementation.
-* Moved getLinks() from Response to just be used on a Link header object.
-
-If you previously relied on Guzzle\Http\Message\Header::raw(), then you will need to update your code to use the
-HeaderInterface (e.g. toArray(), getAll(), etc.).
-
-### Interface changes
-
-* Removed from interface: Guzzle\Http\ClientInterface::setUriTemplate
-* Removed from interface: Guzzle\Http\ClientInterface::setCurlMulti()
-* Removed Guzzle\Http\Message\Request::receivedRequestHeader() and implemented this functionality in
- Guzzle\Http\Curl\RequestMediator
-* Removed the optional $asString parameter from MessageInterface::getHeader(). Just cast the header to a string.
-* Removed the optional $tryChunkedTransfer option from Guzzle\Http\Message\EntityEnclosingRequestInterface
-* Removed the $asObjects argument from Guzzle\Http\Message\MessageInterface::getHeaders()
-
-### Removed deprecated functions
-
-* Removed Guzzle\Parser\ParserRegister::get(). Use getParser()
-* Removed Guzzle\Parser\ParserRegister::set(). Use registerParser().
-
-### Deprecations
-
-* The ability to case-insensitively search for header values
-* Guzzle\Http\Message\Header::hasExactHeader
-* Guzzle\Http\Message\Header::raw. Use getAll()
-* Deprecated cache control specific methods on Guzzle\Http\Message\AbstractMessage. Use the CacheControl header object
- instead.
-
-### Other changes
-
-* All response header helper functions return a string rather than mixing Header objects and strings inconsistently
-* Removed cURL blacklist support. This is no longer necessary now that Expect, Accept, etc. are managed by Guzzle
- directly via interfaces
-* Removed the injecting of a request object onto a response object. The methods to get and set a request still exist
- but are a no-op until removed.
-* Most classes that used to require a `Guzzle\Service\Command\CommandInterface` typehint now request a
- `Guzzle\Service\Command\ArrayCommandInterface`.
-* Added `Guzzle\Http\Message\RequestInterface::startResponse()` to the RequestInterface to handle injecting a response
- on a request while the request is still being transferred
-* `Guzzle\Service\Command\CommandInterface` now extends from ToArrayInterface and ArrayAccess
-
-3.3 to 3.4
-----------
-
-Base URLs of a client now follow the rules of http://tools.ietf.org/html/rfc3986#section-5.2.2 when merging URLs.
-
-3.2 to 3.3
-----------
-
-### Response::getEtag() quote stripping removed
-
-`Guzzle\Http\Message\Response::getEtag()` no longer strips quotes around the ETag response header
-
-### Removed `Guzzle\Http\Utils`
-
-The `Guzzle\Http\Utils` class was removed. This class was only used for testing.
-
-### Stream wrapper and type
-
-`Guzzle\Stream\Stream::getWrapper()` and `Guzzle\Stream\Stream::getStreamType()` are no longer converted to lowercase.
-
-### curl.emit_io became emit_io
-
-Emitting IO events from a RequestMediator is now a parameter that must be set in a request's curl options using the
-'emit_io' key. This was previously set under a request's parameters using 'curl.emit_io'
-
-3.1 to 3.2
-----------
-
-### CurlMulti is no longer reused globally
-
-Before 3.2, the same CurlMulti object was reused globally for each client. This can cause issue where plugins added
-to a single client can pollute requests dispatched from other clients.
-
-If you still wish to reuse the same CurlMulti object with each client, then you can add a listener to the
-ServiceBuilder's `service_builder.create_client` event to inject a custom CurlMulti object into each client as it is
-created.
-
-```php
-$multi = new Guzzle\Http\Curl\CurlMulti();
-$builder = Guzzle\Service\Builder\ServiceBuilder::factory('/path/to/config.json');
-$builder->addListener('service_builder.create_client', function ($event) use ($multi) {
- $event['client']->setCurlMulti($multi);
-}
-});
-```
-
-### No default path
-
-URLs no longer have a default path value of '/' if no path was specified.
-
-Before:
-
-```php
-$request = $client->get('http://www.foo.com');
-echo $request->getUrl();
-// >> http://www.foo.com/
-```
-
-After:
-
-```php
-$request = $client->get('http://www.foo.com');
-echo $request->getUrl();
-// >> http://www.foo.com
-```
-
-### Less verbose BadResponseException
-
-The exception message for `Guzzle\Http\Exception\BadResponseException` no longer contains the full HTTP request and
-response information. You can, however, get access to the request and response object by calling `getRequest()` or
-`getResponse()` on the exception object.
-
-### Query parameter aggregation
-
-Multi-valued query parameters are no longer aggregated using a callback function. `Guzzle\Http\Query` now has a
-setAggregator() method that accepts a `Guzzle\Http\QueryAggregator\QueryAggregatorInterface` object. This object is
-responsible for handling the aggregation of multi-valued query string variables into a flattened hash.
-
-2.8 to 3.x
-----------
-
-### Guzzle\Service\Inspector
-
-Change `\Guzzle\Service\Inspector::fromConfig` to `\Guzzle\Common\Collection::fromConfig`
-
-**Before**
-
-```php
-use Guzzle\Service\Inspector;
-
-class YourClient extends \Guzzle\Service\Client
-{
- public static function factory($config = array())
- {
- $default = array();
- $required = array('base_url', 'username', 'api_key');
- $config = Inspector::fromConfig($config, $default, $required);
-
- $client = new self(
- $config->get('base_url'),
- $config->get('username'),
- $config->get('api_key')
- );
- $client->setConfig($config);
-
- $client->setDescription(ServiceDescription::factory(__DIR__ . DIRECTORY_SEPARATOR . 'client.json'));
-
- return $client;
- }
-```
-
-**After**
-
-```php
-use Guzzle\Common\Collection;
-
-class YourClient extends \Guzzle\Service\Client
-{
- public static function factory($config = array())
- {
- $default = array();
- $required = array('base_url', 'username', 'api_key');
- $config = Collection::fromConfig($config, $default, $required);
-
- $client = new self(
- $config->get('base_url'),
- $config->get('username'),
- $config->get('api_key')
- );
- $client->setConfig($config);
-
- $client->setDescription(ServiceDescription::factory(__DIR__ . DIRECTORY_SEPARATOR . 'client.json'));
-
- return $client;
- }
-```
-
-### Convert XML Service Descriptions to JSON
-
-**Before**
-
-```xml
-
-
-
-
-
- Get a list of groups
-
-
- Uses a search query to get a list of groups
-
-
-
- Create a group
-
-
-
-
- Delete a group by ID
-
-
-
-
-
-
- Update a group
-
-
-
-
-
-
-```
-
-**After**
-
-```json
-{
- "name": "Zendesk REST API v2",
- "apiVersion": "2012-12-31",
- "description":"Provides access to Zendesk views, groups, tickets, ticket fields, and users",
- "operations": {
- "list_groups": {
- "httpMethod":"GET",
- "uri": "groups.json",
- "summary": "Get a list of groups"
- },
- "search_groups":{
- "httpMethod":"GET",
- "uri": "search.json?query=\"{query} type:group\"",
- "summary": "Uses a search query to get a list of groups",
- "parameters":{
- "query":{
- "location": "uri",
- "description":"Zendesk Search Query",
- "type": "string",
- "required": true
- }
- }
- },
- "create_group": {
- "httpMethod":"POST",
- "uri": "groups.json",
- "summary": "Create a group",
- "parameters":{
- "data": {
- "type": "array",
- "location": "body",
- "description":"Group JSON",
- "filters": "json_encode",
- "required": true
- },
- "Content-Type":{
- "type": "string",
- "location":"header",
- "static": "application/json"
- }
- }
- },
- "delete_group": {
- "httpMethod":"DELETE",
- "uri": "groups/{id}.json",
- "summary": "Delete a group",
- "parameters":{
- "id":{
- "location": "uri",
- "description":"Group to delete by ID",
- "type": "integer",
- "required": true
- }
- }
- },
- "get_group": {
- "httpMethod":"GET",
- "uri": "groups/{id}.json",
- "summary": "Get a ticket",
- "parameters":{
- "id":{
- "location": "uri",
- "description":"Group to get by ID",
- "type": "integer",
- "required": true
- }
- }
- },
- "update_group": {
- "httpMethod":"PUT",
- "uri": "groups/{id}.json",
- "summary": "Update a group",
- "parameters":{
- "id": {
- "location": "uri",
- "description":"Group to update by ID",
- "type": "integer",
- "required": true
- },
- "data": {
- "type": "array",
- "location": "body",
- "description":"Group JSON",
- "filters": "json_encode",
- "required": true
- },
- "Content-Type":{
- "type": "string",
- "location":"header",
- "static": "application/json"
- }
- }
- }
-}
-```
-
-### Guzzle\Service\Description\ServiceDescription
-
-Commands are now called Operations
-
-**Before**
-
-```php
-use Guzzle\Service\Description\ServiceDescription;
-
-$sd = new ServiceDescription();
-$sd->getCommands(); // @returns ApiCommandInterface[]
-$sd->hasCommand($name);
-$sd->getCommand($name); // @returns ApiCommandInterface|null
-$sd->addCommand($command); // @param ApiCommandInterface $command
-```
-
-**After**
-
-```php
-use Guzzle\Service\Description\ServiceDescription;
-
-$sd = new ServiceDescription();
-$sd->getOperations(); // @returns OperationInterface[]
-$sd->hasOperation($name);
-$sd->getOperation($name); // @returns OperationInterface|null
-$sd->addOperation($operation); // @param OperationInterface $operation
-```
-
-### Guzzle\Common\Inflection\Inflector
-
-Namespace is now `Guzzle\Inflection\Inflector`
-
-### Guzzle\Http\Plugin
-
-Namespace is now `Guzzle\Plugin`. Many other changes occur within this namespace and are detailed in their own sections below.
-
-### Guzzle\Http\Plugin\LogPlugin and Guzzle\Common\Log
-
-Now `Guzzle\Plugin\Log\LogPlugin` and `Guzzle\Log` respectively.
-
-**Before**
-
-```php
-use Guzzle\Common\Log\ClosureLogAdapter;
-use Guzzle\Http\Plugin\LogPlugin;
-
-/** @var \Guzzle\Http\Client */
-$client;
-
-// $verbosity is an integer indicating desired message verbosity level
-$client->addSubscriber(new LogPlugin(new ClosureLogAdapter(function($m) { echo $m; }, $verbosity = LogPlugin::LOG_VERBOSE);
-```
-
-**After**
-
-```php
-use Guzzle\Log\ClosureLogAdapter;
-use Guzzle\Log\MessageFormatter;
-use Guzzle\Plugin\Log\LogPlugin;
-
-/** @var \Guzzle\Http\Client */
-$client;
-
-// $format is a string indicating desired message format -- @see MessageFormatter
-$client->addSubscriber(new LogPlugin(new ClosureLogAdapter(function($m) { echo $m; }, $format = MessageFormatter::DEBUG_FORMAT);
-```
-
-### Guzzle\Http\Plugin\CurlAuthPlugin
-
-Now `Guzzle\Plugin\CurlAuth\CurlAuthPlugin`.
-
-### Guzzle\Http\Plugin\ExponentialBackoffPlugin
-
-Now `Guzzle\Plugin\Backoff\BackoffPlugin`, and other changes.
-
-**Before**
-
-```php
-use Guzzle\Http\Plugin\ExponentialBackoffPlugin;
-
-$backoffPlugin = new ExponentialBackoffPlugin($maxRetries, array_merge(
- ExponentialBackoffPlugin::getDefaultFailureCodes(), array(429)
- ));
-
-$client->addSubscriber($backoffPlugin);
-```
-
-**After**
-
-```php
-use Guzzle\Plugin\Backoff\BackoffPlugin;
-use Guzzle\Plugin\Backoff\HttpBackoffStrategy;
-
-// Use convenient factory method instead -- see implementation for ideas of what
-// you can do with chaining backoff strategies
-$backoffPlugin = BackoffPlugin::getExponentialBackoff($maxRetries, array_merge(
- HttpBackoffStrategy::getDefaultFailureCodes(), array(429)
- ));
-$client->addSubscriber($backoffPlugin);
-```
-
-### Known Issues
-
-#### [BUG] Accept-Encoding header behavior changed unintentionally.
-
-(See #217) (Fixed in 09daeb8c666fb44499a0646d655a8ae36456575e)
-
-In version 2.8 setting the `Accept-Encoding` header would set the CURLOPT_ENCODING option, which permitted cURL to
-properly handle gzip/deflate compressed responses from the server. In versions affected by this bug this does not happen.
-See issue #217 for a workaround, or use a version containing the fix.
diff --git a/vendor/guzzlehttp/guzzle/composer.json b/vendor/guzzlehttp/guzzle/composer.json
deleted file mode 100644
index c01864f0..00000000
--- a/vendor/guzzlehttp/guzzle/composer.json
+++ /dev/null
@@ -1,59 +0,0 @@
-{
- "name": "guzzlehttp/guzzle",
- "type": "library",
- "description": "Guzzle is a PHP HTTP client library",
- "keywords": [
- "framework",
- "http",
- "rest",
- "web service",
- "curl",
- "client",
- "HTTP client"
- ],
- "homepage": "http://guzzlephp.org/",
- "license": "MIT",
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "require": {
- "php": ">=5.5",
- "ext-json": "*",
- "symfony/polyfill-intl-idn": "^1.17.0",
- "guzzlehttp/promises": "^1.0",
- "guzzlehttp/psr7": "^1.6.1"
- },
- "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"
- },
- "config": {
- "sort-packages": true
- },
- "extra": {
- "branch-alias": {
- "dev-master": "6.5-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\": "src/"
- },
- "files": [
- "src/functions_include.php"
- ]
- },
- "autoload-dev": {
- "psr-4": {
- "GuzzleHttp\\Tests\\": "tests/"
- }
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Client.php b/vendor/guzzlehttp/guzzle/src/Client.php
deleted file mode 100644
index 315a022c..00000000
--- a/vendor/guzzlehttp/guzzle/src/Client.php
+++ /dev/null
@@ -1,501 +0,0 @@
- 'http://www.foo.com/1.0/',
- * 'timeout' => 0,
- * 'allow_redirects' => false,
- * 'proxy' => '192.168.16.1:10'
- * ]);
- *
- * Client configuration settings include the following options:
- *
- * - handler: (callable) Function that transfers HTTP requests over the
- * wire. The function is called with a Psr7\Http\Message\RequestInterface
- * and array of transfer options, and must return a
- * GuzzleHttp\Promise\PromiseInterface that is fulfilled with a
- * Psr7\Http\Message\ResponseInterface on success.
- * If no handler is provided, a default handler will be created
- * that enables all of the request options below by attaching all of the
- * default middleware to the handler.
- * - base_uri: (string|UriInterface) Base URI of the client that is merged
- * into relative URIs. Can be a string or instance of UriInterface.
- * - **: any request option
- *
- * @param array $config Client configuration settings.
- *
- * @see \GuzzleHttp\RequestOptions for a list of available request options.
- */
- public function __construct(array $config = [])
- {
- if (!isset($config['handler'])) {
- $config['handler'] = HandlerStack::create();
- } elseif (!is_callable($config['handler'])) {
- throw new \InvalidArgumentException('handler must be a callable');
- }
-
- // Convert the base_uri to a UriInterface
- if (isset($config['base_uri'])) {
- $config['base_uri'] = Psr7\uri_for($config['base_uri']);
- }
-
- $this->configureDefaults($config);
- }
-
- /**
- * @param string $method
- * @param array $args
- *
- * @return Promise\PromiseInterface
- */
- public function __call($method, $args)
- {
- if (count($args) < 1) {
- throw new \InvalidArgumentException('Magic request methods require a URI and optional options array');
- }
-
- $uri = $args[0];
- $opts = isset($args[1]) ? $args[1] : [];
-
- return substr($method, -5) === 'Async'
- ? $this->requestAsync(substr($method, 0, -5), $uri, $opts)
- : $this->request($method, $uri, $opts);
- }
-
- /**
- * Asynchronously send an HTTP request.
- *
- * @param array $options Request options to apply to the given
- * request and to the transfer. See \GuzzleHttp\RequestOptions.
- *
- * @return Promise\PromiseInterface
- */
- public function sendAsync(RequestInterface $request, array $options = [])
- {
- // Merge the base URI into the request URI if needed.
- $options = $this->prepareDefaults($options);
-
- return $this->transfer(
- $request->withUri($this->buildUri($request->getUri(), $options), $request->hasHeader('Host')),
- $options
- );
- }
-
- /**
- * Send an HTTP request.
- *
- * @param array $options Request options to apply to the given
- * request and to the transfer. See \GuzzleHttp\RequestOptions.
- *
- * @return ResponseInterface
- * @throws GuzzleException
- */
- public function send(RequestInterface $request, array $options = [])
- {
- $options[RequestOptions::SYNCHRONOUS] = true;
- return $this->sendAsync($request, $options)->wait();
- }
-
- /**
- * Create and send an asynchronous HTTP request.
- *
- * Use an absolute path to override the base path of the client, or a
- * relative path to append to the base path of the client. The URL can
- * contain the query string as well. Use an array to provide a URL
- * template and additional variables to use in the URL template expansion.
- *
- * @param string $method HTTP method
- * @param string|UriInterface $uri URI object or string.
- * @param array $options Request options to apply. See \GuzzleHttp\RequestOptions.
- *
- * @return Promise\PromiseInterface
- */
- public function requestAsync($method, $uri = '', array $options = [])
- {
- $options = $this->prepareDefaults($options);
- // Remove request modifying parameter because it can be done up-front.
- $headers = isset($options['headers']) ? $options['headers'] : [];
- $body = isset($options['body']) ? $options['body'] : null;
- $version = isset($options['version']) ? $options['version'] : '1.1';
- // Merge the URI into the base URI.
- $uri = $this->buildUri($uri, $options);
- if (is_array($body)) {
- $this->invalidBody();
- }
- $request = new Psr7\Request($method, $uri, $headers, $body, $version);
- // Remove the option so that they are not doubly-applied.
- unset($options['headers'], $options['body'], $options['version']);
-
- return $this->transfer($request, $options);
- }
-
- /**
- * Create and send an HTTP request.
- *
- * Use an absolute path to override the base path of the client, or a
- * relative path to append to the base path of the client. The URL can
- * contain the query string as well.
- *
- * @param string $method HTTP method.
- * @param string|UriInterface $uri URI object or string.
- * @param array $options Request options to apply. See \GuzzleHttp\RequestOptions.
- *
- * @return ResponseInterface
- * @throws GuzzleException
- */
- public function request($method, $uri = '', array $options = [])
- {
- $options[RequestOptions::SYNCHRONOUS] = true;
- return $this->requestAsync($method, $uri, $options)->wait();
- }
-
- /**
- * Get a client configuration option.
- *
- * These options include default request options of the client, a "handler"
- * (if utilized by the concrete client), and a "base_uri" if utilized by
- * the concrete client.
- *
- * @param string|null $option The config option to retrieve.
- *
- * @return mixed
- */
- public function getConfig($option = null)
- {
- return $option === null
- ? $this->config
- : (isset($this->config[$option]) ? $this->config[$option] : null);
- }
-
- /**
- * @param string|null $uri
- *
- * @return UriInterface
- */
- private function buildUri($uri, array $config)
- {
- // for BC we accept null which would otherwise fail in uri_for
- $uri = Psr7\uri_for($uri === null ? '' : $uri);
-
- if (isset($config['base_uri'])) {
- $uri = Psr7\UriResolver::resolve(Psr7\uri_for($config['base_uri']), $uri);
- }
-
- if (isset($config['idn_conversion']) && ($config['idn_conversion'] !== false)) {
- $idnOptions = ($config['idn_conversion'] === true) ? IDNA_DEFAULT : $config['idn_conversion'];
- $uri = Utils::idnUriConvert($uri, $idnOptions);
- }
-
- return $uri->getScheme() === '' && $uri->getHost() !== '' ? $uri->withScheme('http') : $uri;
- }
-
- /**
- * Configures the default options for a client.
- *
- * @param array $config
- * @return void
- */
- private function configureDefaults(array $config)
- {
- $defaults = [
- 'allow_redirects' => RedirectMiddleware::$defaultSettings,
- 'http_errors' => true,
- 'decode_content' => true,
- 'verify' => true,
- 'cookies' => false,
- 'idn_conversion' => true,
- ];
-
- // Use the standard Linux HTTP_PROXY and HTTPS_PROXY if set.
-
- // We can only trust the HTTP_PROXY environment variable in a CLI
- // process due to the fact that PHP has no reliable mechanism to
- // get environment variables that start with "HTTP_".
- if (php_sapi_name() === 'cli' && getenv('HTTP_PROXY')) {
- $defaults['proxy']['http'] = getenv('HTTP_PROXY');
- }
-
- if ($proxy = getenv('HTTPS_PROXY')) {
- $defaults['proxy']['https'] = $proxy;
- }
-
- if ($noProxy = getenv('NO_PROXY')) {
- $cleanedNoProxy = str_replace(' ', '', $noProxy);
- $defaults['proxy']['no'] = explode(',', $cleanedNoProxy);
- }
-
- $this->config = $config + $defaults;
-
- if (!empty($config['cookies']) && $config['cookies'] === true) {
- $this->config['cookies'] = new CookieJar();
- }
-
- // Add the default user-agent header.
- if (!isset($this->config['headers'])) {
- $this->config['headers'] = ['User-Agent' => default_user_agent()];
- } else {
- // Add the User-Agent header if one was not already set.
- foreach (array_keys($this->config['headers']) as $name) {
- if (strtolower($name) === 'user-agent') {
- return;
- }
- }
- $this->config['headers']['User-Agent'] = default_user_agent();
- }
- }
-
- /**
- * Merges default options into the array.
- *
- * @param array $options Options to modify by reference
- *
- * @return array
- */
- private function prepareDefaults(array $options)
- {
- $defaults = $this->config;
-
- if (!empty($defaults['headers'])) {
- // Default headers are only added if they are not present.
- $defaults['_conditional'] = $defaults['headers'];
- unset($defaults['headers']);
- }
-
- // Special handling for headers is required as they are added as
- // conditional headers and as headers passed to a request ctor.
- if (array_key_exists('headers', $options)) {
- // Allows default headers to be unset.
- if ($options['headers'] === null) {
- $defaults['_conditional'] = [];
- unset($options['headers']);
- } elseif (!is_array($options['headers'])) {
- throw new \InvalidArgumentException('headers must be an array');
- }
- }
-
- // Shallow merge defaults underneath options.
- $result = $options + $defaults;
-
- // Remove null values.
- foreach ($result as $k => $v) {
- if ($v === null) {
- unset($result[$k]);
- }
- }
-
- return $result;
- }
-
- /**
- * Transfers the given request and applies request options.
- *
- * The URI of the request is not modified and the request options are used
- * as-is without merging in default options.
- *
- * @param array $options See \GuzzleHttp\RequestOptions.
- *
- * @return Promise\PromiseInterface
- */
- private function transfer(RequestInterface $request, array $options)
- {
- // save_to -> sink
- if (isset($options['save_to'])) {
- $options['sink'] = $options['save_to'];
- unset($options['save_to']);
- }
-
- // exceptions -> http_errors
- if (isset($options['exceptions'])) {
- $options['http_errors'] = $options['exceptions'];
- unset($options['exceptions']);
- }
-
- $request = $this->applyOptions($request, $options);
- /** @var HandlerStack $handler */
- $handler = $options['handler'];
-
- try {
- return Promise\promise_for($handler($request, $options));
- } catch (\Exception $e) {
- return Promise\rejection_for($e);
- }
- }
-
- /**
- * Applies the array of request options to a request.
- *
- * @param RequestInterface $request
- * @param array $options
- *
- * @return RequestInterface
- */
- private function applyOptions(RequestInterface $request, array &$options)
- {
- $modify = [
- 'set_headers' => [],
- ];
-
- if (isset($options['headers'])) {
- $modify['set_headers'] = $options['headers'];
- unset($options['headers']);
- }
-
- if (isset($options['form_params'])) {
- if (isset($options['multipart'])) {
- throw new \InvalidArgumentException('You cannot use '
- . 'form_params and multipart at the same time. Use the '
- . 'form_params option if you want to send application/'
- . 'x-www-form-urlencoded requests, and the multipart '
- . 'option to send multipart/form-data requests.');
- }
- $options['body'] = http_build_query($options['form_params'], '', '&');
- unset($options['form_params']);
- // Ensure that we don't have the header in different case and set the new value.
- $options['_conditional'] = Psr7\_caseless_remove(['Content-Type'], $options['_conditional']);
- $options['_conditional']['Content-Type'] = 'application/x-www-form-urlencoded';
- }
-
- if (isset($options['multipart'])) {
- $options['body'] = new Psr7\MultipartStream($options['multipart']);
- unset($options['multipart']);
- }
-
- if (isset($options['json'])) {
- $options['body'] = \GuzzleHttp\json_encode($options['json']);
- unset($options['json']);
- // Ensure that we don't have the header in different case and set the new value.
- $options['_conditional'] = Psr7\_caseless_remove(['Content-Type'], $options['_conditional']);
- $options['_conditional']['Content-Type'] = 'application/json';
- }
-
- if (!empty($options['decode_content'])
- && $options['decode_content'] !== true
- ) {
- // Ensure that we don't have the header in different case and set the new value.
- $options['_conditional'] = Psr7\_caseless_remove(['Accept-Encoding'], $options['_conditional']);
- $modify['set_headers']['Accept-Encoding'] = $options['decode_content'];
- }
-
- if (isset($options['body'])) {
- if (is_array($options['body'])) {
- $this->invalidBody();
- }
- $modify['body'] = Psr7\stream_for($options['body']);
- unset($options['body']);
- }
-
- if (!empty($options['auth']) && is_array($options['auth'])) {
- $value = $options['auth'];
- $type = isset($value[2]) ? strtolower($value[2]) : 'basic';
- switch ($type) {
- case 'basic':
- // Ensure that we don't have the header in different case and set the new value.
- $modify['set_headers'] = Psr7\_caseless_remove(['Authorization'], $modify['set_headers']);
- $modify['set_headers']['Authorization'] = 'Basic '
- . base64_encode("$value[0]:$value[1]");
- break;
- case 'digest':
- // @todo: Do not rely on curl
- $options['curl'][CURLOPT_HTTPAUTH] = CURLAUTH_DIGEST;
- $options['curl'][CURLOPT_USERPWD] = "$value[0]:$value[1]";
- break;
- case 'ntlm':
- $options['curl'][CURLOPT_HTTPAUTH] = CURLAUTH_NTLM;
- $options['curl'][CURLOPT_USERPWD] = "$value[0]:$value[1]";
- break;
- }
- }
-
- if (isset($options['query'])) {
- $value = $options['query'];
- if (is_array($value)) {
- $value = http_build_query($value, null, '&', PHP_QUERY_RFC3986);
- }
- if (!is_string($value)) {
- throw new \InvalidArgumentException('query must be a string or array');
- }
- $modify['query'] = $value;
- unset($options['query']);
- }
-
- // Ensure that sink is not an invalid value.
- if (isset($options['sink'])) {
- // TODO: Add more sink validation?
- if (is_bool($options['sink'])) {
- throw new \InvalidArgumentException('sink must not be a boolean');
- }
- }
-
- $request = Psr7\modify_request($request, $modify);
- if ($request->getBody() instanceof Psr7\MultipartStream) {
- // Use a multipart/form-data POST if a Content-Type is not set.
- // Ensure that we don't have the header in different case and set the new value.
- $options['_conditional'] = Psr7\_caseless_remove(['Content-Type'], $options['_conditional']);
- $options['_conditional']['Content-Type'] = 'multipart/form-data; boundary='
- . $request->getBody()->getBoundary();
- }
-
- // Merge in conditional headers if they are not present.
- if (isset($options['_conditional'])) {
- // Build up the changes so it's in a single clone of the message.
- $modify = [];
- foreach ($options['_conditional'] as $k => $v) {
- if (!$request->hasHeader($k)) {
- $modify['set_headers'][$k] = $v;
- }
- }
- $request = Psr7\modify_request($request, $modify);
- // Don't pass this internal value along to middleware/handlers.
- unset($options['_conditional']);
- }
-
- return $request;
- }
-
- /**
- * Throw Exception with pre-set message.
- * @return void
- * @throws \InvalidArgumentException Invalid body.
- */
- private function invalidBody()
- {
- throw new \InvalidArgumentException('Passing in the "body" request '
- . 'option as an array to send a POST request has been deprecated. '
- . 'Please use the "form_params" request option to send a '
- . 'application/x-www-form-urlencoded request, or the "multipart" '
- . 'request option to send a multipart/form-data request.');
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/ClientInterface.php b/vendor/guzzlehttp/guzzle/src/ClientInterface.php
deleted file mode 100644
index 638b75dc..00000000
--- a/vendor/guzzlehttp/guzzle/src/ClientInterface.php
+++ /dev/null
@@ -1,87 +0,0 @@
-strictMode = $strictMode;
-
- foreach ($cookieArray as $cookie) {
- if (!($cookie instanceof SetCookie)) {
- $cookie = new SetCookie($cookie);
- }
- $this->setCookie($cookie);
- }
- }
-
- /**
- * Create a new Cookie jar from an associative array and domain.
- *
- * @param array $cookies Cookies to create the jar from
- * @param string $domain Domain to set the cookies to
- *
- * @return self
- */
- public static function fromArray(array $cookies, $domain)
- {
- $cookieJar = new self();
- foreach ($cookies as $name => $value) {
- $cookieJar->setCookie(new SetCookie([
- 'Domain' => $domain,
- 'Name' => $name,
- 'Value' => $value,
- 'Discard' => true
- ]));
- }
-
- return $cookieJar;
- }
-
- /**
- * @deprecated
- */
- public static function getCookieValue($value)
- {
- return $value;
- }
-
- /**
- * Evaluate if this cookie should be persisted to storage
- * that survives between requests.
- *
- * @param SetCookie $cookie Being evaluated.
- * @param bool $allowSessionCookies If we should persist session cookies
- * @return bool
- */
- public static function shouldPersist(
- SetCookie $cookie,
- $allowSessionCookies = false
- ) {
- if ($cookie->getExpires() || $allowSessionCookies) {
- if (!$cookie->getDiscard()) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Finds and returns the cookie based on the name
- *
- * @param string $name cookie name to search for
- * @return SetCookie|null cookie that was found or null if not found
- */
- public function getCookieByName($name)
- {
- // don't allow a non string name
- if ($name === null || !is_scalar($name)) {
- return null;
- }
- foreach ($this->cookies as $cookie) {
- if ($cookie->getName() !== null && strcasecmp($cookie->getName(), $name) === 0) {
- return $cookie;
- }
- }
-
- return null;
- }
-
- public function toArray()
- {
- return array_map(function (SetCookie $cookie) {
- return $cookie->toArray();
- }, $this->getIterator()->getArrayCopy());
- }
-
- public function clear($domain = null, $path = null, $name = null)
- {
- if (!$domain) {
- $this->cookies = [];
- return;
- } elseif (!$path) {
- $this->cookies = array_filter(
- $this->cookies,
- function (SetCookie $cookie) use ($domain) {
- return !$cookie->matchesDomain($domain);
- }
- );
- } elseif (!$name) {
- $this->cookies = array_filter(
- $this->cookies,
- function (SetCookie $cookie) use ($path, $domain) {
- return !($cookie->matchesPath($path) &&
- $cookie->matchesDomain($domain));
- }
- );
- } else {
- $this->cookies = array_filter(
- $this->cookies,
- function (SetCookie $cookie) use ($path, $domain, $name) {
- return !($cookie->getName() == $name &&
- $cookie->matchesPath($path) &&
- $cookie->matchesDomain($domain));
- }
- );
- }
- }
-
- public function clearSessionCookies()
- {
- $this->cookies = array_filter(
- $this->cookies,
- function (SetCookie $cookie) {
- return !$cookie->getDiscard() && $cookie->getExpires();
- }
- );
- }
-
- public function setCookie(SetCookie $cookie)
- {
- // If the name string is empty (but not 0), ignore the set-cookie
- // string entirely.
- $name = $cookie->getName();
- if (!$name && $name !== '0') {
- return false;
- }
-
- // Only allow cookies with set and valid domain, name, value
- $result = $cookie->validate();
- if ($result !== true) {
- if ($this->strictMode) {
- throw new \RuntimeException('Invalid cookie: ' . $result);
- } else {
- $this->removeCookieIfEmpty($cookie);
- return false;
- }
- }
-
- // Resolve conflicts with previously set cookies
- foreach ($this->cookies as $i => $c) {
-
- // Two cookies are identical, when their path, and domain are
- // identical.
- if ($c->getPath() != $cookie->getPath() ||
- $c->getDomain() != $cookie->getDomain() ||
- $c->getName() != $cookie->getName()
- ) {
- continue;
- }
-
- // The previously set cookie is a discard cookie and this one is
- // not so allow the new cookie to be set
- if (!$cookie->getDiscard() && $c->getDiscard()) {
- unset($this->cookies[$i]);
- continue;
- }
-
- // If the new cookie's expiration is further into the future, then
- // replace the old cookie
- if ($cookie->getExpires() > $c->getExpires()) {
- unset($this->cookies[$i]);
- continue;
- }
-
- // If the value has changed, we better change it
- if ($cookie->getValue() !== $c->getValue()) {
- unset($this->cookies[$i]);
- continue;
- }
-
- // The cookie exists, so no need to continue
- return false;
- }
-
- $this->cookies[] = $cookie;
-
- return true;
- }
-
- public function count()
- {
- return count($this->cookies);
- }
-
- public function getIterator()
- {
- return new \ArrayIterator(array_values($this->cookies));
- }
-
- public function extractCookies(
- RequestInterface $request,
- ResponseInterface $response
- ) {
- if ($cookieHeader = $response->getHeader('Set-Cookie')) {
- foreach ($cookieHeader as $cookie) {
- $sc = SetCookie::fromString($cookie);
- if (!$sc->getDomain()) {
- $sc->setDomain($request->getUri()->getHost());
- }
- if (0 !== strpos($sc->getPath(), '/')) {
- $sc->setPath($this->getCookiePathFromRequest($request));
- }
- $this->setCookie($sc);
- }
- }
- }
-
- /**
- * Computes cookie path following RFC 6265 section 5.1.4
- *
- * @link https://tools.ietf.org/html/rfc6265#section-5.1.4
- *
- * @param RequestInterface $request
- * @return string
- */
- private function getCookiePathFromRequest(RequestInterface $request)
- {
- $uriPath = $request->getUri()->getPath();
- if ('' === $uriPath) {
- return '/';
- }
- if (0 !== strpos($uriPath, '/')) {
- return '/';
- }
- if ('/' === $uriPath) {
- return '/';
- }
- if (0 === $lastSlashPos = strrpos($uriPath, '/')) {
- return '/';
- }
-
- return substr($uriPath, 0, $lastSlashPos);
- }
-
- public function withCookieHeader(RequestInterface $request)
- {
- $values = [];
- $uri = $request->getUri();
- $scheme = $uri->getScheme();
- $host = $uri->getHost();
- $path = $uri->getPath() ?: '/';
-
- foreach ($this->cookies as $cookie) {
- if ($cookie->matchesPath($path) &&
- $cookie->matchesDomain($host) &&
- !$cookie->isExpired() &&
- (!$cookie->getSecure() || $scheme === 'https')
- ) {
- $values[] = $cookie->getName() . '='
- . $cookie->getValue();
- }
- }
-
- return $values
- ? $request->withHeader('Cookie', implode('; ', $values))
- : $request;
- }
-
- /**
- * If a cookie already exists and the server asks to set it again with a
- * null value, the cookie must be deleted.
- *
- * @param SetCookie $cookie
- */
- private function removeCookieIfEmpty(SetCookie $cookie)
- {
- $cookieValue = $cookie->getValue();
- if ($cookieValue === null || $cookieValue === '') {
- $this->clear(
- $cookie->getDomain(),
- $cookie->getPath(),
- $cookie->getName()
- );
- }
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php b/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php
deleted file mode 100644
index 6ee11885..00000000
--- a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php
+++ /dev/null
@@ -1,84 +0,0 @@
-filename = $cookieFile;
- $this->storeSessionCookies = $storeSessionCookies;
-
- if (file_exists($cookieFile)) {
- $this->load($cookieFile);
- }
- }
-
- /**
- * Saves the file when shutting down
- */
- public function __destruct()
- {
- $this->save($this->filename);
- }
-
- /**
- * Saves the cookies to a file.
- *
- * @param string $filename File to save
- * @throws \RuntimeException if the file cannot be found or created
- */
- public function save($filename)
- {
- $json = [];
- foreach ($this as $cookie) {
- /** @var SetCookie $cookie */
- if (CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) {
- $json[] = $cookie->toArray();
- }
- }
-
- $jsonStr = \GuzzleHttp\json_encode($json);
- if (false === file_put_contents($filename, $jsonStr, LOCK_EX)) {
- throw new \RuntimeException("Unable to save file {$filename}");
- }
- }
-
- /**
- * Load cookies from a JSON formatted file.
- *
- * Old cookies are kept unless overwritten by newly loaded ones.
- *
- * @param string $filename Cookie file to load.
- * @throws \RuntimeException if the file cannot be loaded.
- */
- public function load($filename)
- {
- $json = file_get_contents($filename);
- if (false === $json) {
- throw new \RuntimeException("Unable to load file {$filename}");
- } elseif ($json === '') {
- return;
- }
-
- $data = \GuzzleHttp\json_decode($json, true);
- if (is_array($data)) {
- foreach (json_decode($json, true) as $cookie) {
- $this->setCookie(new SetCookie($cookie));
- }
- } elseif (strlen($data)) {
- throw new \RuntimeException("Invalid cookie file: {$filename}");
- }
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php b/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php
deleted file mode 100644
index 0224a244..00000000
--- a/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php
+++ /dev/null
@@ -1,72 +0,0 @@
-sessionKey = $sessionKey;
- $this->storeSessionCookies = $storeSessionCookies;
- $this->load();
- }
-
- /**
- * Saves cookies to session when shutting down
- */
- public function __destruct()
- {
- $this->save();
- }
-
- /**
- * Save cookies to the client session
- */
- public function save()
- {
- $json = [];
- foreach ($this as $cookie) {
- /** @var SetCookie $cookie */
- if (CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) {
- $json[] = $cookie->toArray();
- }
- }
-
- $_SESSION[$this->sessionKey] = json_encode($json);
- }
-
- /**
- * Load the contents of the client session into the data array
- */
- protected function load()
- {
- if (!isset($_SESSION[$this->sessionKey])) {
- return;
- }
- $data = json_decode($_SESSION[$this->sessionKey], true);
- if (is_array($data)) {
- foreach ($data as $cookie) {
- $this->setCookie(new SetCookie($cookie));
- }
- } elseif (strlen($data)) {
- throw new \RuntimeException("Invalid cookie data");
- }
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php b/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php
deleted file mode 100644
index 3d776a70..00000000
--- a/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php
+++ /dev/null
@@ -1,403 +0,0 @@
- null,
- 'Value' => null,
- 'Domain' => null,
- 'Path' => '/',
- 'Max-Age' => null,
- 'Expires' => null,
- 'Secure' => false,
- 'Discard' => false,
- 'HttpOnly' => false
- ];
-
- /** @var array Cookie data */
- private $data;
-
- /**
- * Create a new SetCookie object from a string
- *
- * @param string $cookie Set-Cookie header string
- *
- * @return self
- */
- public static function fromString($cookie)
- {
- // Create the default return array
- $data = self::$defaults;
- // Explode the cookie string using a series of semicolons
- $pieces = array_filter(array_map('trim', explode(';', $cookie)));
- // The name of the cookie (first kvp) must exist and include an equal sign.
- if (empty($pieces[0]) || !strpos($pieces[0], '=')) {
- return new self($data);
- }
-
- // Add the cookie pieces into the parsed data array
- foreach ($pieces as $part) {
- $cookieParts = explode('=', $part, 2);
- $key = trim($cookieParts[0]);
- $value = isset($cookieParts[1])
- ? trim($cookieParts[1], " \n\r\t\0\x0B")
- : true;
-
- // Only check for non-cookies when cookies have been found
- if (empty($data['Name'])) {
- $data['Name'] = $key;
- $data['Value'] = $value;
- } else {
- foreach (array_keys(self::$defaults) as $search) {
- if (!strcasecmp($search, $key)) {
- $data[$search] = $value;
- continue 2;
- }
- }
- $data[$key] = $value;
- }
- }
-
- return new self($data);
- }
-
- /**
- * @param array $data Array of cookie data provided by a Cookie parser
- */
- public function __construct(array $data = [])
- {
- $this->data = array_replace(self::$defaults, $data);
- // Extract the Expires value and turn it into a UNIX timestamp if needed
- if (!$this->getExpires() && $this->getMaxAge()) {
- // Calculate the Expires date
- $this->setExpires(time() + $this->getMaxAge());
- } elseif ($this->getExpires() && !is_numeric($this->getExpires())) {
- $this->setExpires($this->getExpires());
- }
- }
-
- public function __toString()
- {
- $str = $this->data['Name'] . '=' . $this->data['Value'] . '; ';
- foreach ($this->data as $k => $v) {
- if ($k !== 'Name' && $k !== 'Value' && $v !== null && $v !== false) {
- if ($k === 'Expires') {
- $str .= 'Expires=' . gmdate('D, d M Y H:i:s \G\M\T', $v) . '; ';
- } else {
- $str .= ($v === true ? $k : "{$k}={$v}") . '; ';
- }
- }
- }
-
- return rtrim($str, '; ');
- }
-
- public function toArray()
- {
- return $this->data;
- }
-
- /**
- * Get the cookie name
- *
- * @return string
- */
- public function getName()
- {
- return $this->data['Name'];
- }
-
- /**
- * Set the cookie name
- *
- * @param string $name Cookie name
- */
- public function setName($name)
- {
- $this->data['Name'] = $name;
- }
-
- /**
- * Get the cookie value
- *
- * @return string
- */
- public function getValue()
- {
- return $this->data['Value'];
- }
-
- /**
- * Set the cookie value
- *
- * @param string $value Cookie value
- */
- public function setValue($value)
- {
- $this->data['Value'] = $value;
- }
-
- /**
- * Get the domain
- *
- * @return string|null
- */
- public function getDomain()
- {
- return $this->data['Domain'];
- }
-
- /**
- * Set the domain of the cookie
- *
- * @param string $domain
- */
- public function setDomain($domain)
- {
- $this->data['Domain'] = $domain;
- }
-
- /**
- * Get the path
- *
- * @return string
- */
- public function getPath()
- {
- return $this->data['Path'];
- }
-
- /**
- * Set the path of the cookie
- *
- * @param string $path Path of the cookie
- */
- public function setPath($path)
- {
- $this->data['Path'] = $path;
- }
-
- /**
- * Maximum lifetime of the cookie in seconds
- *
- * @return int|null
- */
- public function getMaxAge()
- {
- return $this->data['Max-Age'];
- }
-
- /**
- * Set the max-age of the cookie
- *
- * @param int $maxAge Max age of the cookie in seconds
- */
- public function setMaxAge($maxAge)
- {
- $this->data['Max-Age'] = $maxAge;
- }
-
- /**
- * The UNIX timestamp when the cookie Expires
- *
- * @return mixed
- */
- public function getExpires()
- {
- return $this->data['Expires'];
- }
-
- /**
- * Set the unix timestamp for which the cookie will expire
- *
- * @param int $timestamp Unix timestamp
- */
- public function setExpires($timestamp)
- {
- $this->data['Expires'] = is_numeric($timestamp)
- ? (int) $timestamp
- : strtotime($timestamp);
- }
-
- /**
- * Get whether or not this is a secure cookie
- *
- * @return bool|null
- */
- public function getSecure()
- {
- return $this->data['Secure'];
- }
-
- /**
- * Set whether or not the cookie is secure
- *
- * @param bool $secure Set to true or false if secure
- */
- public function setSecure($secure)
- {
- $this->data['Secure'] = $secure;
- }
-
- /**
- * Get whether or not this is a session cookie
- *
- * @return bool|null
- */
- public function getDiscard()
- {
- return $this->data['Discard'];
- }
-
- /**
- * Set whether or not this is a session cookie
- *
- * @param bool $discard Set to true or false if this is a session cookie
- */
- public function setDiscard($discard)
- {
- $this->data['Discard'] = $discard;
- }
-
- /**
- * Get whether or not this is an HTTP only cookie
- *
- * @return bool
- */
- public function getHttpOnly()
- {
- return $this->data['HttpOnly'];
- }
-
- /**
- * Set whether or not this is an HTTP only cookie
- *
- * @param bool $httpOnly Set to true or false if this is HTTP only
- */
- public function setHttpOnly($httpOnly)
- {
- $this->data['HttpOnly'] = $httpOnly;
- }
-
- /**
- * Check if the cookie matches a path value.
- *
- * A request-path path-matches a given cookie-path if at least one of
- * the following conditions holds:
- *
- * - The cookie-path and the request-path are identical.
- * - The cookie-path is a prefix of the request-path, and the last
- * character of the cookie-path is %x2F ("/").
- * - The cookie-path is a prefix of the request-path, and the first
- * character of the request-path that is not included in the cookie-
- * path is a %x2F ("/") character.
- *
- * @param string $requestPath Path to check against
- *
- * @return bool
- */
- public function matchesPath($requestPath)
- {
- $cookiePath = $this->getPath();
-
- // Match on exact matches or when path is the default empty "/"
- if ($cookiePath === '/' || $cookiePath == $requestPath) {
- return true;
- }
-
- // Ensure that the cookie-path is a prefix of the request path.
- if (0 !== strpos($requestPath, $cookiePath)) {
- return false;
- }
-
- // Match if the last character of the cookie-path is "/"
- if (substr($cookiePath, -1, 1) === '/') {
- return true;
- }
-
- // Match if the first character not included in cookie path is "/"
- return substr($requestPath, strlen($cookiePath), 1) === '/';
- }
-
- /**
- * Check if the cookie matches a domain value
- *
- * @param string $domain Domain to check against
- *
- * @return bool
- */
- public function matchesDomain($domain)
- {
- // Remove the leading '.' as per spec in RFC 6265.
- // http://tools.ietf.org/html/rfc6265#section-5.2.3
- $cookieDomain = ltrim($this->getDomain(), '.');
-
- // Domain not set or exact match.
- if (!$cookieDomain || !strcasecmp($domain, $cookieDomain)) {
- return true;
- }
-
- // Matching the subdomain according to RFC 6265.
- // http://tools.ietf.org/html/rfc6265#section-5.1.3
- if (filter_var($domain, FILTER_VALIDATE_IP)) {
- return false;
- }
-
- return (bool) preg_match('/\.' . preg_quote($cookieDomain, '/') . '$/', $domain);
- }
-
- /**
- * Check if the cookie is expired
- *
- * @return bool
- */
- public function isExpired()
- {
- return $this->getExpires() !== null && time() > $this->getExpires();
- }
-
- /**
- * Check if the cookie is valid according to RFC 6265
- *
- * @return bool|string Returns true if valid or an error message if invalid
- */
- public function validate()
- {
- // Names must not be empty, but can be 0
- $name = $this->getName();
- if (empty($name) && !is_numeric($name)) {
- return 'The cookie name must not be empty';
- }
-
- // Check if any of the invalid characters are present in the cookie name
- if (preg_match(
- '/[\x00-\x20\x22\x28-\x29\x2c\x2f\x3a-\x40\x5c\x7b\x7d\x7f]/',
- $name
- )) {
- return 'Cookie name must not contain invalid characters: ASCII '
- . 'Control characters (0-31;127), space, tab and the '
- . 'following characters: ()<>@,;:\"/?={}';
- }
-
- // Value must not be empty, but can be 0
- $value = $this->getValue();
- if (empty($value) && !is_numeric($value)) {
- return 'The cookie value must not be empty';
- }
-
- // Domains must not be empty, but can be 0
- // A "0" is not a valid internet domain, but may be used as server name
- // in a private network.
- $domain = $this->getDomain();
- if (empty($domain) && !is_numeric($domain)) {
- return 'The cookie domain must not be empty';
- }
-
- return true;
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php b/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php
deleted file mode 100644
index 427d896f..00000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php
+++ /dev/null
@@ -1,27 +0,0 @@
-getStatusCode()
- : 0;
- parent::__construct($message, $code, $previous);
- $this->request = $request;
- $this->response = $response;
- $this->handlerContext = $handlerContext;
- }
-
- /**
- * Wrap non-RequestExceptions with a RequestException
- *
- * @param RequestInterface $request
- * @param \Exception $e
- *
- * @return RequestException
- */
- public static function wrapException(RequestInterface $request, \Exception $e)
- {
- return $e instanceof RequestException
- ? $e
- : new RequestException($e->getMessage(), $request, null, $e);
- }
-
- /**
- * Factory method to create a new exception with a normalized error message
- *
- * @param RequestInterface $request Request
- * @param ResponseInterface $response Response received
- * @param \Exception $previous Previous exception
- * @param array $ctx Optional handler context.
- *
- * @return self
- */
- public static function create(
- RequestInterface $request,
- ResponseInterface $response = null,
- \Exception $previous = null,
- array $ctx = []
- ) {
- if (!$response) {
- return new self(
- 'Error completing request',
- $request,
- null,
- $previous,
- $ctx
- );
- }
-
- $level = (int) floor($response->getStatusCode() / 100);
- if ($level === 4) {
- $label = 'Client error';
- $className = ClientException::class;
- } elseif ($level === 5) {
- $label = 'Server error';
- $className = ServerException::class;
- } else {
- $label = 'Unsuccessful request';
- $className = __CLASS__;
- }
-
- $uri = $request->getUri();
- $uri = static::obfuscateUri($uri);
-
- // Client Error: `GET /` resulted in a `404 Not Found` response:
- // ... (truncated)
- $message = sprintf(
- '%s: `%s %s` resulted in a `%s %s` response',
- $label,
- $request->getMethod(),
- $uri,
- $response->getStatusCode(),
- $response->getReasonPhrase()
- );
-
- $summary = static::getResponseBodySummary($response);
-
- if ($summary !== null) {
- $message .= ":\n{$summary}\n";
- }
-
- return new $className($message, $request, $response, $previous, $ctx);
- }
-
- /**
- * Get a short summary of the response
- *
- * Will return `null` if the response is not printable.
- *
- * @param ResponseInterface $response
- *
- * @return string|null
- */
- public static function getResponseBodySummary(ResponseInterface $response)
- {
- return \GuzzleHttp\Psr7\get_message_body_summary($response);
- }
-
- /**
- * Obfuscates URI if there is a username and a password present
- *
- * @param UriInterface $uri
- *
- * @return UriInterface
- */
- private static function obfuscateUri(UriInterface $uri)
- {
- $userInfo = $uri->getUserInfo();
-
- if (false !== ($pos = strpos($userInfo, ':'))) {
- return $uri->withUserInfo(substr($userInfo, 0, $pos), '***');
- }
-
- return $uri;
- }
-
- /**
- * Get the request that caused the exception
- *
- * @return RequestInterface
- */
- public function getRequest()
- {
- return $this->request;
- }
-
- /**
- * Get the associated response
- *
- * @return ResponseInterface|null
- */
- public function getResponse()
- {
- return $this->response;
- }
-
- /**
- * Check if a response was received
- *
- * @return bool
- */
- public function hasResponse()
- {
- return $this->response !== null;
- }
-
- /**
- * Get contextual information about the error from the underlying handler.
- *
- * The contents of this array will vary depending on which handler you are
- * using. It may also be just an empty array. Relying on this data will
- * couple you to a specific handler, but can give more debug information
- * when needed.
- *
- * @return array
- */
- public function getHandlerContext()
- {
- return $this->handlerContext;
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php b/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php
deleted file mode 100644
index a77c2892..00000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php
+++ /dev/null
@@ -1,27 +0,0 @@
-stream = $stream;
- $msg = $msg ?: 'Could not seek the stream to position ' . $pos;
- parent::__construct($msg);
- }
-
- /**
- * @return StreamInterface
- */
- public function getStream()
- {
- return $this->stream;
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php b/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php
deleted file mode 100644
index 127094c1..00000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php
+++ /dev/null
@@ -1,9 +0,0 @@
-maxHandles = $maxHandles;
- }
-
- public function create(RequestInterface $request, array $options)
- {
- if (isset($options['curl']['body_as_string'])) {
- $options['_body_as_string'] = $options['curl']['body_as_string'];
- unset($options['curl']['body_as_string']);
- }
-
- $easy = new EasyHandle;
- $easy->request = $request;
- $easy->options = $options;
- $conf = $this->getDefaultConf($easy);
- $this->applyMethod($easy, $conf);
- $this->applyHandlerOptions($easy, $conf);
- $this->applyHeaders($easy, $conf);
- unset($conf['_headers']);
-
- // Add handler options from the request configuration options
- if (isset($options['curl'])) {
- $conf = array_replace($conf, $options['curl']);
- }
-
- $conf[CURLOPT_HEADERFUNCTION] = $this->createHeaderFn($easy);
- $easy->handle = $this->handles
- ? array_pop($this->handles)
- : curl_init();
- curl_setopt_array($easy->handle, $conf);
-
- return $easy;
- }
-
- public function release(EasyHandle $easy)
- {
- $resource = $easy->handle;
- unset($easy->handle);
-
- if (count($this->handles) >= $this->maxHandles) {
- curl_close($resource);
- } else {
- // Remove all callback functions as they can hold onto references
- // and are not cleaned up by curl_reset. Using curl_setopt_array
- // does not work for some reason, so removing each one
- // individually.
- curl_setopt($resource, CURLOPT_HEADERFUNCTION, null);
- curl_setopt($resource, CURLOPT_READFUNCTION, null);
- curl_setopt($resource, CURLOPT_WRITEFUNCTION, null);
- curl_setopt($resource, CURLOPT_PROGRESSFUNCTION, null);
- curl_reset($resource);
- $this->handles[] = $resource;
- }
- }
-
- /**
- * Completes a cURL transaction, either returning a response promise or a
- * rejected promise.
- *
- * @param callable $handler
- * @param EasyHandle $easy
- * @param CurlFactoryInterface $factory Dictates how the handle is released
- *
- * @return \GuzzleHttp\Promise\PromiseInterface
- */
- public static function finish(
- callable $handler,
- EasyHandle $easy,
- CurlFactoryInterface $factory
- ) {
- if (isset($easy->options['on_stats'])) {
- self::invokeStats($easy);
- }
-
- if (!$easy->response || $easy->errno) {
- return self::finishError($handler, $easy, $factory);
- }
-
- // Return the response if it is present and there is no error.
- $factory->release($easy);
-
- // Rewind the body of the response if possible.
- $body = $easy->response->getBody();
- if ($body->isSeekable()) {
- $body->rewind();
- }
-
- return new FulfilledPromise($easy->response);
- }
-
- private static function invokeStats(EasyHandle $easy)
- {
- $curlStats = curl_getinfo($easy->handle);
- $curlStats['appconnect_time'] = curl_getinfo($easy->handle, CURLINFO_APPCONNECT_TIME);
- $stats = new TransferStats(
- $easy->request,
- $easy->response,
- $curlStats['total_time'],
- $easy->errno,
- $curlStats
- );
- call_user_func($easy->options['on_stats'], $stats);
- }
-
- private static function finishError(
- callable $handler,
- EasyHandle $easy,
- CurlFactoryInterface $factory
- ) {
- // Get error information and release the handle to the factory.
- $ctx = [
- 'errno' => $easy->errno,
- 'error' => curl_error($easy->handle),
- 'appconnect_time' => curl_getinfo($easy->handle, CURLINFO_APPCONNECT_TIME),
- ] + curl_getinfo($easy->handle);
- $ctx[self::CURL_VERSION_STR] = curl_version()['version'];
- $factory->release($easy);
-
- // Retry when nothing is present or when curl failed to rewind.
- if (empty($easy->options['_err_message'])
- && (!$easy->errno || $easy->errno == 65)
- ) {
- return self::retryFailedRewind($handler, $easy, $ctx);
- }
-
- return self::createRejection($easy, $ctx);
- }
-
- private static function createRejection(EasyHandle $easy, array $ctx)
- {
- static $connectionErrors = [
- CURLE_OPERATION_TIMEOUTED => true,
- CURLE_COULDNT_RESOLVE_HOST => true,
- CURLE_COULDNT_CONNECT => true,
- CURLE_SSL_CONNECT_ERROR => true,
- CURLE_GOT_NOTHING => true,
- ];
-
- // If an exception was encountered during the onHeaders event, then
- // return a rejected promise that wraps that exception.
- if ($easy->onHeadersException) {
- return \GuzzleHttp\Promise\rejection_for(
- new RequestException(
- 'An error was encountered during the on_headers event',
- $easy->request,
- $easy->response,
- $easy->onHeadersException,
- $ctx
- )
- );
- }
- if (version_compare($ctx[self::CURL_VERSION_STR], self::LOW_CURL_VERSION_NUMBER)) {
- $message = sprintf(
- 'cURL error %s: %s (%s)',
- $ctx['errno'],
- $ctx['error'],
- 'see https://curl.haxx.se/libcurl/c/libcurl-errors.html'
- );
- } else {
- $message = sprintf(
- 'cURL error %s: %s (%s) for %s',
- $ctx['errno'],
- $ctx['error'],
- 'see https://curl.haxx.se/libcurl/c/libcurl-errors.html',
- $easy->request->getUri()
- );
- }
-
- // Create a connection exception if it was a specific error code.
- $error = isset($connectionErrors[$easy->errno])
- ? new ConnectException($message, $easy->request, null, $ctx)
- : new RequestException($message, $easy->request, $easy->response, null, $ctx);
-
- return \GuzzleHttp\Promise\rejection_for($error);
- }
-
- private function getDefaultConf(EasyHandle $easy)
- {
- $conf = [
- '_headers' => $easy->request->getHeaders(),
- CURLOPT_CUSTOMREQUEST => $easy->request->getMethod(),
- CURLOPT_URL => (string) $easy->request->getUri()->withFragment(''),
- CURLOPT_RETURNTRANSFER => false,
- CURLOPT_HEADER => false,
- CURLOPT_CONNECTTIMEOUT => 150,
- ];
-
- if (defined('CURLOPT_PROTOCOLS')) {
- $conf[CURLOPT_PROTOCOLS] = CURLPROTO_HTTP | CURLPROTO_HTTPS;
- }
-
- $version = $easy->request->getProtocolVersion();
- if ($version == 1.1) {
- $conf[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_1_1;
- } elseif ($version == 2.0) {
- $conf[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_2_0;
- } else {
- $conf[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_1_0;
- }
-
- return $conf;
- }
-
- private function applyMethod(EasyHandle $easy, array &$conf)
- {
- $body = $easy->request->getBody();
- $size = $body->getSize();
-
- if ($size === null || $size > 0) {
- $this->applyBody($easy->request, $easy->options, $conf);
- return;
- }
-
- $method = $easy->request->getMethod();
- if ($method === 'PUT' || $method === 'POST') {
- // See http://tools.ietf.org/html/rfc7230#section-3.3.2
- if (!$easy->request->hasHeader('Content-Length')) {
- $conf[CURLOPT_HTTPHEADER][] = 'Content-Length: 0';
- }
- } elseif ($method === 'HEAD') {
- $conf[CURLOPT_NOBODY] = true;
- unset(
- $conf[CURLOPT_WRITEFUNCTION],
- $conf[CURLOPT_READFUNCTION],
- $conf[CURLOPT_FILE],
- $conf[CURLOPT_INFILE]
- );
- }
- }
-
- private function applyBody(RequestInterface $request, array $options, array &$conf)
- {
- $size = $request->hasHeader('Content-Length')
- ? (int) $request->getHeaderLine('Content-Length')
- : null;
-
- // Send the body as a string if the size is less than 1MB OR if the
- // [curl][body_as_string] request value is set.
- if (($size !== null && $size < 1000000) ||
- !empty($options['_body_as_string'])
- ) {
- $conf[CURLOPT_POSTFIELDS] = (string) $request->getBody();
- // Don't duplicate the Content-Length header
- $this->removeHeader('Content-Length', $conf);
- $this->removeHeader('Transfer-Encoding', $conf);
- } else {
- $conf[CURLOPT_UPLOAD] = true;
- if ($size !== null) {
- $conf[CURLOPT_INFILESIZE] = $size;
- $this->removeHeader('Content-Length', $conf);
- }
- $body = $request->getBody();
- if ($body->isSeekable()) {
- $body->rewind();
- }
- $conf[CURLOPT_READFUNCTION] = function ($ch, $fd, $length) use ($body) {
- return $body->read($length);
- };
- }
-
- // If the Expect header is not present, prevent curl from adding it
- if (!$request->hasHeader('Expect')) {
- $conf[CURLOPT_HTTPHEADER][] = 'Expect:';
- }
-
- // cURL sometimes adds a content-type by default. Prevent this.
- if (!$request->hasHeader('Content-Type')) {
- $conf[CURLOPT_HTTPHEADER][] = 'Content-Type:';
- }
- }
-
- private function applyHeaders(EasyHandle $easy, array &$conf)
- {
- foreach ($conf['_headers'] as $name => $values) {
- foreach ($values as $value) {
- $value = (string) $value;
- if ($value === '') {
- // cURL requires a special format for empty headers.
- // See https://github.com/guzzle/guzzle/issues/1882 for more details.
- $conf[CURLOPT_HTTPHEADER][] = "$name;";
- } else {
- $conf[CURLOPT_HTTPHEADER][] = "$name: $value";
- }
- }
- }
-
- // Remove the Accept header if one was not set
- if (!$easy->request->hasHeader('Accept')) {
- $conf[CURLOPT_HTTPHEADER][] = 'Accept:';
- }
- }
-
- /**
- * Remove a header from the options array.
- *
- * @param string $name Case-insensitive header to remove
- * @param array $options Array of options to modify
- */
- private function removeHeader($name, array &$options)
- {
- foreach (array_keys($options['_headers']) as $key) {
- if (!strcasecmp($key, $name)) {
- unset($options['_headers'][$key]);
- return;
- }
- }
- }
-
- private function applyHandlerOptions(EasyHandle $easy, array &$conf)
- {
- $options = $easy->options;
- if (isset($options['verify'])) {
- if ($options['verify'] === false) {
- unset($conf[CURLOPT_CAINFO]);
- $conf[CURLOPT_SSL_VERIFYHOST] = 0;
- $conf[CURLOPT_SSL_VERIFYPEER] = false;
- } else {
- $conf[CURLOPT_SSL_VERIFYHOST] = 2;
- $conf[CURLOPT_SSL_VERIFYPEER] = true;
- if (is_string($options['verify'])) {
- // Throw an error if the file/folder/link path is not valid or doesn't exist.
- if (!file_exists($options['verify'])) {
- throw new \InvalidArgumentException(
- "SSL CA bundle not found: {$options['verify']}"
- );
- }
- // If it's a directory or a link to a directory use CURLOPT_CAPATH.
- // If not, it's probably a file, or a link to a file, so use CURLOPT_CAINFO.
- if (is_dir($options['verify']) ||
- (is_link($options['verify']) && is_dir(readlink($options['verify'])))) {
- $conf[CURLOPT_CAPATH] = $options['verify'];
- } else {
- $conf[CURLOPT_CAINFO] = $options['verify'];
- }
- }
- }
- }
-
- if (!empty($options['decode_content'])) {
- $accept = $easy->request->getHeaderLine('Accept-Encoding');
- if ($accept) {
- $conf[CURLOPT_ENCODING] = $accept;
- } else {
- $conf[CURLOPT_ENCODING] = '';
- // Don't let curl send the header over the wire
- $conf[CURLOPT_HTTPHEADER][] = 'Accept-Encoding:';
- }
- }
-
- if (isset($options['sink'])) {
- $sink = $options['sink'];
- if (!is_string($sink)) {
- $sink = \GuzzleHttp\Psr7\stream_for($sink);
- } elseif (!is_dir(dirname($sink))) {
- // Ensure that the directory exists before failing in curl.
- throw new \RuntimeException(sprintf(
- 'Directory %s does not exist for sink value of %s',
- dirname($sink),
- $sink
- ));
- } else {
- $sink = new LazyOpenStream($sink, 'w+');
- }
- $easy->sink = $sink;
- $conf[CURLOPT_WRITEFUNCTION] = function ($ch, $write) use ($sink) {
- return $sink->write($write);
- };
- } else {
- // Use a default temp stream if no sink was set.
- $conf[CURLOPT_FILE] = fopen('php://temp', 'w+');
- $easy->sink = Psr7\stream_for($conf[CURLOPT_FILE]);
- }
- $timeoutRequiresNoSignal = false;
- if (isset($options['timeout'])) {
- $timeoutRequiresNoSignal |= $options['timeout'] < 1;
- $conf[CURLOPT_TIMEOUT_MS] = $options['timeout'] * 1000;
- }
-
- // CURL default value is CURL_IPRESOLVE_WHATEVER
- if (isset($options['force_ip_resolve'])) {
- if ('v4' === $options['force_ip_resolve']) {
- $conf[CURLOPT_IPRESOLVE] = CURL_IPRESOLVE_V4;
- } elseif ('v6' === $options['force_ip_resolve']) {
- $conf[CURLOPT_IPRESOLVE] = CURL_IPRESOLVE_V6;
- }
- }
-
- if (isset($options['connect_timeout'])) {
- $timeoutRequiresNoSignal |= $options['connect_timeout'] < 1;
- $conf[CURLOPT_CONNECTTIMEOUT_MS] = $options['connect_timeout'] * 1000;
- }
-
- if ($timeoutRequiresNoSignal && strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN') {
- $conf[CURLOPT_NOSIGNAL] = true;
- }
-
- if (isset($options['proxy'])) {
- if (!is_array($options['proxy'])) {
- $conf[CURLOPT_PROXY] = $options['proxy'];
- } else {
- $scheme = $easy->request->getUri()->getScheme();
- if (isset($options['proxy'][$scheme])) {
- $host = $easy->request->getUri()->getHost();
- if (!isset($options['proxy']['no']) ||
- !\GuzzleHttp\is_host_in_noproxy($host, $options['proxy']['no'])
- ) {
- $conf[CURLOPT_PROXY] = $options['proxy'][$scheme];
- }
- }
- }
- }
-
- if (isset($options['cert'])) {
- $cert = $options['cert'];
- if (is_array($cert)) {
- $conf[CURLOPT_SSLCERTPASSWD] = $cert[1];
- $cert = $cert[0];
- }
- if (!file_exists($cert)) {
- throw new \InvalidArgumentException(
- "SSL certificate not found: {$cert}"
- );
- }
- $conf[CURLOPT_SSLCERT] = $cert;
- }
-
- if (isset($options['ssl_key'])) {
- if (is_array($options['ssl_key'])) {
- if (count($options['ssl_key']) === 2) {
- list($sslKey, $conf[CURLOPT_SSLKEYPASSWD]) = $options['ssl_key'];
- } else {
- list($sslKey) = $options['ssl_key'];
- }
- }
-
- $sslKey = isset($sslKey) ? $sslKey: $options['ssl_key'];
-
- if (!file_exists($sslKey)) {
- throw new \InvalidArgumentException(
- "SSL private key not found: {$sslKey}"
- );
- }
- $conf[CURLOPT_SSLKEY] = $sslKey;
- }
-
- if (isset($options['progress'])) {
- $progress = $options['progress'];
- if (!is_callable($progress)) {
- throw new \InvalidArgumentException(
- 'progress client option must be callable'
- );
- }
- $conf[CURLOPT_NOPROGRESS] = false;
- $conf[CURLOPT_PROGRESSFUNCTION] = function () use ($progress) {
- $args = func_get_args();
- // PHP 5.5 pushed the handle onto the start of the args
- if (is_resource($args[0])) {
- array_shift($args);
- }
- call_user_func_array($progress, $args);
- };
- }
-
- if (!empty($options['debug'])) {
- $conf[CURLOPT_STDERR] = \GuzzleHttp\debug_resource($options['debug']);
- $conf[CURLOPT_VERBOSE] = true;
- }
- }
-
- /**
- * This function ensures that a response was set on a transaction. If one
- * was not set, then the request is retried if possible. This error
- * typically means you are sending a payload, curl encountered a
- * "Connection died, retrying a fresh connect" error, tried to rewind the
- * stream, and then encountered a "necessary data rewind wasn't possible"
- * error, causing the request to be sent through curl_multi_info_read()
- * without an error status.
- */
- private static function retryFailedRewind(
- callable $handler,
- EasyHandle $easy,
- array $ctx
- ) {
- try {
- // Only rewind if the body has been read from.
- $body = $easy->request->getBody();
- if ($body->tell() > 0) {
- $body->rewind();
- }
- } catch (\RuntimeException $e) {
- $ctx['error'] = 'The connection unexpectedly failed without '
- . 'providing an error. The request would have been retried, '
- . 'but attempting to rewind the request body failed. '
- . 'Exception: ' . $e;
- return self::createRejection($easy, $ctx);
- }
-
- // Retry no more than 3 times before giving up.
- if (!isset($easy->options['_curl_retries'])) {
- $easy->options['_curl_retries'] = 1;
- } elseif ($easy->options['_curl_retries'] == 2) {
- $ctx['error'] = 'The cURL request was retried 3 times '
- . 'and did not succeed. The most likely reason for the failure '
- . 'is that cURL was unable to rewind the body of the request '
- . 'and subsequent retries resulted in the same error. Turn on '
- . 'the debug option to see what went wrong. See '
- . 'https://bugs.php.net/bug.php?id=47204 for more information.';
- return self::createRejection($easy, $ctx);
- } else {
- $easy->options['_curl_retries']++;
- }
-
- return $handler($easy->request, $easy->options);
- }
-
- private function createHeaderFn(EasyHandle $easy)
- {
- if (isset($easy->options['on_headers'])) {
- $onHeaders = $easy->options['on_headers'];
-
- if (!is_callable($onHeaders)) {
- throw new \InvalidArgumentException('on_headers must be callable');
- }
- } else {
- $onHeaders = null;
- }
-
- return function ($ch, $h) use (
- $onHeaders,
- $easy,
- &$startingResponse
- ) {
- $value = trim($h);
- if ($value === '') {
- $startingResponse = true;
- $easy->createResponse();
- if ($onHeaders !== null) {
- try {
- $onHeaders($easy->response);
- } catch (\Exception $e) {
- // Associate the exception with the handle and trigger
- // a curl header write error by returning 0.
- $easy->onHeadersException = $e;
- return -1;
- }
- }
- } elseif ($startingResponse) {
- $startingResponse = false;
- $easy->headers = [$value];
- } else {
- $easy->headers[] = $value;
- }
- return strlen($h);
- };
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php b/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php
deleted file mode 100644
index b0fc2368..00000000
--- a/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php
+++ /dev/null
@@ -1,27 +0,0 @@
-factory = isset($options['handle_factory'])
- ? $options['handle_factory']
- : new CurlFactory(3);
- }
-
- public function __invoke(RequestInterface $request, array $options)
- {
- if (isset($options['delay'])) {
- usleep($options['delay'] * 1000);
- }
-
- $easy = $this->factory->create($request, $options);
- curl_exec($easy->handle);
- $easy->errno = curl_errno($easy->handle);
-
- return CurlFactory::finish($this, $easy, $this->factory);
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php b/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php
deleted file mode 100644
index 564c95f4..00000000
--- a/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php
+++ /dev/null
@@ -1,219 +0,0 @@
-factory = isset($options['handle_factory'])
- ? $options['handle_factory'] : new CurlFactory(50);
-
- if (isset($options['select_timeout'])) {
- $this->selectTimeout = $options['select_timeout'];
- } elseif ($selectTimeout = getenv('GUZZLE_CURL_SELECT_TIMEOUT')) {
- $this->selectTimeout = $selectTimeout;
- } else {
- $this->selectTimeout = 1;
- }
-
- $this->options = isset($options['options']) ? $options['options'] : [];
- }
-
- public function __get($name)
- {
- if ($name === '_mh') {
- $this->_mh = curl_multi_init();
-
- foreach ($this->options as $option => $value) {
- // A warning is raised in case of a wrong option.
- curl_multi_setopt($this->_mh, $option, $value);
- }
-
- // Further calls to _mh will return the value directly, without entering the
- // __get() method at all.
- return $this->_mh;
- }
-
- throw new \BadMethodCallException();
- }
-
- public function __destruct()
- {
- if (isset($this->_mh)) {
- curl_multi_close($this->_mh);
- unset($this->_mh);
- }
- }
-
- public function __invoke(RequestInterface $request, array $options)
- {
- $easy = $this->factory->create($request, $options);
- $id = (int) $easy->handle;
-
- $promise = new Promise(
- [$this, 'execute'],
- function () use ($id) {
- return $this->cancel($id);
- }
- );
-
- $this->addRequest(['easy' => $easy, 'deferred' => $promise]);
-
- return $promise;
- }
-
- /**
- * Ticks the curl event loop.
- */
- public function tick()
- {
- // Add any delayed handles if needed.
- if ($this->delays) {
- $currentTime = Utils::currentTime();
- foreach ($this->delays as $id => $delay) {
- if ($currentTime >= $delay) {
- unset($this->delays[$id]);
- curl_multi_add_handle(
- $this->_mh,
- $this->handles[$id]['easy']->handle
- );
- }
- }
- }
-
- // Step through the task queue which may add additional requests.
- P\queue()->run();
-
- if ($this->active &&
- curl_multi_select($this->_mh, $this->selectTimeout) === -1
- ) {
- // Perform a usleep if a select returns -1.
- // See: https://bugs.php.net/bug.php?id=61141
- usleep(250);
- }
-
- while (curl_multi_exec($this->_mh, $this->active) === CURLM_CALL_MULTI_PERFORM);
-
- $this->processMessages();
- }
-
- /**
- * Runs until all outstanding connections have completed.
- */
- public function execute()
- {
- $queue = P\queue();
-
- while ($this->handles || !$queue->isEmpty()) {
- // If there are no transfers, then sleep for the next delay
- if (!$this->active && $this->delays) {
- usleep($this->timeToNext());
- }
- $this->tick();
- }
- }
-
- private function addRequest(array $entry)
- {
- $easy = $entry['easy'];
- $id = (int) $easy->handle;
- $this->handles[$id] = $entry;
- if (empty($easy->options['delay'])) {
- curl_multi_add_handle($this->_mh, $easy->handle);
- } else {
- $this->delays[$id] = Utils::currentTime() + ($easy->options['delay'] / 1000);
- }
- }
-
- /**
- * Cancels a handle from sending and removes references to it.
- *
- * @param int $id Handle ID to cancel and remove.
- *
- * @return bool True on success, false on failure.
- */
- private function cancel($id)
- {
- // Cannot cancel if it has been processed.
- if (!isset($this->handles[$id])) {
- return false;
- }
-
- $handle = $this->handles[$id]['easy']->handle;
- unset($this->delays[$id], $this->handles[$id]);
- curl_multi_remove_handle($this->_mh, $handle);
- curl_close($handle);
-
- return true;
- }
-
- private function processMessages()
- {
- while ($done = curl_multi_info_read($this->_mh)) {
- $id = (int) $done['handle'];
- curl_multi_remove_handle($this->_mh, $done['handle']);
-
- if (!isset($this->handles[$id])) {
- // Probably was cancelled.
- continue;
- }
-
- $entry = $this->handles[$id];
- unset($this->handles[$id], $this->delays[$id]);
- $entry['easy']->errno = $done['result'];
- $entry['deferred']->resolve(
- CurlFactory::finish(
- $this,
- $entry['easy'],
- $this->factory
- )
- );
- }
- }
-
- private function timeToNext()
- {
- $currentTime = Utils::currentTime();
- $nextTime = PHP_INT_MAX;
- foreach ($this->delays as $time) {
- if ($time < $nextTime) {
- $nextTime = $time;
- }
- }
-
- return max(0, $nextTime - $currentTime) * 1000000;
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php b/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php
deleted file mode 100644
index 7754e911..00000000
--- a/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php
+++ /dev/null
@@ -1,92 +0,0 @@
-headers)) {
- throw new \RuntimeException('No headers have been received');
- }
-
- // HTTP-version SP status-code SP reason-phrase
- $startLine = explode(' ', array_shift($this->headers), 3);
- $headers = \GuzzleHttp\headers_from_lines($this->headers);
- $normalizedKeys = \GuzzleHttp\normalize_header_keys($headers);
-
- if (!empty($this->options['decode_content'])
- && isset($normalizedKeys['content-encoding'])
- ) {
- $headers['x-encoded-content-encoding']
- = $headers[$normalizedKeys['content-encoding']];
- unset($headers[$normalizedKeys['content-encoding']]);
- if (isset($normalizedKeys['content-length'])) {
- $headers['x-encoded-content-length']
- = $headers[$normalizedKeys['content-length']];
-
- $bodyLength = (int) $this->sink->getSize();
- if ($bodyLength) {
- $headers[$normalizedKeys['content-length']] = $bodyLength;
- } else {
- unset($headers[$normalizedKeys['content-length']]);
- }
- }
- }
-
- // Attach a response to the easy handle with the parsed headers.
- $this->response = new Response(
- $startLine[1],
- $headers,
- $this->sink,
- substr($startLine[0], 5),
- isset($startLine[2]) ? (string) $startLine[2] : null
- );
- }
-
- public function __get($name)
- {
- $msg = $name === 'handle'
- ? 'The EasyHandle has been released'
- : 'Invalid property: ' . $name;
- throw new \BadMethodCallException($msg);
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php b/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php
deleted file mode 100644
index 5b312bc0..00000000
--- a/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php
+++ /dev/null
@@ -1,195 +0,0 @@
-onFulfilled = $onFulfilled;
- $this->onRejected = $onRejected;
-
- if ($queue) {
- call_user_func_array([$this, 'append'], $queue);
- }
- }
-
- public function __invoke(RequestInterface $request, array $options)
- {
- if (!$this->queue) {
- throw new \OutOfBoundsException('Mock queue is empty');
- }
-
- if (isset($options['delay']) && is_numeric($options['delay'])) {
- usleep($options['delay'] * 1000);
- }
-
- $this->lastRequest = $request;
- $this->lastOptions = $options;
- $response = array_shift($this->queue);
-
- if (isset($options['on_headers'])) {
- if (!is_callable($options['on_headers'])) {
- throw new \InvalidArgumentException('on_headers must be callable');
- }
- try {
- $options['on_headers']($response);
- } catch (\Exception $e) {
- $msg = 'An error was encountered during the on_headers event';
- $response = new RequestException($msg, $request, $response, $e);
- }
- }
-
- if (is_callable($response)) {
- $response = call_user_func($response, $request, $options);
- }
-
- $response = $response instanceof \Exception
- ? \GuzzleHttp\Promise\rejection_for($response)
- : \GuzzleHttp\Promise\promise_for($response);
-
- return $response->then(
- function ($value) use ($request, $options) {
- $this->invokeStats($request, $options, $value);
- if ($this->onFulfilled) {
- call_user_func($this->onFulfilled, $value);
- }
- if (isset($options['sink'])) {
- $contents = (string) $value->getBody();
- $sink = $options['sink'];
-
- if (is_resource($sink)) {
- fwrite($sink, $contents);
- } elseif (is_string($sink)) {
- file_put_contents($sink, $contents);
- } elseif ($sink instanceof \Psr\Http\Message\StreamInterface) {
- $sink->write($contents);
- }
- }
-
- return $value;
- },
- function ($reason) use ($request, $options) {
- $this->invokeStats($request, $options, null, $reason);
- if ($this->onRejected) {
- call_user_func($this->onRejected, $reason);
- }
- return \GuzzleHttp\Promise\rejection_for($reason);
- }
- );
- }
-
- /**
- * Adds one or more variadic requests, exceptions, callables, or promises
- * to the queue.
- */
- public function append()
- {
- foreach (func_get_args() as $value) {
- if ($value instanceof ResponseInterface
- || $value instanceof \Exception
- || $value instanceof PromiseInterface
- || is_callable($value)
- ) {
- $this->queue[] = $value;
- } else {
- throw new \InvalidArgumentException('Expected a response or '
- . 'exception. Found ' . \GuzzleHttp\describe_type($value));
- }
- }
- }
-
- /**
- * Get the last received request.
- *
- * @return RequestInterface
- */
- public function getLastRequest()
- {
- return $this->lastRequest;
- }
-
- /**
- * Get the last received request options.
- *
- * @return array
- */
- public function getLastOptions()
- {
- return $this->lastOptions;
- }
-
- /**
- * Returns the number of remaining items in the queue.
- *
- * @return int
- */
- public function count()
- {
- return count($this->queue);
- }
-
- public function reset()
- {
- $this->queue = [];
- }
-
- private function invokeStats(
- RequestInterface $request,
- array $options,
- ResponseInterface $response = null,
- $reason = null
- ) {
- if (isset($options['on_stats'])) {
- $transferTime = isset($options['transfer_time']) ? $options['transfer_time'] : 0;
- $stats = new TransferStats($request, $response, $transferTime, $reason);
- call_user_func($options['on_stats'], $stats);
- }
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php b/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php
deleted file mode 100644
index f8b00be0..00000000
--- a/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php
+++ /dev/null
@@ -1,55 +0,0 @@
-withoutHeader('Expect');
-
- // Append a content-length header if body size is zero to match
- // cURL's behavior.
- if (0 === $request->getBody()->getSize()) {
- $request = $request->withHeader('Content-Length', '0');
- }
-
- return $this->createResponse(
- $request,
- $options,
- $this->createStream($request, $options),
- $startTime
- );
- } catch (\InvalidArgumentException $e) {
- throw $e;
- } catch (\Exception $e) {
- // Determine if the error was a networking error.
- $message = $e->getMessage();
- // This list can probably get more comprehensive.
- if (strpos($message, 'getaddrinfo') // DNS lookup failed
- || strpos($message, 'Connection refused')
- || strpos($message, "couldn't connect to host") // error on HHVM
- || strpos($message, "connection attempt failed")
- ) {
- $e = new ConnectException($e->getMessage(), $request, $e);
- }
- $e = RequestException::wrapException($request, $e);
- $this->invokeStats($options, $request, $startTime, null, $e);
-
- return \GuzzleHttp\Promise\rejection_for($e);
- }
- }
-
- private function invokeStats(
- array $options,
- RequestInterface $request,
- $startTime,
- ResponseInterface $response = null,
- $error = null
- ) {
- if (isset($options['on_stats'])) {
- $stats = new TransferStats(
- $request,
- $response,
- Utils::currentTime() - $startTime,
- $error,
- []
- );
- call_user_func($options['on_stats'], $stats);
- }
- }
-
- private function createResponse(
- RequestInterface $request,
- array $options,
- $stream,
- $startTime
- ) {
- $hdrs = $this->lastHeaders;
- $this->lastHeaders = [];
- $parts = explode(' ', array_shift($hdrs), 3);
- $ver = explode('/', $parts[0])[1];
- $status = $parts[1];
- $reason = isset($parts[2]) ? $parts[2] : null;
- $headers = \GuzzleHttp\headers_from_lines($hdrs);
- list($stream, $headers) = $this->checkDecode($options, $headers, $stream);
- $stream = Psr7\stream_for($stream);
- $sink = $stream;
-
- if (strcasecmp('HEAD', $request->getMethod())) {
- $sink = $this->createSink($stream, $options);
- }
-
- $response = new Psr7\Response($status, $headers, $sink, $ver, $reason);
-
- if (isset($options['on_headers'])) {
- try {
- $options['on_headers']($response);
- } catch (\Exception $e) {
- $msg = 'An error was encountered during the on_headers event';
- $ex = new RequestException($msg, $request, $response, $e);
- return \GuzzleHttp\Promise\rejection_for($ex);
- }
- }
-
- // Do not drain when the request is a HEAD request because they have
- // no body.
- if ($sink !== $stream) {
- $this->drain(
- $stream,
- $sink,
- $response->getHeaderLine('Content-Length')
- );
- }
-
- $this->invokeStats($options, $request, $startTime, $response, null);
-
- return new FulfilledPromise($response);
- }
-
- private function createSink(StreamInterface $stream, array $options)
- {
- if (!empty($options['stream'])) {
- return $stream;
- }
-
- $sink = isset($options['sink'])
- ? $options['sink']
- : fopen('php://temp', 'r+');
-
- return is_string($sink)
- ? new Psr7\LazyOpenStream($sink, 'w+')
- : Psr7\stream_for($sink);
- }
-
- private function checkDecode(array $options, array $headers, $stream)
- {
- // Automatically decode responses when instructed.
- if (!empty($options['decode_content'])) {
- $normalizedKeys = \GuzzleHttp\normalize_header_keys($headers);
- if (isset($normalizedKeys['content-encoding'])) {
- $encoding = $headers[$normalizedKeys['content-encoding']];
- if ($encoding[0] === 'gzip' || $encoding[0] === 'deflate') {
- $stream = new Psr7\InflateStream(
- Psr7\stream_for($stream)
- );
- $headers['x-encoded-content-encoding']
- = $headers[$normalizedKeys['content-encoding']];
- // Remove content-encoding header
- unset($headers[$normalizedKeys['content-encoding']]);
- // Fix content-length header
- if (isset($normalizedKeys['content-length'])) {
- $headers['x-encoded-content-length']
- = $headers[$normalizedKeys['content-length']];
-
- $length = (int) $stream->getSize();
- if ($length === 0) {
- unset($headers[$normalizedKeys['content-length']]);
- } else {
- $headers[$normalizedKeys['content-length']] = [$length];
- }
- }
- }
- }
- }
-
- return [$stream, $headers];
- }
-
- /**
- * Drains the source stream into the "sink" client option.
- *
- * @param StreamInterface $source
- * @param StreamInterface $sink
- * @param string $contentLength Header specifying the amount of
- * data to read.
- *
- * @return StreamInterface
- * @throws \RuntimeException when the sink option is invalid.
- */
- private function drain(
- StreamInterface $source,
- StreamInterface $sink,
- $contentLength
- ) {
- // If a content-length header is provided, then stop reading once
- // that number of bytes has been read. This can prevent infinitely
- // reading from a stream when dealing with servers that do not honor
- // Connection: Close headers.
- Psr7\copy_to_stream(
- $source,
- $sink,
- (strlen($contentLength) > 0 && (int) $contentLength > 0) ? (int) $contentLength : -1
- );
-
- $sink->seek(0);
- $source->close();
-
- return $sink;
- }
-
- /**
- * Create a resource and check to ensure it was created successfully
- *
- * @param callable $callback Callable that returns stream resource
- *
- * @return resource
- * @throws \RuntimeException on error
- */
- private function createResource(callable $callback)
- {
- $errors = null;
- set_error_handler(function ($_, $msg, $file, $line) use (&$errors) {
- $errors[] = [
- 'message' => $msg,
- 'file' => $file,
- 'line' => $line
- ];
- return true;
- });
-
- $resource = $callback();
- restore_error_handler();
-
- if (!$resource) {
- $message = 'Error creating resource: ';
- foreach ($errors as $err) {
- foreach ($err as $key => $value) {
- $message .= "[$key] $value" . PHP_EOL;
- }
- }
- throw new \RuntimeException(trim($message));
- }
-
- return $resource;
- }
-
- private function createStream(RequestInterface $request, array $options)
- {
- static $methods;
- if (!$methods) {
- $methods = array_flip(get_class_methods(__CLASS__));
- }
-
- // HTTP/1.1 streams using the PHP stream wrapper require a
- // Connection: close header
- if ($request->getProtocolVersion() == '1.1'
- && !$request->hasHeader('Connection')
- ) {
- $request = $request->withHeader('Connection', 'close');
- }
-
- // Ensure SSL is verified by default
- if (!isset($options['verify'])) {
- $options['verify'] = true;
- }
-
- $params = [];
- $context = $this->getDefaultContext($request);
-
- if (isset($options['on_headers']) && !is_callable($options['on_headers'])) {
- throw new \InvalidArgumentException('on_headers must be callable');
- }
-
- if (!empty($options)) {
- foreach ($options as $key => $value) {
- $method = "add_{$key}";
- if (isset($methods[$method])) {
- $this->{$method}($request, $context, $value, $params);
- }
- }
- }
-
- if (isset($options['stream_context'])) {
- if (!is_array($options['stream_context'])) {
- throw new \InvalidArgumentException('stream_context must be an array');
- }
- $context = array_replace_recursive(
- $context,
- $options['stream_context']
- );
- }
-
- // Microsoft NTLM authentication only supported with curl handler
- if (isset($options['auth'])
- && is_array($options['auth'])
- && isset($options['auth'][2])
- && 'ntlm' == $options['auth'][2]
- ) {
- throw new \InvalidArgumentException('Microsoft NTLM authentication only supported with curl handler');
- }
-
- $uri = $this->resolveHost($request, $options);
-
- $context = $this->createResource(
- function () use ($context, $params) {
- return stream_context_create($context, $params);
- }
- );
-
- return $this->createResource(
- function () use ($uri, &$http_response_header, $context, $options) {
- $resource = fopen((string) $uri, 'r', null, $context);
- $this->lastHeaders = $http_response_header;
-
- if (isset($options['read_timeout'])) {
- $readTimeout = $options['read_timeout'];
- $sec = (int) $readTimeout;
- $usec = ($readTimeout - $sec) * 100000;
- stream_set_timeout($resource, $sec, $usec);
- }
-
- return $resource;
- }
- );
- }
-
- private function resolveHost(RequestInterface $request, array $options)
- {
- $uri = $request->getUri();
-
- if (isset($options['force_ip_resolve']) && !filter_var($uri->getHost(), FILTER_VALIDATE_IP)) {
- if ('v4' === $options['force_ip_resolve']) {
- $records = dns_get_record($uri->getHost(), DNS_A);
- if (!isset($records[0]['ip'])) {
- throw new ConnectException(
- sprintf(
- "Could not resolve IPv4 address for host '%s'",
- $uri->getHost()
- ),
- $request
- );
- }
- $uri = $uri->withHost($records[0]['ip']);
- } elseif ('v6' === $options['force_ip_resolve']) {
- $records = dns_get_record($uri->getHost(), DNS_AAAA);
- if (!isset($records[0]['ipv6'])) {
- throw new ConnectException(
- sprintf(
- "Could not resolve IPv6 address for host '%s'",
- $uri->getHost()
- ),
- $request
- );
- }
- $uri = $uri->withHost('[' . $records[0]['ipv6'] . ']');
- }
- }
-
- return $uri;
- }
-
- private function getDefaultContext(RequestInterface $request)
- {
- $headers = '';
- foreach ($request->getHeaders() as $name => $value) {
- foreach ($value as $val) {
- $headers .= "$name: $val\r\n";
- }
- }
-
- $context = [
- 'http' => [
- 'method' => $request->getMethod(),
- 'header' => $headers,
- 'protocol_version' => $request->getProtocolVersion(),
- 'ignore_errors' => true,
- 'follow_location' => 0,
- ],
- ];
-
- $body = (string) $request->getBody();
-
- if (!empty($body)) {
- $context['http']['content'] = $body;
- // Prevent the HTTP handler from adding a Content-Type header.
- if (!$request->hasHeader('Content-Type')) {
- $context['http']['header'] .= "Content-Type:\r\n";
- }
- }
-
- $context['http']['header'] = rtrim($context['http']['header']);
-
- return $context;
- }
-
- private function add_proxy(RequestInterface $request, &$options, $value, &$params)
- {
- if (!is_array($value)) {
- $options['http']['proxy'] = $value;
- } else {
- $scheme = $request->getUri()->getScheme();
- if (isset($value[$scheme])) {
- if (!isset($value['no'])
- || !\GuzzleHttp\is_host_in_noproxy(
- $request->getUri()->getHost(),
- $value['no']
- )
- ) {
- $options['http']['proxy'] = $value[$scheme];
- }
- }
- }
- }
-
- private function add_timeout(RequestInterface $request, &$options, $value, &$params)
- {
- if ($value > 0) {
- $options['http']['timeout'] = $value;
- }
- }
-
- private function add_verify(RequestInterface $request, &$options, $value, &$params)
- {
- if ($value === true) {
- // PHP 5.6 or greater will find the system cert by default. When
- // < 5.6, use the Guzzle bundled cacert.
- if (PHP_VERSION_ID < 50600) {
- $options['ssl']['cafile'] = \GuzzleHttp\default_ca_bundle();
- }
- } elseif (is_string($value)) {
- $options['ssl']['cafile'] = $value;
- if (!file_exists($value)) {
- throw new \RuntimeException("SSL CA bundle not found: $value");
- }
- } elseif ($value === false) {
- $options['ssl']['verify_peer'] = false;
- $options['ssl']['verify_peer_name'] = false;
- return;
- } else {
- throw new \InvalidArgumentException('Invalid verify request option');
- }
-
- $options['ssl']['verify_peer'] = true;
- $options['ssl']['verify_peer_name'] = true;
- $options['ssl']['allow_self_signed'] = false;
- }
-
- private function add_cert(RequestInterface $request, &$options, $value, &$params)
- {
- if (is_array($value)) {
- $options['ssl']['passphrase'] = $value[1];
- $value = $value[0];
- }
-
- if (!file_exists($value)) {
- throw new \RuntimeException("SSL certificate not found: {$value}");
- }
-
- $options['ssl']['local_cert'] = $value;
- }
-
- private function add_progress(RequestInterface $request, &$options, $value, &$params)
- {
- $this->addNotification(
- $params,
- function ($code, $a, $b, $c, $transferred, $total) use ($value) {
- if ($code == STREAM_NOTIFY_PROGRESS) {
- $value($total, $transferred, null, null);
- }
- }
- );
- }
-
- private function add_debug(RequestInterface $request, &$options, $value, &$params)
- {
- if ($value === false) {
- return;
- }
-
- static $map = [
- STREAM_NOTIFY_CONNECT => 'CONNECT',
- STREAM_NOTIFY_AUTH_REQUIRED => 'AUTH_REQUIRED',
- STREAM_NOTIFY_AUTH_RESULT => 'AUTH_RESULT',
- STREAM_NOTIFY_MIME_TYPE_IS => 'MIME_TYPE_IS',
- STREAM_NOTIFY_FILE_SIZE_IS => 'FILE_SIZE_IS',
- STREAM_NOTIFY_REDIRECTED => 'REDIRECTED',
- STREAM_NOTIFY_PROGRESS => 'PROGRESS',
- STREAM_NOTIFY_FAILURE => 'FAILURE',
- STREAM_NOTIFY_COMPLETED => 'COMPLETED',
- STREAM_NOTIFY_RESOLVE => 'RESOLVE',
- ];
- static $args = ['severity', 'message', 'message_code',
- 'bytes_transferred', 'bytes_max'];
-
- $value = \GuzzleHttp\debug_resource($value);
- $ident = $request->getMethod() . ' ' . $request->getUri()->withFragment('');
- $this->addNotification(
- $params,
- function () use ($ident, $value, $map, $args) {
- $passed = func_get_args();
- $code = array_shift($passed);
- fprintf($value, '<%s> [%s] ', $ident, $map[$code]);
- foreach (array_filter($passed) as $i => $v) {
- fwrite($value, $args[$i] . ': "' . $v . '" ');
- }
- fwrite($value, "\n");
- }
- );
- }
-
- private function addNotification(array &$params, callable $notify)
- {
- // Wrap the existing function if needed.
- if (!isset($params['notification'])) {
- $params['notification'] = $notify;
- } else {
- $params['notification'] = $this->callArray([
- $params['notification'],
- $notify
- ]);
- }
- }
-
- private function callArray(array $functions)
- {
- return function () use ($functions) {
- $args = func_get_args();
- foreach ($functions as $fn) {
- call_user_func_array($fn, $args);
- }
- };
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/HandlerStack.php b/vendor/guzzlehttp/guzzle/src/HandlerStack.php
deleted file mode 100644
index 6a49cc06..00000000
--- a/vendor/guzzlehttp/guzzle/src/HandlerStack.php
+++ /dev/null
@@ -1,277 +0,0 @@
-push(Middleware::httpErrors(), 'http_errors');
- $stack->push(Middleware::redirect(), 'allow_redirects');
- $stack->push(Middleware::cookies(), 'cookies');
- $stack->push(Middleware::prepareBody(), 'prepare_body');
-
- return $stack;
- }
-
- /**
- * @param callable $handler Underlying HTTP handler.
- */
- public function __construct(callable $handler = null)
- {
- $this->handler = $handler;
- }
-
- /**
- * Invokes the handler stack as a composed handler
- *
- * @param RequestInterface $request
- * @param array $options
- *
- * @return ResponseInterface|PromiseInterface
- */
- public function __invoke(RequestInterface $request, array $options)
- {
- $handler = $this->resolve();
-
- return $handler($request, $options);
- }
-
- /**
- * Dumps a string representation of the stack.
- *
- * @return string
- */
- public function __toString()
- {
- $depth = 0;
- $stack = [];
- if ($this->handler) {
- $stack[] = "0) Handler: " . $this->debugCallable($this->handler);
- }
-
- $result = '';
- foreach (array_reverse($this->stack) as $tuple) {
- $depth++;
- $str = "{$depth}) Name: '{$tuple[1]}', ";
- $str .= "Function: " . $this->debugCallable($tuple[0]);
- $result = "> {$str}\n{$result}";
- $stack[] = $str;
- }
-
- foreach (array_keys($stack) as $k) {
- $result .= "< {$stack[$k]}\n";
- }
-
- return $result;
- }
-
- /**
- * Set the HTTP handler that actually returns a promise.
- *
- * @param callable $handler Accepts a request and array of options and
- * returns a Promise.
- */
- public function setHandler(callable $handler)
- {
- $this->handler = $handler;
- $this->cached = null;
- }
-
- /**
- * Returns true if the builder has a handler.
- *
- * @return bool
- */
- public function hasHandler()
- {
- return (bool) $this->handler;
- }
-
- /**
- * Unshift a middleware to the bottom of the stack.
- *
- * @param callable $middleware Middleware function
- * @param string $name Name to register for this middleware.
- */
- public function unshift(callable $middleware, $name = null)
- {
- array_unshift($this->stack, [$middleware, $name]);
- $this->cached = null;
- }
-
- /**
- * Push a middleware to the top of the stack.
- *
- * @param callable $middleware Middleware function
- * @param string $name Name to register for this middleware.
- */
- public function push(callable $middleware, $name = '')
- {
- $this->stack[] = [$middleware, $name];
- $this->cached = null;
- }
-
- /**
- * Add a middleware before another middleware by name.
- *
- * @param string $findName Middleware to find
- * @param callable $middleware Middleware function
- * @param string $withName Name to register for this middleware.
- */
- public function before($findName, callable $middleware, $withName = '')
- {
- $this->splice($findName, $withName, $middleware, true);
- }
-
- /**
- * Add a middleware after another middleware by name.
- *
- * @param string $findName Middleware to find
- * @param callable $middleware Middleware function
- * @param string $withName Name to register for this middleware.
- */
- public function after($findName, callable $middleware, $withName = '')
- {
- $this->splice($findName, $withName, $middleware, false);
- }
-
- /**
- * Remove a middleware by instance or name from the stack.
- *
- * @param callable|string $remove Middleware to remove by instance or name.
- */
- public function remove($remove)
- {
- $this->cached = null;
- $idx = is_callable($remove) ? 0 : 1;
- $this->stack = array_values(array_filter(
- $this->stack,
- function ($tuple) use ($idx, $remove) {
- return $tuple[$idx] !== $remove;
- }
- ));
- }
-
- /**
- * Compose the middleware and handler into a single callable function.
- *
- * @return callable
- */
- public function resolve()
- {
- if (!$this->cached) {
- if (!($prev = $this->handler)) {
- throw new \LogicException('No handler has been specified');
- }
-
- foreach (array_reverse($this->stack) as $fn) {
- $prev = $fn[0]($prev);
- }
-
- $this->cached = $prev;
- }
-
- return $this->cached;
- }
-
- /**
- * @param string $name
- * @return int
- */
- private function findByName($name)
- {
- foreach ($this->stack as $k => $v) {
- if ($v[1] === $name) {
- return $k;
- }
- }
-
- throw new \InvalidArgumentException("Middleware not found: $name");
- }
-
- /**
- * Splices a function into the middleware list at a specific position.
- *
- * @param string $findName
- * @param string $withName
- * @param callable $middleware
- * @param bool $before
- */
- private function splice($findName, $withName, callable $middleware, $before)
- {
- $this->cached = null;
- $idx = $this->findByName($findName);
- $tuple = [$middleware, $withName];
-
- if ($before) {
- if ($idx === 0) {
- array_unshift($this->stack, $tuple);
- } else {
- $replacement = [$tuple, $this->stack[$idx]];
- array_splice($this->stack, $idx, 1, $replacement);
- }
- } elseif ($idx === count($this->stack) - 1) {
- $this->stack[] = $tuple;
- } else {
- $replacement = [$this->stack[$idx], $tuple];
- array_splice($this->stack, $idx, 1, $replacement);
- }
- }
-
- /**
- * Provides a debug string for a given callable.
- *
- * @param array|callable $fn Function to write as a string.
- *
- * @return string
- */
- private function debugCallable($fn)
- {
- if (is_string($fn)) {
- return "callable({$fn})";
- }
-
- if (is_array($fn)) {
- return is_string($fn[0])
- ? "callable({$fn[0]}::{$fn[1]})"
- : "callable(['" . get_class($fn[0]) . "', '{$fn[1]}'])";
- }
-
- return 'callable(' . spl_object_hash($fn) . ')';
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/MessageFormatter.php b/vendor/guzzlehttp/guzzle/src/MessageFormatter.php
deleted file mode 100644
index dc36bb52..00000000
--- a/vendor/guzzlehttp/guzzle/src/MessageFormatter.php
+++ /dev/null
@@ -1,185 +0,0 @@
->>>>>>>\n{request}\n<<<<<<<<\n{response}\n--------\n{error}";
- const SHORT = '[{ts}] "{method} {target} HTTP/{version}" {code}';
-
- /** @var string Template used to format log messages */
- private $template;
-
- /**
- * @param string $template Log message template
- */
- public function __construct($template = self::CLF)
- {
- $this->template = $template ?: self::CLF;
- }
-
- /**
- * Returns a formatted message string.
- *
- * @param RequestInterface $request Request that was sent
- * @param ResponseInterface $response Response that was received
- * @param \Exception $error Exception that was received
- *
- * @return string
- */
- public function format(
- RequestInterface $request,
- ResponseInterface $response = null,
- \Exception $error = null
- ) {
- $cache = [];
-
- return preg_replace_callback(
- '/{\s*([A-Za-z_\-\.0-9]+)\s*}/',
- function (array $matches) use ($request, $response, $error, &$cache) {
- if (isset($cache[$matches[1]])) {
- return $cache[$matches[1]];
- }
-
- $result = '';
- switch ($matches[1]) {
- case 'request':
- $result = Psr7\str($request);
- break;
- case 'response':
- $result = $response ? Psr7\str($response) : '';
- break;
- case 'req_headers':
- $result = trim($request->getMethod()
- . ' ' . $request->getRequestTarget())
- . ' HTTP/' . $request->getProtocolVersion() . "\r\n"
- . $this->headers($request);
- break;
- case 'res_headers':
- $result = $response ?
- sprintf(
- 'HTTP/%s %d %s',
- $response->getProtocolVersion(),
- $response->getStatusCode(),
- $response->getReasonPhrase()
- ) . "\r\n" . $this->headers($response)
- : 'NULL';
- break;
- case 'req_body':
- $result = $request->getBody();
- break;
- case 'res_body':
- $result = $response ? $response->getBody() : 'NULL';
- break;
- case 'ts':
- case 'date_iso_8601':
- $result = gmdate('c');
- break;
- case 'date_common_log':
- $result = date('d/M/Y:H:i:s O');
- break;
- case 'method':
- $result = $request->getMethod();
- break;
- case 'version':
- $result = $request->getProtocolVersion();
- break;
- case 'uri':
- case 'url':
- $result = $request->getUri();
- break;
- case 'target':
- $result = $request->getRequestTarget();
- break;
- case 'req_version':
- $result = $request->getProtocolVersion();
- break;
- case 'res_version':
- $result = $response
- ? $response->getProtocolVersion()
- : 'NULL';
- break;
- case 'host':
- $result = $request->getHeaderLine('Host');
- break;
- case 'hostname':
- $result = gethostname();
- break;
- case 'code':
- $result = $response ? $response->getStatusCode() : 'NULL';
- break;
- case 'phrase':
- $result = $response ? $response->getReasonPhrase() : 'NULL';
- break;
- case 'error':
- $result = $error ? $error->getMessage() : 'NULL';
- break;
- default:
- // handle prefixed dynamic headers
- if (strpos($matches[1], 'req_header_') === 0) {
- $result = $request->getHeaderLine(substr($matches[1], 11));
- } elseif (strpos($matches[1], 'res_header_') === 0) {
- $result = $response
- ? $response->getHeaderLine(substr($matches[1], 11))
- : 'NULL';
- }
- }
-
- $cache[$matches[1]] = $result;
- return $result;
- },
- $this->template
- );
- }
-
- /**
- * Get headers from message as string
- *
- * @return string
- */
- private function headers(MessageInterface $message)
- {
- $result = '';
- foreach ($message->getHeaders() as $name => $values) {
- $result .= $name . ': ' . implode(', ', $values) . "\r\n";
- }
-
- return trim($result);
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Middleware.php b/vendor/guzzlehttp/guzzle/src/Middleware.php
deleted file mode 100644
index bffc1974..00000000
--- a/vendor/guzzlehttp/guzzle/src/Middleware.php
+++ /dev/null
@@ -1,254 +0,0 @@
-withCookieHeader($request);
- return $handler($request, $options)
- ->then(
- function ($response) use ($cookieJar, $request) {
- $cookieJar->extractCookies($request, $response);
- return $response;
- }
- );
- };
- };
- }
-
- /**
- * Middleware that throws exceptions for 4xx or 5xx responses when the
- * "http_error" request option is set to true.
- *
- * @return callable Returns a function that accepts the next handler.
- */
- public static function httpErrors()
- {
- return function (callable $handler) {
- return function ($request, array $options) use ($handler) {
- if (empty($options['http_errors'])) {
- return $handler($request, $options);
- }
- return $handler($request, $options)->then(
- function (ResponseInterface $response) use ($request) {
- $code = $response->getStatusCode();
- if ($code < 400) {
- return $response;
- }
- throw RequestException::create($request, $response);
- }
- );
- };
- };
- }
-
- /**
- * Middleware that pushes history data to an ArrayAccess container.
- *
- * @param array|\ArrayAccess $container Container to hold the history (by reference).
- *
- * @return callable Returns a function that accepts the next handler.
- * @throws \InvalidArgumentException if container is not an array or ArrayAccess.
- */
- public static function history(&$container)
- {
- if (!is_array($container) && !$container instanceof \ArrayAccess) {
- throw new \InvalidArgumentException('history container must be an array or object implementing ArrayAccess');
- }
-
- return function (callable $handler) use (&$container) {
- return function ($request, array $options) use ($handler, &$container) {
- return $handler($request, $options)->then(
- function ($value) use ($request, &$container, $options) {
- $container[] = [
- 'request' => $request,
- 'response' => $value,
- 'error' => null,
- 'options' => $options
- ];
- return $value;
- },
- function ($reason) use ($request, &$container, $options) {
- $container[] = [
- 'request' => $request,
- 'response' => null,
- 'error' => $reason,
- 'options' => $options
- ];
- return \GuzzleHttp\Promise\rejection_for($reason);
- }
- );
- };
- };
- }
-
- /**
- * Middleware that invokes a callback before and after sending a request.
- *
- * The provided listener cannot modify or alter the response. It simply
- * "taps" into the chain to be notified before returning the promise. The
- * before listener accepts a request and options array, and the after
- * listener accepts a request, options array, and response promise.
- *
- * @param callable $before Function to invoke before forwarding the request.
- * @param callable $after Function invoked after forwarding.
- *
- * @return callable Returns a function that accepts the next handler.
- */
- public static function tap(callable $before = null, callable $after = null)
- {
- return function (callable $handler) use ($before, $after) {
- return function ($request, array $options) use ($handler, $before, $after) {
- if ($before) {
- $before($request, $options);
- }
- $response = $handler($request, $options);
- if ($after) {
- $after($request, $options, $response);
- }
- return $response;
- };
- };
- }
-
- /**
- * Middleware that handles request redirects.
- *
- * @return callable Returns a function that accepts the next handler.
- */
- public static function redirect()
- {
- return function (callable $handler) {
- return new RedirectMiddleware($handler);
- };
- }
-
- /**
- * Middleware that retries requests based on the boolean result of
- * invoking the provided "decider" function.
- *
- * If no delay function is provided, a simple implementation of exponential
- * backoff will be utilized.
- *
- * @param callable $decider Function that accepts the number of retries,
- * a request, [response], and [exception] and
- * returns true if the request is to be retried.
- * @param callable $delay Function that accepts the number of retries and
- * returns the number of milliseconds to delay.
- *
- * @return callable Returns a function that accepts the next handler.
- */
- public static function retry(callable $decider, callable $delay = null)
- {
- return function (callable $handler) use ($decider, $delay) {
- return new RetryMiddleware($decider, $handler, $delay);
- };
- }
-
- /**
- * Middleware that logs requests, responses, and errors using a message
- * formatter.
- *
- * @param LoggerInterface $logger Logs messages.
- * @param MessageFormatter $formatter Formatter used to create message strings.
- * @param string $logLevel Level at which to log requests.
- *
- * @return callable Returns a function that accepts the next handler.
- */
- public static function log(LoggerInterface $logger, MessageFormatter $formatter, $logLevel = 'info' /* \Psr\Log\LogLevel::INFO */)
- {
- return function (callable $handler) use ($logger, $formatter, $logLevel) {
- return function ($request, array $options) use ($handler, $logger, $formatter, $logLevel) {
- return $handler($request, $options)->then(
- function ($response) use ($logger, $request, $formatter, $logLevel) {
- $message = $formatter->format($request, $response);
- $logger->log($logLevel, $message);
- return $response;
- },
- function ($reason) use ($logger, $request, $formatter) {
- $response = $reason instanceof RequestException
- ? $reason->getResponse()
- : null;
- $message = $formatter->format($request, $response, $reason);
- $logger->notice($message);
- return \GuzzleHttp\Promise\rejection_for($reason);
- }
- );
- };
- };
- }
-
- /**
- * This middleware adds a default content-type if possible, a default
- * content-length or transfer-encoding header, and the expect header.
- *
- * @return callable
- */
- public static function prepareBody()
- {
- return function (callable $handler) {
- return new PrepareBodyMiddleware($handler);
- };
- }
-
- /**
- * Middleware that applies a map function to the request before passing to
- * the next handler.
- *
- * @param callable $fn Function that accepts a RequestInterface and returns
- * a RequestInterface.
- * @return callable
- */
- public static function mapRequest(callable $fn)
- {
- return function (callable $handler) use ($fn) {
- return function ($request, array $options) use ($handler, $fn) {
- return $handler($fn($request), $options);
- };
- };
- }
-
- /**
- * Middleware that applies a map function to the resolved promise's
- * response.
- *
- * @param callable $fn Function that accepts a ResponseInterface and
- * returns a ResponseInterface.
- * @return callable
- */
- public static function mapResponse(callable $fn)
- {
- return function (callable $handler) use ($fn) {
- return function ($request, array $options) use ($handler, $fn) {
- return $handler($request, $options)->then($fn);
- };
- };
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Pool.php b/vendor/guzzlehttp/guzzle/src/Pool.php
deleted file mode 100644
index 5838db4f..00000000
--- a/vendor/guzzlehttp/guzzle/src/Pool.php
+++ /dev/null
@@ -1,134 +0,0 @@
- $rfn) {
- if ($rfn instanceof RequestInterface) {
- yield $key => $client->sendAsync($rfn, $opts);
- } elseif (is_callable($rfn)) {
- yield $key => $rfn($opts);
- } else {
- throw new \InvalidArgumentException('Each value yielded by '
- . 'the iterator must be a Psr7\Http\Message\RequestInterface '
- . 'or a callable that returns a promise that fulfills '
- . 'with a Psr7\Message\Http\ResponseInterface object.');
- }
- }
- };
-
- $this->each = new EachPromise($requests(), $config);
- }
-
- /**
- * Get promise
- *
- * @return PromiseInterface
- */
- public function promise()
- {
- return $this->each->promise();
- }
-
- /**
- * Sends multiple requests concurrently and returns an array of responses
- * and exceptions that uses the same ordering as the provided requests.
- *
- * IMPORTANT: This method keeps every request and response in memory, and
- * as such, is NOT recommended when sending a large number or an
- * indeterminate number of requests concurrently.
- *
- * @param ClientInterface $client Client used to send the requests
- * @param array|\Iterator $requests Requests to send concurrently.
- * @param array $options Passes through the options available in
- * {@see GuzzleHttp\Pool::__construct}
- *
- * @return array Returns an array containing the response or an exception
- * in the same order that the requests were sent.
- * @throws \InvalidArgumentException if the event format is incorrect.
- */
- public static function batch(
- ClientInterface $client,
- $requests,
- array $options = []
- ) {
- $res = [];
- self::cmpCallback($options, 'fulfilled', $res);
- self::cmpCallback($options, 'rejected', $res);
- $pool = new static($client, $requests, $options);
- $pool->promise()->wait();
- ksort($res);
-
- return $res;
- }
-
- /**
- * Execute callback(s)
- *
- * @return void
- */
- private static function cmpCallback(array &$options, $name, array &$results)
- {
- if (!isset($options[$name])) {
- $options[$name] = function ($v, $k) use (&$results) {
- $results[$k] = $v;
- };
- } else {
- $currentFn = $options[$name];
- $options[$name] = function ($v, $k) use (&$results, $currentFn) {
- $currentFn($v, $k);
- $results[$k] = $v;
- };
- }
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php b/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php
deleted file mode 100644
index 568a1e90..00000000
--- a/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php
+++ /dev/null
@@ -1,111 +0,0 @@
-nextHandler = $nextHandler;
- }
-
- /**
- * @param RequestInterface $request
- * @param array $options
- *
- * @return PromiseInterface
- */
- public function __invoke(RequestInterface $request, array $options)
- {
- $fn = $this->nextHandler;
-
- // Don't do anything if the request has no body.
- if ($request->getBody()->getSize() === 0) {
- return $fn($request, $options);
- }
-
- $modify = [];
-
- // Add a default content-type if possible.
- if (!$request->hasHeader('Content-Type')) {
- if ($uri = $request->getBody()->getMetadata('uri')) {
- if ($type = Psr7\mimetype_from_filename($uri)) {
- $modify['set_headers']['Content-Type'] = $type;
- }
- }
- }
-
- // Add a default content-length or transfer-encoding header.
- if (!$request->hasHeader('Content-Length')
- && !$request->hasHeader('Transfer-Encoding')
- ) {
- $size = $request->getBody()->getSize();
- if ($size !== null) {
- $modify['set_headers']['Content-Length'] = $size;
- } else {
- $modify['set_headers']['Transfer-Encoding'] = 'chunked';
- }
- }
-
- // Add the expect header if needed.
- $this->addExpectHeader($request, $options, $modify);
-
- return $fn(Psr7\modify_request($request, $modify), $options);
- }
-
- /**
- * Add expect header
- *
- * @return void
- */
- private function addExpectHeader(
- RequestInterface $request,
- array $options,
- array &$modify
- ) {
- // Determine if the Expect header should be used
- if ($request->hasHeader('Expect')) {
- return;
- }
-
- $expect = isset($options['expect']) ? $options['expect'] : null;
-
- // Return if disabled or if you're not using HTTP/1.1 or HTTP/2.0
- if ($expect === false || $request->getProtocolVersion() < 1.1) {
- return;
- }
-
- // The expect header is unconditionally enabled
- if ($expect === true) {
- $modify['set_headers']['Expect'] = '100-Continue';
- return;
- }
-
- // By default, send the expect header when the payload is > 1mb
- if ($expect === null) {
- $expect = 1048576;
- }
-
- // Always add if the body cannot be rewound, the size cannot be
- // determined, or the size is greater than the cutoff threshold
- $body = $request->getBody();
- $size = $body->getSize();
-
- if ($size === null || $size >= (int) $expect || !$body->isSeekable()) {
- $modify['set_headers']['Expect'] = '100-Continue';
- }
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php b/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php
deleted file mode 100644
index e4644b7a..00000000
--- a/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php
+++ /dev/null
@@ -1,255 +0,0 @@
- 5,
- 'protocols' => ['http', 'https'],
- 'strict' => false,
- 'referer' => false,
- 'track_redirects' => false,
- ];
-
- /** @var callable */
- private $nextHandler;
-
- /**
- * @param callable $nextHandler Next handler to invoke.
- */
- public function __construct(callable $nextHandler)
- {
- $this->nextHandler = $nextHandler;
- }
-
- /**
- * @param RequestInterface $request
- * @param array $options
- *
- * @return PromiseInterface
- */
- public function __invoke(RequestInterface $request, array $options)
- {
- $fn = $this->nextHandler;
-
- if (empty($options['allow_redirects'])) {
- return $fn($request, $options);
- }
-
- if ($options['allow_redirects'] === true) {
- $options['allow_redirects'] = self::$defaultSettings;
- } elseif (!is_array($options['allow_redirects'])) {
- throw new \InvalidArgumentException('allow_redirects must be true, false, or array');
- } else {
- // Merge the default settings with the provided settings
- $options['allow_redirects'] += self::$defaultSettings;
- }
-
- if (empty($options['allow_redirects']['max'])) {
- return $fn($request, $options);
- }
-
- return $fn($request, $options)
- ->then(function (ResponseInterface $response) use ($request, $options) {
- return $this->checkRedirect($request, $options, $response);
- });
- }
-
- /**
- * @param RequestInterface $request
- * @param array $options
- * @param ResponseInterface $response
- *
- * @return ResponseInterface|PromiseInterface
- */
- public function checkRedirect(
- RequestInterface $request,
- array $options,
- ResponseInterface $response
- ) {
- if (substr($response->getStatusCode(), 0, 1) != '3'
- || !$response->hasHeader('Location')
- ) {
- return $response;
- }
-
- $this->guardMax($request, $options);
- $nextRequest = $this->modifyRequest($request, $options, $response);
-
- if (isset($options['allow_redirects']['on_redirect'])) {
- call_user_func(
- $options['allow_redirects']['on_redirect'],
- $request,
- $response,
- $nextRequest->getUri()
- );
- }
-
- /** @var PromiseInterface|ResponseInterface $promise */
- $promise = $this($nextRequest, $options);
-
- // Add headers to be able to track history of redirects.
- if (!empty($options['allow_redirects']['track_redirects'])) {
- return $this->withTracking(
- $promise,
- (string) $nextRequest->getUri(),
- $response->getStatusCode()
- );
- }
-
- return $promise;
- }
-
- /**
- * Enable tracking on promise.
- *
- * @return PromiseInterface
- */
- private function withTracking(PromiseInterface $promise, $uri, $statusCode)
- {
- return $promise->then(
- function (ResponseInterface $response) use ($uri, $statusCode) {
- // Note that we are pushing to the front of the list as this
- // would be an earlier response than what is currently present
- // in the history header.
- $historyHeader = $response->getHeader(self::HISTORY_HEADER);
- $statusHeader = $response->getHeader(self::STATUS_HISTORY_HEADER);
- array_unshift($historyHeader, $uri);
- array_unshift($statusHeader, $statusCode);
- return $response->withHeader(self::HISTORY_HEADER, $historyHeader)
- ->withHeader(self::STATUS_HISTORY_HEADER, $statusHeader);
- }
- );
- }
-
- /**
- * Check for too many redirects
- *
- * @return void
- *
- * @throws TooManyRedirectsException Too many redirects.
- */
- private function guardMax(RequestInterface $request, array &$options)
- {
- $current = isset($options['__redirect_count'])
- ? $options['__redirect_count']
- : 0;
- $options['__redirect_count'] = $current + 1;
- $max = $options['allow_redirects']['max'];
-
- if ($options['__redirect_count'] > $max) {
- throw new TooManyRedirectsException(
- "Will not follow more than {$max} redirects",
- $request
- );
- }
- }
-
- /**
- * @param RequestInterface $request
- * @param array $options
- * @param ResponseInterface $response
- *
- * @return RequestInterface
- */
- public function modifyRequest(
- RequestInterface $request,
- array $options,
- ResponseInterface $response
- ) {
- // Request modifications to apply.
- $modify = [];
- $protocols = $options['allow_redirects']['protocols'];
-
- // Use a GET request if this is an entity enclosing request and we are
- // not forcing RFC compliance, but rather emulating what all browsers
- // would do.
- $statusCode = $response->getStatusCode();
- if ($statusCode == 303 ||
- ($statusCode <= 302 && !$options['allow_redirects']['strict'])
- ) {
- $modify['method'] = 'GET';
- $modify['body'] = '';
- }
-
- $uri = $this->redirectUri($request, $response, $protocols);
- if (isset($options['idn_conversion']) && ($options['idn_conversion'] !== false)) {
- $idnOptions = ($options['idn_conversion'] === true) ? IDNA_DEFAULT : $options['idn_conversion'];
- $uri = Utils::idnUriConvert($uri, $idnOptions);
- }
-
- $modify['uri'] = $uri;
- Psr7\rewind_body($request);
-
- // Add the Referer header if it is told to do so and only
- // add the header if we are not redirecting from https to http.
- if ($options['allow_redirects']['referer']
- && $modify['uri']->getScheme() === $request->getUri()->getScheme()
- ) {
- $uri = $request->getUri()->withUserInfo('');
- $modify['set_headers']['Referer'] = (string) $uri;
- } else {
- $modify['remove_headers'][] = 'Referer';
- }
-
- // Remove Authorization header if host is different.
- if ($request->getUri()->getHost() !== $modify['uri']->getHost()) {
- $modify['remove_headers'][] = 'Authorization';
- }
-
- return Psr7\modify_request($request, $modify);
- }
-
- /**
- * Set the appropriate URL on the request based on the location header
- *
- * @param RequestInterface $request
- * @param ResponseInterface $response
- * @param array $protocols
- *
- * @return UriInterface
- */
- private function redirectUri(
- RequestInterface $request,
- ResponseInterface $response,
- array $protocols
- ) {
- $location = Psr7\UriResolver::resolve(
- $request->getUri(),
- new Psr7\Uri($response->getHeaderLine('Location'))
- );
-
- // Ensure that the redirect URI is allowed based on the protocols.
- if (!in_array($location->getScheme(), $protocols)) {
- throw new BadResponseException(
- sprintf(
- 'Redirect URI, %s, does not use one of the allowed redirect protocols: %s',
- $location,
- implode(', ', $protocols)
- ),
- $request,
- $response
- );
- }
-
- return $location;
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/RequestOptions.php b/vendor/guzzlehttp/guzzle/src/RequestOptions.php
deleted file mode 100644
index 355f658f..00000000
--- a/vendor/guzzlehttp/guzzle/src/RequestOptions.php
+++ /dev/null
@@ -1,263 +0,0 @@
-decider = $decider;
- $this->nextHandler = $nextHandler;
- $this->delay = $delay ?: __CLASS__ . '::exponentialDelay';
- }
-
- /**
- * Default exponential backoff delay function.
- *
- * @param int $retries
- *
- * @return int milliseconds.
- */
- public static function exponentialDelay($retries)
- {
- return (int) pow(2, $retries - 1) * 1000;
- }
-
- /**
- * @param RequestInterface $request
- * @param array $options
- *
- * @return PromiseInterface
- */
- public function __invoke(RequestInterface $request, array $options)
- {
- if (!isset($options['retries'])) {
- $options['retries'] = 0;
- }
-
- $fn = $this->nextHandler;
- return $fn($request, $options)
- ->then(
- $this->onFulfilled($request, $options),
- $this->onRejected($request, $options)
- );
- }
-
- /**
- * Execute fulfilled closure
- *
- * @return mixed
- */
- private function onFulfilled(RequestInterface $req, array $options)
- {
- return function ($value) use ($req, $options) {
- if (!call_user_func(
- $this->decider,
- $options['retries'],
- $req,
- $value,
- null
- )) {
- return $value;
- }
- return $this->doRetry($req, $options, $value);
- };
- }
-
- /**
- * Execute rejected closure
- *
- * @return callable
- */
- private function onRejected(RequestInterface $req, array $options)
- {
- return function ($reason) use ($req, $options) {
- if (!call_user_func(
- $this->decider,
- $options['retries'],
- $req,
- null,
- $reason
- )) {
- return \GuzzleHttp\Promise\rejection_for($reason);
- }
- return $this->doRetry($req, $options);
- };
- }
-
- /**
- * @return self
- */
- private function doRetry(RequestInterface $request, array $options, ResponseInterface $response = null)
- {
- $options['delay'] = call_user_func($this->delay, ++$options['retries'], $response);
-
- return $this($request, $options);
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/TransferStats.php b/vendor/guzzlehttp/guzzle/src/TransferStats.php
deleted file mode 100644
index 87fb3c00..00000000
--- a/vendor/guzzlehttp/guzzle/src/TransferStats.php
+++ /dev/null
@@ -1,126 +0,0 @@
-request = $request;
- $this->response = $response;
- $this->transferTime = $transferTime;
- $this->handlerErrorData = $handlerErrorData;
- $this->handlerStats = $handlerStats;
- }
-
- /**
- * @return RequestInterface
- */
- public function getRequest()
- {
- return $this->request;
- }
-
- /**
- * Returns the response that was received (if any).
- *
- * @return ResponseInterface|null
- */
- public function getResponse()
- {
- return $this->response;
- }
-
- /**
- * Returns true if a response was received.
- *
- * @return bool
- */
- public function hasResponse()
- {
- return $this->response !== null;
- }
-
- /**
- * Gets handler specific error data.
- *
- * This might be an exception, a integer representing an error code, or
- * anything else. Relying on this value assumes that you know what handler
- * you are using.
- *
- * @return mixed
- */
- public function getHandlerErrorData()
- {
- return $this->handlerErrorData;
- }
-
- /**
- * Get the effective URI the request was sent to.
- *
- * @return UriInterface
- */
- public function getEffectiveUri()
- {
- return $this->request->getUri();
- }
-
- /**
- * Get the estimated time the request was being transferred by the handler.
- *
- * @return float|null Time in seconds.
- */
- public function getTransferTime()
- {
- return $this->transferTime;
- }
-
- /**
- * Gets an array of all of the handler specific transfer data.
- *
- * @return array
- */
- public function getHandlerStats()
- {
- return $this->handlerStats;
- }
-
- /**
- * Get a specific handler statistic from the handler by name.
- *
- * @param string $stat Handler specific transfer stat to retrieve.
- *
- * @return mixed|null
- */
- public function getHandlerStat($stat)
- {
- return isset($this->handlerStats[$stat])
- ? $this->handlerStats[$stat]
- : null;
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/UriTemplate.php b/vendor/guzzlehttp/guzzle/src/UriTemplate.php
deleted file mode 100644
index 96dcfd09..00000000
--- a/vendor/guzzlehttp/guzzle/src/UriTemplate.php
+++ /dev/null
@@ -1,237 +0,0 @@
- ['prefix' => '', 'joiner' => ',', 'query' => false],
- '+' => ['prefix' => '', 'joiner' => ',', 'query' => false],
- '#' => ['prefix' => '#', 'joiner' => ',', 'query' => false],
- '.' => ['prefix' => '.', 'joiner' => '.', 'query' => false],
- '/' => ['prefix' => '/', 'joiner' => '/', 'query' => false],
- ';' => ['prefix' => ';', 'joiner' => ';', 'query' => true],
- '?' => ['prefix' => '?', 'joiner' => '&', 'query' => true],
- '&' => ['prefix' => '&', 'joiner' => '&', 'query' => true]
- ];
-
- /** @var array Delimiters */
- private static $delims = [':', '/', '?', '#', '[', ']', '@', '!', '$',
- '&', '\'', '(', ')', '*', '+', ',', ';', '='];
-
- /** @var array Percent encoded delimiters */
- private static $delimsPct = ['%3A', '%2F', '%3F', '%23', '%5B', '%5D',
- '%40', '%21', '%24', '%26', '%27', '%28', '%29', '%2A', '%2B', '%2C',
- '%3B', '%3D'];
-
- public function expand($template, array $variables)
- {
- if (false === strpos($template, '{')) {
- return $template;
- }
-
- $this->template = $template;
- $this->variables = $variables;
-
- return preg_replace_callback(
- '/\{([^\}]+)\}/',
- [$this, 'expandMatch'],
- $this->template
- );
- }
-
- /**
- * Parse an expression into parts
- *
- * @param string $expression Expression to parse
- *
- * @return array Returns an associative array of parts
- */
- private function parseExpression($expression)
- {
- $result = [];
-
- if (isset(self::$operatorHash[$expression[0]])) {
- $result['operator'] = $expression[0];
- $expression = substr($expression, 1);
- } else {
- $result['operator'] = '';
- }
-
- foreach (explode(',', $expression) as $value) {
- $value = trim($value);
- $varspec = [];
- if ($colonPos = strpos($value, ':')) {
- $varspec['value'] = substr($value, 0, $colonPos);
- $varspec['modifier'] = ':';
- $varspec['position'] = (int) substr($value, $colonPos + 1);
- } elseif (substr($value, -1) === '*') {
- $varspec['modifier'] = '*';
- $varspec['value'] = substr($value, 0, -1);
- } else {
- $varspec['value'] = (string) $value;
- $varspec['modifier'] = '';
- }
- $result['values'][] = $varspec;
- }
-
- return $result;
- }
-
- /**
- * Process an expansion
- *
- * @param array $matches Matches met in the preg_replace_callback
- *
- * @return string Returns the replacement string
- */
- private function expandMatch(array $matches)
- {
- static $rfc1738to3986 = ['+' => '%20', '%7e' => '~'];
-
- $replacements = [];
- $parsed = self::parseExpression($matches[1]);
- $prefix = self::$operatorHash[$parsed['operator']]['prefix'];
- $joiner = self::$operatorHash[$parsed['operator']]['joiner'];
- $useQuery = self::$operatorHash[$parsed['operator']]['query'];
-
- foreach ($parsed['values'] as $value) {
- if (!isset($this->variables[$value['value']])) {
- continue;
- }
-
- $variable = $this->variables[$value['value']];
- $actuallyUseQuery = $useQuery;
- $expanded = '';
-
- if (is_array($variable)) {
- $isAssoc = $this->isAssoc($variable);
- $kvp = [];
- foreach ($variable as $key => $var) {
- if ($isAssoc) {
- $key = rawurlencode($key);
- $isNestedArray = is_array($var);
- } else {
- $isNestedArray = false;
- }
-
- if (!$isNestedArray) {
- $var = rawurlencode($var);
- if ($parsed['operator'] === '+' ||
- $parsed['operator'] === '#'
- ) {
- $var = $this->decodeReserved($var);
- }
- }
-
- if ($value['modifier'] === '*') {
- if ($isAssoc) {
- if ($isNestedArray) {
- // Nested arrays must allow for deeply nested
- // structures.
- $var = strtr(
- http_build_query([$key => $var]),
- $rfc1738to3986
- );
- } else {
- $var = $key . '=' . $var;
- }
- } elseif ($key > 0 && $actuallyUseQuery) {
- $var = $value['value'] . '=' . $var;
- }
- }
-
- $kvp[$key] = $var;
- }
-
- if (empty($variable)) {
- $actuallyUseQuery = false;
- } elseif ($value['modifier'] === '*') {
- $expanded = implode($joiner, $kvp);
- if ($isAssoc) {
- // Don't prepend the value name when using the explode
- // modifier with an associative array.
- $actuallyUseQuery = false;
- }
- } else {
- if ($isAssoc) {
- // When an associative array is encountered and the
- // explode modifier is not set, then the result must be
- // a comma separated list of keys followed by their
- // respective values.
- foreach ($kvp as $k => &$v) {
- $v = $k . ',' . $v;
- }
- }
- $expanded = implode(',', $kvp);
- }
- } else {
- if ($value['modifier'] === ':') {
- $variable = substr($variable, 0, $value['position']);
- }
- $expanded = rawurlencode($variable);
- if ($parsed['operator'] === '+' || $parsed['operator'] === '#') {
- $expanded = $this->decodeReserved($expanded);
- }
- }
-
- if ($actuallyUseQuery) {
- if (!$expanded && $joiner !== '&') {
- $expanded = $value['value'];
- } else {
- $expanded = $value['value'] . '=' . $expanded;
- }
- }
-
- $replacements[] = $expanded;
- }
-
- $ret = implode($joiner, $replacements);
- if ($ret && $prefix) {
- return $prefix . $ret;
- }
-
- return $ret;
- }
-
- /**
- * Determines if an array is associative.
- *
- * This makes the assumption that input arrays are sequences or hashes.
- * This assumption is a tradeoff for accuracy in favor of speed, but it
- * should work in almost every case where input is supplied for a URI
- * template.
- *
- * @param array $array Array to check
- *
- * @return bool
- */
- private function isAssoc(array $array)
- {
- return $array && array_keys($array)[0] !== 0;
- }
-
- /**
- * Removes percent encoding on reserved characters (used with + and #
- * modifiers).
- *
- * @param string $string String to fix
- *
- * @return string
- */
- private function decodeReserved($string)
- {
- return str_replace(self::$delimsPct, self::$delims, $string);
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Utils.php b/vendor/guzzlehttp/guzzle/src/Utils.php
deleted file mode 100644
index c698acbf..00000000
--- a/vendor/guzzlehttp/guzzle/src/Utils.php
+++ /dev/null
@@ -1,92 +0,0 @@
-getHost()) {
- $asciiHost = self::idnToAsci($uri->getHost(), $options, $info);
- if ($asciiHost === false) {
- $errorBitSet = isset($info['errors']) ? $info['errors'] : 0;
-
- $errorConstants = array_filter(array_keys(get_defined_constants()), function ($name) {
- return substr($name, 0, 11) === 'IDNA_ERROR_';
- });
-
- $errors = [];
- foreach ($errorConstants as $errorConstant) {
- if ($errorBitSet & constant($errorConstant)) {
- $errors[] = $errorConstant;
- }
- }
-
- $errorMessage = 'IDN conversion failed';
- if ($errors) {
- $errorMessage .= ' (errors: ' . implode(', ', $errors) . ')';
- }
-
- throw new InvalidArgumentException($errorMessage);
- } else {
- if ($uri->getHost() !== $asciiHost) {
- // Replace URI only if the ASCII version is different
- $uri = $uri->withHost($asciiHost);
- }
- }
- }
-
- return $uri;
- }
-
- /**
- * @param string $domain
- * @param int $options
- * @param array $info
- *
- * @return string|false
- */
- private static function idnToAsci($domain, $options, &$info = [])
- {
- if (\preg_match('%^[ -~]+$%', $domain) === 1) {
- return $domain;
- }
-
- if (\extension_loaded('intl') && defined('INTL_IDNA_VARIANT_UTS46')) {
- return \idn_to_ascii($domain, $options, INTL_IDNA_VARIANT_UTS46, $info);
- }
-
- /*
- * The Idn class is marked as @internal. Verify that class and method exists.
- */
- if (method_exists(Idn::class, 'idn_to_ascii')) {
- return Idn::idn_to_ascii($domain, $options, Idn::INTL_IDNA_VARIANT_UTS46, $info);
- }
-
- throw new \RuntimeException('ext-intl or symfony/polyfill-intl-idn not loaded or too old');
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/functions.php b/vendor/guzzlehttp/guzzle/src/functions.php
deleted file mode 100644
index c2afd8c7..00000000
--- a/vendor/guzzlehttp/guzzle/src/functions.php
+++ /dev/null
@@ -1,334 +0,0 @@
-expand($template, $variables);
-}
-
-/**
- * Debug function used to describe the provided value type and class.
- *
- * @param mixed $input
- *
- * @return string Returns a string containing the type of the variable and
- * if a class is provided, the class name.
- */
-function describe_type($input)
-{
- switch (gettype($input)) {
- case 'object':
- return 'object(' . get_class($input) . ')';
- case 'array':
- return 'array(' . count($input) . ')';
- default:
- ob_start();
- var_dump($input);
- // normalize float vs double
- return str_replace('double(', 'float(', rtrim(ob_get_clean()));
- }
-}
-
-/**
- * Parses an array of header lines into an associative array of headers.
- *
- * @param iterable $lines Header lines array of strings in the following
- * format: "Name: Value"
- * @return array
- */
-function headers_from_lines($lines)
-{
- $headers = [];
-
- foreach ($lines as $line) {
- $parts = explode(':', $line, 2);
- $headers[trim($parts[0])][] = isset($parts[1])
- ? trim($parts[1])
- : null;
- }
-
- return $headers;
-}
-
-/**
- * Returns a debug stream based on the provided variable.
- *
- * @param mixed $value Optional value
- *
- * @return resource
- */
-function debug_resource($value = null)
-{
- if (is_resource($value)) {
- return $value;
- } elseif (defined('STDOUT')) {
- return STDOUT;
- }
-
- return fopen('php://output', 'w');
-}
-
-/**
- * Chooses and creates a default handler to use based on the environment.
- *
- * The returned handler is not wrapped by any default middlewares.
- *
- * @return callable Returns the best handler for the given system.
- * @throws \RuntimeException if no viable Handler is available.
- */
-function choose_handler()
-{
- $handler = null;
- if (function_exists('curl_multi_exec') && function_exists('curl_exec')) {
- $handler = Proxy::wrapSync(new CurlMultiHandler(), new CurlHandler());
- } elseif (function_exists('curl_exec')) {
- $handler = new CurlHandler();
- } elseif (function_exists('curl_multi_exec')) {
- $handler = new CurlMultiHandler();
- }
-
- if (ini_get('allow_url_fopen')) {
- $handler = $handler
- ? Proxy::wrapStreaming($handler, new StreamHandler())
- : new StreamHandler();
- } elseif (!$handler) {
- throw new \RuntimeException('GuzzleHttp requires cURL, the '
- . 'allow_url_fopen ini setting, or a custom HTTP handler.');
- }
-
- return $handler;
-}
-
-/**
- * Get the default User-Agent string to use with Guzzle
- *
- * @return string
- */
-function default_user_agent()
-{
- static $defaultAgent = '';
-
- if (!$defaultAgent) {
- $defaultAgent = 'GuzzleHttp/' . Client::VERSION;
- if (extension_loaded('curl') && function_exists('curl_version')) {
- $defaultAgent .= ' curl/' . \curl_version()['version'];
- }
- $defaultAgent .= ' PHP/' . PHP_VERSION;
- }
-
- return $defaultAgent;
-}
-
-/**
- * Returns the default cacert bundle for the current system.
- *
- * First, the openssl.cafile and curl.cainfo php.ini settings are checked.
- * If those settings are not configured, then the common locations for
- * bundles found on Red Hat, CentOS, Fedora, Ubuntu, Debian, FreeBSD, OS X
- * and Windows are checked. If any of these file locations are found on
- * disk, they will be utilized.
- *
- * Note: the result of this function is cached for subsequent calls.
- *
- * @return string
- * @throws \RuntimeException if no bundle can be found.
- */
-function default_ca_bundle()
-{
- static $cached = null;
- static $cafiles = [
- // Red Hat, CentOS, Fedora (provided by the ca-certificates package)
- '/etc/pki/tls/certs/ca-bundle.crt',
- // Ubuntu, Debian (provided by the ca-certificates package)
- '/etc/ssl/certs/ca-certificates.crt',
- // FreeBSD (provided by the ca_root_nss package)
- '/usr/local/share/certs/ca-root-nss.crt',
- // SLES 12 (provided by the ca-certificates package)
- '/var/lib/ca-certificates/ca-bundle.pem',
- // OS X provided by homebrew (using the default path)
- '/usr/local/etc/openssl/cert.pem',
- // Google app engine
- '/etc/ca-certificates.crt',
- // Windows?
- 'C:\\windows\\system32\\curl-ca-bundle.crt',
- 'C:\\windows\\curl-ca-bundle.crt',
- ];
-
- if ($cached) {
- return $cached;
- }
-
- if ($ca = ini_get('openssl.cafile')) {
- return $cached = $ca;
- }
-
- if ($ca = ini_get('curl.cainfo')) {
- return $cached = $ca;
- }
-
- foreach ($cafiles as $filename) {
- if (file_exists($filename)) {
- return $cached = $filename;
- }
- }
-
- throw new \RuntimeException(
- <<< EOT
-No system CA bundle could be found in any of the the common system locations.
-PHP versions earlier than 5.6 are not properly configured to use the system's
-CA bundle by default. In order to verify peer certificates, you will need to
-supply the path on disk to a certificate bundle to the 'verify' request
-option: http://docs.guzzlephp.org/en/latest/clients.html#verify. If you do not
-need a specific certificate bundle, then Mozilla provides a commonly used CA
-bundle which can be downloaded here (provided by the maintainer of cURL):
-https://raw.githubusercontent.com/bagder/ca-bundle/master/ca-bundle.crt. Once
-you have a CA bundle available on disk, you can set the 'openssl.cafile' PHP
-ini setting to point to the path to the file, allowing you to omit the 'verify'
-request option. See http://curl.haxx.se/docs/sslcerts.html for more
-information.
-EOT
- );
-}
-
-/**
- * Creates an associative array of lowercase header names to the actual
- * header casing.
- *
- * @param array $headers
- *
- * @return array
- */
-function normalize_header_keys(array $headers)
-{
- $result = [];
- foreach (array_keys($headers) as $key) {
- $result[strtolower($key)] = $key;
- }
-
- return $result;
-}
-
-/**
- * Returns true if the provided host matches any of the no proxy areas.
- *
- * This method will strip a port from the host if it is present. Each pattern
- * can be matched with an exact match (e.g., "foo.com" == "foo.com") or a
- * partial match: (e.g., "foo.com" == "baz.foo.com" and ".foo.com" ==
- * "baz.foo.com", but ".foo.com" != "foo.com").
- *
- * Areas are matched in the following cases:
- * 1. "*" (without quotes) always matches any hosts.
- * 2. An exact match.
- * 3. The area starts with "." and the area is the last part of the host. e.g.
- * '.mit.edu' will match any host that ends with '.mit.edu'.
- *
- * @param string $host Host to check against the patterns.
- * @param array $noProxyArray An array of host patterns.
- *
- * @return bool
- */
-function is_host_in_noproxy($host, array $noProxyArray)
-{
- if (strlen($host) === 0) {
- throw new \InvalidArgumentException('Empty host provided');
- }
-
- // Strip port if present.
- if (strpos($host, ':')) {
- $host = explode($host, ':', 2)[0];
- }
-
- foreach ($noProxyArray as $area) {
- // Always match on wildcards.
- if ($area === '*') {
- return true;
- } elseif (empty($area)) {
- // Don't match on empty values.
- continue;
- } elseif ($area === $host) {
- // Exact matches.
- return true;
- } else {
- // Special match if the area when prefixed with ".". Remove any
- // existing leading "." and add a new leading ".".
- $area = '.' . ltrim($area, '.');
- if (substr($host, -(strlen($area))) === $area) {
- return true;
- }
- }
- }
-
- return false;
-}
-
-/**
- * Wrapper for json_decode that throws when an error occurs.
- *
- * @param string $json JSON data to parse
- * @param bool $assoc When true, returned objects will be converted
- * into associative arrays.
- * @param int $depth User specified recursion depth.
- * @param int $options Bitmask of JSON decode options.
- *
- * @return mixed
- * @throws Exception\InvalidArgumentException if the JSON cannot be decoded.
- * @link http://www.php.net/manual/en/function.json-decode.php
- */
-function json_decode($json, $assoc = false, $depth = 512, $options = 0)
-{
- $data = \json_decode($json, $assoc, $depth, $options);
- if (JSON_ERROR_NONE !== json_last_error()) {
- throw new Exception\InvalidArgumentException(
- 'json_decode error: ' . json_last_error_msg()
- );
- }
-
- return $data;
-}
-
-/**
- * Wrapper for JSON encoding that throws when an error occurs.
- *
- * @param mixed $value The value being encoded
- * @param int $options JSON encode option bitmask
- * @param int $depth Set the maximum depth. Must be greater than zero.
- *
- * @return string
- * @throws Exception\InvalidArgumentException if the JSON cannot be encoded.
- * @link http://www.php.net/manual/en/function.json-encode.php
- */
-function json_encode($value, $options = 0, $depth = 512)
-{
- $json = \json_encode($value, $options, $depth);
- if (JSON_ERROR_NONE !== json_last_error()) {
- throw new Exception\InvalidArgumentException(
- 'json_encode error: ' . json_last_error_msg()
- );
- }
-
- return $json;
-}
diff --git a/vendor/guzzlehttp/guzzle/src/functions_include.php b/vendor/guzzlehttp/guzzle/src/functions_include.php
deleted file mode 100644
index a93393ac..00000000
--- a/vendor/guzzlehttp/guzzle/src/functions_include.php
+++ /dev/null
@@ -1,6 +0,0 @@
-
-Copyright (c) 2015 Graham Campbell
-Copyright (c) 2017 Tobias Schultze
-Copyright (c) 2020 Tobias Nyholm
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/guzzlehttp/promises/Makefile b/vendor/guzzlehttp/promises/Makefile
deleted file mode 100644
index 8d5b3ef9..00000000
--- a/vendor/guzzlehttp/promises/Makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-all: clean test
-
-test:
- vendor/bin/phpunit
-
-coverage:
- vendor/bin/phpunit --coverage-html=artifacts/coverage
-
-view-coverage:
- open artifacts/coverage/index.html
-
-clean:
- rm -rf artifacts/*
diff --git a/vendor/guzzlehttp/promises/README.md b/vendor/guzzlehttp/promises/README.md
deleted file mode 100644
index c175fec7..00000000
--- a/vendor/guzzlehttp/promises/README.md
+++ /dev/null
@@ -1,547 +0,0 @@
-# Guzzle Promises
-
-[Promises/A+](https://promisesaplus.com/) implementation that handles promise
-chaining and resolution iteratively, allowing for "infinite" promise chaining
-while keeping the stack size constant. Read [this blog post](https://blog.domenic.me/youre-missing-the-point-of-promises/)
-for a general introduction to promises.
-
-- [Features](#features)
-- [Quick start](#quick-start)
-- [Synchronous wait](#synchronous-wait)
-- [Cancellation](#cancellation)
-- [API](#api)
- - [Promise](#promise)
- - [FulfilledPromise](#fulfilledpromise)
- - [RejectedPromise](#rejectedpromise)
-- [Promise interop](#promise-interop)
-- [Implementation notes](#implementation-notes)
-
-
-# Features
-
-- [Promises/A+](https://promisesaplus.com/) implementation.
-- Promise resolution and chaining is handled iteratively, allowing for
- "infinite" promise chaining.
-- Promises have a synchronous `wait` method.
-- Promises can be cancelled.
-- Works with any object that has a `then` function.
-- C# style async/await coroutine promises using
- `GuzzleHttp\Promise\Coroutine::of()`.
-
-
-# Quick start
-
-A *promise* represents the eventual result of an asynchronous operation. The
-primary way of interacting with a promise is through its `then` method, which
-registers callbacks to receive either a promise's eventual value or the reason
-why the promise cannot be fulfilled.
-
-
-## Callbacks
-
-Callbacks are registered with the `then` method by providing an optional
-`$onFulfilled` followed by an optional `$onRejected` function.
-
-
-```php
-use GuzzleHttp\Promise\Promise;
-
-$promise = new Promise();
-$promise->then(
- // $onFulfilled
- function ($value) {
- echo 'The promise was fulfilled.';
- },
- // $onRejected
- function ($reason) {
- echo 'The promise was rejected.';
- }
-);
-```
-
-*Resolving* a promise means that you either fulfill a promise with a *value* or
-reject a promise with a *reason*. Resolving a promises triggers callbacks
-registered with the promises's `then` method. These callbacks are triggered
-only once and in the order in which they were added.
-
-
-## Resolving a promise
-
-Promises are fulfilled using the `resolve($value)` method. Resolving a promise
-with any value other than a `GuzzleHttp\Promise\RejectedPromise` will trigger
-all of the onFulfilled callbacks (resolving a promise with a rejected promise
-will reject the promise and trigger the `$onRejected` callbacks).
-
-```php
-use GuzzleHttp\Promise\Promise;
-
-$promise = new Promise();
-$promise
- ->then(function ($value) {
- // Return a value and don't break the chain
- return "Hello, " . $value;
- })
- // This then is executed after the first then and receives the value
- // returned from the first then.
- ->then(function ($value) {
- echo $value;
- });
-
-// Resolving the promise triggers the $onFulfilled callbacks and outputs
-// "Hello, reader."
-$promise->resolve('reader.');
-```
-
-
-## Promise forwarding
-
-Promises can be chained one after the other. Each then in the chain is a new
-promise. The return value of a promise is what's forwarded to the next
-promise in the chain. Returning a promise in a `then` callback will cause the
-subsequent promises in the chain to only be fulfilled when the returned promise
-has been fulfilled. The next promise in the chain will be invoked with the
-resolved value of the promise.
-
-```php
-use GuzzleHttp\Promise\Promise;
-
-$promise = new Promise();
-$nextPromise = new Promise();
-
-$promise
- ->then(function ($value) use ($nextPromise) {
- echo $value;
- return $nextPromise;
- })
- ->then(function ($value) {
- echo $value;
- });
-
-// Triggers the first callback and outputs "A"
-$promise->resolve('A');
-// Triggers the second callback and outputs "B"
-$nextPromise->resolve('B');
-```
-
-## Promise rejection
-
-When a promise is rejected, the `$onRejected` callbacks are invoked with the
-rejection reason.
-
-```php
-use GuzzleHttp\Promise\Promise;
-
-$promise = new Promise();
-$promise->then(null, function ($reason) {
- echo $reason;
-});
-
-$promise->reject('Error!');
-// Outputs "Error!"
-```
-
-## Rejection forwarding
-
-If an exception is thrown in an `$onRejected` callback, subsequent
-`$onRejected` callbacks are invoked with the thrown exception as the reason.
-
-```php
-use GuzzleHttp\Promise\Promise;
-
-$promise = new Promise();
-$promise->then(null, function ($reason) {
- throw new Exception($reason);
-})->then(null, function ($reason) {
- assert($reason->getMessage() === 'Error!');
-});
-
-$promise->reject('Error!');
-```
-
-You can also forward a rejection down the promise chain by returning a
-`GuzzleHttp\Promise\RejectedPromise` in either an `$onFulfilled` or
-`$onRejected` callback.
-
-```php
-use GuzzleHttp\Promise\Promise;
-use GuzzleHttp\Promise\RejectedPromise;
-
-$promise = new Promise();
-$promise->then(null, function ($reason) {
- return new RejectedPromise($reason);
-})->then(null, function ($reason) {
- assert($reason === 'Error!');
-});
-
-$promise->reject('Error!');
-```
-
-If an exception is not thrown in a `$onRejected` callback and the callback
-does not return a rejected promise, downstream `$onFulfilled` callbacks are
-invoked using the value returned from the `$onRejected` callback.
-
-```php
-use GuzzleHttp\Promise\Promise;
-
-$promise = new Promise();
-$promise
- ->then(null, function ($reason) {
- return "It's ok";
- })
- ->then(function ($value) {
- assert($value === "It's ok");
- });
-
-$promise->reject('Error!');
-```
-
-# Synchronous wait
-
-You can synchronously force promises to complete using a promise's `wait`
-method. When creating a promise, you can provide a wait function that is used
-to synchronously force a promise to complete. When a wait function is invoked
-it is expected to deliver a value to the promise or reject the promise. If the
-wait function does not deliver a value, then an exception is thrown. The wait
-function provided to a promise constructor is invoked when the `wait` function
-of the promise is called.
-
-```php
-$promise = new Promise(function () use (&$promise) {
- $promise->resolve('foo');
-});
-
-// Calling wait will return the value of the promise.
-echo $promise->wait(); // outputs "foo"
-```
-
-If an exception is encountered while invoking the wait function of a promise,
-the promise is rejected with the exception and the exception is thrown.
-
-```php
-$promise = new Promise(function () use (&$promise) {
- throw new Exception('foo');
-});
-
-$promise->wait(); // throws the exception.
-```
-
-Calling `wait` on a promise that has been fulfilled will not trigger the wait
-function. It will simply return the previously resolved value.
-
-```php
-$promise = new Promise(function () { die('this is not called!'); });
-$promise->resolve('foo');
-echo $promise->wait(); // outputs "foo"
-```
-
-Calling `wait` on a promise that has been rejected will throw an exception. If
-the rejection reason is an instance of `\Exception` the reason is thrown.
-Otherwise, a `GuzzleHttp\Promise\RejectionException` is thrown and the reason
-can be obtained by calling the `getReason` method of the exception.
-
-```php
-$promise = new Promise();
-$promise->reject('foo');
-$promise->wait();
-```
-
-> PHP Fatal error: Uncaught exception 'GuzzleHttp\Promise\RejectionException' with message 'The promise was rejected with value: foo'
-
-
-## Unwrapping a promise
-
-When synchronously waiting on a promise, you are joining the state of the
-promise into the current state of execution (i.e., return the value of the
-promise if it was fulfilled or throw an exception if it was rejected). This is
-called "unwrapping" the promise. Waiting on a promise will by default unwrap
-the promise state.
-
-You can force a promise to resolve and *not* unwrap the state of the promise
-by passing `false` to the first argument of the `wait` function:
-
-```php
-$promise = new Promise();
-$promise->reject('foo');
-// This will not throw an exception. It simply ensures the promise has
-// been resolved.
-$promise->wait(false);
-```
-
-When unwrapping a promise, the resolved value of the promise will be waited
-upon until the unwrapped value is not a promise. This means that if you resolve
-promise A with a promise B and unwrap promise A, the value returned by the
-wait function will be the value delivered to promise B.
-
-**Note**: when you do not unwrap the promise, no value is returned.
-
-
-# Cancellation
-
-You can cancel a promise that has not yet been fulfilled using the `cancel()`
-method of a promise. When creating a promise you can provide an optional
-cancel function that when invoked cancels the action of computing a resolution
-of the promise.
-
-
-# API
-
-
-## Promise
-
-When creating a promise object, you can provide an optional `$waitFn` and
-`$cancelFn`. `$waitFn` is a function that is invoked with no arguments and is
-expected to resolve the promise. `$cancelFn` is a function with no arguments
-that is expected to cancel the computation of a promise. It is invoked when the
-`cancel()` method of a promise is called.
-
-```php
-use GuzzleHttp\Promise\Promise;
-
-$promise = new Promise(
- function () use (&$promise) {
- $promise->resolve('waited');
- },
- function () {
- // do something that will cancel the promise computation (e.g., close
- // a socket, cancel a database query, etc...)
- }
-);
-
-assert('waited' === $promise->wait());
-```
-
-A promise has the following methods:
-
-- `then(callable $onFulfilled, callable $onRejected) : PromiseInterface`
-
- Appends fulfillment and rejection handlers to the promise, and returns a new promise resolving to the return value of the called handler.
-
-- `otherwise(callable $onRejected) : PromiseInterface`
-
- Appends a rejection handler callback to the promise, and returns a new promise resolving to the return value of the callback if it is called, or to its original fulfillment value if the promise is instead fulfilled.
-
-- `wait($unwrap = true) : mixed`
-
- Synchronously waits on the promise to complete.
-
- `$unwrap` controls whether or not the value of the promise is returned for a
- fulfilled promise or if an exception is thrown if the promise is rejected.
- This is set to `true` by default.
-
-- `cancel()`
-
- Attempts to cancel the promise if possible. The promise being cancelled and
- the parent most ancestor that has not yet been resolved will also be
- cancelled. Any promises waiting on the cancelled promise to resolve will also
- be cancelled.
-
-- `getState() : string`
-
- Returns the state of the promise. One of `pending`, `fulfilled`, or
- `rejected`.
-
-- `resolve($value)`
-
- Fulfills the promise with the given `$value`.
-
-- `reject($reason)`
-
- Rejects the promise with the given `$reason`.
-
-
-## FulfilledPromise
-
-A fulfilled promise can be created to represent a promise that has been
-fulfilled.
-
-```php
-use GuzzleHttp\Promise\FulfilledPromise;
-
-$promise = new FulfilledPromise('value');
-
-// Fulfilled callbacks are immediately invoked.
-$promise->then(function ($value) {
- echo $value;
-});
-```
-
-
-## RejectedPromise
-
-A rejected promise can be created to represent a promise that has been
-rejected.
-
-```php
-use GuzzleHttp\Promise\RejectedPromise;
-
-$promise = new RejectedPromise('Error');
-
-// Rejected callbacks are immediately invoked.
-$promise->then(null, function ($reason) {
- echo $reason;
-});
-```
-
-
-# Promise interop
-
-This library works with foreign promises that have a `then` method. This means
-you can use Guzzle promises with [React promises](https://github.com/reactphp/promise)
-for example. When a foreign promise is returned inside of a then method
-callback, promise resolution will occur recursively.
-
-```php
-// Create a React promise
-$deferred = new React\Promise\Deferred();
-$reactPromise = $deferred->promise();
-
-// Create a Guzzle promise that is fulfilled with a React promise.
-$guzzlePromise = new GuzzleHttp\Promise\Promise();
-$guzzlePromise->then(function ($value) use ($reactPromise) {
- // Do something something with the value...
- // Return the React promise
- return $reactPromise;
-});
-```
-
-Please note that wait and cancel chaining is no longer possible when forwarding
-a foreign promise. You will need to wrap a third-party promise with a Guzzle
-promise in order to utilize wait and cancel functions with foreign promises.
-
-
-## Event Loop Integration
-
-In order to keep the stack size constant, Guzzle promises are resolved
-asynchronously using a task queue. When waiting on promises synchronously, the
-task queue will be automatically run to ensure that the blocking promise and
-any forwarded promises are resolved. When using promises asynchronously in an
-event loop, you will need to run the task queue on each tick of the loop. If
-you do not run the task queue, then promises will not be resolved.
-
-You can run the task queue using the `run()` method of the global task queue
-instance.
-
-```php
-// Get the global task queue
-$queue = GuzzleHttp\Promise\Utils::queue();
-$queue->run();
-```
-
-For example, you could use Guzzle promises with React using a periodic timer:
-
-```php
-$loop = React\EventLoop\Factory::create();
-$loop->addPeriodicTimer(0, [$queue, 'run']);
-```
-
-*TODO*: Perhaps adding a `futureTick()` on each tick would be faster?
-
-
-# Implementation notes
-
-
-## Promise resolution and chaining is handled iteratively
-
-By shuffling pending handlers from one owner to another, promises are
-resolved iteratively, allowing for "infinite" then chaining.
-
-```php
-then(function ($v) {
- // The stack size remains constant (a good thing)
- echo xdebug_get_stack_depth() . ', ';
- return $v + 1;
- });
-}
-
-$parent->resolve(0);
-var_dump($p->wait()); // int(1000)
-
-```
-
-When a promise is fulfilled or rejected with a non-promise value, the promise
-then takes ownership of the handlers of each child promise and delivers values
-down the chain without using recursion.
-
-When a promise is resolved with another promise, the original promise transfers
-all of its pending handlers to the new promise. When the new promise is
-eventually resolved, all of the pending handlers are delivered the forwarded
-value.
-
-
-## A promise is the deferred.
-
-Some promise libraries implement promises using a deferred object to represent
-a computation and a promise object to represent the delivery of the result of
-the computation. This is a nice separation of computation and delivery because
-consumers of the promise cannot modify the value that will be eventually
-delivered.
-
-One side effect of being able to implement promise resolution and chaining
-iteratively is that you need to be able for one promise to reach into the state
-of another promise to shuffle around ownership of handlers. In order to achieve
-this without making the handlers of a promise publicly mutable, a promise is
-also the deferred value, allowing promises of the same parent class to reach
-into and modify the private properties of promises of the same type. While this
-does allow consumers of the value to modify the resolution or rejection of the
-deferred, it is a small price to pay for keeping the stack size constant.
-
-```php
-$promise = new Promise();
-$promise->then(function ($value) { echo $value; });
-// The promise is the deferred value, so you can deliver a value to it.
-$promise->resolve('foo');
-// prints "foo"
-```
-
-
-## Upgrading from Function API
-
-A static API was first introduced in 1.4.0, in order to mitigate problems with functions conflicting between global and local copies of the package. The function API will be removed in 2.0.0. A migration table has been provided here for your convenience:
-
-| Original Function | Replacement Method |
-|----------------|----------------|
-| `queue` | `Utils::queue` |
-| `task` | `Utils::task` |
-| `promise_for` | `Create::promiseFor` |
-| `rejection_for` | `Create::rejectionFor` |
-| `exception_for` | `Create::exceptionFor` |
-| `iter_for` | `Create::iterFor` |
-| `inspect` | `Utils::inspect` |
-| `inspect_all` | `Utils::inspectAll` |
-| `unwrap` | `Utils::unwrap` |
-| `all` | `Utils::all` |
-| `some` | `Utils::some` |
-| `any` | `Utils::any` |
-| `settle` | `Utils::settle` |
-| `each` | `Each::of` |
-| `each_limit` | `Each::ofLimit` |
-| `each_limit_all` | `Each::ofLimitAll` |
-| `!is_fulfilled` | `Is::pending` |
-| `is_fulfilled` | `Is::fulfilled` |
-| `is_rejected` | `Is::rejected` |
-| `is_settled` | `Is::settled` |
-| `coroutine` | `Coroutine::of` |
-
-
-## Security
-
-If you discover a security vulnerability within this package, please send an email to security@tidelift.com. All security vulnerabilities will be promptly addressed. Please do not disclose security-related issues publicly until a fix has been announced. Please see [Security Policy](https://github.com/guzzle/promises/security/policy) for more information.
-
-## License
-
-Guzzle is made available under the MIT License (MIT). Please see [License File](LICENSE) for more information.
-
-## For Enterprise
-
-Available as part of the Tidelift Subscription
-
-The maintainers of Guzzle and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/packagist-guzzlehttp-promises?utm_source=packagist-guzzlehttp-promises&utm_medium=referral&utm_campaign=enterprise&utm_term=repo)
diff --git a/vendor/guzzlehttp/promises/composer.json b/vendor/guzzlehttp/promises/composer.json
deleted file mode 100644
index c959fb32..00000000
--- a/vendor/guzzlehttp/promises/composer.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "guzzlehttp/promises",
- "description": "Guzzle promises library",
- "keywords": ["promise"],
- "license": "MIT",
- "authors": [
- {
- "name": "Graham Campbell",
- "email": "hello@gjcampbell.co.uk",
- "homepage": "https://github.com/GrahamCampbell"
- },
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- },
- {
- "name": "Tobias Nyholm",
- "email": "tobias.nyholm@gmail.com",
- "homepage": "https://github.com/Nyholm"
- },
- {
- "name": "Tobias Schultze",
- "email": "webmaster@tubo-world.de",
- "homepage": "https://github.com/Tobion"
- }
- ],
- "require": {
- "php": ">=5.5"
- },
- "require-dev": {
- "symfony/phpunit-bridge": "^4.4 || ^5.1"
- },
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\Promise\\": "src/"
- },
- "files": ["src/functions_include.php"]
- },
- "autoload-dev": {
- "psr-4": {
- "GuzzleHttp\\Promise\\Tests\\": "tests/"
- }
- },
- "scripts": {
- "test": "vendor/bin/simple-phpunit",
- "test-ci": "vendor/bin/simple-phpunit --coverage-text"
- },
- "extra": {
- "branch-alias": {
- "dev-master": "1.5-dev"
- }
- },
- "config": {
- "preferred-install": "dist",
- "sort-packages": true
- }
-}
diff --git a/vendor/guzzlehttp/promises/src/AggregateException.php b/vendor/guzzlehttp/promises/src/AggregateException.php
deleted file mode 100644
index d2b5712b..00000000
--- a/vendor/guzzlehttp/promises/src/AggregateException.php
+++ /dev/null
@@ -1,17 +0,0 @@
-then(function ($v) { echo $v; });
- *
- * @param callable $generatorFn Generator function to wrap into a promise.
- *
- * @return Promise
- *
- * @link https://github.com/petkaantonov/bluebird/blob/master/API.md#generators inspiration
- */
-final class Coroutine implements PromiseInterface
-{
- /**
- * @var PromiseInterface|null
- */
- private $currentPromise;
-
- /**
- * @var Generator
- */
- private $generator;
-
- /**
- * @var Promise
- */
- private $result;
-
- public function __construct(callable $generatorFn)
- {
- $this->generator = $generatorFn();
- $this->result = new Promise(function () {
- while (isset($this->currentPromise)) {
- $this->currentPromise->wait();
- }
- });
- try {
- $this->nextCoroutine($this->generator->current());
- } catch (\Exception $exception) {
- $this->result->reject($exception);
- } catch (Throwable $throwable) {
- $this->result->reject($throwable);
- }
- }
-
- /**
- * Create a new coroutine.
- *
- * @return self
- */
- public static function of(callable $generatorFn)
- {
- return new self($generatorFn);
- }
-
- public function then(
- callable $onFulfilled = null,
- callable $onRejected = null
- ) {
- return $this->result->then($onFulfilled, $onRejected);
- }
-
- public function otherwise(callable $onRejected)
- {
- return $this->result->otherwise($onRejected);
- }
-
- public function wait($unwrap = true)
- {
- return $this->result->wait($unwrap);
- }
-
- public function getState()
- {
- return $this->result->getState();
- }
-
- public function resolve($value)
- {
- $this->result->resolve($value);
- }
-
- public function reject($reason)
- {
- $this->result->reject($reason);
- }
-
- public function cancel()
- {
- $this->currentPromise->cancel();
- $this->result->cancel();
- }
-
- private function nextCoroutine($yielded)
- {
- $this->currentPromise = Create::promiseFor($yielded)
- ->then([$this, '_handleSuccess'], [$this, '_handleFailure']);
- }
-
- /**
- * @internal
- */
- public function _handleSuccess($value)
- {
- unset($this->currentPromise);
- try {
- $next = $this->generator->send($value);
- if ($this->generator->valid()) {
- $this->nextCoroutine($next);
- } else {
- $this->result->resolve($value);
- }
- } catch (Exception $exception) {
- $this->result->reject($exception);
- } catch (Throwable $throwable) {
- $this->result->reject($throwable);
- }
- }
-
- /**
- * @internal
- */
- public function _handleFailure($reason)
- {
- unset($this->currentPromise);
- try {
- $nextYield = $this->generator->throw(Create::exceptionFor($reason));
- // The throw was caught, so keep iterating on the coroutine
- $this->nextCoroutine($nextYield);
- } catch (Exception $exception) {
- $this->result->reject($exception);
- } catch (Throwable $throwable) {
- $this->result->reject($throwable);
- }
- }
-}
diff --git a/vendor/guzzlehttp/promises/src/Create.php b/vendor/guzzlehttp/promises/src/Create.php
deleted file mode 100644
index 8d038e9c..00000000
--- a/vendor/guzzlehttp/promises/src/Create.php
+++ /dev/null
@@ -1,84 +0,0 @@
-then([$promise, 'resolve'], [$promise, 'reject']);
- return $promise;
- }
-
- return new FulfilledPromise($value);
- }
-
- /**
- * Creates a rejected promise for a reason if the reason is not a promise.
- * If the provided reason is a promise, then it is returned as-is.
- *
- * @param mixed $reason Promise or reason.
- *
- * @return PromiseInterface
- */
- public static function rejectionFor($reason)
- {
- if ($reason instanceof PromiseInterface) {
- return $reason;
- }
-
- return new RejectedPromise($reason);
- }
-
- /**
- * Create an exception for a rejected promise value.
- *
- * @param mixed $reason
- *
- * @return \Exception|\Throwable
- */
- public static function exceptionFor($reason)
- {
- if ($reason instanceof \Exception || $reason instanceof \Throwable) {
- return $reason;
- }
-
- return new RejectionException($reason);
- }
-
- /**
- * Returns an iterator for the given value.
- *
- * @param mixed $value
- *
- * @return \Iterator
- */
- public static function iterFor($value)
- {
- if ($value instanceof \Iterator) {
- return $value;
- }
-
- if (is_array($value)) {
- return new \ArrayIterator($value);
- }
-
- return new \ArrayIterator([$value]);
- }
-}
diff --git a/vendor/guzzlehttp/promises/src/Each.php b/vendor/guzzlehttp/promises/src/Each.php
deleted file mode 100644
index 1dda3549..00000000
--- a/vendor/guzzlehttp/promises/src/Each.php
+++ /dev/null
@@ -1,90 +0,0 @@
- $onFulfilled,
- 'rejected' => $onRejected
- ]))->promise();
- }
-
- /**
- * Like of, but only allows a certain number of outstanding promises at any
- * given time.
- *
- * $concurrency may be an integer or a function that accepts the number of
- * pending promises and returns a numeric concurrency limit value to allow
- * for dynamic a concurrency size.
- *
- * @param mixed $iterable
- * @param int|callable $concurrency
- * @param callable $onFulfilled
- * @param callable $onRejected
- *
- * @return PromiseInterface
- */
- public static function ofLimit(
- $iterable,
- $concurrency,
- callable $onFulfilled = null,
- callable $onRejected = null
- ) {
- return (new EachPromise($iterable, [
- 'fulfilled' => $onFulfilled,
- 'rejected' => $onRejected,
- 'concurrency' => $concurrency
- ]))->promise();
- }
-
- /**
- * Like limit, but ensures that no promise in the given $iterable argument
- * is rejected. If any promise is rejected, then the aggregate promise is
- * rejected with the encountered rejection.
- *
- * @param mixed $iterable
- * @param int|callable $concurrency
- * @param callable $onFulfilled
- *
- * @return PromiseInterface
- */
- public static function ofLimitAll(
- $iterable,
- $concurrency,
- callable $onFulfilled = null
- ) {
- return each_limit(
- $iterable,
- $concurrency,
- $onFulfilled,
- function ($reason, $idx, PromiseInterface $aggregate) {
- $aggregate->reject($reason);
- }
- );
- }
-}
diff --git a/vendor/guzzlehttp/promises/src/EachPromise.php b/vendor/guzzlehttp/promises/src/EachPromise.php
deleted file mode 100644
index 38ecb59b..00000000
--- a/vendor/guzzlehttp/promises/src/EachPromise.php
+++ /dev/null
@@ -1,255 +0,0 @@
-iterable = Create::iterFor($iterable);
-
- if (isset($config['concurrency'])) {
- $this->concurrency = $config['concurrency'];
- }
-
- if (isset($config['fulfilled'])) {
- $this->onFulfilled = $config['fulfilled'];
- }
-
- if (isset($config['rejected'])) {
- $this->onRejected = $config['rejected'];
- }
- }
-
- /** @psalm-suppress InvalidNullableReturnType */
- public function promise()
- {
- if ($this->aggregate) {
- return $this->aggregate;
- }
-
- try {
- $this->createPromise();
- /** @psalm-assert Promise $this->aggregate */
- $this->iterable->rewind();
- $this->refillPending();
- } catch (\Throwable $e) {
- /**
- * @psalm-suppress NullReference
- * @phpstan-ignore-next-line
- */
- $this->aggregate->reject($e);
- } catch (\Exception $e) {
- /**
- * @psalm-suppress NullReference
- * @phpstan-ignore-next-line
- */
- $this->aggregate->reject($e);
- }
-
- /**
- * @psalm-suppress NullableReturnStatement
- * @phpstan-ignore-next-line
- */
- return $this->aggregate;
- }
-
- private function createPromise()
- {
- $this->mutex = false;
- $this->aggregate = new Promise(function () {
- if ($this->checkIfFinished()) {
- return;
- }
- reset($this->pending);
- // Consume a potentially fluctuating list of promises while
- // ensuring that indexes are maintained (precluding array_shift).
- while ($promise = current($this->pending)) {
- next($this->pending);
- $promise->wait();
- if (Is::settled($this->aggregate)) {
- return;
- }
- }
- });
-
- // Clear the references when the promise is resolved.
- $clearFn = function () {
- $this->iterable = $this->concurrency = $this->pending = null;
- $this->onFulfilled = $this->onRejected = null;
- $this->nextPendingIndex = 0;
- };
-
- $this->aggregate->then($clearFn, $clearFn);
- }
-
- private function refillPending()
- {
- if (!$this->concurrency) {
- // Add all pending promises.
- while ($this->addPending() && $this->advanceIterator());
- return;
- }
-
- // Add only up to N pending promises.
- $concurrency = is_callable($this->concurrency)
- ? call_user_func($this->concurrency, count($this->pending))
- : $this->concurrency;
- $concurrency = max($concurrency - count($this->pending), 0);
- // Concurrency may be set to 0 to disallow new promises.
- if (!$concurrency) {
- return;
- }
- // Add the first pending promise.
- $this->addPending();
- // Note this is special handling for concurrency=1 so that we do
- // not advance the iterator after adding the first promise. This
- // helps work around issues with generators that might not have the
- // next value to yield until promise callbacks are called.
- while (--$concurrency
- && $this->advanceIterator()
- && $this->addPending());
- }
-
- private function addPending()
- {
- if (!$this->iterable || !$this->iterable->valid()) {
- return false;
- }
-
- $promise = Create::promiseFor($this->iterable->current());
- $key = $this->iterable->key();
-
- // Iterable keys may not be unique, so we use a counter to
- // guarantee uniqueness
- $idx = $this->nextPendingIndex++;
-
- $this->pending[$idx] = $promise->then(
- function ($value) use ($idx, $key) {
- if ($this->onFulfilled) {
- call_user_func(
- $this->onFulfilled,
- $value,
- $key,
- $this->aggregate
- );
- }
- $this->step($idx);
- },
- function ($reason) use ($idx, $key) {
- if ($this->onRejected) {
- call_user_func(
- $this->onRejected,
- $reason,
- $key,
- $this->aggregate
- );
- }
- $this->step($idx);
- }
- );
-
- return true;
- }
-
- private function advanceIterator()
- {
- // Place a lock on the iterator so that we ensure to not recurse,
- // preventing fatal generator errors.
- if ($this->mutex) {
- return false;
- }
-
- $this->mutex = true;
-
- try {
- $this->iterable->next();
- $this->mutex = false;
- return true;
- } catch (\Throwable $e) {
- $this->aggregate->reject($e);
- $this->mutex = false;
- return false;
- } catch (\Exception $e) {
- $this->aggregate->reject($e);
- $this->mutex = false;
- return false;
- }
- }
-
- private function step($idx)
- {
- // If the promise was already resolved, then ignore this step.
- if (Is::settled($this->aggregate)) {
- return;
- }
-
- unset($this->pending[$idx]);
-
- // Only refill pending promises if we are not locked, preventing the
- // EachPromise to recursively invoke the provided iterator, which
- // cause a fatal error: "Cannot resume an already running generator"
- if ($this->advanceIterator() && !$this->checkIfFinished()) {
- // Add more pending promises if possible.
- $this->refillPending();
- }
- }
-
- private function checkIfFinished()
- {
- if (!$this->pending && !$this->iterable->valid()) {
- // Resolve the promise if there's nothing left to do.
- $this->aggregate->resolve(null);
- return true;
- }
-
- return false;
- }
-}
diff --git a/vendor/guzzlehttp/promises/src/FulfilledPromise.php b/vendor/guzzlehttp/promises/src/FulfilledPromise.php
deleted file mode 100644
index 98f72a62..00000000
--- a/vendor/guzzlehttp/promises/src/FulfilledPromise.php
+++ /dev/null
@@ -1,84 +0,0 @@
-value = $value;
- }
-
- public function then(
- callable $onFulfilled = null,
- callable $onRejected = null
- ) {
- // Return itself if there is no onFulfilled function.
- if (!$onFulfilled) {
- return $this;
- }
-
- $queue = Utils::queue();
- $p = new Promise([$queue, 'run']);
- $value = $this->value;
- $queue->add(static function () use ($p, $value, $onFulfilled) {
- if (Is::pending($p)) {
- try {
- $p->resolve($onFulfilled($value));
- } catch (\Throwable $e) {
- $p->reject($e);
- } catch (\Exception $e) {
- $p->reject($e);
- }
- }
- });
-
- return $p;
- }
-
- public function otherwise(callable $onRejected)
- {
- return $this->then(null, $onRejected);
- }
-
- public function wait($unwrap = true, $defaultDelivery = null)
- {
- return $unwrap ? $this->value : null;
- }
-
- public function getState()
- {
- return self::FULFILLED;
- }
-
- public function resolve($value)
- {
- if ($value !== $this->value) {
- throw new \LogicException("Cannot resolve a fulfilled promise");
- }
- }
-
- public function reject($reason)
- {
- throw new \LogicException("Cannot reject a fulfilled promise");
- }
-
- public function cancel()
- {
- // pass
- }
-}
diff --git a/vendor/guzzlehttp/promises/src/Is.php b/vendor/guzzlehttp/promises/src/Is.php
deleted file mode 100644
index c3ed8d01..00000000
--- a/vendor/guzzlehttp/promises/src/Is.php
+++ /dev/null
@@ -1,46 +0,0 @@
-getState() === PromiseInterface::PENDING;
- }
-
- /**
- * Returns true if a promise is fulfilled or rejected.
- *
- * @return bool
- */
- public static function settled(PromiseInterface $promise)
- {
- return $promise->getState() !== PromiseInterface::PENDING;
- }
-
- /**
- * Returns true if a promise is fulfilled.
- *
- * @return bool
- */
- public static function fulfilled(PromiseInterface $promise)
- {
- return $promise->getState() === PromiseInterface::FULFILLED;
- }
-
- /**
- * Returns true if a promise is rejected.
- *
- * @return bool
- */
- public static function rejected(PromiseInterface $promise)
- {
- return $promise->getState() === PromiseInterface::REJECTED;
- }
-}
diff --git a/vendor/guzzlehttp/promises/src/Promise.php b/vendor/guzzlehttp/promises/src/Promise.php
deleted file mode 100644
index 75939057..00000000
--- a/vendor/guzzlehttp/promises/src/Promise.php
+++ /dev/null
@@ -1,278 +0,0 @@
-waitFn = $waitFn;
- $this->cancelFn = $cancelFn;
- }
-
- public function then(
- callable $onFulfilled = null,
- callable $onRejected = null
- ) {
- if ($this->state === self::PENDING) {
- $p = new Promise(null, [$this, 'cancel']);
- $this->handlers[] = [$p, $onFulfilled, $onRejected];
- $p->waitList = $this->waitList;
- $p->waitList[] = $this;
- return $p;
- }
-
- // Return a fulfilled promise and immediately invoke any callbacks.
- if ($this->state === self::FULFILLED) {
- $promise = Create::promiseFor($this->result);
- return $onFulfilled ? $promise->then($onFulfilled) : $promise;
- }
-
- // It's either cancelled or rejected, so return a rejected promise
- // and immediately invoke any callbacks.
- $rejection = Create::rejectionFor($this->result);
- return $onRejected ? $rejection->then(null, $onRejected) : $rejection;
- }
-
- public function otherwise(callable $onRejected)
- {
- return $this->then(null, $onRejected);
- }
-
- public function wait($unwrap = true)
- {
- $this->waitIfPending();
-
- if ($this->result instanceof PromiseInterface) {
- return $this->result->wait($unwrap);
- }
- if ($unwrap) {
- if ($this->state === self::FULFILLED) {
- return $this->result;
- }
- // It's rejected so "unwrap" and throw an exception.
- throw Create::exceptionFor($this->result);
- }
- }
-
- public function getState()
- {
- return $this->state;
- }
-
- public function cancel()
- {
- if ($this->state !== self::PENDING) {
- return;
- }
-
- $this->waitFn = $this->waitList = null;
-
- if ($this->cancelFn) {
- $fn = $this->cancelFn;
- $this->cancelFn = null;
- try {
- $fn();
- } catch (\Throwable $e) {
- $this->reject($e);
- } catch (\Exception $e) {
- $this->reject($e);
- }
- }
-
- // Reject the promise only if it wasn't rejected in a then callback.
- /** @psalm-suppress RedundantCondition */
- if ($this->state === self::PENDING) {
- $this->reject(new CancellationException('Promise has been cancelled'));
- }
- }
-
- public function resolve($value)
- {
- $this->settle(self::FULFILLED, $value);
- }
-
- public function reject($reason)
- {
- $this->settle(self::REJECTED, $reason);
- }
-
- private function settle($state, $value)
- {
- if ($this->state !== self::PENDING) {
- // Ignore calls with the same resolution.
- if ($state === $this->state && $value === $this->result) {
- return;
- }
- throw $this->state === $state
- ? new \LogicException("The promise is already {$state}.")
- : new \LogicException("Cannot change a {$this->state} promise to {$state}");
- }
-
- if ($value === $this) {
- throw new \LogicException('Cannot fulfill or reject a promise with itself');
- }
-
- // Clear out the state of the promise but stash the handlers.
- $this->state = $state;
- $this->result = $value;
- $handlers = $this->handlers;
- $this->handlers = null;
- $this->waitList = $this->waitFn = null;
- $this->cancelFn = null;
-
- if (!$handlers) {
- return;
- }
-
- // If the value was not a settled promise or a thenable, then resolve
- // it in the task queue using the correct ID.
- if (!is_object($value) || !method_exists($value, 'then')) {
- $id = $state === self::FULFILLED ? 1 : 2;
- // It's a success, so resolve the handlers in the queue.
- Utils::queue()->add(static function () use ($id, $value, $handlers) {
- foreach ($handlers as $handler) {
- self::callHandler($id, $value, $handler);
- }
- });
- } elseif ($value instanceof Promise && Is::pending($value)) {
- // We can just merge our handlers onto the next promise.
- $value->handlers = array_merge($value->handlers, $handlers);
- } else {
- // Resolve the handlers when the forwarded promise is resolved.
- $value->then(
- static function ($value) use ($handlers) {
- foreach ($handlers as $handler) {
- self::callHandler(1, $value, $handler);
- }
- },
- static function ($reason) use ($handlers) {
- foreach ($handlers as $handler) {
- self::callHandler(2, $reason, $handler);
- }
- }
- );
- }
- }
-
- /**
- * Call a stack of handlers using a specific callback index and value.
- *
- * @param int $index 1 (resolve) or 2 (reject).
- * @param mixed $value Value to pass to the callback.
- * @param array $handler Array of handler data (promise and callbacks).
- */
- private static function callHandler($index, $value, array $handler)
- {
- /** @var PromiseInterface $promise */
- $promise = $handler[0];
-
- // The promise may have been cancelled or resolved before placing
- // this thunk in the queue.
- if (Is::settled($promise)) {
- return;
- }
-
- try {
- if (isset($handler[$index])) {
- /*
- * If $f throws an exception, then $handler will be in the exception
- * stack trace. Since $handler contains a reference to the callable
- * itself we get a circular reference. We clear the $handler
- * here to avoid that memory leak.
- */
- $f = $handler[$index];
- unset($handler);
- $promise->resolve($f($value));
- } elseif ($index === 1) {
- // Forward resolution values as-is.
- $promise->resolve($value);
- } else {
- // Forward rejections down the chain.
- $promise->reject($value);
- }
- } catch (\Throwable $reason) {
- $promise->reject($reason);
- } catch (\Exception $reason) {
- $promise->reject($reason);
- }
- }
-
- private function waitIfPending()
- {
- if ($this->state !== self::PENDING) {
- return;
- } elseif ($this->waitFn) {
- $this->invokeWaitFn();
- } elseif ($this->waitList) {
- $this->invokeWaitList();
- } else {
- // If there's no wait function, then reject the promise.
- $this->reject('Cannot wait on a promise that has '
- . 'no internal wait function. You must provide a wait '
- . 'function when constructing the promise to be able to '
- . 'wait on a promise.');
- }
-
- Utils::queue()->run();
-
- /** @psalm-suppress RedundantCondition */
- if ($this->state === self::PENDING) {
- $this->reject('Invoking the wait callback did not resolve the promise');
- }
- }
-
- private function invokeWaitFn()
- {
- try {
- $wfn = $this->waitFn;
- $this->waitFn = null;
- $wfn(true);
- } catch (\Exception $reason) {
- if ($this->state === self::PENDING) {
- // The promise has not been resolved yet, so reject the promise
- // with the exception.
- $this->reject($reason);
- } else {
- // The promise was already resolved, so there's a problem in
- // the application.
- throw $reason;
- }
- }
- }
-
- private function invokeWaitList()
- {
- $waitList = $this->waitList;
- $this->waitList = null;
-
- foreach ($waitList as $result) {
- do {
- $result->waitIfPending();
- $result = $result->result;
- } while ($result instanceof Promise);
-
- if ($result instanceof PromiseInterface) {
- $result->wait(false);
- }
- }
- }
-}
diff --git a/vendor/guzzlehttp/promises/src/PromiseInterface.php b/vendor/guzzlehttp/promises/src/PromiseInterface.php
deleted file mode 100644
index e5983314..00000000
--- a/vendor/guzzlehttp/promises/src/PromiseInterface.php
+++ /dev/null
@@ -1,97 +0,0 @@
-reason = $reason;
- }
-
- public function then(
- callable $onFulfilled = null,
- callable $onRejected = null
- ) {
- // If there's no onRejected callback then just return self.
- if (!$onRejected) {
- return $this;
- }
-
- $queue = Utils::queue();
- $reason = $this->reason;
- $p = new Promise([$queue, 'run']);
- $queue->add(static function () use ($p, $reason, $onRejected) {
- if (Is::pending($p)) {
- try {
- // Return a resolved promise if onRejected does not throw.
- $p->resolve($onRejected($reason));
- } catch (\Throwable $e) {
- // onRejected threw, so return a rejected promise.
- $p->reject($e);
- } catch (\Exception $e) {
- // onRejected threw, so return a rejected promise.
- $p->reject($e);
- }
- }
- });
-
- return $p;
- }
-
- public function otherwise(callable $onRejected)
- {
- return $this->then(null, $onRejected);
- }
-
- public function wait($unwrap = true, $defaultDelivery = null)
- {
- if ($unwrap) {
- throw Create::exceptionFor($this->reason);
- }
-
- return null;
- }
-
- public function getState()
- {
- return self::REJECTED;
- }
-
- public function resolve($value)
- {
- throw new \LogicException("Cannot resolve a rejected promise");
- }
-
- public function reject($reason)
- {
- if ($reason !== $this->reason) {
- throw new \LogicException("Cannot reject a rejected promise");
- }
- }
-
- public function cancel()
- {
- // pass
- }
-}
diff --git a/vendor/guzzlehttp/promises/src/RejectionException.php b/vendor/guzzlehttp/promises/src/RejectionException.php
deleted file mode 100644
index e2f13770..00000000
--- a/vendor/guzzlehttp/promises/src/RejectionException.php
+++ /dev/null
@@ -1,48 +0,0 @@
-reason = $reason;
-
- $message = 'The promise was rejected';
-
- if ($description) {
- $message .= ' with reason: ' . $description;
- } elseif (is_string($reason)
- || (is_object($reason) && method_exists($reason, '__toString'))
- ) {
- $message .= ' with reason: ' . $this->reason;
- } elseif ($reason instanceof \JsonSerializable) {
- $message .= ' with reason: '
- . json_encode($this->reason, JSON_PRETTY_PRINT);
- }
-
- parent::__construct($message);
- }
-
- /**
- * Returns the rejection reason.
- *
- * @return mixed
- */
- public function getReason()
- {
- return $this->reason;
- }
-}
diff --git a/vendor/guzzlehttp/promises/src/TaskQueue.php b/vendor/guzzlehttp/promises/src/TaskQueue.php
deleted file mode 100644
index f0fba2c5..00000000
--- a/vendor/guzzlehttp/promises/src/TaskQueue.php
+++ /dev/null
@@ -1,67 +0,0 @@
-run();
- */
-class TaskQueue implements TaskQueueInterface
-{
- private $enableShutdown = true;
- private $queue = [];
-
- public function __construct($withShutdown = true)
- {
- if ($withShutdown) {
- register_shutdown_function(function () {
- if ($this->enableShutdown) {
- // Only run the tasks if an E_ERROR didn't occur.
- $err = error_get_last();
- if (!$err || ($err['type'] ^ E_ERROR)) {
- $this->run();
- }
- }
- });
- }
- }
-
- public function isEmpty()
- {
- return !$this->queue;
- }
-
- public function add(callable $task)
- {
- $this->queue[] = $task;
- }
-
- public function run()
- {
- while ($task = array_shift($this->queue)) {
- /** @var callable $task */
- $task();
- }
- }
-
- /**
- * The task queue will be run and exhausted by default when the process
- * exits IFF the exit is not the result of a PHP E_ERROR error.
- *
- * You can disable running the automatic shutdown of the queue by calling
- * this function. If you disable the task queue shutdown process, then you
- * MUST either run the task queue (as a result of running your event loop
- * or manually using the run() method) or wait on each outstanding promise.
- *
- * Note: This shutdown will occur before any destructors are triggered.
- */
- public function disableShutdown()
- {
- $this->enableShutdown = false;
- }
-}
diff --git a/vendor/guzzlehttp/promises/src/TaskQueueInterface.php b/vendor/guzzlehttp/promises/src/TaskQueueInterface.php
deleted file mode 100644
index 723d4d54..00000000
--- a/vendor/guzzlehttp/promises/src/TaskQueueInterface.php
+++ /dev/null
@@ -1,24 +0,0 @@
-
- * while ($eventLoop->isRunning()) {
- * GuzzleHttp\Promise\Utils::queue()->run();
- * }
- *
- *
- * @param TaskQueueInterface $assign Optionally specify a new queue instance.
- *
- * @return TaskQueueInterface
- */
- public static function queue(TaskQueueInterface $assign = null)
- {
- static $queue;
-
- if ($assign) {
- $queue = $assign;
- } elseif (!$queue) {
- $queue = new TaskQueue();
- }
-
- return $queue;
- }
-
- /**
- * Adds a function to run in the task queue when it is next `run()` and
- * returns a promise that is fulfilled or rejected with the result.
- *
- * @param callable $task Task function to run.
- *
- * @return PromiseInterface
- */
- public static function task(callable $task)
- {
- $queue = self::queue();
- $promise = new Promise([$queue, 'run']);
- $queue->add(function () use ($task, $promise) {
- try {
- if (Is::pending($promise)) {
- $promise->resolve($task());
- }
- } catch (\Throwable $e) {
- $promise->reject($e);
- } catch (\Exception $e) {
- $promise->reject($e);
- }
- });
-
- return $promise;
- }
-
- /**
- * Synchronously waits on a promise to resolve and returns an inspection
- * state array.
- *
- * Returns a state associative array containing a "state" key mapping to a
- * valid promise state. If the state of the promise is "fulfilled", the
- * array will contain a "value" key mapping to the fulfilled value of the
- * promise. If the promise is rejected, the array will contain a "reason"
- * key mapping to the rejection reason of the promise.
- *
- * @param PromiseInterface $promise Promise or value.
- *
- * @return array
- */
- public static function inspect(PromiseInterface $promise)
- {
- try {
- return [
- 'state' => PromiseInterface::FULFILLED,
- 'value' => $promise->wait()
- ];
- } catch (RejectionException $e) {
- return ['state' => PromiseInterface::REJECTED, 'reason' => $e->getReason()];
- } catch (\Throwable $e) {
- return ['state' => PromiseInterface::REJECTED, 'reason' => $e];
- } catch (\Exception $e) {
- return ['state' => PromiseInterface::REJECTED, 'reason' => $e];
- }
- }
-
- /**
- * Waits on all of the provided promises, but does not unwrap rejected
- * promises as thrown exception.
- *
- * Returns an array of inspection state arrays.
- *
- * @see inspect for the inspection state array format.
- *
- * @param PromiseInterface[] $promises Traversable of promises to wait upon.
- *
- * @return array
- */
- public static function inspectAll($promises)
- {
- $results = [];
- foreach ($promises as $key => $promise) {
- $results[$key] = inspect($promise);
- }
-
- return $results;
- }
-
- /**
- * Waits on all of the provided promises and returns the fulfilled values.
- *
- * Returns an array that contains the value of each promise (in the same
- * order the promises were provided). An exception is thrown if any of the
- * promises are rejected.
- *
- * @param iterable $promises Iterable of PromiseInterface objects to wait on.
- *
- * @return array
- *
- * @throws \Exception on error
- * @throws \Throwable on error in PHP >=7
- */
- public static function unwrap($promises)
- {
- $results = [];
- foreach ($promises as $key => $promise) {
- $results[$key] = $promise->wait();
- }
-
- return $results;
- }
-
- /**
- * Given an array of promises, return a promise that is fulfilled when all
- * the items in the array are fulfilled.
- *
- * The promise's fulfillment value is an array with fulfillment values at
- * respective positions to the original array. If any promise in the array
- * rejects, the returned promise is rejected with the rejection reason.
- *
- * @param mixed $promises Promises or values.
- * @param bool $recursive If true, resolves new promises that might have been added to the stack during its own resolution.
- *
- * @return PromiseInterface
- */
- public static function all($promises, $recursive = false)
- {
- $results = [];
- $promise = Each::of(
- $promises,
- function ($value, $idx) use (&$results) {
- $results[$idx] = $value;
- },
- function ($reason, $idx, Promise $aggregate) {
- $aggregate->reject($reason);
- }
- )->then(function () use (&$results) {
- ksort($results);
- return $results;
- });
-
- if (true === $recursive) {
- $promise = $promise->then(function ($results) use ($recursive, &$promises) {
- foreach ($promises as $promise) {
- if (Is::pending($promise)) {
- return self::all($promises, $recursive);
- }
- }
- return $results;
- });
- }
-
- return $promise;
- }
-
- /**
- * Initiate a competitive race between multiple promises or values (values
- * will become immediately fulfilled promises).
- *
- * When count amount of promises have been fulfilled, the returned promise
- * is fulfilled with an array that contains the fulfillment values of the
- * winners in order of resolution.
- *
- * This promise is rejected with a {@see AggregateException} if the number
- * of fulfilled promises is less than the desired $count.
- *
- * @param int $count Total number of promises.
- * @param mixed $promises Promises or values.
- *
- * @return PromiseInterface
- */
- public static function some($count, $promises)
- {
- $results = [];
- $rejections = [];
-
- return Each::of(
- $promises,
- function ($value, $idx, PromiseInterface $p) use (&$results, $count) {
- if (Is::settled($p)) {
- return;
- }
- $results[$idx] = $value;
- if (count($results) >= $count) {
- $p->resolve(null);
- }
- },
- function ($reason) use (&$rejections) {
- $rejections[] = $reason;
- }
- )->then(
- function () use (&$results, &$rejections, $count) {
- if (count($results) !== $count) {
- throw new AggregateException(
- 'Not enough promises to fulfill count',
- $rejections
- );
- }
- ksort($results);
- return array_values($results);
- }
- );
- }
-
- /**
- * Like some(), with 1 as count. However, if the promise fulfills, the
- * fulfillment value is not an array of 1 but the value directly.
- *
- * @param mixed $promises Promises or values.
- *
- * @return PromiseInterface
- */
- public static function any($promises)
- {
- return self::some(1, $promises)->then(function ($values) {
- return $values[0];
- });
- }
-
- /**
- * Returns a promise that is fulfilled when all of the provided promises have
- * been fulfilled or rejected.
- *
- * The returned promise is fulfilled with an array of inspection state arrays.
- *
- * @see inspect for the inspection state array format.
- *
- * @param mixed $promises Promises or values.
- *
- * @return PromiseInterface
- */
- public static function settle($promises)
- {
- $results = [];
-
- return Each::of(
- $promises,
- function ($value, $idx) use (&$results) {
- $results[$idx] = ['state' => PromiseInterface::FULFILLED, 'value' => $value];
- },
- function ($reason, $idx) use (&$results) {
- $results[$idx] = ['state' => PromiseInterface::REJECTED, 'reason' => $reason];
- }
- )->then(function () use (&$results) {
- ksort($results);
- return $results;
- });
- }
-}
diff --git a/vendor/guzzlehttp/promises/src/functions.php b/vendor/guzzlehttp/promises/src/functions.php
deleted file mode 100644
index c03d39d0..00000000
--- a/vendor/guzzlehttp/promises/src/functions.php
+++ /dev/null
@@ -1,363 +0,0 @@
-
- * while ($eventLoop->isRunning()) {
- * GuzzleHttp\Promise\queue()->run();
- * }
- *
- *
- * @param TaskQueueInterface $assign Optionally specify a new queue instance.
- *
- * @return TaskQueueInterface
- *
- * @deprecated queue will be removed in guzzlehttp/promises:2.0. Use Utils::queue instead.
- */
-function queue(TaskQueueInterface $assign = null)
-{
- return Utils::queue($assign);
-}
-
-/**
- * Adds a function to run in the task queue when it is next `run()` and returns
- * a promise that is fulfilled or rejected with the result.
- *
- * @param callable $task Task function to run.
- *
- * @return PromiseInterface
- *
- * @deprecated task will be removed in guzzlehttp/promises:2.0. Use Utils::task instead.
- */
-function task(callable $task)
-{
- return Utils::task($task);
-}
-
-/**
- * Creates a promise for a value if the value is not a promise.
- *
- * @param mixed $value Promise or value.
- *
- * @return PromiseInterface
- *
- * @deprecated promise_for will be removed in guzzlehttp/promises:2.0. Use Create::promiseFor instead.
- */
-function promise_for($value)
-{
- return Create::promiseFor($value);
-}
-
-/**
- * Creates a rejected promise for a reason if the reason is not a promise. If
- * the provided reason is a promise, then it is returned as-is.
- *
- * @param mixed $reason Promise or reason.
- *
- * @return PromiseInterface
- *
- * @deprecated rejection_for will be removed in guzzlehttp/promises:2.0. Use Create::rejectionFor instead.
- */
-function rejection_for($reason)
-{
- return Create::rejectionFor($reason);
-}
-
-/**
- * Create an exception for a rejected promise value.
- *
- * @param mixed $reason
- *
- * @return \Exception|\Throwable
- *
- * @deprecated exception_for will be removed in guzzlehttp/promises:2.0. Use Create::exceptionFor instead.
- */
-function exception_for($reason)
-{
- return Create::exceptionFor($reason);
-}
-
-/**
- * Returns an iterator for the given value.
- *
- * @param mixed $value
- *
- * @return \Iterator
- *
- * @deprecated iter_for will be removed in guzzlehttp/promises:2.0. Use Create::iterFor instead.
- */
-function iter_for($value)
-{
- return Create::iterFor($value);
-}
-
-/**
- * Synchronously waits on a promise to resolve and returns an inspection state
- * array.
- *
- * Returns a state associative array containing a "state" key mapping to a
- * valid promise state. If the state of the promise is "fulfilled", the array
- * will contain a "value" key mapping to the fulfilled value of the promise. If
- * the promise is rejected, the array will contain a "reason" key mapping to
- * the rejection reason of the promise.
- *
- * @param PromiseInterface $promise Promise or value.
- *
- * @return array
- *
- * @deprecated inspect will be removed in guzzlehttp/promises:2.0. Use Utils::inspect instead.
- */
-function inspect(PromiseInterface $promise)
-{
- return Utils::inspect($promise);
-}
-
-/**
- * Waits on all of the provided promises, but does not unwrap rejected promises
- * as thrown exception.
- *
- * Returns an array of inspection state arrays.
- *
- * @see inspect for the inspection state array format.
- *
- * @param PromiseInterface[] $promises Traversable of promises to wait upon.
- *
- * @return array
- *
- * @deprecated inspect will be removed in guzzlehttp/promises:2.0. Use Utils::inspectAll instead.
- */
-function inspect_all($promises)
-{
- return Utils::inspectAll($promises);
-}
-
-/**
- * Waits on all of the provided promises and returns the fulfilled values.
- *
- * Returns an array that contains the value of each promise (in the same order
- * the promises were provided). An exception is thrown if any of the promises
- * are rejected.
- *
- * @param iterable $promises Iterable of PromiseInterface objects to wait on.
- *
- * @return array
- *
- * @throws \Exception on error
- * @throws \Throwable on error in PHP >=7
- *
- * @deprecated unwrap will be removed in guzzlehttp/promises:2.0. Use Utils::unwrap instead.
- */
-function unwrap($promises)
-{
- return Utils::unwrap($promises);
-}
-
-/**
- * Given an array of promises, return a promise that is fulfilled when all the
- * items in the array are fulfilled.
- *
- * The promise's fulfillment value is an array with fulfillment values at
- * respective positions to the original array. If any promise in the array
- * rejects, the returned promise is rejected with the rejection reason.
- *
- * @param mixed $promises Promises or values.
- * @param bool $recursive If true, resolves new promises that might have been added to the stack during its own resolution.
- *
- * @return PromiseInterface
- *
- * @deprecated all will be removed in guzzlehttp/promises:2.0. Use Utils::all instead.
- */
-function all($promises, $recursive = false)
-{
- return Utils::all($promises, $recursive);
-}
-
-/**
- * Initiate a competitive race between multiple promises or values (values will
- * become immediately fulfilled promises).
- *
- * When count amount of promises have been fulfilled, the returned promise is
- * fulfilled with an array that contains the fulfillment values of the winners
- * in order of resolution.
- *
- * This promise is rejected with a {@see AggregateException} if the number of
- * fulfilled promises is less than the desired $count.
- *
- * @param int $count Total number of promises.
- * @param mixed $promises Promises or values.
- *
- * @return PromiseInterface
- *
- * @deprecated some will be removed in guzzlehttp/promises:2.0. Use Utils::some instead.
- */
-function some($count, $promises)
-{
- return Utils::some($count, $promises);
-}
-
-/**
- * Like some(), with 1 as count. However, if the promise fulfills, the
- * fulfillment value is not an array of 1 but the value directly.
- *
- * @param mixed $promises Promises or values.
- *
- * @return PromiseInterface
- *
- * @deprecated any will be removed in guzzlehttp/promises:2.0. Use Utils::any instead.
- */
-function any($promises)
-{
- return Utils::any($promises);
-}
-
-/**
- * Returns a promise that is fulfilled when all of the provided promises have
- * been fulfilled or rejected.
- *
- * The returned promise is fulfilled with an array of inspection state arrays.
- *
- * @see inspect for the inspection state array format.
- *
- * @param mixed $promises Promises or values.
- *
- * @return PromiseInterface
- *
- * @deprecated settle will be removed in guzzlehttp/promises:2.0. Use Utils::settle instead.
- */
-function settle($promises)
-{
- return Utils::settle($promises);
-}
-
-/**
- * Given an iterator that yields promises or values, returns a promise that is
- * fulfilled with a null value when the iterator has been consumed or the
- * aggregate promise has been fulfilled or rejected.
- *
- * $onFulfilled is a function that accepts the fulfilled value, iterator index,
- * and the aggregate promise. The callback can invoke any necessary side
- * effects and choose to resolve or reject the aggregate if needed.
- *
- * $onRejected is a function that accepts the rejection reason, iterator index,
- * and the aggregate promise. The callback can invoke any necessary side
- * effects and choose to resolve or reject the aggregate if needed.
- *
- * @param mixed $iterable Iterator or array to iterate over.
- * @param callable $onFulfilled
- * @param callable $onRejected
- *
- * @return PromiseInterface
- *
- * @deprecated each will be removed in guzzlehttp/promises:2.0. Use Each::of instead.
- */
-function each(
- $iterable,
- callable $onFulfilled = null,
- callable $onRejected = null
-) {
- return Each::of($iterable, $onFulfilled, $onRejected);
-}
-
-/**
- * Like each, but only allows a certain number of outstanding promises at any
- * given time.
- *
- * $concurrency may be an integer or a function that accepts the number of
- * pending promises and returns a numeric concurrency limit value to allow for
- * dynamic a concurrency size.
- *
- * @param mixed $iterable
- * @param int|callable $concurrency
- * @param callable $onFulfilled
- * @param callable $onRejected
- *
- * @return PromiseInterface
- *
- * @deprecated each_limit will be removed in guzzlehttp/promises:2.0. Use Each::ofLimit instead.
- */
-function each_limit(
- $iterable,
- $concurrency,
- callable $onFulfilled = null,
- callable $onRejected = null
-) {
- return Each::ofLimit($iterable, $concurrency, $onFulfilled, $onRejected);
-}
-
-/**
- * Like each_limit, but ensures that no promise in the given $iterable argument
- * is rejected. If any promise is rejected, then the aggregate promise is
- * rejected with the encountered rejection.
- *
- * @param mixed $iterable
- * @param int|callable $concurrency
- * @param callable $onFulfilled
- *
- * @return PromiseInterface
- *
- * @deprecated each_limit_all will be removed in guzzlehttp/promises:2.0. Use Each::ofLimitAll instead.
- */
-function each_limit_all(
- $iterable,
- $concurrency,
- callable $onFulfilled = null
-) {
- return Each::ofLimitAll($iterable, $concurrency, $onFulfilled);
-}
-
-/**
- * Returns true if a promise is fulfilled.
- *
- * @return bool
- *
- * @deprecated is_fulfilled will be removed in guzzlehttp/promises:2.0. Use Is::fulfilled instead.
- */
-function is_fulfilled(PromiseInterface $promise)
-{
- return Is::fulfilled($promise);
-}
-
-/**
- * Returns true if a promise is rejected.
- *
- * @return bool
- *
- * @deprecated is_rejected will be removed in guzzlehttp/promises:2.0. Use Is::rejected instead.
- */
-function is_rejected(PromiseInterface $promise)
-{
- return Is::rejected($promise);
-}
-
-/**
- * Returns true if a promise is fulfilled or rejected.
- *
- * @return bool
- *
- * @deprecated is_settled will be removed in guzzlehttp/promises:2.0. Use Is::settled instead.
- */
-function is_settled(PromiseInterface $promise)
-{
- return Is::settled($promise);
-}
-
-/**
- * Create a new coroutine.
- *
- * @see Coroutine
- *
- * @return PromiseInterface
- *
- * @deprecated coroutine will be removed in guzzlehttp/promises:2.0. Use Coroutine::of instead.
- */
-function coroutine(callable $generatorFn)
-{
- return Coroutine::of($generatorFn);
-}
diff --git a/vendor/guzzlehttp/promises/src/functions_include.php b/vendor/guzzlehttp/promises/src/functions_include.php
deleted file mode 100644
index 34cd1710..00000000
--- a/vendor/guzzlehttp/promises/src/functions_include.php
+++ /dev/null
@@ -1,6 +0,0 @@
-
- This issue has been automatically marked as stale because it has not had
- recent activity. It will be closed after 2 weeks if no further activity occurs. Thank you
- for your contributions.
-# Comment to post when closing a stale issue. Set to `false` to disable
-closeComment: false
diff --git a/vendor/guzzlehttp/psr7/.github/workflows/ci.yml b/vendor/guzzlehttp/psr7/.github/workflows/ci.yml
deleted file mode 100644
index eda7dceb..00000000
--- a/vendor/guzzlehttp/psr7/.github/workflows/ci.yml
+++ /dev/null
@@ -1,34 +0,0 @@
-name: CI
-
-on:
- pull_request:
-
-jobs:
- build:
- name: Build
- runs-on: ubuntu-latest
- strategy:
- max-parallel: 10
- matrix:
- php: ['5.5', '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1']
-
- steps:
- - name: Set up PHP
- uses: shivammathur/setup-php@v2
- with:
- php-version: ${{ matrix.php }}
- coverage: 'none'
- extensions: mbstring
-
- - name: Checkout code
- uses: actions/checkout@v2
-
- - name: Mimic PHP 8.0
- run: composer config platform.php 8.0.999
- if: matrix.php > 8
-
- - name: Install dependencies
- run: composer update --no-interaction --no-progress
-
- - name: Run tests
- run: make test
diff --git a/vendor/guzzlehttp/psr7/.github/workflows/integration.yml b/vendor/guzzlehttp/psr7/.github/workflows/integration.yml
deleted file mode 100644
index 3c31f9ef..00000000
--- a/vendor/guzzlehttp/psr7/.github/workflows/integration.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-name: Integration
-
-on:
- pull_request:
-
-jobs:
-
- build:
- name: Test
- runs-on: ubuntu-latest
- strategy:
- max-parallel: 10
- matrix:
- php: ['7.2', '7.3', '7.4', '8.0']
-
- steps:
- - name: Set up PHP
- uses: shivammathur/setup-php@v2
- with:
- php-version: ${{ matrix.php }}
- coverage: none
-
- - name: Checkout code
- uses: actions/checkout@v2
-
- - name: Download dependencies
- uses: ramsey/composer-install@v1
- with:
- composer-options: --no-interaction --optimize-autoloader
-
- - name: Start server
- run: php -S 127.0.0.1:10002 tests/Integration/server.php &
-
- - name: Run tests
- env:
- TEST_SERVER: 127.0.0.1:10002
- run: ./vendor/bin/phpunit --testsuite Integration
diff --git a/vendor/guzzlehttp/psr7/.github/workflows/static.yml b/vendor/guzzlehttp/psr7/.github/workflows/static.yml
deleted file mode 100644
index ab4d68ba..00000000
--- a/vendor/guzzlehttp/psr7/.github/workflows/static.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-name: Static analysis
-
-on:
- pull_request:
-
-jobs:
- php-cs-fixer:
- name: PHP-CS-Fixer
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout code
- uses: actions/checkout@v2
-
- - name: Setup PHP
- uses: shivammathur/setup-php@v2
- with:
- php-version: '7.4'
- coverage: none
- extensions: mbstring
-
- - name: Download dependencies
- run: composer update --no-interaction --no-progress
-
- - name: Download PHP CS Fixer
- run: composer require "friendsofphp/php-cs-fixer:2.18.4"
-
- - name: Execute PHP CS Fixer
- run: vendor/bin/php-cs-fixer fix --diff-format udiff --dry-run
diff --git a/vendor/guzzlehttp/psr7/.php_cs.dist b/vendor/guzzlehttp/psr7/.php_cs.dist
deleted file mode 100644
index e4f0bd53..00000000
--- a/vendor/guzzlehttp/psr7/.php_cs.dist
+++ /dev/null
@@ -1,56 +0,0 @@
-setRiskyAllowed(true)
- ->setRules([
- '@PSR2' => true,
- 'array_syntax' => ['syntax' => 'short'],
- 'concat_space' => ['spacing' => 'one'],
- 'declare_strict_types' => false,
- 'final_static_access' => true,
- 'fully_qualified_strict_types' => true,
- 'header_comment' => false,
- 'is_null' => ['use_yoda_style' => true],
- 'list_syntax' => ['syntax' => 'long'],
- 'lowercase_cast' => true,
- 'magic_method_casing' => true,
- 'modernize_types_casting' => true,
- 'multiline_comment_opening_closing' => true,
- 'no_alias_functions' => true,
- 'no_alternative_syntax' => true,
- 'no_blank_lines_after_phpdoc' => true,
- 'no_empty_comment' => true,
- 'no_empty_phpdoc' => true,
- 'no_empty_statement' => true,
- 'no_extra_blank_lines' => true,
- 'no_leading_import_slash' => true,
- 'no_trailing_comma_in_singleline_array' => true,
- 'no_unset_cast' => true,
- 'no_unused_imports' => true,
- 'no_whitespace_in_blank_line' => true,
- 'ordered_imports' => true,
- 'php_unit_ordered_covers' => true,
- 'php_unit_test_annotation' => ['style' => 'prefix'],
- 'php_unit_test_case_static_method_calls' => ['call_type' => 'self'],
- 'phpdoc_align' => ['align' => 'vertical'],
- 'phpdoc_no_useless_inheritdoc' => true,
- 'phpdoc_scalar' => true,
- 'phpdoc_separation' => true,
- 'phpdoc_single_line_var_spacing' => true,
- 'phpdoc_trim' => true,
- 'phpdoc_trim_consecutive_blank_line_separation' => true,
- 'phpdoc_types' => true,
- 'phpdoc_types_order' => ['null_adjustment' => 'always_last', 'sort_algorithm' => 'none'],
- 'phpdoc_var_without_name' => true,
- 'single_trait_insert_per_statement' => true,
- 'standardize_not_equals' => true,
- ])
- ->setFinder(
- PhpCsFixer\Finder::create()
- ->in(__DIR__.'/src')
- ->in(__DIR__.'/tests')
- ->name('*.php')
- )
-;
-
-return $config;
diff --git a/vendor/guzzlehttp/psr7/CHANGELOG.md b/vendor/guzzlehttp/psr7/CHANGELOG.md
deleted file mode 100644
index f40736c4..00000000
--- a/vendor/guzzlehttp/psr7/CHANGELOG.md
+++ /dev/null
@@ -1,300 +0,0 @@
-# Change Log
-
-
-All notable changes to this project will be documented in this file.
-
-The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
-and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
-
-
-## Unreleased
-
-## 1.8.3 - 2021-10-05
-
-### Fixed
-
-- Return `null` in caching stream size if remote size is `null`
-
-## 1.8.2 - 2021-04-26
-
-### Fixed
-
-- Handle possibly unset `url` in `stream_get_meta_data`
-
-## 1.8.1 - 2021-03-21
-
-### Fixed
-
-- Issue parsing IPv6 URLs
-- Issue modifying ServerRequest lost all its attributes
-
-## 1.8.0 - 2021-03-21
-
-### Added
-
-- Locale independent URL parsing
-- Most classes got a `@final` annotation to prepare for 2.0
-
-### Fixed
-
-- Issue when creating stream from `php://input` and curl-ext is not installed
-- Broken `Utils::tryFopen()` on PHP 8
-
-## 1.7.0 - 2020-09-30
-
-### Added
-
-- Replaced functions by static methods
-
-### Fixed
-
-- Converting a non-seekable stream to a string
-- Handle multiple Set-Cookie correctly
-- Ignore array keys in header values when merging
-- Allow multibyte characters to be parsed in `Message:bodySummary()`
-
-### Changed
-
-- Restored partial HHVM 3 support
-
-
-## [1.6.1] - 2019-07-02
-
-### Fixed
-
-- Accept null and bool header values again
-
-
-## [1.6.0] - 2019-06-30
-
-### Added
-
-- Allowed version `^3.0` of `ralouphie/getallheaders` dependency (#244)
-- Added MIME type for WEBP image format (#246)
-- Added more validation of values according to PSR-7 and RFC standards, e.g. status code range (#250, #272)
-
-### Changed
-
-- Tests don't pass with HHVM 4.0, so HHVM support got dropped. Other libraries like composer have done the same. (#262)
-- Accept port number 0 to be valid (#270)
-
-### Fixed
-
-- Fixed subsequent reads from `php://input` in ServerRequest (#247)
-- Fixed readable/writable detection for certain stream modes (#248)
-- Fixed encoding of special characters in the `userInfo` component of an URI (#253)
-
-
-## [1.5.2] - 2018-12-04
-
-### Fixed
-
-- Check body size when getting the message summary
-
-
-## [1.5.1] - 2018-12-04
-
-### Fixed
-
-- Get the summary of a body only if it is readable
-
-
-## [1.5.0] - 2018-12-03
-
-### Added
-
-- Response first-line to response string exception (fixes #145)
-- A test for #129 behavior
-- `get_message_body_summary` function in order to get the message summary
-- `3gp` and `mkv` mime types
-
-### Changed
-
-- Clarify exception message when stream is detached
-
-### Deprecated
-
-- Deprecated parsing folded header lines as per RFC 7230
-
-### Fixed
-
-- Fix `AppendStream::detach` to not close streams
-- `InflateStream` preserves `isSeekable` attribute of the underlying stream
-- `ServerRequest::getUriFromGlobals` to support URLs in query parameters
-
-
-Several other fixes and improvements.
-
-
-## [1.4.2] - 2017-03-20
-
-### Fixed
-
-- Reverted BC break to `Uri::resolve` and `Uri::removeDotSegments` by removing
- calls to `trigger_error` when deprecated methods are invoked.
-
-
-## [1.4.1] - 2017-02-27
-
-### Added
-
-- Rriggering of silenced deprecation warnings.
-
-### Fixed
-
-- Reverted BC break by reintroducing behavior to automagically fix a URI with a
- relative path and an authority by adding a leading slash to the path. It's only
- deprecated now.
-
-
-## [1.4.0] - 2017-02-21
-
-### Added
-
-- Added common URI utility methods based on RFC 3986 (see documentation in the readme):
- - `Uri::isDefaultPort`
- - `Uri::isAbsolute`
- - `Uri::isNetworkPathReference`
- - `Uri::isAbsolutePathReference`
- - `Uri::isRelativePathReference`
- - `Uri::isSameDocumentReference`
- - `Uri::composeComponents`
- - `UriNormalizer::normalize`
- - `UriNormalizer::isEquivalent`
- - `UriResolver::relativize`
-
-### Changed
-
-- Ensure `ServerRequest::getUriFromGlobals` returns a URI in absolute form.
-- Allow `parse_response` to parse a response without delimiting space and reason.
-- Ensure each URI modification results in a valid URI according to PSR-7 discussions.
- Invalid modifications will throw an exception instead of returning a wrong URI or
- doing some magic.
- - `(new Uri)->withPath('foo')->withHost('example.com')` will throw an exception
- because the path of a URI with an authority must start with a slash "/" or be empty
- - `(new Uri())->withScheme('http')` will return `'http://localhost'`
-
-### Deprecated
-
-- `Uri::resolve` in favor of `UriResolver::resolve`
-- `Uri::removeDotSegments` in favor of `UriResolver::removeDotSegments`
-
-### Fixed
-
-- `Stream::read` when length parameter <= 0.
-- `copy_to_stream` reads bytes in chunks instead of `maxLen` into memory.
-- `ServerRequest::getUriFromGlobals` when `Host` header contains port.
-- Compatibility of URIs with `file` scheme and empty host.
-
-
-## [1.3.1] - 2016-06-25
-
-### Fixed
-
-- `Uri::__toString` for network path references, e.g. `//example.org`.
-- Missing lowercase normalization for host.
-- Handling of URI components in case they are `'0'` in a lot of places,
- e.g. as a user info password.
-- `Uri::withAddedHeader` to correctly merge headers with different case.
-- Trimming of header values in `Uri::withAddedHeader`. Header values may
- be surrounded by whitespace which should be ignored according to RFC 7230
- Section 3.2.4. This does not apply to header names.
-- `Uri::withAddedHeader` with an array of header values.
-- `Uri::resolve` when base path has no slash and handling of fragment.
-- Handling of encoding in `Uri::with(out)QueryValue` so one can pass the
- key/value both in encoded as well as decoded form to those methods. This is
- consistent with withPath, withQuery etc.
-- `ServerRequest::withoutAttribute` when attribute value is null.
-
-
-## [1.3.0] - 2016-04-13
-
-### Added
-
-- Remaining interfaces needed for full PSR7 compatibility
- (ServerRequestInterface, UploadedFileInterface, etc.).
-- Support for stream_for from scalars.
-
-### Changed
-
-- Can now extend Uri.
-
-### Fixed
-- A bug in validating request methods by making it more permissive.
-
-
-## [1.2.3] - 2016-02-18
-
-### Fixed
-
-- Support in `GuzzleHttp\Psr7\CachingStream` for seeking forward on remote
- streams, which can sometimes return fewer bytes than requested with `fread`.
-- Handling of gzipped responses with FNAME headers.
-
-
-## [1.2.2] - 2016-01-22
-
-### Added
-
-- Support for URIs without any authority.
-- Support for HTTP 451 'Unavailable For Legal Reasons.'
-- Support for using '0' as a filename.
-- Support for including non-standard ports in Host headers.
-
-
-## [1.2.1] - 2015-11-02
-
-### Changes
-
-- Now supporting negative offsets when seeking to SEEK_END.
-
-
-## [1.2.0] - 2015-08-15
-
-### Changed
-
-- Body as `"0"` is now properly added to a response.
-- Now allowing forward seeking in CachingStream.
-- Now properly parsing HTTP requests that contain proxy targets in
- `parse_request`.
-- functions.php is now conditionally required.
-- user-info is no longer dropped when resolving URIs.
-
-
-## [1.1.0] - 2015-06-24
-
-### Changed
-
-- URIs can now be relative.
-- `multipart/form-data` headers are now overridden case-insensitively.
-- URI paths no longer encode the following characters because they are allowed
- in URIs: "(", ")", "*", "!", "'"
-- A port is no longer added to a URI when the scheme is missing and no port is
- present.
-
-
-## 1.0.0 - 2015-05-19
-
-Initial release.
-
-Currently unsupported:
-
-- `Psr\Http\Message\ServerRequestInterface`
-- `Psr\Http\Message\UploadedFileInterface`
-
-
-
-[1.6.0]: https://github.com/guzzle/psr7/compare/1.5.2...1.6.0
-[1.5.2]: https://github.com/guzzle/psr7/compare/1.5.1...1.5.2
-[1.5.1]: https://github.com/guzzle/psr7/compare/1.5.0...1.5.1
-[1.5.0]: https://github.com/guzzle/psr7/compare/1.4.2...1.5.0
-[1.4.2]: https://github.com/guzzle/psr7/compare/1.4.1...1.4.2
-[1.4.1]: https://github.com/guzzle/psr7/compare/1.4.0...1.4.1
-[1.4.0]: https://github.com/guzzle/psr7/compare/1.3.1...1.4.0
-[1.3.1]: https://github.com/guzzle/psr7/compare/1.3.0...1.3.1
-[1.3.0]: https://github.com/guzzle/psr7/compare/1.2.3...1.3.0
-[1.2.3]: https://github.com/guzzle/psr7/compare/1.2.2...1.2.3
-[1.2.2]: https://github.com/guzzle/psr7/compare/1.2.1...1.2.2
-[1.2.1]: https://github.com/guzzle/psr7/compare/1.2.0...1.2.1
-[1.2.0]: https://github.com/guzzle/psr7/compare/1.1.0...1.2.0
-[1.1.0]: https://github.com/guzzle/psr7/compare/1.0.0...1.1.0
diff --git a/vendor/guzzlehttp/psr7/LICENSE b/vendor/guzzlehttp/psr7/LICENSE
deleted file mode 100644
index 51c7ec81..00000000
--- a/vendor/guzzlehttp/psr7/LICENSE
+++ /dev/null
@@ -1,26 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Michael Dowling
-Copyright (c) 2015 Márk Sági-Kazár
-Copyright (c) 2015 Graham Campbell
-Copyright (c) 2016 Tobias Schultze
-Copyright (c) 2016 George Mponos
-Copyright (c) 2018 Tobias Nyholm
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/guzzlehttp/psr7/README.md b/vendor/guzzlehttp/psr7/README.md
deleted file mode 100644
index 464cae4f..00000000
--- a/vendor/guzzlehttp/psr7/README.md
+++ /dev/null
@@ -1,824 +0,0 @@
-# PSR-7 Message Implementation
-
-This repository contains a full [PSR-7](http://www.php-fig.org/psr/psr-7/)
-message implementation, several stream decorators, and some helpful
-functionality like query string parsing.
-
-
-[](https://travis-ci.org/guzzle/psr7)
-
-
-# Stream implementation
-
-This package comes with a number of stream implementations and stream
-decorators.
-
-
-## AppendStream
-
-`GuzzleHttp\Psr7\AppendStream`
-
-Reads from multiple streams, one after the other.
-
-```php
-use GuzzleHttp\Psr7;
-
-$a = Psr7\Utils::streamFor('abc, ');
-$b = Psr7\Utils::streamFor('123.');
-$composed = new Psr7\AppendStream([$a, $b]);
-
-$composed->addStream(Psr7\Utils::streamFor(' Above all listen to me'));
-
-echo $composed; // abc, 123. Above all listen to me.
-```
-
-
-## BufferStream
-
-`GuzzleHttp\Psr7\BufferStream`
-
-Provides a buffer stream that can be written to fill a buffer, and read
-from to remove bytes from the buffer.
-
-This stream returns a "hwm" metadata value that tells upstream consumers
-what the configured high water mark of the stream is, or the maximum
-preferred size of the buffer.
-
-```php
-use GuzzleHttp\Psr7;
-
-// When more than 1024 bytes are in the buffer, it will begin returning
-// false to writes. This is an indication that writers should slow down.
-$buffer = new Psr7\BufferStream(1024);
-```
-
-
-## CachingStream
-
-The CachingStream is used to allow seeking over previously read bytes on
-non-seekable streams. This can be useful when transferring a non-seekable
-entity body fails due to needing to rewind the stream (for example, resulting
-from a redirect). Data that is read from the remote stream will be buffered in
-a PHP temp stream so that previously read bytes are cached first in memory,
-then on disk.
-
-```php
-use GuzzleHttp\Psr7;
-
-$original = Psr7\Utils::streamFor(fopen('http://www.google.com', 'r'));
-$stream = new Psr7\CachingStream($original);
-
-$stream->read(1024);
-echo $stream->tell();
-// 1024
-
-$stream->seek(0);
-echo $stream->tell();
-// 0
-```
-
-
-## DroppingStream
-
-`GuzzleHttp\Psr7\DroppingStream`
-
-Stream decorator that begins dropping data once the size of the underlying
-stream becomes too full.
-
-```php
-use GuzzleHttp\Psr7;
-
-// Create an empty stream
-$stream = Psr7\Utils::streamFor();
-
-// Start dropping data when the stream has more than 10 bytes
-$dropping = new Psr7\DroppingStream($stream, 10);
-
-$dropping->write('01234567890123456789');
-echo $stream; // 0123456789
-```
-
-
-## FnStream
-
-`GuzzleHttp\Psr7\FnStream`
-
-Compose stream implementations based on a hash of functions.
-
-Allows for easy testing and extension of a provided stream without needing
-to create a concrete class for a simple extension point.
-
-```php
-
-use GuzzleHttp\Psr7;
-
-$stream = Psr7\Utils::streamFor('hi');
-$fnStream = Psr7\FnStream::decorate($stream, [
- 'rewind' => function () use ($stream) {
- echo 'About to rewind - ';
- $stream->rewind();
- echo 'rewound!';
- }
-]);
-
-$fnStream->rewind();
-// Outputs: About to rewind - rewound!
-```
-
-
-## InflateStream
-
-`GuzzleHttp\Psr7\InflateStream`
-
-Uses PHP's zlib.inflate filter to inflate deflate or gzipped content.
-
-This stream decorator skips the first 10 bytes of the given stream to remove
-the gzip header, converts the provided stream to a PHP stream resource,
-then appends the zlib.inflate filter. The stream is then converted back
-to a Guzzle stream resource to be used as a Guzzle stream.
-
-
-## LazyOpenStream
-
-`GuzzleHttp\Psr7\LazyOpenStream`
-
-Lazily reads or writes to a file that is opened only after an IO operation
-take place on the stream.
-
-```php
-use GuzzleHttp\Psr7;
-
-$stream = new Psr7\LazyOpenStream('/path/to/file', 'r');
-// The file has not yet been opened...
-
-echo $stream->read(10);
-// The file is opened and read from only when needed.
-```
-
-
-## LimitStream
-
-`GuzzleHttp\Psr7\LimitStream`
-
-LimitStream can be used to read a subset or slice of an existing stream object.
-This can be useful for breaking a large file into smaller pieces to be sent in
-chunks (e.g. Amazon S3's multipart upload API).
-
-```php
-use GuzzleHttp\Psr7;
-
-$original = Psr7\Utils::streamFor(fopen('/tmp/test.txt', 'r+'));
-echo $original->getSize();
-// >>> 1048576
-
-// Limit the size of the body to 1024 bytes and start reading from byte 2048
-$stream = new Psr7\LimitStream($original, 1024, 2048);
-echo $stream->getSize();
-// >>> 1024
-echo $stream->tell();
-// >>> 0
-```
-
-
-## MultipartStream
-
-`GuzzleHttp\Psr7\MultipartStream`
-
-Stream that when read returns bytes for a streaming multipart or
-multipart/form-data stream.
-
-
-## NoSeekStream
-
-`GuzzleHttp\Psr7\NoSeekStream`
-
-NoSeekStream wraps a stream and does not allow seeking.
-
-```php
-use GuzzleHttp\Psr7;
-
-$original = Psr7\Utils::streamFor('foo');
-$noSeek = new Psr7\NoSeekStream($original);
-
-echo $noSeek->read(3);
-// foo
-var_export($noSeek->isSeekable());
-// false
-$noSeek->seek(0);
-var_export($noSeek->read(3));
-// NULL
-```
-
-
-## PumpStream
-
-`GuzzleHttp\Psr7\PumpStream`
-
-Provides a read only stream that pumps data from a PHP callable.
-
-When invoking the provided callable, the PumpStream will pass the amount of
-data requested to read to the callable. The callable can choose to ignore
-this value and return fewer or more bytes than requested. Any extra data
-returned by the provided callable is buffered internally until drained using
-the read() function of the PumpStream. The provided callable MUST return
-false when there is no more data to read.
-
-
-## Implementing stream decorators
-
-Creating a stream decorator is very easy thanks to the
-`GuzzleHttp\Psr7\StreamDecoratorTrait`. This trait provides methods that
-implement `Psr\Http\Message\StreamInterface` by proxying to an underlying
-stream. Just `use` the `StreamDecoratorTrait` and implement your custom
-methods.
-
-For example, let's say we wanted to call a specific function each time the last
-byte is read from a stream. This could be implemented by overriding the
-`read()` method.
-
-```php
-use Psr\Http\Message\StreamInterface;
-use GuzzleHttp\Psr7\StreamDecoratorTrait;
-
-class EofCallbackStream implements StreamInterface
-{
- use StreamDecoratorTrait;
-
- private $callback;
-
- public function __construct(StreamInterface $stream, callable $cb)
- {
- $this->stream = $stream;
- $this->callback = $cb;
- }
-
- public function read($length)
- {
- $result = $this->stream->read($length);
-
- // Invoke the callback when EOF is hit.
- if ($this->eof()) {
- call_user_func($this->callback);
- }
-
- return $result;
- }
-}
-```
-
-This decorator could be added to any existing stream and used like so:
-
-```php
-use GuzzleHttp\Psr7;
-
-$original = Psr7\Utils::streamFor('foo');
-
-$eofStream = new EofCallbackStream($original, function () {
- echo 'EOF!';
-});
-
-$eofStream->read(2);
-$eofStream->read(1);
-// echoes "EOF!"
-$eofStream->seek(0);
-$eofStream->read(3);
-// echoes "EOF!"
-```
-
-
-## PHP StreamWrapper
-
-You can use the `GuzzleHttp\Psr7\StreamWrapper` class if you need to use a
-PSR-7 stream as a PHP stream resource.
-
-Use the `GuzzleHttp\Psr7\StreamWrapper::getResource()` method to create a PHP
-stream from a PSR-7 stream.
-
-```php
-use GuzzleHttp\Psr7\StreamWrapper;
-
-$stream = GuzzleHttp\Psr7\Utils::streamFor('hello!');
-$resource = StreamWrapper::getResource($stream);
-echo fread($resource, 6); // outputs hello!
-```
-
-
-# Static API
-
-There are various static methods available under the `GuzzleHttp\Psr7` namespace.
-
-
-## `GuzzleHttp\Psr7\Message::toString`
-
-`public static function toString(MessageInterface $message): string`
-
-Returns the string representation of an HTTP message.
-
-```php
-$request = new GuzzleHttp\Psr7\Request('GET', 'http://example.com');
-echo GuzzleHttp\Psr7\Message::toString($request);
-```
-
-
-## `GuzzleHttp\Psr7\Message::bodySummary`
-
-`public static function bodySummary(MessageInterface $message, int $truncateAt = 120): string|null`
-
-Get a short summary of the message body.
-
-Will return `null` if the response is not printable.
-
-
-## `GuzzleHttp\Psr7\Message::rewindBody`
-
-`public static function rewindBody(MessageInterface $message): void`
-
-Attempts to rewind a message body and throws an exception on failure.
-
-The body of the message will only be rewound if a call to `tell()`
-returns a value other than `0`.
-
-
-## `GuzzleHttp\Psr7\Message::parseMessage`
-
-`public static function parseMessage(string $message): array`
-
-Parses an HTTP message into an associative array.
-
-The array contains the "start-line" key containing the start line of
-the message, "headers" key containing an associative array of header
-array values, and a "body" key containing the body of the message.
-
-
-## `GuzzleHttp\Psr7\Message::parseRequestUri`
-
-`public static function parseRequestUri(string $path, array $headers): string`
-
-Constructs a URI for an HTTP request message.
-
-
-## `GuzzleHttp\Psr7\Message::parseRequest`
-
-`public static function parseRequest(string $message): Request`
-
-Parses a request message string into a request object.
-
-
-## `GuzzleHttp\Psr7\Message::parseResponse`
-
-`public static function parseResponse(string $message): Response`
-
-Parses a response message string into a response object.
-
-
-## `GuzzleHttp\Psr7\Header::parse`
-
-`public static function parse(string|array $header): array`
-
-Parse an array of header values containing ";" separated data into an
-array of associative arrays representing the header key value pair data
-of the header. When a parameter does not contain a value, but just
-contains a key, this function will inject a key with a '' string value.
-
-
-## `GuzzleHttp\Psr7\Header::normalize`
-
-`public static function normalize(string|array $header): array`
-
-Converts an array of header values that may contain comma separated
-headers into an array of headers with no comma separated values.
-
-
-## `GuzzleHttp\Psr7\Query::parse`
-
-`public static function parse(string $str, int|bool $urlEncoding = true): array`
-
-Parse a query string into an associative array.
-
-If multiple values are found for the same key, the value of that key
-value pair will become an array. This function does not parse nested
-PHP style arrays into an associative array (e.g., `foo[a]=1&foo[b]=2`
-will be parsed into `['foo[a]' => '1', 'foo[b]' => '2'])`.
-
-
-## `GuzzleHttp\Psr7\Query::build`
-
-`public static function build(array $params, int|false $encoding = PHP_QUERY_RFC3986): string`
-
-Build a query string from an array of key value pairs.
-
-This function can use the return value of `parse()` to build a query
-string. This function does not modify the provided keys when an array is
-encountered (like `http_build_query()` would).
-
-
-## `GuzzleHttp\Psr7\Utils::caselessRemove`
-
-`public static function caselessRemove(iterable $keys, $keys, array $data): array`
-
-Remove the items given by the keys, case insensitively from the data.
-
-
-## `GuzzleHttp\Psr7\Utils::copyToStream`
-
-`public static function copyToStream(StreamInterface $source, StreamInterface $dest, int $maxLen = -1): void`
-
-Copy the contents of a stream into another stream until the given number
-of bytes have been read.
-
-
-## `GuzzleHttp\Psr7\Utils::copyToString`
-
-`public static function copyToString(StreamInterface $stream, int $maxLen = -1): string`
-
-Copy the contents of a stream into a string until the given number of
-bytes have been read.
-
-
-## `GuzzleHttp\Psr7\Utils::hash`
-
-`public static function hash(StreamInterface $stream, string $algo, bool $rawOutput = false): string`
-
-Calculate a hash of a stream.
-
-This method reads the entire stream to calculate a rolling hash, based on
-PHP's `hash_init` functions.
-
-
-## `GuzzleHttp\Psr7\Utils::modifyRequest`
-
-`public static function modifyRequest(RequestInterface $request, array $changes): RequestInterface`
-
-Clone and modify a request with the given changes.
-
-This method is useful for reducing the number of clones needed to mutate
-a message.
-
-- method: (string) Changes the HTTP method.
-- set_headers: (array) Sets the given headers.
-- remove_headers: (array) Remove the given headers.
-- body: (mixed) Sets the given body.
-- uri: (UriInterface) Set the URI.
-- query: (string) Set the query string value of the URI.
-- version: (string) Set the protocol version.
-
-
-## `GuzzleHttp\Psr7\Utils::readLine`
-
-`public static function readLine(StreamInterface $stream, int $maxLength = null): string`
-
-Read a line from the stream up to the maximum allowed buffer length.
-
-
-## `GuzzleHttp\Psr7\Utils::streamFor`
-
-`public static function streamFor(resource|string|null|int|float|bool|StreamInterface|callable|\Iterator $resource = '', array $options = []): StreamInterface`
-
-Create a new stream based on the input type.
-
-Options is an associative array that can contain the following keys:
-
-- metadata: Array of custom metadata.
-- size: Size of the stream.
-
-This method accepts the following `$resource` types:
-
-- `Psr\Http\Message\StreamInterface`: Returns the value as-is.
-- `string`: Creates a stream object that uses the given string as the contents.
-- `resource`: Creates a stream object that wraps the given PHP stream resource.
-- `Iterator`: If the provided value implements `Iterator`, then a read-only
- stream object will be created that wraps the given iterable. Each time the
- stream is read from, data from the iterator will fill a buffer and will be
- continuously called until the buffer is equal to the requested read size.
- Subsequent read calls will first read from the buffer and then call `next`
- on the underlying iterator until it is exhausted.
-- `object` with `__toString()`: If the object has the `__toString()` method,
- the object will be cast to a string and then a stream will be returned that
- uses the string value.
-- `NULL`: When `null` is passed, an empty stream object is returned.
-- `callable` When a callable is passed, a read-only stream object will be
- created that invokes the given callable. The callable is invoked with the
- number of suggested bytes to read. The callable can return any number of
- bytes, but MUST return `false` when there is no more data to return. The
- stream object that wraps the callable will invoke the callable until the
- number of requested bytes are available. Any additional bytes will be
- buffered and used in subsequent reads.
-
-```php
-$stream = GuzzleHttp\Psr7\Utils::streamFor('foo');
-$stream = GuzzleHttp\Psr7\Utils::streamFor(fopen('/path/to/file', 'r'));
-
-$generator = function ($bytes) {
- for ($i = 0; $i < $bytes; $i++) {
- yield ' ';
- }
-}
-
-$stream = GuzzleHttp\Psr7\Utils::streamFor($generator(100));
-```
-
-
-## `GuzzleHttp\Psr7\Utils::tryFopen`
-
-`public static function tryFopen(string $filename, string $mode): resource`
-
-Safely opens a PHP stream resource using a filename.
-
-When fopen fails, PHP normally raises a warning. This function adds an
-error handler that checks for errors and throws an exception instead.
-
-
-## `GuzzleHttp\Psr7\Utils::uriFor`
-
-`public static function uriFor(string|UriInterface $uri): UriInterface`
-
-Returns a UriInterface for the given value.
-
-This function accepts a string or UriInterface and returns a
-UriInterface for the given value. If the value is already a
-UriInterface, it is returned as-is.
-
-
-## `GuzzleHttp\Psr7\MimeType::fromFilename`
-
-`public static function fromFilename(string $filename): string|null`
-
-Determines the mimetype of a file by looking at its extension.
-
-
-## `GuzzleHttp\Psr7\MimeType::fromExtension`
-
-`public static function fromExtension(string $extension): string|null`
-
-Maps a file extensions to a mimetype.
-
-
-## Upgrading from Function API
-
-The static API was first introduced in 1.7.0, in order to mitigate problems with functions conflicting between global and local copies of the package. The function API will be removed in 2.0.0. A migration table has been provided here for your convenience:
-
-| Original Function | Replacement Method |
-|----------------|----------------|
-| `str` | `Message::toString` |
-| `uri_for` | `Utils::uriFor` |
-| `stream_for` | `Utils::streamFor` |
-| `parse_header` | `Header::parse` |
-| `normalize_header` | `Header::normalize` |
-| `modify_request` | `Utils::modifyRequest` |
-| `rewind_body` | `Message::rewindBody` |
-| `try_fopen` | `Utils::tryFopen` |
-| `copy_to_string` | `Utils::copyToString` |
-| `copy_to_stream` | `Utils::copyToStream` |
-| `hash` | `Utils::hash` |
-| `readline` | `Utils::readLine` |
-| `parse_request` | `Message::parseRequest` |
-| `parse_response` | `Message::parseResponse` |
-| `parse_query` | `Query::parse` |
-| `build_query` | `Query::build` |
-| `mimetype_from_filename` | `MimeType::fromFilename` |
-| `mimetype_from_extension` | `MimeType::fromExtension` |
-| `_parse_message` | `Message::parseMessage` |
-| `_parse_request_uri` | `Message::parseRequestUri` |
-| `get_message_body_summary` | `Message::bodySummary` |
-| `_caseless_remove` | `Utils::caselessRemove` |
-
-
-# Additional URI Methods
-
-Aside from the standard `Psr\Http\Message\UriInterface` implementation in form of the `GuzzleHttp\Psr7\Uri` class,
-this library also provides additional functionality when working with URIs as static methods.
-
-## URI Types
-
-An instance of `Psr\Http\Message\UriInterface` can either be an absolute URI or a relative reference.
-An absolute URI has a scheme. A relative reference is used to express a URI relative to another URI,
-the base URI. Relative references can be divided into several forms according to
-[RFC 3986 Section 4.2](https://tools.ietf.org/html/rfc3986#section-4.2):
-
-- network-path references, e.g. `//example.com/path`
-- absolute-path references, e.g. `/path`
-- relative-path references, e.g. `subpath`
-
-The following methods can be used to identify the type of the URI.
-
-### `GuzzleHttp\Psr7\Uri::isAbsolute`
-
-`public static function isAbsolute(UriInterface $uri): bool`
-
-Whether the URI is absolute, i.e. it has a scheme.
-
-### `GuzzleHttp\Psr7\Uri::isNetworkPathReference`
-
-`public static function isNetworkPathReference(UriInterface $uri): bool`
-
-Whether the URI is a network-path reference. A relative reference that begins with two slash characters is
-termed an network-path reference.
-
-### `GuzzleHttp\Psr7\Uri::isAbsolutePathReference`
-
-`public static function isAbsolutePathReference(UriInterface $uri): bool`
-
-Whether the URI is a absolute-path reference. A relative reference that begins with a single slash character is
-termed an absolute-path reference.
-
-### `GuzzleHttp\Psr7\Uri::isRelativePathReference`
-
-`public static function isRelativePathReference(UriInterface $uri): bool`
-
-Whether the URI is a relative-path reference. A relative reference that does not begin with a slash character is
-termed a relative-path reference.
-
-### `GuzzleHttp\Psr7\Uri::isSameDocumentReference`
-
-`public static function isSameDocumentReference(UriInterface $uri, UriInterface $base = null): bool`
-
-Whether the URI is a same-document reference. A same-document reference refers to a URI that is, aside from its
-fragment component, identical to the base URI. When no base URI is given, only an empty URI reference
-(apart from its fragment) is considered a same-document reference.
-
-## URI Components
-
-Additional methods to work with URI components.
-
-### `GuzzleHttp\Psr7\Uri::isDefaultPort`
-
-`public static function isDefaultPort(UriInterface $uri): bool`
-
-Whether the URI has the default port of the current scheme. `Psr\Http\Message\UriInterface::getPort` may return null
-or the standard port. This method can be used independently of the implementation.
-
-### `GuzzleHttp\Psr7\Uri::composeComponents`
-
-`public static function composeComponents($scheme, $authority, $path, $query, $fragment): string`
-
-Composes a URI reference string from its various components according to
-[RFC 3986 Section 5.3](https://tools.ietf.org/html/rfc3986#section-5.3). Usually this method does not need to be called
-manually but instead is used indirectly via `Psr\Http\Message\UriInterface::__toString`.
-
-### `GuzzleHttp\Psr7\Uri::fromParts`
-
-`public static function fromParts(array $parts): UriInterface`
-
-Creates a URI from a hash of [`parse_url`](http://php.net/manual/en/function.parse-url.php) components.
-
-
-### `GuzzleHttp\Psr7\Uri::withQueryValue`
-
-`public static function withQueryValue(UriInterface $uri, $key, $value): UriInterface`
-
-Creates a new URI with a specific query string value. Any existing query string values that exactly match the
-provided key are removed and replaced with the given key value pair. A value of null will set the query string
-key without a value, e.g. "key" instead of "key=value".
-
-### `GuzzleHttp\Psr7\Uri::withQueryValues`
-
-`public static function withQueryValues(UriInterface $uri, array $keyValueArray): UriInterface`
-
-Creates a new URI with multiple query string values. It has the same behavior as `withQueryValue()` but for an
-associative array of key => value.
-
-### `GuzzleHttp\Psr7\Uri::withoutQueryValue`
-
-`public static function withoutQueryValue(UriInterface $uri, $key): UriInterface`
-
-Creates a new URI with a specific query string value removed. Any existing query string values that exactly match the
-provided key are removed.
-
-## Reference Resolution
-
-`GuzzleHttp\Psr7\UriResolver` provides methods to resolve a URI reference in the context of a base URI according
-to [RFC 3986 Section 5](https://tools.ietf.org/html/rfc3986#section-5). This is for example also what web browsers
-do when resolving a link in a website based on the current request URI.
-
-### `GuzzleHttp\Psr7\UriResolver::resolve`
-
-`public static function resolve(UriInterface $base, UriInterface $rel): UriInterface`
-
-Converts the relative URI into a new URI that is resolved against the base URI.
-
-### `GuzzleHttp\Psr7\UriResolver::removeDotSegments`
-
-`public static function removeDotSegments(string $path): string`
-
-Removes dot segments from a path and returns the new path according to
-[RFC 3986 Section 5.2.4](https://tools.ietf.org/html/rfc3986#section-5.2.4).
-
-### `GuzzleHttp\Psr7\UriResolver::relativize`
-
-`public static function relativize(UriInterface $base, UriInterface $target): UriInterface`
-
-Returns the target URI as a relative reference from the base URI. This method is the counterpart to resolve():
-
-```php
-(string) $target === (string) UriResolver::resolve($base, UriResolver::relativize($base, $target))
-```
-
-One use-case is to use the current request URI as base URI and then generate relative links in your documents
-to reduce the document size or offer self-contained downloadable document archives.
-
-```php
-$base = new Uri('http://example.com/a/b/');
-echo UriResolver::relativize($base, new Uri('http://example.com/a/b/c')); // prints 'c'.
-echo UriResolver::relativize($base, new Uri('http://example.com/a/x/y')); // prints '../x/y'.
-echo UriResolver::relativize($base, new Uri('http://example.com/a/b/?q')); // prints '?q'.
-echo UriResolver::relativize($base, new Uri('http://example.org/a/b/')); // prints '//example.org/a/b/'.
-```
-
-## Normalization and Comparison
-
-`GuzzleHttp\Psr7\UriNormalizer` provides methods to normalize and compare URIs according to
-[RFC 3986 Section 6](https://tools.ietf.org/html/rfc3986#section-6).
-
-### `GuzzleHttp\Psr7\UriNormalizer::normalize`
-
-`public static function normalize(UriInterface $uri, $flags = self::PRESERVING_NORMALIZATIONS): UriInterface`
-
-Returns a normalized URI. The scheme and host component are already normalized to lowercase per PSR-7 UriInterface.
-This methods adds additional normalizations that can be configured with the `$flags` parameter which is a bitmask
-of normalizations to apply. The following normalizations are available:
-
-- `UriNormalizer::PRESERVING_NORMALIZATIONS`
-
- Default normalizations which only include the ones that preserve semantics.
-
-- `UriNormalizer::CAPITALIZE_PERCENT_ENCODING`
-
- All letters within a percent-encoding triplet (e.g., "%3A") are case-insensitive, and should be capitalized.
-
- Example: `http://example.org/a%c2%b1b` → `http://example.org/a%C2%B1b`
-
-- `UriNormalizer::DECODE_UNRESERVED_CHARACTERS`
-
- Decodes percent-encoded octets of unreserved characters. For consistency, percent-encoded octets in the ranges of
- ALPHA (%41–%5A and %61–%7A), DIGIT (%30–%39), hyphen (%2D), period (%2E), underscore (%5F), or tilde (%7E) should
- not be created by URI producers and, when found in a URI, should be decoded to their corresponding unreserved
- characters by URI normalizers.
-
- Example: `http://example.org/%7Eusern%61me/` → `http://example.org/~username/`
-
-- `UriNormalizer::CONVERT_EMPTY_PATH`
-
- Converts the empty path to "/" for http and https URIs.
-
- Example: `http://example.org` → `http://example.org/`
-
-- `UriNormalizer::REMOVE_DEFAULT_HOST`
-
- Removes the default host of the given URI scheme from the URI. Only the "file" scheme defines the default host
- "localhost". All of `file:/myfile`, `file:///myfile`, and `file://localhost/myfile` are equivalent according to
- RFC 3986.
-
- Example: `file://localhost/myfile` → `file:///myfile`
-
-- `UriNormalizer::REMOVE_DEFAULT_PORT`
-
- Removes the default port of the given URI scheme from the URI.
-
- Example: `http://example.org:80/` → `http://example.org/`
-
-- `UriNormalizer::REMOVE_DOT_SEGMENTS`
-
- Removes unnecessary dot-segments. Dot-segments in relative-path references are not removed as it would
- change the semantics of the URI reference.
-
- Example: `http://example.org/../a/b/../c/./d.html` → `http://example.org/a/c/d.html`
-
-- `UriNormalizer::REMOVE_DUPLICATE_SLASHES`
-
- Paths which include two or more adjacent slashes are converted to one. Webservers usually ignore duplicate slashes
- and treat those URIs equivalent. But in theory those URIs do not need to be equivalent. So this normalization
- may change the semantics. Encoded slashes (%2F) are not removed.
-
- Example: `http://example.org//foo///bar.html` → `http://example.org/foo/bar.html`
-
-- `UriNormalizer::SORT_QUERY_PARAMETERS`
-
- Sort query parameters with their values in alphabetical order. However, the order of parameters in a URI may be
- significant (this is not defined by the standard). So this normalization is not safe and may change the semantics
- of the URI.
-
- Example: `?lang=en&article=fred` → `?article=fred&lang=en`
-
-### `GuzzleHttp\Psr7\UriNormalizer::isEquivalent`
-
-`public static function isEquivalent(UriInterface $uri1, UriInterface $uri2, $normalizations = self::PRESERVING_NORMALIZATIONS): bool`
-
-Whether two URIs can be considered equivalent. Both URIs are normalized automatically before comparison with the given
-`$normalizations` bitmask. The method also accepts relative URI references and returns true when they are equivalent.
-This of course assumes they will be resolved against the same base URI. If this is not the case, determination of
-equivalence or difference of relative references does not mean anything.
-
-
-## Security
-
-If you discover a security vulnerability within this package, please send an email to security@tidelift.com. All security vulnerabilities will be promptly addressed. Please do not disclose security-related issues publicly until a fix has been announced. Please see [Security Policy](https://github.com/guzzle/psr7/security/policy) for more information.
-
-## License
-
-Guzzle is made available under the MIT License (MIT). Please see [License File](LICENSE) for more information.
-
-## For Enterprise
-
-Available as part of the Tidelift Subscription
-
-The maintainers of Guzzle and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/packagist-guzzlehttp-psr7?utm_source=packagist-guzzlehttp-psr7&utm_medium=referral&utm_campaign=enterprise&utm_term=repo)
diff --git a/vendor/guzzlehttp/psr7/composer.json b/vendor/guzzlehttp/psr7/composer.json
deleted file mode 100644
index bfa7cfdc..00000000
--- a/vendor/guzzlehttp/psr7/composer.json
+++ /dev/null
@@ -1,73 +0,0 @@
-{
- "name": "guzzlehttp/psr7",
- "description": "PSR-7 message implementation that also provides common utility methods",
- "keywords": ["request", "response", "message", "stream", "http", "uri", "url", "psr-7"],
- "license": "MIT",
- "authors": [
- {
- "name": "Graham Campbell",
- "email": "hello@gjcampbell.co.uk",
- "homepage": "https://github.com/GrahamCampbell"
- },
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- },
- {
- "name": "George Mponos",
- "email": "gmponos@gmail.com",
- "homepage": "https://github.com/gmponos"
- },
- {
- "name": "Tobias Nyholm",
- "email": "tobias.nyholm@gmail.com",
- "homepage": "https://github.com/Nyholm"
- },
- {
- "name": "Márk Sági-Kazár",
- "email": "mark.sagikazar@gmail.com",
- "homepage": "https://github.com/sagikazarmark"
- },
- {
- "name": "Tobias Schultze",
- "email": "webmaster@tubo-world.de",
- "homepage": "https://github.com/Tobion"
- }
- ],
- "require": {
- "php": ">=5.4.0",
- "psr/http-message": "~1.0",
- "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10",
- "ext-zlib": "*"
- },
- "provide": {
- "psr/http-message-implementation": "1.0"
- },
- "suggest": {
- "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
- },
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\Psr7\\": "src/"
- },
- "files": ["src/functions_include.php"]
- },
- "autoload-dev": {
- "psr-4": {
- "GuzzleHttp\\Tests\\Psr7\\": "tests/"
- }
- },
- "extra": {
- "branch-alias": {
- "dev-master": "1.7-dev"
- }
- },
- "config": {
- "preferred-install": "dist",
- "sort-packages": true
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/AppendStream.php b/vendor/guzzlehttp/psr7/src/AppendStream.php
deleted file mode 100644
index fa9153d7..00000000
--- a/vendor/guzzlehttp/psr7/src/AppendStream.php
+++ /dev/null
@@ -1,246 +0,0 @@
-addStream($stream);
- }
- }
-
- public function __toString()
- {
- try {
- $this->rewind();
- return $this->getContents();
- } catch (\Exception $e) {
- return '';
- }
- }
-
- /**
- * Add a stream to the AppendStream
- *
- * @param StreamInterface $stream Stream to append. Must be readable.
- *
- * @throws \InvalidArgumentException if the stream is not readable
- */
- public function addStream(StreamInterface $stream)
- {
- if (!$stream->isReadable()) {
- throw new \InvalidArgumentException('Each stream must be readable');
- }
-
- // The stream is only seekable if all streams are seekable
- if (!$stream->isSeekable()) {
- $this->seekable = false;
- }
-
- $this->streams[] = $stream;
- }
-
- public function getContents()
- {
- return Utils::copyToString($this);
- }
-
- /**
- * Closes each attached stream.
- *
- * {@inheritdoc}
- */
- public function close()
- {
- $this->pos = $this->current = 0;
- $this->seekable = true;
-
- foreach ($this->streams as $stream) {
- $stream->close();
- }
-
- $this->streams = [];
- }
-
- /**
- * Detaches each attached stream.
- *
- * Returns null as it's not clear which underlying stream resource to return.
- *
- * {@inheritdoc}
- */
- public function detach()
- {
- $this->pos = $this->current = 0;
- $this->seekable = true;
-
- foreach ($this->streams as $stream) {
- $stream->detach();
- }
-
- $this->streams = [];
-
- return null;
- }
-
- public function tell()
- {
- return $this->pos;
- }
-
- /**
- * Tries to calculate the size by adding the size of each stream.
- *
- * If any of the streams do not return a valid number, then the size of the
- * append stream cannot be determined and null is returned.
- *
- * {@inheritdoc}
- */
- public function getSize()
- {
- $size = 0;
-
- foreach ($this->streams as $stream) {
- $s = $stream->getSize();
- if ($s === null) {
- return null;
- }
- $size += $s;
- }
-
- return $size;
- }
-
- public function eof()
- {
- return !$this->streams ||
- ($this->current >= count($this->streams) - 1 &&
- $this->streams[$this->current]->eof());
- }
-
- public function rewind()
- {
- $this->seek(0);
- }
-
- /**
- * Attempts to seek to the given position. Only supports SEEK_SET.
- *
- * {@inheritdoc}
- */
- public function seek($offset, $whence = SEEK_SET)
- {
- if (!$this->seekable) {
- throw new \RuntimeException('This AppendStream is not seekable');
- } elseif ($whence !== SEEK_SET) {
- throw new \RuntimeException('The AppendStream can only seek with SEEK_SET');
- }
-
- $this->pos = $this->current = 0;
-
- // Rewind each stream
- foreach ($this->streams as $i => $stream) {
- try {
- $stream->rewind();
- } catch (\Exception $e) {
- throw new \RuntimeException('Unable to seek stream '
- . $i . ' of the AppendStream', 0, $e);
- }
- }
-
- // Seek to the actual position by reading from each stream
- while ($this->pos < $offset && !$this->eof()) {
- $result = $this->read(min(8096, $offset - $this->pos));
- if ($result === '') {
- break;
- }
- }
- }
-
- /**
- * Reads from all of the appended streams until the length is met or EOF.
- *
- * {@inheritdoc}
- */
- public function read($length)
- {
- $buffer = '';
- $total = count($this->streams) - 1;
- $remaining = $length;
- $progressToNext = false;
-
- while ($remaining > 0) {
-
- // Progress to the next stream if needed.
- if ($progressToNext || $this->streams[$this->current]->eof()) {
- $progressToNext = false;
- if ($this->current === $total) {
- break;
- }
- $this->current++;
- }
-
- $result = $this->streams[$this->current]->read($remaining);
-
- // Using a loose comparison here to match on '', false, and null
- if ($result == null) {
- $progressToNext = true;
- continue;
- }
-
- $buffer .= $result;
- $remaining = $length - strlen($buffer);
- }
-
- $this->pos += strlen($buffer);
-
- return $buffer;
- }
-
- public function isReadable()
- {
- return true;
- }
-
- public function isWritable()
- {
- return false;
- }
-
- public function isSeekable()
- {
- return $this->seekable;
- }
-
- public function write($string)
- {
- throw new \RuntimeException('Cannot write to an AppendStream');
- }
-
- public function getMetadata($key = null)
- {
- return $key ? null : [];
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/BufferStream.php b/vendor/guzzlehttp/psr7/src/BufferStream.php
deleted file mode 100644
index 783859c1..00000000
--- a/vendor/guzzlehttp/psr7/src/BufferStream.php
+++ /dev/null
@@ -1,142 +0,0 @@
-hwm = $hwm;
- }
-
- public function __toString()
- {
- return $this->getContents();
- }
-
- public function getContents()
- {
- $buffer = $this->buffer;
- $this->buffer = '';
-
- return $buffer;
- }
-
- public function close()
- {
- $this->buffer = '';
- }
-
- public function detach()
- {
- $this->close();
-
- return null;
- }
-
- public function getSize()
- {
- return strlen($this->buffer);
- }
-
- public function isReadable()
- {
- return true;
- }
-
- public function isWritable()
- {
- return true;
- }
-
- public function isSeekable()
- {
- return false;
- }
-
- public function rewind()
- {
- $this->seek(0);
- }
-
- public function seek($offset, $whence = SEEK_SET)
- {
- throw new \RuntimeException('Cannot seek a BufferStream');
- }
-
- public function eof()
- {
- return strlen($this->buffer) === 0;
- }
-
- public function tell()
- {
- throw new \RuntimeException('Cannot determine the position of a BufferStream');
- }
-
- /**
- * Reads data from the buffer.
- */
- public function read($length)
- {
- $currentLength = strlen($this->buffer);
-
- if ($length >= $currentLength) {
- // No need to slice the buffer because we don't have enough data.
- $result = $this->buffer;
- $this->buffer = '';
- } else {
- // Slice up the result to provide a subset of the buffer.
- $result = substr($this->buffer, 0, $length);
- $this->buffer = substr($this->buffer, $length);
- }
-
- return $result;
- }
-
- /**
- * Writes data to the buffer.
- */
- public function write($string)
- {
- $this->buffer .= $string;
-
- // TODO: What should happen here?
- if (strlen($this->buffer) >= $this->hwm) {
- return false;
- }
-
- return strlen($string);
- }
-
- public function getMetadata($key = null)
- {
- if ($key == 'hwm') {
- return $this->hwm;
- }
-
- return $key ? null : [];
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/CachingStream.php b/vendor/guzzlehttp/psr7/src/CachingStream.php
deleted file mode 100644
index febade9f..00000000
--- a/vendor/guzzlehttp/psr7/src/CachingStream.php
+++ /dev/null
@@ -1,147 +0,0 @@
-remoteStream = $stream;
- $this->stream = $target ?: new Stream(Utils::tryFopen('php://temp', 'r+'));
- }
-
- public function getSize()
- {
- $remoteSize = $this->remoteStream->getSize();
-
- if (null === $remoteSize) {
- return null;
- }
-
- return max($this->stream->getSize(), $remoteSize);
- }
-
- public function rewind()
- {
- $this->seek(0);
- }
-
- public function seek($offset, $whence = SEEK_SET)
- {
- if ($whence == SEEK_SET) {
- $byte = $offset;
- } elseif ($whence == SEEK_CUR) {
- $byte = $offset + $this->tell();
- } elseif ($whence == SEEK_END) {
- $size = $this->remoteStream->getSize();
- if ($size === null) {
- $size = $this->cacheEntireStream();
- }
- $byte = $size + $offset;
- } else {
- throw new \InvalidArgumentException('Invalid whence');
- }
-
- $diff = $byte - $this->stream->getSize();
-
- if ($diff > 0) {
- // Read the remoteStream until we have read in at least the amount
- // of bytes requested, or we reach the end of the file.
- while ($diff > 0 && !$this->remoteStream->eof()) {
- $this->read($diff);
- $diff = $byte - $this->stream->getSize();
- }
- } else {
- // We can just do a normal seek since we've already seen this byte.
- $this->stream->seek($byte);
- }
- }
-
- public function read($length)
- {
- // Perform a regular read on any previously read data from the buffer
- $data = $this->stream->read($length);
- $remaining = $length - strlen($data);
-
- // More data was requested so read from the remote stream
- if ($remaining) {
- // If data was written to the buffer in a position that would have
- // been filled from the remote stream, then we must skip bytes on
- // the remote stream to emulate overwriting bytes from that
- // position. This mimics the behavior of other PHP stream wrappers.
- $remoteData = $this->remoteStream->read(
- $remaining + $this->skipReadBytes
- );
-
- if ($this->skipReadBytes) {
- $len = strlen($remoteData);
- $remoteData = substr($remoteData, $this->skipReadBytes);
- $this->skipReadBytes = max(0, $this->skipReadBytes - $len);
- }
-
- $data .= $remoteData;
- $this->stream->write($remoteData);
- }
-
- return $data;
- }
-
- public function write($string)
- {
- // When appending to the end of the currently read stream, you'll want
- // to skip bytes from being read from the remote stream to emulate
- // other stream wrappers. Basically replacing bytes of data of a fixed
- // length.
- $overflow = (strlen($string) + $this->tell()) - $this->remoteStream->tell();
- if ($overflow > 0) {
- $this->skipReadBytes += $overflow;
- }
-
- return $this->stream->write($string);
- }
-
- public function eof()
- {
- return $this->stream->eof() && $this->remoteStream->eof();
- }
-
- /**
- * Close both the remote stream and buffer stream
- */
- public function close()
- {
- $this->remoteStream->close() && $this->stream->close();
- }
-
- private function cacheEntireStream()
- {
- $target = new FnStream(['write' => 'strlen']);
- Utils::copyToStream($this, $target);
-
- return $this->tell();
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/DroppingStream.php b/vendor/guzzlehttp/psr7/src/DroppingStream.php
deleted file mode 100644
index 9f7420c4..00000000
--- a/vendor/guzzlehttp/psr7/src/DroppingStream.php
+++ /dev/null
@@ -1,45 +0,0 @@
-stream = $stream;
- $this->maxLength = $maxLength;
- }
-
- public function write($string)
- {
- $diff = $this->maxLength - $this->stream->getSize();
-
- // Begin returning 0 when the underlying stream is too large.
- if ($diff <= 0) {
- return 0;
- }
-
- // Write the stream or a subset of the stream if needed.
- if (strlen($string) < $diff) {
- return $this->stream->write($string);
- }
-
- return $this->stream->write(substr($string, 0, $diff));
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/FnStream.php b/vendor/guzzlehttp/psr7/src/FnStream.php
deleted file mode 100644
index 76a8cc7b..00000000
--- a/vendor/guzzlehttp/psr7/src/FnStream.php
+++ /dev/null
@@ -1,163 +0,0 @@
-methods = $methods;
-
- // Create the functions on the class
- foreach ($methods as $name => $fn) {
- $this->{'_fn_' . $name} = $fn;
- }
- }
-
- /**
- * Lazily determine which methods are not implemented.
- *
- * @throws \BadMethodCallException
- */
- public function __get($name)
- {
- throw new \BadMethodCallException(str_replace('_fn_', '', $name)
- . '() is not implemented in the FnStream');
- }
-
- /**
- * The close method is called on the underlying stream only if possible.
- */
- public function __destruct()
- {
- if (isset($this->_fn_close)) {
- call_user_func($this->_fn_close);
- }
- }
-
- /**
- * An unserialize would allow the __destruct to run when the unserialized value goes out of scope.
- *
- * @throws \LogicException
- */
- public function __wakeup()
- {
- throw new \LogicException('FnStream should never be unserialized');
- }
-
- /**
- * Adds custom functionality to an underlying stream by intercepting
- * specific method calls.
- *
- * @param StreamInterface $stream Stream to decorate
- * @param array $methods Hash of method name to a closure
- *
- * @return FnStream
- */
- public static function decorate(StreamInterface $stream, array $methods)
- {
- // If any of the required methods were not provided, then simply
- // proxy to the decorated stream.
- foreach (array_diff(self::$slots, array_keys($methods)) as $diff) {
- $methods[$diff] = [$stream, $diff];
- }
-
- return new self($methods);
- }
-
- public function __toString()
- {
- return call_user_func($this->_fn___toString);
- }
-
- public function close()
- {
- return call_user_func($this->_fn_close);
- }
-
- public function detach()
- {
- return call_user_func($this->_fn_detach);
- }
-
- public function getSize()
- {
- return call_user_func($this->_fn_getSize);
- }
-
- public function tell()
- {
- return call_user_func($this->_fn_tell);
- }
-
- public function eof()
- {
- return call_user_func($this->_fn_eof);
- }
-
- public function isSeekable()
- {
- return call_user_func($this->_fn_isSeekable);
- }
-
- public function rewind()
- {
- call_user_func($this->_fn_rewind);
- }
-
- public function seek($offset, $whence = SEEK_SET)
- {
- call_user_func($this->_fn_seek, $offset, $whence);
- }
-
- public function isWritable()
- {
- return call_user_func($this->_fn_isWritable);
- }
-
- public function write($string)
- {
- return call_user_func($this->_fn_write, $string);
- }
-
- public function isReadable()
- {
- return call_user_func($this->_fn_isReadable);
- }
-
- public function read($length)
- {
- return call_user_func($this->_fn_read, $length);
- }
-
- public function getContents()
- {
- return call_user_func($this->_fn_getContents);
- }
-
- public function getMetadata($key = null)
- {
- return call_user_func($this->_fn_getMetadata, $key);
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/Header.php b/vendor/guzzlehttp/psr7/src/Header.php
deleted file mode 100644
index 865d7421..00000000
--- a/vendor/guzzlehttp/psr7/src/Header.php
+++ /dev/null
@@ -1,71 +0,0 @@
-]+>|[^=]+/', $kvp, $matches)) {
- $m = $matches[0];
- if (isset($m[1])) {
- $part[trim($m[0], $trimmed)] = trim($m[1], $trimmed);
- } else {
- $part[] = trim($m[0], $trimmed);
- }
- }
- }
- if ($part) {
- $params[] = $part;
- }
- }
-
- return $params;
- }
-
- /**
- * Converts an array of header values that may contain comma separated
- * headers into an array of headers with no comma separated values.
- *
- * @param string|array $header Header to normalize.
- *
- * @return array Returns the normalized header field values.
- */
- public static function normalize($header)
- {
- if (!is_array($header)) {
- return array_map('trim', explode(',', $header));
- }
-
- $result = [];
- foreach ($header as $value) {
- foreach ((array) $value as $v) {
- if (strpos($v, ',') === false) {
- $result[] = $v;
- continue;
- }
- foreach (preg_split('/,(?=([^"]*"[^"]*")*[^"]*$)/', $v) as $vv) {
- $result[] = trim($vv);
- }
- }
- }
-
- return $result;
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/InflateStream.php b/vendor/guzzlehttp/psr7/src/InflateStream.php
deleted file mode 100644
index 0cbd2cce..00000000
--- a/vendor/guzzlehttp/psr7/src/InflateStream.php
+++ /dev/null
@@ -1,56 +0,0 @@
-read(10);
- $filenameHeaderLength = $this->getLengthOfPossibleFilenameHeader($stream, $header);
- // Skip the header, that is 10 + length of filename + 1 (nil) bytes
- $stream = new LimitStream($stream, -1, 10 + $filenameHeaderLength);
- $resource = StreamWrapper::getResource($stream);
- stream_filter_append($resource, 'zlib.inflate', STREAM_FILTER_READ);
- $this->stream = $stream->isSeekable() ? new Stream($resource) : new NoSeekStream(new Stream($resource));
- }
-
- /**
- * @param StreamInterface $stream
- * @param $header
- *
- * @return int
- */
- private function getLengthOfPossibleFilenameHeader(StreamInterface $stream, $header)
- {
- $filename_header_length = 0;
-
- if (substr(bin2hex($header), 6, 2) === '08') {
- // we have a filename, read until nil
- $filename_header_length = 1;
- while ($stream->read(1) !== chr(0)) {
- $filename_header_length++;
- }
- }
-
- return $filename_header_length;
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/LazyOpenStream.php b/vendor/guzzlehttp/psr7/src/LazyOpenStream.php
deleted file mode 100644
index 911e127d..00000000
--- a/vendor/guzzlehttp/psr7/src/LazyOpenStream.php
+++ /dev/null
@@ -1,42 +0,0 @@
-filename = $filename;
- $this->mode = $mode;
- }
-
- /**
- * Creates the underlying stream lazily when required.
- *
- * @return StreamInterface
- */
- protected function createStream()
- {
- return Utils::streamFor(Utils::tryFopen($this->filename, $this->mode));
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/LimitStream.php b/vendor/guzzlehttp/psr7/src/LimitStream.php
deleted file mode 100644
index 1173ec40..00000000
--- a/vendor/guzzlehttp/psr7/src/LimitStream.php
+++ /dev/null
@@ -1,157 +0,0 @@
-stream = $stream;
- $this->setLimit($limit);
- $this->setOffset($offset);
- }
-
- public function eof()
- {
- // Always return true if the underlying stream is EOF
- if ($this->stream->eof()) {
- return true;
- }
-
- // No limit and the underlying stream is not at EOF
- if ($this->limit == -1) {
- return false;
- }
-
- return $this->stream->tell() >= $this->offset + $this->limit;
- }
-
- /**
- * Returns the size of the limited subset of data
- * {@inheritdoc}
- */
- public function getSize()
- {
- if (null === ($length = $this->stream->getSize())) {
- return null;
- } elseif ($this->limit == -1) {
- return $length - $this->offset;
- } else {
- return min($this->limit, $length - $this->offset);
- }
- }
-
- /**
- * Allow for a bounded seek on the read limited stream
- * {@inheritdoc}
- */
- public function seek($offset, $whence = SEEK_SET)
- {
- if ($whence !== SEEK_SET || $offset < 0) {
- throw new \RuntimeException(sprintf(
- 'Cannot seek to offset %s with whence %s',
- $offset,
- $whence
- ));
- }
-
- $offset += $this->offset;
-
- if ($this->limit !== -1) {
- if ($offset > $this->offset + $this->limit) {
- $offset = $this->offset + $this->limit;
- }
- }
-
- $this->stream->seek($offset);
- }
-
- /**
- * Give a relative tell()
- * {@inheritdoc}
- */
- public function tell()
- {
- return $this->stream->tell() - $this->offset;
- }
-
- /**
- * Set the offset to start limiting from
- *
- * @param int $offset Offset to seek to and begin byte limiting from
- *
- * @throws \RuntimeException if the stream cannot be seeked.
- */
- public function setOffset($offset)
- {
- $current = $this->stream->tell();
-
- if ($current !== $offset) {
- // If the stream cannot seek to the offset position, then read to it
- if ($this->stream->isSeekable()) {
- $this->stream->seek($offset);
- } elseif ($current > $offset) {
- throw new \RuntimeException("Could not seek to stream offset $offset");
- } else {
- $this->stream->read($offset - $current);
- }
- }
-
- $this->offset = $offset;
- }
-
- /**
- * Set the limit of bytes that the decorator allows to be read from the
- * stream.
- *
- * @param int $limit Number of bytes to allow to be read from the stream.
- * Use -1 for no limit.
- */
- public function setLimit($limit)
- {
- $this->limit = $limit;
- }
-
- public function read($length)
- {
- if ($this->limit == -1) {
- return $this->stream->read($length);
- }
-
- // Check if the current position is less than the total allowed
- // bytes + original offset
- $remaining = ($this->offset + $this->limit) - $this->stream->tell();
- if ($remaining > 0) {
- // Only return the amount of requested data, ensuring that the byte
- // limit is not exceeded
- return $this->stream->read(min($remaining, $length));
- }
-
- return '';
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/Message.php b/vendor/guzzlehttp/psr7/src/Message.php
deleted file mode 100644
index 516d1cb8..00000000
--- a/vendor/guzzlehttp/psr7/src/Message.php
+++ /dev/null
@@ -1,252 +0,0 @@
-getMethod() . ' '
- . $message->getRequestTarget())
- . ' HTTP/' . $message->getProtocolVersion();
- if (!$message->hasHeader('host')) {
- $msg .= "\r\nHost: " . $message->getUri()->getHost();
- }
- } elseif ($message instanceof ResponseInterface) {
- $msg = 'HTTP/' . $message->getProtocolVersion() . ' '
- . $message->getStatusCode() . ' '
- . $message->getReasonPhrase();
- } else {
- throw new \InvalidArgumentException('Unknown message type');
- }
-
- foreach ($message->getHeaders() as $name => $values) {
- if (strtolower($name) === 'set-cookie') {
- foreach ($values as $value) {
- $msg .= "\r\n{$name}: " . $value;
- }
- } else {
- $msg .= "\r\n{$name}: " . implode(', ', $values);
- }
- }
-
- return "{$msg}\r\n\r\n" . $message->getBody();
- }
-
- /**
- * Get a short summary of the message body.
- *
- * Will return `null` if the response is not printable.
- *
- * @param MessageInterface $message The message to get the body summary
- * @param int $truncateAt The maximum allowed size of the summary
- *
- * @return string|null
- */
- public static function bodySummary(MessageInterface $message, $truncateAt = 120)
- {
- $body = $message->getBody();
-
- if (!$body->isSeekable() || !$body->isReadable()) {
- return null;
- }
-
- $size = $body->getSize();
-
- if ($size === 0) {
- return null;
- }
-
- $summary = $body->read($truncateAt);
- $body->rewind();
-
- if ($size > $truncateAt) {
- $summary .= ' (truncated...)';
- }
-
- // Matches any printable character, including unicode characters:
- // letters, marks, numbers, punctuation, spacing, and separators.
- if (preg_match('/[^\pL\pM\pN\pP\pS\pZ\n\r\t]/u', $summary)) {
- return null;
- }
-
- return $summary;
- }
-
- /**
- * Attempts to rewind a message body and throws an exception on failure.
- *
- * The body of the message will only be rewound if a call to `tell()`
- * returns a value other than `0`.
- *
- * @param MessageInterface $message Message to rewind
- *
- * @throws \RuntimeException
- */
- public static function rewindBody(MessageInterface $message)
- {
- $body = $message->getBody();
-
- if ($body->tell()) {
- $body->rewind();
- }
- }
-
- /**
- * Parses an HTTP message into an associative array.
- *
- * The array contains the "start-line" key containing the start line of
- * the message, "headers" key containing an associative array of header
- * array values, and a "body" key containing the body of the message.
- *
- * @param string $message HTTP request or response to parse.
- *
- * @return array
- */
- public static function parseMessage($message)
- {
- if (!$message) {
- throw new \InvalidArgumentException('Invalid message');
- }
-
- $message = ltrim($message, "\r\n");
-
- $messageParts = preg_split("/\r?\n\r?\n/", $message, 2);
-
- if ($messageParts === false || count($messageParts) !== 2) {
- throw new \InvalidArgumentException('Invalid message: Missing header delimiter');
- }
-
- list($rawHeaders, $body) = $messageParts;
- $rawHeaders .= "\r\n"; // Put back the delimiter we split previously
- $headerParts = preg_split("/\r?\n/", $rawHeaders, 2);
-
- if ($headerParts === false || count($headerParts) !== 2) {
- throw new \InvalidArgumentException('Invalid message: Missing status line');
- }
-
- list($startLine, $rawHeaders) = $headerParts;
-
- if (preg_match("/(?:^HTTP\/|^[A-Z]+ \S+ HTTP\/)(\d+(?:\.\d+)?)/i", $startLine, $matches) && $matches[1] === '1.0') {
- // Header folding is deprecated for HTTP/1.1, but allowed in HTTP/1.0
- $rawHeaders = preg_replace(Rfc7230::HEADER_FOLD_REGEX, ' ', $rawHeaders);
- }
-
- /** @var array[] $headerLines */
- $count = preg_match_all(Rfc7230::HEADER_REGEX, $rawHeaders, $headerLines, PREG_SET_ORDER);
-
- // If these aren't the same, then one line didn't match and there's an invalid header.
- if ($count !== substr_count($rawHeaders, "\n")) {
- // Folding is deprecated, see https://tools.ietf.org/html/rfc7230#section-3.2.4
- if (preg_match(Rfc7230::HEADER_FOLD_REGEX, $rawHeaders)) {
- throw new \InvalidArgumentException('Invalid header syntax: Obsolete line folding');
- }
-
- throw new \InvalidArgumentException('Invalid header syntax');
- }
-
- $headers = [];
-
- foreach ($headerLines as $headerLine) {
- $headers[$headerLine[1]][] = $headerLine[2];
- }
-
- return [
- 'start-line' => $startLine,
- 'headers' => $headers,
- 'body' => $body,
- ];
- }
-
- /**
- * Constructs a URI for an HTTP request message.
- *
- * @param string $path Path from the start-line
- * @param array $headers Array of headers (each value an array).
- *
- * @return string
- */
- public static function parseRequestUri($path, array $headers)
- {
- $hostKey = array_filter(array_keys($headers), function ($k) {
- return strtolower($k) === 'host';
- });
-
- // If no host is found, then a full URI cannot be constructed.
- if (!$hostKey) {
- return $path;
- }
-
- $host = $headers[reset($hostKey)][0];
- $scheme = substr($host, -4) === ':443' ? 'https' : 'http';
-
- return $scheme . '://' . $host . '/' . ltrim($path, '/');
- }
-
- /**
- * Parses a request message string into a request object.
- *
- * @param string $message Request message string.
- *
- * @return Request
- */
- public static function parseRequest($message)
- {
- $data = self::parseMessage($message);
- $matches = [];
- if (!preg_match('/^[\S]+\s+([a-zA-Z]+:\/\/|\/).*/', $data['start-line'], $matches)) {
- throw new \InvalidArgumentException('Invalid request string');
- }
- $parts = explode(' ', $data['start-line'], 3);
- $version = isset($parts[2]) ? explode('/', $parts[2])[1] : '1.1';
-
- $request = new Request(
- $parts[0],
- $matches[1] === '/' ? self::parseRequestUri($parts[1], $data['headers']) : $parts[1],
- $data['headers'],
- $data['body'],
- $version
- );
-
- return $matches[1] === '/' ? $request : $request->withRequestTarget($parts[1]);
- }
-
- /**
- * Parses a response message string into a response object.
- *
- * @param string $message Response message string.
- *
- * @return Response
- */
- public static function parseResponse($message)
- {
- $data = self::parseMessage($message);
- // According to https://tools.ietf.org/html/rfc7230#section-3.1.2 the space
- // between status-code and reason-phrase is required. But browsers accept
- // responses without space and reason as well.
- if (!preg_match('/^HTTP\/.* [0-9]{3}( .*|$)/', $data['start-line'])) {
- throw new \InvalidArgumentException('Invalid response string: ' . $data['start-line']);
- }
- $parts = explode(' ', $data['start-line'], 3);
-
- return new Response(
- (int) $parts[1],
- $data['headers'],
- $data['body'],
- explode('/', $parts[0])[1],
- isset($parts[2]) ? $parts[2] : null
- );
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/MessageTrait.php b/vendor/guzzlehttp/psr7/src/MessageTrait.php
deleted file mode 100644
index 99203bb4..00000000
--- a/vendor/guzzlehttp/psr7/src/MessageTrait.php
+++ /dev/null
@@ -1,214 +0,0 @@
- array of values */
- private $headers = [];
-
- /** @var array Map of lowercase header name => original name at registration */
- private $headerNames = [];
-
- /** @var string */
- private $protocol = '1.1';
-
- /** @var StreamInterface|null */
- private $stream;
-
- public function getProtocolVersion()
- {
- return $this->protocol;
- }
-
- public function withProtocolVersion($version)
- {
- if ($this->protocol === $version) {
- return $this;
- }
-
- $new = clone $this;
- $new->protocol = $version;
- return $new;
- }
-
- public function getHeaders()
- {
- return $this->headers;
- }
-
- public function hasHeader($header)
- {
- return isset($this->headerNames[strtolower($header)]);
- }
-
- public function getHeader($header)
- {
- $header = strtolower($header);
-
- if (!isset($this->headerNames[$header])) {
- return [];
- }
-
- $header = $this->headerNames[$header];
-
- return $this->headers[$header];
- }
-
- public function getHeaderLine($header)
- {
- return implode(', ', $this->getHeader($header));
- }
-
- public function withHeader($header, $value)
- {
- $this->assertHeader($header);
- $value = $this->normalizeHeaderValue($value);
- $normalized = strtolower($header);
-
- $new = clone $this;
- if (isset($new->headerNames[$normalized])) {
- unset($new->headers[$new->headerNames[$normalized]]);
- }
- $new->headerNames[$normalized] = $header;
- $new->headers[$header] = $value;
-
- return $new;
- }
-
- public function withAddedHeader($header, $value)
- {
- $this->assertHeader($header);
- $value = $this->normalizeHeaderValue($value);
- $normalized = strtolower($header);
-
- $new = clone $this;
- if (isset($new->headerNames[$normalized])) {
- $header = $this->headerNames[$normalized];
- $new->headers[$header] = array_merge($this->headers[$header], $value);
- } else {
- $new->headerNames[$normalized] = $header;
- $new->headers[$header] = $value;
- }
-
- return $new;
- }
-
- public function withoutHeader($header)
- {
- $normalized = strtolower($header);
-
- if (!isset($this->headerNames[$normalized])) {
- return $this;
- }
-
- $header = $this->headerNames[$normalized];
-
- $new = clone $this;
- unset($new->headers[$header], $new->headerNames[$normalized]);
-
- return $new;
- }
-
- public function getBody()
- {
- if (!$this->stream) {
- $this->stream = Utils::streamFor('');
- }
-
- return $this->stream;
- }
-
- public function withBody(StreamInterface $body)
- {
- if ($body === $this->stream) {
- return $this;
- }
-
- $new = clone $this;
- $new->stream = $body;
- return $new;
- }
-
- private function setHeaders(array $headers)
- {
- $this->headerNames = $this->headers = [];
- foreach ($headers as $header => $value) {
- if (is_int($header)) {
- // Numeric array keys are converted to int by PHP but having a header name '123' is not forbidden by the spec
- // and also allowed in withHeader(). So we need to cast it to string again for the following assertion to pass.
- $header = (string) $header;
- }
- $this->assertHeader($header);
- $value = $this->normalizeHeaderValue($value);
- $normalized = strtolower($header);
- if (isset($this->headerNames[$normalized])) {
- $header = $this->headerNames[$normalized];
- $this->headers[$header] = array_merge($this->headers[$header], $value);
- } else {
- $this->headerNames[$normalized] = $header;
- $this->headers[$header] = $value;
- }
- }
- }
-
- private function normalizeHeaderValue($value)
- {
- if (!is_array($value)) {
- return $this->trimHeaderValues([$value]);
- }
-
- if (count($value) === 0) {
- throw new \InvalidArgumentException('Header value can not be an empty array.');
- }
-
- return $this->trimHeaderValues($value);
- }
-
- /**
- * Trims whitespace from the header values.
- *
- * Spaces and tabs ought to be excluded by parsers when extracting the field value from a header field.
- *
- * header-field = field-name ":" OWS field-value OWS
- * OWS = *( SP / HTAB )
- *
- * @param string[] $values Header values
- *
- * @return string[] Trimmed header values
- *
- * @see https://tools.ietf.org/html/rfc7230#section-3.2.4
- */
- private function trimHeaderValues(array $values)
- {
- return array_map(function ($value) {
- if (!is_scalar($value) && null !== $value) {
- throw new \InvalidArgumentException(sprintf(
- 'Header value must be scalar or null but %s provided.',
- is_object($value) ? get_class($value) : gettype($value)
- ));
- }
-
- return trim((string) $value, " \t");
- }, array_values($values));
- }
-
- private function assertHeader($header)
- {
- if (!is_string($header)) {
- throw new \InvalidArgumentException(sprintf(
- 'Header name must be a string but %s provided.',
- is_object($header) ? get_class($header) : gettype($header)
- ));
- }
-
- if ($header === '') {
- throw new \InvalidArgumentException('Header name can not be empty.');
- }
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/MimeType.php b/vendor/guzzlehttp/psr7/src/MimeType.php
deleted file mode 100644
index 205c7b1f..00000000
--- a/vendor/guzzlehttp/psr7/src/MimeType.php
+++ /dev/null
@@ -1,140 +0,0 @@
- 'video/3gpp',
- '7z' => 'application/x-7z-compressed',
- 'aac' => 'audio/x-aac',
- 'ai' => 'application/postscript',
- 'aif' => 'audio/x-aiff',
- 'asc' => 'text/plain',
- 'asf' => 'video/x-ms-asf',
- 'atom' => 'application/atom+xml',
- 'avi' => 'video/x-msvideo',
- 'bmp' => 'image/bmp',
- 'bz2' => 'application/x-bzip2',
- 'cer' => 'application/pkix-cert',
- 'crl' => 'application/pkix-crl',
- 'crt' => 'application/x-x509-ca-cert',
- 'css' => 'text/css',
- 'csv' => 'text/csv',
- 'cu' => 'application/cu-seeme',
- 'deb' => 'application/x-debian-package',
- 'doc' => 'application/msword',
- 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
- 'dvi' => 'application/x-dvi',
- 'eot' => 'application/vnd.ms-fontobject',
- 'eps' => 'application/postscript',
- 'epub' => 'application/epub+zip',
- 'etx' => 'text/x-setext',
- 'flac' => 'audio/flac',
- 'flv' => 'video/x-flv',
- 'gif' => 'image/gif',
- 'gz' => 'application/gzip',
- 'htm' => 'text/html',
- 'html' => 'text/html',
- 'ico' => 'image/x-icon',
- 'ics' => 'text/calendar',
- 'ini' => 'text/plain',
- 'iso' => 'application/x-iso9660-image',
- 'jar' => 'application/java-archive',
- 'jpe' => 'image/jpeg',
- 'jpeg' => 'image/jpeg',
- 'jpg' => 'image/jpeg',
- 'js' => 'text/javascript',
- 'json' => 'application/json',
- 'latex' => 'application/x-latex',
- 'log' => 'text/plain',
- 'm4a' => 'audio/mp4',
- 'm4v' => 'video/mp4',
- 'mid' => 'audio/midi',
- 'midi' => 'audio/midi',
- 'mov' => 'video/quicktime',
- 'mkv' => 'video/x-matroska',
- 'mp3' => 'audio/mpeg',
- 'mp4' => 'video/mp4',
- 'mp4a' => 'audio/mp4',
- 'mp4v' => 'video/mp4',
- 'mpe' => 'video/mpeg',
- 'mpeg' => 'video/mpeg',
- 'mpg' => 'video/mpeg',
- 'mpg4' => 'video/mp4',
- 'oga' => 'audio/ogg',
- 'ogg' => 'audio/ogg',
- 'ogv' => 'video/ogg',
- 'ogx' => 'application/ogg',
- 'pbm' => 'image/x-portable-bitmap',
- 'pdf' => 'application/pdf',
- 'pgm' => 'image/x-portable-graymap',
- 'png' => 'image/png',
- 'pnm' => 'image/x-portable-anymap',
- 'ppm' => 'image/x-portable-pixmap',
- 'ppt' => 'application/vnd.ms-powerpoint',
- 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
- 'ps' => 'application/postscript',
- 'qt' => 'video/quicktime',
- 'rar' => 'application/x-rar-compressed',
- 'ras' => 'image/x-cmu-raster',
- 'rss' => 'application/rss+xml',
- 'rtf' => 'application/rtf',
- 'sgm' => 'text/sgml',
- 'sgml' => 'text/sgml',
- 'svg' => 'image/svg+xml',
- 'swf' => 'application/x-shockwave-flash',
- 'tar' => 'application/x-tar',
- 'tif' => 'image/tiff',
- 'tiff' => 'image/tiff',
- 'torrent' => 'application/x-bittorrent',
- 'ttf' => 'application/x-font-ttf',
- 'txt' => 'text/plain',
- 'wav' => 'audio/x-wav',
- 'webm' => 'video/webm',
- 'webp' => 'image/webp',
- 'wma' => 'audio/x-ms-wma',
- 'wmv' => 'video/x-ms-wmv',
- 'woff' => 'application/x-font-woff',
- 'wsdl' => 'application/wsdl+xml',
- 'xbm' => 'image/x-xbitmap',
- 'xls' => 'application/vnd.ms-excel',
- 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
- 'xml' => 'application/xml',
- 'xpm' => 'image/x-xpixmap',
- 'xwd' => 'image/x-xwindowdump',
- 'yaml' => 'text/yaml',
- 'yml' => 'text/yaml',
- 'zip' => 'application/zip',
- ];
-
- $extension = strtolower($extension);
-
- return isset($mimetypes[$extension])
- ? $mimetypes[$extension]
- : null;
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/MultipartStream.php b/vendor/guzzlehttp/psr7/src/MultipartStream.php
deleted file mode 100644
index 5a6079a8..00000000
--- a/vendor/guzzlehttp/psr7/src/MultipartStream.php
+++ /dev/null
@@ -1,158 +0,0 @@
-boundary = $boundary ?: sha1(uniqid('', true));
- $this->stream = $this->createStream($elements);
- }
-
- /**
- * Get the boundary
- *
- * @return string
- */
- public function getBoundary()
- {
- return $this->boundary;
- }
-
- public function isWritable()
- {
- return false;
- }
-
- /**
- * Get the headers needed before transferring the content of a POST file
- */
- private function getHeaders(array $headers)
- {
- $str = '';
- foreach ($headers as $key => $value) {
- $str .= "{$key}: {$value}\r\n";
- }
-
- return "--{$this->boundary}\r\n" . trim($str) . "\r\n\r\n";
- }
-
- /**
- * Create the aggregate stream that will be used to upload the POST data
- */
- protected function createStream(array $elements)
- {
- $stream = new AppendStream();
-
- foreach ($elements as $element) {
- $this->addElement($stream, $element);
- }
-
- // Add the trailing boundary with CRLF
- $stream->addStream(Utils::streamFor("--{$this->boundary}--\r\n"));
-
- return $stream;
- }
-
- private function addElement(AppendStream $stream, array $element)
- {
- foreach (['contents', 'name'] as $key) {
- if (!array_key_exists($key, $element)) {
- throw new \InvalidArgumentException("A '{$key}' key is required");
- }
- }
-
- $element['contents'] = Utils::streamFor($element['contents']);
-
- if (empty($element['filename'])) {
- $uri = $element['contents']->getMetadata('uri');
- if (substr($uri, 0, 6) !== 'php://') {
- $element['filename'] = $uri;
- }
- }
-
- list($body, $headers) = $this->createElement(
- $element['name'],
- $element['contents'],
- isset($element['filename']) ? $element['filename'] : null,
- isset($element['headers']) ? $element['headers'] : []
- );
-
- $stream->addStream(Utils::streamFor($this->getHeaders($headers)));
- $stream->addStream($body);
- $stream->addStream(Utils::streamFor("\r\n"));
- }
-
- /**
- * @return array
- */
- private function createElement($name, StreamInterface $stream, $filename, array $headers)
- {
- // Set a default content-disposition header if one was no provided
- $disposition = $this->getHeader($headers, 'content-disposition');
- if (!$disposition) {
- $headers['Content-Disposition'] = ($filename === '0' || $filename)
- ? sprintf(
- 'form-data; name="%s"; filename="%s"',
- $name,
- basename($filename)
- )
- : "form-data; name=\"{$name}\"";
- }
-
- // Set a default content-length header if one was no provided
- $length = $this->getHeader($headers, 'content-length');
- if (!$length) {
- if ($length = $stream->getSize()) {
- $headers['Content-Length'] = (string) $length;
- }
- }
-
- // Set a default Content-Type if one was not supplied
- $type = $this->getHeader($headers, 'content-type');
- if (!$type && ($filename === '0' || $filename)) {
- if ($type = MimeType::fromFilename($filename)) {
- $headers['Content-Type'] = $type;
- }
- }
-
- return [$stream, $headers];
- }
-
- private function getHeader(array $headers, $key)
- {
- $lowercaseHeader = strtolower($key);
- foreach ($headers as $k => $v) {
- if (strtolower($k) === $lowercaseHeader) {
- return $v;
- }
- }
-
- return null;
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/NoSeekStream.php b/vendor/guzzlehttp/psr7/src/NoSeekStream.php
deleted file mode 100644
index d66bdde4..00000000
--- a/vendor/guzzlehttp/psr7/src/NoSeekStream.php
+++ /dev/null
@@ -1,25 +0,0 @@
-source = $source;
- $this->size = isset($options['size']) ? $options['size'] : null;
- $this->metadata = isset($options['metadata']) ? $options['metadata'] : [];
- $this->buffer = new BufferStream();
- }
-
- public function __toString()
- {
- try {
- return Utils::copyToString($this);
- } catch (\Exception $e) {
- return '';
- }
- }
-
- public function close()
- {
- $this->detach();
- }
-
- public function detach()
- {
- $this->tellPos = false;
- $this->source = null;
-
- return null;
- }
-
- public function getSize()
- {
- return $this->size;
- }
-
- public function tell()
- {
- return $this->tellPos;
- }
-
- public function eof()
- {
- return !$this->source;
- }
-
- public function isSeekable()
- {
- return false;
- }
-
- public function rewind()
- {
- $this->seek(0);
- }
-
- public function seek($offset, $whence = SEEK_SET)
- {
- throw new \RuntimeException('Cannot seek a PumpStream');
- }
-
- public function isWritable()
- {
- return false;
- }
-
- public function write($string)
- {
- throw new \RuntimeException('Cannot write to a PumpStream');
- }
-
- public function isReadable()
- {
- return true;
- }
-
- public function read($length)
- {
- $data = $this->buffer->read($length);
- $readLen = strlen($data);
- $this->tellPos += $readLen;
- $remaining = $length - $readLen;
-
- if ($remaining) {
- $this->pump($remaining);
- $data .= $this->buffer->read($remaining);
- $this->tellPos += strlen($data) - $readLen;
- }
-
- return $data;
- }
-
- public function getContents()
- {
- $result = '';
- while (!$this->eof()) {
- $result .= $this->read(1000000);
- }
-
- return $result;
- }
-
- public function getMetadata($key = null)
- {
- if (!$key) {
- return $this->metadata;
- }
-
- return isset($this->metadata[$key]) ? $this->metadata[$key] : null;
- }
-
- private function pump($length)
- {
- if ($this->source) {
- do {
- $data = call_user_func($this->source, $length);
- if ($data === false || $data === null) {
- $this->source = null;
- return;
- }
- $this->buffer->write($data);
- $length -= strlen($data);
- } while ($length > 0);
- }
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/Query.php b/vendor/guzzlehttp/psr7/src/Query.php
deleted file mode 100644
index 5a7cc035..00000000
--- a/vendor/guzzlehttp/psr7/src/Query.php
+++ /dev/null
@@ -1,113 +0,0 @@
- '1', 'foo[b]' => '2'])`.
- *
- * @param string $str Query string to parse
- * @param int|bool $urlEncoding How the query string is encoded
- *
- * @return array
- */
- public static function parse($str, $urlEncoding = true)
- {
- $result = [];
-
- if ($str === '') {
- return $result;
- }
-
- if ($urlEncoding === true) {
- $decoder = function ($value) {
- return rawurldecode(str_replace('+', ' ', $value));
- };
- } elseif ($urlEncoding === PHP_QUERY_RFC3986) {
- $decoder = 'rawurldecode';
- } elseif ($urlEncoding === PHP_QUERY_RFC1738) {
- $decoder = 'urldecode';
- } else {
- $decoder = function ($str) {
- return $str;
- };
- }
-
- foreach (explode('&', $str) as $kvp) {
- $parts = explode('=', $kvp, 2);
- $key = $decoder($parts[0]);
- $value = isset($parts[1]) ? $decoder($parts[1]) : null;
- if (!isset($result[$key])) {
- $result[$key] = $value;
- } else {
- if (!is_array($result[$key])) {
- $result[$key] = [$result[$key]];
- }
- $result[$key][] = $value;
- }
- }
-
- return $result;
- }
-
- /**
- * Build a query string from an array of key value pairs.
- *
- * This function can use the return value of `parse()` to build a query
- * string. This function does not modify the provided keys when an array is
- * encountered (like `http_build_query()` would).
- *
- * @param array $params Query string parameters.
- * @param int|false $encoding Set to false to not encode, PHP_QUERY_RFC3986
- * to encode using RFC3986, or PHP_QUERY_RFC1738
- * to encode using RFC1738.
- *
- * @return string
- */
- public static function build(array $params, $encoding = PHP_QUERY_RFC3986)
- {
- if (!$params) {
- return '';
- }
-
- if ($encoding === false) {
- $encoder = function ($str) {
- return $str;
- };
- } elseif ($encoding === PHP_QUERY_RFC3986) {
- $encoder = 'rawurlencode';
- } elseif ($encoding === PHP_QUERY_RFC1738) {
- $encoder = 'urlencode';
- } else {
- throw new \InvalidArgumentException('Invalid type');
- }
-
- $qs = '';
- foreach ($params as $k => $v) {
- $k = $encoder($k);
- if (!is_array($v)) {
- $qs .= $k;
- if ($v !== null) {
- $qs .= '=' . $encoder($v);
- }
- $qs .= '&';
- } else {
- foreach ($v as $vv) {
- $qs .= $k;
- if ($vv !== null) {
- $qs .= '=' . $encoder($vv);
- }
- $qs .= '&';
- }
- }
- }
-
- return $qs ? (string) substr($qs, 0, -1) : '';
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/Request.php b/vendor/guzzlehttp/psr7/src/Request.php
deleted file mode 100644
index c1cdaebf..00000000
--- a/vendor/guzzlehttp/psr7/src/Request.php
+++ /dev/null
@@ -1,152 +0,0 @@
-assertMethod($method);
- if (!($uri instanceof UriInterface)) {
- $uri = new Uri($uri);
- }
-
- $this->method = strtoupper($method);
- $this->uri = $uri;
- $this->setHeaders($headers);
- $this->protocol = $version;
-
- if (!isset($this->headerNames['host'])) {
- $this->updateHostFromUri();
- }
-
- if ($body !== '' && $body !== null) {
- $this->stream = Utils::streamFor($body);
- }
- }
-
- public function getRequestTarget()
- {
- if ($this->requestTarget !== null) {
- return $this->requestTarget;
- }
-
- $target = $this->uri->getPath();
- if ($target == '') {
- $target = '/';
- }
- if ($this->uri->getQuery() != '') {
- $target .= '?' . $this->uri->getQuery();
- }
-
- return $target;
- }
-
- public function withRequestTarget($requestTarget)
- {
- if (preg_match('#\s#', $requestTarget)) {
- throw new InvalidArgumentException(
- 'Invalid request target provided; cannot contain whitespace'
- );
- }
-
- $new = clone $this;
- $new->requestTarget = $requestTarget;
- return $new;
- }
-
- public function getMethod()
- {
- return $this->method;
- }
-
- public function withMethod($method)
- {
- $this->assertMethod($method);
- $new = clone $this;
- $new->method = strtoupper($method);
- return $new;
- }
-
- public function getUri()
- {
- return $this->uri;
- }
-
- public function withUri(UriInterface $uri, $preserveHost = false)
- {
- if ($uri === $this->uri) {
- return $this;
- }
-
- $new = clone $this;
- $new->uri = $uri;
-
- if (!$preserveHost || !isset($this->headerNames['host'])) {
- $new->updateHostFromUri();
- }
-
- return $new;
- }
-
- private function updateHostFromUri()
- {
- $host = $this->uri->getHost();
-
- if ($host == '') {
- return;
- }
-
- if (($port = $this->uri->getPort()) !== null) {
- $host .= ':' . $port;
- }
-
- if (isset($this->headerNames['host'])) {
- $header = $this->headerNames['host'];
- } else {
- $header = 'Host';
- $this->headerNames['host'] = 'Host';
- }
- // Ensure Host is the first header.
- // See: http://tools.ietf.org/html/rfc7230#section-5.4
- $this->headers = [$header => [$host]] + $this->headers;
- }
-
- private function assertMethod($method)
- {
- if (!is_string($method) || $method === '') {
- throw new \InvalidArgumentException('Method must be a non-empty string.');
- }
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/Response.php b/vendor/guzzlehttp/psr7/src/Response.php
deleted file mode 100644
index 8c01a0f5..00000000
--- a/vendor/guzzlehttp/psr7/src/Response.php
+++ /dev/null
@@ -1,155 +0,0 @@
- 'Continue',
- 101 => 'Switching Protocols',
- 102 => 'Processing',
- 200 => 'OK',
- 201 => 'Created',
- 202 => 'Accepted',
- 203 => 'Non-Authoritative Information',
- 204 => 'No Content',
- 205 => 'Reset Content',
- 206 => 'Partial Content',
- 207 => 'Multi-status',
- 208 => 'Already Reported',
- 300 => 'Multiple Choices',
- 301 => 'Moved Permanently',
- 302 => 'Found',
- 303 => 'See Other',
- 304 => 'Not Modified',
- 305 => 'Use Proxy',
- 306 => 'Switch Proxy',
- 307 => 'Temporary Redirect',
- 400 => 'Bad Request',
- 401 => 'Unauthorized',
- 402 => 'Payment Required',
- 403 => 'Forbidden',
- 404 => 'Not Found',
- 405 => 'Method Not Allowed',
- 406 => 'Not Acceptable',
- 407 => 'Proxy Authentication Required',
- 408 => 'Request Time-out',
- 409 => 'Conflict',
- 410 => 'Gone',
- 411 => 'Length Required',
- 412 => 'Precondition Failed',
- 413 => 'Request Entity Too Large',
- 414 => 'Request-URI Too Large',
- 415 => 'Unsupported Media Type',
- 416 => 'Requested range not satisfiable',
- 417 => 'Expectation Failed',
- 418 => 'I\'m a teapot',
- 422 => 'Unprocessable Entity',
- 423 => 'Locked',
- 424 => 'Failed Dependency',
- 425 => 'Unordered Collection',
- 426 => 'Upgrade Required',
- 428 => 'Precondition Required',
- 429 => 'Too Many Requests',
- 431 => 'Request Header Fields Too Large',
- 451 => 'Unavailable For Legal Reasons',
- 500 => 'Internal Server Error',
- 501 => 'Not Implemented',
- 502 => 'Bad Gateway',
- 503 => 'Service Unavailable',
- 504 => 'Gateway Time-out',
- 505 => 'HTTP Version not supported',
- 506 => 'Variant Also Negotiates',
- 507 => 'Insufficient Storage',
- 508 => 'Loop Detected',
- 511 => 'Network Authentication Required',
- ];
-
- /** @var string */
- private $reasonPhrase = '';
-
- /** @var int */
- private $statusCode = 200;
-
- /**
- * @param int $status Status code
- * @param array $headers Response headers
- * @param string|resource|StreamInterface|null $body Response body
- * @param string $version Protocol version
- * @param string|null $reason Reason phrase (when empty a default will be used based on the status code)
- */
- public function __construct(
- $status = 200,
- array $headers = [],
- $body = null,
- $version = '1.1',
- $reason = null
- ) {
- $this->assertStatusCodeIsInteger($status);
- $status = (int) $status;
- $this->assertStatusCodeRange($status);
-
- $this->statusCode = $status;
-
- if ($body !== '' && $body !== null) {
- $this->stream = Utils::streamFor($body);
- }
-
- $this->setHeaders($headers);
- if ($reason == '' && isset(self::$phrases[$this->statusCode])) {
- $this->reasonPhrase = self::$phrases[$this->statusCode];
- } else {
- $this->reasonPhrase = (string) $reason;
- }
-
- $this->protocol = $version;
- }
-
- public function getStatusCode()
- {
- return $this->statusCode;
- }
-
- public function getReasonPhrase()
- {
- return $this->reasonPhrase;
- }
-
- public function withStatus($code, $reasonPhrase = '')
- {
- $this->assertStatusCodeIsInteger($code);
- $code = (int) $code;
- $this->assertStatusCodeRange($code);
-
- $new = clone $this;
- $new->statusCode = $code;
- if ($reasonPhrase == '' && isset(self::$phrases[$new->statusCode])) {
- $reasonPhrase = self::$phrases[$new->statusCode];
- }
- $new->reasonPhrase = (string) $reasonPhrase;
- return $new;
- }
-
- private function assertStatusCodeIsInteger($statusCode)
- {
- if (filter_var($statusCode, FILTER_VALIDATE_INT) === false) {
- throw new \InvalidArgumentException('Status code must be an integer value.');
- }
- }
-
- private function assertStatusCodeRange($statusCode)
- {
- if ($statusCode < 100 || $statusCode >= 600) {
- throw new \InvalidArgumentException('Status code must be an integer value between 1xx and 5xx.');
- }
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/Rfc7230.php b/vendor/guzzlehttp/psr7/src/Rfc7230.php
deleted file mode 100644
index 51b571f2..00000000
--- a/vendor/guzzlehttp/psr7/src/Rfc7230.php
+++ /dev/null
@@ -1,19 +0,0 @@
-@,;:\\\"/[\]?={}\x01-\x20\x7F]++):[ \t]*+((?:[ \t]*+[\x21-\x7E\x80-\xFF]++)*+)[ \t]*+\r?\n)m";
- const HEADER_FOLD_REGEX = "(\r?\n[ \t]++)";
-}
diff --git a/vendor/guzzlehttp/psr7/src/ServerRequest.php b/vendor/guzzlehttp/psr7/src/ServerRequest.php
deleted file mode 100644
index e6d26f5f..00000000
--- a/vendor/guzzlehttp/psr7/src/ServerRequest.php
+++ /dev/null
@@ -1,379 +0,0 @@
-serverParams = $serverParams;
-
- parent::__construct($method, $uri, $headers, $body, $version);
- }
-
- /**
- * Return an UploadedFile instance array.
- *
- * @param array $files A array which respect $_FILES structure
- *
- * @return array
- *
- * @throws InvalidArgumentException for unrecognized values
- */
- public static function normalizeFiles(array $files)
- {
- $normalized = [];
-
- foreach ($files as $key => $value) {
- if ($value instanceof UploadedFileInterface) {
- $normalized[$key] = $value;
- } elseif (is_array($value) && isset($value['tmp_name'])) {
- $normalized[$key] = self::createUploadedFileFromSpec($value);
- } elseif (is_array($value)) {
- $normalized[$key] = self::normalizeFiles($value);
- continue;
- } else {
- throw new InvalidArgumentException('Invalid value in files specification');
- }
- }
-
- return $normalized;
- }
-
- /**
- * Create and return an UploadedFile instance from a $_FILES specification.
- *
- * If the specification represents an array of values, this method will
- * delegate to normalizeNestedFileSpec() and return that return value.
- *
- * @param array $value $_FILES struct
- *
- * @return array|UploadedFileInterface
- */
- private static function createUploadedFileFromSpec(array $value)
- {
- if (is_array($value['tmp_name'])) {
- return self::normalizeNestedFileSpec($value);
- }
-
- return new UploadedFile(
- $value['tmp_name'],
- (int) $value['size'],
- (int) $value['error'],
- $value['name'],
- $value['type']
- );
- }
-
- /**
- * Normalize an array of file specifications.
- *
- * Loops through all nested files and returns a normalized array of
- * UploadedFileInterface instances.
- *
- * @param array $files
- *
- * @return UploadedFileInterface[]
- */
- private static function normalizeNestedFileSpec(array $files = [])
- {
- $normalizedFiles = [];
-
- foreach (array_keys($files['tmp_name']) as $key) {
- $spec = [
- 'tmp_name' => $files['tmp_name'][$key],
- 'size' => $files['size'][$key],
- 'error' => $files['error'][$key],
- 'name' => $files['name'][$key],
- 'type' => $files['type'][$key],
- ];
- $normalizedFiles[$key] = self::createUploadedFileFromSpec($spec);
- }
-
- return $normalizedFiles;
- }
-
- /**
- * Return a ServerRequest populated with superglobals:
- * $_GET
- * $_POST
- * $_COOKIE
- * $_FILES
- * $_SERVER
- *
- * @return ServerRequestInterface
- */
- public static function fromGlobals()
- {
- $method = isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : 'GET';
- $headers = getallheaders();
- $uri = self::getUriFromGlobals();
- $body = new CachingStream(new LazyOpenStream('php://input', 'r+'));
- $protocol = isset($_SERVER['SERVER_PROTOCOL']) ? str_replace('HTTP/', '', $_SERVER['SERVER_PROTOCOL']) : '1.1';
-
- $serverRequest = new ServerRequest($method, $uri, $headers, $body, $protocol, $_SERVER);
-
- return $serverRequest
- ->withCookieParams($_COOKIE)
- ->withQueryParams($_GET)
- ->withParsedBody($_POST)
- ->withUploadedFiles(self::normalizeFiles($_FILES));
- }
-
- private static function extractHostAndPortFromAuthority($authority)
- {
- $uri = 'http://' . $authority;
- $parts = parse_url($uri);
- if (false === $parts) {
- return [null, null];
- }
-
- $host = isset($parts['host']) ? $parts['host'] : null;
- $port = isset($parts['port']) ? $parts['port'] : null;
-
- return [$host, $port];
- }
-
- /**
- * Get a Uri populated with values from $_SERVER.
- *
- * @return UriInterface
- */
- public static function getUriFromGlobals()
- {
- $uri = new Uri('');
-
- $uri = $uri->withScheme(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' ? 'https' : 'http');
-
- $hasPort = false;
- if (isset($_SERVER['HTTP_HOST'])) {
- list($host, $port) = self::extractHostAndPortFromAuthority($_SERVER['HTTP_HOST']);
- if ($host !== null) {
- $uri = $uri->withHost($host);
- }
-
- if ($port !== null) {
- $hasPort = true;
- $uri = $uri->withPort($port);
- }
- } elseif (isset($_SERVER['SERVER_NAME'])) {
- $uri = $uri->withHost($_SERVER['SERVER_NAME']);
- } elseif (isset($_SERVER['SERVER_ADDR'])) {
- $uri = $uri->withHost($_SERVER['SERVER_ADDR']);
- }
-
- if (!$hasPort && isset($_SERVER['SERVER_PORT'])) {
- $uri = $uri->withPort($_SERVER['SERVER_PORT']);
- }
-
- $hasQuery = false;
- if (isset($_SERVER['REQUEST_URI'])) {
- $requestUriParts = explode('?', $_SERVER['REQUEST_URI'], 2);
- $uri = $uri->withPath($requestUriParts[0]);
- if (isset($requestUriParts[1])) {
- $hasQuery = true;
- $uri = $uri->withQuery($requestUriParts[1]);
- }
- }
-
- if (!$hasQuery && isset($_SERVER['QUERY_STRING'])) {
- $uri = $uri->withQuery($_SERVER['QUERY_STRING']);
- }
-
- return $uri;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getServerParams()
- {
- return $this->serverParams;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getUploadedFiles()
- {
- return $this->uploadedFiles;
- }
-
- /**
- * {@inheritdoc}
- */
- public function withUploadedFiles(array $uploadedFiles)
- {
- $new = clone $this;
- $new->uploadedFiles = $uploadedFiles;
-
- return $new;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getCookieParams()
- {
- return $this->cookieParams;
- }
-
- /**
- * {@inheritdoc}
- */
- public function withCookieParams(array $cookies)
- {
- $new = clone $this;
- $new->cookieParams = $cookies;
-
- return $new;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getQueryParams()
- {
- return $this->queryParams;
- }
-
- /**
- * {@inheritdoc}
- */
- public function withQueryParams(array $query)
- {
- $new = clone $this;
- $new->queryParams = $query;
-
- return $new;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getParsedBody()
- {
- return $this->parsedBody;
- }
-
- /**
- * {@inheritdoc}
- */
- public function withParsedBody($data)
- {
- $new = clone $this;
- $new->parsedBody = $data;
-
- return $new;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getAttributes()
- {
- return $this->attributes;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getAttribute($attribute, $default = null)
- {
- if (false === array_key_exists($attribute, $this->attributes)) {
- return $default;
- }
-
- return $this->attributes[$attribute];
- }
-
- /**
- * {@inheritdoc}
- */
- public function withAttribute($attribute, $value)
- {
- $new = clone $this;
- $new->attributes[$attribute] = $value;
-
- return $new;
- }
-
- /**
- * {@inheritdoc}
- */
- public function withoutAttribute($attribute)
- {
- if (false === array_key_exists($attribute, $this->attributes)) {
- return $this;
- }
-
- $new = clone $this;
- unset($new->attributes[$attribute]);
-
- return $new;
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/Stream.php b/vendor/guzzlehttp/psr7/src/Stream.php
deleted file mode 100644
index 3865d6d6..00000000
--- a/vendor/guzzlehttp/psr7/src/Stream.php
+++ /dev/null
@@ -1,270 +0,0 @@
-size = $options['size'];
- }
-
- $this->customMetadata = isset($options['metadata'])
- ? $options['metadata']
- : [];
-
- $this->stream = $stream;
- $meta = stream_get_meta_data($this->stream);
- $this->seekable = $meta['seekable'];
- $this->readable = (bool)preg_match(self::READABLE_MODES, $meta['mode']);
- $this->writable = (bool)preg_match(self::WRITABLE_MODES, $meta['mode']);
- $this->uri = $this->getMetadata('uri');
- }
-
- /**
- * Closes the stream when the destructed
- */
- public function __destruct()
- {
- $this->close();
- }
-
- public function __toString()
- {
- try {
- if ($this->isSeekable()) {
- $this->seek(0);
- }
- return $this->getContents();
- } catch (\Exception $e) {
- return '';
- }
- }
-
- public function getContents()
- {
- if (!isset($this->stream)) {
- throw new \RuntimeException('Stream is detached');
- }
-
- $contents = stream_get_contents($this->stream);
-
- if ($contents === false) {
- throw new \RuntimeException('Unable to read stream contents');
- }
-
- return $contents;
- }
-
- public function close()
- {
- if (isset($this->stream)) {
- if (is_resource($this->stream)) {
- fclose($this->stream);
- }
- $this->detach();
- }
- }
-
- public function detach()
- {
- if (!isset($this->stream)) {
- return null;
- }
-
- $result = $this->stream;
- unset($this->stream);
- $this->size = $this->uri = null;
- $this->readable = $this->writable = $this->seekable = false;
-
- return $result;
- }
-
- public function getSize()
- {
- if ($this->size !== null) {
- return $this->size;
- }
-
- if (!isset($this->stream)) {
- return null;
- }
-
- // Clear the stat cache if the stream has a URI
- if ($this->uri) {
- clearstatcache(true, $this->uri);
- }
-
- $stats = fstat($this->stream);
- if (isset($stats['size'])) {
- $this->size = $stats['size'];
- return $this->size;
- }
-
- return null;
- }
-
- public function isReadable()
- {
- return $this->readable;
- }
-
- public function isWritable()
- {
- return $this->writable;
- }
-
- public function isSeekable()
- {
- return $this->seekable;
- }
-
- public function eof()
- {
- if (!isset($this->stream)) {
- throw new \RuntimeException('Stream is detached');
- }
-
- return feof($this->stream);
- }
-
- public function tell()
- {
- if (!isset($this->stream)) {
- throw new \RuntimeException('Stream is detached');
- }
-
- $result = ftell($this->stream);
-
- if ($result === false) {
- throw new \RuntimeException('Unable to determine stream position');
- }
-
- return $result;
- }
-
- public function rewind()
- {
- $this->seek(0);
- }
-
- public function seek($offset, $whence = SEEK_SET)
- {
- $whence = (int) $whence;
-
- if (!isset($this->stream)) {
- throw new \RuntimeException('Stream is detached');
- }
- if (!$this->seekable) {
- throw new \RuntimeException('Stream is not seekable');
- }
- if (fseek($this->stream, $offset, $whence) === -1) {
- throw new \RuntimeException('Unable to seek to stream position '
- . $offset . ' with whence ' . var_export($whence, true));
- }
- }
-
- public function read($length)
- {
- if (!isset($this->stream)) {
- throw new \RuntimeException('Stream is detached');
- }
- if (!$this->readable) {
- throw new \RuntimeException('Cannot read from non-readable stream');
- }
- if ($length < 0) {
- throw new \RuntimeException('Length parameter cannot be negative');
- }
-
- if (0 === $length) {
- return '';
- }
-
- $string = fread($this->stream, $length);
- if (false === $string) {
- throw new \RuntimeException('Unable to read from stream');
- }
-
- return $string;
- }
-
- public function write($string)
- {
- if (!isset($this->stream)) {
- throw new \RuntimeException('Stream is detached');
- }
- if (!$this->writable) {
- throw new \RuntimeException('Cannot write to a non-writable stream');
- }
-
- // We can't know the size after writing anything
- $this->size = null;
- $result = fwrite($this->stream, $string);
-
- if ($result === false) {
- throw new \RuntimeException('Unable to write to stream');
- }
-
- return $result;
- }
-
- public function getMetadata($key = null)
- {
- if (!isset($this->stream)) {
- return $key ? null : [];
- } elseif (!$key) {
- return $this->customMetadata + stream_get_meta_data($this->stream);
- } elseif (isset($this->customMetadata[$key])) {
- return $this->customMetadata[$key];
- }
-
- $meta = stream_get_meta_data($this->stream);
-
- return isset($meta[$key]) ? $meta[$key] : null;
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php b/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php
deleted file mode 100644
index 5025dd67..00000000
--- a/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php
+++ /dev/null
@@ -1,152 +0,0 @@
-stream = $stream;
- }
-
- /**
- * Magic method used to create a new stream if streams are not added in
- * the constructor of a decorator (e.g., LazyOpenStream).
- *
- * @param string $name Name of the property (allows "stream" only).
- *
- * @return StreamInterface
- */
- public function __get($name)
- {
- if ($name == 'stream') {
- $this->stream = $this->createStream();
- return $this->stream;
- }
-
- throw new \UnexpectedValueException("$name not found on class");
- }
-
- public function __toString()
- {
- try {
- if ($this->isSeekable()) {
- $this->seek(0);
- }
- return $this->getContents();
- } catch (\Exception $e) {
- // Really, PHP? https://bugs.php.net/bug.php?id=53648
- trigger_error('StreamDecorator::__toString exception: '
- . (string) $e, E_USER_ERROR);
- return '';
- }
- }
-
- public function getContents()
- {
- return Utils::copyToString($this);
- }
-
- /**
- * Allow decorators to implement custom methods
- *
- * @param string $method Missing method name
- * @param array $args Method arguments
- *
- * @return mixed
- */
- public function __call($method, array $args)
- {
- $result = call_user_func_array([$this->stream, $method], $args);
-
- // Always return the wrapped object if the result is a return $this
- return $result === $this->stream ? $this : $result;
- }
-
- public function close()
- {
- $this->stream->close();
- }
-
- public function getMetadata($key = null)
- {
- return $this->stream->getMetadata($key);
- }
-
- public function detach()
- {
- return $this->stream->detach();
- }
-
- public function getSize()
- {
- return $this->stream->getSize();
- }
-
- public function eof()
- {
- return $this->stream->eof();
- }
-
- public function tell()
- {
- return $this->stream->tell();
- }
-
- public function isReadable()
- {
- return $this->stream->isReadable();
- }
-
- public function isWritable()
- {
- return $this->stream->isWritable();
- }
-
- public function isSeekable()
- {
- return $this->stream->isSeekable();
- }
-
- public function rewind()
- {
- $this->seek(0);
- }
-
- public function seek($offset, $whence = SEEK_SET)
- {
- $this->stream->seek($offset, $whence);
- }
-
- public function read($length)
- {
- return $this->stream->read($length);
- }
-
- public function write($string)
- {
- return $this->stream->write($string);
- }
-
- /**
- * Implement in subclasses to dynamically create streams when requested.
- *
- * @return StreamInterface
- *
- * @throws \BadMethodCallException
- */
- protected function createStream()
- {
- throw new \BadMethodCallException('Not implemented');
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/StreamWrapper.php b/vendor/guzzlehttp/psr7/src/StreamWrapper.php
deleted file mode 100644
index fc7cb969..00000000
--- a/vendor/guzzlehttp/psr7/src/StreamWrapper.php
+++ /dev/null
@@ -1,165 +0,0 @@
-isReadable()) {
- $mode = $stream->isWritable() ? 'r+' : 'r';
- } elseif ($stream->isWritable()) {
- $mode = 'w';
- } else {
- throw new \InvalidArgumentException('The stream must be readable, '
- . 'writable, or both.');
- }
-
- return fopen('guzzle://stream', $mode, null, self::createStreamContext($stream));
- }
-
- /**
- * Creates a stream context that can be used to open a stream as a php stream resource.
- *
- * @param StreamInterface $stream
- *
- * @return resource
- */
- public static function createStreamContext(StreamInterface $stream)
- {
- return stream_context_create([
- 'guzzle' => ['stream' => $stream]
- ]);
- }
-
- /**
- * Registers the stream wrapper if needed
- */
- public static function register()
- {
- if (!in_array('guzzle', stream_get_wrappers())) {
- stream_wrapper_register('guzzle', __CLASS__);
- }
- }
-
- public function stream_open($path, $mode, $options, &$opened_path)
- {
- $options = stream_context_get_options($this->context);
-
- if (!isset($options['guzzle']['stream'])) {
- return false;
- }
-
- $this->mode = $mode;
- $this->stream = $options['guzzle']['stream'];
-
- return true;
- }
-
- public function stream_read($count)
- {
- return $this->stream->read($count);
- }
-
- public function stream_write($data)
- {
- return (int) $this->stream->write($data);
- }
-
- public function stream_tell()
- {
- return $this->stream->tell();
- }
-
- public function stream_eof()
- {
- return $this->stream->eof();
- }
-
- public function stream_seek($offset, $whence)
- {
- $this->stream->seek($offset, $whence);
-
- return true;
- }
-
- public function stream_cast($cast_as)
- {
- $stream = clone($this->stream);
-
- return $stream->detach();
- }
-
- public function stream_stat()
- {
- static $modeMap = [
- 'r' => 33060,
- 'rb' => 33060,
- 'r+' => 33206,
- 'w' => 33188,
- 'wb' => 33188
- ];
-
- return [
- 'dev' => 0,
- 'ino' => 0,
- 'mode' => $modeMap[$this->mode],
- 'nlink' => 0,
- 'uid' => 0,
- 'gid' => 0,
- 'rdev' => 0,
- 'size' => $this->stream->getSize() ?: 0,
- 'atime' => 0,
- 'mtime' => 0,
- 'ctime' => 0,
- 'blksize' => 0,
- 'blocks' => 0
- ];
- }
-
- public function url_stat($path, $flags)
- {
- return [
- 'dev' => 0,
- 'ino' => 0,
- 'mode' => 0,
- 'nlink' => 0,
- 'uid' => 0,
- 'gid' => 0,
- 'rdev' => 0,
- 'size' => 0,
- 'atime' => 0,
- 'mtime' => 0,
- 'ctime' => 0,
- 'blksize' => 0,
- 'blocks' => 0
- ];
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/UploadedFile.php b/vendor/guzzlehttp/psr7/src/UploadedFile.php
deleted file mode 100644
index bf342c4d..00000000
--- a/vendor/guzzlehttp/psr7/src/UploadedFile.php
+++ /dev/null
@@ -1,328 +0,0 @@
-setError($errorStatus);
- $this->setSize($size);
- $this->setClientFilename($clientFilename);
- $this->setClientMediaType($clientMediaType);
-
- if ($this->isOk()) {
- $this->setStreamOrFile($streamOrFile);
- }
- }
-
- /**
- * Depending on the value set file or stream variable
- *
- * @param mixed $streamOrFile
- *
- * @throws InvalidArgumentException
- */
- private function setStreamOrFile($streamOrFile)
- {
- if (is_string($streamOrFile)) {
- $this->file = $streamOrFile;
- } elseif (is_resource($streamOrFile)) {
- $this->stream = new Stream($streamOrFile);
- } elseif ($streamOrFile instanceof StreamInterface) {
- $this->stream = $streamOrFile;
- } else {
- throw new InvalidArgumentException(
- 'Invalid stream or file provided for UploadedFile'
- );
- }
- }
-
- /**
- * @param int $error
- *
- * @throws InvalidArgumentException
- */
- private function setError($error)
- {
- if (false === is_int($error)) {
- throw new InvalidArgumentException(
- 'Upload file error status must be an integer'
- );
- }
-
- if (false === in_array($error, UploadedFile::$errors)) {
- throw new InvalidArgumentException(
- 'Invalid error status for UploadedFile'
- );
- }
-
- $this->error = $error;
- }
-
- /**
- * @param int $size
- *
- * @throws InvalidArgumentException
- */
- private function setSize($size)
- {
- if (false === is_int($size)) {
- throw new InvalidArgumentException(
- 'Upload file size must be an integer'
- );
- }
-
- $this->size = $size;
- }
-
- /**
- * @param mixed $param
- *
- * @return bool
- */
- private function isStringOrNull($param)
- {
- return in_array(gettype($param), ['string', 'NULL']);
- }
-
- /**
- * @param mixed $param
- *
- * @return bool
- */
- private function isStringNotEmpty($param)
- {
- return is_string($param) && false === empty($param);
- }
-
- /**
- * @param string|null $clientFilename
- *
- * @throws InvalidArgumentException
- */
- private function setClientFilename($clientFilename)
- {
- if (false === $this->isStringOrNull($clientFilename)) {
- throw new InvalidArgumentException(
- 'Upload file client filename must be a string or null'
- );
- }
-
- $this->clientFilename = $clientFilename;
- }
-
- /**
- * @param string|null $clientMediaType
- *
- * @throws InvalidArgumentException
- */
- private function setClientMediaType($clientMediaType)
- {
- if (false === $this->isStringOrNull($clientMediaType)) {
- throw new InvalidArgumentException(
- 'Upload file client media type must be a string or null'
- );
- }
-
- $this->clientMediaType = $clientMediaType;
- }
-
- /**
- * Return true if there is no upload error
- *
- * @return bool
- */
- private function isOk()
- {
- return $this->error === UPLOAD_ERR_OK;
- }
-
- /**
- * @return bool
- */
- public function isMoved()
- {
- return $this->moved;
- }
-
- /**
- * @throws RuntimeException if is moved or not ok
- */
- private function validateActive()
- {
- if (false === $this->isOk()) {
- throw new RuntimeException('Cannot retrieve stream due to upload error');
- }
-
- if ($this->isMoved()) {
- throw new RuntimeException('Cannot retrieve stream after it has already been moved');
- }
- }
-
- /**
- * {@inheritdoc}
- *
- * @throws RuntimeException if the upload was not successful.
- */
- public function getStream()
- {
- $this->validateActive();
-
- if ($this->stream instanceof StreamInterface) {
- return $this->stream;
- }
-
- return new LazyOpenStream($this->file, 'r+');
- }
-
- /**
- * {@inheritdoc}
- *
- * @see http://php.net/is_uploaded_file
- * @see http://php.net/move_uploaded_file
- *
- * @param string $targetPath Path to which to move the uploaded file.
- *
- * @throws RuntimeException if the upload was not successful.
- * @throws InvalidArgumentException if the $path specified is invalid.
- * @throws RuntimeException on any error during the move operation, or on
- * the second or subsequent call to the method.
- */
- public function moveTo($targetPath)
- {
- $this->validateActive();
-
- if (false === $this->isStringNotEmpty($targetPath)) {
- throw new InvalidArgumentException(
- 'Invalid path provided for move operation; must be a non-empty string'
- );
- }
-
- if ($this->file) {
- $this->moved = php_sapi_name() == 'cli'
- ? rename($this->file, $targetPath)
- : move_uploaded_file($this->file, $targetPath);
- } else {
- Utils::copyToStream(
- $this->getStream(),
- new LazyOpenStream($targetPath, 'w')
- );
-
- $this->moved = true;
- }
-
- if (false === $this->moved) {
- throw new RuntimeException(
- sprintf('Uploaded file could not be moved to %s', $targetPath)
- );
- }
- }
-
- /**
- * {@inheritdoc}
- *
- * @return int|null The file size in bytes or null if unknown.
- */
- public function getSize()
- {
- return $this->size;
- }
-
- /**
- * {@inheritdoc}
- *
- * @see http://php.net/manual/en/features.file-upload.errors.php
- *
- * @return int One of PHP's UPLOAD_ERR_XXX constants.
- */
- public function getError()
- {
- return $this->error;
- }
-
- /**
- * {@inheritdoc}
- *
- * @return string|null The filename sent by the client or null if none
- * was provided.
- */
- public function getClientFilename()
- {
- return $this->clientFilename;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getClientMediaType()
- {
- return $this->clientMediaType;
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/Uri.php b/vendor/guzzlehttp/psr7/src/Uri.php
deleted file mode 100644
index 0f9f020d..00000000
--- a/vendor/guzzlehttp/psr7/src/Uri.php
+++ /dev/null
@@ -1,810 +0,0 @@
- 80,
- 'https' => 443,
- 'ftp' => 21,
- 'gopher' => 70,
- 'nntp' => 119,
- 'news' => 119,
- 'telnet' => 23,
- 'tn3270' => 23,
- 'imap' => 143,
- 'pop' => 110,
- 'ldap' => 389,
- ];
-
- private static $charUnreserved = 'a-zA-Z0-9_\-\.~';
- private static $charSubDelims = '!\$&\'\(\)\*\+,;=';
- private static $replaceQuery = ['=' => '%3D', '&' => '%26'];
-
- /** @var string Uri scheme. */
- private $scheme = '';
-
- /** @var string Uri user info. */
- private $userInfo = '';
-
- /** @var string Uri host. */
- private $host = '';
-
- /** @var int|null Uri port. */
- private $port;
-
- /** @var string Uri path. */
- private $path = '';
-
- /** @var string Uri query string. */
- private $query = '';
-
- /** @var string Uri fragment. */
- private $fragment = '';
-
- /**
- * @param string $uri URI to parse
- */
- public function __construct($uri = '')
- {
- // weak type check to also accept null until we can add scalar type hints
- if ($uri != '') {
- $parts = self::parse($uri);
- if ($parts === false) {
- throw new \InvalidArgumentException("Unable to parse URI: $uri");
- }
- $this->applyParts($parts);
- }
- }
-
- /**
- * UTF-8 aware \parse_url() replacement.
- *
- * The internal function produces broken output for non ASCII domain names
- * (IDN) when used with locales other than "C".
- *
- * On the other hand, cURL understands IDN correctly only when UTF-8 locale
- * is configured ("C.UTF-8", "en_US.UTF-8", etc.).
- *
- * @see https://bugs.php.net/bug.php?id=52923
- * @see https://www.php.net/manual/en/function.parse-url.php#114817
- * @see https://curl.haxx.se/libcurl/c/CURLOPT_URL.html#ENCODING
- *
- * @param string $url
- *
- * @return array|false
- */
- private static function parse($url)
- {
- // If IPv6
- $prefix = '';
- if (preg_match('%^(.*://\[[0-9:a-f]+\])(.*?)$%', $url, $matches)) {
- $prefix = $matches[1];
- $url = $matches[2];
- }
-
- $encodedUrl = preg_replace_callback(
- '%[^:/@?&=#]+%usD',
- static function ($matches) {
- return urlencode($matches[0]);
- },
- $url
- );
-
- $result = parse_url($prefix . $encodedUrl);
-
- if ($result === false) {
- return false;
- }
-
- return array_map('urldecode', $result);
- }
-
- public function __toString()
- {
- return self::composeComponents(
- $this->scheme,
- $this->getAuthority(),
- $this->path,
- $this->query,
- $this->fragment
- );
- }
-
- /**
- * Composes a URI reference string from its various components.
- *
- * Usually this method does not need to be called manually but instead is used indirectly via
- * `Psr\Http\Message\UriInterface::__toString`.
- *
- * PSR-7 UriInterface treats an empty component the same as a missing component as
- * getQuery(), getFragment() etc. always return a string. This explains the slight
- * difference to RFC 3986 Section 5.3.
- *
- * Another adjustment is that the authority separator is added even when the authority is missing/empty
- * for the "file" scheme. This is because PHP stream functions like `file_get_contents` only work with
- * `file:///myfile` but not with `file:/myfile` although they are equivalent according to RFC 3986. But
- * `file:///` is the more common syntax for the file scheme anyway (Chrome for example redirects to
- * that format).
- *
- * @param string $scheme
- * @param string $authority
- * @param string $path
- * @param string $query
- * @param string $fragment
- *
- * @return string
- *
- * @link https://tools.ietf.org/html/rfc3986#section-5.3
- */
- public static function composeComponents($scheme, $authority, $path, $query, $fragment)
- {
- $uri = '';
-
- // weak type checks to also accept null until we can add scalar type hints
- if ($scheme != '') {
- $uri .= $scheme . ':';
- }
-
- if ($authority != ''|| $scheme === 'file') {
- $uri .= '//' . $authority;
- }
-
- $uri .= $path;
-
- if ($query != '') {
- $uri .= '?' . $query;
- }
-
- if ($fragment != '') {
- $uri .= '#' . $fragment;
- }
-
- return $uri;
- }
-
- /**
- * Whether the URI has the default port of the current scheme.
- *
- * `Psr\Http\Message\UriInterface::getPort` may return null or the standard port. This method can be used
- * independently of the implementation.
- *
- * @param UriInterface $uri
- *
- * @return bool
- */
- public static function isDefaultPort(UriInterface $uri)
- {
- return $uri->getPort() === null
- || (isset(self::$defaultPorts[$uri->getScheme()]) && $uri->getPort() === self::$defaultPorts[$uri->getScheme()]);
- }
-
- /**
- * Whether the URI is absolute, i.e. it has a scheme.
- *
- * An instance of UriInterface can either be an absolute URI or a relative reference. This method returns true
- * if it is the former. An absolute URI has a scheme. A relative reference is used to express a URI relative
- * to another URI, the base URI. Relative references can be divided into several forms:
- * - network-path references, e.g. '//example.com/path'
- * - absolute-path references, e.g. '/path'
- * - relative-path references, e.g. 'subpath'
- *
- * @param UriInterface $uri
- *
- * @return bool
- *
- * @see Uri::isNetworkPathReference
- * @see Uri::isAbsolutePathReference
- * @see Uri::isRelativePathReference
- * @link https://tools.ietf.org/html/rfc3986#section-4
- */
- public static function isAbsolute(UriInterface $uri)
- {
- return $uri->getScheme() !== '';
- }
-
- /**
- * Whether the URI is a network-path reference.
- *
- * A relative reference that begins with two slash characters is termed an network-path reference.
- *
- * @param UriInterface $uri
- *
- * @return bool
- *
- * @link https://tools.ietf.org/html/rfc3986#section-4.2
- */
- public static function isNetworkPathReference(UriInterface $uri)
- {
- return $uri->getScheme() === '' && $uri->getAuthority() !== '';
- }
-
- /**
- * Whether the URI is a absolute-path reference.
- *
- * A relative reference that begins with a single slash character is termed an absolute-path reference.
- *
- * @param UriInterface $uri
- *
- * @return bool
- *
- * @link https://tools.ietf.org/html/rfc3986#section-4.2
- */
- public static function isAbsolutePathReference(UriInterface $uri)
- {
- return $uri->getScheme() === ''
- && $uri->getAuthority() === ''
- && isset($uri->getPath()[0])
- && $uri->getPath()[0] === '/';
- }
-
- /**
- * Whether the URI is a relative-path reference.
- *
- * A relative reference that does not begin with a slash character is termed a relative-path reference.
- *
- * @param UriInterface $uri
- *
- * @return bool
- *
- * @link https://tools.ietf.org/html/rfc3986#section-4.2
- */
- public static function isRelativePathReference(UriInterface $uri)
- {
- return $uri->getScheme() === ''
- && $uri->getAuthority() === ''
- && (!isset($uri->getPath()[0]) || $uri->getPath()[0] !== '/');
- }
-
- /**
- * Whether the URI is a same-document reference.
- *
- * A same-document reference refers to a URI that is, aside from its fragment
- * component, identical to the base URI. When no base URI is given, only an empty
- * URI reference (apart from its fragment) is considered a same-document reference.
- *
- * @param UriInterface $uri The URI to check
- * @param UriInterface|null $base An optional base URI to compare against
- *
- * @return bool
- *
- * @link https://tools.ietf.org/html/rfc3986#section-4.4
- */
- public static function isSameDocumentReference(UriInterface $uri, UriInterface $base = null)
- {
- if ($base !== null) {
- $uri = UriResolver::resolve($base, $uri);
-
- return ($uri->getScheme() === $base->getScheme())
- && ($uri->getAuthority() === $base->getAuthority())
- && ($uri->getPath() === $base->getPath())
- && ($uri->getQuery() === $base->getQuery());
- }
-
- return $uri->getScheme() === '' && $uri->getAuthority() === '' && $uri->getPath() === '' && $uri->getQuery() === '';
- }
-
- /**
- * Removes dot segments from a path and returns the new path.
- *
- * @param string $path
- *
- * @return string
- *
- * @deprecated since version 1.4. Use UriResolver::removeDotSegments instead.
- * @see UriResolver::removeDotSegments
- */
- public static function removeDotSegments($path)
- {
- return UriResolver::removeDotSegments($path);
- }
-
- /**
- * Converts the relative URI into a new URI that is resolved against the base URI.
- *
- * @param UriInterface $base Base URI
- * @param string|UriInterface $rel Relative URI
- *
- * @return UriInterface
- *
- * @deprecated since version 1.4. Use UriResolver::resolve instead.
- * @see UriResolver::resolve
- */
- public static function resolve(UriInterface $base, $rel)
- {
- if (!($rel instanceof UriInterface)) {
- $rel = new self($rel);
- }
-
- return UriResolver::resolve($base, $rel);
- }
-
- /**
- * Creates a new URI with a specific query string value removed.
- *
- * Any existing query string values that exactly match the provided key are
- * removed.
- *
- * @param UriInterface $uri URI to use as a base.
- * @param string $key Query string key to remove.
- *
- * @return UriInterface
- */
- public static function withoutQueryValue(UriInterface $uri, $key)
- {
- $result = self::getFilteredQueryString($uri, [$key]);
-
- return $uri->withQuery(implode('&', $result));
- }
-
- /**
- * Creates a new URI with a specific query string value.
- *
- * Any existing query string values that exactly match the provided key are
- * removed and replaced with the given key value pair.
- *
- * A value of null will set the query string key without a value, e.g. "key"
- * instead of "key=value".
- *
- * @param UriInterface $uri URI to use as a base.
- * @param string $key Key to set.
- * @param string|null $value Value to set
- *
- * @return UriInterface
- */
- public static function withQueryValue(UriInterface $uri, $key, $value)
- {
- $result = self::getFilteredQueryString($uri, [$key]);
-
- $result[] = self::generateQueryString($key, $value);
-
- return $uri->withQuery(implode('&', $result));
- }
-
- /**
- * Creates a new URI with multiple specific query string values.
- *
- * It has the same behavior as withQueryValue() but for an associative array of key => value.
- *
- * @param UriInterface $uri URI to use as a base.
- * @param array $keyValueArray Associative array of key and values
- *
- * @return UriInterface
- */
- public static function withQueryValues(UriInterface $uri, array $keyValueArray)
- {
- $result = self::getFilteredQueryString($uri, array_keys($keyValueArray));
-
- foreach ($keyValueArray as $key => $value) {
- $result[] = self::generateQueryString($key, $value);
- }
-
- return $uri->withQuery(implode('&', $result));
- }
-
- /**
- * Creates a URI from a hash of `parse_url` components.
- *
- * @param array $parts
- *
- * @return UriInterface
- *
- * @link http://php.net/manual/en/function.parse-url.php
- *
- * @throws \InvalidArgumentException If the components do not form a valid URI.
- */
- public static function fromParts(array $parts)
- {
- $uri = new self();
- $uri->applyParts($parts);
- $uri->validateState();
-
- return $uri;
- }
-
- public function getScheme()
- {
- return $this->scheme;
- }
-
- public function getAuthority()
- {
- $authority = $this->host;
- if ($this->userInfo !== '') {
- $authority = $this->userInfo . '@' . $authority;
- }
-
- if ($this->port !== null) {
- $authority .= ':' . $this->port;
- }
-
- return $authority;
- }
-
- public function getUserInfo()
- {
- return $this->userInfo;
- }
-
- public function getHost()
- {
- return $this->host;
- }
-
- public function getPort()
- {
- return $this->port;
- }
-
- public function getPath()
- {
- return $this->path;
- }
-
- public function getQuery()
- {
- return $this->query;
- }
-
- public function getFragment()
- {
- return $this->fragment;
- }
-
- public function withScheme($scheme)
- {
- $scheme = $this->filterScheme($scheme);
-
- if ($this->scheme === $scheme) {
- return $this;
- }
-
- $new = clone $this;
- $new->scheme = $scheme;
- $new->removeDefaultPort();
- $new->validateState();
-
- return $new;
- }
-
- public function withUserInfo($user, $password = null)
- {
- $info = $this->filterUserInfoComponent($user);
- if ($password !== null) {
- $info .= ':' . $this->filterUserInfoComponent($password);
- }
-
- if ($this->userInfo === $info) {
- return $this;
- }
-
- $new = clone $this;
- $new->userInfo = $info;
- $new->validateState();
-
- return $new;
- }
-
- public function withHost($host)
- {
- $host = $this->filterHost($host);
-
- if ($this->host === $host) {
- return $this;
- }
-
- $new = clone $this;
- $new->host = $host;
- $new->validateState();
-
- return $new;
- }
-
- public function withPort($port)
- {
- $port = $this->filterPort($port);
-
- if ($this->port === $port) {
- return $this;
- }
-
- $new = clone $this;
- $new->port = $port;
- $new->removeDefaultPort();
- $new->validateState();
-
- return $new;
- }
-
- public function withPath($path)
- {
- $path = $this->filterPath($path);
-
- if ($this->path === $path) {
- return $this;
- }
-
- $new = clone $this;
- $new->path = $path;
- $new->validateState();
-
- return $new;
- }
-
- public function withQuery($query)
- {
- $query = $this->filterQueryAndFragment($query);
-
- if ($this->query === $query) {
- return $this;
- }
-
- $new = clone $this;
- $new->query = $query;
-
- return $new;
- }
-
- public function withFragment($fragment)
- {
- $fragment = $this->filterQueryAndFragment($fragment);
-
- if ($this->fragment === $fragment) {
- return $this;
- }
-
- $new = clone $this;
- $new->fragment = $fragment;
-
- return $new;
- }
-
- /**
- * Apply parse_url parts to a URI.
- *
- * @param array $parts Array of parse_url parts to apply.
- */
- private function applyParts(array $parts)
- {
- $this->scheme = isset($parts['scheme'])
- ? $this->filterScheme($parts['scheme'])
- : '';
- $this->userInfo = isset($parts['user'])
- ? $this->filterUserInfoComponent($parts['user'])
- : '';
- $this->host = isset($parts['host'])
- ? $this->filterHost($parts['host'])
- : '';
- $this->port = isset($parts['port'])
- ? $this->filterPort($parts['port'])
- : null;
- $this->path = isset($parts['path'])
- ? $this->filterPath($parts['path'])
- : '';
- $this->query = isset($parts['query'])
- ? $this->filterQueryAndFragment($parts['query'])
- : '';
- $this->fragment = isset($parts['fragment'])
- ? $this->filterQueryAndFragment($parts['fragment'])
- : '';
- if (isset($parts['pass'])) {
- $this->userInfo .= ':' . $this->filterUserInfoComponent($parts['pass']);
- }
-
- $this->removeDefaultPort();
- }
-
- /**
- * @param string $scheme
- *
- * @return string
- *
- * @throws \InvalidArgumentException If the scheme is invalid.
- */
- private function filterScheme($scheme)
- {
- if (!is_string($scheme)) {
- throw new \InvalidArgumentException('Scheme must be a string');
- }
-
- return \strtr($scheme, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz');
- }
-
- /**
- * @param string $component
- *
- * @return string
- *
- * @throws \InvalidArgumentException If the user info is invalid.
- */
- private function filterUserInfoComponent($component)
- {
- if (!is_string($component)) {
- throw new \InvalidArgumentException('User info must be a string');
- }
-
- return preg_replace_callback(
- '/(?:[^%' . self::$charUnreserved . self::$charSubDelims . ']+|%(?![A-Fa-f0-9]{2}))/',
- [$this, 'rawurlencodeMatchZero'],
- $component
- );
- }
-
- /**
- * @param string $host
- *
- * @return string
- *
- * @throws \InvalidArgumentException If the host is invalid.
- */
- private function filterHost($host)
- {
- if (!is_string($host)) {
- throw new \InvalidArgumentException('Host must be a string');
- }
-
- return \strtr($host, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz');
- }
-
- /**
- * @param int|null $port
- *
- * @return int|null
- *
- * @throws \InvalidArgumentException If the port is invalid.
- */
- private function filterPort($port)
- {
- if ($port === null) {
- return null;
- }
-
- $port = (int) $port;
- if (0 > $port || 0xffff < $port) {
- throw new \InvalidArgumentException(
- sprintf('Invalid port: %d. Must be between 0 and 65535', $port)
- );
- }
-
- return $port;
- }
-
- /**
- * @param UriInterface $uri
- * @param array $keys
- *
- * @return array
- */
- private static function getFilteredQueryString(UriInterface $uri, array $keys)
- {
- $current = $uri->getQuery();
-
- if ($current === '') {
- return [];
- }
-
- $decodedKeys = array_map('rawurldecode', $keys);
-
- return array_filter(explode('&', $current), function ($part) use ($decodedKeys) {
- return !in_array(rawurldecode(explode('=', $part)[0]), $decodedKeys, true);
- });
- }
-
- /**
- * @param string $key
- * @param string|null $value
- *
- * @return string
- */
- private static function generateQueryString($key, $value)
- {
- // Query string separators ("=", "&") within the key or value need to be encoded
- // (while preventing double-encoding) before setting the query string. All other
- // chars that need percent-encoding will be encoded by withQuery().
- $queryString = strtr($key, self::$replaceQuery);
-
- if ($value !== null) {
- $queryString .= '=' . strtr($value, self::$replaceQuery);
- }
-
- return $queryString;
- }
-
- private function removeDefaultPort()
- {
- if ($this->port !== null && self::isDefaultPort($this)) {
- $this->port = null;
- }
- }
-
- /**
- * Filters the path of a URI
- *
- * @param string $path
- *
- * @return string
- *
- * @throws \InvalidArgumentException If the path is invalid.
- */
- private function filterPath($path)
- {
- if (!is_string($path)) {
- throw new \InvalidArgumentException('Path must be a string');
- }
-
- return preg_replace_callback(
- '/(?:[^' . self::$charUnreserved . self::$charSubDelims . '%:@\/]++|%(?![A-Fa-f0-9]{2}))/',
- [$this, 'rawurlencodeMatchZero'],
- $path
- );
- }
-
- /**
- * Filters the query string or fragment of a URI.
- *
- * @param string $str
- *
- * @return string
- *
- * @throws \InvalidArgumentException If the query or fragment is invalid.
- */
- private function filterQueryAndFragment($str)
- {
- if (!is_string($str)) {
- throw new \InvalidArgumentException('Query and fragment must be a string');
- }
-
- return preg_replace_callback(
- '/(?:[^' . self::$charUnreserved . self::$charSubDelims . '%:@\/\?]++|%(?![A-Fa-f0-9]{2}))/',
- [$this, 'rawurlencodeMatchZero'],
- $str
- );
- }
-
- private function rawurlencodeMatchZero(array $match)
- {
- return rawurlencode($match[0]);
- }
-
- private function validateState()
- {
- if ($this->host === '' && ($this->scheme === 'http' || $this->scheme === 'https')) {
- $this->host = self::HTTP_DEFAULT_HOST;
- }
-
- if ($this->getAuthority() === '') {
- if (0 === strpos($this->path, '//')) {
- throw new \InvalidArgumentException('The path of a URI without an authority must not start with two slashes "//"');
- }
- if ($this->scheme === '' && false !== strpos(explode('/', $this->path, 2)[0], ':')) {
- throw new \InvalidArgumentException('A relative URI must not have a path beginning with a segment containing a colon');
- }
- } elseif (isset($this->path[0]) && $this->path[0] !== '/') {
- @trigger_error(
- 'The path of a URI with an authority must start with a slash "/" or be empty. Automagically fixing the URI ' .
- 'by adding a leading slash to the path is deprecated since version 1.4 and will throw an exception instead.',
- E_USER_DEPRECATED
- );
- $this->path = '/' . $this->path;
- //throw new \InvalidArgumentException('The path of a URI with an authority must start with a slash "/" or be empty');
- }
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/UriNormalizer.php b/vendor/guzzlehttp/psr7/src/UriNormalizer.php
deleted file mode 100644
index 81419ead..00000000
--- a/vendor/guzzlehttp/psr7/src/UriNormalizer.php
+++ /dev/null
@@ -1,219 +0,0 @@
-getPath() === '' &&
- ($uri->getScheme() === 'http' || $uri->getScheme() === 'https')
- ) {
- $uri = $uri->withPath('/');
- }
-
- if ($flags & self::REMOVE_DEFAULT_HOST && $uri->getScheme() === 'file' && $uri->getHost() === 'localhost') {
- $uri = $uri->withHost('');
- }
-
- if ($flags & self::REMOVE_DEFAULT_PORT && $uri->getPort() !== null && Uri::isDefaultPort($uri)) {
- $uri = $uri->withPort(null);
- }
-
- if ($flags & self::REMOVE_DOT_SEGMENTS && !Uri::isRelativePathReference($uri)) {
- $uri = $uri->withPath(UriResolver::removeDotSegments($uri->getPath()));
- }
-
- if ($flags & self::REMOVE_DUPLICATE_SLASHES) {
- $uri = $uri->withPath(preg_replace('#//++#', '/', $uri->getPath()));
- }
-
- if ($flags & self::SORT_QUERY_PARAMETERS && $uri->getQuery() !== '') {
- $queryKeyValues = explode('&', $uri->getQuery());
- sort($queryKeyValues);
- $uri = $uri->withQuery(implode('&', $queryKeyValues));
- }
-
- return $uri;
- }
-
- /**
- * Whether two URIs can be considered equivalent.
- *
- * Both URIs are normalized automatically before comparison with the given $normalizations bitmask. The method also
- * accepts relative URI references and returns true when they are equivalent. This of course assumes they will be
- * resolved against the same base URI. If this is not the case, determination of equivalence or difference of
- * relative references does not mean anything.
- *
- * @param UriInterface $uri1 An URI to compare
- * @param UriInterface $uri2 An URI to compare
- * @param int $normalizations A bitmask of normalizations to apply, see constants
- *
- * @return bool
- *
- * @link https://tools.ietf.org/html/rfc3986#section-6.1
- */
- public static function isEquivalent(UriInterface $uri1, UriInterface $uri2, $normalizations = self::PRESERVING_NORMALIZATIONS)
- {
- return (string) self::normalize($uri1, $normalizations) === (string) self::normalize($uri2, $normalizations);
- }
-
- private static function capitalizePercentEncoding(UriInterface $uri)
- {
- $regex = '/(?:%[A-Fa-f0-9]{2})++/';
-
- $callback = function (array $match) {
- return strtoupper($match[0]);
- };
-
- return
- $uri->withPath(
- preg_replace_callback($regex, $callback, $uri->getPath())
- )->withQuery(
- preg_replace_callback($regex, $callback, $uri->getQuery())
- );
- }
-
- private static function decodeUnreservedCharacters(UriInterface $uri)
- {
- $regex = '/%(?:2D|2E|5F|7E|3[0-9]|[46][1-9A-F]|[57][0-9A])/i';
-
- $callback = function (array $match) {
- return rawurldecode($match[0]);
- };
-
- return
- $uri->withPath(
- preg_replace_callback($regex, $callback, $uri->getPath())
- )->withQuery(
- preg_replace_callback($regex, $callback, $uri->getQuery())
- );
- }
-
- private function __construct()
- {
- // cannot be instantiated
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/UriResolver.php b/vendor/guzzlehttp/psr7/src/UriResolver.php
deleted file mode 100644
index a3cb15d5..00000000
--- a/vendor/guzzlehttp/psr7/src/UriResolver.php
+++ /dev/null
@@ -1,222 +0,0 @@
-getScheme() != '') {
- return $rel->withPath(self::removeDotSegments($rel->getPath()));
- }
-
- if ($rel->getAuthority() != '') {
- $targetAuthority = $rel->getAuthority();
- $targetPath = self::removeDotSegments($rel->getPath());
- $targetQuery = $rel->getQuery();
- } else {
- $targetAuthority = $base->getAuthority();
- if ($rel->getPath() === '') {
- $targetPath = $base->getPath();
- $targetQuery = $rel->getQuery() != '' ? $rel->getQuery() : $base->getQuery();
- } else {
- if ($rel->getPath()[0] === '/') {
- $targetPath = $rel->getPath();
- } else {
- if ($targetAuthority != '' && $base->getPath() === '') {
- $targetPath = '/' . $rel->getPath();
- } else {
- $lastSlashPos = strrpos($base->getPath(), '/');
- if ($lastSlashPos === false) {
- $targetPath = $rel->getPath();
- } else {
- $targetPath = substr($base->getPath(), 0, $lastSlashPos + 1) . $rel->getPath();
- }
- }
- }
- $targetPath = self::removeDotSegments($targetPath);
- $targetQuery = $rel->getQuery();
- }
- }
-
- return new Uri(Uri::composeComponents(
- $base->getScheme(),
- $targetAuthority,
- $targetPath,
- $targetQuery,
- $rel->getFragment()
- ));
- }
-
- /**
- * Returns the target URI as a relative reference from the base URI.
- *
- * This method is the counterpart to resolve():
- *
- * (string) $target === (string) UriResolver::resolve($base, UriResolver::relativize($base, $target))
- *
- * One use-case is to use the current request URI as base URI and then generate relative links in your documents
- * to reduce the document size or offer self-contained downloadable document archives.
- *
- * $base = new Uri('http://example.com/a/b/');
- * echo UriResolver::relativize($base, new Uri('http://example.com/a/b/c')); // prints 'c'.
- * echo UriResolver::relativize($base, new Uri('http://example.com/a/x/y')); // prints '../x/y'.
- * echo UriResolver::relativize($base, new Uri('http://example.com/a/b/?q')); // prints '?q'.
- * echo UriResolver::relativize($base, new Uri('http://example.org/a/b/')); // prints '//example.org/a/b/'.
- *
- * This method also accepts a target that is already relative and will try to relativize it further. Only a
- * relative-path reference will be returned as-is.
- *
- * echo UriResolver::relativize($base, new Uri('/a/b/c')); // prints 'c' as well
- *
- * @param UriInterface $base Base URI
- * @param UriInterface $target Target URI
- *
- * @return UriInterface The relative URI reference
- */
- public static function relativize(UriInterface $base, UriInterface $target)
- {
- if ($target->getScheme() !== '' &&
- ($base->getScheme() !== $target->getScheme() || $target->getAuthority() === '' && $base->getAuthority() !== '')
- ) {
- return $target;
- }
-
- if (Uri::isRelativePathReference($target)) {
- // As the target is already highly relative we return it as-is. It would be possible to resolve
- // the target with `$target = self::resolve($base, $target);` and then try make it more relative
- // by removing a duplicate query. But let's not do that automatically.
- return $target;
- }
-
- if ($target->getAuthority() !== '' && $base->getAuthority() !== $target->getAuthority()) {
- return $target->withScheme('');
- }
-
- // We must remove the path before removing the authority because if the path starts with two slashes, the URI
- // would turn invalid. And we also cannot set a relative path before removing the authority, as that is also
- // invalid.
- $emptyPathUri = $target->withScheme('')->withPath('')->withUserInfo('')->withPort(null)->withHost('');
-
- if ($base->getPath() !== $target->getPath()) {
- return $emptyPathUri->withPath(self::getRelativePath($base, $target));
- }
-
- if ($base->getQuery() === $target->getQuery()) {
- // Only the target fragment is left. And it must be returned even if base and target fragment are the same.
- return $emptyPathUri->withQuery('');
- }
-
- // If the base URI has a query but the target has none, we cannot return an empty path reference as it would
- // inherit the base query component when resolving.
- if ($target->getQuery() === '') {
- $segments = explode('/', $target->getPath());
- $lastSegment = end($segments);
-
- return $emptyPathUri->withPath($lastSegment === '' ? './' : $lastSegment);
- }
-
- return $emptyPathUri;
- }
-
- private static function getRelativePath(UriInterface $base, UriInterface $target)
- {
- $sourceSegments = explode('/', $base->getPath());
- $targetSegments = explode('/', $target->getPath());
- array_pop($sourceSegments);
- $targetLastSegment = array_pop($targetSegments);
- foreach ($sourceSegments as $i => $segment) {
- if (isset($targetSegments[$i]) && $segment === $targetSegments[$i]) {
- unset($sourceSegments[$i], $targetSegments[$i]);
- } else {
- break;
- }
- }
- $targetSegments[] = $targetLastSegment;
- $relativePath = str_repeat('../', count($sourceSegments)) . implode('/', $targetSegments);
-
- // A reference to am empty last segment or an empty first sub-segment must be prefixed with "./".
- // This also applies to a segment with a colon character (e.g., "file:colon") that cannot be used
- // as the first segment of a relative-path reference, as it would be mistaken for a scheme name.
- if ('' === $relativePath || false !== strpos(explode('/', $relativePath, 2)[0], ':')) {
- $relativePath = "./$relativePath";
- } elseif ('/' === $relativePath[0]) {
- if ($base->getAuthority() != '' && $base->getPath() === '') {
- // In this case an extra slash is added by resolve() automatically. So we must not add one here.
- $relativePath = ".$relativePath";
- } else {
- $relativePath = "./$relativePath";
- }
- }
-
- return $relativePath;
- }
-
- private function __construct()
- {
- // cannot be instantiated
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/Utils.php b/vendor/guzzlehttp/psr7/src/Utils.php
deleted file mode 100644
index 6b6c8cce..00000000
--- a/vendor/guzzlehttp/psr7/src/Utils.php
+++ /dev/null
@@ -1,428 +0,0 @@
- $keys
- *
- * @return array
- */
- public static function caselessRemove($keys, array $data)
- {
- $result = [];
-
- foreach ($keys as &$key) {
- $key = strtolower($key);
- }
-
- foreach ($data as $k => $v) {
- if (!in_array(strtolower($k), $keys)) {
- $result[$k] = $v;
- }
- }
-
- return $result;
- }
-
- /**
- * Copy the contents of a stream into another stream until the given number
- * of bytes have been read.
- *
- * @param StreamInterface $source Stream to read from
- * @param StreamInterface $dest Stream to write to
- * @param int $maxLen Maximum number of bytes to read. Pass -1
- * to read the entire stream.
- *
- * @throws \RuntimeException on error.
- */
- public static function copyToStream(StreamInterface $source, StreamInterface $dest, $maxLen = -1)
- {
- $bufferSize = 8192;
-
- if ($maxLen === -1) {
- while (!$source->eof()) {
- if (!$dest->write($source->read($bufferSize))) {
- break;
- }
- }
- } else {
- $remaining = $maxLen;
- while ($remaining > 0 && !$source->eof()) {
- $buf = $source->read(min($bufferSize, $remaining));
- $len = strlen($buf);
- if (!$len) {
- break;
- }
- $remaining -= $len;
- $dest->write($buf);
- }
- }
- }
-
- /**
- * Copy the contents of a stream into a string until the given number of
- * bytes have been read.
- *
- * @param StreamInterface $stream Stream to read
- * @param int $maxLen Maximum number of bytes to read. Pass -1
- * to read the entire stream.
- *
- * @return string
- *
- * @throws \RuntimeException on error.
- */
- public static function copyToString(StreamInterface $stream, $maxLen = -1)
- {
- $buffer = '';
-
- if ($maxLen === -1) {
- while (!$stream->eof()) {
- $buf = $stream->read(1048576);
- // Using a loose equality here to match on '' and false.
- if ($buf == null) {
- break;
- }
- $buffer .= $buf;
- }
- return $buffer;
- }
-
- $len = 0;
- while (!$stream->eof() && $len < $maxLen) {
- $buf = $stream->read($maxLen - $len);
- // Using a loose equality here to match on '' and false.
- if ($buf == null) {
- break;
- }
- $buffer .= $buf;
- $len = strlen($buffer);
- }
-
- return $buffer;
- }
-
- /**
- * Calculate a hash of a stream.
- *
- * This method reads the entire stream to calculate a rolling hash, based
- * on PHP's `hash_init` functions.
- *
- * @param StreamInterface $stream Stream to calculate the hash for
- * @param string $algo Hash algorithm (e.g. md5, crc32, etc)
- * @param bool $rawOutput Whether or not to use raw output
- *
- * @return string Returns the hash of the stream
- *
- * @throws \RuntimeException on error.
- */
- public static function hash(StreamInterface $stream, $algo, $rawOutput = false)
- {
- $pos = $stream->tell();
-
- if ($pos > 0) {
- $stream->rewind();
- }
-
- $ctx = hash_init($algo);
- while (!$stream->eof()) {
- hash_update($ctx, $stream->read(1048576));
- }
-
- $out = hash_final($ctx, (bool) $rawOutput);
- $stream->seek($pos);
-
- return $out;
- }
-
- /**
- * Clone and modify a request with the given changes.
- *
- * This method is useful for reducing the number of clones needed to mutate
- * a message.
- *
- * The changes can be one of:
- * - method: (string) Changes the HTTP method.
- * - set_headers: (array) Sets the given headers.
- * - remove_headers: (array) Remove the given headers.
- * - body: (mixed) Sets the given body.
- * - uri: (UriInterface) Set the URI.
- * - query: (string) Set the query string value of the URI.
- * - version: (string) Set the protocol version.
- *
- * @param RequestInterface $request Request to clone and modify.
- * @param array $changes Changes to apply.
- *
- * @return RequestInterface
- */
- public static function modifyRequest(RequestInterface $request, array $changes)
- {
- if (!$changes) {
- return $request;
- }
-
- $headers = $request->getHeaders();
-
- if (!isset($changes['uri'])) {
- $uri = $request->getUri();
- } else {
- // Remove the host header if one is on the URI
- if ($host = $changes['uri']->getHost()) {
- $changes['set_headers']['Host'] = $host;
-
- if ($port = $changes['uri']->getPort()) {
- $standardPorts = ['http' => 80, 'https' => 443];
- $scheme = $changes['uri']->getScheme();
- if (isset($standardPorts[$scheme]) && $port != $standardPorts[$scheme]) {
- $changes['set_headers']['Host'] .= ':' . $port;
- }
- }
- }
- $uri = $changes['uri'];
- }
-
- if (!empty($changes['remove_headers'])) {
- $headers = self::caselessRemove($changes['remove_headers'], $headers);
- }
-
- if (!empty($changes['set_headers'])) {
- $headers = self::caselessRemove(array_keys($changes['set_headers']), $headers);
- $headers = $changes['set_headers'] + $headers;
- }
-
- if (isset($changes['query'])) {
- $uri = $uri->withQuery($changes['query']);
- }
-
- if ($request instanceof ServerRequestInterface) {
- $new = (new ServerRequest(
- isset($changes['method']) ? $changes['method'] : $request->getMethod(),
- $uri,
- $headers,
- isset($changes['body']) ? $changes['body'] : $request->getBody(),
- isset($changes['version'])
- ? $changes['version']
- : $request->getProtocolVersion(),
- $request->getServerParams()
- ))
- ->withParsedBody($request->getParsedBody())
- ->withQueryParams($request->getQueryParams())
- ->withCookieParams($request->getCookieParams())
- ->withUploadedFiles($request->getUploadedFiles());
-
- foreach ($request->getAttributes() as $key => $value) {
- $new = $new->withAttribute($key, $value);
- }
-
- return $new;
- }
-
- return new Request(
- isset($changes['method']) ? $changes['method'] : $request->getMethod(),
- $uri,
- $headers,
- isset($changes['body']) ? $changes['body'] : $request->getBody(),
- isset($changes['version'])
- ? $changes['version']
- : $request->getProtocolVersion()
- );
- }
-
- /**
- * Read a line from the stream up to the maximum allowed buffer length.
- *
- * @param StreamInterface $stream Stream to read from
- * @param int|null $maxLength Maximum buffer length
- *
- * @return string
- */
- public static function readLine(StreamInterface $stream, $maxLength = null)
- {
- $buffer = '';
- $size = 0;
-
- while (!$stream->eof()) {
- // Using a loose equality here to match on '' and false.
- if (null == ($byte = $stream->read(1))) {
- return $buffer;
- }
- $buffer .= $byte;
- // Break when a new line is found or the max length - 1 is reached
- if ($byte === "\n" || ++$size === $maxLength - 1) {
- break;
- }
- }
-
- return $buffer;
- }
-
- /**
- * Create a new stream based on the input type.
- *
- * Options is an associative array that can contain the following keys:
- * - metadata: Array of custom metadata.
- * - size: Size of the stream.
- *
- * This method accepts the following `$resource` types:
- * - `Psr\Http\Message\StreamInterface`: Returns the value as-is.
- * - `string`: Creates a stream object that uses the given string as the contents.
- * - `resource`: Creates a stream object that wraps the given PHP stream resource.
- * - `Iterator`: If the provided value implements `Iterator`, then a read-only
- * stream object will be created that wraps the given iterable. Each time the
- * stream is read from, data from the iterator will fill a buffer and will be
- * continuously called until the buffer is equal to the requested read size.
- * Subsequent read calls will first read from the buffer and then call `next`
- * on the underlying iterator until it is exhausted.
- * - `object` with `__toString()`: If the object has the `__toString()` method,
- * the object will be cast to a string and then a stream will be returned that
- * uses the string value.
- * - `NULL`: When `null` is passed, an empty stream object is returned.
- * - `callable` When a callable is passed, a read-only stream object will be
- * created that invokes the given callable. The callable is invoked with the
- * number of suggested bytes to read. The callable can return any number of
- * bytes, but MUST return `false` when there is no more data to return. The
- * stream object that wraps the callable will invoke the callable until the
- * number of requested bytes are available. Any additional bytes will be
- * buffered and used in subsequent reads.
- *
- * @param resource|string|int|float|bool|StreamInterface|callable|\Iterator|null $resource Entity body data
- * @param array $options Additional options
- *
- * @return StreamInterface
- *
- * @throws \InvalidArgumentException if the $resource arg is not valid.
- */
- public static function streamFor($resource = '', array $options = [])
- {
- if (is_scalar($resource)) {
- $stream = self::tryFopen('php://temp', 'r+');
- if ($resource !== '') {
- fwrite($stream, $resource);
- fseek($stream, 0);
- }
- return new Stream($stream, $options);
- }
-
- switch (gettype($resource)) {
- case 'resource':
- /*
- * The 'php://input' is a special stream with quirks and inconsistencies.
- * We avoid using that stream by reading it into php://temp
- */
- $metaData = \stream_get_meta_data($resource);
- if (isset($metaData['uri']) && $metaData['uri'] === 'php://input') {
- $stream = self::tryFopen('php://temp', 'w+');
- fwrite($stream, stream_get_contents($resource));
- fseek($stream, 0);
- $resource = $stream;
- }
- return new Stream($resource, $options);
- case 'object':
- if ($resource instanceof StreamInterface) {
- return $resource;
- } elseif ($resource instanceof \Iterator) {
- return new PumpStream(function () use ($resource) {
- if (!$resource->valid()) {
- return false;
- }
- $result = $resource->current();
- $resource->next();
- return $result;
- }, $options);
- } elseif (method_exists($resource, '__toString')) {
- return Utils::streamFor((string) $resource, $options);
- }
- break;
- case 'NULL':
- return new Stream(self::tryFopen('php://temp', 'r+'), $options);
- }
-
- if (is_callable($resource)) {
- return new PumpStream($resource, $options);
- }
-
- throw new \InvalidArgumentException('Invalid resource type: ' . gettype($resource));
- }
-
- /**
- * Safely opens a PHP stream resource using a filename.
- *
- * When fopen fails, PHP normally raises a warning. This function adds an
- * error handler that checks for errors and throws an exception instead.
- *
- * @param string $filename File to open
- * @param string $mode Mode used to open the file
- *
- * @return resource
- *
- * @throws \RuntimeException if the file cannot be opened
- */
- public static function tryFopen($filename, $mode)
- {
- $ex = null;
- set_error_handler(function () use ($filename, $mode, &$ex) {
- $ex = new \RuntimeException(sprintf(
- 'Unable to open "%s" using mode "%s": %s',
- $filename,
- $mode,
- func_get_args()[1]
- ));
-
- return true;
- });
-
- try {
- $handle = fopen($filename, $mode);
- } catch (\Throwable $e) {
- $ex = new \RuntimeException(sprintf(
- 'Unable to open "%s" using mode "%s": %s',
- $filename,
- $mode,
- $e->getMessage()
- ), 0, $e);
- }
-
- restore_error_handler();
-
- if ($ex) {
- /** @var $ex \RuntimeException */
- throw $ex;
- }
-
- return $handle;
- }
-
- /**
- * Returns a UriInterface for the given value.
- *
- * This function accepts a string or UriInterface and returns a
- * UriInterface for the given value. If the value is already a
- * UriInterface, it is returned as-is.
- *
- * @param string|UriInterface $uri
- *
- * @return UriInterface
- *
- * @throws \InvalidArgumentException
- */
- public static function uriFor($uri)
- {
- if ($uri instanceof UriInterface) {
- return $uri;
- }
-
- if (is_string($uri)) {
- return new Uri($uri);
- }
-
- throw new \InvalidArgumentException('URI must be a string or UriInterface');
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/functions.php b/vendor/guzzlehttp/psr7/src/functions.php
deleted file mode 100644
index b0901fad..00000000
--- a/vendor/guzzlehttp/psr7/src/functions.php
+++ /dev/null
@@ -1,422 +0,0 @@
- '1', 'foo[b]' => '2'])`.
- *
- * @param string $str Query string to parse
- * @param int|bool $urlEncoding How the query string is encoded
- *
- * @return array
- *
- * @deprecated parse_query will be removed in guzzlehttp/psr7:2.0. Use Query::parse instead.
- */
-function parse_query($str, $urlEncoding = true)
-{
- return Query::parse($str, $urlEncoding);
-}
-
-/**
- * Build a query string from an array of key value pairs.
- *
- * This function can use the return value of `parse_query()` to build a query
- * string. This function does not modify the provided keys when an array is
- * encountered (like `http_build_query()` would).
- *
- * @param array $params Query string parameters.
- * @param int|false $encoding Set to false to not encode, PHP_QUERY_RFC3986
- * to encode using RFC3986, or PHP_QUERY_RFC1738
- * to encode using RFC1738.
- *
- * @return string
- *
- * @deprecated build_query will be removed in guzzlehttp/psr7:2.0. Use Query::build instead.
- */
-function build_query(array $params, $encoding = PHP_QUERY_RFC3986)
-{
- return Query::build($params, $encoding);
-}
-
-/**
- * Determines the mimetype of a file by looking at its extension.
- *
- * @param string $filename
- *
- * @return string|null
- *
- * @deprecated mimetype_from_filename will be removed in guzzlehttp/psr7:2.0. Use MimeType::fromFilename instead.
- */
-function mimetype_from_filename($filename)
-{
- return MimeType::fromFilename($filename);
-}
-
-/**
- * Maps a file extensions to a mimetype.
- *
- * @param $extension string The file extension.
- *
- * @return string|null
- *
- * @link http://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x/conf/mime.types
- * @deprecated mimetype_from_extension will be removed in guzzlehttp/psr7:2.0. Use MimeType::fromExtension instead.
- */
-function mimetype_from_extension($extension)
-{
- return MimeType::fromExtension($extension);
-}
-
-/**
- * Parses an HTTP message into an associative array.
- *
- * The array contains the "start-line" key containing the start line of
- * the message, "headers" key containing an associative array of header
- * array values, and a "body" key containing the body of the message.
- *
- * @param string $message HTTP request or response to parse.
- *
- * @return array
- *
- * @internal
- *
- * @deprecated _parse_message will be removed in guzzlehttp/psr7:2.0. Use Message::parseMessage instead.
- */
-function _parse_message($message)
-{
- return Message::parseMessage($message);
-}
-
-/**
- * Constructs a URI for an HTTP request message.
- *
- * @param string $path Path from the start-line
- * @param array $headers Array of headers (each value an array).
- *
- * @return string
- *
- * @internal
- *
- * @deprecated _parse_request_uri will be removed in guzzlehttp/psr7:2.0. Use Message::parseRequestUri instead.
- */
-function _parse_request_uri($path, array $headers)
-{
- return Message::parseRequestUri($path, $headers);
-}
-
-/**
- * Get a short summary of the message body.
- *
- * Will return `null` if the response is not printable.
- *
- * @param MessageInterface $message The message to get the body summary
- * @param int $truncateAt The maximum allowed size of the summary
- *
- * @return string|null
- *
- * @deprecated get_message_body_summary will be removed in guzzlehttp/psr7:2.0. Use Message::bodySummary instead.
- */
-function get_message_body_summary(MessageInterface $message, $truncateAt = 120)
-{
- return Message::bodySummary($message, $truncateAt);
-}
-
-/**
- * Remove the items given by the keys, case insensitively from the data.
- *
- * @param iterable $keys
- *
- * @return array
- *
- * @internal
- *
- * @deprecated _caseless_remove will be removed in guzzlehttp/psr7:2.0. Use Utils::caselessRemove instead.
- */
-function _caseless_remove($keys, array $data)
-{
- return Utils::caselessRemove($keys, $data);
-}
diff --git a/vendor/guzzlehttp/psr7/src/functions_include.php b/vendor/guzzlehttp/psr7/src/functions_include.php
deleted file mode 100644
index 96a4a83a..00000000
--- a/vendor/guzzlehttp/psr7/src/functions_include.php
+++ /dev/null
@@ -1,6 +0,0 @@
-queue = $queue;
- $this->repository = $repository;
- $this->id = $id;
- $this->name = $name;
- $this->totalJobs = $totalJobs;
- $this->pendingJobs = $pendingJobs;
- $this->failedJobs = $failedJobs;
- $this->failedJobIds = $failedJobIds;
- $this->options = $options;
- $this->createdAt = $createdAt;
- $this->cancelledAt = $cancelledAt;
- $this->finishedAt = $finishedAt;
- }
-
- /**
- * Get a fresh instance of the batch represented by this ID.
- *
- * @return self
- */
- public function fresh()
- {
- return $this->repository->find($this->id);
- }
-
- /**
- * Add additional jobs to the batch.
- *
- * @param \Illuminate\Support\Enumerable|array $jobs
- * @return self
- */
- public function add($jobs)
- {
- $count = 0;
-
- $jobs = Collection::wrap($jobs)->map(function ($job) use (&$count) {
- $job = $job instanceof Closure ? CallQueuedClosure::create($job) : $job;
-
- if (is_array($job)) {
- $count += count($job);
-
- return with($this->prepareBatchedChain($job), function ($chain) {
- return $chain->first()
- ->allOnQueue($this->options['queue'] ?? null)
- ->allOnConnection($this->options['connection'] ?? null)
- ->chain($chain->slice(1)->values()->all());
- });
- } else {
- $job->withBatchId($this->id);
-
- $count++;
- }
-
- return $job;
- });
-
- $this->repository->transaction(function () use ($jobs, $count) {
- $this->repository->incrementTotalJobs($this->id, $count);
-
- $this->queue->connection($this->options['connection'] ?? null)->bulk(
- $jobs->all(),
- $data = '',
- $this->options['queue'] ?? null
- );
- });
-
- return $this->fresh();
- }
-
- /**
- * Prepare a chain that exists within the jobs being added.
- *
- * @param array $chain
- * @return \Illuminate\Support\Collection
- */
- protected function prepareBatchedChain(array $chain)
- {
- return collect($chain)->map(function ($job) {
- $job = $job instanceof Closure ? CallQueuedClosure::create($job) : $job;
-
- return $job->withBatchId($this->id);
- });
- }
-
- /**
- * Get the total number of jobs that have been processed by the batch thus far.
- *
- * @return int
- */
- public function processedJobs()
- {
- return $this->totalJobs - $this->pendingJobs;
- }
-
- /**
- * Get the percentage of jobs that have been processed (between 0-100).
- *
- * @return int
- */
- public function progress()
- {
- return $this->totalJobs > 0 ? round(($this->processedJobs() / $this->totalJobs) * 100) : 0;
- }
-
- /**
- * Record that a job within the batch finished successfully, executing any callbacks if necessary.
- *
- * @param string $jobId
- * @return void
- */
- public function recordSuccessfulJob(string $jobId)
- {
- $counts = $this->decrementPendingJobs($jobId);
-
- if ($counts->pendingJobs === 0) {
- $this->repository->markAsFinished($this->id);
- }
-
- if ($counts->pendingJobs === 0 && $this->hasThenCallbacks()) {
- $batch = $this->fresh();
-
- collect($this->options['then'])->each(function ($handler) use ($batch) {
- $this->invokeHandlerCallback($handler, $batch);
- });
- }
-
- if ($counts->allJobsHaveRanExactlyOnce() && $this->hasFinallyCallbacks()) {
- $batch = $this->fresh();
-
- collect($this->options['finally'])->each(function ($handler) use ($batch) {
- $this->invokeHandlerCallback($handler, $batch);
- });
- }
- }
-
- /**
- * Decrement the pending jobs for the batch.
- *
- * @param string $jobId
- * @return \Illuminate\Bus\UpdatedBatchJobCounts
- */
- public function decrementPendingJobs(string $jobId)
- {
- return $this->repository->decrementPendingJobs($this->id, $jobId);
- }
-
- /**
- * Determine if the batch has finished executing.
- *
- * @return bool
- */
- public function finished()
- {
- return ! is_null($this->finishedAt);
- }
-
- /**
- * Determine if the batch has "success" callbacks.
- *
- * @return bool
- */
- public function hasThenCallbacks()
- {
- return isset($this->options['then']) && ! empty($this->options['then']);
- }
-
- /**
- * Determine if the batch allows jobs to fail without cancelling the batch.
- *
- * @return bool
- */
- public function allowsFailures()
- {
- return Arr::get($this->options, 'allowFailures', false) === true;
- }
-
- /**
- * Determine if the batch has job failures.
- *
- * @return bool
- */
- public function hasFailures()
- {
- return $this->failedJobs > 0;
- }
-
- /**
- * Record that a job within the batch failed to finish successfully, executing any callbacks if necessary.
- *
- * @param string $jobId
- * @param \Throwable $e
- * @return void
- */
- public function recordFailedJob(string $jobId, $e)
- {
- $counts = $this->incrementFailedJobs($jobId);
-
- if ($counts->failedJobs === 1 && ! $this->allowsFailures()) {
- $this->cancel();
- }
-
- if ($counts->failedJobs === 1 && $this->hasCatchCallbacks()) {
- $batch = $this->fresh();
-
- collect($this->options['catch'])->each(function ($handler) use ($batch, $e) {
- $this->invokeHandlerCallback($handler, $batch, $e);
- });
- }
-
- if ($counts->allJobsHaveRanExactlyOnce() && $this->hasFinallyCallbacks()) {
- $batch = $this->fresh();
-
- collect($this->options['finally'])->each(function ($handler) use ($batch, $e) {
- $this->invokeHandlerCallback($handler, $batch, $e);
- });
- }
- }
-
- /**
- * Increment the failed jobs for the batch.
- *
- * @param string $jobId
- * @return \Illuminate\Bus\UpdatedBatchJobCounts
- */
- public function incrementFailedJobs(string $jobId)
- {
- return $this->repository->incrementFailedJobs($this->id, $jobId);
- }
-
- /**
- * Determine if the batch has "catch" callbacks.
- *
- * @return bool
- */
- public function hasCatchCallbacks()
- {
- return isset($this->options['catch']) && ! empty($this->options['catch']);
- }
-
- /**
- * Determine if the batch has "finally" callbacks.
- *
- * @return bool
- */
- public function hasFinallyCallbacks()
- {
- return isset($this->options['finally']) && ! empty($this->options['finally']);
- }
-
- /**
- * Cancel the batch.
- *
- * @return void
- */
- public function cancel()
- {
- $this->repository->cancel($this->id);
- }
-
- /**
- * Determine if the batch has been cancelled.
- *
- * @return bool
- */
- public function canceled()
- {
- return $this->cancelled();
- }
-
- /**
- * Determine if the batch has been cancelled.
- *
- * @return bool
- */
- public function cancelled()
- {
- return ! is_null($this->cancelledAt);
- }
-
- /**
- * Delete the batch from storage.
- *
- * @return void
- */
- public function delete()
- {
- $this->repository->delete($this->id);
- }
-
- /**
- * Invoke a batch callback handler.
- *
- * @param callable $handler
- * @param \Illuminate\Bus\Batch $batch
- * @param \Throwable|null $e
- * @return void
- */
- protected function invokeHandlerCallback($handler, Batch $batch, Throwable $e = null)
- {
- try {
- return $handler($batch, $e);
- } catch (Throwable $e) {
- if (function_exists('report')) {
- report($e);
- }
- }
- }
-
- /**
- * Convert the batch to an array.
- *
- * @return array
- */
- public function toArray()
- {
- return [
- 'id' => $this->id,
- 'name' => $this->name,
- 'totalJobs' => $this->totalJobs,
- 'pendingJobs' => $this->pendingJobs,
- 'processedJobs' => $this->processedJobs(),
- 'progress' => $this->progress(),
- 'failedJobs' => $this->failedJobs,
- 'options' => $this->options,
- 'createdAt' => $this->createdAt,
- 'cancelledAt' => $this->cancelledAt,
- 'finishedAt' => $this->finishedAt,
- ];
- }
-
- /**
- * Get the JSON serializable representation of the object.
- *
- * @return array
- */
- #[\ReturnTypeWillChange]
- public function jsonSerialize()
- {
- return $this->toArray();
- }
-}
diff --git a/vendor/illuminate/bus/BatchFactory.php b/vendor/illuminate/bus/BatchFactory.php
deleted file mode 100644
index 2c3a4e96..00000000
--- a/vendor/illuminate/bus/BatchFactory.php
+++ /dev/null
@@ -1,58 +0,0 @@
-queue = $queue;
- }
-
- /**
- * Create a new batch instance.
- *
- * @param \Illuminate\Bus\BatchRepository $repository
- * @param string $id
- * @param string $name
- * @param int $totalJobs
- * @param int $pendingJobs
- * @param int $failedJobs
- * @param array $failedJobIds
- * @param array $options
- * @param \Carbon\CarbonImmutable $createdAt
- * @param \Carbon\CarbonImmutable|null $cancelledAt
- * @param \Carbon\CarbonImmutable|null $finishedAt
- * @return \Illuminate\Bus\Batch
- */
- public function make(BatchRepository $repository,
- string $id,
- string $name,
- int $totalJobs,
- int $pendingJobs,
- int $failedJobs,
- array $failedJobIds,
- array $options,
- CarbonImmutable $createdAt,
- ?CarbonImmutable $cancelledAt,
- ?CarbonImmutable $finishedAt)
- {
- return new Batch($this->queue, $repository, $id, $name, $totalJobs, $pendingJobs, $failedJobs, $failedJobIds, $options, $createdAt, $cancelledAt, $finishedAt);
- }
-}
diff --git a/vendor/illuminate/bus/BatchRepository.php b/vendor/illuminate/bus/BatchRepository.php
deleted file mode 100644
index 098ccef2..00000000
--- a/vendor/illuminate/bus/BatchRepository.php
+++ /dev/null
@@ -1,92 +0,0 @@
-batchId) {
- return Container::getInstance()->make(BatchRepository::class)->find($this->batchId);
- }
- }
-
- /**
- * Determine if the batch is still active and processing.
- *
- * @return bool
- */
- public function batching()
- {
- $batch = $this->batch();
-
- return $batch && ! $batch->cancelled();
- }
-
- /**
- * Set the batch ID on the job.
- *
- * @param string $batchId
- * @return $this
- */
- public function withBatchId(string $batchId)
- {
- $this->batchId = $batchId;
-
- return $this;
- }
-}
diff --git a/vendor/illuminate/bus/BusServiceProvider.php b/vendor/illuminate/bus/BusServiceProvider.php
deleted file mode 100644
index 6f3da09d..00000000
--- a/vendor/illuminate/bus/BusServiceProvider.php
+++ /dev/null
@@ -1,69 +0,0 @@
-app->singleton(Dispatcher::class, function ($app) {
- return new Dispatcher($app, function ($connection = null) use ($app) {
- return $app[QueueFactoryContract::class]->connection($connection);
- });
- });
-
- $this->registerBatchServices();
-
- $this->app->alias(
- Dispatcher::class, DispatcherContract::class
- );
-
- $this->app->alias(
- Dispatcher::class, QueueingDispatcherContract::class
- );
- }
-
- /**
- * Register the batch handling services.
- *
- * @return void
- */
- protected function registerBatchServices()
- {
- $this->app->singleton(BatchRepository::class, DatabaseBatchRepository::class);
-
- $this->app->singleton(DatabaseBatchRepository::class, function ($app) {
- return new DatabaseBatchRepository(
- $app->make(BatchFactory::class),
- $app->make('db')->connection(config('queue.batching.database')),
- config('queue.batching.table', 'job_batches')
- );
- });
- }
-
- /**
- * Get the services provided by the provider.
- *
- * @return array
- */
- public function provides()
- {
- return [
- Dispatcher::class,
- DispatcherContract::class,
- QueueingDispatcherContract::class,
- BatchRepository::class,
- ];
- }
-}
diff --git a/vendor/illuminate/bus/DatabaseBatchRepository.php b/vendor/illuminate/bus/DatabaseBatchRepository.php
deleted file mode 100644
index ee544b04..00000000
--- a/vendor/illuminate/bus/DatabaseBatchRepository.php
+++ /dev/null
@@ -1,347 +0,0 @@
-factory = $factory;
- $this->connection = $connection;
- $this->table = $table;
- }
-
- /**
- * Retrieve a list of batches.
- *
- * @param int $limit
- * @param mixed $before
- * @return \Illuminate\Bus\Batch[]
- */
- public function get($limit = 50, $before = null)
- {
- return $this->connection->table($this->table)
- ->orderByDesc('id')
- ->take($limit)
- ->when($before, function ($q) use ($before) {
- return $q->where('id', '<', $before);
- })
- ->get()
- ->map(function ($batch) {
- return $this->toBatch($batch);
- })
- ->all();
- }
-
- /**
- * Retrieve information about an existing batch.
- *
- * @param string $batchId
- * @return \Illuminate\Bus\Batch|null
- */
- public function find(string $batchId)
- {
- $batch = $this->connection->table($this->table)
- ->where('id', $batchId)
- ->first();
-
- if ($batch) {
- return $this->toBatch($batch);
- }
- }
-
- /**
- * Store a new pending batch.
- *
- * @param \Illuminate\Bus\PendingBatch $batch
- * @return \Illuminate\Bus\Batch
- */
- public function store(PendingBatch $batch)
- {
- $id = (string) Str::orderedUuid();
-
- $this->connection->table($this->table)->insert([
- 'id' => $id,
- 'name' => $batch->name,
- 'total_jobs' => 0,
- 'pending_jobs' => 0,
- 'failed_jobs' => 0,
- 'failed_job_ids' => '[]',
- 'options' => $this->serialize($batch->options),
- 'created_at' => time(),
- 'cancelled_at' => null,
- 'finished_at' => null,
- ]);
-
- return $this->find($id);
- }
-
- /**
- * Increment the total number of jobs within the batch.
- *
- * @param string $batchId
- * @param int $amount
- * @return void
- */
- public function incrementTotalJobs(string $batchId, int $amount)
- {
- $this->connection->table($this->table)->where('id', $batchId)->update([
- 'total_jobs' => new Expression('total_jobs + '.$amount),
- 'pending_jobs' => new Expression('pending_jobs + '.$amount),
- 'finished_at' => null,
- ]);
- }
-
- /**
- * Decrement the total number of pending jobs for the batch.
- *
- * @param string $batchId
- * @param string $jobId
- * @return \Illuminate\Bus\UpdatedBatchJobCounts
- */
- public function decrementPendingJobs(string $batchId, string $jobId)
- {
- $values = $this->updateAtomicValues($batchId, function ($batch) use ($jobId) {
- return [
- 'pending_jobs' => $batch->pending_jobs - 1,
- 'failed_jobs' => $batch->failed_jobs,
- 'failed_job_ids' => json_encode(array_values(array_diff(json_decode($batch->failed_job_ids, true), [$jobId]))),
- ];
- });
-
- return new UpdatedBatchJobCounts(
- $values['pending_jobs'],
- $values['failed_jobs']
- );
- }
-
- /**
- * Increment the total number of failed jobs for the batch.
- *
- * @param string $batchId
- * @param string $jobId
- * @return \Illuminate\Bus\UpdatedBatchJobCounts
- */
- public function incrementFailedJobs(string $batchId, string $jobId)
- {
- $values = $this->updateAtomicValues($batchId, function ($batch) use ($jobId) {
- return [
- 'pending_jobs' => $batch->pending_jobs,
- 'failed_jobs' => $batch->failed_jobs + 1,
- 'failed_job_ids' => json_encode(array_values(array_unique(array_merge(json_decode($batch->failed_job_ids, true), [$jobId])))),
- ];
- });
-
- return new UpdatedBatchJobCounts(
- $values['pending_jobs'],
- $values['failed_jobs']
- );
- }
-
- /**
- * Update an atomic value within the batch.
- *
- * @param string $batchId
- * @param \Closure $callback
- * @return int|null
- */
- protected function updateAtomicValues(string $batchId, Closure $callback)
- {
- return $this->connection->transaction(function () use ($batchId, $callback) {
- $batch = $this->connection->table($this->table)->where('id', $batchId)
- ->lockForUpdate()
- ->first();
-
- return is_null($batch) ? [] : tap($callback($batch), function ($values) use ($batchId) {
- $this->connection->table($this->table)->where('id', $batchId)->update($values);
- });
- });
- }
-
- /**
- * Mark the batch that has the given ID as finished.
- *
- * @param string $batchId
- * @return void
- */
- public function markAsFinished(string $batchId)
- {
- $this->connection->table($this->table)->where('id', $batchId)->update([
- 'finished_at' => time(),
- ]);
- }
-
- /**
- * Cancel the batch that has the given ID.
- *
- * @param string $batchId
- * @return void
- */
- public function cancel(string $batchId)
- {
- $this->connection->table($this->table)->where('id', $batchId)->update([
- 'cancelled_at' => time(),
- 'finished_at' => time(),
- ]);
- }
-
- /**
- * Delete the batch that has the given ID.
- *
- * @param string $batchId
- * @return void
- */
- public function delete(string $batchId)
- {
- $this->connection->table($this->table)->where('id', $batchId)->delete();
- }
-
- /**
- * Prune all of the entries older than the given date.
- *
- * @param \DateTimeInterface $before
- * @return int
- */
- public function prune(DateTimeInterface $before)
- {
- $query = $this->connection->table($this->table)
- ->whereNotNull('finished_at')
- ->where('finished_at', '<', $before->getTimestamp());
-
- $totalDeleted = 0;
-
- do {
- $deleted = $query->take(1000)->delete();
-
- $totalDeleted += $deleted;
- } while ($deleted !== 0);
-
- return $totalDeleted;
- }
-
- /**
- * Prune all of the unfinished entries older than the given date.
- *
- * @param \DateTimeInterface $before
- * @return int
- */
- public function pruneUnfinished(DateTimeInterface $before)
- {
- $query = $this->connection->table($this->table)
- ->whereNull('finished_at')
- ->where('created_at', '<', $before->getTimestamp());
-
- $totalDeleted = 0;
-
- do {
- $deleted = $query->take(1000)->delete();
-
- $totalDeleted += $deleted;
- } while ($deleted !== 0);
-
- return $totalDeleted;
- }
-
- /**
- * Execute the given Closure within a storage specific transaction.
- *
- * @param \Closure $callback
- * @return mixed
- */
- public function transaction(Closure $callback)
- {
- return $this->connection->transaction(function () use ($callback) {
- return $callback();
- });
- }
-
- /**
- * Serialize the given value.
- *
- * @param mixed $value
- * @return string
- */
- protected function serialize($value)
- {
- $serialized = serialize($value);
-
- return $this->connection instanceof PostgresConnection
- ? base64_encode($serialized)
- : $serialized;
- }
-
- /**
- * Unserialize the given value.
- *
- * @param string $serialized
- * @return mixed
- */
- protected function unserialize($serialized)
- {
- if ($this->connection instanceof PostgresConnection &&
- ! Str::contains($serialized, [':', ';'])) {
- $serialized = base64_decode($serialized);
- }
-
- return unserialize($serialized);
- }
-
- /**
- * Convert the given raw batch to a Batch object.
- *
- * @param object $batch
- * @return \Illuminate\Bus\Batch
- */
- protected function toBatch($batch)
- {
- return $this->factory->make(
- $this,
- $batch->id,
- $batch->name,
- (int) $batch->total_jobs,
- (int) $batch->pending_jobs,
- (int) $batch->failed_jobs,
- json_decode($batch->failed_job_ids, true),
- $this->unserialize($batch->options),
- CarbonImmutable::createFromTimestamp($batch->created_at),
- $batch->cancelled_at ? CarbonImmutable::createFromTimestamp($batch->cancelled_at) : $batch->cancelled_at,
- $batch->finished_at ? CarbonImmutable::createFromTimestamp($batch->finished_at) : $batch->finished_at
- );
- }
-}
diff --git a/vendor/illuminate/bus/Dispatcher.php b/vendor/illuminate/bus/Dispatcher.php
deleted file mode 100644
index 4dc390e6..00000000
--- a/vendor/illuminate/bus/Dispatcher.php
+++ /dev/null
@@ -1,295 +0,0 @@
-container = $container;
- $this->queueResolver = $queueResolver;
- $this->pipeline = new Pipeline($container);
- }
-
- /**
- * Dispatch a command to its appropriate handler.
- *
- * @param mixed $command
- * @return mixed
- */
- public function dispatch($command)
- {
- return $this->queueResolver && $this->commandShouldBeQueued($command)
- ? $this->dispatchToQueue($command)
- : $this->dispatchNow($command);
- }
-
- /**
- * Dispatch a command to its appropriate handler in the current process.
- *
- * Queueable jobs will be dispatched to the "sync" queue.
- *
- * @param mixed $command
- * @param mixed $handler
- * @return mixed
- */
- public function dispatchSync($command, $handler = null)
- {
- if ($this->queueResolver &&
- $this->commandShouldBeQueued($command) &&
- method_exists($command, 'onConnection')) {
- return $this->dispatchToQueue($command->onConnection('sync'));
- }
-
- return $this->dispatchNow($command, $handler);
- }
-
- /**
- * Dispatch a command to its appropriate handler in the current process without using the synchronous queue.
- *
- * @param mixed $command
- * @param mixed $handler
- * @return mixed
- */
- public function dispatchNow($command, $handler = null)
- {
- $uses = class_uses_recursive($command);
-
- if (in_array(InteractsWithQueue::class, $uses) &&
- in_array(Queueable::class, $uses) &&
- ! $command->job) {
- $command->setJob(new SyncJob($this->container, json_encode([]), 'sync', 'sync'));
- }
-
- if ($handler || $handler = $this->getCommandHandler($command)) {
- $callback = function ($command) use ($handler) {
- $method = method_exists($handler, 'handle') ? 'handle' : '__invoke';
-
- return $handler->{$method}($command);
- };
- } else {
- $callback = function ($command) {
- $method = method_exists($command, 'handle') ? 'handle' : '__invoke';
-
- return $this->container->call([$command, $method]);
- };
- }
-
- return $this->pipeline->send($command)->through($this->pipes)->then($callback);
- }
-
- /**
- * Attempt to find the batch with the given ID.
- *
- * @param string $batchId
- * @return \Illuminate\Bus\Batch|null
- */
- public function findBatch(string $batchId)
- {
- return $this->container->make(BatchRepository::class)->find($batchId);
- }
-
- /**
- * Create a new batch of queueable jobs.
- *
- * @param \Illuminate\Support\Collection|array|mixed $jobs
- * @return \Illuminate\Bus\PendingBatch
- */
- public function batch($jobs)
- {
- return new PendingBatch($this->container, Collection::wrap($jobs));
- }
-
- /**
- * Create a new chain of queueable jobs.
- *
- * @param \Illuminate\Support\Collection|array $jobs
- * @return \Illuminate\Foundation\Bus\PendingChain
- */
- public function chain($jobs)
- {
- $jobs = Collection::wrap($jobs);
-
- return new PendingChain($jobs->shift(), $jobs->toArray());
- }
-
- /**
- * Determine if the given command has a handler.
- *
- * @param mixed $command
- * @return bool
- */
- public function hasCommandHandler($command)
- {
- return array_key_exists(get_class($command), $this->handlers);
- }
-
- /**
- * Retrieve the handler for a command.
- *
- * @param mixed $command
- * @return bool|mixed
- */
- public function getCommandHandler($command)
- {
- if ($this->hasCommandHandler($command)) {
- return $this->container->make($this->handlers[get_class($command)]);
- }
-
- return false;
- }
-
- /**
- * Determine if the given command should be queued.
- *
- * @param mixed $command
- * @return bool
- */
- protected function commandShouldBeQueued($command)
- {
- return $command instanceof ShouldQueue;
- }
-
- /**
- * Dispatch a command to its appropriate handler behind a queue.
- *
- * @param mixed $command
- * @return mixed
- *
- * @throws \RuntimeException
- */
- public function dispatchToQueue($command)
- {
- $connection = $command->connection ?? null;
-
- $queue = call_user_func($this->queueResolver, $connection);
-
- if (! $queue instanceof Queue) {
- throw new RuntimeException('Queue resolver did not return a Queue implementation.');
- }
-
- if (method_exists($command, 'queue')) {
- return $command->queue($queue, $command);
- }
-
- return $this->pushCommandToQueue($queue, $command);
- }
-
- /**
- * Push the command onto the given queue instance.
- *
- * @param \Illuminate\Contracts\Queue\Queue $queue
- * @param mixed $command
- * @return mixed
- */
- protected function pushCommandToQueue($queue, $command)
- {
- if (isset($command->queue, $command->delay)) {
- return $queue->laterOn($command->queue, $command->delay, $command);
- }
-
- if (isset($command->queue)) {
- return $queue->pushOn($command->queue, $command);
- }
-
- if (isset($command->delay)) {
- return $queue->later($command->delay, $command);
- }
-
- return $queue->push($command);
- }
-
- /**
- * Dispatch a command to its appropriate handler after the current process.
- *
- * @param mixed $command
- * @param mixed $handler
- * @return void
- */
- public function dispatchAfterResponse($command, $handler = null)
- {
- $this->container->terminating(function () use ($command, $handler) {
- $this->dispatchNow($command, $handler);
- });
- }
-
- /**
- * Set the pipes through which commands should be piped before dispatching.
- *
- * @param array $pipes
- * @return $this
- */
- public function pipeThrough(array $pipes)
- {
- $this->pipes = $pipes;
-
- return $this;
- }
-
- /**
- * Map a command to a handler.
- *
- * @param array $map
- * @return $this
- */
- public function map(array $map)
- {
- $this->handlers = array_merge($this->handlers, $map);
-
- return $this;
- }
-}
diff --git a/vendor/illuminate/bus/Events/BatchDispatched.php b/vendor/illuminate/bus/Events/BatchDispatched.php
deleted file mode 100644
index b9a161ad..00000000
--- a/vendor/illuminate/bus/Events/BatchDispatched.php
+++ /dev/null
@@ -1,26 +0,0 @@
-batch = $batch;
- }
-}
diff --git a/vendor/illuminate/bus/LICENSE.md b/vendor/illuminate/bus/LICENSE.md
deleted file mode 100644
index 79810c84..00000000
--- a/vendor/illuminate/bus/LICENSE.md
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Taylor Otwell
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/illuminate/bus/PendingBatch.php b/vendor/illuminate/bus/PendingBatch.php
deleted file mode 100644
index a831c5fb..00000000
--- a/vendor/illuminate/bus/PendingBatch.php
+++ /dev/null
@@ -1,258 +0,0 @@
-container = $container;
- $this->jobs = $jobs;
- }
-
- /**
- * Add jobs to the batch.
- *
- * @param iterable $jobs
- * @return $this
- */
- public function add($jobs)
- {
- foreach ($jobs as $job) {
- $this->jobs->push($job);
- }
-
- return $this;
- }
-
- /**
- * Add a callback to be executed after all jobs in the batch have executed successfully.
- *
- * @param callable $callback
- * @return $this
- */
- public function then($callback)
- {
- $this->options['then'][] = $callback instanceof Closure
- ? SerializableClosureFactory::make($callback)
- : $callback;
-
- return $this;
- }
-
- /**
- * Get the "then" callbacks that have been registered with the pending batch.
- *
- * @return array
- */
- public function thenCallbacks()
- {
- return $this->options['then'] ?? [];
- }
-
- /**
- * Add a callback to be executed after the first failing job in the batch.
- *
- * @param callable $callback
- * @return $this
- */
- public function catch($callback)
- {
- $this->options['catch'][] = $callback instanceof Closure
- ? SerializableClosureFactory::make($callback)
- : $callback;
-
- return $this;
- }
-
- /**
- * Get the "catch" callbacks that have been registered with the pending batch.
- *
- * @return array
- */
- public function catchCallbacks()
- {
- return $this->options['catch'] ?? [];
- }
-
- /**
- * Add a callback to be executed after the batch has finished executing.
- *
- * @param callable $callback
- * @return $this
- */
- public function finally($callback)
- {
- $this->options['finally'][] = $callback instanceof Closure
- ? SerializableClosureFactory::make($callback)
- : $callback;
-
- return $this;
- }
-
- /**
- * Get the "finally" callbacks that have been registered with the pending batch.
- *
- * @return array
- */
- public function finallyCallbacks()
- {
- return $this->options['finally'] ?? [];
- }
-
- /**
- * Indicate that the batch should not be cancelled when a job within the batch fails.
- *
- * @param bool $allowFailures
- * @return $this
- */
- public function allowFailures($allowFailures = true)
- {
- $this->options['allowFailures'] = $allowFailures;
-
- return $this;
- }
-
- /**
- * Determine if the pending batch allows jobs to fail without cancelling the batch.
- *
- * @return bool
- */
- public function allowsFailures()
- {
- return Arr::get($this->options, 'allowFailures', false) === true;
- }
-
- /**
- * Set the name for the batch.
- *
- * @param string $name
- * @return $this
- */
- public function name(string $name)
- {
- $this->name = $name;
-
- return $this;
- }
-
- /**
- * Specify the queue connection that the batched jobs should run on.
- *
- * @param string $connection
- * @return $this
- */
- public function onConnection(string $connection)
- {
- $this->options['connection'] = $connection;
-
- return $this;
- }
-
- /**
- * Get the connection used by the pending batch.
- *
- * @return string|null
- */
- public function connection()
- {
- return $this->options['connection'] ?? null;
- }
-
- /**
- * Specify the queue that the batched jobs should run on.
- *
- * @param string $queue
- * @return $this
- */
- public function onQueue(string $queue)
- {
- $this->options['queue'] = $queue;
-
- return $this;
- }
-
- /**
- * Get the queue used by the pending batch.
- *
- * @return string|null
- */
- public function queue()
- {
- return $this->options['queue'] ?? null;
- }
-
- /**
- * Dispatch the batch.
- *
- * @return \Illuminate\Bus\Batch
- *
- * @throws \Throwable
- */
- public function dispatch()
- {
- $repository = $this->container->make(BatchRepository::class);
-
- try {
- $batch = $repository->store($this);
-
- $batch = $batch->add($this->jobs);
- } catch (Throwable $e) {
- if (isset($batch)) {
- $repository->delete($batch->id);
- }
-
- throw $e;
- }
-
- $this->container->make(EventDispatcher::class)->dispatch(
- new BatchDispatched($batch)
- );
-
- return $batch;
- }
-}
diff --git a/vendor/illuminate/bus/PrunableBatchRepository.php b/vendor/illuminate/bus/PrunableBatchRepository.php
deleted file mode 100644
index 3f972553..00000000
--- a/vendor/illuminate/bus/PrunableBatchRepository.php
+++ /dev/null
@@ -1,16 +0,0 @@
-connection = $connection;
-
- return $this;
- }
-
- /**
- * Set the desired queue for the job.
- *
- * @param string|null $queue
- * @return $this
- */
- public function onQueue($queue)
- {
- $this->queue = $queue;
-
- return $this;
- }
-
- /**
- * Set the desired connection for the chain.
- *
- * @param string|null $connection
- * @return $this
- */
- public function allOnConnection($connection)
- {
- $this->chainConnection = $connection;
- $this->connection = $connection;
-
- return $this;
- }
-
- /**
- * Set the desired queue for the chain.
- *
- * @param string|null $queue
- * @return $this
- */
- public function allOnQueue($queue)
- {
- $this->chainQueue = $queue;
- $this->queue = $queue;
-
- return $this;
- }
-
- /**
- * Set the desired delay for the job.
- *
- * @param \DateTimeInterface|\DateInterval|int|null $delay
- * @return $this
- */
- public function delay($delay)
- {
- $this->delay = $delay;
-
- return $this;
- }
-
- /**
- * Indicate that the job should be dispatched after all database transactions have committed.
- *
- * @return $this
- */
- public function afterCommit()
- {
- $this->afterCommit = true;
-
- return $this;
- }
-
- /**
- * Indicate that the job should not wait until database transactions have been committed before dispatching.
- *
- * @return $this
- */
- public function beforeCommit()
- {
- $this->afterCommit = false;
-
- return $this;
- }
-
- /**
- * Specify the middleware the job should be dispatched through.
- *
- * @param array|object $middleware
- * @return $this
- */
- public function through($middleware)
- {
- $this->middleware = Arr::wrap($middleware);
-
- return $this;
- }
-
- /**
- * Set the jobs that should run if this job is successful.
- *
- * @param array $chain
- * @return $this
- */
- public function chain($chain)
- {
- $this->chained = collect($chain)->map(function ($job) {
- return $this->serializeJob($job);
- })->all();
-
- return $this;
- }
-
- /**
- * Serialize a job for queuing.
- *
- * @param mixed $job
- * @return string
- *
- * @throws \RuntimeException
- */
- protected function serializeJob($job)
- {
- if ($job instanceof Closure) {
- if (! class_exists(CallQueuedClosure::class)) {
- throw new RuntimeException(
- 'To enable support for closure jobs, please install the illuminate/queue package.'
- );
- }
-
- $job = CallQueuedClosure::create($job);
- }
-
- return serialize($job);
- }
-
- /**
- * Dispatch the next job on the chain.
- *
- * @return void
- */
- public function dispatchNextJobInChain()
- {
- if (! empty($this->chained)) {
- dispatch(tap(unserialize(array_shift($this->chained)), function ($next) {
- $next->chained = $this->chained;
-
- $next->onConnection($next->connection ?: $this->chainConnection);
- $next->onQueue($next->queue ?: $this->chainQueue);
-
- $next->chainConnection = $this->chainConnection;
- $next->chainQueue = $this->chainQueue;
- $next->chainCatchCallbacks = $this->chainCatchCallbacks;
- }));
- }
- }
-
- /**
- * Invoke all of the chain's failed job callbacks.
- *
- * @param \Throwable $e
- * @return void
- */
- public function invokeChainCatchCallbacks($e)
- {
- collect($this->chainCatchCallbacks)->each(function ($callback) use ($e) {
- $callback($e);
- });
- }
-}
diff --git a/vendor/illuminate/bus/UniqueLock.php b/vendor/illuminate/bus/UniqueLock.php
deleted file mode 100644
index a937b186..00000000
--- a/vendor/illuminate/bus/UniqueLock.php
+++ /dev/null
@@ -1,48 +0,0 @@
-cache = $cache;
- }
-
- /**
- * Attempt to acquire a lock for the given job.
- *
- * @param mixed $job
- * @return bool
- */
- public function acquire($job)
- {
- $uniqueId = method_exists($job, 'uniqueId')
- ? $job->uniqueId()
- : ($job->uniqueId ?? '');
-
- $cache = method_exists($job, 'uniqueVia')
- ? $job->uniqueVia()
- : $this->cache;
-
- return (bool) $cache->lock(
- $key = 'laravel_unique_job:'.get_class($job).$uniqueId,
- $job->uniqueFor ?? 0
- )->get();
- }
-}
diff --git a/vendor/illuminate/bus/UpdatedBatchJobCounts.php b/vendor/illuminate/bus/UpdatedBatchJobCounts.php
deleted file mode 100644
index 83d33a44..00000000
--- a/vendor/illuminate/bus/UpdatedBatchJobCounts.php
+++ /dev/null
@@ -1,43 +0,0 @@
-pendingJobs = $pendingJobs;
- $this->failedJobs = $failedJobs;
- }
-
- /**
- * Determine if all jobs have run exactly once.
- *
- * @return bool
- */
- public function allJobsHaveRanExactlyOnce()
- {
- return ($this->pendingJobs - $this->failedJobs) === 0;
- }
-}
diff --git a/vendor/illuminate/bus/composer.json b/vendor/illuminate/bus/composer.json
deleted file mode 100644
index 12713a61..00000000
--- a/vendor/illuminate/bus/composer.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "name": "illuminate/bus",
- "description": "The Illuminate Bus package.",
- "license": "MIT",
- "homepage": "https://laravel.com",
- "support": {
- "issues": "https://github.com/laravel/framework/issues",
- "source": "https://github.com/laravel/framework"
- },
- "authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- }
- ],
- "require": {
- "php": "^7.3|^8.0",
- "illuminate/collections": "^8.0",
- "illuminate/contracts": "^8.0",
- "illuminate/pipeline": "^8.0",
- "illuminate/support": "^8.0"
- },
- "autoload": {
- "psr-4": {
- "Illuminate\\Bus\\": ""
- }
- },
- "extra": {
- "branch-alias": {
- "dev-master": "8.x-dev"
- }
- },
- "suggest": {
- "illuminate/queue": "Required to use closures when chaining jobs (^7.0)."
- },
- "config": {
- "sort-packages": true
- },
- "minimum-stability": "dev"
-}
diff --git a/vendor/illuminate/collections/Arr.php b/vendor/illuminate/collections/Arr.php
deleted file mode 100644
index d4ebd899..00000000
--- a/vendor/illuminate/collections/Arr.php
+++ /dev/null
@@ -1,717 +0,0 @@
-all();
- } elseif (! is_array($values)) {
- continue;
- }
-
- $results[] = $values;
- }
-
- return array_merge([], ...$results);
- }
-
- /**
- * Cross join the given arrays, returning all possible permutations.
- *
- * @param iterable ...$arrays
- * @return array
- */
- public static function crossJoin(...$arrays)
- {
- $results = [[]];
-
- foreach ($arrays as $index => $array) {
- $append = [];
-
- foreach ($results as $product) {
- foreach ($array as $item) {
- $product[$index] = $item;
-
- $append[] = $product;
- }
- }
-
- $results = $append;
- }
-
- return $results;
- }
-
- /**
- * Divide an array into two arrays. One with keys and the other with values.
- *
- * @param array $array
- * @return array
- */
- public static function divide($array)
- {
- return [array_keys($array), array_values($array)];
- }
-
- /**
- * Flatten a multi-dimensional associative array with dots.
- *
- * @param iterable $array
- * @param string $prepend
- * @return array
- */
- public static function dot($array, $prepend = '')
- {
- $results = [];
-
- foreach ($array as $key => $value) {
- if (is_array($value) && ! empty($value)) {
- $results = array_merge($results, static::dot($value, $prepend.$key.'.'));
- } else {
- $results[$prepend.$key] = $value;
- }
- }
-
- return $results;
- }
-
- /**
- * Get all of the given array except for a specified array of keys.
- *
- * @param array $array
- * @param array|string $keys
- * @return array
- */
- public static function except($array, $keys)
- {
- static::forget($array, $keys);
-
- return $array;
- }
-
- /**
- * Determine if the given key exists in the provided array.
- *
- * @param \ArrayAccess|array $array
- * @param string|int $key
- * @return bool
- */
- public static function exists($array, $key)
- {
- if ($array instanceof Enumerable) {
- return $array->has($key);
- }
-
- if ($array instanceof ArrayAccess) {
- return $array->offsetExists($key);
- }
-
- return array_key_exists($key, $array);
- }
-
- /**
- * Return the first element in an array passing a given truth test.
- *
- * @param iterable $array
- * @param callable|null $callback
- * @param mixed $default
- * @return mixed
- */
- public static function first($array, callable $callback = null, $default = null)
- {
- if (is_null($callback)) {
- if (empty($array)) {
- return value($default);
- }
-
- foreach ($array as $item) {
- return $item;
- }
- }
-
- foreach ($array as $key => $value) {
- if ($callback($value, $key)) {
- return $value;
- }
- }
-
- return value($default);
- }
-
- /**
- * Return the last element in an array passing a given truth test.
- *
- * @param array $array
- * @param callable|null $callback
- * @param mixed $default
- * @return mixed
- */
- public static function last($array, callable $callback = null, $default = null)
- {
- if (is_null($callback)) {
- return empty($array) ? value($default) : end($array);
- }
-
- return static::first(array_reverse($array, true), $callback, $default);
- }
-
- /**
- * Flatten a multi-dimensional array into a single level.
- *
- * @param iterable $array
- * @param int $depth
- * @return array
- */
- public static function flatten($array, $depth = INF)
- {
- $result = [];
-
- foreach ($array as $item) {
- $item = $item instanceof Collection ? $item->all() : $item;
-
- if (! is_array($item)) {
- $result[] = $item;
- } else {
- $values = $depth === 1
- ? array_values($item)
- : static::flatten($item, $depth - 1);
-
- foreach ($values as $value) {
- $result[] = $value;
- }
- }
- }
-
- return $result;
- }
-
- /**
- * Remove one or many array items from a given array using "dot" notation.
- *
- * @param array $array
- * @param array|string $keys
- * @return void
- */
- public static function forget(&$array, $keys)
- {
- $original = &$array;
-
- $keys = (array) $keys;
-
- if (count($keys) === 0) {
- return;
- }
-
- foreach ($keys as $key) {
- // if the exact key exists in the top-level, remove it
- if (static::exists($array, $key)) {
- unset($array[$key]);
-
- continue;
- }
-
- $parts = explode('.', $key);
-
- // clean up before each pass
- $array = &$original;
-
- while (count($parts) > 1) {
- $part = array_shift($parts);
-
- if (isset($array[$part]) && is_array($array[$part])) {
- $array = &$array[$part];
- } else {
- continue 2;
- }
- }
-
- unset($array[array_shift($parts)]);
- }
- }
-
- /**
- * Get an item from an array using "dot" notation.
- *
- * @param \ArrayAccess|array $array
- * @param string|int|null $key
- * @param mixed $default
- * @return mixed
- */
- public static function get($array, $key, $default = null)
- {
- if (! static::accessible($array)) {
- return value($default);
- }
-
- if (is_null($key)) {
- return $array;
- }
-
- if (static::exists($array, $key)) {
- return $array[$key];
- }
-
- if (strpos($key, '.') === false) {
- return $array[$key] ?? value($default);
- }
-
- foreach (explode('.', $key) as $segment) {
- if (static::accessible($array) && static::exists($array, $segment)) {
- $array = $array[$segment];
- } else {
- return value($default);
- }
- }
-
- return $array;
- }
-
- /**
- * Check if an item or items exist in an array using "dot" notation.
- *
- * @param \ArrayAccess|array $array
- * @param string|array $keys
- * @return bool
- */
- public static function has($array, $keys)
- {
- $keys = (array) $keys;
-
- if (! $array || $keys === []) {
- return false;
- }
-
- foreach ($keys as $key) {
- $subKeyArray = $array;
-
- if (static::exists($array, $key)) {
- continue;
- }
-
- foreach (explode('.', $key) as $segment) {
- if (static::accessible($subKeyArray) && static::exists($subKeyArray, $segment)) {
- $subKeyArray = $subKeyArray[$segment];
- } else {
- return false;
- }
- }
- }
-
- return true;
- }
-
- /**
- * Determine if any of the keys exist in an array using "dot" notation.
- *
- * @param \ArrayAccess|array $array
- * @param string|array $keys
- * @return bool
- */
- public static function hasAny($array, $keys)
- {
- if (is_null($keys)) {
- return false;
- }
-
- $keys = (array) $keys;
-
- if (! $array) {
- return false;
- }
-
- if ($keys === []) {
- return false;
- }
-
- foreach ($keys as $key) {
- if (static::has($array, $key)) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Determines if an array is associative.
- *
- * An array is "associative" if it doesn't have sequential numerical keys beginning with zero.
- *
- * @param array $array
- * @return bool
- */
- public static function isAssoc(array $array)
- {
- $keys = array_keys($array);
-
- return array_keys($keys) !== $keys;
- }
-
- /**
- * Determines if an array is a list.
- *
- * An array is a "list" if all array keys are sequential integers starting from 0 with no gaps in between.
- *
- * @param array $array
- * @return bool
- */
- public static function isList($array)
- {
- return ! self::isAssoc($array);
- }
-
- /**
- * Get a subset of the items from the given array.
- *
- * @param array $array
- * @param array|string $keys
- * @return array
- */
- public static function only($array, $keys)
- {
- return array_intersect_key($array, array_flip((array) $keys));
- }
-
- /**
- * Pluck an array of values from an array.
- *
- * @param iterable $array
- * @param string|array|int|null $value
- * @param string|array|null $key
- * @return array
- */
- public static function pluck($array, $value, $key = null)
- {
- $results = [];
-
- [$value, $key] = static::explodePluckParameters($value, $key);
-
- foreach ($array as $item) {
- $itemValue = data_get($item, $value);
-
- // If the key is "null", we will just append the value to the array and keep
- // looping. Otherwise we will key the array using the value of the key we
- // received from the developer. Then we'll return the final array form.
- if (is_null($key)) {
- $results[] = $itemValue;
- } else {
- $itemKey = data_get($item, $key);
-
- if (is_object($itemKey) && method_exists($itemKey, '__toString')) {
- $itemKey = (string) $itemKey;
- }
-
- $results[$itemKey] = $itemValue;
- }
- }
-
- return $results;
- }
-
- /**
- * Explode the "value" and "key" arguments passed to "pluck".
- *
- * @param string|array $value
- * @param string|array|null $key
- * @return array
- */
- protected static function explodePluckParameters($value, $key)
- {
- $value = is_string($value) ? explode('.', $value) : $value;
-
- $key = is_null($key) || is_array($key) ? $key : explode('.', $key);
-
- return [$value, $key];
- }
-
- /**
- * Push an item onto the beginning of an array.
- *
- * @param array $array
- * @param mixed $value
- * @param mixed $key
- * @return array
- */
- public static function prepend($array, $value, $key = null)
- {
- if (func_num_args() == 2) {
- array_unshift($array, $value);
- } else {
- $array = [$key => $value] + $array;
- }
-
- return $array;
- }
-
- /**
- * Get a value from the array, and remove it.
- *
- * @param array $array
- * @param string $key
- * @param mixed $default
- * @return mixed
- */
- public static function pull(&$array, $key, $default = null)
- {
- $value = static::get($array, $key, $default);
-
- static::forget($array, $key);
-
- return $value;
- }
-
- /**
- * Convert the array into a query string.
- *
- * @param array $array
- * @return string
- */
- public static function query($array)
- {
- return http_build_query($array, '', '&', PHP_QUERY_RFC3986);
- }
-
- /**
- * Get one or a specified number of random values from an array.
- *
- * @param array $array
- * @param int|null $number
- * @param bool|false $preserveKeys
- * @return mixed
- *
- * @throws \InvalidArgumentException
- */
- public static function random($array, $number = null, $preserveKeys = false)
- {
- $requested = is_null($number) ? 1 : $number;
-
- $count = count($array);
-
- if ($requested > $count) {
- throw new InvalidArgumentException(
- "You requested {$requested} items, but there are only {$count} items available."
- );
- }
-
- if (is_null($number)) {
- return $array[array_rand($array)];
- }
-
- if ((int) $number === 0) {
- return [];
- }
-
- $keys = array_rand($array, $number);
-
- $results = [];
-
- if ($preserveKeys) {
- foreach ((array) $keys as $key) {
- $results[$key] = $array[$key];
- }
- } else {
- foreach ((array) $keys as $key) {
- $results[] = $array[$key];
- }
- }
-
- return $results;
- }
-
- /**
- * Set an array item to a given value using "dot" notation.
- *
- * If no key is given to the method, the entire array will be replaced.
- *
- * @param array $array
- * @param string|null $key
- * @param mixed $value
- * @return array
- */
- public static function set(&$array, $key, $value)
- {
- if (is_null($key)) {
- return $array = $value;
- }
-
- $keys = explode('.', $key);
-
- foreach ($keys as $i => $key) {
- if (count($keys) === 1) {
- break;
- }
-
- unset($keys[$i]);
-
- // If the key doesn't exist at this depth, we will just create an empty array
- // to hold the next value, allowing us to create the arrays to hold final
- // values at the correct depth. Then we'll keep digging into the array.
- if (! isset($array[$key]) || ! is_array($array[$key])) {
- $array[$key] = [];
- }
-
- $array = &$array[$key];
- }
-
- $array[array_shift($keys)] = $value;
-
- return $array;
- }
-
- /**
- * Shuffle the given array and return the result.
- *
- * @param array $array
- * @param int|null $seed
- * @return array
- */
- public static function shuffle($array, $seed = null)
- {
- if (is_null($seed)) {
- shuffle($array);
- } else {
- mt_srand($seed);
- shuffle($array);
- mt_srand();
- }
-
- return $array;
- }
-
- /**
- * Sort the array using the given callback or "dot" notation.
- *
- * @param array $array
- * @param callable|array|string|null $callback
- * @return array
- */
- public static function sort($array, $callback = null)
- {
- return Collection::make($array)->sortBy($callback)->all();
- }
-
- /**
- * Recursively sort an array by keys and values.
- *
- * @param array $array
- * @param int $options
- * @param bool $descending
- * @return array
- */
- public static function sortRecursive($array, $options = SORT_REGULAR, $descending = false)
- {
- foreach ($array as &$value) {
- if (is_array($value)) {
- $value = static::sortRecursive($value, $options, $descending);
- }
- }
-
- if (static::isAssoc($array)) {
- $descending
- ? krsort($array, $options)
- : ksort($array, $options);
- } else {
- $descending
- ? rsort($array, $options)
- : sort($array, $options);
- }
-
- return $array;
- }
-
- /**
- * Conditionally compile classes from an array into a CSS class list.
- *
- * @param array $array
- * @return string
- */
- public static function toCssClasses($array)
- {
- $classList = static::wrap($array);
-
- $classes = [];
-
- foreach ($classList as $class => $constraint) {
- if (is_numeric($class)) {
- $classes[] = $constraint;
- } elseif ($constraint) {
- $classes[] = $class;
- }
- }
-
- return implode(' ', $classes);
- }
-
- /**
- * Filter the array using the given callback.
- *
- * @param array $array
- * @param callable $callback
- * @return array
- */
- public static function where($array, callable $callback)
- {
- return array_filter($array, $callback, ARRAY_FILTER_USE_BOTH);
- }
-
- /**
- * If the given value is not an array and not null, wrap it in one.
- *
- * @param mixed $value
- * @return array
- */
- public static function wrap($value)
- {
- if (is_null($value)) {
- return [];
- }
-
- return is_array($value) ? $value : [$value];
- }
-}
diff --git a/vendor/illuminate/collections/Collection.php b/vendor/illuminate/collections/Collection.php
deleted file mode 100644
index a6e3e934..00000000
--- a/vendor/illuminate/collections/Collection.php
+++ /dev/null
@@ -1,1612 +0,0 @@
-items = $this->getArrayableItems($items);
- }
-
- /**
- * Create a collection with the given range.
- *
- * @param int $from
- * @param int $to
- * @return static
- */
- public static function range($from, $to)
- {
- return new static(range($from, $to));
- }
-
- /**
- * Get all of the items in the collection.
- *
- * @return array
- */
- public function all()
- {
- return $this->items;
- }
-
- /**
- * Get a lazy collection for the items in this collection.
- *
- * @return \Illuminate\Support\LazyCollection
- */
- public function lazy()
- {
- return new LazyCollection($this->items);
- }
-
- /**
- * Get the average value of a given key.
- *
- * @param callable|string|null $callback
- * @return mixed
- */
- public function avg($callback = null)
- {
- $callback = $this->valueRetriever($callback);
-
- $items = $this->map(function ($value) use ($callback) {
- return $callback($value);
- })->filter(function ($value) {
- return ! is_null($value);
- });
-
- if ($count = $items->count()) {
- return $items->sum() / $count;
- }
- }
-
- /**
- * Get the median of a given key.
- *
- * @param string|array|null $key
- * @return mixed
- */
- public function median($key = null)
- {
- $values = (isset($key) ? $this->pluck($key) : $this)
- ->filter(function ($item) {
- return ! is_null($item);
- })->sort()->values();
-
- $count = $values->count();
-
- if ($count === 0) {
- return;
- }
-
- $middle = (int) ($count / 2);
-
- if ($count % 2) {
- return $values->get($middle);
- }
-
- return (new static([
- $values->get($middle - 1), $values->get($middle),
- ]))->average();
- }
-
- /**
- * Get the mode of a given key.
- *
- * @param string|array|null $key
- * @return array|null
- */
- public function mode($key = null)
- {
- if ($this->count() === 0) {
- return;
- }
-
- $collection = isset($key) ? $this->pluck($key) : $this;
-
- $counts = new static;
-
- $collection->each(function ($value) use ($counts) {
- $counts[$value] = isset($counts[$value]) ? $counts[$value] + 1 : 1;
- });
-
- $sorted = $counts->sort();
-
- $highestValue = $sorted->last();
-
- return $sorted->filter(function ($value) use ($highestValue) {
- return $value == $highestValue;
- })->sort()->keys()->all();
- }
-
- /**
- * Collapse the collection of items into a single array.
- *
- * @return static
- */
- public function collapse()
- {
- return new static(Arr::collapse($this->items));
- }
-
- /**
- * Determine if an item exists in the collection.
- *
- * @param mixed $key
- * @param mixed $operator
- * @param mixed $value
- * @return bool
- */
- public function contains($key, $operator = null, $value = null)
- {
- if (func_num_args() === 1) {
- if ($this->useAsCallable($key)) {
- $placeholder = new stdClass;
-
- return $this->first($key, $placeholder) !== $placeholder;
- }
-
- return in_array($key, $this->items);
- }
-
- return $this->contains($this->operatorForWhere(...func_get_args()));
- }
-
- /**
- * Cross join with the given lists, returning all possible permutations.
- *
- * @param mixed ...$lists
- * @return static
- */
- public function crossJoin(...$lists)
- {
- return new static(Arr::crossJoin(
- $this->items, ...array_map([$this, 'getArrayableItems'], $lists)
- ));
- }
-
- /**
- * Get the items in the collection that are not present in the given items.
- *
- * @param mixed $items
- * @return static
- */
- public function diff($items)
- {
- return new static(array_diff($this->items, $this->getArrayableItems($items)));
- }
-
- /**
- * Get the items in the collection that are not present in the given items, using the callback.
- *
- * @param mixed $items
- * @param callable $callback
- * @return static
- */
- public function diffUsing($items, callable $callback)
- {
- return new static(array_udiff($this->items, $this->getArrayableItems($items), $callback));
- }
-
- /**
- * Get the items in the collection whose keys and values are not present in the given items.
- *
- * @param mixed $items
- * @return static
- */
- public function diffAssoc($items)
- {
- return new static(array_diff_assoc($this->items, $this->getArrayableItems($items)));
- }
-
- /**
- * Get the items in the collection whose keys and values are not present in the given items, using the callback.
- *
- * @param mixed $items
- * @param callable $callback
- * @return static
- */
- public function diffAssocUsing($items, callable $callback)
- {
- return new static(array_diff_uassoc($this->items, $this->getArrayableItems($items), $callback));
- }
-
- /**
- * Get the items in the collection whose keys are not present in the given items.
- *
- * @param mixed $items
- * @return static
- */
- public function diffKeys($items)
- {
- return new static(array_diff_key($this->items, $this->getArrayableItems($items)));
- }
-
- /**
- * Get the items in the collection whose keys are not present in the given items, using the callback.
- *
- * @param mixed $items
- * @param callable $callback
- * @return static
- */
- public function diffKeysUsing($items, callable $callback)
- {
- return new static(array_diff_ukey($this->items, $this->getArrayableItems($items), $callback));
- }
-
- /**
- * Retrieve duplicate items from the collection.
- *
- * @param callable|string|null $callback
- * @param bool $strict
- * @return static
- */
- public function duplicates($callback = null, $strict = false)
- {
- $items = $this->map($this->valueRetriever($callback));
-
- $uniqueItems = $items->unique(null, $strict);
-
- $compare = $this->duplicateComparator($strict);
-
- $duplicates = new static;
-
- foreach ($items as $key => $value) {
- if ($uniqueItems->isNotEmpty() && $compare($value, $uniqueItems->first())) {
- $uniqueItems->shift();
- } else {
- $duplicates[$key] = $value;
- }
- }
-
- return $duplicates;
- }
-
- /**
- * Retrieve duplicate items from the collection using strict comparison.
- *
- * @param callable|string|null $callback
- * @return static
- */
- public function duplicatesStrict($callback = null)
- {
- return $this->duplicates($callback, true);
- }
-
- /**
- * Get the comparison function to detect duplicates.
- *
- * @param bool $strict
- * @return \Closure
- */
- protected function duplicateComparator($strict)
- {
- if ($strict) {
- return function ($a, $b) {
- return $a === $b;
- };
- }
-
- return function ($a, $b) {
- return $a == $b;
- };
- }
-
- /**
- * Get all items except for those with the specified keys.
- *
- * @param \Illuminate\Support\Collection|mixed $keys
- * @return static
- */
- public function except($keys)
- {
- if ($keys instanceof Enumerable) {
- $keys = $keys->all();
- } elseif (! is_array($keys)) {
- $keys = func_get_args();
- }
-
- return new static(Arr::except($this->items, $keys));
- }
-
- /**
- * Run a filter over each of the items.
- *
- * @param callable|null $callback
- * @return static
- */
- public function filter(callable $callback = null)
- {
- if ($callback) {
- return new static(Arr::where($this->items, $callback));
- }
-
- return new static(array_filter($this->items));
- }
-
- /**
- * Get the first item from the collection passing the given truth test.
- *
- * @param callable|null $callback
- * @param mixed $default
- * @return mixed
- */
- public function first(callable $callback = null, $default = null)
- {
- return Arr::first($this->items, $callback, $default);
- }
-
- /**
- * Get a flattened array of the items in the collection.
- *
- * @param int $depth
- * @return static
- */
- public function flatten($depth = INF)
- {
- return new static(Arr::flatten($this->items, $depth));
- }
-
- /**
- * Flip the items in the collection.
- *
- * @return static
- */
- public function flip()
- {
- return new static(array_flip($this->items));
- }
-
- /**
- * Remove an item from the collection by key.
- *
- * @param string|array $keys
- * @return $this
- */
- public function forget($keys)
- {
- foreach ((array) $keys as $key) {
- $this->offsetUnset($key);
- }
-
- return $this;
- }
-
- /**
- * Get an item from the collection by key.
- *
- * @param mixed $key
- * @param mixed $default
- * @return mixed
- */
- public function get($key, $default = null)
- {
- if (array_key_exists($key, $this->items)) {
- return $this->items[$key];
- }
-
- return value($default);
- }
-
- /**
- * Group an associative array by a field or using a callback.
- *
- * @param array|callable|string $groupBy
- * @param bool $preserveKeys
- * @return static
- */
- public function groupBy($groupBy, $preserveKeys = false)
- {
- if (! $this->useAsCallable($groupBy) && is_array($groupBy)) {
- $nextGroups = $groupBy;
-
- $groupBy = array_shift($nextGroups);
- }
-
- $groupBy = $this->valueRetriever($groupBy);
-
- $results = [];
-
- foreach ($this->items as $key => $value) {
- $groupKeys = $groupBy($value, $key);
-
- if (! is_array($groupKeys)) {
- $groupKeys = [$groupKeys];
- }
-
- foreach ($groupKeys as $groupKey) {
- $groupKey = is_bool($groupKey) ? (int) $groupKey : $groupKey;
-
- if (! array_key_exists($groupKey, $results)) {
- $results[$groupKey] = new static;
- }
-
- $results[$groupKey]->offsetSet($preserveKeys ? $key : null, $value);
- }
- }
-
- $result = new static($results);
-
- if (! empty($nextGroups)) {
- return $result->map->groupBy($nextGroups, $preserveKeys);
- }
-
- return $result;
- }
-
- /**
- * Key an associative array by a field or using a callback.
- *
- * @param callable|string $keyBy
- * @return static
- */
- public function keyBy($keyBy)
- {
- $keyBy = $this->valueRetriever($keyBy);
-
- $results = [];
-
- foreach ($this->items as $key => $item) {
- $resolvedKey = $keyBy($item, $key);
-
- if (is_object($resolvedKey)) {
- $resolvedKey = (string) $resolvedKey;
- }
-
- $results[$resolvedKey] = $item;
- }
-
- return new static($results);
- }
-
- /**
- * Determine if an item exists in the collection by key.
- *
- * @param mixed $key
- * @return bool
- */
- public function has($key)
- {
- $keys = is_array($key) ? $key : func_get_args();
-
- foreach ($keys as $value) {
- if (! array_key_exists($value, $this->items)) {
- return false;
- }
- }
-
- return true;
- }
-
- /**
- * Determine if any of the keys exist in the collection.
- *
- * @param mixed $key
- * @return bool
- */
- public function hasAny($key)
- {
- if ($this->isEmpty()) {
- return false;
- }
-
- $keys = is_array($key) ? $key : func_get_args();
-
- foreach ($keys as $value) {
- if ($this->has($value)) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Concatenate values of a given key as a string.
- *
- * @param string $value
- * @param string|null $glue
- * @return string
- */
- public function implode($value, $glue = null)
- {
- $first = $this->first();
-
- if (is_array($first) || (is_object($first) && ! $first instanceof Stringable)) {
- return implode($glue ?? '', $this->pluck($value)->all());
- }
-
- return implode($value ?? '', $this->items);
- }
-
- /**
- * Intersect the collection with the given items.
- *
- * @param mixed $items
- * @return static
- */
- public function intersect($items)
- {
- return new static(array_intersect($this->items, $this->getArrayableItems($items)));
- }
-
- /**
- * Intersect the collection with the given items by key.
- *
- * @param mixed $items
- * @return static
- */
- public function intersectByKeys($items)
- {
- return new static(array_intersect_key(
- $this->items, $this->getArrayableItems($items)
- ));
- }
-
- /**
- * Determine if the collection is empty or not.
- *
- * @return bool
- */
- public function isEmpty()
- {
- return empty($this->items);
- }
-
- /**
- * Determine if the collection contains a single item.
- *
- * @return bool
- */
- public function containsOneItem()
- {
- return $this->count() === 1;
- }
-
- /**
- * Join all items from the collection using a string. The final items can use a separate glue string.
- *
- * @param string $glue
- * @param string $finalGlue
- * @return string
- */
- public function join($glue, $finalGlue = '')
- {
- if ($finalGlue === '') {
- return $this->implode($glue);
- }
-
- $count = $this->count();
-
- if ($count === 0) {
- return '';
- }
-
- if ($count === 1) {
- return $this->last();
- }
-
- $collection = new static($this->items);
-
- $finalItem = $collection->pop();
-
- return $collection->implode($glue).$finalGlue.$finalItem;
- }
-
- /**
- * Get the keys of the collection items.
- *
- * @return static
- */
- public function keys()
- {
- return new static(array_keys($this->items));
- }
-
- /**
- * Get the last item from the collection.
- *
- * @param callable|null $callback
- * @param mixed $default
- * @return mixed
- */
- public function last(callable $callback = null, $default = null)
- {
- return Arr::last($this->items, $callback, $default);
- }
-
- /**
- * Get the values of a given key.
- *
- * @param string|array|int|null $value
- * @param string|null $key
- * @return static
- */
- public function pluck($value, $key = null)
- {
- return new static(Arr::pluck($this->items, $value, $key));
- }
-
- /**
- * Run a map over each of the items.
- *
- * @param callable $callback
- * @return static
- */
- public function map(callable $callback)
- {
- $keys = array_keys($this->items);
-
- $items = array_map($callback, $this->items, $keys);
-
- return new static(array_combine($keys, $items));
- }
-
- /**
- * Run a dictionary map over the items.
- *
- * The callback should return an associative array with a single key/value pair.
- *
- * @param callable $callback
- * @return static
- */
- public function mapToDictionary(callable $callback)
- {
- $dictionary = [];
-
- foreach ($this->items as $key => $item) {
- $pair = $callback($item, $key);
-
- $key = key($pair);
-
- $value = reset($pair);
-
- if (! isset($dictionary[$key])) {
- $dictionary[$key] = [];
- }
-
- $dictionary[$key][] = $value;
- }
-
- return new static($dictionary);
- }
-
- /**
- * Run an associative map over each of the items.
- *
- * The callback should return an associative array with a single key/value pair.
- *
- * @param callable $callback
- * @return static
- */
- public function mapWithKeys(callable $callback)
- {
- $result = [];
-
- foreach ($this->items as $key => $value) {
- $assoc = $callback($value, $key);
-
- foreach ($assoc as $mapKey => $mapValue) {
- $result[$mapKey] = $mapValue;
- }
- }
-
- return new static($result);
- }
-
- /**
- * Merge the collection with the given items.
- *
- * @param mixed $items
- * @return static
- */
- public function merge($items)
- {
- return new static(array_merge($this->items, $this->getArrayableItems($items)));
- }
-
- /**
- * Recursively merge the collection with the given items.
- *
- * @param mixed $items
- * @return static
- */
- public function mergeRecursive($items)
- {
- return new static(array_merge_recursive($this->items, $this->getArrayableItems($items)));
- }
-
- /**
- * Create a collection by using this collection for keys and another for its values.
- *
- * @param mixed $values
- * @return static
- */
- public function combine($values)
- {
- return new static(array_combine($this->all(), $this->getArrayableItems($values)));
- }
-
- /**
- * Union the collection with the given items.
- *
- * @param mixed $items
- * @return static
- */
- public function union($items)
- {
- return new static($this->items + $this->getArrayableItems($items));
- }
-
- /**
- * Create a new collection consisting of every n-th element.
- *
- * @param int $step
- * @param int $offset
- * @return static
- */
- public function nth($step, $offset = 0)
- {
- $new = [];
-
- $position = 0;
-
- foreach ($this->items as $item) {
- if ($position % $step === $offset) {
- $new[] = $item;
- }
-
- $position++;
- }
-
- return new static($new);
- }
-
- /**
- * Get the items with the specified keys.
- *
- * @param mixed $keys
- * @return static
- */
- public function only($keys)
- {
- if (is_null($keys)) {
- return new static($this->items);
- }
-
- if ($keys instanceof Enumerable) {
- $keys = $keys->all();
- }
-
- $keys = is_array($keys) ? $keys : func_get_args();
-
- return new static(Arr::only($this->items, $keys));
- }
-
- /**
- * Get and remove the last N items from the collection.
- *
- * @param int $count
- * @return mixed
- */
- public function pop($count = 1)
- {
- if ($count === 1) {
- return array_pop($this->items);
- }
-
- if ($this->isEmpty()) {
- return new static;
- }
-
- $results = [];
-
- $collectionCount = $this->count();
-
- foreach (range(1, min($count, $collectionCount)) as $item) {
- array_push($results, array_pop($this->items));
- }
-
- return new static($results);
- }
-
- /**
- * Push an item onto the beginning of the collection.
- *
- * @param mixed $value
- * @param mixed $key
- * @return $this
- */
- public function prepend($value, $key = null)
- {
- $this->items = Arr::prepend($this->items, ...func_get_args());
-
- return $this;
- }
-
- /**
- * Push one or more items onto the end of the collection.
- *
- * @param mixed $values
- * @return $this
- */
- public function push(...$values)
- {
- foreach ($values as $value) {
- $this->items[] = $value;
- }
-
- return $this;
- }
-
- /**
- * Push all of the given items onto the collection.
- *
- * @param iterable $source
- * @return static
- */
- public function concat($source)
- {
- $result = new static($this);
-
- foreach ($source as $item) {
- $result->push($item);
- }
-
- return $result;
- }
-
- /**
- * Get and remove an item from the collection.
- *
- * @param mixed $key
- * @param mixed $default
- * @return mixed
- */
- public function pull($key, $default = null)
- {
- return Arr::pull($this->items, $key, $default);
- }
-
- /**
- * Put an item in the collection by key.
- *
- * @param mixed $key
- * @param mixed $value
- * @return $this
- */
- public function put($key, $value)
- {
- $this->offsetSet($key, $value);
-
- return $this;
- }
-
- /**
- * Get one or a specified number of items randomly from the collection.
- *
- * @param int|null $number
- * @return static|mixed
- *
- * @throws \InvalidArgumentException
- */
- public function random($number = null)
- {
- if (is_null($number)) {
- return Arr::random($this->items);
- }
-
- return new static(Arr::random($this->items, $number));
- }
-
- /**
- * Replace the collection items with the given items.
- *
- * @param mixed $items
- * @return static
- */
- public function replace($items)
- {
- return new static(array_replace($this->items, $this->getArrayableItems($items)));
- }
-
- /**
- * Recursively replace the collection items with the given items.
- *
- * @param mixed $items
- * @return static
- */
- public function replaceRecursive($items)
- {
- return new static(array_replace_recursive($this->items, $this->getArrayableItems($items)));
- }
-
- /**
- * Reverse items order.
- *
- * @return static
- */
- public function reverse()
- {
- return new static(array_reverse($this->items, true));
- }
-
- /**
- * Search the collection for a given value and return the corresponding key if successful.
- *
- * @param mixed $value
- * @param bool $strict
- * @return mixed
- */
- public function search($value, $strict = false)
- {
- if (! $this->useAsCallable($value)) {
- return array_search($value, $this->items, $strict);
- }
-
- foreach ($this->items as $key => $item) {
- if ($value($item, $key)) {
- return $key;
- }
- }
-
- return false;
- }
-
- /**
- * Get and remove the first N items from the collection.
- *
- * @param int $count
- * @return mixed
- */
- public function shift($count = 1)
- {
- if ($count === 1) {
- return array_shift($this->items);
- }
-
- if ($this->isEmpty()) {
- return new static;
- }
-
- $results = [];
-
- $collectionCount = $this->count();
-
- foreach (range(1, min($count, $collectionCount)) as $item) {
- array_push($results, array_shift($this->items));
- }
-
- return new static($results);
- }
-
- /**
- * Shuffle the items in the collection.
- *
- * @param int|null $seed
- * @return static
- */
- public function shuffle($seed = null)
- {
- return new static(Arr::shuffle($this->items, $seed));
- }
-
- /**
- * Create chunks representing a "sliding window" view of the items in the collection.
- *
- * @param int $size
- * @param int $step
- * @return static
- */
- public function sliding($size = 2, $step = 1)
- {
- $chunks = floor(($this->count() - $size) / $step) + 1;
-
- return static::times($chunks, function ($number) use ($size, $step) {
- return $this->slice(($number - 1) * $step, $size);
- });
- }
-
- /**
- * Skip the first {$count} items.
- *
- * @param int $count
- * @return static
- */
- public function skip($count)
- {
- return $this->slice($count);
- }
-
- /**
- * Skip items in the collection until the given condition is met.
- *
- * @param mixed $value
- * @return static
- */
- public function skipUntil($value)
- {
- return new static($this->lazy()->skipUntil($value)->all());
- }
-
- /**
- * Skip items in the collection while the given condition is met.
- *
- * @param mixed $value
- * @return static
- */
- public function skipWhile($value)
- {
- return new static($this->lazy()->skipWhile($value)->all());
- }
-
- /**
- * Slice the underlying collection array.
- *
- * @param int $offset
- * @param int|null $length
- * @return static
- */
- public function slice($offset, $length = null)
- {
- return new static(array_slice($this->items, $offset, $length, true));
- }
-
- /**
- * Split a collection into a certain number of groups.
- *
- * @param int $numberOfGroups
- * @return static
- */
- public function split($numberOfGroups)
- {
- if ($this->isEmpty()) {
- return new static;
- }
-
- $groups = new static;
-
- $groupSize = floor($this->count() / $numberOfGroups);
-
- $remain = $this->count() % $numberOfGroups;
-
- $start = 0;
-
- for ($i = 0; $i < $numberOfGroups; $i++) {
- $size = $groupSize;
-
- if ($i < $remain) {
- $size++;
- }
-
- if ($size) {
- $groups->push(new static(array_slice($this->items, $start, $size)));
-
- $start += $size;
- }
- }
-
- return $groups;
- }
-
- /**
- * Split a collection into a certain number of groups, and fill the first groups completely.
- *
- * @param int $numberOfGroups
- * @return static
- */
- public function splitIn($numberOfGroups)
- {
- return $this->chunk(ceil($this->count() / $numberOfGroups));
- }
-
- /**
- * Get the first item in the collection, but only if exactly one item exists. Otherwise, throw an exception.
- *
- * @param mixed $key
- * @param mixed $operator
- * @param mixed $value
- * @return mixed
- *
- * @throws \Illuminate\Support\ItemNotFoundException
- * @throws \Illuminate\Support\MultipleItemsFoundException
- */
- public function sole($key = null, $operator = null, $value = null)
- {
- $filter = func_num_args() > 1
- ? $this->operatorForWhere(...func_get_args())
- : $key;
-
- $items = $this->when($filter)->filter($filter);
-
- if ($items->isEmpty()) {
- throw new ItemNotFoundException;
- }
-
- if ($items->count() > 1) {
- throw new MultipleItemsFoundException;
- }
-
- return $items->first();
- }
-
- /**
- * Get the first item in the collection but throw an exception if no matching items exist.
- *
- * @param mixed $key
- * @param mixed $operator
- * @param mixed $value
- * @return mixed
- *
- * @throws \Illuminate\Support\ItemNotFoundException
- */
- public function firstOrFail($key = null, $operator = null, $value = null)
- {
- $filter = func_num_args() > 1
- ? $this->operatorForWhere(...func_get_args())
- : $key;
-
- $placeholder = new stdClass();
-
- $item = $this->first($filter, $placeholder);
-
- if ($item === $placeholder) {
- throw new ItemNotFoundException;
- }
-
- return $item;
- }
-
- /**
- * Chunk the collection into chunks of the given size.
- *
- * @param int $size
- * @return static
- */
- public function chunk($size)
- {
- if ($size <= 0) {
- return new static;
- }
-
- $chunks = [];
-
- foreach (array_chunk($this->items, $size, true) as $chunk) {
- $chunks[] = new static($chunk);
- }
-
- return new static($chunks);
- }
-
- /**
- * Chunk the collection into chunks with a callback.
- *
- * @param callable $callback
- * @return static
- */
- public function chunkWhile(callable $callback)
- {
- return new static(
- $this->lazy()->chunkWhile($callback)->mapInto(static::class)
- );
- }
-
- /**
- * Sort through each item with a callback.
- *
- * @param callable|int|null $callback
- * @return static
- */
- public function sort($callback = null)
- {
- $items = $this->items;
-
- $callback && is_callable($callback)
- ? uasort($items, $callback)
- : asort($items, $callback ?? SORT_REGULAR);
-
- return new static($items);
- }
-
- /**
- * Sort items in descending order.
- *
- * @param int $options
- * @return static
- */
- public function sortDesc($options = SORT_REGULAR)
- {
- $items = $this->items;
-
- arsort($items, $options);
-
- return new static($items);
- }
-
- /**
- * Sort the collection using the given callback.
- *
- * @param callable|array|string $callback
- * @param int $options
- * @param bool $descending
- * @return static
- */
- public function sortBy($callback, $options = SORT_REGULAR, $descending = false)
- {
- if (is_array($callback) && ! is_callable($callback)) {
- return $this->sortByMany($callback);
- }
-
- $results = [];
-
- $callback = $this->valueRetriever($callback);
-
- // First we will loop through the items and get the comparator from a callback
- // function which we were given. Then, we will sort the returned values and
- // and grab the corresponding values for the sorted keys from this array.
- foreach ($this->items as $key => $value) {
- $results[$key] = $callback($value, $key);
- }
-
- $descending ? arsort($results, $options)
- : asort($results, $options);
-
- // Once we have sorted all of the keys in the array, we will loop through them
- // and grab the corresponding model so we can set the underlying items list
- // to the sorted version. Then we'll just return the collection instance.
- foreach (array_keys($results) as $key) {
- $results[$key] = $this->items[$key];
- }
-
- return new static($results);
- }
-
- /**
- * Sort the collection using multiple comparisons.
- *
- * @param array $comparisons
- * @return static
- */
- protected function sortByMany(array $comparisons = [])
- {
- $items = $this->items;
-
- usort($items, function ($a, $b) use ($comparisons) {
- foreach ($comparisons as $comparison) {
- $comparison = Arr::wrap($comparison);
-
- $prop = $comparison[0];
-
- $ascending = Arr::get($comparison, 1, true) === true ||
- Arr::get($comparison, 1, true) === 'asc';
-
- $result = 0;
-
- if (is_callable($prop)) {
- $result = $prop($a, $b);
- } else {
- $values = [data_get($a, $prop), data_get($b, $prop)];
-
- if (! $ascending) {
- $values = array_reverse($values);
- }
-
- $result = $values[0] <=> $values[1];
- }
-
- if ($result === 0) {
- continue;
- }
-
- return $result;
- }
- });
-
- return new static($items);
- }
-
- /**
- * Sort the collection in descending order using the given callback.
- *
- * @param callable|string $callback
- * @param int $options
- * @return static
- */
- public function sortByDesc($callback, $options = SORT_REGULAR)
- {
- return $this->sortBy($callback, $options, true);
- }
-
- /**
- * Sort the collection keys.
- *
- * @param int $options
- * @param bool $descending
- * @return static
- */
- public function sortKeys($options = SORT_REGULAR, $descending = false)
- {
- $items = $this->items;
-
- $descending ? krsort($items, $options) : ksort($items, $options);
-
- return new static($items);
- }
-
- /**
- * Sort the collection keys in descending order.
- *
- * @param int $options
- * @return static
- */
- public function sortKeysDesc($options = SORT_REGULAR)
- {
- return $this->sortKeys($options, true);
- }
-
- /**
- * Splice a portion of the underlying collection array.
- *
- * @param int $offset
- * @param int|null $length
- * @param mixed $replacement
- * @return static
- */
- public function splice($offset, $length = null, $replacement = [])
- {
- if (func_num_args() === 1) {
- return new static(array_splice($this->items, $offset));
- }
-
- return new static(array_splice($this->items, $offset, $length, $replacement));
- }
-
- /**
- * Take the first or last {$limit} items.
- *
- * @param int $limit
- * @return static
- */
- public function take($limit)
- {
- if ($limit < 0) {
- return $this->slice($limit, abs($limit));
- }
-
- return $this->slice(0, $limit);
- }
-
- /**
- * Take items in the collection until the given condition is met.
- *
- * @param mixed $value
- * @return static
- */
- public function takeUntil($value)
- {
- return new static($this->lazy()->takeUntil($value)->all());
- }
-
- /**
- * Take items in the collection while the given condition is met.
- *
- * @param mixed $value
- * @return static
- */
- public function takeWhile($value)
- {
- return new static($this->lazy()->takeWhile($value)->all());
- }
-
- /**
- * Transform each item in the collection using a callback.
- *
- * @param callable $callback
- * @return $this
- */
- public function transform(callable $callback)
- {
- $this->items = $this->map($callback)->all();
-
- return $this;
- }
-
- /**
- * Return only unique items from the collection array.
- *
- * @param string|callable|null $key
- * @param bool $strict
- * @return static
- */
- public function unique($key = null, $strict = false)
- {
- $callback = $this->valueRetriever($key);
-
- $exists = [];
-
- return $this->reject(function ($item, $key) use ($callback, $strict, &$exists) {
- if (in_array($id = $callback($item, $key), $exists, $strict)) {
- return true;
- }
-
- $exists[] = $id;
- });
- }
-
- /**
- * Reset the keys on the underlying array.
- *
- * @return static
- */
- public function values()
- {
- return new static(array_values($this->items));
- }
-
- /**
- * Zip the collection together with one or more arrays.
- *
- * e.g. new Collection([1, 2, 3])->zip([4, 5, 6]);
- * => [[1, 4], [2, 5], [3, 6]]
- *
- * @param mixed ...$items
- * @return static
- */
- public function zip($items)
- {
- $arrayableItems = array_map(function ($items) {
- return $this->getArrayableItems($items);
- }, func_get_args());
-
- $params = array_merge([function () {
- return new static(func_get_args());
- }, $this->items], $arrayableItems);
-
- return new static(array_map(...$params));
- }
-
- /**
- * Pad collection to the specified length with a value.
- *
- * @param int $size
- * @param mixed $value
- * @return static
- */
- public function pad($size, $value)
- {
- return new static(array_pad($this->items, $size, $value));
- }
-
- /**
- * Get an iterator for the items.
- *
- * @return \ArrayIterator
- */
- #[\ReturnTypeWillChange]
- public function getIterator()
- {
- return new ArrayIterator($this->items);
- }
-
- /**
- * Count the number of items in the collection.
- *
- * @return int
- */
- #[\ReturnTypeWillChange]
- public function count()
- {
- return count($this->items);
- }
-
- /**
- * Count the number of items in the collection by a field or using a callback.
- *
- * @param callable|string $countBy
- * @return static
- */
- public function countBy($countBy = null)
- {
- return new static($this->lazy()->countBy($countBy)->all());
- }
-
- /**
- * Add an item to the collection.
- *
- * @param mixed $item
- * @return $this
- */
- public function add($item)
- {
- $this->items[] = $item;
-
- return $this;
- }
-
- /**
- * Get a base Support collection instance from this collection.
- *
- * @return \Illuminate\Support\Collection
- */
- public function toBase()
- {
- return new self($this);
- }
-
- /**
- * Determine if an item exists at an offset.
- *
- * @param mixed $key
- * @return bool
- */
- #[\ReturnTypeWillChange]
- public function offsetExists($key)
- {
- return isset($this->items[$key]);
- }
-
- /**
- * Get an item at a given offset.
- *
- * @param mixed $key
- * @return mixed
- */
- #[\ReturnTypeWillChange]
- public function offsetGet($key)
- {
- return $this->items[$key];
- }
-
- /**
- * Set the item at a given offset.
- *
- * @param mixed $key
- * @param mixed $value
- * @return void
- */
- #[\ReturnTypeWillChange]
- public function offsetSet($key, $value)
- {
- if (is_null($key)) {
- $this->items[] = $value;
- } else {
- $this->items[$key] = $value;
- }
- }
-
- /**
- * Unset the item at a given offset.
- *
- * @param string $key
- * @return void
- */
- #[\ReturnTypeWillChange]
- public function offsetUnset($key)
- {
- unset($this->items[$key]);
- }
-}
diff --git a/vendor/illuminate/collections/Enumerable.php b/vendor/illuminate/collections/Enumerable.php
deleted file mode 100644
index 261a0c85..00000000
--- a/vendor/illuminate/collections/Enumerable.php
+++ /dev/null
@@ -1,1027 +0,0 @@
-zip([4, 5, 6]);
- * => [[1, 4], [2, 5], [3, 6]]
- *
- * @param mixed ...$items
- * @return static
- */
- public function zip($items);
-
- /**
- * Collect the values into a collection.
- *
- * @return \Illuminate\Support\Collection
- */
- public function collect();
-
- /**
- * Convert the collection to its string representation.
- *
- * @return string
- */
- public function __toString();
-
- /**
- * Add a method to the list of proxied methods.
- *
- * @param string $method
- * @return void
- */
- public static function proxy($method);
-
- /**
- * Dynamically access collection proxies.
- *
- * @param string $key
- * @return mixed
- *
- * @throws \Exception
- */
- public function __get($key);
-}
diff --git a/vendor/illuminate/collections/HigherOrderCollectionProxy.php b/vendor/illuminate/collections/HigherOrderCollectionProxy.php
deleted file mode 100644
index 106356c3..00000000
--- a/vendor/illuminate/collections/HigherOrderCollectionProxy.php
+++ /dev/null
@@ -1,63 +0,0 @@
-method = $method;
- $this->collection = $collection;
- }
-
- /**
- * Proxy accessing an attribute onto the collection items.
- *
- * @param string $key
- * @return mixed
- */
- public function __get($key)
- {
- return $this->collection->{$this->method}(function ($value) use ($key) {
- return is_array($value) ? $value[$key] : $value->{$key};
- });
- }
-
- /**
- * Proxy a method call onto the collection items.
- *
- * @param string $method
- * @param array $parameters
- * @return mixed
- */
- public function __call($method, $parameters)
- {
- return $this->collection->{$this->method}(function ($value) use ($method, $parameters) {
- return $value->{$method}(...$parameters);
- });
- }
-}
diff --git a/vendor/illuminate/collections/HigherOrderWhenProxy.php b/vendor/illuminate/collections/HigherOrderWhenProxy.php
deleted file mode 100644
index 6653c03a..00000000
--- a/vendor/illuminate/collections/HigherOrderWhenProxy.php
+++ /dev/null
@@ -1,63 +0,0 @@
-condition = $condition;
- $this->collection = $collection;
- }
-
- /**
- * Proxy accessing an attribute onto the collection.
- *
- * @param string $key
- * @return mixed
- */
- public function __get($key)
- {
- return $this->condition
- ? $this->collection->{$key}
- : $this->collection;
- }
-
- /**
- * Proxy a method call onto the collection.
- *
- * @param string $method
- * @param array $parameters
- * @return mixed
- */
- public function __call($method, $parameters)
- {
- return $this->condition
- ? $this->collection->{$method}(...$parameters)
- : $this->collection;
- }
-}
diff --git a/vendor/illuminate/collections/ItemNotFoundException.php b/vendor/illuminate/collections/ItemNotFoundException.php
deleted file mode 100644
index 05a51d95..00000000
--- a/vendor/illuminate/collections/ItemNotFoundException.php
+++ /dev/null
@@ -1,9 +0,0 @@
-source = $source;
- } elseif (is_null($source)) {
- $this->source = static::empty();
- } else {
- $this->source = $this->getArrayableItems($source);
- }
- }
-
- /**
- * Create a collection with the given range.
- *
- * @param int $from
- * @param int $to
- * @return static
- */
- public static function range($from, $to)
- {
- return new static(function () use ($from, $to) {
- if ($from <= $to) {
- for (; $from <= $to; $from++) {
- yield $from;
- }
- } else {
- for (; $from >= $to; $from--) {
- yield $from;
- }
- }
- });
- }
-
- /**
- * Get all items in the enumerable.
- *
- * @return array
- */
- public function all()
- {
- if (is_array($this->source)) {
- return $this->source;
- }
-
- return iterator_to_array($this->getIterator());
- }
-
- /**
- * Eager load all items into a new lazy collection backed by an array.
- *
- * @return static
- */
- public function eager()
- {
- return new static($this->all());
- }
-
- /**
- * Cache values as they're enumerated.
- *
- * @return static
- */
- public function remember()
- {
- $iterator = $this->getIterator();
-
- $iteratorIndex = 0;
-
- $cache = [];
-
- return new static(function () use ($iterator, &$iteratorIndex, &$cache) {
- for ($index = 0; true; $index++) {
- if (array_key_exists($index, $cache)) {
- yield $cache[$index][0] => $cache[$index][1];
-
- continue;
- }
-
- if ($iteratorIndex < $index) {
- $iterator->next();
-
- $iteratorIndex++;
- }
-
- if (! $iterator->valid()) {
- break;
- }
-
- $cache[$index] = [$iterator->key(), $iterator->current()];
-
- yield $cache[$index][0] => $cache[$index][1];
- }
- });
- }
-
- /**
- * Get the average value of a given key.
- *
- * @param callable|string|null $callback
- * @return mixed
- */
- public function avg($callback = null)
- {
- return $this->collect()->avg($callback);
- }
-
- /**
- * Get the median of a given key.
- *
- * @param string|array|null $key
- * @return mixed
- */
- public function median($key = null)
- {
- return $this->collect()->median($key);
- }
-
- /**
- * Get the mode of a given key.
- *
- * @param string|array|null $key
- * @return array|null
- */
- public function mode($key = null)
- {
- return $this->collect()->mode($key);
- }
-
- /**
- * Collapse the collection of items into a single array.
- *
- * @return static
- */
- public function collapse()
- {
- return new static(function () {
- foreach ($this as $values) {
- if (is_array($values) || $values instanceof Enumerable) {
- foreach ($values as $value) {
- yield $value;
- }
- }
- }
- });
- }
-
- /**
- * Determine if an item exists in the enumerable.
- *
- * @param mixed $key
- * @param mixed $operator
- * @param mixed $value
- * @return bool
- */
- public function contains($key, $operator = null, $value = null)
- {
- if (func_num_args() === 1 && $this->useAsCallable($key)) {
- $placeholder = new stdClass;
-
- return $this->first($key, $placeholder) !== $placeholder;
- }
-
- if (func_num_args() === 1) {
- $needle = $key;
-
- foreach ($this as $value) {
- if ($value == $needle) {
- return true;
- }
- }
-
- return false;
- }
-
- return $this->contains($this->operatorForWhere(...func_get_args()));
- }
-
- /**
- * Cross join the given iterables, returning all possible permutations.
- *
- * @param array ...$arrays
- * @return static
- */
- public function crossJoin(...$arrays)
- {
- return $this->passthru('crossJoin', func_get_args());
- }
-
- /**
- * Count the number of items in the collection by a field or using a callback.
- *
- * @param callable|string $countBy
- * @return static
- */
- public function countBy($countBy = null)
- {
- $countBy = is_null($countBy)
- ? $this->identity()
- : $this->valueRetriever($countBy);
-
- return new static(function () use ($countBy) {
- $counts = [];
-
- foreach ($this as $key => $value) {
- $group = $countBy($value, $key);
-
- if (empty($counts[$group])) {
- $counts[$group] = 0;
- }
-
- $counts[$group]++;
- }
-
- yield from $counts;
- });
- }
-
- /**
- * Get the items that are not present in the given items.
- *
- * @param mixed $items
- * @return static
- */
- public function diff($items)
- {
- return $this->passthru('diff', func_get_args());
- }
-
- /**
- * Get the items that are not present in the given items, using the callback.
- *
- * @param mixed $items
- * @param callable $callback
- * @return static
- */
- public function diffUsing($items, callable $callback)
- {
- return $this->passthru('diffUsing', func_get_args());
- }
-
- /**
- * Get the items whose keys and values are not present in the given items.
- *
- * @param mixed $items
- * @return static
- */
- public function diffAssoc($items)
- {
- return $this->passthru('diffAssoc', func_get_args());
- }
-
- /**
- * Get the items whose keys and values are not present in the given items, using the callback.
- *
- * @param mixed $items
- * @param callable $callback
- * @return static
- */
- public function diffAssocUsing($items, callable $callback)
- {
- return $this->passthru('diffAssocUsing', func_get_args());
- }
-
- /**
- * Get the items whose keys are not present in the given items.
- *
- * @param mixed $items
- * @return static
- */
- public function diffKeys($items)
- {
- return $this->passthru('diffKeys', func_get_args());
- }
-
- /**
- * Get the items whose keys are not present in the given items, using the callback.
- *
- * @param mixed $items
- * @param callable $callback
- * @return static
- */
- public function diffKeysUsing($items, callable $callback)
- {
- return $this->passthru('diffKeysUsing', func_get_args());
- }
-
- /**
- * Retrieve duplicate items.
- *
- * @param callable|string|null $callback
- * @param bool $strict
- * @return static
- */
- public function duplicates($callback = null, $strict = false)
- {
- return $this->passthru('duplicates', func_get_args());
- }
-
- /**
- * Retrieve duplicate items using strict comparison.
- *
- * @param callable|string|null $callback
- * @return static
- */
- public function duplicatesStrict($callback = null)
- {
- return $this->passthru('duplicatesStrict', func_get_args());
- }
-
- /**
- * Get all items except for those with the specified keys.
- *
- * @param mixed $keys
- * @return static
- */
- public function except($keys)
- {
- return $this->passthru('except', func_get_args());
- }
-
- /**
- * Run a filter over each of the items.
- *
- * @param callable|null $callback
- * @return static
- */
- public function filter(callable $callback = null)
- {
- if (is_null($callback)) {
- $callback = function ($value) {
- return (bool) $value;
- };
- }
-
- return new static(function () use ($callback) {
- foreach ($this as $key => $value) {
- if ($callback($value, $key)) {
- yield $key => $value;
- }
- }
- });
- }
-
- /**
- * Get the first item from the enumerable passing the given truth test.
- *
- * @param callable|null $callback
- * @param mixed $default
- * @return mixed
- */
- public function first(callable $callback = null, $default = null)
- {
- $iterator = $this->getIterator();
-
- if (is_null($callback)) {
- if (! $iterator->valid()) {
- return value($default);
- }
-
- return $iterator->current();
- }
-
- foreach ($iterator as $key => $value) {
- if ($callback($value, $key)) {
- return $value;
- }
- }
-
- return value($default);
- }
-
- /**
- * Get a flattened list of the items in the collection.
- *
- * @param int $depth
- * @return static
- */
- public function flatten($depth = INF)
- {
- $instance = new static(function () use ($depth) {
- foreach ($this as $item) {
- if (! is_array($item) && ! $item instanceof Enumerable) {
- yield $item;
- } elseif ($depth === 1) {
- yield from $item;
- } else {
- yield from (new static($item))->flatten($depth - 1);
- }
- }
- });
-
- return $instance->values();
- }
-
- /**
- * Flip the items in the collection.
- *
- * @return static
- */
- public function flip()
- {
- return new static(function () {
- foreach ($this as $key => $value) {
- yield $value => $key;
- }
- });
- }
-
- /**
- * Get an item by key.
- *
- * @param mixed $key
- * @param mixed $default
- * @return mixed
- */
- public function get($key, $default = null)
- {
- if (is_null($key)) {
- return;
- }
-
- foreach ($this as $outerKey => $outerValue) {
- if ($outerKey == $key) {
- return $outerValue;
- }
- }
-
- return value($default);
- }
-
- /**
- * Group an associative array by a field or using a callback.
- *
- * @param array|callable|string $groupBy
- * @param bool $preserveKeys
- * @return static
- */
- public function groupBy($groupBy, $preserveKeys = false)
- {
- return $this->passthru('groupBy', func_get_args());
- }
-
- /**
- * Key an associative array by a field or using a callback.
- *
- * @param callable|string $keyBy
- * @return static
- */
- public function keyBy($keyBy)
- {
- return new static(function () use ($keyBy) {
- $keyBy = $this->valueRetriever($keyBy);
-
- foreach ($this as $key => $item) {
- $resolvedKey = $keyBy($item, $key);
-
- if (is_object($resolvedKey)) {
- $resolvedKey = (string) $resolvedKey;
- }
-
- yield $resolvedKey => $item;
- }
- });
- }
-
- /**
- * Determine if an item exists in the collection by key.
- *
- * @param mixed $key
- * @return bool
- */
- public function has($key)
- {
- $keys = array_flip(is_array($key) ? $key : func_get_args());
- $count = count($keys);
-
- foreach ($this as $key => $value) {
- if (array_key_exists($key, $keys) && --$count == 0) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Determine if any of the keys exist in the collection.
- *
- * @param mixed $key
- * @return bool
- */
- public function hasAny($key)
- {
- $keys = array_flip(is_array($key) ? $key : func_get_args());
-
- foreach ($this as $key => $value) {
- if (array_key_exists($key, $keys)) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Concatenate values of a given key as a string.
- *
- * @param string $value
- * @param string|null $glue
- * @return string
- */
- public function implode($value, $glue = null)
- {
- return $this->collect()->implode(...func_get_args());
- }
-
- /**
- * Intersect the collection with the given items.
- *
- * @param mixed $items
- * @return static
- */
- public function intersect($items)
- {
- return $this->passthru('intersect', func_get_args());
- }
-
- /**
- * Intersect the collection with the given items by key.
- *
- * @param mixed $items
- * @return static
- */
- public function intersectByKeys($items)
- {
- return $this->passthru('intersectByKeys', func_get_args());
- }
-
- /**
- * Determine if the items are empty or not.
- *
- * @return bool
- */
- public function isEmpty()
- {
- return ! $this->getIterator()->valid();
- }
-
- /**
- * Determine if the collection contains a single item.
- *
- * @return bool
- */
- public function containsOneItem()
- {
- return $this->take(2)->count() === 1;
- }
-
- /**
- * Join all items from the collection using a string. The final items can use a separate glue string.
- *
- * @param string $glue
- * @param string $finalGlue
- * @return string
- */
- public function join($glue, $finalGlue = '')
- {
- return $this->collect()->join(...func_get_args());
- }
-
- /**
- * Get the keys of the collection items.
- *
- * @return static
- */
- public function keys()
- {
- return new static(function () {
- foreach ($this as $key => $value) {
- yield $key;
- }
- });
- }
-
- /**
- * Get the last item from the collection.
- *
- * @param callable|null $callback
- * @param mixed $default
- * @return mixed
- */
- public function last(callable $callback = null, $default = null)
- {
- $needle = $placeholder = new stdClass;
-
- foreach ($this as $key => $value) {
- if (is_null($callback) || $callback($value, $key)) {
- $needle = $value;
- }
- }
-
- return $needle === $placeholder ? value($default) : $needle;
- }
-
- /**
- * Get the values of a given key.
- *
- * @param string|array $value
- * @param string|null $key
- * @return static
- */
- public function pluck($value, $key = null)
- {
- return new static(function () use ($value, $key) {
- [$value, $key] = $this->explodePluckParameters($value, $key);
-
- foreach ($this as $item) {
- $itemValue = data_get($item, $value);
-
- if (is_null($key)) {
- yield $itemValue;
- } else {
- $itemKey = data_get($item, $key);
-
- if (is_object($itemKey) && method_exists($itemKey, '__toString')) {
- $itemKey = (string) $itemKey;
- }
-
- yield $itemKey => $itemValue;
- }
- }
- });
- }
-
- /**
- * Run a map over each of the items.
- *
- * @param callable $callback
- * @return static
- */
- public function map(callable $callback)
- {
- return new static(function () use ($callback) {
- foreach ($this as $key => $value) {
- yield $key => $callback($value, $key);
- }
- });
- }
-
- /**
- * Run a dictionary map over the items.
- *
- * The callback should return an associative array with a single key/value pair.
- *
- * @param callable $callback
- * @return static
- */
- public function mapToDictionary(callable $callback)
- {
- return $this->passthru('mapToDictionary', func_get_args());
- }
-
- /**
- * Run an associative map over each of the items.
- *
- * The callback should return an associative array with a single key/value pair.
- *
- * @param callable $callback
- * @return static
- */
- public function mapWithKeys(callable $callback)
- {
- return new static(function () use ($callback) {
- foreach ($this as $key => $value) {
- yield from $callback($value, $key);
- }
- });
- }
-
- /**
- * Merge the collection with the given items.
- *
- * @param mixed $items
- * @return static
- */
- public function merge($items)
- {
- return $this->passthru('merge', func_get_args());
- }
-
- /**
- * Recursively merge the collection with the given items.
- *
- * @param mixed $items
- * @return static
- */
- public function mergeRecursive($items)
- {
- return $this->passthru('mergeRecursive', func_get_args());
- }
-
- /**
- * Create a collection by using this collection for keys and another for its values.
- *
- * @param mixed $values
- * @return static
- */
- public function combine($values)
- {
- return new static(function () use ($values) {
- $values = $this->makeIterator($values);
-
- $errorMessage = 'Both parameters should have an equal number of elements';
-
- foreach ($this as $key) {
- if (! $values->valid()) {
- trigger_error($errorMessage, E_USER_WARNING);
-
- break;
- }
-
- yield $key => $values->current();
-
- $values->next();
- }
-
- if ($values->valid()) {
- trigger_error($errorMessage, E_USER_WARNING);
- }
- });
- }
-
- /**
- * Union the collection with the given items.
- *
- * @param mixed $items
- * @return static
- */
- public function union($items)
- {
- return $this->passthru('union', func_get_args());
- }
-
- /**
- * Create a new collection consisting of every n-th element.
- *
- * @param int $step
- * @param int $offset
- * @return static
- */
- public function nth($step, $offset = 0)
- {
- return new static(function () use ($step, $offset) {
- $position = 0;
-
- foreach ($this as $item) {
- if ($position % $step === $offset) {
- yield $item;
- }
-
- $position++;
- }
- });
- }
-
- /**
- * Get the items with the specified keys.
- *
- * @param mixed $keys
- * @return static
- */
- public function only($keys)
- {
- if ($keys instanceof Enumerable) {
- $keys = $keys->all();
- } elseif (! is_null($keys)) {
- $keys = is_array($keys) ? $keys : func_get_args();
- }
-
- return new static(function () use ($keys) {
- if (is_null($keys)) {
- yield from $this;
- } else {
- $keys = array_flip($keys);
-
- foreach ($this as $key => $value) {
- if (array_key_exists($key, $keys)) {
- yield $key => $value;
-
- unset($keys[$key]);
-
- if (empty($keys)) {
- break;
- }
- }
- }
- }
- });
- }
-
- /**
- * Push all of the given items onto the collection.
- *
- * @param iterable $source
- * @return static
- */
- public function concat($source)
- {
- return (new static(function () use ($source) {
- yield from $this;
- yield from $source;
- }))->values();
- }
-
- /**
- * Get one or a specified number of items randomly from the collection.
- *
- * @param int|null $number
- * @return static|mixed
- *
- * @throws \InvalidArgumentException
- */
- public function random($number = null)
- {
- $result = $this->collect()->random(...func_get_args());
-
- return is_null($number) ? $result : new static($result);
- }
-
- /**
- * Replace the collection items with the given items.
- *
- * @param mixed $items
- * @return static
- */
- public function replace($items)
- {
- return new static(function () use ($items) {
- $items = $this->getArrayableItems($items);
-
- foreach ($this as $key => $value) {
- if (array_key_exists($key, $items)) {
- yield $key => $items[$key];
-
- unset($items[$key]);
- } else {
- yield $key => $value;
- }
- }
-
- foreach ($items as $key => $value) {
- yield $key => $value;
- }
- });
- }
-
- /**
- * Recursively replace the collection items with the given items.
- *
- * @param mixed $items
- * @return static
- */
- public function replaceRecursive($items)
- {
- return $this->passthru('replaceRecursive', func_get_args());
- }
-
- /**
- * Reverse items order.
- *
- * @return static
- */
- public function reverse()
- {
- return $this->passthru('reverse', func_get_args());
- }
-
- /**
- * Search the collection for a given value and return the corresponding key if successful.
- *
- * @param mixed $value
- * @param bool $strict
- * @return mixed
- */
- public function search($value, $strict = false)
- {
- $predicate = $this->useAsCallable($value)
- ? $value
- : function ($item) use ($value, $strict) {
- return $strict ? $item === $value : $item == $value;
- };
-
- foreach ($this as $key => $item) {
- if ($predicate($item, $key)) {
- return $key;
- }
- }
-
- return false;
- }
-
- /**
- * Shuffle the items in the collection.
- *
- * @param int|null $seed
- * @return static
- */
- public function shuffle($seed = null)
- {
- return $this->passthru('shuffle', func_get_args());
- }
-
- /**
- * Create chunks representing a "sliding window" view of the items in the collection.
- *
- * @param int $size
- * @param int $step
- * @return static
- */
- public function sliding($size = 2, $step = 1)
- {
- return new static(function () use ($size, $step) {
- $iterator = $this->getIterator();
-
- $chunk = [];
-
- while ($iterator->valid()) {
- $chunk[$iterator->key()] = $iterator->current();
-
- if (count($chunk) == $size) {
- yield tap(new static($chunk), function () use (&$chunk, $step) {
- $chunk = array_slice($chunk, $step, null, true);
- });
-
- // If the $step between chunks is bigger than each chunk's $size
- // we will skip the extra items (which should never be in any
- // chunk) before we continue to the next chunk in the loop.
- if ($step > $size) {
- $skip = $step - $size;
-
- for ($i = 0; $i < $skip && $iterator->valid(); $i++) {
- $iterator->next();
- }
- }
- }
-
- $iterator->next();
- }
- });
- }
-
- /**
- * Skip the first {$count} items.
- *
- * @param int $count
- * @return static
- */
- public function skip($count)
- {
- return new static(function () use ($count) {
- $iterator = $this->getIterator();
-
- while ($iterator->valid() && $count--) {
- $iterator->next();
- }
-
- while ($iterator->valid()) {
- yield $iterator->key() => $iterator->current();
-
- $iterator->next();
- }
- });
- }
-
- /**
- * Skip items in the collection until the given condition is met.
- *
- * @param mixed $value
- * @return static
- */
- public function skipUntil($value)
- {
- $callback = $this->useAsCallable($value) ? $value : $this->equality($value);
-
- return $this->skipWhile($this->negate($callback));
- }
-
- /**
- * Skip items in the collection while the given condition is met.
- *
- * @param mixed $value
- * @return static
- */
- public function skipWhile($value)
- {
- $callback = $this->useAsCallable($value) ? $value : $this->equality($value);
-
- return new static(function () use ($callback) {
- $iterator = $this->getIterator();
-
- while ($iterator->valid() && $callback($iterator->current(), $iterator->key())) {
- $iterator->next();
- }
-
- while ($iterator->valid()) {
- yield $iterator->key() => $iterator->current();
-
- $iterator->next();
- }
- });
- }
-
- /**
- * Get a slice of items from the enumerable.
- *
- * @param int $offset
- * @param int|null $length
- * @return static
- */
- public function slice($offset, $length = null)
- {
- if ($offset < 0 || $length < 0) {
- return $this->passthru('slice', func_get_args());
- }
-
- $instance = $this->skip($offset);
-
- return is_null($length) ? $instance : $instance->take($length);
- }
-
- /**
- * Split a collection into a certain number of groups.
- *
- * @param int $numberOfGroups
- * @return static
- */
- public function split($numberOfGroups)
- {
- return $this->passthru('split', func_get_args());
- }
-
- /**
- * Get the first item in the collection, but only if exactly one item exists. Otherwise, throw an exception.
- *
- * @param mixed $key
- * @param mixed $operator
- * @param mixed $value
- * @return mixed
- *
- * @throws \Illuminate\Support\ItemNotFoundException
- * @throws \Illuminate\Support\MultipleItemsFoundException
- */
- public function sole($key = null, $operator = null, $value = null)
- {
- $filter = func_num_args() > 1
- ? $this->operatorForWhere(...func_get_args())
- : $key;
-
- return $this
- ->when($filter)
- ->filter($filter)
- ->take(2)
- ->collect()
- ->sole();
- }
-
- /**
- * Get the first item in the collection but throw an exception if no matching items exist.
- *
- * @param mixed $key
- * @param mixed $operator
- * @param mixed $value
- * @return mixed
- *
- * @throws \Illuminate\Support\ItemNotFoundException
- */
- public function firstOrFail($key = null, $operator = null, $value = null)
- {
- $filter = func_num_args() > 1
- ? $this->operatorForWhere(...func_get_args())
- : $key;
-
- return $this
- ->when($filter)
- ->filter($filter)
- ->take(1)
- ->collect()
- ->firstOrFail();
- }
-
- /**
- * Chunk the collection into chunks of the given size.
- *
- * @param int $size
- * @return static
- */
- public function chunk($size)
- {
- if ($size <= 0) {
- return static::empty();
- }
-
- return new static(function () use ($size) {
- $iterator = $this->getIterator();
-
- while ($iterator->valid()) {
- $chunk = [];
-
- while (true) {
- $chunk[$iterator->key()] = $iterator->current();
-
- if (count($chunk) < $size) {
- $iterator->next();
-
- if (! $iterator->valid()) {
- break;
- }
- } else {
- break;
- }
- }
-
- yield new static($chunk);
-
- $iterator->next();
- }
- });
- }
-
- /**
- * Split a collection into a certain number of groups, and fill the first groups completely.
- *
- * @param int $numberOfGroups
- * @return static
- */
- public function splitIn($numberOfGroups)
- {
- return $this->chunk(ceil($this->count() / $numberOfGroups));
- }
-
- /**
- * Chunk the collection into chunks with a callback.
- *
- * @param callable $callback
- * @return static
- */
- public function chunkWhile(callable $callback)
- {
- return new static(function () use ($callback) {
- $iterator = $this->getIterator();
-
- $chunk = new Collection;
-
- if ($iterator->valid()) {
- $chunk[$iterator->key()] = $iterator->current();
-
- $iterator->next();
- }
-
- while ($iterator->valid()) {
- if (! $callback($iterator->current(), $iterator->key(), $chunk)) {
- yield new static($chunk);
-
- $chunk = new Collection;
- }
-
- $chunk[$iterator->key()] = $iterator->current();
-
- $iterator->next();
- }
-
- if ($chunk->isNotEmpty()) {
- yield new static($chunk);
- }
- });
- }
-
- /**
- * Sort through each item with a callback.
- *
- * @param callable|null|int $callback
- * @return static
- */
- public function sort($callback = null)
- {
- return $this->passthru('sort', func_get_args());
- }
-
- /**
- * Sort items in descending order.
- *
- * @param int $options
- * @return static
- */
- public function sortDesc($options = SORT_REGULAR)
- {
- return $this->passthru('sortDesc', func_get_args());
- }
-
- /**
- * Sort the collection using the given callback.
- *
- * @param callable|string $callback
- * @param int $options
- * @param bool $descending
- * @return static
- */
- public function sortBy($callback, $options = SORT_REGULAR, $descending = false)
- {
- return $this->passthru('sortBy', func_get_args());
- }
-
- /**
- * Sort the collection in descending order using the given callback.
- *
- * @param callable|string $callback
- * @param int $options
- * @return static
- */
- public function sortByDesc($callback, $options = SORT_REGULAR)
- {
- return $this->passthru('sortByDesc', func_get_args());
- }
-
- /**
- * Sort the collection keys.
- *
- * @param int $options
- * @param bool $descending
- * @return static
- */
- public function sortKeys($options = SORT_REGULAR, $descending = false)
- {
- return $this->passthru('sortKeys', func_get_args());
- }
-
- /**
- * Sort the collection keys in descending order.
- *
- * @param int $options
- * @return static
- */
- public function sortKeysDesc($options = SORT_REGULAR)
- {
- return $this->passthru('sortKeysDesc', func_get_args());
- }
-
- /**
- * Take the first or last {$limit} items.
- *
- * @param int $limit
- * @return static
- */
- public function take($limit)
- {
- if ($limit < 0) {
- return $this->passthru('take', func_get_args());
- }
-
- return new static(function () use ($limit) {
- $iterator = $this->getIterator();
-
- while ($limit--) {
- if (! $iterator->valid()) {
- break;
- }
-
- yield $iterator->key() => $iterator->current();
-
- if ($limit) {
- $iterator->next();
- }
- }
- });
- }
-
- /**
- * Take items in the collection until the given condition is met.
- *
- * @param mixed $value
- * @return static
- */
- public function takeUntil($value)
- {
- $callback = $this->useAsCallable($value) ? $value : $this->equality($value);
-
- return new static(function () use ($callback) {
- foreach ($this as $key => $item) {
- if ($callback($item, $key)) {
- break;
- }
-
- yield $key => $item;
- }
- });
- }
-
- /**
- * Take items in the collection until a given point in time.
- *
- * @param \DateTimeInterface $timeout
- * @return static
- */
- public function takeUntilTimeout(DateTimeInterface $timeout)
- {
- $timeout = $timeout->getTimestamp();
-
- return $this->takeWhile(function () use ($timeout) {
- return $this->now() < $timeout;
- });
- }
-
- /**
- * Take items in the collection while the given condition is met.
- *
- * @param mixed $value
- * @return static
- */
- public function takeWhile($value)
- {
- $callback = $this->useAsCallable($value) ? $value : $this->equality($value);
-
- return $this->takeUntil(function ($item, $key) use ($callback) {
- return ! $callback($item, $key);
- });
- }
-
- /**
- * Pass each item in the collection to the given callback, lazily.
- *
- * @param callable $callback
- * @return static
- */
- public function tapEach(callable $callback)
- {
- return new static(function () use ($callback) {
- foreach ($this as $key => $value) {
- $callback($value, $key);
-
- yield $key => $value;
- }
- });
- }
-
- /**
- * Return only unique items from the collection array.
- *
- * @param string|callable|null $key
- * @param bool $strict
- * @return static
- */
- public function unique($key = null, $strict = false)
- {
- $callback = $this->valueRetriever($key);
-
- return new static(function () use ($callback, $strict) {
- $exists = [];
-
- foreach ($this as $key => $item) {
- if (! in_array($id = $callback($item, $key), $exists, $strict)) {
- yield $key => $item;
-
- $exists[] = $id;
- }
- }
- });
- }
-
- /**
- * Reset the keys on the underlying array.
- *
- * @return static
- */
- public function values()
- {
- return new static(function () {
- foreach ($this as $item) {
- yield $item;
- }
- });
- }
-
- /**
- * Zip the collection together with one or more arrays.
- *
- * e.g. new LazyCollection([1, 2, 3])->zip([4, 5, 6]);
- * => [[1, 4], [2, 5], [3, 6]]
- *
- * @param mixed ...$items
- * @return static
- */
- public function zip($items)
- {
- $iterables = func_get_args();
-
- return new static(function () use ($iterables) {
- $iterators = Collection::make($iterables)->map(function ($iterable) {
- return $this->makeIterator($iterable);
- })->prepend($this->getIterator());
-
- while ($iterators->contains->valid()) {
- yield new static($iterators->map->current());
-
- $iterators->each->next();
- }
- });
- }
-
- /**
- * Pad collection to the specified length with a value.
- *
- * @param int $size
- * @param mixed $value
- * @return static
- */
- public function pad($size, $value)
- {
- if ($size < 0) {
- return $this->passthru('pad', func_get_args());
- }
-
- return new static(function () use ($size, $value) {
- $yielded = 0;
-
- foreach ($this as $index => $item) {
- yield $index => $item;
-
- $yielded++;
- }
-
- while ($yielded++ < $size) {
- yield $value;
- }
- });
- }
-
- /**
- * Get the values iterator.
- *
- * @return \Traversable
- */
- #[\ReturnTypeWillChange]
- public function getIterator()
- {
- return $this->makeIterator($this->source);
- }
-
- /**
- * Count the number of items in the collection.
- *
- * @return int
- */
- #[\ReturnTypeWillChange]
- public function count()
- {
- if (is_array($this->source)) {
- return count($this->source);
- }
-
- return iterator_count($this->getIterator());
- }
-
- /**
- * Make an iterator from the given source.
- *
- * @param mixed $source
- * @return \Traversable
- */
- protected function makeIterator($source)
- {
- if ($source instanceof IteratorAggregate) {
- return $source->getIterator();
- }
-
- if (is_array($source)) {
- return new ArrayIterator($source);
- }
-
- return $source();
- }
-
- /**
- * Explode the "value" and "key" arguments passed to "pluck".
- *
- * @param string|array $value
- * @param string|array|null $key
- * @return array
- */
- protected function explodePluckParameters($value, $key)
- {
- $value = is_string($value) ? explode('.', $value) : $value;
-
- $key = is_null($key) || is_array($key) ? $key : explode('.', $key);
-
- return [$value, $key];
- }
-
- /**
- * Pass this lazy collection through a method on the collection class.
- *
- * @param string $method
- * @param array $params
- * @return static
- */
- protected function passthru($method, array $params)
- {
- return new static(function () use ($method, $params) {
- yield from $this->collect()->$method(...$params);
- });
- }
-
- /**
- * Get the current time.
- *
- * @return int
- */
- protected function now()
- {
- return time();
- }
-}
diff --git a/vendor/illuminate/collections/MultipleItemsFoundException.php b/vendor/illuminate/collections/MultipleItemsFoundException.php
deleted file mode 100644
index 944b2dc6..00000000
--- a/vendor/illuminate/collections/MultipleItemsFoundException.php
+++ /dev/null
@@ -1,9 +0,0 @@
-all() : $value;
- }
-
- /**
- * Create a new instance with no items.
- *
- * @return static
- */
- public static function empty()
- {
- return new static([]);
- }
-
- /**
- * Create a new collection by invoking the callback a given amount of times.
- *
- * @param int $number
- * @param callable|null $callback
- * @return static
- */
- public static function times($number, callable $callback = null)
- {
- if ($number < 1) {
- return new static;
- }
-
- return static::range(1, $number)
- ->when($callback)
- ->map($callback);
- }
-
- /**
- * Alias for the "avg" method.
- *
- * @param callable|string|null $callback
- * @return mixed
- */
- public function average($callback = null)
- {
- return $this->avg($callback);
- }
-
- /**
- * Alias for the "contains" method.
- *
- * @param mixed $key
- * @param mixed $operator
- * @param mixed $value
- * @return bool
- */
- public function some($key, $operator = null, $value = null)
- {
- return $this->contains(...func_get_args());
- }
-
- /**
- * Determine if an item exists, using strict comparison.
- *
- * @param mixed $key
- * @param mixed $value
- * @return bool
- */
- public function containsStrict($key, $value = null)
- {
- if (func_num_args() === 2) {
- return $this->contains(function ($item) use ($key, $value) {
- return data_get($item, $key) === $value;
- });
- }
-
- if ($this->useAsCallable($key)) {
- return ! is_null($this->first($key));
- }
-
- foreach ($this as $item) {
- if ($item === $key) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Dump the items and end the script.
- *
- * @param mixed ...$args
- * @return void
- */
- public function dd(...$args)
- {
- $this->dump(...$args);
-
- exit(1);
- }
-
- /**
- * Dump the items.
- *
- * @return $this
- */
- public function dump()
- {
- (new Collection(func_get_args()))
- ->push($this->all())
- ->each(function ($item) {
- VarDumper::dump($item);
- });
-
- return $this;
- }
-
- /**
- * Execute a callback over each item.
- *
- * @param callable $callback
- * @return $this
- */
- public function each(callable $callback)
- {
- foreach ($this as $key => $item) {
- if ($callback($item, $key) === false) {
- break;
- }
- }
-
- return $this;
- }
-
- /**
- * Execute a callback over each nested chunk of items.
- *
- * @param callable $callback
- * @return static
- */
- public function eachSpread(callable $callback)
- {
- return $this->each(function ($chunk, $key) use ($callback) {
- $chunk[] = $key;
-
- return $callback(...$chunk);
- });
- }
-
- /**
- * Determine if all items pass the given truth test.
- *
- * @param string|callable $key
- * @param mixed $operator
- * @param mixed $value
- * @return bool
- */
- public function every($key, $operator = null, $value = null)
- {
- if (func_num_args() === 1) {
- $callback = $this->valueRetriever($key);
-
- foreach ($this as $k => $v) {
- if (! $callback($v, $k)) {
- return false;
- }
- }
-
- return true;
- }
-
- return $this->every($this->operatorForWhere(...func_get_args()));
- }
-
- /**
- * Get the first item by the given key value pair.
- *
- * @param string $key
- * @param mixed $operator
- * @param mixed $value
- * @return mixed
- */
- public function firstWhere($key, $operator = null, $value = null)
- {
- return $this->first($this->operatorForWhere(...func_get_args()));
- }
-
- /**
- * Determine if the collection is not empty.
- *
- * @return bool
- */
- public function isNotEmpty()
- {
- return ! $this->isEmpty();
- }
-
- /**
- * Run a map over each nested chunk of items.
- *
- * @param callable $callback
- * @return static
- */
- public function mapSpread(callable $callback)
- {
- return $this->map(function ($chunk, $key) use ($callback) {
- $chunk[] = $key;
-
- return $callback(...$chunk);
- });
- }
-
- /**
- * Run a grouping map over the items.
- *
- * The callback should return an associative array with a single key/value pair.
- *
- * @param callable $callback
- * @return static
- */
- public function mapToGroups(callable $callback)
- {
- $groups = $this->mapToDictionary($callback);
-
- return $groups->map([$this, 'make']);
- }
-
- /**
- * Map a collection and flatten the result by a single level.
- *
- * @param callable $callback
- * @return static
- */
- public function flatMap(callable $callback)
- {
- return $this->map($callback)->collapse();
- }
-
- /**
- * Map the values into a new class.
- *
- * @param string $class
- * @return static
- */
- public function mapInto($class)
- {
- return $this->map(function ($value, $key) use ($class) {
- return new $class($value, $key);
- });
- }
-
- /**
- * Get the min value of a given key.
- *
- * @param callable|string|null $callback
- * @return mixed
- */
- public function min($callback = null)
- {
- $callback = $this->valueRetriever($callback);
-
- return $this->map(function ($value) use ($callback) {
- return $callback($value);
- })->filter(function ($value) {
- return ! is_null($value);
- })->reduce(function ($result, $value) {
- return is_null($result) || $value < $result ? $value : $result;
- });
- }
-
- /**
- * Get the max value of a given key.
- *
- * @param callable|string|null $callback
- * @return mixed
- */
- public function max($callback = null)
- {
- $callback = $this->valueRetriever($callback);
-
- return $this->filter(function ($value) {
- return ! is_null($value);
- })->reduce(function ($result, $item) use ($callback) {
- $value = $callback($item);
-
- return is_null($result) || $value > $result ? $value : $result;
- });
- }
-
- /**
- * "Paginate" the collection by slicing it into a smaller collection.
- *
- * @param int $page
- * @param int $perPage
- * @return static
- */
- public function forPage($page, $perPage)
- {
- $offset = max(0, ($page - 1) * $perPage);
-
- return $this->slice($offset, $perPage);
- }
-
- /**
- * Partition the collection into two arrays using the given callback or key.
- *
- * @param callable|string $key
- * @param mixed $operator
- * @param mixed $value
- * @return static
- */
- public function partition($key, $operator = null, $value = null)
- {
- $passed = [];
- $failed = [];
-
- $callback = func_num_args() === 1
- ? $this->valueRetriever($key)
- : $this->operatorForWhere(...func_get_args());
-
- foreach ($this as $key => $item) {
- if ($callback($item, $key)) {
- $passed[$key] = $item;
- } else {
- $failed[$key] = $item;
- }
- }
-
- return new static([new static($passed), new static($failed)]);
- }
-
- /**
- * Get the sum of the given values.
- *
- * @param callable|string|null $callback
- * @return mixed
- */
- public function sum($callback = null)
- {
- $callback = is_null($callback)
- ? $this->identity()
- : $this->valueRetriever($callback);
-
- return $this->reduce(function ($result, $item) use ($callback) {
- return $result + $callback($item);
- }, 0);
- }
-
- /**
- * Apply the callback if the value is truthy.
- *
- * @param bool|mixed $value
- * @param callable|null $callback
- * @param callable|null $default
- * @return static|mixed
- */
- public function when($value, callable $callback = null, callable $default = null)
- {
- if (! $callback) {
- return new HigherOrderWhenProxy($this, $value);
- }
-
- if ($value) {
- return $callback($this, $value);
- } elseif ($default) {
- return $default($this, $value);
- }
-
- return $this;
- }
-
- /**
- * Apply the callback if the collection is empty.
- *
- * @param callable $callback
- * @param callable|null $default
- * @return static|mixed
- */
- public function whenEmpty(callable $callback, callable $default = null)
- {
- return $this->when($this->isEmpty(), $callback, $default);
- }
-
- /**
- * Apply the callback if the collection is not empty.
- *
- * @param callable $callback
- * @param callable|null $default
- * @return static|mixed
- */
- public function whenNotEmpty(callable $callback, callable $default = null)
- {
- return $this->when($this->isNotEmpty(), $callback, $default);
- }
-
- /**
- * Apply the callback if the value is falsy.
- *
- * @param bool $value
- * @param callable $callback
- * @param callable|null $default
- * @return static|mixed
- */
- public function unless($value, callable $callback, callable $default = null)
- {
- return $this->when(! $value, $callback, $default);
- }
-
- /**
- * Apply the callback unless the collection is empty.
- *
- * @param callable $callback
- * @param callable|null $default
- * @return static|mixed
- */
- public function unlessEmpty(callable $callback, callable $default = null)
- {
- return $this->whenNotEmpty($callback, $default);
- }
-
- /**
- * Apply the callback unless the collection is not empty.
- *
- * @param callable $callback
- * @param callable|null $default
- * @return static|mixed
- */
- public function unlessNotEmpty(callable $callback, callable $default = null)
- {
- return $this->whenEmpty($callback, $default);
- }
-
- /**
- * Filter items by the given key value pair.
- *
- * @param string $key
- * @param mixed $operator
- * @param mixed $value
- * @return static
- */
- public function where($key, $operator = null, $value = null)
- {
- return $this->filter($this->operatorForWhere(...func_get_args()));
- }
-
- /**
- * Filter items where the value for the given key is null.
- *
- * @param string|null $key
- * @return static
- */
- public function whereNull($key = null)
- {
- return $this->whereStrict($key, null);
- }
-
- /**
- * Filter items where the value for the given key is not null.
- *
- * @param string|null $key
- * @return static
- */
- public function whereNotNull($key = null)
- {
- return $this->where($key, '!==', null);
- }
-
- /**
- * Filter items by the given key value pair using strict comparison.
- *
- * @param string $key
- * @param mixed $value
- * @return static
- */
- public function whereStrict($key, $value)
- {
- return $this->where($key, '===', $value);
- }
-
- /**
- * Filter items by the given key value pair.
- *
- * @param string $key
- * @param mixed $values
- * @param bool $strict
- * @return static
- */
- public function whereIn($key, $values, $strict = false)
- {
- $values = $this->getArrayableItems($values);
-
- return $this->filter(function ($item) use ($key, $values, $strict) {
- return in_array(data_get($item, $key), $values, $strict);
- });
- }
-
- /**
- * Filter items by the given key value pair using strict comparison.
- *
- * @param string $key
- * @param mixed $values
- * @return static
- */
- public function whereInStrict($key, $values)
- {
- return $this->whereIn($key, $values, true);
- }
-
- /**
- * Filter items such that the value of the given key is between the given values.
- *
- * @param string $key
- * @param array $values
- * @return static
- */
- public function whereBetween($key, $values)
- {
- return $this->where($key, '>=', reset($values))->where($key, '<=', end($values));
- }
-
- /**
- * Filter items such that the value of the given key is not between the given values.
- *
- * @param string $key
- * @param array $values
- * @return static
- */
- public function whereNotBetween($key, $values)
- {
- return $this->filter(function ($item) use ($key, $values) {
- return data_get($item, $key) < reset($values) || data_get($item, $key) > end($values);
- });
- }
-
- /**
- * Filter items by the given key value pair.
- *
- * @param string $key
- * @param mixed $values
- * @param bool $strict
- * @return static
- */
- public function whereNotIn($key, $values, $strict = false)
- {
- $values = $this->getArrayableItems($values);
-
- return $this->reject(function ($item) use ($key, $values, $strict) {
- return in_array(data_get($item, $key), $values, $strict);
- });
- }
-
- /**
- * Filter items by the given key value pair using strict comparison.
- *
- * @param string $key
- * @param mixed $values
- * @return static
- */
- public function whereNotInStrict($key, $values)
- {
- return $this->whereNotIn($key, $values, true);
- }
-
- /**
- * Filter the items, removing any items that don't match the given type(s).
- *
- * @param string|string[] $type
- * @return static
- */
- public function whereInstanceOf($type)
- {
- return $this->filter(function ($value) use ($type) {
- if (is_array($type)) {
- foreach ($type as $classType) {
- if ($value instanceof $classType) {
- return true;
- }
- }
-
- return false;
- }
-
- return $value instanceof $type;
- });
- }
-
- /**
- * Pass the collection to the given callback and return the result.
- *
- * @param callable $callback
- * @return mixed
- */
- public function pipe(callable $callback)
- {
- return $callback($this);
- }
-
- /**
- * Pass the collection into a new class.
- *
- * @param string $class
- * @return mixed
- */
- public function pipeInto($class)
- {
- return new $class($this);
- }
-
- /**
- * Pass the collection to the given callback and then return it.
- *
- * @param callable $callback
- * @return $this
- */
- public function tap(callable $callback)
- {
- $callback(clone $this);
-
- return $this;
- }
-
- /**
- * Reduce the collection to a single value.
- *
- * @param callable $callback
- * @param mixed $initial
- * @return mixed
- */
- public function reduce(callable $callback, $initial = null)
- {
- $result = $initial;
-
- foreach ($this as $key => $value) {
- $result = $callback($result, $value, $key);
- }
-
- return $result;
- }
-
- /**
- * Reduce the collection to multiple aggregate values.
- *
- * @param callable $callback
- * @param mixed ...$initial
- * @return array
- *
- * @deprecated Use "reduceSpread" instead
- *
- * @throws \UnexpectedValueException
- */
- public function reduceMany(callable $callback, ...$initial)
- {
- return $this->reduceSpread($callback, ...$initial);
- }
-
- /**
- * Reduce the collection to multiple aggregate values.
- *
- * @param callable $callback
- * @param mixed ...$initial
- * @return array
- *
- * @throws \UnexpectedValueException
- */
- public function reduceSpread(callable $callback, ...$initial)
- {
- $result = $initial;
-
- foreach ($this as $key => $value) {
- $result = call_user_func_array($callback, array_merge($result, [$value, $key]));
-
- if (! is_array($result)) {
- throw new UnexpectedValueException(sprintf(
- "%s::reduceMany expects reducer to return an array, but got a '%s' instead.",
- class_basename(static::class), gettype($result)
- ));
- }
- }
-
- return $result;
- }
-
- /**
- * Reduce an associative collection to a single value.
- *
- * @param callable $callback
- * @param mixed $initial
- * @return mixed
- */
- public function reduceWithKeys(callable $callback, $initial = null)
- {
- return $this->reduce($callback, $initial);
- }
-
- /**
- * Create a collection of all elements that do not pass a given truth test.
- *
- * @param callable|mixed $callback
- * @return static
- */
- public function reject($callback = true)
- {
- $useAsCallable = $this->useAsCallable($callback);
-
- return $this->filter(function ($value, $key) use ($callback, $useAsCallable) {
- return $useAsCallable
- ? ! $callback($value, $key)
- : $value != $callback;
- });
- }
-
- /**
- * Return only unique items from the collection array using strict comparison.
- *
- * @param string|callable|null $key
- * @return static
- */
- public function uniqueStrict($key = null)
- {
- return $this->unique($key, true);
- }
-
- /**
- * Collect the values into a collection.
- *
- * @return \Illuminate\Support\Collection
- */
- public function collect()
- {
- return new Collection($this->all());
- }
-
- /**
- * Get the collection of items as a plain array.
- *
- * @return array
- */
- public function toArray()
- {
- return $this->map(function ($value) {
- return $value instanceof Arrayable ? $value->toArray() : $value;
- })->all();
- }
-
- /**
- * Convert the object into something JSON serializable.
- *
- * @return array
- */
- #[\ReturnTypeWillChange]
- public function jsonSerialize()
- {
- return array_map(function ($value) {
- if ($value instanceof JsonSerializable) {
- return $value->jsonSerialize();
- } elseif ($value instanceof Jsonable) {
- return json_decode($value->toJson(), true);
- } elseif ($value instanceof Arrayable) {
- return $value->toArray();
- }
-
- return $value;
- }, $this->all());
- }
-
- /**
- * Get the collection of items as JSON.
- *
- * @param int $options
- * @return string
- */
- public function toJson($options = 0)
- {
- return json_encode($this->jsonSerialize(), $options);
- }
-
- /**
- * Get a CachingIterator instance.
- *
- * @param int $flags
- * @return \CachingIterator
- */
- public function getCachingIterator($flags = CachingIterator::CALL_TOSTRING)
- {
- return new CachingIterator($this->getIterator(), $flags);
- }
-
- /**
- * Convert the collection to its string representation.
- *
- * @return string
- */
- public function __toString()
- {
- return $this->escapeWhenCastingToString
- ? e($this->toJson())
- : $this->toJson();
- }
-
- /**
- * Indicate that the model's string representation should be escaped when __toString is invoked.
- *
- * @param bool $escape
- * @return $this
- */
- public function escapeWhenCastingToString($escape = true)
- {
- $this->escapeWhenCastingToString = $escape;
-
- return $this;
- }
-
- /**
- * Add a method to the list of proxied methods.
- *
- * @param string $method
- * @return void
- */
- public static function proxy($method)
- {
- static::$proxies[] = $method;
- }
-
- /**
- * Dynamically access collection proxies.
- *
- * @param string $key
- * @return mixed
- *
- * @throws \Exception
- */
- public function __get($key)
- {
- if (! in_array($key, static::$proxies)) {
- throw new Exception("Property [{$key}] does not exist on this collection instance.");
- }
-
- return new HigherOrderCollectionProxy($this, $key);
- }
-
- /**
- * Results array of items from Collection or Arrayable.
- *
- * @param mixed $items
- * @return array
- */
- protected function getArrayableItems($items)
- {
- if (is_array($items)) {
- return $items;
- } elseif ($items instanceof Enumerable) {
- return $items->all();
- } elseif ($items instanceof Arrayable) {
- return $items->toArray();
- } elseif ($items instanceof Jsonable) {
- return json_decode($items->toJson(), true);
- } elseif ($items instanceof JsonSerializable) {
- return (array) $items->jsonSerialize();
- } elseif ($items instanceof Traversable) {
- return iterator_to_array($items);
- }
-
- return (array) $items;
- }
-
- /**
- * Get an operator checker callback.
- *
- * @param string $key
- * @param string|null $operator
- * @param mixed $value
- * @return \Closure
- */
- protected function operatorForWhere($key, $operator = null, $value = null)
- {
- if (func_num_args() === 1) {
- $value = true;
-
- $operator = '=';
- }
-
- if (func_num_args() === 2) {
- $value = $operator;
-
- $operator = '=';
- }
-
- return function ($item) use ($key, $operator, $value) {
- $retrieved = data_get($item, $key);
-
- $strings = array_filter([$retrieved, $value], function ($value) {
- return is_string($value) || (is_object($value) && method_exists($value, '__toString'));
- });
-
- if (count($strings) < 2 && count(array_filter([$retrieved, $value], 'is_object')) == 1) {
- return in_array($operator, ['!=', '<>', '!==']);
- }
-
- switch ($operator) {
- default:
- case '=':
- case '==': return $retrieved == $value;
- case '!=':
- case '<>': return $retrieved != $value;
- case '<': return $retrieved < $value;
- case '>': return $retrieved > $value;
- case '<=': return $retrieved <= $value;
- case '>=': return $retrieved >= $value;
- case '===': return $retrieved === $value;
- case '!==': return $retrieved !== $value;
- }
- };
- }
-
- /**
- * Determine if the given value is callable, but not a string.
- *
- * @param mixed $value
- * @return bool
- */
- protected function useAsCallable($value)
- {
- return ! is_string($value) && is_callable($value);
- }
-
- /**
- * Get a value retrieving callback.
- *
- * @param callable|string|null $value
- * @return callable
- */
- protected function valueRetriever($value)
- {
- if ($this->useAsCallable($value)) {
- return $value;
- }
-
- return function ($item) use ($value) {
- return data_get($item, $value);
- };
- }
-
- /**
- * Make a function to check an item's equality.
- *
- * @param mixed $value
- * @return \Closure
- */
- protected function equality($value)
- {
- return function ($item) use ($value) {
- return $item === $value;
- };
- }
-
- /**
- * Make a function using another function, by negating its result.
- *
- * @param \Closure $callback
- * @return \Closure
- */
- protected function negate(Closure $callback)
- {
- return function (...$params) use ($callback) {
- return ! $callback(...$params);
- };
- }
-
- /**
- * Make a function that returns what's passed to it.
- *
- * @return \Closure
- */
- protected function identity()
- {
- return function ($value) {
- return $value;
- };
- }
-}
diff --git a/vendor/illuminate/collections/composer.json b/vendor/illuminate/collections/composer.json
deleted file mode 100644
index cb23d3e4..00000000
--- a/vendor/illuminate/collections/composer.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "name": "illuminate/collections",
- "description": "The Illuminate Collections package.",
- "license": "MIT",
- "homepage": "https://laravel.com",
- "support": {
- "issues": "https://github.com/laravel/framework/issues",
- "source": "https://github.com/laravel/framework"
- },
- "authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- }
- ],
- "require": {
- "php": "^7.3|^8.0",
- "illuminate/contracts": "^8.0",
- "illuminate/macroable": "^8.0"
- },
- "autoload": {
- "psr-4": {
- "Illuminate\\Support\\": ""
- },
- "files": [
- "helpers.php"
- ]
- },
- "extra": {
- "branch-alias": {
- "dev-master": "8.x-dev"
- }
- },
- "suggest": {
- "symfony/var-dumper": "Required to use the dump method (^5.1.4)."
- },
- "config": {
- "sort-packages": true
- },
- "minimum-stability": "dev"
-}
diff --git a/vendor/illuminate/collections/helpers.php b/vendor/illuminate/collections/helpers.php
deleted file mode 100644
index 67669e5c..00000000
--- a/vendor/illuminate/collections/helpers.php
+++ /dev/null
@@ -1,186 +0,0 @@
- $segment) {
- unset($key[$i]);
-
- if (is_null($segment)) {
- return $target;
- }
-
- if ($segment === '*') {
- if ($target instanceof Collection) {
- $target = $target->all();
- } elseif (! is_array($target)) {
- return value($default);
- }
-
- $result = [];
-
- foreach ($target as $item) {
- $result[] = data_get($item, $key);
- }
-
- return in_array('*', $key) ? Arr::collapse($result) : $result;
- }
-
- if (Arr::accessible($target) && Arr::exists($target, $segment)) {
- $target = $target[$segment];
- } elseif (is_object($target) && isset($target->{$segment})) {
- $target = $target->{$segment};
- } else {
- return value($default);
- }
- }
-
- return $target;
- }
-}
-
-if (! function_exists('data_set')) {
- /**
- * Set an item on an array or object using dot notation.
- *
- * @param mixed $target
- * @param string|array $key
- * @param mixed $value
- * @param bool $overwrite
- * @return mixed
- */
- function data_set(&$target, $key, $value, $overwrite = true)
- {
- $segments = is_array($key) ? $key : explode('.', $key);
-
- if (($segment = array_shift($segments)) === '*') {
- if (! Arr::accessible($target)) {
- $target = [];
- }
-
- if ($segments) {
- foreach ($target as &$inner) {
- data_set($inner, $segments, $value, $overwrite);
- }
- } elseif ($overwrite) {
- foreach ($target as &$inner) {
- $inner = $value;
- }
- }
- } elseif (Arr::accessible($target)) {
- if ($segments) {
- if (! Arr::exists($target, $segment)) {
- $target[$segment] = [];
- }
-
- data_set($target[$segment], $segments, $value, $overwrite);
- } elseif ($overwrite || ! Arr::exists($target, $segment)) {
- $target[$segment] = $value;
- }
- } elseif (is_object($target)) {
- if ($segments) {
- if (! isset($target->{$segment})) {
- $target->{$segment} = [];
- }
-
- data_set($target->{$segment}, $segments, $value, $overwrite);
- } elseif ($overwrite || ! isset($target->{$segment})) {
- $target->{$segment} = $value;
- }
- } else {
- $target = [];
-
- if ($segments) {
- data_set($target[$segment], $segments, $value, $overwrite);
- } elseif ($overwrite) {
- $target[$segment] = $value;
- }
- }
-
- return $target;
- }
-}
-
-if (! function_exists('head')) {
- /**
- * Get the first element of an array. Useful for method chaining.
- *
- * @param array $array
- * @return mixed
- */
- function head($array)
- {
- return reset($array);
- }
-}
-
-if (! function_exists('last')) {
- /**
- * Get the last element from an array.
- *
- * @param array $array
- * @return mixed
- */
- function last($array)
- {
- return end($array);
- }
-}
-
-if (! function_exists('value')) {
- /**
- * Return the default value of the given value.
- *
- * @param mixed $value
- * @return mixed
- */
- function value($value, ...$args)
- {
- return $value instanceof Closure ? $value(...$args) : $value;
- }
-}
diff --git a/vendor/illuminate/container/BoundMethod.php b/vendor/illuminate/container/BoundMethod.php
deleted file mode 100644
index 3a614720..00000000
--- a/vendor/illuminate/container/BoundMethod.php
+++ /dev/null
@@ -1,196 +0,0 @@
-make($segments[0]), $method], $parameters
- );
- }
-
- /**
- * Call a method that has been bound to the container.
- *
- * @param \Illuminate\Container\Container $container
- * @param callable $callback
- * @param mixed $default
- * @return mixed
- */
- protected static function callBoundMethod($container, $callback, $default)
- {
- if (! is_array($callback)) {
- return Util::unwrapIfClosure($default);
- }
-
- // Here we need to turn the array callable into a Class@method string we can use to
- // examine the container and see if there are any method bindings for this given
- // method. If there are, we can call this method binding callback immediately.
- $method = static::normalizeMethod($callback);
-
- if ($container->hasMethodBinding($method)) {
- return $container->callMethodBinding($method, $callback[0]);
- }
-
- return Util::unwrapIfClosure($default);
- }
-
- /**
- * Normalize the given callback into a Class@method string.
- *
- * @param callable $callback
- * @return string
- */
- protected static function normalizeMethod($callback)
- {
- $class = is_string($callback[0]) ? $callback[0] : get_class($callback[0]);
-
- return "{$class}@{$callback[1]}";
- }
-
- /**
- * Get all dependencies for a given method.
- *
- * @param \Illuminate\Container\Container $container
- * @param callable|string $callback
- * @param array $parameters
- * @return array
- *
- * @throws \ReflectionException
- */
- protected static function getMethodDependencies($container, $callback, array $parameters = [])
- {
- $dependencies = [];
-
- foreach (static::getCallReflector($callback)->getParameters() as $parameter) {
- static::addDependencyForCallParameter($container, $parameter, $parameters, $dependencies);
- }
-
- return array_merge($dependencies, array_values($parameters));
- }
-
- /**
- * Get the proper reflection instance for the given callback.
- *
- * @param callable|string $callback
- * @return \ReflectionFunctionAbstract
- *
- * @throws \ReflectionException
- */
- protected static function getCallReflector($callback)
- {
- if (is_string($callback) && strpos($callback, '::') !== false) {
- $callback = explode('::', $callback);
- } elseif (is_object($callback) && ! $callback instanceof Closure) {
- $callback = [$callback, '__invoke'];
- }
-
- return is_array($callback)
- ? new ReflectionMethod($callback[0], $callback[1])
- : new ReflectionFunction($callback);
- }
-
- /**
- * Get the dependency for the given call parameter.
- *
- * @param \Illuminate\Container\Container $container
- * @param \ReflectionParameter $parameter
- * @param array $parameters
- * @param array $dependencies
- * @return void
- *
- * @throws \Illuminate\Contracts\Container\BindingResolutionException
- */
- protected static function addDependencyForCallParameter($container, $parameter,
- array &$parameters, &$dependencies)
- {
- if (array_key_exists($paramName = $parameter->getName(), $parameters)) {
- $dependencies[] = $parameters[$paramName];
-
- unset($parameters[$paramName]);
- } elseif (! is_null($className = Util::getParameterClassName($parameter))) {
- if (array_key_exists($className, $parameters)) {
- $dependencies[] = $parameters[$className];
-
- unset($parameters[$className]);
- } else {
- $dependencies[] = $container->make($className);
- }
- } elseif ($parameter->isDefaultValueAvailable()) {
- $dependencies[] = $parameter->getDefaultValue();
- } elseif (! $parameter->isOptional() && ! array_key_exists($paramName, $parameters)) {
- $message = "Unable to resolve dependency [{$parameter}] in class {$parameter->getDeclaringClass()->getName()}";
-
- throw new BindingResolutionException($message);
- }
- }
-
- /**
- * Determine if the given string is in Class@method syntax.
- *
- * @param mixed $callback
- * @return bool
- */
- protected static function isCallableWithAtSign($callback)
- {
- return is_string($callback) && strpos($callback, '@') !== false;
- }
-}
diff --git a/vendor/illuminate/container/Container.php b/vendor/illuminate/container/Container.php
deleted file mode 100755
index bf7bb8e5..00000000
--- a/vendor/illuminate/container/Container.php
+++ /dev/null
@@ -1,1475 +0,0 @@
-getAlias($c);
- }
-
- return new ContextualBindingBuilder($this, $aliases);
- }
-
- /**
- * Determine if the given abstract type has been bound.
- *
- * @param string $abstract
- * @return bool
- */
- public function bound($abstract)
- {
- return isset($this->bindings[$abstract]) ||
- isset($this->instances[$abstract]) ||
- $this->isAlias($abstract);
- }
-
- /**
- * {@inheritdoc}
- *
- * @return bool
- */
- public function has($id)
- {
- return $this->bound($id);
- }
-
- /**
- * Determine if the given abstract type has been resolved.
- *
- * @param string $abstract
- * @return bool
- */
- public function resolved($abstract)
- {
- if ($this->isAlias($abstract)) {
- $abstract = $this->getAlias($abstract);
- }
-
- return isset($this->resolved[$abstract]) ||
- isset($this->instances[$abstract]);
- }
-
- /**
- * Determine if a given type is shared.
- *
- * @param string $abstract
- * @return bool
- */
- public function isShared($abstract)
- {
- return isset($this->instances[$abstract]) ||
- (isset($this->bindings[$abstract]['shared']) &&
- $this->bindings[$abstract]['shared'] === true);
- }
-
- /**
- * Determine if a given string is an alias.
- *
- * @param string $name
- * @return bool
- */
- public function isAlias($name)
- {
- return isset($this->aliases[$name]);
- }
-
- /**
- * Register a binding with the container.
- *
- * @param string $abstract
- * @param \Closure|string|null $concrete
- * @param bool $shared
- * @return void
- *
- * @throws \TypeError
- */
- public function bind($abstract, $concrete = null, $shared = false)
- {
- $this->dropStaleInstances($abstract);
-
- // If no concrete type was given, we will simply set the concrete type to the
- // abstract type. After that, the concrete type to be registered as shared
- // without being forced to state their classes in both of the parameters.
- if (is_null($concrete)) {
- $concrete = $abstract;
- }
-
- // If the factory is not a Closure, it means it is just a class name which is
- // bound into this container to the abstract type and we will just wrap it
- // up inside its own Closure to give us more convenience when extending.
- if (! $concrete instanceof Closure) {
- if (! is_string($concrete)) {
- throw new TypeError(self::class.'::bind(): Argument #2 ($concrete) must be of type Closure|string|null');
- }
-
- $concrete = $this->getClosure($abstract, $concrete);
- }
-
- $this->bindings[$abstract] = compact('concrete', 'shared');
-
- // If the abstract type was already resolved in this container we'll fire the
- // rebound listener so that any objects which have already gotten resolved
- // can have their copy of the object updated via the listener callbacks.
- if ($this->resolved($abstract)) {
- $this->rebound($abstract);
- }
- }
-
- /**
- * Get the Closure to be used when building a type.
- *
- * @param string $abstract
- * @param string $concrete
- * @return \Closure
- */
- protected function getClosure($abstract, $concrete)
- {
- return function ($container, $parameters = []) use ($abstract, $concrete) {
- if ($abstract == $concrete) {
- return $container->build($concrete);
- }
-
- return $container->resolve(
- $concrete, $parameters, $raiseEvents = false
- );
- };
- }
-
- /**
- * Determine if the container has a method binding.
- *
- * @param string $method
- * @return bool
- */
- public function hasMethodBinding($method)
- {
- return isset($this->methodBindings[$method]);
- }
-
- /**
- * Bind a callback to resolve with Container::call.
- *
- * @param array|string $method
- * @param \Closure $callback
- * @return void
- */
- public function bindMethod($method, $callback)
- {
- $this->methodBindings[$this->parseBindMethod($method)] = $callback;
- }
-
- /**
- * Get the method to be bound in class@method format.
- *
- * @param array|string $method
- * @return string
- */
- protected function parseBindMethod($method)
- {
- if (is_array($method)) {
- return $method[0].'@'.$method[1];
- }
-
- return $method;
- }
-
- /**
- * Get the method binding for the given method.
- *
- * @param string $method
- * @param mixed $instance
- * @return mixed
- */
- public function callMethodBinding($method, $instance)
- {
- return call_user_func($this->methodBindings[$method], $instance, $this);
- }
-
- /**
- * Add a contextual binding to the container.
- *
- * @param string $concrete
- * @param string $abstract
- * @param \Closure|string $implementation
- * @return void
- */
- public function addContextualBinding($concrete, $abstract, $implementation)
- {
- $this->contextual[$concrete][$this->getAlias($abstract)] = $implementation;
- }
-
- /**
- * Register a binding if it hasn't already been registered.
- *
- * @param string $abstract
- * @param \Closure|string|null $concrete
- * @param bool $shared
- * @return void
- */
- public function bindIf($abstract, $concrete = null, $shared = false)
- {
- if (! $this->bound($abstract)) {
- $this->bind($abstract, $concrete, $shared);
- }
- }
-
- /**
- * Register a shared binding in the container.
- *
- * @param string $abstract
- * @param \Closure|string|null $concrete
- * @return void
- */
- public function singleton($abstract, $concrete = null)
- {
- $this->bind($abstract, $concrete, true);
- }
-
- /**
- * Register a shared binding if it hasn't already been registered.
- *
- * @param string $abstract
- * @param \Closure|string|null $concrete
- * @return void
- */
- public function singletonIf($abstract, $concrete = null)
- {
- if (! $this->bound($abstract)) {
- $this->singleton($abstract, $concrete);
- }
- }
-
- /**
- * Register a scoped binding in the container.
- *
- * @param string $abstract
- * @param \Closure|string|null $concrete
- * @return void
- */
- public function scoped($abstract, $concrete = null)
- {
- $this->scopedInstances[] = $abstract;
-
- $this->singleton($abstract, $concrete);
- }
-
- /**
- * Register a scoped binding if it hasn't already been registered.
- *
- * @param string $abstract
- * @param \Closure|string|null $concrete
- * @return void
- */
- public function scopedIf($abstract, $concrete = null)
- {
- if (! $this->bound($abstract)) {
- $this->scopedInstances[] = $abstract;
-
- $this->singleton($abstract, $concrete);
- }
- }
-
- /**
- * "Extend" an abstract type in the container.
- *
- * @param string $abstract
- * @param \Closure $closure
- * @return void
- *
- * @throws \InvalidArgumentException
- */
- public function extend($abstract, Closure $closure)
- {
- $abstract = $this->getAlias($abstract);
-
- if (isset($this->instances[$abstract])) {
- $this->instances[$abstract] = $closure($this->instances[$abstract], $this);
-
- $this->rebound($abstract);
- } else {
- $this->extenders[$abstract][] = $closure;
-
- if ($this->resolved($abstract)) {
- $this->rebound($abstract);
- }
- }
- }
-
- /**
- * Register an existing instance as shared in the container.
- *
- * @param string $abstract
- * @param mixed $instance
- * @return mixed
- */
- public function instance($abstract, $instance)
- {
- $this->removeAbstractAlias($abstract);
-
- $isBound = $this->bound($abstract);
-
- unset($this->aliases[$abstract]);
-
- // We'll check to determine if this type has been bound before, and if it has
- // we will fire the rebound callbacks registered with the container and it
- // can be updated with consuming classes that have gotten resolved here.
- $this->instances[$abstract] = $instance;
-
- if ($isBound) {
- $this->rebound($abstract);
- }
-
- return $instance;
- }
-
- /**
- * Remove an alias from the contextual binding alias cache.
- *
- * @param string $searched
- * @return void
- */
- protected function removeAbstractAlias($searched)
- {
- if (! isset($this->aliases[$searched])) {
- return;
- }
-
- foreach ($this->abstractAliases as $abstract => $aliases) {
- foreach ($aliases as $index => $alias) {
- if ($alias == $searched) {
- unset($this->abstractAliases[$abstract][$index]);
- }
- }
- }
- }
-
- /**
- * Assign a set of tags to a given binding.
- *
- * @param array|string $abstracts
- * @param array|mixed ...$tags
- * @return void
- */
- public function tag($abstracts, $tags)
- {
- $tags = is_array($tags) ? $tags : array_slice(func_get_args(), 1);
-
- foreach ($tags as $tag) {
- if (! isset($this->tags[$tag])) {
- $this->tags[$tag] = [];
- }
-
- foreach ((array) $abstracts as $abstract) {
- $this->tags[$tag][] = $abstract;
- }
- }
- }
-
- /**
- * Resolve all of the bindings for a given tag.
- *
- * @param string $tag
- * @return iterable
- */
- public function tagged($tag)
- {
- if (! isset($this->tags[$tag])) {
- return [];
- }
-
- return new RewindableGenerator(function () use ($tag) {
- foreach ($this->tags[$tag] as $abstract) {
- yield $this->make($abstract);
- }
- }, count($this->tags[$tag]));
- }
-
- /**
- * Alias a type to a different name.
- *
- * @param string $abstract
- * @param string $alias
- * @return void
- *
- * @throws \LogicException
- */
- public function alias($abstract, $alias)
- {
- if ($alias === $abstract) {
- throw new LogicException("[{$abstract}] is aliased to itself.");
- }
-
- $this->aliases[$alias] = $abstract;
-
- $this->abstractAliases[$abstract][] = $alias;
- }
-
- /**
- * Bind a new callback to an abstract's rebind event.
- *
- * @param string $abstract
- * @param \Closure $callback
- * @return mixed
- */
- public function rebinding($abstract, Closure $callback)
- {
- $this->reboundCallbacks[$abstract = $this->getAlias($abstract)][] = $callback;
-
- if ($this->bound($abstract)) {
- return $this->make($abstract);
- }
- }
-
- /**
- * Refresh an instance on the given target and method.
- *
- * @param string $abstract
- * @param mixed $target
- * @param string $method
- * @return mixed
- */
- public function refresh($abstract, $target, $method)
- {
- return $this->rebinding($abstract, function ($app, $instance) use ($target, $method) {
- $target->{$method}($instance);
- });
- }
-
- /**
- * Fire the "rebound" callbacks for the given abstract type.
- *
- * @param string $abstract
- * @return void
- */
- protected function rebound($abstract)
- {
- $instance = $this->make($abstract);
-
- foreach ($this->getReboundCallbacks($abstract) as $callback) {
- call_user_func($callback, $this, $instance);
- }
- }
-
- /**
- * Get the rebound callbacks for a given type.
- *
- * @param string $abstract
- * @return array
- */
- protected function getReboundCallbacks($abstract)
- {
- return $this->reboundCallbacks[$abstract] ?? [];
- }
-
- /**
- * Wrap the given closure such that its dependencies will be injected when executed.
- *
- * @param \Closure $callback
- * @param array $parameters
- * @return \Closure
- */
- public function wrap(Closure $callback, array $parameters = [])
- {
- return function () use ($callback, $parameters) {
- return $this->call($callback, $parameters);
- };
- }
-
- /**
- * Call the given Closure / class@method and inject its dependencies.
- *
- * @param callable|string $callback
- * @param array $parameters
- * @param string|null $defaultMethod
- * @return mixed
- *
- * @throws \InvalidArgumentException
- */
- public function call($callback, array $parameters = [], $defaultMethod = null)
- {
- return BoundMethod::call($this, $callback, $parameters, $defaultMethod);
- }
-
- /**
- * Get a closure to resolve the given type from the container.
- *
- * @param string $abstract
- * @return \Closure
- */
- public function factory($abstract)
- {
- return function () use ($abstract) {
- return $this->make($abstract);
- };
- }
-
- /**
- * An alias function name for make().
- *
- * @param string|callable $abstract
- * @param array $parameters
- * @return mixed
- *
- * @throws \Illuminate\Contracts\Container\BindingResolutionException
- */
- public function makeWith($abstract, array $parameters = [])
- {
- return $this->make($abstract, $parameters);
- }
-
- /**
- * Resolve the given type from the container.
- *
- * @param string|callable $abstract
- * @param array $parameters
- * @return mixed
- *
- * @throws \Illuminate\Contracts\Container\BindingResolutionException
- */
- public function make($abstract, array $parameters = [])
- {
- return $this->resolve($abstract, $parameters);
- }
-
- /**
- * {@inheritdoc}
- *
- * @return mixed
- */
- public function get($id)
- {
- try {
- return $this->resolve($id);
- } catch (Exception $e) {
- if ($this->has($id) || $e instanceof CircularDependencyException) {
- throw $e;
- }
-
- throw new EntryNotFoundException($id, $e->getCode(), $e);
- }
- }
-
- /**
- * Resolve the given type from the container.
- *
- * @param string|callable $abstract
- * @param array $parameters
- * @param bool $raiseEvents
- * @return mixed
- *
- * @throws \Illuminate\Contracts\Container\BindingResolutionException
- * @throws \Illuminate\Contracts\Container\CircularDependencyException
- */
- protected function resolve($abstract, $parameters = [], $raiseEvents = true)
- {
- $abstract = $this->getAlias($abstract);
-
- // First we'll fire any event handlers which handle the "before" resolving of
- // specific types. This gives some hooks the chance to add various extends
- // calls to change the resolution of objects that they're interested in.
- if ($raiseEvents) {
- $this->fireBeforeResolvingCallbacks($abstract, $parameters);
- }
-
- $concrete = $this->getContextualConcrete($abstract);
-
- $needsContextualBuild = ! empty($parameters) || ! is_null($concrete);
-
- // If an instance of the type is currently being managed as a singleton we'll
- // just return an existing instance instead of instantiating new instances
- // so the developer can keep using the same objects instance every time.
- if (isset($this->instances[$abstract]) && ! $needsContextualBuild) {
- return $this->instances[$abstract];
- }
-
- $this->with[] = $parameters;
-
- if (is_null($concrete)) {
- $concrete = $this->getConcrete($abstract);
- }
-
- // We're ready to instantiate an instance of the concrete type registered for
- // the binding. This will instantiate the types, as well as resolve any of
- // its "nested" dependencies recursively until all have gotten resolved.
- if ($this->isBuildable($concrete, $abstract)) {
- $object = $this->build($concrete);
- } else {
- $object = $this->make($concrete);
- }
-
- // If we defined any extenders for this type, we'll need to spin through them
- // and apply them to the object being built. This allows for the extension
- // of services, such as changing configuration or decorating the object.
- foreach ($this->getExtenders($abstract) as $extender) {
- $object = $extender($object, $this);
- }
-
- // If the requested type is registered as a singleton we'll want to cache off
- // the instances in "memory" so we can return it later without creating an
- // entirely new instance of an object on each subsequent request for it.
- if ($this->isShared($abstract) && ! $needsContextualBuild) {
- $this->instances[$abstract] = $object;
- }
-
- if ($raiseEvents) {
- $this->fireResolvingCallbacks($abstract, $object);
- }
-
- // Before returning, we will also set the resolved flag to "true" and pop off
- // the parameter overrides for this build. After those two things are done
- // we will be ready to return back the fully constructed class instance.
- $this->resolved[$abstract] = true;
-
- array_pop($this->with);
-
- return $object;
- }
-
- /**
- * Get the concrete type for a given abstract.
- *
- * @param string|callable $abstract
- * @return mixed
- */
- protected function getConcrete($abstract)
- {
- // If we don't have a registered resolver or concrete for the type, we'll just
- // assume each type is a concrete name and will attempt to resolve it as is
- // since the container should be able to resolve concretes automatically.
- if (isset($this->bindings[$abstract])) {
- return $this->bindings[$abstract]['concrete'];
- }
-
- return $abstract;
- }
-
- /**
- * Get the contextual concrete binding for the given abstract.
- *
- * @param string|callable $abstract
- * @return \Closure|string|array|null
- */
- protected function getContextualConcrete($abstract)
- {
- if (! is_null($binding = $this->findInContextualBindings($abstract))) {
- return $binding;
- }
-
- // Next we need to see if a contextual binding might be bound under an alias of the
- // given abstract type. So, we will need to check if any aliases exist with this
- // type and then spin through them and check for contextual bindings on these.
- if (empty($this->abstractAliases[$abstract])) {
- return;
- }
-
- foreach ($this->abstractAliases[$abstract] as $alias) {
- if (! is_null($binding = $this->findInContextualBindings($alias))) {
- return $binding;
- }
- }
- }
-
- /**
- * Find the concrete binding for the given abstract in the contextual binding array.
- *
- * @param string|callable $abstract
- * @return \Closure|string|null
- */
- protected function findInContextualBindings($abstract)
- {
- return $this->contextual[end($this->buildStack)][$abstract] ?? null;
- }
-
- /**
- * Determine if the given concrete is buildable.
- *
- * @param mixed $concrete
- * @param string $abstract
- * @return bool
- */
- protected function isBuildable($concrete, $abstract)
- {
- return $concrete === $abstract || $concrete instanceof Closure;
- }
-
- /**
- * Instantiate a concrete instance of the given type.
- *
- * @param \Closure|string $concrete
- * @return mixed
- *
- * @throws \Illuminate\Contracts\Container\BindingResolutionException
- * @throws \Illuminate\Contracts\Container\CircularDependencyException
- */
- public function build($concrete)
- {
- // If the concrete type is actually a Closure, we will just execute it and
- // hand back the results of the functions, which allows functions to be
- // used as resolvers for more fine-tuned resolution of these objects.
- if ($concrete instanceof Closure) {
- return $concrete($this, $this->getLastParameterOverride());
- }
-
- try {
- $reflector = new ReflectionClass($concrete);
- } catch (ReflectionException $e) {
- throw new BindingResolutionException("Target class [$concrete] does not exist.", 0, $e);
- }
-
- // If the type is not instantiable, the developer is attempting to resolve
- // an abstract type such as an Interface or Abstract Class and there is
- // no binding registered for the abstractions so we need to bail out.
- if (! $reflector->isInstantiable()) {
- return $this->notInstantiable($concrete);
- }
-
- // if (in_array($concrete, $this->buildStack)) {
- // throw new CircularDependencyException("Circular dependency detected while resolving [{$concrete}].");
- // }
-
- $this->buildStack[] = $concrete;
-
- $constructor = $reflector->getConstructor();
-
- // If there are no constructors, that means there are no dependencies then
- // we can just resolve the instances of the objects right away, without
- // resolving any other types or dependencies out of these containers.
- if (is_null($constructor)) {
- array_pop($this->buildStack);
-
- return new $concrete;
- }
-
- $dependencies = $constructor->getParameters();
-
- // Once we have all the constructor's parameters we can create each of the
- // dependency instances and then use the reflection instances to make a
- // new instance of this class, injecting the created dependencies in.
- try {
- $instances = $this->resolveDependencies($dependencies);
- } catch (BindingResolutionException $e) {
- array_pop($this->buildStack);
-
- throw $e;
- }
-
- array_pop($this->buildStack);
-
- return $reflector->newInstanceArgs($instances);
- }
-
- /**
- * Resolve all of the dependencies from the ReflectionParameters.
- *
- * @param \ReflectionParameter[] $dependencies
- * @return array
- *
- * @throws \Illuminate\Contracts\Container\BindingResolutionException
- */
- protected function resolveDependencies(array $dependencies)
- {
- $results = [];
-
- foreach ($dependencies as $dependency) {
- // If the dependency has an override for this particular build we will use
- // that instead as the value. Otherwise, we will continue with this run
- // of resolutions and let reflection attempt to determine the result.
- if ($this->hasParameterOverride($dependency)) {
- $results[] = $this->getParameterOverride($dependency);
-
- continue;
- }
-
- // If the class is null, it means the dependency is a string or some other
- // primitive type which we can not resolve since it is not a class and
- // we will just bomb out with an error since we have no-where to go.
- $result = is_null(Util::getParameterClassName($dependency))
- ? $this->resolvePrimitive($dependency)
- : $this->resolveClass($dependency);
-
- if ($dependency->isVariadic()) {
- $results = array_merge($results, $result);
- } else {
- $results[] = $result;
- }
- }
-
- return $results;
- }
-
- /**
- * Determine if the given dependency has a parameter override.
- *
- * @param \ReflectionParameter $dependency
- * @return bool
- */
- protected function hasParameterOverride($dependency)
- {
- return array_key_exists(
- $dependency->name, $this->getLastParameterOverride()
- );
- }
-
- /**
- * Get a parameter override for a dependency.
- *
- * @param \ReflectionParameter $dependency
- * @return mixed
- */
- protected function getParameterOverride($dependency)
- {
- return $this->getLastParameterOverride()[$dependency->name];
- }
-
- /**
- * Get the last parameter override.
- *
- * @return array
- */
- protected function getLastParameterOverride()
- {
- return count($this->with) ? end($this->with) : [];
- }
-
- /**
- * Resolve a non-class hinted primitive dependency.
- *
- * @param \ReflectionParameter $parameter
- * @return mixed
- *
- * @throws \Illuminate\Contracts\Container\BindingResolutionException
- */
- protected function resolvePrimitive(ReflectionParameter $parameter)
- {
- if (! is_null($concrete = $this->getContextualConcrete('$'.$parameter->getName()))) {
- return $concrete instanceof Closure ? $concrete($this) : $concrete;
- }
-
- if ($parameter->isDefaultValueAvailable()) {
- return $parameter->getDefaultValue();
- }
-
- $this->unresolvablePrimitive($parameter);
- }
-
- /**
- * Resolve a class based dependency from the container.
- *
- * @param \ReflectionParameter $parameter
- * @return mixed
- *
- * @throws \Illuminate\Contracts\Container\BindingResolutionException
- */
- protected function resolveClass(ReflectionParameter $parameter)
- {
- try {
- return $parameter->isVariadic()
- ? $this->resolveVariadicClass($parameter)
- : $this->make(Util::getParameterClassName($parameter));
- }
-
- // If we can not resolve the class instance, we will check to see if the value
- // is optional, and if it is we will return the optional parameter value as
- // the value of the dependency, similarly to how we do this with scalars.
- catch (BindingResolutionException $e) {
- if ($parameter->isDefaultValueAvailable()) {
- array_pop($this->with);
-
- return $parameter->getDefaultValue();
- }
-
- if ($parameter->isVariadic()) {
- array_pop($this->with);
-
- return [];
- }
-
- throw $e;
- }
- }
-
- /**
- * Resolve a class based variadic dependency from the container.
- *
- * @param \ReflectionParameter $parameter
- * @return mixed
- */
- protected function resolveVariadicClass(ReflectionParameter $parameter)
- {
- $className = Util::getParameterClassName($parameter);
-
- $abstract = $this->getAlias($className);
-
- if (! is_array($concrete = $this->getContextualConcrete($abstract))) {
- return $this->make($className);
- }
-
- return array_map(function ($abstract) {
- return $this->resolve($abstract);
- }, $concrete);
- }
-
- /**
- * Throw an exception that the concrete is not instantiable.
- *
- * @param string $concrete
- * @return void
- *
- * @throws \Illuminate\Contracts\Container\BindingResolutionException
- */
- protected function notInstantiable($concrete)
- {
- if (! empty($this->buildStack)) {
- $previous = implode(', ', $this->buildStack);
-
- $message = "Target [$concrete] is not instantiable while building [$previous].";
- } else {
- $message = "Target [$concrete] is not instantiable.";
- }
-
- throw new BindingResolutionException($message);
- }
-
- /**
- * Throw an exception for an unresolvable primitive.
- *
- * @param \ReflectionParameter $parameter
- * @return void
- *
- * @throws \Illuminate\Contracts\Container\BindingResolutionException
- */
- protected function unresolvablePrimitive(ReflectionParameter $parameter)
- {
- $message = "Unresolvable dependency resolving [$parameter] in class {$parameter->getDeclaringClass()->getName()}";
-
- throw new BindingResolutionException($message);
- }
-
- /**
- * Register a new before resolving callback for all types.
- *
- * @param \Closure|string $abstract
- * @param \Closure|null $callback
- * @return void
- */
- public function beforeResolving($abstract, Closure $callback = null)
- {
- if (is_string($abstract)) {
- $abstract = $this->getAlias($abstract);
- }
-
- if ($abstract instanceof Closure && is_null($callback)) {
- $this->globalBeforeResolvingCallbacks[] = $abstract;
- } else {
- $this->beforeResolvingCallbacks[$abstract][] = $callback;
- }
- }
-
- /**
- * Register a new resolving callback.
- *
- * @param \Closure|string $abstract
- * @param \Closure|null $callback
- * @return void
- */
- public function resolving($abstract, Closure $callback = null)
- {
- if (is_string($abstract)) {
- $abstract = $this->getAlias($abstract);
- }
-
- if (is_null($callback) && $abstract instanceof Closure) {
- $this->globalResolvingCallbacks[] = $abstract;
- } else {
- $this->resolvingCallbacks[$abstract][] = $callback;
- }
- }
-
- /**
- * Register a new after resolving callback for all types.
- *
- * @param \Closure|string $abstract
- * @param \Closure|null $callback
- * @return void
- */
- public function afterResolving($abstract, Closure $callback = null)
- {
- if (is_string($abstract)) {
- $abstract = $this->getAlias($abstract);
- }
-
- if ($abstract instanceof Closure && is_null($callback)) {
- $this->globalAfterResolvingCallbacks[] = $abstract;
- } else {
- $this->afterResolvingCallbacks[$abstract][] = $callback;
- }
- }
-
- /**
- * Fire all of the before resolving callbacks.
- *
- * @param string $abstract
- * @param array $parameters
- * @return void
- */
- protected function fireBeforeResolvingCallbacks($abstract, $parameters = [])
- {
- $this->fireBeforeCallbackArray($abstract, $parameters, $this->globalBeforeResolvingCallbacks);
-
- foreach ($this->beforeResolvingCallbacks as $type => $callbacks) {
- if ($type === $abstract || is_subclass_of($abstract, $type)) {
- $this->fireBeforeCallbackArray($abstract, $parameters, $callbacks);
- }
- }
- }
-
- /**
- * Fire an array of callbacks with an object.
- *
- * @param string $abstract
- * @param array $parameters
- * @param array $callbacks
- * @return void
- */
- protected function fireBeforeCallbackArray($abstract, $parameters, array $callbacks)
- {
- foreach ($callbacks as $callback) {
- $callback($abstract, $parameters, $this);
- }
- }
-
- /**
- * Fire all of the resolving callbacks.
- *
- * @param string $abstract
- * @param mixed $object
- * @return void
- */
- protected function fireResolvingCallbacks($abstract, $object)
- {
- $this->fireCallbackArray($object, $this->globalResolvingCallbacks);
-
- $this->fireCallbackArray(
- $object, $this->getCallbacksForType($abstract, $object, $this->resolvingCallbacks)
- );
-
- $this->fireAfterResolvingCallbacks($abstract, $object);
- }
-
- /**
- * Fire all of the after resolving callbacks.
- *
- * @param string $abstract
- * @param mixed $object
- * @return void
- */
- protected function fireAfterResolvingCallbacks($abstract, $object)
- {
- $this->fireCallbackArray($object, $this->globalAfterResolvingCallbacks);
-
- $this->fireCallbackArray(
- $object, $this->getCallbacksForType($abstract, $object, $this->afterResolvingCallbacks)
- );
- }
-
- /**
- * Get all callbacks for a given type.
- *
- * @param string $abstract
- * @param object $object
- * @param array $callbacksPerType
- * @return array
- */
- protected function getCallbacksForType($abstract, $object, array $callbacksPerType)
- {
- $results = [];
-
- foreach ($callbacksPerType as $type => $callbacks) {
- if ($type === $abstract || $object instanceof $type) {
- $results = array_merge($results, $callbacks);
- }
- }
-
- return $results;
- }
-
- /**
- * Fire an array of callbacks with an object.
- *
- * @param mixed $object
- * @param array $callbacks
- * @return void
- */
- protected function fireCallbackArray($object, array $callbacks)
- {
- foreach ($callbacks as $callback) {
- $callback($object, $this);
- }
- }
-
- /**
- * Get the container's bindings.
- *
- * @return array
- */
- public function getBindings()
- {
- return $this->bindings;
- }
-
- /**
- * Get the alias for an abstract if available.
- *
- * @param string $abstract
- * @return string
- */
- public function getAlias($abstract)
- {
- return isset($this->aliases[$abstract])
- ? $this->getAlias($this->aliases[$abstract])
- : $abstract;
- }
-
- /**
- * Get the extender callbacks for a given type.
- *
- * @param string $abstract
- * @return array
- */
- protected function getExtenders($abstract)
- {
- return $this->extenders[$this->getAlias($abstract)] ?? [];
- }
-
- /**
- * Remove all of the extender callbacks for a given type.
- *
- * @param string $abstract
- * @return void
- */
- public function forgetExtenders($abstract)
- {
- unset($this->extenders[$this->getAlias($abstract)]);
- }
-
- /**
- * Drop all of the stale instances and aliases.
- *
- * @param string $abstract
- * @return void
- */
- protected function dropStaleInstances($abstract)
- {
- unset($this->instances[$abstract], $this->aliases[$abstract]);
- }
-
- /**
- * Remove a resolved instance from the instance cache.
- *
- * @param string $abstract
- * @return void
- */
- public function forgetInstance($abstract)
- {
- unset($this->instances[$abstract]);
- }
-
- /**
- * Clear all of the instances from the container.
- *
- * @return void
- */
- public function forgetInstances()
- {
- $this->instances = [];
- }
-
- /**
- * Clear all of the scoped instances from the container.
- *
- * @return void
- */
- public function forgetScopedInstances()
- {
- foreach ($this->scopedInstances as $scoped) {
- unset($this->instances[$scoped]);
- }
- }
-
- /**
- * Flush the container of all bindings and resolved instances.
- *
- * @return void
- */
- public function flush()
- {
- $this->aliases = [];
- $this->resolved = [];
- $this->bindings = [];
- $this->instances = [];
- $this->abstractAliases = [];
- $this->scopedInstances = [];
- }
-
- /**
- * Get the globally available instance of the container.
- *
- * @return static
- */
- public static function getInstance()
- {
- if (is_null(static::$instance)) {
- static::$instance = new static;
- }
-
- return static::$instance;
- }
-
- /**
- * Set the shared instance of the container.
- *
- * @param \Illuminate\Contracts\Container\Container|null $container
- * @return \Illuminate\Contracts\Container\Container|static
- */
- public static function setInstance(ContainerContract $container = null)
- {
- return static::$instance = $container;
- }
-
- /**
- * Determine if a given offset exists.
- *
- * @param string $key
- * @return bool
- */
- #[\ReturnTypeWillChange]
- public function offsetExists($key)
- {
- return $this->bound($key);
- }
-
- /**
- * Get the value at a given offset.
- *
- * @param string $key
- * @return mixed
- */
- #[\ReturnTypeWillChange]
- public function offsetGet($key)
- {
- return $this->make($key);
- }
-
- /**
- * Set the value at a given offset.
- *
- * @param string $key
- * @param mixed $value
- * @return void
- */
- #[\ReturnTypeWillChange]
- public function offsetSet($key, $value)
- {
- $this->bind($key, $value instanceof Closure ? $value : function () use ($value) {
- return $value;
- });
- }
-
- /**
- * Unset the value at a given offset.
- *
- * @param string $key
- * @return void
- */
- #[\ReturnTypeWillChange]
- public function offsetUnset($key)
- {
- unset($this->bindings[$key], $this->instances[$key], $this->resolved[$key]);
- }
-
- /**
- * Dynamically access container services.
- *
- * @param string $key
- * @return mixed
- */
- public function __get($key)
- {
- return $this[$key];
- }
-
- /**
- * Dynamically set container services.
- *
- * @param string $key
- * @param mixed $value
- * @return void
- */
- public function __set($key, $value)
- {
- $this[$key] = $value;
- }
-}
diff --git a/vendor/illuminate/container/ContextualBindingBuilder.php b/vendor/illuminate/container/ContextualBindingBuilder.php
deleted file mode 100644
index 1d15dcd3..00000000
--- a/vendor/illuminate/container/ContextualBindingBuilder.php
+++ /dev/null
@@ -1,98 +0,0 @@
-concrete = $concrete;
- $this->container = $container;
- }
-
- /**
- * Define the abstract target that depends on the context.
- *
- * @param string $abstract
- * @return $this
- */
- public function needs($abstract)
- {
- $this->needs = $abstract;
-
- return $this;
- }
-
- /**
- * Define the implementation for the contextual binding.
- *
- * @param \Closure|string|array $implementation
- * @return void
- */
- public function give($implementation)
- {
- foreach (Util::arrayWrap($this->concrete) as $concrete) {
- $this->container->addContextualBinding($concrete, $this->needs, $implementation);
- }
- }
-
- /**
- * Define tagged services to be used as the implementation for the contextual binding.
- *
- * @param string $tag
- * @return void
- */
- public function giveTagged($tag)
- {
- $this->give(function ($container) use ($tag) {
- $taggedServices = $container->tagged($tag);
-
- return is_array($taggedServices) ? $taggedServices : iterator_to_array($taggedServices);
- });
- }
-
- /**
- * Specify the configuration item to bind as a primitive.
- *
- * @param string $key
- * @param ?string $default
- * @return void
- */
- public function giveConfig($key, $default = null)
- {
- $this->give(function ($container) use ($key, $default) {
- return $container->get('config')->get($key, $default);
- });
- }
-}
diff --git a/vendor/illuminate/container/EntryNotFoundException.php b/vendor/illuminate/container/EntryNotFoundException.php
deleted file mode 100644
index 42669214..00000000
--- a/vendor/illuminate/container/EntryNotFoundException.php
+++ /dev/null
@@ -1,11 +0,0 @@
-count = $count;
- $this->generator = $generator;
- }
-
- /**
- * Get an iterator from the generator.
- *
- * @return mixed
- */
- #[\ReturnTypeWillChange]
- public function getIterator()
- {
- return ($this->generator)();
- }
-
- /**
- * Get the total number of tagged services.
- *
- * @return int
- */
- #[\ReturnTypeWillChange]
- public function count()
- {
- if (is_callable($count = $this->count)) {
- $this->count = $count();
- }
-
- return $this->count;
- }
-}
diff --git a/vendor/illuminate/container/Util.php b/vendor/illuminate/container/Util.php
deleted file mode 100644
index 8f7e9171..00000000
--- a/vendor/illuminate/container/Util.php
+++ /dev/null
@@ -1,73 +0,0 @@
-getType();
-
- if (! $type instanceof ReflectionNamedType || $type->isBuiltin()) {
- return null;
- }
-
- $name = $type->getName();
-
- if (! is_null($class = $parameter->getDeclaringClass())) {
- if ($name === 'self') {
- return $class->getName();
- }
-
- if ($name === 'parent' && $parent = $class->getParentClass()) {
- return $parent->getName();
- }
- }
-
- return $name;
- }
-}
diff --git a/vendor/illuminate/container/composer.json b/vendor/illuminate/container/composer.json
deleted file mode 100755
index cf931609..00000000
--- a/vendor/illuminate/container/composer.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "name": "illuminate/container",
- "description": "The Illuminate Container package.",
- "license": "MIT",
- "homepage": "https://laravel.com",
- "support": {
- "issues": "https://github.com/laravel/framework/issues",
- "source": "https://github.com/laravel/framework"
- },
- "authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- }
- ],
- "require": {
- "php": "^7.3|^8.0",
- "illuminate/contracts": "^8.0",
- "psr/container": "^1.0"
- },
- "provide": {
- "psr/container-implementation": "1.0"
- },
- "autoload": {
- "psr-4": {
- "Illuminate\\Container\\": ""
- }
- },
- "extra": {
- "branch-alias": {
- "dev-master": "8.x-dev"
- }
- },
- "config": {
- "sort-packages": true
- },
- "minimum-stability": "dev"
-}
diff --git a/vendor/illuminate/contracts/Auth/Access/Authorizable.php b/vendor/illuminate/contracts/Auth/Access/Authorizable.php
deleted file mode 100644
index cedeb6ea..00000000
--- a/vendor/illuminate/contracts/Auth/Access/Authorizable.php
+++ /dev/null
@@ -1,15 +0,0 @@
-id = $id;
- $this->class = $class;
- $this->relations = $relations;
- $this->connection = $connection;
- }
-}
diff --git a/vendor/illuminate/contracts/Debug/ExceptionHandler.php b/vendor/illuminate/contracts/Debug/ExceptionHandler.php
deleted file mode 100644
index 54381a17..00000000
--- a/vendor/illuminate/contracts/Debug/ExceptionHandler.php
+++ /dev/null
@@ -1,46 +0,0 @@
-setupContainer($container ?: new Container);
-
- // Once we have the container setup, we will setup the default configuration
- // options in the container "config" binding. This will make the database
- // manager work correctly out of the box without extreme configuration.
- $this->setupDefaultConfiguration();
-
- $this->setupManager();
- }
-
- /**
- * Setup the default database configuration options.
- *
- * @return void
- */
- protected function setupDefaultConfiguration()
- {
- $this->container['config']['database.fetch'] = PDO::FETCH_OBJ;
-
- $this->container['config']['database.default'] = 'default';
- }
-
- /**
- * Build the database manager instance.
- *
- * @return void
- */
- protected function setupManager()
- {
- $factory = new ConnectionFactory($this->container);
-
- $this->manager = new DatabaseManager($this->container, $factory);
- }
-
- /**
- * Get a connection instance from the global manager.
- *
- * @param string|null $connection
- * @return \Illuminate\Database\Connection
- */
- public static function connection($connection = null)
- {
- return static::$instance->getConnection($connection);
- }
-
- /**
- * Get a fluent query builder instance.
- *
- * @param \Closure|\Illuminate\Database\Query\Builder|string $table
- * @param string|null $as
- * @param string|null $connection
- * @return \Illuminate\Database\Query\Builder
- */
- public static function table($table, $as = null, $connection = null)
- {
- return static::$instance->connection($connection)->table($table, $as);
- }
-
- /**
- * Get a schema builder instance.
- *
- * @param string|null $connection
- * @return \Illuminate\Database\Schema\Builder
- */
- public static function schema($connection = null)
- {
- return static::$instance->connection($connection)->getSchemaBuilder();
- }
-
- /**
- * Get a registered connection instance.
- *
- * @param string|null $name
- * @return \Illuminate\Database\Connection
- */
- public function getConnection($name = null)
- {
- return $this->manager->connection($name);
- }
-
- /**
- * Register a connection with the manager.
- *
- * @param array $config
- * @param string $name
- * @return void
- */
- public function addConnection(array $config, $name = 'default')
- {
- $connections = $this->container['config']['database.connections'];
-
- $connections[$name] = $config;
-
- $this->container['config']['database.connections'] = $connections;
- }
-
- /**
- * Bootstrap Eloquent so it is ready for usage.
- *
- * @return void
- */
- public function bootEloquent()
- {
- Eloquent::setConnectionResolver($this->manager);
-
- // If we have an event dispatcher instance, we will go ahead and register it
- // with the Eloquent ORM, allowing for model callbacks while creating and
- // updating "model" instances; however, it is not necessary to operate.
- if ($dispatcher = $this->getEventDispatcher()) {
- Eloquent::setEventDispatcher($dispatcher);
- }
- }
-
- /**
- * Set the fetch mode for the database connections.
- *
- * @param int $fetchMode
- * @return $this
- */
- public function setFetchMode($fetchMode)
- {
- $this->container['config']['database.fetch'] = $fetchMode;
-
- return $this;
- }
-
- /**
- * Get the database manager instance.
- *
- * @return \Illuminate\Database\DatabaseManager
- */
- public function getDatabaseManager()
- {
- return $this->manager;
- }
-
- /**
- * Get the current event dispatcher instance.
- *
- * @return \Illuminate\Contracts\Events\Dispatcher|null
- */
- public function getEventDispatcher()
- {
- if ($this->container->bound('events')) {
- return $this->container['events'];
- }
- }
-
- /**
- * Set the event dispatcher instance to be used by connections.
- *
- * @param \Illuminate\Contracts\Events\Dispatcher $dispatcher
- * @return void
- */
- public function setEventDispatcher(Dispatcher $dispatcher)
- {
- $this->container->instance('events', $dispatcher);
- }
-
- /**
- * Dynamically pass methods to the default connection.
- *
- * @param string $method
- * @param array $parameters
- * @return mixed
- */
- public static function __callStatic($method, $parameters)
- {
- return static::connection()->$method(...$parameters);
- }
-}
diff --git a/vendor/illuminate/database/ClassMorphViolationException.php b/vendor/illuminate/database/ClassMorphViolationException.php
deleted file mode 100644
index 6594d2d9..00000000
--- a/vendor/illuminate/database/ClassMorphViolationException.php
+++ /dev/null
@@ -1,29 +0,0 @@
-model = $class;
- }
-}
diff --git a/vendor/illuminate/database/Concerns/BuildsQueries.php b/vendor/illuminate/database/Concerns/BuildsQueries.php
deleted file mode 100644
index 8e712f0d..00000000
--- a/vendor/illuminate/database/Concerns/BuildsQueries.php
+++ /dev/null
@@ -1,431 +0,0 @@
-enforceOrderBy();
-
- $page = 1;
-
- do {
- // We'll execute the query for the given page and get the results. If there are
- // no results we can just break and return from here. When there are results
- // we will call the callback with the current chunk of these results here.
- $results = $this->forPage($page, $count)->get();
-
- $countResults = $results->count();
-
- if ($countResults == 0) {
- break;
- }
-
- // On each chunk result set, we will pass them to the callback and then let the
- // developer take care of everything within the callback, which allows us to
- // keep the memory low for spinning through large result sets for working.
- if ($callback($results, $page) === false) {
- return false;
- }
-
- unset($results);
-
- $page++;
- } while ($countResults == $count);
-
- return true;
- }
-
- /**
- * Run a map over each item while chunking.
- *
- * @param callable $callback
- * @param int $count
- * @return \Illuminate\Support\Collection
- */
- public function chunkMap(callable $callback, $count = 1000)
- {
- $collection = Collection::make();
-
- $this->chunk($count, function ($items) use ($collection, $callback) {
- $items->each(function ($item) use ($collection, $callback) {
- $collection->push($callback($item));
- });
- });
-
- return $collection;
- }
-
- /**
- * Execute a callback over each item while chunking.
- *
- * @param callable $callback
- * @param int $count
- * @return bool
- *
- * @throws \RuntimeException
- */
- public function each(callable $callback, $count = 1000)
- {
- return $this->chunk($count, function ($results) use ($callback) {
- foreach ($results as $key => $value) {
- if ($callback($value, $key) === false) {
- return false;
- }
- }
- });
- }
-
- /**
- * Chunk the results of a query by comparing IDs.
- *
- * @param int $count
- * @param callable $callback
- * @param string|null $column
- * @param string|null $alias
- * @return bool
- */
- public function chunkById($count, callable $callback, $column = null, $alias = null)
- {
- $column = $column ?? $this->defaultKeyName();
-
- $alias = $alias ?? $column;
-
- $lastId = null;
-
- $page = 1;
-
- do {
- $clone = clone $this;
-
- // We'll execute the query for the given page and get the results. If there are
- // no results we can just break and return from here. When there are results
- // we will call the callback with the current chunk of these results here.
- $results = $clone->forPageAfterId($count, $lastId, $column)->get();
-
- $countResults = $results->count();
-
- if ($countResults == 0) {
- break;
- }
-
- // On each chunk result set, we will pass them to the callback and then let the
- // developer take care of everything within the callback, which allows us to
- // keep the memory low for spinning through large result sets for working.
- if ($callback($results, $page) === false) {
- return false;
- }
-
- $lastId = $results->last()->{$alias};
-
- if ($lastId === null) {
- throw new RuntimeException("The chunkById operation was aborted because the [{$alias}] column is not present in the query result.");
- }
-
- unset($results);
-
- $page++;
- } while ($countResults == $count);
-
- return true;
- }
-
- /**
- * Execute a callback over each item while chunking by ID.
- *
- * @param callable $callback
- * @param int $count
- * @param string|null $column
- * @param string|null $alias
- * @return bool
- */
- public function eachById(callable $callback, $count = 1000, $column = null, $alias = null)
- {
- return $this->chunkById($count, function ($results, $page) use ($callback, $count) {
- foreach ($results as $key => $value) {
- if ($callback($value, (($page - 1) * $count) + $key) === false) {
- return false;
- }
- }
- }, $column, $alias);
- }
-
- /**
- * Query lazily, by chunks of the given size.
- *
- * @param int $chunkSize
- * @return \Illuminate\Support\LazyCollection
- *
- * @throws \InvalidArgumentException
- */
- public function lazy($chunkSize = 1000)
- {
- if ($chunkSize < 1) {
- throw new InvalidArgumentException('The chunk size should be at least 1');
- }
-
- $this->enforceOrderBy();
-
- return LazyCollection::make(function () use ($chunkSize) {
- $page = 1;
-
- while (true) {
- $results = $this->forPage($page++, $chunkSize)->get();
-
- foreach ($results as $result) {
- yield $result;
- }
-
- if ($results->count() < $chunkSize) {
- return;
- }
- }
- });
- }
-
- /**
- * Query lazily, by chunking the results of a query by comparing IDs.
- *
- * @param int $count
- * @param string|null $column
- * @param string|null $alias
- * @return \Illuminate\Support\LazyCollection
- *
- * @throws \InvalidArgumentException
- */
- public function lazyById($chunkSize = 1000, $column = null, $alias = null)
- {
- if ($chunkSize < 1) {
- throw new InvalidArgumentException('The chunk size should be at least 1');
- }
-
- $column = $column ?? $this->defaultKeyName();
-
- $alias = $alias ?? $column;
-
- return LazyCollection::make(function () use ($chunkSize, $column, $alias) {
- $lastId = null;
-
- while (true) {
- $clone = clone $this;
-
- $results = $clone->forPageAfterId($chunkSize, $lastId, $column)->get();
-
- foreach ($results as $result) {
- yield $result;
- }
-
- if ($results->count() < $chunkSize) {
- return;
- }
-
- $lastId = $results->last()->{$alias};
- }
- });
- }
-
- /**
- * Execute the query and get the first result.
- *
- * @param array|string $columns
- * @return \Illuminate\Database\Eloquent\Model|object|static|null
- */
- public function first($columns = ['*'])
- {
- return $this->take(1)->get($columns)->first();
- }
-
- /**
- * Execute the query and get the first result if it's the sole matching record.
- *
- * @param array|string $columns
- * @return \Illuminate\Database\Eloquent\Model|object|static|null
- *
- * @throws \Illuminate\Database\RecordsNotFoundException
- * @throws \Illuminate\Database\MultipleRecordsFoundException
- */
- public function sole($columns = ['*'])
- {
- $result = $this->take(2)->get($columns);
-
- if ($result->isEmpty()) {
- throw new RecordsNotFoundException;
- }
-
- if ($result->count() > 1) {
- throw new MultipleRecordsFoundException;
- }
-
- return $result->first();
- }
-
- /**
- * Paginate the given query using a cursor paginator.
- *
- * @param int $perPage
- * @param array $columns
- * @param string $cursorName
- * @param \Illuminate\Pagination\Cursor|string|null $cursor
- * @return \Illuminate\Contracts\Pagination\CursorPaginator
- */
- protected function paginateUsingCursor($perPage, $columns = ['*'], $cursorName = 'cursor', $cursor = null)
- {
- if (! $cursor instanceof Cursor) {
- $cursor = is_string($cursor)
- ? Cursor::fromEncoded($cursor)
- : CursorPaginator::resolveCurrentCursor($cursorName, $cursor);
- }
-
- $orders = $this->ensureOrderForCursorPagination(! is_null($cursor) && $cursor->pointsToPreviousItems());
-
- if (! is_null($cursor)) {
- $addCursorConditions = function (self $builder, $previousColumn, $i) use (&$addCursorConditions, $cursor, $orders) {
- if (! is_null($previousColumn)) {
- $builder->where(
- $this->getOriginalColumnNameForCursorPagination($this, $previousColumn),
- '=',
- $cursor->parameter($previousColumn)
- );
- }
-
- $builder->where(function (self $builder) use ($addCursorConditions, $cursor, $orders, $i) {
- ['column' => $column, 'direction' => $direction] = $orders[$i];
-
- $builder->where(
- $this->getOriginalColumnNameForCursorPagination($this, $column),
- $direction === 'asc' ? '>' : '<',
- $cursor->parameter($column)
- );
-
- if ($i < $orders->count() - 1) {
- $builder->orWhere(function (self $builder) use ($addCursorConditions, $column, $i) {
- $addCursorConditions($builder, $column, $i + 1);
- });
- }
- });
- };
-
- $addCursorConditions($this, null, 0);
- }
-
- $this->limit($perPage + 1);
-
- return $this->cursorPaginator($this->get($columns), $perPage, $cursor, [
- 'path' => Paginator::resolveCurrentPath(),
- 'cursorName' => $cursorName,
- 'parameters' => $orders->pluck('column')->toArray(),
- ]);
- }
-
- /**
- * Get the original column name of the given column, without any aliasing.
- *
- * @param \Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $builder
- * @param string $parameter
- * @return string
- */
- protected function getOriginalColumnNameForCursorPagination($builder, string $parameter)
- {
- $columns = $builder instanceof Builder ? $builder->getQuery()->columns : $builder->columns;
-
- if (! is_null($columns)) {
- foreach ($columns as $column) {
- if (($position = stripos($column, ' as ')) !== false) {
- $as = substr($column, $position, 4);
-
- [$original, $alias] = explode($as, $column);
-
- if ($parameter === $alias) {
- return $original;
- }
- }
- }
- }
-
- return $parameter;
- }
-
- /**
- * Create a new length-aware paginator instance.
- *
- * @param \Illuminate\Support\Collection $items
- * @param int $total
- * @param int $perPage
- * @param int $currentPage
- * @param array $options
- * @return \Illuminate\Pagination\LengthAwarePaginator
- */
- protected function paginator($items, $total, $perPage, $currentPage, $options)
- {
- return Container::getInstance()->makeWith(LengthAwarePaginator::class, compact(
- 'items', 'total', 'perPage', 'currentPage', 'options'
- ));
- }
-
- /**
- * Create a new simple paginator instance.
- *
- * @param \Illuminate\Support\Collection $items
- * @param int $perPage
- * @param int $currentPage
- * @param array $options
- * @return \Illuminate\Pagination\Paginator
- */
- protected function simplePaginator($items, $perPage, $currentPage, $options)
- {
- return Container::getInstance()->makeWith(Paginator::class, compact(
- 'items', 'perPage', 'currentPage', 'options'
- ));
- }
-
- /**
- * Create a new cursor paginator instance.
- *
- * @param \Illuminate\Support\Collection $items
- * @param int $perPage
- * @param \Illuminate\Pagination\Cursor $cursor
- * @param array $options
- * @return \Illuminate\Pagination\CursorPaginator
- */
- protected function cursorPaginator($items, $perPage, $cursor, $options)
- {
- return Container::getInstance()->makeWith(CursorPaginator::class, compact(
- 'items', 'perPage', 'cursor', 'options'
- ));
- }
-
- /**
- * Pass the query to a given callback.
- *
- * @param callable $callback
- * @return $this|mixed
- */
- public function tap($callback)
- {
- return $this->when(true, $callback);
- }
-}
diff --git a/vendor/illuminate/database/Concerns/ExplainsQueries.php b/vendor/illuminate/database/Concerns/ExplainsQueries.php
deleted file mode 100644
index 7168de1e..00000000
--- a/vendor/illuminate/database/Concerns/ExplainsQueries.php
+++ /dev/null
@@ -1,24 +0,0 @@
-toSql();
-
- $bindings = $this->getBindings();
-
- $explanation = $this->getConnection()->select('EXPLAIN '.$sql, $bindings);
-
- return new Collection($explanation);
- }
-}
diff --git a/vendor/illuminate/database/Concerns/ManagesTransactions.php b/vendor/illuminate/database/Concerns/ManagesTransactions.php
deleted file mode 100644
index fac70295..00000000
--- a/vendor/illuminate/database/Concerns/ManagesTransactions.php
+++ /dev/null
@@ -1,334 +0,0 @@
-beginTransaction();
-
- // We'll simply execute the given callback within a try / catch block and if we
- // catch any exception we can rollback this transaction so that none of this
- // gets actually persisted to a database or stored in a permanent fashion.
- try {
- $callbackResult = $callback($this);
- }
-
- // If we catch an exception we'll rollback this transaction and try again if we
- // are not out of attempts. If we are out of attempts we will just throw the
- // exception back out and let the developer handle an uncaught exceptions.
- catch (Throwable $e) {
- $this->handleTransactionException(
- $e, $currentAttempt, $attempts
- );
-
- continue;
- }
-
- try {
- if ($this->transactions == 1) {
- $this->getPdo()->commit();
- }
-
- $this->transactions = max(0, $this->transactions - 1);
-
- if ($this->transactions == 0) {
- optional($this->transactionsManager)->commit($this->getName());
- }
- } catch (Throwable $e) {
- $this->handleCommitTransactionException(
- $e, $currentAttempt, $attempts
- );
-
- continue;
- }
-
- $this->fireConnectionEvent('committed');
-
- return $callbackResult;
- }
- }
-
- /**
- * Handle an exception encountered when running a transacted statement.
- *
- * @param \Throwable $e
- * @param int $currentAttempt
- * @param int $maxAttempts
- * @return void
- *
- * @throws \Throwable
- */
- protected function handleTransactionException(Throwable $e, $currentAttempt, $maxAttempts)
- {
- // On a deadlock, MySQL rolls back the entire transaction so we can't just
- // retry the query. We have to throw this exception all the way out and
- // let the developer handle it in another way. We will decrement too.
- if ($this->causedByConcurrencyError($e) &&
- $this->transactions > 1) {
- $this->transactions--;
-
- optional($this->transactionsManager)->rollback(
- $this->getName(), $this->transactions
- );
-
- throw $e;
- }
-
- // If there was an exception we will rollback this transaction and then we
- // can check if we have exceeded the maximum attempt count for this and
- // if we haven't we will return and try this query again in our loop.
- $this->rollBack();
-
- if ($this->causedByConcurrencyError($e) &&
- $currentAttempt < $maxAttempts) {
- return;
- }
-
- throw $e;
- }
-
- /**
- * Start a new database transaction.
- *
- * @return void
- *
- * @throws \Throwable
- */
- public function beginTransaction()
- {
- $this->createTransaction();
-
- $this->transactions++;
-
- optional($this->transactionsManager)->begin(
- $this->getName(), $this->transactions
- );
-
- $this->fireConnectionEvent('beganTransaction');
- }
-
- /**
- * Create a transaction within the database.
- *
- * @return void
- *
- * @throws \Throwable
- */
- protected function createTransaction()
- {
- if ($this->transactions == 0) {
- $this->reconnectIfMissingConnection();
-
- try {
- $this->getPdo()->beginTransaction();
- } catch (Throwable $e) {
- $this->handleBeginTransactionException($e);
- }
- } elseif ($this->transactions >= 1 && $this->queryGrammar->supportsSavepoints()) {
- $this->createSavepoint();
- }
- }
-
- /**
- * Create a save point within the database.
- *
- * @return void
- *
- * @throws \Throwable
- */
- protected function createSavepoint()
- {
- $this->getPdo()->exec(
- $this->queryGrammar->compileSavepoint('trans'.($this->transactions + 1))
- );
- }
-
- /**
- * Handle an exception from a transaction beginning.
- *
- * @param \Throwable $e
- * @return void
- *
- * @throws \Throwable
- */
- protected function handleBeginTransactionException(Throwable $e)
- {
- if ($this->causedByLostConnection($e)) {
- $this->reconnect();
-
- $this->getPdo()->beginTransaction();
- } else {
- throw $e;
- }
- }
-
- /**
- * Commit the active database transaction.
- *
- * @return void
- *
- * @throws \Throwable
- */
- public function commit()
- {
- if ($this->transactions == 1) {
- $this->getPdo()->commit();
- }
-
- $this->transactions = max(0, $this->transactions - 1);
-
- if ($this->transactions == 0) {
- optional($this->transactionsManager)->commit($this->getName());
- }
-
- $this->fireConnectionEvent('committed');
- }
-
- /**
- * Handle an exception encountered when committing a transaction.
- *
- * @param \Throwable $e
- * @param int $currentAttempt
- * @param int $maxAttempts
- * @return void
- *
- * @throws \Throwable
- */
- protected function handleCommitTransactionException(Throwable $e, $currentAttempt, $maxAttempts)
- {
- $this->transactions = max(0, $this->transactions - 1);
-
- if ($this->causedByConcurrencyError($e) &&
- $currentAttempt < $maxAttempts) {
- return;
- }
-
- if ($this->causedByLostConnection($e)) {
- $this->transactions = 0;
- }
-
- throw $e;
- }
-
- /**
- * Rollback the active database transaction.
- *
- * @param int|null $toLevel
- * @return void
- *
- * @throws \Throwable
- */
- public function rollBack($toLevel = null)
- {
- // We allow developers to rollback to a certain transaction level. We will verify
- // that this given transaction level is valid before attempting to rollback to
- // that level. If it's not we will just return out and not attempt anything.
- $toLevel = is_null($toLevel)
- ? $this->transactions - 1
- : $toLevel;
-
- if ($toLevel < 0 || $toLevel >= $this->transactions) {
- return;
- }
-
- // Next, we will actually perform this rollback within this database and fire the
- // rollback event. We will also set the current transaction level to the given
- // level that was passed into this method so it will be right from here out.
- try {
- $this->performRollBack($toLevel);
- } catch (Throwable $e) {
- $this->handleRollBackException($e);
- }
-
- $this->transactions = $toLevel;
-
- optional($this->transactionsManager)->rollback(
- $this->getName(), $this->transactions
- );
-
- $this->fireConnectionEvent('rollingBack');
- }
-
- /**
- * Perform a rollback within the database.
- *
- * @param int $toLevel
- * @return void
- *
- * @throws \Throwable
- */
- protected function performRollBack($toLevel)
- {
- if ($toLevel == 0) {
- $this->getPdo()->rollBack();
- } elseif ($this->queryGrammar->supportsSavepoints()) {
- $this->getPdo()->exec(
- $this->queryGrammar->compileSavepointRollBack('trans'.($toLevel + 1))
- );
- }
- }
-
- /**
- * Handle an exception from a rollback.
- *
- * @param \Throwable $e
- * @return void
- *
- * @throws \Throwable
- */
- protected function handleRollBackException(Throwable $e)
- {
- if ($this->causedByLostConnection($e)) {
- $this->transactions = 0;
-
- optional($this->transactionsManager)->rollback(
- $this->getName(), $this->transactions
- );
- }
-
- throw $e;
- }
-
- /**
- * Get the number of active transactions.
- *
- * @return int
- */
- public function transactionLevel()
- {
- return $this->transactions;
- }
-
- /**
- * Execute the callback after a transaction commits.
- *
- * @param callable $callback
- * @return void
- *
- * @throws \RuntimeException
- */
- public function afterCommit($callback)
- {
- if ($this->transactionsManager) {
- return $this->transactionsManager->addCallback($callback);
- }
-
- throw new RuntimeException('Transactions Manager has not been set.');
- }
-}
diff --git a/vendor/illuminate/database/ConfigurationUrlParser.php b/vendor/illuminate/database/ConfigurationUrlParser.php
deleted file mode 100644
index bc7c624a..00000000
--- a/vendor/illuminate/database/ConfigurationUrlParser.php
+++ /dev/null
@@ -1,10 +0,0 @@
-pdo = $pdo;
-
- // First we will setup the default properties. We keep track of the DB
- // name we are connected to since it is needed when some reflective
- // type commands are run such as checking whether a table exists.
- $this->database = $database;
-
- $this->tablePrefix = $tablePrefix;
-
- $this->config = $config;
-
- // We need to initialize a query grammar and the query post processors
- // which are both very important parts of the database abstractions
- // so we initialize these to their default values while starting.
- $this->useDefaultQueryGrammar();
-
- $this->useDefaultPostProcessor();
- }
-
- /**
- * Set the query grammar to the default implementation.
- *
- * @return void
- */
- public function useDefaultQueryGrammar()
- {
- $this->queryGrammar = $this->getDefaultQueryGrammar();
- }
-
- /**
- * Get the default query grammar instance.
- *
- * @return \Illuminate\Database\Query\Grammars\Grammar
- */
- protected function getDefaultQueryGrammar()
- {
- return new QueryGrammar;
- }
-
- /**
- * Set the schema grammar to the default implementation.
- *
- * @return void
- */
- public function useDefaultSchemaGrammar()
- {
- $this->schemaGrammar = $this->getDefaultSchemaGrammar();
- }
-
- /**
- * Get the default schema grammar instance.
- *
- * @return \Illuminate\Database\Schema\Grammars\Grammar
- */
- protected function getDefaultSchemaGrammar()
- {
- //
- }
-
- /**
- * Set the query post processor to the default implementation.
- *
- * @return void
- */
- public function useDefaultPostProcessor()
- {
- $this->postProcessor = $this->getDefaultPostProcessor();
- }
-
- /**
- * Get the default post processor instance.
- *
- * @return \Illuminate\Database\Query\Processors\Processor
- */
- protected function getDefaultPostProcessor()
- {
- return new Processor;
- }
-
- /**
- * Get a schema builder instance for the connection.
- *
- * @return \Illuminate\Database\Schema\Builder
- */
- public function getSchemaBuilder()
- {
- if (is_null($this->schemaGrammar)) {
- $this->useDefaultSchemaGrammar();
- }
-
- return new SchemaBuilder($this);
- }
-
- /**
- * Begin a fluent query against a database table.
- *
- * @param \Closure|\Illuminate\Database\Query\Builder|string $table
- * @param string|null $as
- * @return \Illuminate\Database\Query\Builder
- */
- public function table($table, $as = null)
- {
- return $this->query()->from($table, $as);
- }
-
- /**
- * Get a new query builder instance.
- *
- * @return \Illuminate\Database\Query\Builder
- */
- public function query()
- {
- return new QueryBuilder(
- $this, $this->getQueryGrammar(), $this->getPostProcessor()
- );
- }
-
- /**
- * Run a select statement and return a single result.
- *
- * @param string $query
- * @param array $bindings
- * @param bool $useReadPdo
- * @return mixed
- */
- public function selectOne($query, $bindings = [], $useReadPdo = true)
- {
- $records = $this->select($query, $bindings, $useReadPdo);
-
- return array_shift($records);
- }
-
- /**
- * Run a select statement against the database.
- *
- * @param string $query
- * @param array $bindings
- * @return array
- */
- public function selectFromWriteConnection($query, $bindings = [])
- {
- return $this->select($query, $bindings, false);
- }
-
- /**
- * Run a select statement against the database.
- *
- * @param string $query
- * @param array $bindings
- * @param bool $useReadPdo
- * @return array
- */
- public function select($query, $bindings = [], $useReadPdo = true)
- {
- return $this->run($query, $bindings, function ($query, $bindings) use ($useReadPdo) {
- if ($this->pretending()) {
- return [];
- }
-
- // For select statements, we'll simply execute the query and return an array
- // of the database result set. Each element in the array will be a single
- // row from the database table, and will either be an array or objects.
- $statement = $this->prepared(
- $this->getPdoForSelect($useReadPdo)->prepare($query)
- );
-
- $this->bindValues($statement, $this->prepareBindings($bindings));
-
- $statement->execute();
-
- return $statement->fetchAll();
- });
- }
-
- /**
- * Run a select statement against the database and returns a generator.
- *
- * @param string $query
- * @param array $bindings
- * @param bool $useReadPdo
- * @return \Generator
- */
- public function cursor($query, $bindings = [], $useReadPdo = true)
- {
- $statement = $this->run($query, $bindings, function ($query, $bindings) use ($useReadPdo) {
- if ($this->pretending()) {
- return [];
- }
-
- // First we will create a statement for the query. Then, we will set the fetch
- // mode and prepare the bindings for the query. Once that's done we will be
- // ready to execute the query against the database and return the cursor.
- $statement = $this->prepared($this->getPdoForSelect($useReadPdo)
- ->prepare($query));
-
- $this->bindValues(
- $statement, $this->prepareBindings($bindings)
- );
-
- // Next, we'll execute the query against the database and return the statement
- // so we can return the cursor. The cursor will use a PHP generator to give
- // back one row at a time without using a bunch of memory to render them.
- $statement->execute();
-
- return $statement;
- });
-
- while ($record = $statement->fetch()) {
- yield $record;
- }
- }
-
- /**
- * Configure the PDO prepared statement.
- *
- * @param \PDOStatement $statement
- * @return \PDOStatement
- */
- protected function prepared(PDOStatement $statement)
- {
- $statement->setFetchMode($this->fetchMode);
-
- $this->event(new StatementPrepared(
- $this, $statement
- ));
-
- return $statement;
- }
-
- /**
- * Get the PDO connection to use for a select query.
- *
- * @param bool $useReadPdo
- * @return \PDO
- */
- protected function getPdoForSelect($useReadPdo = true)
- {
- return $useReadPdo ? $this->getReadPdo() : $this->getPdo();
- }
-
- /**
- * Run an insert statement against the database.
- *
- * @param string $query
- * @param array $bindings
- * @return bool
- */
- public function insert($query, $bindings = [])
- {
- return $this->statement($query, $bindings);
- }
-
- /**
- * Run an update statement against the database.
- *
- * @param string $query
- * @param array $bindings
- * @return int
- */
- public function update($query, $bindings = [])
- {
- return $this->affectingStatement($query, $bindings);
- }
-
- /**
- * Run a delete statement against the database.
- *
- * @param string $query
- * @param array $bindings
- * @return int
- */
- public function delete($query, $bindings = [])
- {
- return $this->affectingStatement($query, $bindings);
- }
-
- /**
- * Execute an SQL statement and return the boolean result.
- *
- * @param string $query
- * @param array $bindings
- * @return bool
- */
- public function statement($query, $bindings = [])
- {
- return $this->run($query, $bindings, function ($query, $bindings) {
- if ($this->pretending()) {
- return true;
- }
-
- $statement = $this->getPdo()->prepare($query);
-
- $this->bindValues($statement, $this->prepareBindings($bindings));
-
- $this->recordsHaveBeenModified();
-
- return $statement->execute();
- });
- }
-
- /**
- * Run an SQL statement and get the number of rows affected.
- *
- * @param string $query
- * @param array $bindings
- * @return int
- */
- public function affectingStatement($query, $bindings = [])
- {
- return $this->run($query, $bindings, function ($query, $bindings) {
- if ($this->pretending()) {
- return 0;
- }
-
- // For update or delete statements, we want to get the number of rows affected
- // by the statement and return that back to the developer. We'll first need
- // to execute the statement and then we'll use PDO to fetch the affected.
- $statement = $this->getPdo()->prepare($query);
-
- $this->bindValues($statement, $this->prepareBindings($bindings));
-
- $statement->execute();
-
- $this->recordsHaveBeenModified(
- ($count = $statement->rowCount()) > 0
- );
-
- return $count;
- });
- }
-
- /**
- * Run a raw, unprepared query against the PDO connection.
- *
- * @param string $query
- * @return bool
- */
- public function unprepared($query)
- {
- return $this->run($query, [], function ($query) {
- if ($this->pretending()) {
- return true;
- }
-
- $this->recordsHaveBeenModified(
- $change = $this->getPdo()->exec($query) !== false
- );
-
- return $change;
- });
- }
-
- /**
- * Execute the given callback in "dry run" mode.
- *
- * @param \Closure $callback
- * @return array
- */
- public function pretend(Closure $callback)
- {
- return $this->withFreshQueryLog(function () use ($callback) {
- $this->pretending = true;
-
- // Basically to make the database connection "pretend", we will just return
- // the default values for all the query methods, then we will return an
- // array of queries that were "executed" within the Closure callback.
- $callback($this);
-
- $this->pretending = false;
-
- return $this->queryLog;
- });
- }
-
- /**
- * Execute the given callback in "dry run" mode.
- *
- * @param \Closure $callback
- * @return array
- */
- protected function withFreshQueryLog($callback)
- {
- $loggingQueries = $this->loggingQueries;
-
- // First we will back up the value of the logging queries property and then
- // we'll be ready to run callbacks. This query log will also get cleared
- // so we will have a new log of all the queries that are executed now.
- $this->enableQueryLog();
-
- $this->queryLog = [];
-
- // Now we'll execute this callback and capture the result. Once it has been
- // executed we will restore the value of query logging and give back the
- // value of the callback so the original callers can have the results.
- $result = $callback();
-
- $this->loggingQueries = $loggingQueries;
-
- return $result;
- }
-
- /**
- * Bind values to their parameters in the given statement.
- *
- * @param \PDOStatement $statement
- * @param array $bindings
- * @return void
- */
- public function bindValues($statement, $bindings)
- {
- foreach ($bindings as $key => $value) {
- $statement->bindValue(
- is_string($key) ? $key : $key + 1,
- $value,
- is_int($value) ? PDO::PARAM_INT : PDO::PARAM_STR
- );
- }
- }
-
- /**
- * Prepare the query bindings for execution.
- *
- * @param array $bindings
- * @return array
- */
- public function prepareBindings(array $bindings)
- {
- $grammar = $this->getQueryGrammar();
-
- foreach ($bindings as $key => $value) {
- // We need to transform all instances of DateTimeInterface into the actual
- // date string. Each query grammar maintains its own date string format
- // so we'll just ask the grammar for the format to get from the date.
- if ($value instanceof DateTimeInterface) {
- $bindings[$key] = $value->format($grammar->getDateFormat());
- } elseif (is_bool($value)) {
- $bindings[$key] = (int) $value;
- }
- }
-
- return $bindings;
- }
-
- /**
- * Run a SQL statement and log its execution context.
- *
- * @param string $query
- * @param array $bindings
- * @param \Closure $callback
- * @return mixed
- *
- * @throws \Illuminate\Database\QueryException
- */
- protected function run($query, $bindings, Closure $callback)
- {
- foreach ($this->beforeExecutingCallbacks as $beforeExecutingCallback) {
- $beforeExecutingCallback($query, $bindings, $this);
- }
-
- $this->reconnectIfMissingConnection();
-
- $start = microtime(true);
-
- // Here we will run this query. If an exception occurs we'll determine if it was
- // caused by a connection that has been lost. If that is the cause, we'll try
- // to re-establish connection and re-run the query with a fresh connection.
- try {
- $result = $this->runQueryCallback($query, $bindings, $callback);
- } catch (QueryException $e) {
- $result = $this->handleQueryException(
- $e, $query, $bindings, $callback
- );
- }
-
- // Once we have run the query we will calculate the time that it took to run and
- // then log the query, bindings, and execution time so we will report them on
- // the event that the developer needs them. We'll log time in milliseconds.
- $this->logQuery(
- $query, $bindings, $this->getElapsedTime($start)
- );
-
- return $result;
- }
-
- /**
- * Run a SQL statement.
- *
- * @param string $query
- * @param array $bindings
- * @param \Closure $callback
- * @return mixed
- *
- * @throws \Illuminate\Database\QueryException
- */
- protected function runQueryCallback($query, $bindings, Closure $callback)
- {
- // To execute the statement, we'll simply call the callback, which will actually
- // run the SQL against the PDO connection. Then we can calculate the time it
- // took to execute and log the query SQL, bindings and time in our memory.
- try {
- return $callback($query, $bindings);
- }
-
- // If an exception occurs when attempting to run a query, we'll format the error
- // message to include the bindings with SQL, which will make this exception a
- // lot more helpful to the developer instead of just the database's errors.
- catch (Exception $e) {
- throw new QueryException(
- $query, $this->prepareBindings($bindings), $e
- );
- }
- }
-
- /**
- * Log a query in the connection's query log.
- *
- * @param string $query
- * @param array $bindings
- * @param float|null $time
- * @return void
- */
- public function logQuery($query, $bindings, $time = null)
- {
- $this->event(new QueryExecuted($query, $bindings, $time, $this));
-
- if ($this->loggingQueries) {
- $this->queryLog[] = compact('query', 'bindings', 'time');
- }
- }
-
- /**
- * Get the elapsed time since a given starting point.
- *
- * @param int $start
- * @return float
- */
- protected function getElapsedTime($start)
- {
- return round((microtime(true) - $start) * 1000, 2);
- }
-
- /**
- * Handle a query exception.
- *
- * @param \Illuminate\Database\QueryException $e
- * @param string $query
- * @param array $bindings
- * @param \Closure $callback
- * @return mixed
- *
- * @throws \Illuminate\Database\QueryException
- */
- protected function handleQueryException(QueryException $e, $query, $bindings, Closure $callback)
- {
- if ($this->transactions >= 1) {
- throw $e;
- }
-
- return $this->tryAgainIfCausedByLostConnection(
- $e, $query, $bindings, $callback
- );
- }
-
- /**
- * Handle a query exception that occurred during query execution.
- *
- * @param \Illuminate\Database\QueryException $e
- * @param string $query
- * @param array $bindings
- * @param \Closure $callback
- * @return mixed
- *
- * @throws \Illuminate\Database\QueryException
- */
- protected function tryAgainIfCausedByLostConnection(QueryException $e, $query, $bindings, Closure $callback)
- {
- if ($this->causedByLostConnection($e->getPrevious())) {
- $this->reconnect();
-
- return $this->runQueryCallback($query, $bindings, $callback);
- }
-
- throw $e;
- }
-
- /**
- * Reconnect to the database.
- *
- * @return void
- *
- * @throws \LogicException
- */
- public function reconnect()
- {
- if (is_callable($this->reconnector)) {
- $this->doctrineConnection = null;
-
- return call_user_func($this->reconnector, $this);
- }
-
- throw new LogicException('Lost connection and no reconnector available.');
- }
-
- /**
- * Reconnect to the database if a PDO connection is missing.
- *
- * @return void
- */
- protected function reconnectIfMissingConnection()
- {
- if (is_null($this->pdo)) {
- $this->reconnect();
- }
- }
-
- /**
- * Disconnect from the underlying PDO connection.
- *
- * @return void
- */
- public function disconnect()
- {
- $this->setPdo(null)->setReadPdo(null);
- }
-
- /**
- * Register a hook to be run just before a database query is executed.
- *
- * @param \Closure $callback
- * @return $this
- */
- public function beforeExecuting(Closure $callback)
- {
- $this->beforeExecutingCallbacks[] = $callback;
-
- return $this;
- }
-
- /**
- * Register a database query listener with the connection.
- *
- * @param \Closure $callback
- * @return void
- */
- public function listen(Closure $callback)
- {
- if (isset($this->events)) {
- $this->events->listen(Events\QueryExecuted::class, $callback);
- }
- }
-
- /**
- * Fire an event for this connection.
- *
- * @param string $event
- * @return array|null
- */
- protected function fireConnectionEvent($event)
- {
- if (! isset($this->events)) {
- return;
- }
-
- switch ($event) {
- case 'beganTransaction':
- return $this->events->dispatch(new TransactionBeginning($this));
- case 'committed':
- return $this->events->dispatch(new TransactionCommitted($this));
- case 'rollingBack':
- return $this->events->dispatch(new TransactionRolledBack($this));
- }
- }
-
- /**
- * Fire the given event if possible.
- *
- * @param mixed $event
- * @return void
- */
- protected function event($event)
- {
- if (isset($this->events)) {
- $this->events->dispatch($event);
- }
- }
-
- /**
- * Get a new raw query expression.
- *
- * @param mixed $value
- * @return \Illuminate\Database\Query\Expression
- */
- public function raw($value)
- {
- return new Expression($value);
- }
-
- /**
- * Determine if the database connection has modified any database records.
- *
- * @return bool
- */
- public function hasModifiedRecords()
- {
- return $this->recordsModified;
- }
-
- /**
- * Indicate if any records have been modified.
- *
- * @param bool $value
- * @return void
- */
- public function recordsHaveBeenModified($value = true)
- {
- if (! $this->recordsModified) {
- $this->recordsModified = $value;
- }
- }
-
- /**
- * Set the record modification state.
- *
- * @param bool $value
- * @return $this
- */
- public function setRecordModificationState(bool $value)
- {
- $this->recordsModified = $value;
-
- return $this;
- }
-
- /**
- * Reset the record modification state.
- *
- * @return void
- */
- public function forgetRecordModificationState()
- {
- $this->recordsModified = false;
- }
-
- /**
- * Indicate that the connection should use the write PDO connection for reads.
- *
- * @param bool $value
- * @return $this
- */
- public function useWriteConnectionWhenReading($value = true)
- {
- $this->readOnWriteConnection = $value;
-
- return $this;
- }
-
- /**
- * Is Doctrine available?
- *
- * @return bool
- */
- public function isDoctrineAvailable()
- {
- return class_exists('Doctrine\DBAL\Connection');
- }
-
- /**
- * Get a Doctrine Schema Column instance.
- *
- * @param string $table
- * @param string $column
- * @return \Doctrine\DBAL\Schema\Column
- */
- public function getDoctrineColumn($table, $column)
- {
- $schema = $this->getDoctrineSchemaManager();
-
- return $schema->listTableDetails($table)->getColumn($column);
- }
-
- /**
- * Get the Doctrine DBAL schema manager for the connection.
- *
- * @return \Doctrine\DBAL\Schema\AbstractSchemaManager
- */
- public function getDoctrineSchemaManager()
- {
- $connection = $this->getDoctrineConnection();
-
- // Doctrine v2 expects one parameter while v3 expects two. 2nd will be ignored on v2...
- return $this->getDoctrineDriver()->getSchemaManager(
- $connection,
- $connection->getDatabasePlatform()
- );
- }
-
- /**
- * Get the Doctrine DBAL database connection instance.
- *
- * @return \Doctrine\DBAL\Connection
- */
- public function getDoctrineConnection()
- {
- if (is_null($this->doctrineConnection)) {
- $driver = $this->getDoctrineDriver();
-
- $this->doctrineConnection = new DoctrineConnection(array_filter([
- 'pdo' => $this->getPdo(),
- 'dbname' => $this->getDatabaseName(),
- 'driver' => method_exists($driver, 'getName') ? $driver->getName() : null,
- 'serverVersion' => $this->getConfig('server_version'),
- ]), $driver);
- }
-
- return $this->doctrineConnection;
- }
-
- /**
- * Get the current PDO connection.
- *
- * @return \PDO
- */
- public function getPdo()
- {
- if ($this->pdo instanceof Closure) {
- return $this->pdo = call_user_func($this->pdo);
- }
-
- return $this->pdo;
- }
-
- /**
- * Get the current PDO connection parameter without executing any reconnect logic.
- *
- * @return \PDO|\Closure|null
- */
- public function getRawPdo()
- {
- return $this->pdo;
- }
-
- /**
- * Get the current PDO connection used for reading.
- *
- * @return \PDO
- */
- public function getReadPdo()
- {
- if ($this->transactions > 0) {
- return $this->getPdo();
- }
-
- if ($this->readOnWriteConnection ||
- ($this->recordsModified && $this->getConfig('sticky'))) {
- return $this->getPdo();
- }
-
- if ($this->readPdo instanceof Closure) {
- return $this->readPdo = call_user_func($this->readPdo);
- }
-
- return $this->readPdo ?: $this->getPdo();
- }
-
- /**
- * Get the current read PDO connection parameter without executing any reconnect logic.
- *
- * @return \PDO|\Closure|null
- */
- public function getRawReadPdo()
- {
- return $this->readPdo;
- }
-
- /**
- * Set the PDO connection.
- *
- * @param \PDO|\Closure|null $pdo
- * @return $this
- */
- public function setPdo($pdo)
- {
- $this->transactions = 0;
-
- $this->pdo = $pdo;
-
- return $this;
- }
-
- /**
- * Set the PDO connection used for reading.
- *
- * @param \PDO|\Closure|null $pdo
- * @return $this
- */
- public function setReadPdo($pdo)
- {
- $this->readPdo = $pdo;
-
- return $this;
- }
-
- /**
- * Set the reconnect instance on the connection.
- *
- * @param callable $reconnector
- * @return $this
- */
- public function setReconnector(callable $reconnector)
- {
- $this->reconnector = $reconnector;
-
- return $this;
- }
-
- /**
- * Get the database connection name.
- *
- * @return string|null
- */
- public function getName()
- {
- return $this->getConfig('name');
- }
-
- /**
- * Get the database connection full name.
- *
- * @return string|null
- */
- public function getNameWithReadWriteType()
- {
- return $this->getName().($this->readWriteType ? '::'.$this->readWriteType : '');
- }
-
- /**
- * Get an option from the configuration options.
- *
- * @param string|null $option
- * @return mixed
- */
- public function getConfig($option = null)
- {
- return Arr::get($this->config, $option);
- }
-
- /**
- * Get the PDO driver name.
- *
- * @return string
- */
- public function getDriverName()
- {
- return $this->getConfig('driver');
- }
-
- /**
- * Get the query grammar used by the connection.
- *
- * @return \Illuminate\Database\Query\Grammars\Grammar
- */
- public function getQueryGrammar()
- {
- return $this->queryGrammar;
- }
-
- /**
- * Set the query grammar used by the connection.
- *
- * @param \Illuminate\Database\Query\Grammars\Grammar $grammar
- * @return $this
- */
- public function setQueryGrammar(Query\Grammars\Grammar $grammar)
- {
- $this->queryGrammar = $grammar;
-
- return $this;
- }
-
- /**
- * Get the schema grammar used by the connection.
- *
- * @return \Illuminate\Database\Schema\Grammars\Grammar
- */
- public function getSchemaGrammar()
- {
- return $this->schemaGrammar;
- }
-
- /**
- * Set the schema grammar used by the connection.
- *
- * @param \Illuminate\Database\Schema\Grammars\Grammar $grammar
- * @return $this
- */
- public function setSchemaGrammar(Schema\Grammars\Grammar $grammar)
- {
- $this->schemaGrammar = $grammar;
-
- return $this;
- }
-
- /**
- * Get the query post processor used by the connection.
- *
- * @return \Illuminate\Database\Query\Processors\Processor
- */
- public function getPostProcessor()
- {
- return $this->postProcessor;
- }
-
- /**
- * Set the query post processor used by the connection.
- *
- * @param \Illuminate\Database\Query\Processors\Processor $processor
- * @return $this
- */
- public function setPostProcessor(Processor $processor)
- {
- $this->postProcessor = $processor;
-
- return $this;
- }
-
- /**
- * Get the event dispatcher used by the connection.
- *
- * @return \Illuminate\Contracts\Events\Dispatcher
- */
- public function getEventDispatcher()
- {
- return $this->events;
- }
-
- /**
- * Set the event dispatcher instance on the connection.
- *
- * @param \Illuminate\Contracts\Events\Dispatcher $events
- * @return $this
- */
- public function setEventDispatcher(Dispatcher $events)
- {
- $this->events = $events;
-
- return $this;
- }
-
- /**
- * Unset the event dispatcher for this connection.
- *
- * @return void
- */
- public function unsetEventDispatcher()
- {
- $this->events = null;
- }
-
- /**
- * Set the transaction manager instance on the connection.
- *
- * @param \Illuminate\Database\DatabaseTransactionsManager $manager
- * @return $this
- */
- public function setTransactionManager($manager)
- {
- $this->transactionsManager = $manager;
-
- return $this;
- }
-
- /**
- * Unset the transaction manager for this connection.
- *
- * @return void
- */
- public function unsetTransactionManager()
- {
- $this->transactionsManager = null;
- }
-
- /**
- * Determine if the connection is in a "dry run".
- *
- * @return bool
- */
- public function pretending()
- {
- return $this->pretending === true;
- }
-
- /**
- * Get the connection query log.
- *
- * @return array
- */
- public function getQueryLog()
- {
- return $this->queryLog;
- }
-
- /**
- * Clear the query log.
- *
- * @return void
- */
- public function flushQueryLog()
- {
- $this->queryLog = [];
- }
-
- /**
- * Enable the query log on the connection.
- *
- * @return void
- */
- public function enableQueryLog()
- {
- $this->loggingQueries = true;
- }
-
- /**
- * Disable the query log on the connection.
- *
- * @return void
- */
- public function disableQueryLog()
- {
- $this->loggingQueries = false;
- }
-
- /**
- * Determine whether we're logging queries.
- *
- * @return bool
- */
- public function logging()
- {
- return $this->loggingQueries;
- }
-
- /**
- * Get the name of the connected database.
- *
- * @return string
- */
- public function getDatabaseName()
- {
- return $this->database;
- }
-
- /**
- * Set the name of the connected database.
- *
- * @param string $database
- * @return $this
- */
- public function setDatabaseName($database)
- {
- $this->database = $database;
-
- return $this;
- }
-
- /**
- * Set the read / write type of the connection.
- *
- * @param string|null $readWriteType
- * @return $this
- */
- public function setReadWriteType($readWriteType)
- {
- $this->readWriteType = $readWriteType;
-
- return $this;
- }
-
- /**
- * Get the table prefix for the connection.
- *
- * @return string
- */
- public function getTablePrefix()
- {
- return $this->tablePrefix;
- }
-
- /**
- * Set the table prefix in use by the connection.
- *
- * @param string $prefix
- * @return $this
- */
- public function setTablePrefix($prefix)
- {
- $this->tablePrefix = $prefix;
-
- $this->getQueryGrammar()->setTablePrefix($prefix);
-
- return $this;
- }
-
- /**
- * Set the table prefix and return the grammar.
- *
- * @param \Illuminate\Database\Grammar $grammar
- * @return \Illuminate\Database\Grammar
- */
- public function withTablePrefix(Grammar $grammar)
- {
- $grammar->setTablePrefix($this->tablePrefix);
-
- return $grammar;
- }
-
- /**
- * Register a connection resolver.
- *
- * @param string $driver
- * @param \Closure $callback
- * @return void
- */
- public static function resolverFor($driver, Closure $callback)
- {
- static::$resolvers[$driver] = $callback;
- }
-
- /**
- * Get the connection resolver for the given driver.
- *
- * @param string $driver
- * @return mixed
- */
- public static function getResolver($driver)
- {
- return static::$resolvers[$driver] ?? null;
- }
-}
diff --git a/vendor/illuminate/database/ConnectionInterface.php b/vendor/illuminate/database/ConnectionInterface.php
deleted file mode 100755
index 00b23952..00000000
--- a/vendor/illuminate/database/ConnectionInterface.php
+++ /dev/null
@@ -1,170 +0,0 @@
- $connection) {
- $this->addConnection($name, $connection);
- }
- }
-
- /**
- * Get a database connection instance.
- *
- * @param string|null $name
- * @return \Illuminate\Database\ConnectionInterface
- */
- public function connection($name = null)
- {
- if (is_null($name)) {
- $name = $this->getDefaultConnection();
- }
-
- return $this->connections[$name];
- }
-
- /**
- * Add a connection to the resolver.
- *
- * @param string $name
- * @param \Illuminate\Database\ConnectionInterface $connection
- * @return void
- */
- public function addConnection($name, ConnectionInterface $connection)
- {
- $this->connections[$name] = $connection;
- }
-
- /**
- * Check if a connection has been registered.
- *
- * @param string $name
- * @return bool
- */
- public function hasConnection($name)
- {
- return isset($this->connections[$name]);
- }
-
- /**
- * Get the default connection name.
- *
- * @return string
- */
- public function getDefaultConnection()
- {
- return $this->default;
- }
-
- /**
- * Set the default connection name.
- *
- * @param string $name
- * @return void
- */
- public function setDefaultConnection($name)
- {
- $this->default = $name;
- }
-}
diff --git a/vendor/illuminate/database/ConnectionResolverInterface.php b/vendor/illuminate/database/ConnectionResolverInterface.php
deleted file mode 100755
index b31e5a79..00000000
--- a/vendor/illuminate/database/ConnectionResolverInterface.php
+++ /dev/null
@@ -1,29 +0,0 @@
-container = $container;
- }
-
- /**
- * Establish a PDO connection based on the configuration.
- *
- * @param array $config
- * @param string|null $name
- * @return \Illuminate\Database\Connection
- */
- public function make(array $config, $name = null)
- {
- $config = $this->parseConfig($config, $name);
-
- if (isset($config['read'])) {
- return $this->createReadWriteConnection($config);
- }
-
- return $this->createSingleConnection($config);
- }
-
- /**
- * Parse and prepare the database configuration.
- *
- * @param array $config
- * @param string $name
- * @return array
- */
- protected function parseConfig(array $config, $name)
- {
- return Arr::add(Arr::add($config, 'prefix', ''), 'name', $name);
- }
-
- /**
- * Create a single database connection instance.
- *
- * @param array $config
- * @return \Illuminate\Database\Connection
- */
- protected function createSingleConnection(array $config)
- {
- $pdo = $this->createPdoResolver($config);
-
- return $this->createConnection(
- $config['driver'], $pdo, $config['database'], $config['prefix'], $config
- );
- }
-
- /**
- * Create a read / write database connection instance.
- *
- * @param array $config
- * @return \Illuminate\Database\Connection
- */
- protected function createReadWriteConnection(array $config)
- {
- $connection = $this->createSingleConnection($this->getWriteConfig($config));
-
- return $connection->setReadPdo($this->createReadPdo($config));
- }
-
- /**
- * Create a new PDO instance for reading.
- *
- * @param array $config
- * @return \Closure
- */
- protected function createReadPdo(array $config)
- {
- return $this->createPdoResolver($this->getReadConfig($config));
- }
-
- /**
- * Get the read configuration for a read / write connection.
- *
- * @param array $config
- * @return array
- */
- protected function getReadConfig(array $config)
- {
- return $this->mergeReadWriteConfig(
- $config, $this->getReadWriteConfig($config, 'read')
- );
- }
-
- /**
- * Get the write configuration for a read / write connection.
- *
- * @param array $config
- * @return array
- */
- protected function getWriteConfig(array $config)
- {
- return $this->mergeReadWriteConfig(
- $config, $this->getReadWriteConfig($config, 'write')
- );
- }
-
- /**
- * Get a read / write level configuration.
- *
- * @param array $config
- * @param string $type
- * @return array
- */
- protected function getReadWriteConfig(array $config, $type)
- {
- return isset($config[$type][0])
- ? Arr::random($config[$type])
- : $config[$type];
- }
-
- /**
- * Merge a configuration for a read / write connection.
- *
- * @param array $config
- * @param array $merge
- * @return array
- */
- protected function mergeReadWriteConfig(array $config, array $merge)
- {
- return Arr::except(array_merge($config, $merge), ['read', 'write']);
- }
-
- /**
- * Create a new Closure that resolves to a PDO instance.
- *
- * @param array $config
- * @return \Closure
- */
- protected function createPdoResolver(array $config)
- {
- return array_key_exists('host', $config)
- ? $this->createPdoResolverWithHosts($config)
- : $this->createPdoResolverWithoutHosts($config);
- }
-
- /**
- * Create a new Closure that resolves to a PDO instance with a specific host or an array of hosts.
- *
- * @param array $config
- * @return \Closure
- *
- * @throws \PDOException
- */
- protected function createPdoResolverWithHosts(array $config)
- {
- return function () use ($config) {
- foreach (Arr::shuffle($hosts = $this->parseHosts($config)) as $key => $host) {
- $config['host'] = $host;
-
- try {
- return $this->createConnector($config)->connect($config);
- } catch (PDOException $e) {
- continue;
- }
- }
-
- throw $e;
- };
- }
-
- /**
- * Parse the hosts configuration item into an array.
- *
- * @param array $config
- * @return array
- *
- * @throws \InvalidArgumentException
- */
- protected function parseHosts(array $config)
- {
- $hosts = Arr::wrap($config['host']);
-
- if (empty($hosts)) {
- throw new InvalidArgumentException('Database hosts array is empty.');
- }
-
- return $hosts;
- }
-
- /**
- * Create a new Closure that resolves to a PDO instance where there is no configured host.
- *
- * @param array $config
- * @return \Closure
- */
- protected function createPdoResolverWithoutHosts(array $config)
- {
- return function () use ($config) {
- return $this->createConnector($config)->connect($config);
- };
- }
-
- /**
- * Create a connector instance based on the configuration.
- *
- * @param array $config
- * @return \Illuminate\Database\Connectors\ConnectorInterface
- *
- * @throws \InvalidArgumentException
- */
- public function createConnector(array $config)
- {
- if (! isset($config['driver'])) {
- throw new InvalidArgumentException('A driver must be specified.');
- }
-
- if ($this->container->bound($key = "db.connector.{$config['driver']}")) {
- return $this->container->make($key);
- }
-
- switch ($config['driver']) {
- case 'mysql':
- return new MySqlConnector;
- case 'pgsql':
- return new PostgresConnector;
- case 'sqlite':
- return new SQLiteConnector;
- case 'sqlsrv':
- return new SqlServerConnector;
- }
-
- throw new InvalidArgumentException("Unsupported driver [{$config['driver']}].");
- }
-
- /**
- * Create a new connection instance.
- *
- * @param string $driver
- * @param \PDO|\Closure $connection
- * @param string $database
- * @param string $prefix
- * @param array $config
- * @return \Illuminate\Database\Connection
- *
- * @throws \InvalidArgumentException
- */
- protected function createConnection($driver, $connection, $database, $prefix = '', array $config = [])
- {
- if ($resolver = Connection::getResolver($driver)) {
- return $resolver($connection, $database, $prefix, $config);
- }
-
- switch ($driver) {
- case 'mysql':
- return new MySqlConnection($connection, $database, $prefix, $config);
- case 'pgsql':
- return new PostgresConnection($connection, $database, $prefix, $config);
- case 'sqlite':
- return new SQLiteConnection($connection, $database, $prefix, $config);
- case 'sqlsrv':
- return new SqlServerConnection($connection, $database, $prefix, $config);
- }
-
- throw new InvalidArgumentException("Unsupported driver [{$driver}].");
- }
-}
diff --git a/vendor/illuminate/database/Connectors/Connector.php b/vendor/illuminate/database/Connectors/Connector.php
deleted file mode 100755
index 0fecfb5e..00000000
--- a/vendor/illuminate/database/Connectors/Connector.php
+++ /dev/null
@@ -1,139 +0,0 @@
- PDO::CASE_NATURAL,
- PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
- PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL,
- PDO::ATTR_STRINGIFY_FETCHES => false,
- PDO::ATTR_EMULATE_PREPARES => false,
- ];
-
- /**
- * Create a new PDO connection.
- *
- * @param string $dsn
- * @param array $config
- * @param array $options
- * @return \PDO
- *
- * @throws \Exception
- */
- public function createConnection($dsn, array $config, array $options)
- {
- [$username, $password] = [
- $config['username'] ?? null, $config['password'] ?? null,
- ];
-
- try {
- return $this->createPdoConnection(
- $dsn, $username, $password, $options
- );
- } catch (Exception $e) {
- return $this->tryAgainIfCausedByLostConnection(
- $e, $dsn, $username, $password, $options
- );
- }
- }
-
- /**
- * Create a new PDO connection instance.
- *
- * @param string $dsn
- * @param string $username
- * @param string $password
- * @param array $options
- * @return \PDO
- */
- protected function createPdoConnection($dsn, $username, $password, $options)
- {
- if (class_exists(PDOConnection::class) && ! $this->isPersistentConnection($options)) {
- return new PDOConnection($dsn, $username, $password, $options);
- }
-
- return new PDO($dsn, $username, $password, $options);
- }
-
- /**
- * Determine if the connection is persistent.
- *
- * @param array $options
- * @return bool
- */
- protected function isPersistentConnection($options)
- {
- return isset($options[PDO::ATTR_PERSISTENT]) &&
- $options[PDO::ATTR_PERSISTENT];
- }
-
- /**
- * Handle an exception that occurred during connect execution.
- *
- * @param \Throwable $e
- * @param string $dsn
- * @param string $username
- * @param string $password
- * @param array $options
- * @return \PDO
- *
- * @throws \Exception
- */
- protected function tryAgainIfCausedByLostConnection(Throwable $e, $dsn, $username, $password, $options)
- {
- if ($this->causedByLostConnection($e)) {
- return $this->createPdoConnection($dsn, $username, $password, $options);
- }
-
- throw $e;
- }
-
- /**
- * Get the PDO options based on the configuration.
- *
- * @param array $config
- * @return array
- */
- public function getOptions(array $config)
- {
- $options = $config['options'] ?? [];
-
- return array_diff_key($this->options, $options) + $options;
- }
-
- /**
- * Get the default PDO connection options.
- *
- * @return array
- */
- public function getDefaultOptions()
- {
- return $this->options;
- }
-
- /**
- * Set the default PDO connection options.
- *
- * @param array $options
- * @return void
- */
- public function setDefaultOptions(array $options)
- {
- $this->options = $options;
- }
-}
diff --git a/vendor/illuminate/database/Connectors/ConnectorInterface.php b/vendor/illuminate/database/Connectors/ConnectorInterface.php
deleted file mode 100755
index 08597ac0..00000000
--- a/vendor/illuminate/database/Connectors/ConnectorInterface.php
+++ /dev/null
@@ -1,14 +0,0 @@
-getDsn($config);
-
- $options = $this->getOptions($config);
-
- // We need to grab the PDO options that should be used while making the brand
- // new connection instance. The PDO options control various aspects of the
- // connection's behavior, and some might be specified by the developers.
- $connection = $this->createConnection($dsn, $config, $options);
-
- if (! empty($config['database'])) {
- $connection->exec("use `{$config['database']}`;");
- }
-
- $this->configureIsolationLevel($connection, $config);
-
- $this->configureEncoding($connection, $config);
-
- // Next, we will check to see if a timezone has been specified in this config
- // and if it has we will issue a statement to modify the timezone with the
- // database. Setting this DB timezone is an optional configuration item.
- $this->configureTimezone($connection, $config);
-
- $this->setModes($connection, $config);
-
- return $connection;
- }
-
- /**
- * Set the connection transaction isolation level.
- *
- * @param \PDO $connection
- * @param array $config
- * @return void
- */
- protected function configureIsolationLevel($connection, array $config)
- {
- if (! isset($config['isolation_level'])) {
- return;
- }
-
- $connection->prepare(
- "SET SESSION TRANSACTION ISOLATION LEVEL {$config['isolation_level']}"
- )->execute();
- }
-
- /**
- * Set the connection character set and collation.
- *
- * @param \PDO $connection
- * @param array $config
- * @return void|\PDO
- */
- protected function configureEncoding($connection, array $config)
- {
- if (! isset($config['charset'])) {
- return $connection;
- }
-
- $connection->prepare(
- "set names '{$config['charset']}'".$this->getCollation($config)
- )->execute();
- }
-
- /**
- * Get the collation for the configuration.
- *
- * @param array $config
- * @return string
- */
- protected function getCollation(array $config)
- {
- return isset($config['collation']) ? " collate '{$config['collation']}'" : '';
- }
-
- /**
- * Set the timezone on the connection.
- *
- * @param \PDO $connection
- * @param array $config
- * @return void
- */
- protected function configureTimezone($connection, array $config)
- {
- if (isset($config['timezone'])) {
- $connection->prepare('set time_zone="'.$config['timezone'].'"')->execute();
- }
- }
-
- /**
- * Create a DSN string from a configuration.
- *
- * Chooses socket or host/port based on the 'unix_socket' config value.
- *
- * @param array $config
- * @return string
- */
- protected function getDsn(array $config)
- {
- return $this->hasSocket($config)
- ? $this->getSocketDsn($config)
- : $this->getHostDsn($config);
- }
-
- /**
- * Determine if the given configuration array has a UNIX socket value.
- *
- * @param array $config
- * @return bool
- */
- protected function hasSocket(array $config)
- {
- return isset($config['unix_socket']) && ! empty($config['unix_socket']);
- }
-
- /**
- * Get the DSN string for a socket configuration.
- *
- * @param array $config
- * @return string
- */
- protected function getSocketDsn(array $config)
- {
- return "mysql:unix_socket={$config['unix_socket']};dbname={$config['database']}";
- }
-
- /**
- * Get the DSN string for a host / port configuration.
- *
- * @param array $config
- * @return string
- */
- protected function getHostDsn(array $config)
- {
- extract($config, EXTR_SKIP);
-
- return isset($port)
- ? "mysql:host={$host};port={$port};dbname={$database}"
- : "mysql:host={$host};dbname={$database}";
- }
-
- /**
- * Set the modes for the connection.
- *
- * @param \PDO $connection
- * @param array $config
- * @return void
- */
- protected function setModes(PDO $connection, array $config)
- {
- if (isset($config['modes'])) {
- $this->setCustomModes($connection, $config);
- } elseif (isset($config['strict'])) {
- if ($config['strict']) {
- $connection->prepare($this->strictMode($connection, $config))->execute();
- } else {
- $connection->prepare("set session sql_mode='NO_ENGINE_SUBSTITUTION'")->execute();
- }
- }
- }
-
- /**
- * Set the custom modes on the connection.
- *
- * @param \PDO $connection
- * @param array $config
- * @return void
- */
- protected function setCustomModes(PDO $connection, array $config)
- {
- $modes = implode(',', $config['modes']);
-
- $connection->prepare("set session sql_mode='{$modes}'")->execute();
- }
-
- /**
- * Get the query to enable strict mode.
- *
- * @param \PDO $connection
- * @param array $config
- * @return string
- */
- protected function strictMode(PDO $connection, $config)
- {
- $version = $config['version'] ?? $connection->getAttribute(PDO::ATTR_SERVER_VERSION);
-
- if (version_compare($version, '8.0.11') >= 0) {
- return "set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'";
- }
-
- return "set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'";
- }
-}
diff --git a/vendor/illuminate/database/Connectors/PostgresConnector.php b/vendor/illuminate/database/Connectors/PostgresConnector.php
deleted file mode 100755
index a3ca25e9..00000000
--- a/vendor/illuminate/database/Connectors/PostgresConnector.php
+++ /dev/null
@@ -1,194 +0,0 @@
- PDO::CASE_NATURAL,
- PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
- PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL,
- PDO::ATTR_STRINGIFY_FETCHES => false,
- ];
-
- /**
- * Establish a database connection.
- *
- * @param array $config
- * @return \PDO
- */
- public function connect(array $config)
- {
- // First we'll create the basic DSN and connection instance connecting to the
- // using the configuration option specified by the developer. We will also
- // set the default character set on the connections to UTF-8 by default.
- $connection = $this->createConnection(
- $this->getDsn($config), $config, $this->getOptions($config)
- );
-
- $this->configureEncoding($connection, $config);
-
- // Next, we will check to see if a timezone has been specified in this config
- // and if it has we will issue a statement to modify the timezone with the
- // database. Setting this DB timezone is an optional configuration item.
- $this->configureTimezone($connection, $config);
-
- $this->configureSchema($connection, $config);
-
- // Postgres allows an application_name to be set by the user and this name is
- // used to when monitoring the application with pg_stat_activity. So we'll
- // determine if the option has been specified and run a statement if so.
- $this->configureApplicationName($connection, $config);
-
- $this->configureSynchronousCommit($connection, $config);
-
- return $connection;
- }
-
- /**
- * Set the connection character set and collation.
- *
- * @param \PDO $connection
- * @param array $config
- * @return void
- */
- protected function configureEncoding($connection, $config)
- {
- if (! isset($config['charset'])) {
- return;
- }
-
- $connection->prepare("set names '{$config['charset']}'")->execute();
- }
-
- /**
- * Set the timezone on the connection.
- *
- * @param \PDO $connection
- * @param array $config
- * @return void
- */
- protected function configureTimezone($connection, array $config)
- {
- if (isset($config['timezone'])) {
- $timezone = $config['timezone'];
-
- $connection->prepare("set time zone '{$timezone}'")->execute();
- }
- }
-
- /**
- * Set the schema on the connection.
- *
- * @param \PDO $connection
- * @param array $config
- * @return void
- */
- protected function configureSchema($connection, $config)
- {
- if (isset($config['schema'])) {
- $schema = $this->formatSchema($config['schema']);
-
- $connection->prepare("set search_path to {$schema}")->execute();
- }
- }
-
- /**
- * Format the schema for the DSN.
- *
- * @param array|string $schema
- * @return string
- */
- protected function formatSchema($schema)
- {
- if (is_array($schema)) {
- return '"'.implode('", "', $schema).'"';
- }
-
- return '"'.$schema.'"';
- }
-
- /**
- * Set the schema on the connection.
- *
- * @param \PDO $connection
- * @param array $config
- * @return void
- */
- protected function configureApplicationName($connection, $config)
- {
- if (isset($config['application_name'])) {
- $applicationName = $config['application_name'];
-
- $connection->prepare("set application_name to '$applicationName'")->execute();
- }
- }
-
- /**
- * Create a DSN string from a configuration.
- *
- * @param array $config
- * @return string
- */
- protected function getDsn(array $config)
- {
- // First we will create the basic DSN setup as well as the port if it is in
- // in the configuration options. This will give us the basic DSN we will
- // need to establish the PDO connections and return them back for use.
- extract($config, EXTR_SKIP);
-
- $host = isset($host) ? "host={$host};" : '';
-
- $dsn = "pgsql:{$host}dbname={$database}";
-
- // If a port was specified, we will add it to this Postgres DSN connections
- // format. Once we have done that we are ready to return this connection
- // string back out for usage, as this has been fully constructed here.
- if (isset($config['port'])) {
- $dsn .= ";port={$port}";
- }
-
- return $this->addSslOptions($dsn, $config);
- }
-
- /**
- * Add the SSL options to the DSN.
- *
- * @param string $dsn
- * @param array $config
- * @return string
- */
- protected function addSslOptions($dsn, array $config)
- {
- foreach (['sslmode', 'sslcert', 'sslkey', 'sslrootcert'] as $option) {
- if (isset($config[$option])) {
- $dsn .= ";{$option}={$config[$option]}";
- }
- }
-
- return $dsn;
- }
-
- /**
- * Configure the synchronous_commit setting.
- *
- * @param \PDO $connection
- * @param array $config
- * @return void
- */
- protected function configureSynchronousCommit($connection, array $config)
- {
- if (! isset($config['synchronous_commit'])) {
- return;
- }
-
- $connection->prepare("set synchronous_commit to '{$config['synchronous_commit']}'")->execute();
- }
-}
diff --git a/vendor/illuminate/database/Connectors/SQLiteConnector.php b/vendor/illuminate/database/Connectors/SQLiteConnector.php
deleted file mode 100755
index 90dc16be..00000000
--- a/vendor/illuminate/database/Connectors/SQLiteConnector.php
+++ /dev/null
@@ -1,39 +0,0 @@
-getOptions($config);
-
- // SQLite supports "in-memory" databases that only last as long as the owning
- // connection does. These are useful for tests or for short lifetime store
- // querying. In-memory databases may only have a single open connection.
- if ($config['database'] === ':memory:') {
- return $this->createConnection('sqlite::memory:', $config, $options);
- }
-
- $path = realpath($config['database']);
-
- // Here we'll verify that the SQLite database exists before going any further
- // as the developer probably wants to know if the database exists and this
- // SQLite driver will not throw any exception if it does not by default.
- if ($path === false) {
- throw new InvalidArgumentException("Database ({$config['database']}) does not exist.");
- }
-
- return $this->createConnection("sqlite:{$path}", $config, $options);
- }
-}
diff --git a/vendor/illuminate/database/Connectors/SqlServerConnector.php b/vendor/illuminate/database/Connectors/SqlServerConnector.php
deleted file mode 100755
index caefa684..00000000
--- a/vendor/illuminate/database/Connectors/SqlServerConnector.php
+++ /dev/null
@@ -1,205 +0,0 @@
- PDO::CASE_NATURAL,
- PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
- PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL,
- PDO::ATTR_STRINGIFY_FETCHES => false,
- ];
-
- /**
- * Establish a database connection.
- *
- * @param array $config
- * @return \PDO
- */
- public function connect(array $config)
- {
- $options = $this->getOptions($config);
-
- return $this->createConnection($this->getDsn($config), $config, $options);
- }
-
- /**
- * Create a DSN string from a configuration.
- *
- * @param array $config
- * @return string
- */
- protected function getDsn(array $config)
- {
- // First we will create the basic DSN setup as well as the port if it is in
- // in the configuration options. This will give us the basic DSN we will
- // need to establish the PDO connections and return them back for use.
- if ($this->prefersOdbc($config)) {
- return $this->getOdbcDsn($config);
- }
-
- if (in_array('sqlsrv', $this->getAvailableDrivers())) {
- return $this->getSqlSrvDsn($config);
- } else {
- return $this->getDblibDsn($config);
- }
- }
-
- /**
- * Determine if the database configuration prefers ODBC.
- *
- * @param array $config
- * @return bool
- */
- protected function prefersOdbc(array $config)
- {
- return in_array('odbc', $this->getAvailableDrivers()) &&
- ($config['odbc'] ?? null) === true;
- }
-
- /**
- * Get the DSN string for a DbLib connection.
- *
- * @param array $config
- * @return string
- */
- protected function getDblibDsn(array $config)
- {
- return $this->buildConnectString('dblib', array_merge([
- 'host' => $this->buildHostString($config, ':'),
- 'dbname' => $config['database'],
- ], Arr::only($config, ['appname', 'charset', 'version'])));
- }
-
- /**
- * Get the DSN string for an ODBC connection.
- *
- * @param array $config
- * @return string
- */
- protected function getOdbcDsn(array $config)
- {
- return isset($config['odbc_datasource_name'])
- ? 'odbc:'.$config['odbc_datasource_name'] : '';
- }
-
- /**
- * Get the DSN string for a SqlSrv connection.
- *
- * @param array $config
- * @return string
- */
- protected function getSqlSrvDsn(array $config)
- {
- $arguments = [
- 'Server' => $this->buildHostString($config, ','),
- ];
-
- if (isset($config['database'])) {
- $arguments['Database'] = $config['database'];
- }
-
- if (isset($config['readonly'])) {
- $arguments['ApplicationIntent'] = 'ReadOnly';
- }
-
- if (isset($config['pooling']) && $config['pooling'] === false) {
- $arguments['ConnectionPooling'] = '0';
- }
-
- if (isset($config['appname'])) {
- $arguments['APP'] = $config['appname'];
- }
-
- if (isset($config['encrypt'])) {
- $arguments['Encrypt'] = $config['encrypt'];
- }
-
- if (isset($config['trust_server_certificate'])) {
- $arguments['TrustServerCertificate'] = $config['trust_server_certificate'];
- }
-
- if (isset($config['multiple_active_result_sets']) && $config['multiple_active_result_sets'] === false) {
- $arguments['MultipleActiveResultSets'] = 'false';
- }
-
- if (isset($config['transaction_isolation'])) {
- $arguments['TransactionIsolation'] = $config['transaction_isolation'];
- }
-
- if (isset($config['multi_subnet_failover'])) {
- $arguments['MultiSubnetFailover'] = $config['multi_subnet_failover'];
- }
-
- if (isset($config['column_encryption'])) {
- $arguments['ColumnEncryption'] = $config['column_encryption'];
- }
-
- if (isset($config['key_store_authentication'])) {
- $arguments['KeyStoreAuthentication'] = $config['key_store_authentication'];
- }
-
- if (isset($config['key_store_principal_id'])) {
- $arguments['KeyStorePrincipalId'] = $config['key_store_principal_id'];
- }
-
- if (isset($config['key_store_secret'])) {
- $arguments['KeyStoreSecret'] = $config['key_store_secret'];
- }
-
- if (isset($config['login_timeout'])) {
- $arguments['LoginTimeout'] = $config['login_timeout'];
- }
-
- return $this->buildConnectString('sqlsrv', $arguments);
- }
-
- /**
- * Build a connection string from the given arguments.
- *
- * @param string $driver
- * @param array $arguments
- * @return string
- */
- protected function buildConnectString($driver, array $arguments)
- {
- return $driver.':'.implode(';', array_map(function ($key) use ($arguments) {
- return sprintf('%s=%s', $key, $arguments[$key]);
- }, array_keys($arguments)));
- }
-
- /**
- * Build a host string from the given configuration.
- *
- * @param array $config
- * @param string $separator
- * @return string
- */
- protected function buildHostString(array $config, $separator)
- {
- if (empty($config['port'])) {
- return $config['host'];
- }
-
- return $config['host'].$separator.$config['port'];
- }
-
- /**
- * Get the available PDO drivers.
- *
- * @return array
- */
- protected function getAvailableDrivers()
- {
- return PDO::getAvailableDrivers();
- }
-}
diff --git a/vendor/illuminate/database/Console/DbCommand.php b/vendor/illuminate/database/Console/DbCommand.php
deleted file mode 100644
index a5c627a0..00000000
--- a/vendor/illuminate/database/Console/DbCommand.php
+++ /dev/null
@@ -1,211 +0,0 @@
-getConnection();
-
- (new Process(
- array_merge([$this->getCommand($connection)], $this->commandArguments($connection)),
- null,
- $this->commandEnvironment($connection)
- ))->setTimeout(null)->setTty(true)->mustRun(function ($type, $buffer) {
- $this->output->write($buffer);
- });
-
- return 0;
- }
-
- /**
- * Get the database connection configuration.
- *
- * @return array
- *
- * @throws \UnexpectedValueException
- */
- public function getConnection()
- {
- $connection = $this->laravel['config']['database.connections.'.
- (($db = $this->argument('connection')) ?? $this->laravel['config']['database.default'])
- ];
-
- if (empty($connection)) {
- throw new UnexpectedValueException("Invalid database connection [{$db}].");
- }
-
- if (! empty($connection['url'])) {
- $connection = (new ConfigurationUrlParser)->parseConfiguration($connection);
- }
-
- if ($this->option('read')) {
- $connection = array_merge($connection, $connection['read']);
- } elseif ($this->option('write')) {
- $connection = array_merge($connection, $connection['write']);
- }
-
- return $connection;
- }
-
- /**
- * Get the arguments for the database client command.
- *
- * @param array $connection
- * @return array
- */
- public function commandArguments(array $connection)
- {
- $driver = ucfirst($connection['driver']);
-
- return $this->{"get{$driver}Arguments"}($connection);
- }
-
- /**
- * Get the environment variables for the database client command.
- *
- * @param array $connection
- * @return array|null
- */
- public function commandEnvironment(array $connection)
- {
- $driver = ucfirst($connection['driver']);
-
- if (method_exists($this, "get{$driver}Environment")) {
- return $this->{"get{$driver}Environment"}($connection);
- }
-
- return null;
- }
-
- /**
- * Get the database client command to run.
- *
- * @param array $connection
- * @return string
- */
- public function getCommand(array $connection)
- {
- return [
- 'mysql' => 'mysql',
- 'pgsql' => 'psql',
- 'sqlite' => 'sqlite3',
- 'sqlsrv' => 'sqlcmd',
- ][$connection['driver']];
- }
-
- /**
- * Get the arguments for the MySQL CLI.
- *
- * @param array $connection
- * @return array
- */
- protected function getMysqlArguments(array $connection)
- {
- return array_merge([
- '--host='.$connection['host'],
- '--port='.$connection['port'],
- '--user='.$connection['username'],
- ], $this->getOptionalArguments([
- 'password' => '--password='.$connection['password'],
- 'unix_socket' => '--socket='.$connection['unix_socket'],
- 'charset' => '--default-character-set='.$connection['charset'],
- ], $connection), [$connection['database']]);
- }
-
- /**
- * Get the arguments for the Postgres CLI.
- *
- * @param array $connection
- * @return array
- */
- protected function getPgsqlArguments(array $connection)
- {
- return [$connection['database']];
- }
-
- /**
- * Get the arguments for the SQLite CLI.
- *
- * @param array $connection
- * @return array
- */
- protected function getSqliteArguments(array $connection)
- {
- return [$connection['database']];
- }
-
- /**
- * Get the arguments for the SQL Server CLI.
- *
- * @param array $connection
- * @return array
- */
- protected function getSqlsrvArguments(array $connection)
- {
- return array_merge(...$this->getOptionalArguments([
- 'database' => ['-d', $connection['database']],
- 'username' => ['-U', $connection['username']],
- 'password' => ['-P', $connection['password']],
- 'host' => ['-S', 'tcp:'.$connection['host']
- .($connection['port'] ? ','.$connection['port'] : ''), ],
- ], $connection));
- }
-
- /**
- * Get the environment variables for the Postgres CLI.
- *
- * @param array $connection
- * @return array|null
- */
- protected function getPgsqlEnvironment(array $connection)
- {
- return array_merge(...$this->getOptionalArguments([
- 'username' => ['PGUSER' => $connection['username']],
- 'host' => ['PGHOST' => $connection['host']],
- 'port' => ['PGPORT' => $connection['port']],
- 'password' => ['PGPASSWORD' => $connection['password']],
- ], $connection));
- }
-
- /**
- * Get the optional arguments based on the connection configuration.
- *
- * @param array $args
- * @param array $connection
- * @return array
- */
- protected function getOptionalArguments(array $args, array $connection)
- {
- return array_values(array_filter($args, function ($key) use ($connection) {
- return ! empty($connection[$key]);
- }, ARRAY_FILTER_USE_KEY));
- }
-}
diff --git a/vendor/illuminate/database/Console/DumpCommand.php b/vendor/illuminate/database/Console/DumpCommand.php
deleted file mode 100644
index fe73fb2a..00000000
--- a/vendor/illuminate/database/Console/DumpCommand.php
+++ /dev/null
@@ -1,86 +0,0 @@
-connection($database = $this->input->getOption('database'));
-
- $this->schemaState($connection)->dump(
- $connection, $path = $this->path($connection)
- );
-
- $dispatcher->dispatch(new SchemaDumped($connection, $path));
-
- $this->info('Database schema dumped successfully.');
-
- if ($this->option('prune')) {
- (new Filesystem)->deleteDirectory(
- database_path('migrations'), $preserve = false
- );
-
- $this->info('Migrations pruned successfully.');
- }
- }
-
- /**
- * Create a schema state instance for the given connection.
- *
- * @param \Illuminate\Database\Connection $connection
- * @return mixed
- */
- protected function schemaState(Connection $connection)
- {
- return $connection->getSchemaState()
- ->withMigrationTable($connection->getTablePrefix().Config::get('database.migrations', 'migrations'))
- ->handleOutputUsing(function ($type, $buffer) {
- $this->output->write($buffer);
- });
- }
-
- /**
- * Get the path that the dump should be written to.
- *
- * @param \Illuminate\Database\Connection $connection
- */
- protected function path(Connection $connection)
- {
- return tap($this->option('path') ?: database_path('schema/'.$connection->getName().'-schema.dump'), function ($path) {
- (new Filesystem)->ensureDirectoryExists(dirname($path));
- });
- }
-}
diff --git a/vendor/illuminate/database/Console/Factories/FactoryMakeCommand.php b/vendor/illuminate/database/Console/Factories/FactoryMakeCommand.php
deleted file mode 100644
index 6233fe29..00000000
--- a/vendor/illuminate/database/Console/Factories/FactoryMakeCommand.php
+++ /dev/null
@@ -1,143 +0,0 @@
-resolveStubPath('/stubs/factory.stub');
- }
-
- /**
- * Resolve the fully-qualified path to the stub.
- *
- * @param string $stub
- * @return string
- */
- protected function resolveStubPath($stub)
- {
- return file_exists($customPath = $this->laravel->basePath(trim($stub, '/')))
- ? $customPath
- : __DIR__.$stub;
- }
-
- /**
- * Build the class with the given name.
- *
- * @param string $name
- * @return string
- */
- protected function buildClass($name)
- {
- $factory = class_basename(Str::ucfirst(str_replace('Factory', '', $name)));
-
- $namespaceModel = $this->option('model')
- ? $this->qualifyModel($this->option('model'))
- : $this->qualifyModel($this->guessModelName($name));
-
- $model = class_basename($namespaceModel);
-
- if (Str::startsWith($namespaceModel, $this->rootNamespace().'Models')) {
- $namespace = Str::beforeLast('Database\\Factories\\'.Str::after($namespaceModel, $this->rootNamespace().'Models\\'), '\\');
- } else {
- $namespace = 'Database\\Factories';
- }
-
- $replace = [
- '{{ factoryNamespace }}' => $namespace,
- 'NamespacedDummyModel' => $namespaceModel,
- '{{ namespacedModel }}' => $namespaceModel,
- '{{namespacedModel}}' => $namespaceModel,
- 'DummyModel' => $model,
- '{{ model }}' => $model,
- '{{model}}' => $model,
- '{{ factory }}' => $factory,
- '{{factory}}' => $factory,
- ];
-
- return str_replace(
- array_keys($replace), array_values($replace), parent::buildClass($name)
- );
- }
-
- /**
- * Get the destination class path.
- *
- * @param string $name
- * @return string
- */
- protected function getPath($name)
- {
- $name = (string) Str::of($name)->replaceFirst($this->rootNamespace(), '')->finish('Factory');
-
- return $this->laravel->databasePath().'/factories/'.str_replace('\\', '/', $name).'.php';
- }
-
- /**
- * Guess the model name from the Factory name or return a default model name.
- *
- * @param string $name
- * @return string
- */
- protected function guessModelName($name)
- {
- if (Str::endsWith($name, 'Factory')) {
- $name = substr($name, 0, -7);
- }
-
- $modelName = $this->qualifyModel(Str::after($name, $this->rootNamespace()));
-
- if (class_exists($modelName)) {
- return $modelName;
- }
-
- if (is_dir(app_path('Models/'))) {
- return $this->rootNamespace().'Models\Model';
- }
-
- return $this->rootNamespace().'Model';
- }
-
- /**
- * Get the console command options.
- *
- * @return array
- */
- protected function getOptions()
- {
- return [
- ['model', 'm', InputOption::VALUE_OPTIONAL, 'The name of the model'],
- ];
- }
-}
diff --git a/vendor/illuminate/database/Console/Factories/stubs/factory.stub b/vendor/illuminate/database/Console/Factories/stubs/factory.stub
deleted file mode 100644
index 3e00f365..00000000
--- a/vendor/illuminate/database/Console/Factories/stubs/factory.stub
+++ /dev/null
@@ -1,20 +0,0 @@
-input->hasOption('path') && $this->option('path')) {
- return collect($this->option('path'))->map(function ($path) {
- return ! $this->usingRealPath()
- ? $this->laravel->basePath().'/'.$path
- : $path;
- })->all();
- }
-
- return array_merge(
- $this->migrator->paths(), [$this->getMigrationPath()]
- );
- }
-
- /**
- * Determine if the given path(s) are pre-resolved "real" paths.
- *
- * @return bool
- */
- protected function usingRealPath()
- {
- return $this->input->hasOption('realpath') && $this->option('realpath');
- }
-
- /**
- * Get the path to the migration directory.
- *
- * @return string
- */
- protected function getMigrationPath()
- {
- return $this->laravel->databasePath().DIRECTORY_SEPARATOR.'migrations';
- }
-}
diff --git a/vendor/illuminate/database/Console/Migrations/FreshCommand.php b/vendor/illuminate/database/Console/Migrations/FreshCommand.php
deleted file mode 100644
index 7bfba0d7..00000000
--- a/vendor/illuminate/database/Console/Migrations/FreshCommand.php
+++ /dev/null
@@ -1,116 +0,0 @@
-confirmToProceed()) {
- return 1;
- }
-
- $database = $this->input->getOption('database');
-
- $this->call('db:wipe', array_filter([
- '--database' => $database,
- '--drop-views' => $this->option('drop-views'),
- '--drop-types' => $this->option('drop-types'),
- '--force' => true,
- ]));
-
- $this->call('migrate', array_filter([
- '--database' => $database,
- '--path' => $this->input->getOption('path'),
- '--realpath' => $this->input->getOption('realpath'),
- '--schema-path' => $this->input->getOption('schema-path'),
- '--force' => true,
- '--step' => $this->option('step'),
- ]));
-
- if ($this->laravel->bound(Dispatcher::class)) {
- $this->laravel[Dispatcher::class]->dispatch(
- new DatabaseRefreshed
- );
- }
-
- if ($this->needsSeeding()) {
- $this->runSeeder($database);
- }
-
- return 0;
- }
-
- /**
- * Determine if the developer has requested database seeding.
- *
- * @return bool
- */
- protected function needsSeeding()
- {
- return $this->option('seed') || $this->option('seeder');
- }
-
- /**
- * Run the database seeder command.
- *
- * @param string $database
- * @return void
- */
- protected function runSeeder($database)
- {
- $this->call('db:seed', array_filter([
- '--database' => $database,
- '--class' => $this->option('seeder') ?: 'Database\\Seeders\\DatabaseSeeder',
- '--force' => true,
- ]));
- }
-
- /**
- * Get the console command options.
- *
- * @return array
- */
- protected function getOptions()
- {
- return [
- ['database', null, InputOption::VALUE_OPTIONAL, 'The database connection to use'],
- ['drop-views', null, InputOption::VALUE_NONE, 'Drop all tables and views'],
- ['drop-types', null, InputOption::VALUE_NONE, 'Drop all tables and types (Postgres only)'],
- ['force', null, InputOption::VALUE_NONE, 'Force the operation to run when in production'],
- ['path', null, InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY, 'The path(s) to the migrations files to be executed'],
- ['realpath', null, InputOption::VALUE_NONE, 'Indicate any provided migration file paths are pre-resolved absolute paths'],
- ['schema-path', null, InputOption::VALUE_OPTIONAL, 'The path to a schema dump file'],
- ['seed', null, InputOption::VALUE_NONE, 'Indicates if the seed task should be re-run'],
- ['seeder', null, InputOption::VALUE_OPTIONAL, 'The class name of the root seeder'],
- ['step', null, InputOption::VALUE_NONE, 'Force the migrations to be run so they can be rolled back individually'],
- ];
- }
-}
diff --git a/vendor/illuminate/database/Console/Migrations/InstallCommand.php b/vendor/illuminate/database/Console/Migrations/InstallCommand.php
deleted file mode 100755
index d69c2ab6..00000000
--- a/vendor/illuminate/database/Console/Migrations/InstallCommand.php
+++ /dev/null
@@ -1,70 +0,0 @@
-repository = $repository;
- }
-
- /**
- * Execute the console command.
- *
- * @return void
- */
- public function handle()
- {
- $this->repository->setSource($this->input->getOption('database'));
-
- $this->repository->createRepository();
-
- $this->info('Migration table created successfully.');
- }
-
- /**
- * Get the console command options.
- *
- * @return array
- */
- protected function getOptions()
- {
- return [
- ['database', null, InputOption::VALUE_OPTIONAL, 'The database connection to use'],
- ];
- }
-}
diff --git a/vendor/illuminate/database/Console/Migrations/MigrateCommand.php b/vendor/illuminate/database/Console/Migrations/MigrateCommand.php
deleted file mode 100755
index ec35f8fe..00000000
--- a/vendor/illuminate/database/Console/Migrations/MigrateCommand.php
+++ /dev/null
@@ -1,177 +0,0 @@
-migrator = $migrator;
- $this->dispatcher = $dispatcher;
- }
-
- /**
- * Execute the console command.
- *
- * @return int
- */
- public function handle()
- {
- if (! $this->confirmToProceed()) {
- return 1;
- }
-
- $this->migrator->usingConnection($this->option('database'), function () {
- $this->prepareDatabase();
-
- // Next, we will check to see if a path option has been defined. If it has
- // we will use the path relative to the root of this installation folder
- // so that migrations may be run for any path within the applications.
- $this->migrator->setOutput($this->output)
- ->run($this->getMigrationPaths(), [
- 'pretend' => $this->option('pretend'),
- 'step' => $this->option('step'),
- ]);
-
- // Finally, if the "seed" option has been given, we will re-run the database
- // seed task to re-populate the database, which is convenient when adding
- // a migration and a seed at the same time, as it is only this command.
- if ($this->option('seed') && ! $this->option('pretend')) {
- $this->call('db:seed', ['--force' => true]);
- }
- });
-
- return 0;
- }
-
- /**
- * Prepare the migration database for running.
- *
- * @return void
- */
- protected function prepareDatabase()
- {
- if (! $this->migrator->repositoryExists()) {
- $this->call('migrate:install', array_filter([
- '--database' => $this->option('database'),
- ]));
- }
-
- if (! $this->migrator->hasRunAnyMigrations() && ! $this->option('pretend')) {
- $this->loadSchemaState();
- }
- }
-
- /**
- * Load the schema state to seed the initial database schema structure.
- *
- * @return void
- */
- protected function loadSchemaState()
- {
- $connection = $this->migrator->resolveConnection($this->option('database'));
-
- // First, we will make sure that the connection supports schema loading and that
- // the schema file exists before we proceed any further. If not, we will just
- // continue with the standard migration operation as normal without errors.
- if ($connection instanceof SqlServerConnection ||
- ! is_file($path = $this->schemaPath($connection))) {
- return;
- }
-
- $this->line('Loading stored database schema: '.$path);
-
- $startTime = microtime(true);
-
- // Since the schema file will create the "migrations" table and reload it to its
- // proper state, we need to delete it here so we don't get an error that this
- // table already exists when the stored database schema file gets executed.
- $this->migrator->deleteRepository();
-
- $connection->getSchemaState()->handleOutputUsing(function ($type, $buffer) {
- $this->output->write($buffer);
- })->load($path);
-
- $runTime = number_format((microtime(true) - $startTime) * 1000, 2);
-
- // Finally, we will fire an event that this schema has been loaded so developers
- // can perform any post schema load tasks that are necessary in listeners for
- // this event, which may seed the database tables with some necessary data.
- $this->dispatcher->dispatch(
- new SchemaLoaded($connection, $path)
- );
-
- $this->line('Loaded stored database schema. ('.$runTime.'ms)');
- }
-
- /**
- * Get the path to the stored schema for the given connection.
- *
- * @param \Illuminate\Database\Connection $connection
- * @return string
- */
- protected function schemaPath($connection)
- {
- if ($this->option('schema-path')) {
- return $this->option('schema-path');
- }
-
- if (file_exists($path = database_path('schema/'.$connection->getName().'-schema.dump'))) {
- return $path;
- }
-
- return database_path('schema/'.$connection->getName().'-schema.sql');
- }
-}
diff --git a/vendor/illuminate/database/Console/Migrations/MigrateMakeCommand.php b/vendor/illuminate/database/Console/Migrations/MigrateMakeCommand.php
deleted file mode 100644
index 95c3a206..00000000
--- a/vendor/illuminate/database/Console/Migrations/MigrateMakeCommand.php
+++ /dev/null
@@ -1,135 +0,0 @@
-creator = $creator;
- $this->composer = $composer;
- }
-
- /**
- * Execute the console command.
- *
- * @return void
- */
- public function handle()
- {
- // It's possible for the developer to specify the tables to modify in this
- // schema operation. The developer may also specify if this table needs
- // to be freshly created so we can create the appropriate migrations.
- $name = Str::snake(trim($this->input->getArgument('name')));
-
- $table = $this->input->getOption('table');
-
- $create = $this->input->getOption('create') ?: false;
-
- // If no table was given as an option but a create option is given then we
- // will use the "create" option as the table name. This allows the devs
- // to pass a table name into this option as a short-cut for creating.
- if (! $table && is_string($create)) {
- $table = $create;
-
- $create = true;
- }
-
- // Next, we will attempt to guess the table name if this the migration has
- // "create" in the name. This will allow us to provide a convenient way
- // of creating migrations that create new tables for the application.
- if (! $table) {
- [$table, $create] = TableGuesser::guess($name);
- }
-
- // Now we are ready to write the migration out to disk. Once we've written
- // the migration out, we will dump-autoload for the entire framework to
- // make sure that the migrations are registered by the class loaders.
- $this->writeMigration($name, $table, $create);
-
- $this->composer->dumpAutoloads();
- }
-
- /**
- * Write the migration file to disk.
- *
- * @param string $name
- * @param string $table
- * @param bool $create
- * @return string
- */
- protected function writeMigration($name, $table, $create)
- {
- $file = $this->creator->create(
- $name, $this->getMigrationPath(), $table, $create
- );
-
- if (! $this->option('fullpath')) {
- $file = pathinfo($file, PATHINFO_FILENAME);
- }
-
- $this->line("Created Migration: {$file}");
- }
-
- /**
- * Get migration path (either specified by '--path' option or default location).
- *
- * @return string
- */
- protected function getMigrationPath()
- {
- if (! is_null($targetPath = $this->input->getOption('path'))) {
- return ! $this->usingRealPath()
- ? $this->laravel->basePath().'/'.$targetPath
- : $targetPath;
- }
-
- return parent::getMigrationPath();
- }
-}
diff --git a/vendor/illuminate/database/Console/Migrations/RefreshCommand.php b/vendor/illuminate/database/Console/Migrations/RefreshCommand.php
deleted file mode 100755
index 2073cd99..00000000
--- a/vendor/illuminate/database/Console/Migrations/RefreshCommand.php
+++ /dev/null
@@ -1,159 +0,0 @@
-confirmToProceed()) {
- return 1;
- }
-
- // Next we'll gather some of the options so that we can have the right options
- // to pass to the commands. This includes options such as which database to
- // use and the path to use for the migration. Then we'll run the command.
- $database = $this->input->getOption('database');
-
- $path = $this->input->getOption('path');
-
- // If the "step" option is specified it means we only want to rollback a small
- // number of migrations before migrating again. For example, the user might
- // only rollback and remigrate the latest four migrations instead of all.
- $step = $this->input->getOption('step') ?: 0;
-
- if ($step > 0) {
- $this->runRollback($database, $path, $step);
- } else {
- $this->runReset($database, $path);
- }
-
- // The refresh command is essentially just a brief aggregate of a few other of
- // the migration commands and just provides a convenient wrapper to execute
- // them in succession. We'll also see if we need to re-seed the database.
- $this->call('migrate', array_filter([
- '--database' => $database,
- '--path' => $path,
- '--realpath' => $this->input->getOption('realpath'),
- '--force' => true,
- ]));
-
- if ($this->laravel->bound(Dispatcher::class)) {
- $this->laravel[Dispatcher::class]->dispatch(
- new DatabaseRefreshed
- );
- }
-
- if ($this->needsSeeding()) {
- $this->runSeeder($database);
- }
-
- return 0;
- }
-
- /**
- * Run the rollback command.
- *
- * @param string $database
- * @param string $path
- * @param int $step
- * @return void
- */
- protected function runRollback($database, $path, $step)
- {
- $this->call('migrate:rollback', array_filter([
- '--database' => $database,
- '--path' => $path,
- '--realpath' => $this->input->getOption('realpath'),
- '--step' => $step,
- '--force' => true,
- ]));
- }
-
- /**
- * Run the reset command.
- *
- * @param string $database
- * @param string $path
- * @return void
- */
- protected function runReset($database, $path)
- {
- $this->call('migrate:reset', array_filter([
- '--database' => $database,
- '--path' => $path,
- '--realpath' => $this->input->getOption('realpath'),
- '--force' => true,
- ]));
- }
-
- /**
- * Determine if the developer has requested database seeding.
- *
- * @return bool
- */
- protected function needsSeeding()
- {
- return $this->option('seed') || $this->option('seeder');
- }
-
- /**
- * Run the database seeder command.
- *
- * @param string $database
- * @return void
- */
- protected function runSeeder($database)
- {
- $this->call('db:seed', array_filter([
- '--database' => $database,
- '--class' => $this->option('seeder') ?: 'Database\\Seeders\\DatabaseSeeder',
- '--force' => true,
- ]));
- }
-
- /**
- * Get the console command options.
- *
- * @return array
- */
- protected function getOptions()
- {
- return [
- ['database', null, InputOption::VALUE_OPTIONAL, 'The database connection to use'],
- ['force', null, InputOption::VALUE_NONE, 'Force the operation to run when in production'],
- ['path', null, InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY, 'The path(s) to the migrations files to be executed'],
- ['realpath', null, InputOption::VALUE_NONE, 'Indicate any provided migration file paths are pre-resolved absolute paths'],
- ['seed', null, InputOption::VALUE_NONE, 'Indicates if the seed task should be re-run'],
- ['seeder', null, InputOption::VALUE_OPTIONAL, 'The class name of the root seeder'],
- ['step', null, InputOption::VALUE_OPTIONAL, 'The number of migrations to be reverted & re-run'],
- ];
- }
-}
diff --git a/vendor/illuminate/database/Console/Migrations/ResetCommand.php b/vendor/illuminate/database/Console/Migrations/ResetCommand.php
deleted file mode 100755
index 1f2babbc..00000000
--- a/vendor/illuminate/database/Console/Migrations/ResetCommand.php
+++ /dev/null
@@ -1,91 +0,0 @@
-migrator = $migrator;
- }
-
- /**
- * Execute the console command.
- *
- * @return int
- */
- public function handle()
- {
- if (! $this->confirmToProceed()) {
- return 1;
- }
-
- return $this->migrator->usingConnection($this->option('database'), function () {
- // First, we'll make sure that the migration table actually exists before we
- // start trying to rollback and re-run all of the migrations. If it's not
- // present we'll just bail out with an info message for the developers.
- if (! $this->migrator->repositoryExists()) {
- return $this->comment('Migration table not found.');
- }
-
- $this->migrator->setOutput($this->output)->reset(
- $this->getMigrationPaths(), $this->option('pretend')
- );
- });
- }
-
- /**
- * Get the console command options.
- *
- * @return array
- */
- protected function getOptions()
- {
- return [
- ['database', null, InputOption::VALUE_OPTIONAL, 'The database connection to use'],
-
- ['force', null, InputOption::VALUE_NONE, 'Force the operation to run when in production'],
-
- ['path', null, InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY, 'The path(s) to the migrations files to be executed'],
-
- ['realpath', null, InputOption::VALUE_NONE, 'Indicate any provided migration file paths are pre-resolved absolute paths'],
-
- ['pretend', null, InputOption::VALUE_NONE, 'Dump the SQL queries that would be run'],
- ];
- }
-}
diff --git a/vendor/illuminate/database/Console/Migrations/RollbackCommand.php b/vendor/illuminate/database/Console/Migrations/RollbackCommand.php
deleted file mode 100755
index c851360f..00000000
--- a/vendor/illuminate/database/Console/Migrations/RollbackCommand.php
+++ /dev/null
@@ -1,91 +0,0 @@
-migrator = $migrator;
- }
-
- /**
- * Execute the console command.
- *
- * @return int
- */
- public function handle()
- {
- if (! $this->confirmToProceed()) {
- return 1;
- }
-
- $this->migrator->usingConnection($this->option('database'), function () {
- $this->migrator->setOutput($this->output)->rollback(
- $this->getMigrationPaths(), [
- 'pretend' => $this->option('pretend'),
- 'step' => (int) $this->option('step'),
- ]
- );
- });
-
- return 0;
- }
-
- /**
- * Get the console command options.
- *
- * @return array
- */
- protected function getOptions()
- {
- return [
- ['database', null, InputOption::VALUE_OPTIONAL, 'The database connection to use'],
-
- ['force', null, InputOption::VALUE_NONE, 'Force the operation to run when in production'],
-
- ['path', null, InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY, 'The path(s) to the migrations files to be executed'],
-
- ['realpath', null, InputOption::VALUE_NONE, 'Indicate any provided migration file paths are pre-resolved absolute paths'],
-
- ['pretend', null, InputOption::VALUE_NONE, 'Dump the SQL queries that would be run'],
-
- ['step', null, InputOption::VALUE_OPTIONAL, 'The number of migrations to be reverted'],
- ];
- }
-}
diff --git a/vendor/illuminate/database/Console/Migrations/StatusCommand.php b/vendor/illuminate/database/Console/Migrations/StatusCommand.php
deleted file mode 100644
index 2cf82f96..00000000
--- a/vendor/illuminate/database/Console/Migrations/StatusCommand.php
+++ /dev/null
@@ -1,115 +0,0 @@
-migrator = $migrator;
- }
-
- /**
- * Execute the console command.
- *
- * @return int|null
- */
- public function handle()
- {
- return $this->migrator->usingConnection($this->option('database'), function () {
- if (! $this->migrator->repositoryExists()) {
- $this->error('Migration table not found.');
-
- return 1;
- }
-
- $ran = $this->migrator->getRepository()->getRan();
-
- $batches = $this->migrator->getRepository()->getMigrationBatches();
-
- if (count($migrations = $this->getStatusFor($ran, $batches)) > 0) {
- $this->table(['Ran?', 'Migration', 'Batch'], $migrations);
- } else {
- $this->error('No migrations found');
- }
- });
- }
-
- /**
- * Get the status for the given ran migrations.
- *
- * @param array $ran
- * @param array $batches
- * @return \Illuminate\Support\Collection
- */
- protected function getStatusFor(array $ran, array $batches)
- {
- return Collection::make($this->getAllMigrationFiles())
- ->map(function ($migration) use ($ran, $batches) {
- $migrationName = $this->migrator->getMigrationName($migration);
-
- return in_array($migrationName, $ran)
- ? ['Yes ', $migrationName, $batches[$migrationName]]
- : ['No ', $migrationName];
- });
- }
-
- /**
- * Get an array of all of the migration files.
- *
- * @return array
- */
- protected function getAllMigrationFiles()
- {
- return $this->migrator->getMigrationFiles($this->getMigrationPaths());
- }
-
- /**
- * Get the console command options.
- *
- * @return array
- */
- protected function getOptions()
- {
- return [
- ['database', null, InputOption::VALUE_OPTIONAL, 'The database connection to use'],
-
- ['path', null, InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY, 'The path(s) to the migrations files to use'],
-
- ['realpath', null, InputOption::VALUE_NONE, 'Indicate any provided migration file paths are pre-resolved absolute paths'],
- ];
- }
-}
diff --git a/vendor/illuminate/database/Console/Migrations/TableGuesser.php b/vendor/illuminate/database/Console/Migrations/TableGuesser.php
deleted file mode 100644
index 82dfbddb..00000000
--- a/vendor/illuminate/database/Console/Migrations/TableGuesser.php
+++ /dev/null
@@ -1,37 +0,0 @@
-models();
-
- if ($models->isEmpty()) {
- $this->info('No prunable models found.');
-
- return;
- }
-
- if ($this->option('pretend')) {
- $models->each(function ($model) {
- $this->pretendToPrune($model);
- });
-
- return;
- }
-
- $events->listen(ModelsPruned::class, function ($event) {
- $this->info("{$event->count} [{$event->model}] records have been pruned.");
- });
-
- $models->each(function ($model) {
- $instance = new $model;
-
- $chunkSize = property_exists($instance, 'prunableChunkSize')
- ? $instance->prunableChunkSize
- : $this->option('chunk');
-
- $total = $this->isPrunable($model)
- ? $instance->pruneAll($chunkSize)
- : 0;
-
- if ($total == 0) {
- $this->info("No prunable [$model] records found.");
- }
- });
-
- $events->forget(ModelsPruned::class);
- }
-
- /**
- * Determine the models that should be pruned.
- *
- * @return \Illuminate\Support\Collection
- */
- protected function models()
- {
- if (! empty($models = $this->option('model'))) {
- return collect($models);
- }
-
- return collect((new Finder)->in(app_path('Models'))->files()->name('*.php'))
- ->map(function ($model) {
- $namespace = $this->laravel->getNamespace();
-
- return $namespace.str_replace(
- ['/', '.php'],
- ['\\', ''],
- Str::after($model->getRealPath(), realpath(app_path()).DIRECTORY_SEPARATOR)
- );
- })->filter(function ($model) {
- return $this->isPrunable($model);
- })->values();
- }
-
- /**
- * Determine if the given model class is prunable.
- *
- * @param string $model
- * @return bool
- */
- protected function isPrunable($model)
- {
- $uses = class_uses_recursive($model);
-
- return in_array(Prunable::class, $uses) || in_array(MassPrunable::class, $uses);
- }
-
- /**
- * Display how many models will be pruned.
- *
- * @param string $model
- * @return void
- */
- protected function pretendToPrune($model)
- {
- $instance = new $model;
-
- $count = $instance->prunable()
- ->when(in_array(SoftDeletes::class, class_uses_recursive(get_class($instance))), function ($query) {
- $query->withTrashed();
- })->count();
-
- if ($count === 0) {
- $this->info("No prunable [$model] records found.");
- } else {
- $this->info("{$count} [{$model}] records will be pruned.");
- }
- }
-}
diff --git a/vendor/illuminate/database/Console/Seeds/SeedCommand.php b/vendor/illuminate/database/Console/Seeds/SeedCommand.php
deleted file mode 100644
index 058e545c..00000000
--- a/vendor/illuminate/database/Console/Seeds/SeedCommand.php
+++ /dev/null
@@ -1,138 +0,0 @@
-resolver = $resolver;
- }
-
- /**
- * Execute the console command.
- *
- * @return int
- */
- public function handle()
- {
- if (! $this->confirmToProceed()) {
- return 1;
- }
-
- $previousConnection = $this->resolver->getDefaultConnection();
-
- $this->resolver->setDefaultConnection($this->getDatabase());
-
- Model::unguarded(function () {
- $this->getSeeder()->__invoke();
- });
-
- if ($previousConnection) {
- $this->resolver->setDefaultConnection($previousConnection);
- }
-
- $this->info('Database seeding completed successfully.');
-
- return 0;
- }
-
- /**
- * Get a seeder instance from the container.
- *
- * @return \Illuminate\Database\Seeder
- */
- protected function getSeeder()
- {
- $class = $this->input->getArgument('class') ?? $this->input->getOption('class');
-
- if (strpos($class, '\\') === false) {
- $class = 'Database\\Seeders\\'.$class;
- }
-
- if ($class === 'Database\\Seeders\\DatabaseSeeder' &&
- ! class_exists($class)) {
- $class = 'DatabaseSeeder';
- }
-
- return $this->laravel->make($class)
- ->setContainer($this->laravel)
- ->setCommand($this);
- }
-
- /**
- * Get the name of the database connection to use.
- *
- * @return string
- */
- protected function getDatabase()
- {
- $database = $this->input->getOption('database');
-
- return $database ?: $this->laravel['config']['database.default'];
- }
-
- /**
- * Get the console command arguments.
- *
- * @return array
- */
- protected function getArguments()
- {
- return [
- ['class', InputArgument::OPTIONAL, 'The class name of the root seeder', null],
- ];
- }
-
- /**
- * Get the console command options.
- *
- * @return array
- */
- protected function getOptions()
- {
- return [
- ['class', null, InputOption::VALUE_OPTIONAL, 'The class name of the root seeder', 'Database\\Seeders\\DatabaseSeeder'],
- ['database', null, InputOption::VALUE_OPTIONAL, 'The database connection to seed'],
- ['force', null, InputOption::VALUE_NONE, 'Force the operation to run when in production'],
- ];
- }
-}
diff --git a/vendor/illuminate/database/Console/Seeds/SeederMakeCommand.php b/vendor/illuminate/database/Console/Seeds/SeederMakeCommand.php
deleted file mode 100644
index aef7a77e..00000000
--- a/vendor/illuminate/database/Console/Seeds/SeederMakeCommand.php
+++ /dev/null
@@ -1,88 +0,0 @@
-resolveStubPath('/stubs/seeder.stub');
- }
-
- /**
- * Resolve the fully-qualified path to the stub.
- *
- * @param string $stub
- * @return string
- */
- protected function resolveStubPath($stub)
- {
- return is_file($customPath = $this->laravel->basePath(trim($stub, '/')))
- ? $customPath
- : __DIR__.$stub;
- }
-
- /**
- * Get the destination class path.
- *
- * @param string $name
- * @return string
- */
- protected function getPath($name)
- {
- if (is_dir($this->laravel->databasePath().'/seeds')) {
- return $this->laravel->databasePath().'/seeds/'.$name.'.php';
- } else {
- return $this->laravel->databasePath().'/seeders/'.$name.'.php';
- }
- }
-
- /**
- * Parse the class name and format according to the root namespace.
- *
- * @param string $name
- * @return string
- */
- protected function qualifyClass($name)
- {
- return $name;
- }
-}
diff --git a/vendor/illuminate/database/Console/Seeds/stubs/seeder.stub b/vendor/illuminate/database/Console/Seeds/stubs/seeder.stub
deleted file mode 100644
index 5662969c..00000000
--- a/vendor/illuminate/database/Console/Seeds/stubs/seeder.stub
+++ /dev/null
@@ -1,18 +0,0 @@
-confirmToProceed()) {
- return 1;
- }
-
- $database = $this->input->getOption('database');
-
- if ($this->option('drop-views')) {
- $this->dropAllViews($database);
-
- $this->info('Dropped all views successfully.');
- }
-
- $this->dropAllTables($database);
-
- $this->info('Dropped all tables successfully.');
-
- if ($this->option('drop-types')) {
- $this->dropAllTypes($database);
-
- $this->info('Dropped all types successfully.');
- }
-
- return 0;
- }
-
- /**
- * Drop all of the database tables.
- *
- * @param string $database
- * @return void
- */
- protected function dropAllTables($database)
- {
- $this->laravel['db']->connection($database)
- ->getSchemaBuilder()
- ->dropAllTables();
- }
-
- /**
- * Drop all of the database views.
- *
- * @param string $database
- * @return void
- */
- protected function dropAllViews($database)
- {
- $this->laravel['db']->connection($database)
- ->getSchemaBuilder()
- ->dropAllViews();
- }
-
- /**
- * Drop all of the database types.
- *
- * @param string $database
- * @return void
- */
- protected function dropAllTypes($database)
- {
- $this->laravel['db']->connection($database)
- ->getSchemaBuilder()
- ->dropAllTypes();
- }
-
- /**
- * Get the console command options.
- *
- * @return array
- */
- protected function getOptions()
- {
- return [
- ['database', null, InputOption::VALUE_OPTIONAL, 'The database connection to use'],
- ['drop-views', null, InputOption::VALUE_NONE, 'Drop all tables and views'],
- ['drop-types', null, InputOption::VALUE_NONE, 'Drop all tables and types (Postgres only)'],
- ['force', null, InputOption::VALUE_NONE, 'Force the operation to run when in production'],
- ];
- }
-}
diff --git a/vendor/illuminate/database/DBAL/TimestampType.php b/vendor/illuminate/database/DBAL/TimestampType.php
deleted file mode 100644
index 296773f4..00000000
--- a/vendor/illuminate/database/DBAL/TimestampType.php
+++ /dev/null
@@ -1,110 +0,0 @@
-getName();
-
- switch ($name) {
- case 'mysql':
- case 'mysql2':
- return $this->getMySqlPlatformSQLDeclaration($fieldDeclaration);
-
- case 'postgresql':
- case 'pgsql':
- case 'postgres':
- return $this->getPostgresPlatformSQLDeclaration($fieldDeclaration);
-
- case 'mssql':
- return $this->getSqlServerPlatformSQLDeclaration($fieldDeclaration);
-
- case 'sqlite':
- case 'sqlite3':
- return $this->getSQLitePlatformSQLDeclaration($fieldDeclaration);
-
- default:
- throw new DBALException('Invalid platform: '.$name);
- }
- }
-
- /**
- * Get the SQL declaration for MySQL.
- *
- * @param array $fieldDeclaration
- * @return string
- */
- protected function getMySqlPlatformSQLDeclaration(array $fieldDeclaration)
- {
- $columnType = 'TIMESTAMP';
-
- if ($fieldDeclaration['precision']) {
- $columnType = 'TIMESTAMP('.$fieldDeclaration['precision'].')';
- }
-
- $notNull = $fieldDeclaration['notnull'] ?? false;
-
- if (! $notNull) {
- return $columnType.' NULL';
- }
-
- return $columnType;
- }
-
- /**
- * Get the SQL declaration for PostgreSQL.
- *
- * @param array $fieldDeclaration
- * @return string
- */
- protected function getPostgresPlatformSQLDeclaration(array $fieldDeclaration)
- {
- return 'TIMESTAMP('.(int) $fieldDeclaration['precision'].')';
- }
-
- /**
- * Get the SQL declaration for SQL Server.
- *
- * @param array $fieldDeclaration
- * @return string
- */
- protected function getSqlServerPlatformSQLDeclaration(array $fieldDeclaration)
- {
- return $fieldDeclaration['precision'] ?? false
- ? 'DATETIME2('.$fieldDeclaration['precision'].')'
- : 'DATETIME';
- }
-
- /**
- * Get the SQL declaration for SQLite.
- *
- * @param array $fieldDeclaration
- * @return string
- */
- protected function getSQLitePlatformSQLDeclaration(array $fieldDeclaration)
- {
- return 'DATETIME';
- }
-
- /**
- * {@inheritdoc}
- *
- * @return string
- */
- public function getName()
- {
- return 'timestamp';
- }
-}
diff --git a/vendor/illuminate/database/DatabaseManager.php b/vendor/illuminate/database/DatabaseManager.php
deleted file mode 100755
index 5d2f7cdc..00000000
--- a/vendor/illuminate/database/DatabaseManager.php
+++ /dev/null
@@ -1,390 +0,0 @@
-app = $app;
- $this->factory = $factory;
-
- $this->reconnector = function ($connection) {
- $this->reconnect($connection->getNameWithReadWriteType());
- };
- }
-
- /**
- * Get a database connection instance.
- *
- * @param string|null $name
- * @return \Illuminate\Database\Connection
- */
- public function connection($name = null)
- {
- [$database, $type] = $this->parseConnectionName($name);
-
- $name = $name ?: $database;
-
- // If we haven't created this connection, we'll create it based on the config
- // provided in the application. Once we've created the connections we will
- // set the "fetch mode" for PDO which determines the query return types.
- if (! isset($this->connections[$name])) {
- $this->connections[$name] = $this->configure(
- $this->makeConnection($database), $type
- );
- }
-
- return $this->connections[$name];
- }
-
- /**
- * Parse the connection into an array of the name and read / write type.
- *
- * @param string $name
- * @return array
- */
- protected function parseConnectionName($name)
- {
- $name = $name ?: $this->getDefaultConnection();
-
- return Str::endsWith($name, ['::read', '::write'])
- ? explode('::', $name, 2) : [$name, null];
- }
-
- /**
- * Make the database connection instance.
- *
- * @param string $name
- * @return \Illuminate\Database\Connection
- */
- protected function makeConnection($name)
- {
- $config = $this->configuration($name);
-
- // First we will check by the connection name to see if an extension has been
- // registered specifically for that connection. If it has we will call the
- // Closure and pass it the config allowing it to resolve the connection.
- if (isset($this->extensions[$name])) {
- return call_user_func($this->extensions[$name], $config, $name);
- }
-
- // Next we will check to see if an extension has been registered for a driver
- // and will call the Closure if so, which allows us to have a more generic
- // resolver for the drivers themselves which applies to all connections.
- if (isset($this->extensions[$driver = $config['driver']])) {
- return call_user_func($this->extensions[$driver], $config, $name);
- }
-
- return $this->factory->make($config, $name);
- }
-
- /**
- * Get the configuration for a connection.
- *
- * @param string $name
- * @return array
- *
- * @throws \InvalidArgumentException
- */
- protected function configuration($name)
- {
- $name = $name ?: $this->getDefaultConnection();
-
- // To get the database connection configuration, we will just pull each of the
- // connection configurations and get the configurations for the given name.
- // If the configuration doesn't exist, we'll throw an exception and bail.
- $connections = $this->app['config']['database.connections'];
-
- if (is_null($config = Arr::get($connections, $name))) {
- throw new InvalidArgumentException("Database connection [{$name}] not configured.");
- }
-
- return (new ConfigurationUrlParser)
- ->parseConfiguration($config);
- }
-
- /**
- * Prepare the database connection instance.
- *
- * @param \Illuminate\Database\Connection $connection
- * @param string $type
- * @return \Illuminate\Database\Connection
- */
- protected function configure(Connection $connection, $type)
- {
- $connection = $this->setPdoForType($connection, $type)->setReadWriteType($type);
-
- // First we'll set the fetch mode and a few other dependencies of the database
- // connection. This method basically just configures and prepares it to get
- // used by the application. Once we're finished we'll return it back out.
- if ($this->app->bound('events')) {
- $connection->setEventDispatcher($this->app['events']);
- }
-
- if ($this->app->bound('db.transactions')) {
- $connection->setTransactionManager($this->app['db.transactions']);
- }
-
- // Here we'll set a reconnector callback. This reconnector can be any callable
- // so we will set a Closure to reconnect from this manager with the name of
- // the connection, which will allow us to reconnect from the connections.
- $connection->setReconnector($this->reconnector);
-
- return $connection;
- }
-
- /**
- * Prepare the read / write mode for database connection instance.
- *
- * @param \Illuminate\Database\Connection $connection
- * @param string|null $type
- * @return \Illuminate\Database\Connection
- */
- protected function setPdoForType(Connection $connection, $type = null)
- {
- if ($type === 'read') {
- $connection->setPdo($connection->getReadPdo());
- } elseif ($type === 'write') {
- $connection->setReadPdo($connection->getPdo());
- }
-
- return $connection;
- }
-
- /**
- * Disconnect from the given database and remove from local cache.
- *
- * @param string|null $name
- * @return void
- */
- public function purge($name = null)
- {
- $name = $name ?: $this->getDefaultConnection();
-
- $this->disconnect($name);
-
- unset($this->connections[$name]);
- }
-
- /**
- * Disconnect from the given database.
- *
- * @param string|null $name
- * @return void
- */
- public function disconnect($name = null)
- {
- if (isset($this->connections[$name = $name ?: $this->getDefaultConnection()])) {
- $this->connections[$name]->disconnect();
- }
- }
-
- /**
- * Reconnect to the given database.
- *
- * @param string|null $name
- * @return \Illuminate\Database\Connection
- */
- public function reconnect($name = null)
- {
- $this->disconnect($name = $name ?: $this->getDefaultConnection());
-
- if (! isset($this->connections[$name])) {
- return $this->connection($name);
- }
-
- return $this->refreshPdoConnections($name);
- }
-
- /**
- * Set the default database connection for the callback execution.
- *
- * @param string $name
- * @param callable $callback
- * @return mixed
- */
- public function usingConnection($name, callable $callback)
- {
- $previousName = $this->getDefaultConnection();
-
- $this->setDefaultConnection($name);
-
- return tap($callback(), function () use ($previousName) {
- $this->setDefaultConnection($previousName);
- });
- }
-
- /**
- * Refresh the PDO connections on a given connection.
- *
- * @param string $name
- * @return \Illuminate\Database\Connection
- */
- protected function refreshPdoConnections($name)
- {
- [$database, $type] = $this->parseConnectionName($name);
-
- $fresh = $this->configure(
- $this->makeConnection($database), $type
- );
-
- return $this->connections[$name]
- ->setPdo($fresh->getRawPdo())
- ->setReadPdo($fresh->getRawReadPdo());
- }
-
- /**
- * Get the default connection name.
- *
- * @return string
- */
- public function getDefaultConnection()
- {
- return $this->app['config']['database.default'];
- }
-
- /**
- * Set the default connection name.
- *
- * @param string $name
- * @return void
- */
- public function setDefaultConnection($name)
- {
- $this->app['config']['database.default'] = $name;
- }
-
- /**
- * Get all of the support drivers.
- *
- * @return array
- */
- public function supportedDrivers()
- {
- return ['mysql', 'pgsql', 'sqlite', 'sqlsrv'];
- }
-
- /**
- * Get all of the drivers that are actually available.
- *
- * @return array
- */
- public function availableDrivers()
- {
- return array_intersect(
- $this->supportedDrivers(),
- str_replace('dblib', 'sqlsrv', PDO::getAvailableDrivers())
- );
- }
-
- /**
- * Register an extension connection resolver.
- *
- * @param string $name
- * @param callable $resolver
- * @return void
- */
- public function extend($name, callable $resolver)
- {
- $this->extensions[$name] = $resolver;
- }
-
- /**
- * Return all of the created connections.
- *
- * @return array
- */
- public function getConnections()
- {
- return $this->connections;
- }
-
- /**
- * Set the database reconnector callback.
- *
- * @param callable $reconnector
- * @return void
- */
- public function setReconnector(callable $reconnector)
- {
- $this->reconnector = $reconnector;
- }
-
- /**
- * Set the application instance used by the manager.
- *
- * @param \Illuminate\Contracts\Foundation\Application $app
- * @return $this
- */
- public function setApplication($app)
- {
- $this->app = $app;
-
- return $this;
- }
-
- /**
- * Dynamically pass methods to the default connection.
- *
- * @param string $method
- * @param array $parameters
- * @return mixed
- */
- public function __call($method, $parameters)
- {
- return $this->connection()->$method(...$parameters);
- }
-}
diff --git a/vendor/illuminate/database/DatabaseServiceProvider.php b/vendor/illuminate/database/DatabaseServiceProvider.php
deleted file mode 100755
index 9f2ab185..00000000
--- a/vendor/illuminate/database/DatabaseServiceProvider.php
+++ /dev/null
@@ -1,131 +0,0 @@
-app['db']);
-
- Model::setEventDispatcher($this->app['events']);
- }
-
- /**
- * Register the service provider.
- *
- * @return void
- */
- public function register()
- {
- Model::clearBootedModels();
-
- $this->registerConnectionServices();
- $this->registerEloquentFactory();
- $this->registerQueueableEntityResolver();
- $this->registerDoctrineTypes();
- }
-
- /**
- * Register the primary database bindings.
- *
- * @return void
- */
- protected function registerConnectionServices()
- {
- // The connection factory is used to create the actual connection instances on
- // the database. We will inject the factory into the manager so that it may
- // make the connections while they are actually needed and not of before.
- $this->app->singleton('db.factory', function ($app) {
- return new ConnectionFactory($app);
- });
-
- // The database manager is used to resolve various connections, since multiple
- // connections might be managed. It also implements the connection resolver
- // interface which may be used by other components requiring connections.
- $this->app->singleton('db', function ($app) {
- return new DatabaseManager($app, $app['db.factory']);
- });
-
- $this->app->bind('db.connection', function ($app) {
- return $app['db']->connection();
- });
-
- $this->app->singleton('db.transactions', function ($app) {
- return new DatabaseTransactionsManager;
- });
- }
-
- /**
- * Register the Eloquent factory instance in the container.
- *
- * @return void
- */
- protected function registerEloquentFactory()
- {
- $this->app->singleton(FakerGenerator::class, function ($app, $parameters) {
- $locale = $parameters['locale'] ?? $app['config']->get('app.faker_locale', 'en_US');
-
- if (! isset(static::$fakers[$locale])) {
- static::$fakers[$locale] = FakerFactory::create($locale);
- }
-
- static::$fakers[$locale]->unique(true);
-
- return static::$fakers[$locale];
- });
- }
-
- /**
- * Register the queueable entity resolver implementation.
- *
- * @return void
- */
- protected function registerQueueableEntityResolver()
- {
- $this->app->singleton(EntityResolver::class, function () {
- return new QueueEntityResolver;
- });
- }
-
- /**
- * Register custom types with the Doctrine DBAL library.
- *
- * @return void
- */
- protected function registerDoctrineTypes()
- {
- if (! class_exists(Type::class)) {
- return;
- }
-
- $types = $this->app['config']->get('database.dbal.types', []);
-
- foreach ($types as $name => $class) {
- if (! Type::hasType($name)) {
- Type::addType($name, $class);
- }
- }
- }
-}
diff --git a/vendor/illuminate/database/DatabaseTransactionRecord.php b/vendor/illuminate/database/DatabaseTransactionRecord.php
deleted file mode 100755
index 3259552d..00000000
--- a/vendor/illuminate/database/DatabaseTransactionRecord.php
+++ /dev/null
@@ -1,73 +0,0 @@
-connection = $connection;
- $this->level = $level;
- }
-
- /**
- * Register a callback to be executed after committing.
- *
- * @param callable $callback
- * @return void
- */
- public function addCallback($callback)
- {
- $this->callbacks[] = $callback;
- }
-
- /**
- * Execute all of the callbacks.
- *
- * @return void
- */
- public function executeCallbacks()
- {
- foreach ($this->callbacks as $callback) {
- call_user_func($callback);
- }
- }
-
- /**
- * Get all of the callbacks.
- *
- * @return array
- */
- public function getCallbacks()
- {
- return $this->callbacks;
- }
-}
diff --git a/vendor/illuminate/database/DatabaseTransactionsManager.php b/vendor/illuminate/database/DatabaseTransactionsManager.php
deleted file mode 100755
index add2f7c1..00000000
--- a/vendor/illuminate/database/DatabaseTransactionsManager.php
+++ /dev/null
@@ -1,96 +0,0 @@
-transactions = collect();
- }
-
- /**
- * Start a new database transaction.
- *
- * @param string $connection
- * @param int $level
- * @return void
- */
- public function begin($connection, $level)
- {
- $this->transactions->push(
- new DatabaseTransactionRecord($connection, $level)
- );
- }
-
- /**
- * Rollback the active database transaction.
- *
- * @param string $connection
- * @param int $level
- * @return void
- */
- public function rollback($connection, $level)
- {
- $this->transactions = $this->transactions->reject(function ($transaction) use ($connection, $level) {
- return $transaction->connection == $connection &&
- $transaction->level > $level;
- })->values();
- }
-
- /**
- * Commit the active database transaction.
- *
- * @param string $connection
- * @return void
- */
- public function commit($connection)
- {
- [$forThisConnection, $forOtherConnections] = $this->transactions->partition(
- function ($transaction) use ($connection) {
- return $transaction->connection == $connection;
- }
- );
-
- $this->transactions = $forOtherConnections->values();
-
- $forThisConnection->map->executeCallbacks();
- }
-
- /**
- * Register a transaction callback.
- *
- * @param callable $callback
- * @return void
- */
- public function addCallback($callback)
- {
- if ($current = $this->transactions->last()) {
- return $current->addCallback($callback);
- }
-
- call_user_func($callback);
- }
-
- /**
- * Get all the transactions.
- *
- * @return \Illuminate\Support\Collection
- */
- public function getTransactions()
- {
- return $this->transactions;
- }
-}
diff --git a/vendor/illuminate/database/DetectsConcurrencyErrors.php b/vendor/illuminate/database/DetectsConcurrencyErrors.php
deleted file mode 100644
index c6c66f43..00000000
--- a/vendor/illuminate/database/DetectsConcurrencyErrors.php
+++ /dev/null
@@ -1,37 +0,0 @@
-getCode() === 40001 || $e->getCode() === '40001')) {
- return true;
- }
-
- $message = $e->getMessage();
-
- return Str::contains($message, [
- 'Deadlock found when trying to get lock',
- 'deadlock detected',
- 'The database file is locked',
- 'database is locked',
- 'database table is locked',
- 'A table in the database is locked',
- 'has been chosen as the deadlock victim',
- 'Lock wait timeout exceeded; try restarting transaction',
- 'WSREP detected deadlock/conflict and aborted the transaction. Try restarting the transaction',
- ]);
- }
-}
diff --git a/vendor/illuminate/database/DetectsLostConnections.php b/vendor/illuminate/database/DetectsLostConnections.php
deleted file mode 100644
index 1cbd7b15..00000000
--- a/vendor/illuminate/database/DetectsLostConnections.php
+++ /dev/null
@@ -1,61 +0,0 @@
-getMessage();
-
- return Str::contains($message, [
- 'server has gone away',
- 'no connection to the server',
- 'Lost connection',
- 'is dead or not enabled',
- 'Error while sending',
- 'decryption failed or bad record mac',
- 'server closed the connection unexpectedly',
- 'SSL connection has been closed unexpectedly',
- 'Error writing data to the connection',
- 'Resource deadlock avoided',
- 'Transaction() on null',
- 'child connection forced to terminate due to client_idle_limit',
- 'query_wait_timeout',
- 'reset by peer',
- 'Physical connection is not usable',
- 'TCP Provider: Error code 0x68',
- 'ORA-03114',
- 'Packets out of order. Expected',
- 'Adaptive Server connection failed',
- 'Communication link failure',
- 'connection is no longer usable',
- 'Login timeout expired',
- 'SQLSTATE[HY000] [2002] Connection refused',
- 'running with the --read-only option so it cannot execute this statement',
- 'The connection is broken and recovery is not possible. The connection is marked by the client driver as unrecoverable. No attempt was made to restore the connection.',
- 'SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Try again',
- 'SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known',
- 'SQLSTATE[HY000]: General error: 7 SSL SYSCALL error: EOF detected',
- 'SQLSTATE[HY000] [2002] Connection timed out',
- 'SSL: Connection timed out',
- 'SQLSTATE[HY000]: General error: 1105 The last transaction was aborted due to Seamless Scaling. Please retry.',
- 'Temporary failure in name resolution',
- 'SSL: Broken pipe',
- 'SQLSTATE[08S01]: Communication link failure',
- 'SQLSTATE[08006] [7] could not connect to server: Connection refused Is the server running on host',
- 'SQLSTATE[HY000]: General error: 7 SSL SYSCALL error: No route to host',
- 'The client was disconnected by the server because of inactivity. See wait_timeout and interactive_timeout for configuring this behavior.',
- 'SQLSTATE[08006] [7] could not translate host name',
- ]);
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/BroadcastableModelEventOccurred.php b/vendor/illuminate/database/Eloquent/BroadcastableModelEventOccurred.php
deleted file mode 100644
index 14be425a..00000000
--- a/vendor/illuminate/database/Eloquent/BroadcastableModelEventOccurred.php
+++ /dev/null
@@ -1,137 +0,0 @@
-model = $model;
- $this->event = $event;
- }
-
- /**
- * The channels the event should broadcast on.
- *
- * @return array
- */
- public function broadcastOn()
- {
- $channels = empty($this->channels)
- ? ($this->model->broadcastOn($this->event) ?: [])
- : $this->channels;
-
- return collect($channels)->map(function ($channel) {
- return $channel instanceof Model ? new PrivateChannel($channel) : $channel;
- })->all();
- }
-
- /**
- * The name the event should broadcast as.
- *
- * @return string
- */
- public function broadcastAs()
- {
- $default = class_basename($this->model).ucfirst($this->event);
-
- return method_exists($this->model, 'broadcastAs')
- ? ($this->model->broadcastAs($this->event) ?: $default)
- : $default;
- }
-
- /**
- * Get the data that should be sent with the broadcasted event.
- *
- * @return array|null
- */
- public function broadcastWith()
- {
- return method_exists($this->model, 'broadcastWith')
- ? $this->model->broadcastWith($this->event)
- : null;
- }
-
- /**
- * Manually specify the channels the event should broadcast on.
- *
- * @param array $channels
- * @return $this
- */
- public function onChannels(array $channels)
- {
- $this->channels = $channels;
-
- return $this;
- }
-
- /**
- * Determine if the event should be broadcast synchronously.
- *
- * @return bool
- */
- public function shouldBroadcastNow()
- {
- return $this->event === 'deleted' &&
- ! method_exists($this->model, 'bootSoftDeletes');
- }
-
- /**
- * Get the event name.
- *
- * @return string
- */
- public function event()
- {
- return $this->event;
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/BroadcastsEvents.php b/vendor/illuminate/database/Eloquent/BroadcastsEvents.php
deleted file mode 100644
index 79dc02d8..00000000
--- a/vendor/illuminate/database/Eloquent/BroadcastsEvents.php
+++ /dev/null
@@ -1,197 +0,0 @@
-broadcastCreated();
- });
-
- static::updated(function ($model) {
- $model->broadcastUpdated();
- });
-
- if (method_exists(static::class, 'bootSoftDeletes')) {
- static::softDeleted(function ($model) {
- $model->broadcastTrashed();
- });
-
- static::restored(function ($model) {
- $model->broadcastRestored();
- });
- }
-
- static::deleted(function ($model) {
- $model->broadcastDeleted();
- });
- }
-
- /**
- * Broadcast that the model was created.
- *
- * @param \Illuminate\Broadcasting\Channel|\Illuminate\Contracts\Broadcasting\HasBroadcastChannel|array|null $channels
- * @return \Illuminate\Broadcasting\PendingBroadcast
- */
- public function broadcastCreated($channels = null)
- {
- return $this->broadcastIfBroadcastChannelsExistForEvent(
- $this->newBroadcastableModelEvent('created'), 'created', $channels
- );
- }
-
- /**
- * Broadcast that the model was updated.
- *
- * @param \Illuminate\Broadcasting\Channel|\Illuminate\Contracts\Broadcasting\HasBroadcastChannel|array|null $channels
- * @return \Illuminate\Broadcasting\PendingBroadcast
- */
- public function broadcastUpdated($channels = null)
- {
- return $this->broadcastIfBroadcastChannelsExistForEvent(
- $this->newBroadcastableModelEvent('updated'), 'updated', $channels
- );
- }
-
- /**
- * Broadcast that the model was trashed.
- *
- * @param \Illuminate\Broadcasting\Channel|\Illuminate\Contracts\Broadcasting\HasBroadcastChannel|array|null $channels
- * @return \Illuminate\Broadcasting\PendingBroadcast
- */
- public function broadcastTrashed($channels = null)
- {
- return $this->broadcastIfBroadcastChannelsExistForEvent(
- $this->newBroadcastableModelEvent('trashed'), 'trashed', $channels
- );
- }
-
- /**
- * Broadcast that the model was restored.
- *
- * @param \Illuminate\Broadcasting\Channel|\Illuminate\Contracts\Broadcasting\HasBroadcastChannel|array|null $channels
- * @return \Illuminate\Broadcasting\PendingBroadcast
- */
- public function broadcastRestored($channels = null)
- {
- return $this->broadcastIfBroadcastChannelsExistForEvent(
- $this->newBroadcastableModelEvent('restored'), 'restored', $channels
- );
- }
-
- /**
- * Broadcast that the model was deleted.
- *
- * @param \Illuminate\Broadcasting\Channel|\Illuminate\Contracts\Broadcasting\HasBroadcastChannel|array|null $channels
- * @return \Illuminate\Broadcasting\PendingBroadcast
- */
- public function broadcastDeleted($channels = null)
- {
- return $this->broadcastIfBroadcastChannelsExistForEvent(
- $this->newBroadcastableModelEvent('deleted'), 'deleted', $channels
- );
- }
-
- /**
- * Broadcast the given event instance if channels are configured for the model event.
- *
- * @param mixed $instance
- * @param string $event
- * @param mixed $channels
- * @return \Illuminate\Broadcasting\PendingBroadcast|null
- */
- protected function broadcastIfBroadcastChannelsExistForEvent($instance, $event, $channels = null)
- {
- if (! static::$isBroadcasting) {
- return;
- }
-
- if (! empty($this->broadcastOn($event)) || ! empty($channels)) {
- return broadcast($instance->onChannels(Arr::wrap($channels)));
- }
- }
-
- /**
- * Create a new broadcastable model event event.
- *
- * @param string $event
- * @return mixed
- */
- public function newBroadcastableModelEvent($event)
- {
- return tap($this->newBroadcastableEvent($event), function ($event) {
- $event->connection = property_exists($this, 'broadcastConnection')
- ? $this->broadcastConnection
- : $this->broadcastConnection();
-
- $event->queue = property_exists($this, 'broadcastQueue')
- ? $this->broadcastQueue
- : $this->broadcastQueue();
-
- $event->afterCommit = property_exists($this, 'broadcastAfterCommit')
- ? $this->broadcastAfterCommit
- : $this->broadcastAfterCommit();
- });
- }
-
- /**
- * Create a new broadcastable model event for the model.
- *
- * @param string $event
- * @return \Illuminate\Database\Eloquent\BroadcastableModelEventOccurred
- */
- protected function newBroadcastableEvent($event)
- {
- return new BroadcastableModelEventOccurred($this, $event);
- }
-
- /**
- * Get the channels that model events should broadcast on.
- *
- * @param string $event
- * @return \Illuminate\Broadcasting\Channel|array
- */
- public function broadcastOn($event)
- {
- return [$this];
- }
-
- /**
- * Get the queue connection that should be used to broadcast model events.
- *
- * @return string|null
- */
- public function broadcastConnection()
- {
- //
- }
-
- /**
- * Get the queue that should be used to broadcast model events.
- *
- * @return string|null
- */
- public function broadcastQueue()
- {
- //
- }
-
- /**
- * Determine if the model event broadcast queued job should be dispatched after all transactions are committed.
- *
- * @return bool
- */
- public function broadcastAfterCommit()
- {
- return false;
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Builder.php b/vendor/illuminate/database/Eloquent/Builder.php
deleted file mode 100755
index 15075432..00000000
--- a/vendor/illuminate/database/Eloquent/Builder.php
+++ /dev/null
@@ -1,1724 +0,0 @@
-query = $query;
- }
-
- /**
- * Create and return an un-saved model instance.
- *
- * @param array $attributes
- * @return \Illuminate\Database\Eloquent\Model|static
- */
- public function make(array $attributes = [])
- {
- return $this->newModelInstance($attributes);
- }
-
- /**
- * Register a new global scope.
- *
- * @param string $identifier
- * @param \Illuminate\Database\Eloquent\Scope|\Closure $scope
- * @return $this
- */
- public function withGlobalScope($identifier, $scope)
- {
- $this->scopes[$identifier] = $scope;
-
- if (method_exists($scope, 'extend')) {
- $scope->extend($this);
- }
-
- return $this;
- }
-
- /**
- * Remove a registered global scope.
- *
- * @param \Illuminate\Database\Eloquent\Scope|string $scope
- * @return $this
- */
- public function withoutGlobalScope($scope)
- {
- if (! is_string($scope)) {
- $scope = get_class($scope);
- }
-
- unset($this->scopes[$scope]);
-
- $this->removedScopes[] = $scope;
-
- return $this;
- }
-
- /**
- * Remove all or passed registered global scopes.
- *
- * @param array|null $scopes
- * @return $this
- */
- public function withoutGlobalScopes(array $scopes = null)
- {
- if (! is_array($scopes)) {
- $scopes = array_keys($this->scopes);
- }
-
- foreach ($scopes as $scope) {
- $this->withoutGlobalScope($scope);
- }
-
- return $this;
- }
-
- /**
- * Get an array of global scopes that were removed from the query.
- *
- * @return array
- */
- public function removedScopes()
- {
- return $this->removedScopes;
- }
-
- /**
- * Add a where clause on the primary key to the query.
- *
- * @param mixed $id
- * @return $this
- */
- public function whereKey($id)
- {
- if ($id instanceof Model) {
- $id = $id->getKey();
- }
-
- if (is_array($id) || $id instanceof Arrayable) {
- $this->query->whereIn($this->model->getQualifiedKeyName(), $id);
-
- return $this;
- }
-
- if ($id !== null && $this->model->getKeyType() === 'string') {
- $id = (string) $id;
- }
-
- return $this->where($this->model->getQualifiedKeyName(), '=', $id);
- }
-
- /**
- * Add a where clause on the primary key to the query.
- *
- * @param mixed $id
- * @return $this
- */
- public function whereKeyNot($id)
- {
- if ($id instanceof Model) {
- $id = $id->getKey();
- }
-
- if (is_array($id) || $id instanceof Arrayable) {
- $this->query->whereNotIn($this->model->getQualifiedKeyName(), $id);
-
- return $this;
- }
-
- if ($id !== null && $this->model->getKeyType() === 'string') {
- $id = (string) $id;
- }
-
- return $this->where($this->model->getQualifiedKeyName(), '!=', $id);
- }
-
- /**
- * Add a basic where clause to the query.
- *
- * @param \Closure|string|array|\Illuminate\Database\Query\Expression $column
- * @param mixed $operator
- * @param mixed $value
- * @param string $boolean
- * @return $this
- */
- public function where($column, $operator = null, $value = null, $boolean = 'and')
- {
- if ($column instanceof Closure && is_null($operator)) {
- $column($query = $this->model->newQueryWithoutRelationships());
-
- $this->query->addNestedWhereQuery($query->getQuery(), $boolean);
- } else {
- $this->query->where(...func_get_args());
- }
-
- return $this;
- }
-
- /**
- * Add a basic where clause to the query, and return the first result.
- *
- * @param \Closure|string|array|\Illuminate\Database\Query\Expression $column
- * @param mixed $operator
- * @param mixed $value
- * @param string $boolean
- * @return \Illuminate\Database\Eloquent\Model|static|null
- */
- public function firstWhere($column, $operator = null, $value = null, $boolean = 'and')
- {
- return $this->where($column, $operator, $value, $boolean)->first();
- }
-
- /**
- * Add an "or where" clause to the query.
- *
- * @param \Closure|array|string|\Illuminate\Database\Query\Expression $column
- * @param mixed $operator
- * @param mixed $value
- * @return $this
- */
- public function orWhere($column, $operator = null, $value = null)
- {
- [$value, $operator] = $this->query->prepareValueAndOperator(
- $value, $operator, func_num_args() === 2
- );
-
- return $this->where($column, $operator, $value, 'or');
- }
-
- /**
- * Add an "order by" clause for a timestamp to the query.
- *
- * @param string|\Illuminate\Database\Query\Expression $column
- * @return $this
- */
- public function latest($column = null)
- {
- if (is_null($column)) {
- $column = $this->model->getCreatedAtColumn() ?? 'created_at';
- }
-
- $this->query->latest($column);
-
- return $this;
- }
-
- /**
- * Add an "order by" clause for a timestamp to the query.
- *
- * @param string|\Illuminate\Database\Query\Expression $column
- * @return $this
- */
- public function oldest($column = null)
- {
- if (is_null($column)) {
- $column = $this->model->getCreatedAtColumn() ?? 'created_at';
- }
-
- $this->query->oldest($column);
-
- return $this;
- }
-
- /**
- * Create a collection of models from plain arrays.
- *
- * @param array $items
- * @return \Illuminate\Database\Eloquent\Collection
- */
- public function hydrate(array $items)
- {
- $instance = $this->newModelInstance();
-
- return $instance->newCollection(array_map(function ($item) use ($items, $instance) {
- $model = $instance->newFromBuilder($item);
-
- if (count($items) > 1) {
- $model->preventsLazyLoading = Model::preventsLazyLoading();
- }
-
- return $model;
- }, $items));
- }
-
- /**
- * Create a collection of models from a raw query.
- *
- * @param string $query
- * @param array $bindings
- * @return \Illuminate\Database\Eloquent\Collection
- */
- public function fromQuery($query, $bindings = [])
- {
- return $this->hydrate(
- $this->query->getConnection()->select($query, $bindings)
- );
- }
-
- /**
- * Find a model by its primary key.
- *
- * @param mixed $id
- * @param array $columns
- * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|static[]|static|null
- */
- public function find($id, $columns = ['*'])
- {
- if (is_array($id) || $id instanceof Arrayable) {
- return $this->findMany($id, $columns);
- }
-
- return $this->whereKey($id)->first($columns);
- }
-
- /**
- * Find multiple models by their primary keys.
- *
- * @param \Illuminate\Contracts\Support\Arrayable|array $ids
- * @param array $columns
- * @return \Illuminate\Database\Eloquent\Collection
- */
- public function findMany($ids, $columns = ['*'])
- {
- $ids = $ids instanceof Arrayable ? $ids->toArray() : $ids;
-
- if (empty($ids)) {
- return $this->model->newCollection();
- }
-
- return $this->whereKey($ids)->get($columns);
- }
-
- /**
- * Find a model by its primary key or throw an exception.
- *
- * @param mixed $id
- * @param array $columns
- * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|static|static[]
- *
- * @throws \Illuminate\Database\Eloquent\ModelNotFoundException
- */
- public function findOrFail($id, $columns = ['*'])
- {
- $result = $this->find($id, $columns);
-
- $id = $id instanceof Arrayable ? $id->toArray() : $id;
-
- if (is_array($id)) {
- if (count($result) === count(array_unique($id))) {
- return $result;
- }
- } elseif (! is_null($result)) {
- return $result;
- }
-
- throw (new ModelNotFoundException)->setModel(
- get_class($this->model), $id
- );
- }
-
- /**
- * Find a model by its primary key or return fresh model instance.
- *
- * @param mixed $id
- * @param array $columns
- * @return \Illuminate\Database\Eloquent\Model|static
- */
- public function findOrNew($id, $columns = ['*'])
- {
- if (! is_null($model = $this->find($id, $columns))) {
- return $model;
- }
-
- return $this->newModelInstance();
- }
-
- /**
- * Get the first record matching the attributes or instantiate it.
- *
- * @param array $attributes
- * @param array $values
- * @return \Illuminate\Database\Eloquent\Model|static
- */
- public function firstOrNew(array $attributes = [], array $values = [])
- {
- if (! is_null($instance = $this->where($attributes)->first())) {
- return $instance;
- }
-
- return $this->newModelInstance(array_merge($attributes, $values));
- }
-
- /**
- * Get the first record matching the attributes or create it.
- *
- * @param array $attributes
- * @param array $values
- * @return \Illuminate\Database\Eloquent\Model|static
- */
- public function firstOrCreate(array $attributes = [], array $values = [])
- {
- if (! is_null($instance = $this->where($attributes)->first())) {
- return $instance;
- }
-
- return tap($this->newModelInstance(array_merge($attributes, $values)), function ($instance) {
- $instance->save();
- });
- }
-
- /**
- * Create or update a record matching the attributes, and fill it with values.
- *
- * @param array $attributes
- * @param array $values
- * @return \Illuminate\Database\Eloquent\Model|static
- */
- public function updateOrCreate(array $attributes, array $values = [])
- {
- return tap($this->firstOrNew($attributes), function ($instance) use ($values) {
- $instance->fill($values)->save();
- });
- }
-
- /**
- * Execute the query and get the first result or throw an exception.
- *
- * @param array $columns
- * @return \Illuminate\Database\Eloquent\Model|static
- *
- * @throws \Illuminate\Database\Eloquent\ModelNotFoundException
- */
- public function firstOrFail($columns = ['*'])
- {
- if (! is_null($model = $this->first($columns))) {
- return $model;
- }
-
- throw (new ModelNotFoundException)->setModel(get_class($this->model));
- }
-
- /**
- * Execute the query and get the first result or call a callback.
- *
- * @param \Closure|array $columns
- * @param \Closure|null $callback
- * @return \Illuminate\Database\Eloquent\Model|static|mixed
- */
- public function firstOr($columns = ['*'], Closure $callback = null)
- {
- if ($columns instanceof Closure) {
- $callback = $columns;
-
- $columns = ['*'];
- }
-
- if (! is_null($model = $this->first($columns))) {
- return $model;
- }
-
- return $callback();
- }
-
- /**
- * Execute the query and get the first result if it's the sole matching record.
- *
- * @param array|string $columns
- * @return \Illuminate\Database\Eloquent\Model
- *
- * @throws \Illuminate\Database\Eloquent\ModelNotFoundException
- * @throws \Illuminate\Database\MultipleRecordsFoundException
- */
- public function sole($columns = ['*'])
- {
- try {
- return $this->baseSole($columns);
- } catch (RecordsNotFoundException $exception) {
- throw (new ModelNotFoundException)->setModel(get_class($this->model));
- }
- }
-
- /**
- * Get a single column's value from the first result of a query.
- *
- * @param string|\Illuminate\Database\Query\Expression $column
- * @return mixed
- */
- public function value($column)
- {
- if ($result = $this->first([$column])) {
- return $result->{Str::afterLast($column, '.')};
- }
- }
-
- /**
- * Get a single column's value from the first result of the query or throw an exception.
- *
- * @param string|\Illuminate\Database\Query\Expression $column
- * @return mixed
- *
- * @throws \Illuminate\Database\Eloquent\ModelNotFoundException
- */
- public function valueOrFail($column)
- {
- return $this->firstOrFail([$column])->{Str::afterLast($column, '.')};
- }
-
- /**
- * Execute the query as a "select" statement.
- *
- * @param array|string $columns
- * @return \Illuminate\Database\Eloquent\Collection|static[]
- */
- public function get($columns = ['*'])
- {
- $builder = $this->applyScopes();
-
- // If we actually found models we will also eager load any relationships that
- // have been specified as needing to be eager loaded, which will solve the
- // n+1 query issue for the developers to avoid running a lot of queries.
- if (count($models = $builder->getModels($columns)) > 0) {
- $models = $builder->eagerLoadRelations($models);
- }
-
- return $builder->getModel()->newCollection($models);
- }
-
- /**
- * Get the hydrated models without eager loading.
- *
- * @param array|string $columns
- * @return \Illuminate\Database\Eloquent\Model[]|static[]
- */
- public function getModels($columns = ['*'])
- {
- return $this->model->hydrate(
- $this->query->get($columns)->all()
- )->all();
- }
-
- /**
- * Eager load the relationships for the models.
- *
- * @param array $models
- * @return array
- */
- public function eagerLoadRelations(array $models)
- {
- foreach ($this->eagerLoad as $name => $constraints) {
- // For nested eager loads we'll skip loading them here and they will be set as an
- // eager load on the query to retrieve the relation so that they will be eager
- // loaded on that query, because that is where they get hydrated as models.
- if (strpos($name, '.') === false) {
- $models = $this->eagerLoadRelation($models, $name, $constraints);
- }
- }
-
- return $models;
- }
-
- /**
- * Eagerly load the relationship on a set of models.
- *
- * @param array $models
- * @param string $name
- * @param \Closure $constraints
- * @return array
- */
- protected function eagerLoadRelation(array $models, $name, Closure $constraints)
- {
- // First we will "back up" the existing where conditions on the query so we can
- // add our eager constraints. Then we will merge the wheres that were on the
- // query back to it in order that any where conditions might be specified.
- $relation = $this->getRelation($name);
-
- $relation->addEagerConstraints($models);
-
- $constraints($relation);
-
- // Once we have the results, we just match those back up to their parent models
- // using the relationship instance. Then we just return the finished arrays
- // of models which have been eagerly hydrated and are readied for return.
- return $relation->match(
- $relation->initRelation($models, $name),
- $relation->getEager(), $name
- );
- }
-
- /**
- * Get the relation instance for the given relation name.
- *
- * @param string $name
- * @return \Illuminate\Database\Eloquent\Relations\Relation
- */
- public function getRelation($name)
- {
- // We want to run a relationship query without any constrains so that we will
- // not have to remove these where clauses manually which gets really hacky
- // and error prone. We don't want constraints because we add eager ones.
- $relation = Relation::noConstraints(function () use ($name) {
- try {
- return $this->getModel()->newInstance()->$name();
- } catch (BadMethodCallException $e) {
- throw RelationNotFoundException::make($this->getModel(), $name);
- }
- });
-
- $nested = $this->relationsNestedUnder($name);
-
- // If there are nested relationships set on the query, we will put those onto
- // the query instances so that they can be handled after this relationship
- // is loaded. In this way they will all trickle down as they are loaded.
- if (count($nested) > 0) {
- $relation->getQuery()->with($nested);
- }
-
- return $relation;
- }
-
- /**
- * Get the deeply nested relations for a given top-level relation.
- *
- * @param string $relation
- * @return array
- */
- protected function relationsNestedUnder($relation)
- {
- $nested = [];
-
- // We are basically looking for any relationships that are nested deeper than
- // the given top-level relationship. We will just check for any relations
- // that start with the given top relations and adds them to our arrays.
- foreach ($this->eagerLoad as $name => $constraints) {
- if ($this->isNestedUnder($relation, $name)) {
- $nested[substr($name, strlen($relation.'.'))] = $constraints;
- }
- }
-
- return $nested;
- }
-
- /**
- * Determine if the relationship is nested.
- *
- * @param string $relation
- * @param string $name
- * @return bool
- */
- protected function isNestedUnder($relation, $name)
- {
- return Str::contains($name, '.') && Str::startsWith($name, $relation.'.');
- }
-
- /**
- * Get a lazy collection for the given query.
- *
- * @return \Illuminate\Support\LazyCollection
- */
- public function cursor()
- {
- return $this->applyScopes()->query->cursor()->map(function ($record) {
- return $this->newModelInstance()->newFromBuilder($record);
- });
- }
-
- /**
- * Add a generic "order by" clause if the query doesn't already have one.
- *
- * @return void
- */
- protected function enforceOrderBy()
- {
- if (empty($this->query->orders) && empty($this->query->unionOrders)) {
- $this->orderBy($this->model->getQualifiedKeyName(), 'asc');
- }
- }
-
- /**
- * Get an array with the values of a given column.
- *
- * @param string|\Illuminate\Database\Query\Expression $column
- * @param string|null $key
- * @return \Illuminate\Support\Collection
- */
- public function pluck($column, $key = null)
- {
- $results = $this->toBase()->pluck($column, $key);
-
- // If the model has a mutator for the requested column, we will spin through
- // the results and mutate the values so that the mutated version of these
- // columns are returned as you would expect from these Eloquent models.
- if (! $this->model->hasGetMutator($column) &&
- ! $this->model->hasCast($column) &&
- ! in_array($column, $this->model->getDates())) {
- return $results;
- }
-
- return $results->map(function ($value) use ($column) {
- return $this->model->newFromBuilder([$column => $value])->{$column};
- });
- }
-
- /**
- * Paginate the given query.
- *
- * @param int|null $perPage
- * @param array $columns
- * @param string $pageName
- * @param int|null $page
- * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator
- *
- * @throws \InvalidArgumentException
- */
- public function paginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null)
- {
- $page = $page ?: Paginator::resolveCurrentPage($pageName);
-
- $perPage = $perPage ?: $this->model->getPerPage();
-
- $results = ($total = $this->toBase()->getCountForPagination())
- ? $this->forPage($page, $perPage)->get($columns)
- : $this->model->newCollection();
-
- return $this->paginator($results, $total, $perPage, $page, [
- 'path' => Paginator::resolveCurrentPath(),
- 'pageName' => $pageName,
- ]);
- }
-
- /**
- * Paginate the given query into a simple paginator.
- *
- * @param int|null $perPage
- * @param array $columns
- * @param string $pageName
- * @param int|null $page
- * @return \Illuminate\Contracts\Pagination\Paginator
- */
- public function simplePaginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null)
- {
- $page = $page ?: Paginator::resolveCurrentPage($pageName);
-
- $perPage = $perPage ?: $this->model->getPerPage();
-
- // Next we will set the limit and offset for this query so that when we get the
- // results we get the proper section of results. Then, we'll create the full
- // paginator instances for these results with the given page and per page.
- $this->skip(($page - 1) * $perPage)->take($perPage + 1);
-
- return $this->simplePaginator($this->get($columns), $perPage, $page, [
- 'path' => Paginator::resolveCurrentPath(),
- 'pageName' => $pageName,
- ]);
- }
-
- /**
- * Paginate the given query into a cursor paginator.
- *
- * @param int|null $perPage
- * @param array $columns
- * @param string $cursorName
- * @param \Illuminate\Pagination\Cursor|string|null $cursor
- * @return \Illuminate\Contracts\Pagination\CursorPaginator
- */
- public function cursorPaginate($perPage = null, $columns = ['*'], $cursorName = 'cursor', $cursor = null)
- {
- $perPage = $perPage ?: $this->model->getPerPage();
-
- return $this->paginateUsingCursor($perPage, $columns, $cursorName, $cursor);
- }
-
- /**
- * Ensure the proper order by required for cursor pagination.
- *
- * @param bool $shouldReverse
- * @return \Illuminate\Support\Collection
- */
- protected function ensureOrderForCursorPagination($shouldReverse = false)
- {
- $orders = collect($this->query->orders);
-
- if ($orders->count() === 0) {
- $this->enforceOrderBy();
- }
-
- if ($shouldReverse) {
- $this->query->orders = collect($this->query->orders)->map(function ($order) {
- $order['direction'] = $order['direction'] === 'asc' ? 'desc' : 'asc';
-
- return $order;
- })->toArray();
- }
-
- return collect($this->query->orders);
- }
-
- /**
- * Save a new model and return the instance.
- *
- * @param array $attributes
- * @return \Illuminate\Database\Eloquent\Model|$this
- */
- public function create(array $attributes = [])
- {
- return tap($this->newModelInstance($attributes), function ($instance) {
- $instance->save();
- });
- }
-
- /**
- * Save a new model and return the instance. Allow mass-assignment.
- *
- * @param array $attributes
- * @return \Illuminate\Database\Eloquent\Model|$this
- */
- public function forceCreate(array $attributes)
- {
- return $this->model->unguarded(function () use ($attributes) {
- return $this->newModelInstance()->create($attributes);
- });
- }
-
- /**
- * Update records in the database.
- *
- * @param array $values
- * @return int
- */
- public function update(array $values)
- {
- return $this->toBase()->update($this->addUpdatedAtColumn($values));
- }
-
- /**
- * Insert new records or update the existing ones.
- *
- * @param array $values
- * @param array|string $uniqueBy
- * @param array|null $update
- * @return int
- */
- public function upsert(array $values, $uniqueBy, $update = null)
- {
- if (empty($values)) {
- return 0;
- }
-
- if (! is_array(reset($values))) {
- $values = [$values];
- }
-
- if (is_null($update)) {
- $update = array_keys(reset($values));
- }
-
- return $this->toBase()->upsert(
- $this->addTimestampsToUpsertValues($values),
- $uniqueBy,
- $this->addUpdatedAtToUpsertColumns($update)
- );
- }
-
- /**
- * Increment a column's value by a given amount.
- *
- * @param string|\Illuminate\Database\Query\Expression $column
- * @param float|int $amount
- * @param array $extra
- * @return int
- */
- public function increment($column, $amount = 1, array $extra = [])
- {
- return $this->toBase()->increment(
- $column, $amount, $this->addUpdatedAtColumn($extra)
- );
- }
-
- /**
- * Decrement a column's value by a given amount.
- *
- * @param string|\Illuminate\Database\Query\Expression $column
- * @param float|int $amount
- * @param array $extra
- * @return int
- */
- public function decrement($column, $amount = 1, array $extra = [])
- {
- return $this->toBase()->decrement(
- $column, $amount, $this->addUpdatedAtColumn($extra)
- );
- }
-
- /**
- * Add the "updated at" column to an array of values.
- *
- * @param array $values
- * @return array
- */
- protected function addUpdatedAtColumn(array $values)
- {
- if (! $this->model->usesTimestamps() ||
- is_null($this->model->getUpdatedAtColumn())) {
- return $values;
- }
-
- $column = $this->model->getUpdatedAtColumn();
-
- $values = array_merge(
- [$column => $this->model->freshTimestampString()],
- $values
- );
-
- $segments = preg_split('/\s+as\s+/i', $this->query->from);
-
- $qualifiedColumn = end($segments).'.'.$column;
-
- $values[$qualifiedColumn] = $values[$column];
-
- unset($values[$column]);
-
- return $values;
- }
-
- /**
- * Add timestamps to the inserted values.
- *
- * @param array $values
- * @return array
- */
- protected function addTimestampsToUpsertValues(array $values)
- {
- if (! $this->model->usesTimestamps()) {
- return $values;
- }
-
- $timestamp = $this->model->freshTimestampString();
-
- $columns = array_filter([
- $this->model->getCreatedAtColumn(),
- $this->model->getUpdatedAtColumn(),
- ]);
-
- foreach ($columns as $column) {
- foreach ($values as &$row) {
- $row = array_merge([$column => $timestamp], $row);
- }
- }
-
- return $values;
- }
-
- /**
- * Add the "updated at" column to the updated columns.
- *
- * @param array $update
- * @return array
- */
- protected function addUpdatedAtToUpsertColumns(array $update)
- {
- if (! $this->model->usesTimestamps()) {
- return $update;
- }
-
- $column = $this->model->getUpdatedAtColumn();
-
- if (! is_null($column) &&
- ! array_key_exists($column, $update) &&
- ! in_array($column, $update)) {
- $update[] = $column;
- }
-
- return $update;
- }
-
- /**
- * Delete records from the database.
- *
- * @return mixed
- */
- public function delete()
- {
- if (isset($this->onDelete)) {
- return call_user_func($this->onDelete, $this);
- }
-
- return $this->toBase()->delete();
- }
-
- /**
- * Run the default delete function on the builder.
- *
- * Since we do not apply scopes here, the row will actually be deleted.
- *
- * @return mixed
- */
- public function forceDelete()
- {
- return $this->query->delete();
- }
-
- /**
- * Register a replacement for the default delete function.
- *
- * @param \Closure $callback
- * @return void
- */
- public function onDelete(Closure $callback)
- {
- $this->onDelete = $callback;
- }
-
- /**
- * Determine if the given model has a scope.
- *
- * @param string $scope
- * @return bool
- */
- public function hasNamedScope($scope)
- {
- return $this->model && $this->model->hasNamedScope($scope);
- }
-
- /**
- * Call the given local model scopes.
- *
- * @param array|string $scopes
- * @return static|mixed
- */
- public function scopes($scopes)
- {
- $builder = $this;
-
- foreach (Arr::wrap($scopes) as $scope => $parameters) {
- // If the scope key is an integer, then the scope was passed as the value and
- // the parameter list is empty, so we will format the scope name and these
- // parameters here. Then, we'll be ready to call the scope on the model.
- if (is_int($scope)) {
- [$scope, $parameters] = [$parameters, []];
- }
-
- // Next we'll pass the scope callback to the callScope method which will take
- // care of grouping the "wheres" properly so the logical order doesn't get
- // messed up when adding scopes. Then we'll return back out the builder.
- $builder = $builder->callNamedScope(
- $scope, Arr::wrap($parameters)
- );
- }
-
- return $builder;
- }
-
- /**
- * Apply the scopes to the Eloquent builder instance and return it.
- *
- * @return static
- */
- public function applyScopes()
- {
- if (! $this->scopes) {
- return $this;
- }
-
- $builder = clone $this;
-
- foreach ($this->scopes as $identifier => $scope) {
- if (! isset($builder->scopes[$identifier])) {
- continue;
- }
-
- $builder->callScope(function (self $builder) use ($scope) {
- // If the scope is a Closure we will just go ahead and call the scope with the
- // builder instance. The "callScope" method will properly group the clauses
- // that are added to this query so "where" clauses maintain proper logic.
- if ($scope instanceof Closure) {
- $scope($builder);
- }
-
- // If the scope is a scope object, we will call the apply method on this scope
- // passing in the builder and the model instance. After we run all of these
- // scopes we will return back the builder instance to the outside caller.
- if ($scope instanceof Scope) {
- $scope->apply($builder, $this->getModel());
- }
- });
- }
-
- return $builder;
- }
-
- /**
- * Apply the given scope on the current builder instance.
- *
- * @param callable $scope
- * @param array $parameters
- * @return mixed
- */
- protected function callScope(callable $scope, array $parameters = [])
- {
- array_unshift($parameters, $this);
-
- $query = $this->getQuery();
-
- // We will keep track of how many wheres are on the query before running the
- // scope so that we can properly group the added scope constraints in the
- // query as their own isolated nested where statement and avoid issues.
- $originalWhereCount = is_null($query->wheres)
- ? 0 : count($query->wheres);
-
- $result = $scope(...array_values($parameters)) ?? $this;
-
- if (count((array) $query->wheres) > $originalWhereCount) {
- $this->addNewWheresWithinGroup($query, $originalWhereCount);
- }
-
- return $result;
- }
-
- /**
- * Apply the given named scope on the current builder instance.
- *
- * @param string $scope
- * @param array $parameters
- * @return mixed
- */
- protected function callNamedScope($scope, array $parameters = [])
- {
- return $this->callScope(function (...$parameters) use ($scope) {
- return $this->model->callNamedScope($scope, $parameters);
- }, $parameters);
- }
-
- /**
- * Nest where conditions by slicing them at the given where count.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param int $originalWhereCount
- * @return void
- */
- protected function addNewWheresWithinGroup(QueryBuilder $query, $originalWhereCount)
- {
- // Here, we totally remove all of the where clauses since we are going to
- // rebuild them as nested queries by slicing the groups of wheres into
- // their own sections. This is to prevent any confusing logic order.
- $allWheres = $query->wheres;
-
- $query->wheres = [];
-
- $this->groupWhereSliceForScope(
- $query, array_slice($allWheres, 0, $originalWhereCount)
- );
-
- $this->groupWhereSliceForScope(
- $query, array_slice($allWheres, $originalWhereCount)
- );
- }
-
- /**
- * Slice where conditions at the given offset and add them to the query as a nested condition.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $whereSlice
- * @return void
- */
- protected function groupWhereSliceForScope(QueryBuilder $query, $whereSlice)
- {
- $whereBooleans = collect($whereSlice)->pluck('boolean');
-
- // Here we'll check if the given subset of where clauses contains any "or"
- // booleans and in this case create a nested where expression. That way
- // we don't add any unnecessary nesting thus keeping the query clean.
- if ($whereBooleans->contains('or')) {
- $query->wheres[] = $this->createNestedWhere(
- $whereSlice, $whereBooleans->first()
- );
- } else {
- $query->wheres = array_merge($query->wheres, $whereSlice);
- }
- }
-
- /**
- * Create a where array with nested where conditions.
- *
- * @param array $whereSlice
- * @param string $boolean
- * @return array
- */
- protected function createNestedWhere($whereSlice, $boolean = 'and')
- {
- $whereGroup = $this->getQuery()->forNestedWhere();
-
- $whereGroup->wheres = $whereSlice;
-
- return ['type' => 'Nested', 'query' => $whereGroup, 'boolean' => $boolean];
- }
-
- /**
- * Set the relationships that should be eager loaded.
- *
- * @param string|array $relations
- * @param string|\Closure|null $callback
- * @return $this
- */
- public function with($relations, $callback = null)
- {
- if ($callback instanceof Closure) {
- $eagerLoad = $this->parseWithRelations([$relations => $callback]);
- } else {
- $eagerLoad = $this->parseWithRelations(is_string($relations) ? func_get_args() : $relations);
- }
-
- $this->eagerLoad = array_merge($this->eagerLoad, $eagerLoad);
-
- return $this;
- }
-
- /**
- * Prevent the specified relations from being eager loaded.
- *
- * @param mixed $relations
- * @return $this
- */
- public function without($relations)
- {
- $this->eagerLoad = array_diff_key($this->eagerLoad, array_flip(
- is_string($relations) ? func_get_args() : $relations
- ));
-
- return $this;
- }
-
- /**
- * Set the relationships that should be eager loaded while removing any previously added eager loading specifications.
- *
- * @param mixed $relations
- * @return $this
- */
- public function withOnly($relations)
- {
- $this->eagerLoad = [];
-
- return $this->with($relations);
- }
-
- /**
- * Create a new instance of the model being queried.
- *
- * @param array $attributes
- * @return \Illuminate\Database\Eloquent\Model|static
- */
- public function newModelInstance($attributes = [])
- {
- return $this->model->newInstance($attributes)->setConnection(
- $this->query->getConnection()->getName()
- );
- }
-
- /**
- * Parse a list of relations into individuals.
- *
- * @param array $relations
- * @return array
- */
- protected function parseWithRelations(array $relations)
- {
- $results = [];
-
- foreach ($relations as $name => $constraints) {
- // If the "name" value is a numeric key, we can assume that no constraints
- // have been specified. We will just put an empty Closure there so that
- // we can treat these all the same while we are looping through them.
- if (is_numeric($name)) {
- $name = $constraints;
-
- [$name, $constraints] = Str::contains($name, ':')
- ? $this->createSelectWithConstraint($name)
- : [$name, static function () {
- //
- }];
- }
-
- // We need to separate out any nested includes, which allows the developers
- // to load deep relationships using "dots" without stating each level of
- // the relationship with its own key in the array of eager-load names.
- $results = $this->addNestedWiths($name, $results);
-
- $results[$name] = $constraints;
- }
-
- return $results;
- }
-
- /**
- * Create a constraint to select the given columns for the relation.
- *
- * @param string $name
- * @return array
- */
- protected function createSelectWithConstraint($name)
- {
- return [explode(':', $name)[0], static function ($query) use ($name) {
- $query->select(array_map(static function ($column) use ($query) {
- if (Str::contains($column, '.')) {
- return $column;
- }
-
- return $query instanceof BelongsToMany
- ? $query->getRelated()->getTable().'.'.$column
- : $column;
- }, explode(',', explode(':', $name)[1])));
- }];
- }
-
- /**
- * Parse the nested relationships in a relation.
- *
- * @param string $name
- * @param array $results
- * @return array
- */
- protected function addNestedWiths($name, $results)
- {
- $progress = [];
-
- // If the relation has already been set on the result array, we will not set it
- // again, since that would override any constraints that were already placed
- // on the relationships. We will only set the ones that are not specified.
- foreach (explode('.', $name) as $segment) {
- $progress[] = $segment;
-
- if (! isset($results[$last = implode('.', $progress)])) {
- $results[$last] = static function () {
- //
- };
- }
- }
-
- return $results;
- }
-
- /**
- * Apply query-time casts to the model instance.
- *
- * @param array $casts
- * @return $this
- */
- public function withCasts($casts)
- {
- $this->model->mergeCasts($casts);
-
- return $this;
- }
-
- /**
- * Get the underlying query builder instance.
- *
- * @return \Illuminate\Database\Query\Builder
- */
- public function getQuery()
- {
- return $this->query;
- }
-
- /**
- * Set the underlying query builder instance.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @return $this
- */
- public function setQuery($query)
- {
- $this->query = $query;
-
- return $this;
- }
-
- /**
- * Get a base query builder instance.
- *
- * @return \Illuminate\Database\Query\Builder
- */
- public function toBase()
- {
- return $this->applyScopes()->getQuery();
- }
-
- /**
- * Get the relationships being eagerly loaded.
- *
- * @return array
- */
- public function getEagerLoads()
- {
- return $this->eagerLoad;
- }
-
- /**
- * Set the relationships being eagerly loaded.
- *
- * @param array $eagerLoad
- * @return $this
- */
- public function setEagerLoads(array $eagerLoad)
- {
- $this->eagerLoad = $eagerLoad;
-
- return $this;
- }
-
- /**
- * Get the default key name of the table.
- *
- * @return string
- */
- protected function defaultKeyName()
- {
- return $this->getModel()->getKeyName();
- }
-
- /**
- * Get the model instance being queried.
- *
- * @return \Illuminate\Database\Eloquent\Model|static
- */
- public function getModel()
- {
- return $this->model;
- }
-
- /**
- * Set a model instance for the model being queried.
- *
- * @param \Illuminate\Database\Eloquent\Model $model
- * @return $this
- */
- public function setModel(Model $model)
- {
- $this->model = $model;
-
- $this->query->from($model->getTable());
-
- return $this;
- }
-
- /**
- * Qualify the given column name by the model's table.
- *
- * @param string|\Illuminate\Database\Query\Expression $column
- * @return string
- */
- public function qualifyColumn($column)
- {
- return $this->model->qualifyColumn($column);
- }
-
- /**
- * Qualify the given columns with the model's table.
- *
- * @param array|\Illuminate\Database\Query\Expression $columns
- * @return array
- */
- public function qualifyColumns($columns)
- {
- return $this->model->qualifyColumns($columns);
- }
-
- /**
- * Get the given macro by name.
- *
- * @param string $name
- * @return \Closure
- */
- public function getMacro($name)
- {
- return Arr::get($this->localMacros, $name);
- }
-
- /**
- * Checks if a macro is registered.
- *
- * @param string $name
- * @return bool
- */
- public function hasMacro($name)
- {
- return isset($this->localMacros[$name]);
- }
-
- /**
- * Get the given global macro by name.
- *
- * @param string $name
- * @return \Closure
- */
- public static function getGlobalMacro($name)
- {
- return Arr::get(static::$macros, $name);
- }
-
- /**
- * Checks if a global macro is registered.
- *
- * @param string $name
- * @return bool
- */
- public static function hasGlobalMacro($name)
- {
- return isset(static::$macros[$name]);
- }
-
- /**
- * Dynamically access builder proxies.
- *
- * @param string $key
- * @return mixed
- *
- * @throws \Exception
- */
- public function __get($key)
- {
- if ($key === 'orWhere') {
- return new HigherOrderBuilderProxy($this, $key);
- }
-
- throw new Exception("Property [{$key}] does not exist on the Eloquent builder instance.");
- }
-
- /**
- * Dynamically handle calls into the query instance.
- *
- * @param string $method
- * @param array $parameters
- * @return mixed
- */
- public function __call($method, $parameters)
- {
- if ($method === 'macro') {
- $this->localMacros[$parameters[0]] = $parameters[1];
-
- return;
- }
-
- if ($this->hasMacro($method)) {
- array_unshift($parameters, $this);
-
- return $this->localMacros[$method](...$parameters);
- }
-
- if (static::hasGlobalMacro($method)) {
- $callable = static::$macros[$method];
-
- if ($callable instanceof Closure) {
- $callable = $callable->bindTo($this, static::class);
- }
-
- return $callable(...$parameters);
- }
-
- if ($this->hasNamedScope($method)) {
- return $this->callNamedScope($method, $parameters);
- }
-
- if (in_array($method, $this->passthru)) {
- return $this->toBase()->{$method}(...$parameters);
- }
-
- $this->forwardCallTo($this->query, $method, $parameters);
-
- return $this;
- }
-
- /**
- * Dynamically handle calls into the query instance.
- *
- * @param string $method
- * @param array $parameters
- * @return mixed
- *
- * @throws \BadMethodCallException
- */
- public static function __callStatic($method, $parameters)
- {
- if ($method === 'macro') {
- static::$macros[$parameters[0]] = $parameters[1];
-
- return;
- }
-
- if ($method === 'mixin') {
- return static::registerMixin($parameters[0], $parameters[1] ?? true);
- }
-
- if (! static::hasGlobalMacro($method)) {
- static::throwBadMethodCallException($method);
- }
-
- $callable = static::$macros[$method];
-
- if ($callable instanceof Closure) {
- $callable = $callable->bindTo(null, static::class);
- }
-
- return $callable(...$parameters);
- }
-
- /**
- * Register the given mixin with the builder.
- *
- * @param string $mixin
- * @param bool $replace
- * @return void
- */
- protected static function registerMixin($mixin, $replace)
- {
- $methods = (new ReflectionClass($mixin))->getMethods(
- ReflectionMethod::IS_PUBLIC | ReflectionMethod::IS_PROTECTED
- );
-
- foreach ($methods as $method) {
- if ($replace || ! static::hasGlobalMacro($method->name)) {
- $method->setAccessible(true);
-
- static::macro($method->name, $method->invoke($mixin));
- }
- }
- }
-
- /**
- * Clone the Eloquent query builder.
- *
- * @return static
- */
- public function clone()
- {
- return clone $this;
- }
-
- /**
- * Force a clone of the underlying query builder when cloning.
- *
- * @return void
- */
- public function __clone()
- {
- $this->query = clone $this->query;
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Casts/ArrayObject.php b/vendor/illuminate/database/Eloquent/Casts/ArrayObject.php
deleted file mode 100644
index 6f1713c9..00000000
--- a/vendor/illuminate/database/Eloquent/Casts/ArrayObject.php
+++ /dev/null
@@ -1,41 +0,0 @@
-getArrayCopy());
- }
-
- /**
- * Get the instance as an array.
- *
- * @return array
- */
- public function toArray()
- {
- return $this->getArrayCopy();
- }
-
- /**
- * Get the array that should be JSON serialized.
- *
- * @return array
- */
- #[\ReturnTypeWillChange]
- public function jsonSerialize()
- {
- return $this->getArrayCopy();
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Casts/AsArrayObject.php b/vendor/illuminate/database/Eloquent/Casts/AsArrayObject.php
deleted file mode 100644
index db9a21b4..00000000
--- a/vendor/illuminate/database/Eloquent/Casts/AsArrayObject.php
+++ /dev/null
@@ -1,36 +0,0 @@
- json_encode($value)];
- }
-
- public function serialize($model, string $key, $value, array $attributes)
- {
- return $value->getArrayCopy();
- }
- };
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Casts/AsCollection.php b/vendor/illuminate/database/Eloquent/Casts/AsCollection.php
deleted file mode 100644
index 585b6cfc..00000000
--- a/vendor/illuminate/database/Eloquent/Casts/AsCollection.php
+++ /dev/null
@@ -1,32 +0,0 @@
- json_encode($value)];
- }
- };
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Casts/AsEncryptedArrayObject.php b/vendor/illuminate/database/Eloquent/Casts/AsEncryptedArrayObject.php
deleted file mode 100644
index 5918bc1b..00000000
--- a/vendor/illuminate/database/Eloquent/Casts/AsEncryptedArrayObject.php
+++ /dev/null
@@ -1,37 +0,0 @@
- Crypt::encryptString(json_encode($value))];
- }
-
- public function serialize($model, string $key, $value, array $attributes)
- {
- return $value->getArrayCopy();
- }
- };
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Casts/AsEncryptedCollection.php b/vendor/illuminate/database/Eloquent/Casts/AsEncryptedCollection.php
deleted file mode 100644
index ad11b178..00000000
--- a/vendor/illuminate/database/Eloquent/Casts/AsEncryptedCollection.php
+++ /dev/null
@@ -1,33 +0,0 @@
- Crypt::encryptString(json_encode($value))];
- }
- };
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Casts/AsStringable.php b/vendor/illuminate/database/Eloquent/Casts/AsStringable.php
deleted file mode 100644
index 912659f3..00000000
--- a/vendor/illuminate/database/Eloquent/Casts/AsStringable.php
+++ /dev/null
@@ -1,32 +0,0 @@
-getKey();
- }
-
- if ($key instanceof Arrayable) {
- $key = $key->toArray();
- }
-
- if (is_array($key)) {
- if ($this->isEmpty()) {
- return new static;
- }
-
- return $this->whereIn($this->first()->getKeyName(), $key);
- }
-
- return Arr::first($this->items, function ($model) use ($key) {
- return $model->getKey() == $key;
- }, $default);
- }
-
- /**
- * Load a set of relationships onto the collection.
- *
- * @param array|string $relations
- * @return $this
- */
- public function load($relations)
- {
- if ($this->isNotEmpty()) {
- if (is_string($relations)) {
- $relations = func_get_args();
- }
-
- $query = $this->first()->newQueryWithoutRelationships()->with($relations);
-
- $this->items = $query->eagerLoadRelations($this->items);
- }
-
- return $this;
- }
-
- /**
- * Load a set of aggregations over relationship's column onto the collection.
- *
- * @param array|string $relations
- * @param string $column
- * @param string $function
- * @return $this
- */
- public function loadAggregate($relations, $column, $function = null)
- {
- if ($this->isEmpty()) {
- return $this;
- }
-
- $models = $this->first()->newModelQuery()
- ->whereKey($this->modelKeys())
- ->select($this->first()->getKeyName())
- ->withAggregate($relations, $column, $function)
- ->get()
- ->keyBy($this->first()->getKeyName());
-
- $attributes = Arr::except(
- array_keys($models->first()->getAttributes()),
- $models->first()->getKeyName()
- );
-
- $this->each(function ($model) use ($models, $attributes) {
- $extraAttributes = Arr::only($models->get($model->getKey())->getAttributes(), $attributes);
-
- $model->forceFill($extraAttributes)->syncOriginalAttributes($attributes);
- });
-
- return $this;
- }
-
- /**
- * Load a set of relationship counts onto the collection.
- *
- * @param array|string $relations
- * @return $this
- */
- public function loadCount($relations)
- {
- return $this->loadAggregate($relations, '*', 'count');
- }
-
- /**
- * Load a set of relationship's max column values onto the collection.
- *
- * @param array|string $relations
- * @param string $column
- * @return $this
- */
- public function loadMax($relations, $column)
- {
- return $this->loadAggregate($relations, $column, 'max');
- }
-
- /**
- * Load a set of relationship's min column values onto the collection.
- *
- * @param array|string $relations
- * @param string $column
- * @return $this
- */
- public function loadMin($relations, $column)
- {
- return $this->loadAggregate($relations, $column, 'min');
- }
-
- /**
- * Load a set of relationship's column summations onto the collection.
- *
- * @param array|string $relations
- * @param string $column
- * @return $this
- */
- public function loadSum($relations, $column)
- {
- return $this->loadAggregate($relations, $column, 'sum');
- }
-
- /**
- * Load a set of relationship's average column values onto the collection.
- *
- * @param array|string $relations
- * @param string $column
- * @return $this
- */
- public function loadAvg($relations, $column)
- {
- return $this->loadAggregate($relations, $column, 'avg');
- }
-
- /**
- * Load a set of related existences onto the collection.
- *
- * @param array|string $relations
- * @return $this
- */
- public function loadExists($relations)
- {
- return $this->loadAggregate($relations, '*', 'exists');
- }
-
- /**
- * Load a set of relationships onto the collection if they are not already eager loaded.
- *
- * @param array|string $relations
- * @return $this
- */
- public function loadMissing($relations)
- {
- if (is_string($relations)) {
- $relations = func_get_args();
- }
-
- foreach ($relations as $key => $value) {
- if (is_numeric($key)) {
- $key = $value;
- }
-
- $segments = explode('.', explode(':', $key)[0]);
-
- if (Str::contains($key, ':')) {
- $segments[count($segments) - 1] .= ':'.explode(':', $key)[1];
- }
-
- $path = [];
-
- foreach ($segments as $segment) {
- $path[] = [$segment => $segment];
- }
-
- if (is_callable($value)) {
- $path[count($segments) - 1][end($segments)] = $value;
- }
-
- $this->loadMissingRelation($this, $path);
- }
-
- return $this;
- }
-
- /**
- * Load a relationship path if it is not already eager loaded.
- *
- * @param \Illuminate\Database\Eloquent\Collection $models
- * @param array $path
- * @return void
- */
- protected function loadMissingRelation(self $models, array $path)
- {
- $relation = array_shift($path);
-
- $name = explode(':', key($relation))[0];
-
- if (is_string(reset($relation))) {
- $relation = reset($relation);
- }
-
- $models->filter(function ($model) use ($name) {
- return ! is_null($model) && ! $model->relationLoaded($name);
- })->load($relation);
-
- if (empty($path)) {
- return;
- }
-
- $models = $models->pluck($name)->whereNotNull();
-
- if ($models->first() instanceof BaseCollection) {
- $models = $models->collapse();
- }
-
- $this->loadMissingRelation(new static($models), $path);
- }
-
- /**
- * Load a set of relationships onto the mixed relationship collection.
- *
- * @param string $relation
- * @param array $relations
- * @return $this
- */
- public function loadMorph($relation, $relations)
- {
- $this->pluck($relation)
- ->filter()
- ->groupBy(function ($model) {
- return get_class($model);
- })
- ->each(function ($models, $className) use ($relations) {
- static::make($models)->load($relations[$className] ?? []);
- });
-
- return $this;
- }
-
- /**
- * Load a set of relationship counts onto the mixed relationship collection.
- *
- * @param string $relation
- * @param array $relations
- * @return $this
- */
- public function loadMorphCount($relation, $relations)
- {
- $this->pluck($relation)
- ->filter()
- ->groupBy(function ($model) {
- return get_class($model);
- })
- ->each(function ($models, $className) use ($relations) {
- static::make($models)->loadCount($relations[$className] ?? []);
- });
-
- return $this;
- }
-
- /**
- * Determine if a key exists in the collection.
- *
- * @param mixed $key
- * @param mixed $operator
- * @param mixed $value
- * @return bool
- */
- public function contains($key, $operator = null, $value = null)
- {
- if (func_num_args() > 1 || $this->useAsCallable($key)) {
- return parent::contains(...func_get_args());
- }
-
- if ($key instanceof Model) {
- return parent::contains(function ($model) use ($key) {
- return $model->is($key);
- });
- }
-
- return parent::contains(function ($model) use ($key) {
- return $model->getKey() == $key;
- });
- }
-
- /**
- * Get the array of primary keys.
- *
- * @return array
- */
- public function modelKeys()
- {
- return array_map(function ($model) {
- return $model->getKey();
- }, $this->items);
- }
-
- /**
- * Merge the collection with the given items.
- *
- * @param \ArrayAccess|array $items
- * @return static
- */
- public function merge($items)
- {
- $dictionary = $this->getDictionary();
-
- foreach ($items as $item) {
- $dictionary[$item->getKey()] = $item;
- }
-
- return new static(array_values($dictionary));
- }
-
- /**
- * Run a map over each of the items.
- *
- * @param callable $callback
- * @return \Illuminate\Support\Collection|static
- */
- public function map(callable $callback)
- {
- $result = parent::map($callback);
-
- return $result->contains(function ($item) {
- return ! $item instanceof Model;
- }) ? $result->toBase() : $result;
- }
-
- /**
- * Run an associative map over each of the items.
- *
- * The callback should return an associative array with a single key / value pair.
- *
- * @param callable $callback
- * @return \Illuminate\Support\Collection|static
- */
- public function mapWithKeys(callable $callback)
- {
- $result = parent::mapWithKeys($callback);
-
- return $result->contains(function ($item) {
- return ! $item instanceof Model;
- }) ? $result->toBase() : $result;
- }
-
- /**
- * Reload a fresh model instance from the database for all the entities.
- *
- * @param array|string $with
- * @return static
- */
- public function fresh($with = [])
- {
- if ($this->isEmpty()) {
- return new static;
- }
-
- $model = $this->first();
-
- $freshModels = $model->newQueryWithoutScopes()
- ->with(is_string($with) ? func_get_args() : $with)
- ->whereIn($model->getKeyName(), $this->modelKeys())
- ->get()
- ->getDictionary();
-
- return $this->filter(function ($model) use ($freshModels) {
- return $model->exists && isset($freshModels[$model->getKey()]);
- })
- ->map(function ($model) use ($freshModels) {
- return $freshModels[$model->getKey()];
- });
- }
-
- /**
- * Diff the collection with the given items.
- *
- * @param \ArrayAccess|array $items
- * @return static
- */
- public function diff($items)
- {
- $diff = new static;
-
- $dictionary = $this->getDictionary($items);
-
- foreach ($this->items as $item) {
- if (! isset($dictionary[$item->getKey()])) {
- $diff->add($item);
- }
- }
-
- return $diff;
- }
-
- /**
- * Intersect the collection with the given items.
- *
- * @param \ArrayAccess|array $items
- * @return static
- */
- public function intersect($items)
- {
- $intersect = new static;
-
- if (empty($items)) {
- return $intersect;
- }
-
- $dictionary = $this->getDictionary($items);
-
- foreach ($this->items as $item) {
- if (isset($dictionary[$item->getKey()])) {
- $intersect->add($item);
- }
- }
-
- return $intersect;
- }
-
- /**
- * Return only unique items from the collection.
- *
- * @param string|callable|null $key
- * @param bool $strict
- * @return static
- */
- public function unique($key = null, $strict = false)
- {
- if (! is_null($key)) {
- return parent::unique($key, $strict);
- }
-
- return new static(array_values($this->getDictionary()));
- }
-
- /**
- * Returns only the models from the collection with the specified keys.
- *
- * @param mixed $keys
- * @return static
- */
- public function only($keys)
- {
- if (is_null($keys)) {
- return new static($this->items);
- }
-
- $dictionary = Arr::only($this->getDictionary(), $keys);
-
- return new static(array_values($dictionary));
- }
-
- /**
- * Returns all models in the collection except the models with specified keys.
- *
- * @param mixed $keys
- * @return static
- */
- public function except($keys)
- {
- $dictionary = Arr::except($this->getDictionary(), $keys);
-
- return new static(array_values($dictionary));
- }
-
- /**
- * Make the given, typically visible, attributes hidden across the entire collection.
- *
- * @param array|string $attributes
- * @return $this
- */
- public function makeHidden($attributes)
- {
- return $this->each->makeHidden($attributes);
- }
-
- /**
- * Make the given, typically hidden, attributes visible across the entire collection.
- *
- * @param array|string $attributes
- * @return $this
- */
- public function makeVisible($attributes)
- {
- return $this->each->makeVisible($attributes);
- }
-
- /**
- * Append an attribute across the entire collection.
- *
- * @param array|string $attributes
- * @return $this
- */
- public function append($attributes)
- {
- return $this->each->append($attributes);
- }
-
- /**
- * Get a dictionary keyed by primary keys.
- *
- * @param \ArrayAccess|array|null $items
- * @return array
- */
- public function getDictionary($items = null)
- {
- $items = is_null($items) ? $this->items : $items;
-
- $dictionary = [];
-
- foreach ($items as $value) {
- $dictionary[$value->getKey()] = $value;
- }
-
- return $dictionary;
- }
-
- /**
- * The following methods are intercepted to always return base collections.
- */
-
- /**
- * Get an array with the values of a given key.
- *
- * @param string|array $value
- * @param string|null $key
- * @return \Illuminate\Support\Collection
- */
- public function pluck($value, $key = null)
- {
- return $this->toBase()->pluck($value, $key);
- }
-
- /**
- * Get the keys of the collection items.
- *
- * @return \Illuminate\Support\Collection
- */
- public function keys()
- {
- return $this->toBase()->keys();
- }
-
- /**
- * Zip the collection together with one or more arrays.
- *
- * @param mixed ...$items
- * @return \Illuminate\Support\Collection
- */
- public function zip($items)
- {
- return $this->toBase()->zip(...func_get_args());
- }
-
- /**
- * Collapse the collection of items into a single array.
- *
- * @return \Illuminate\Support\Collection
- */
- public function collapse()
- {
- return $this->toBase()->collapse();
- }
-
- /**
- * Get a flattened array of the items in the collection.
- *
- * @param int $depth
- * @return \Illuminate\Support\Collection
- */
- public function flatten($depth = INF)
- {
- return $this->toBase()->flatten($depth);
- }
-
- /**
- * Flip the items in the collection.
- *
- * @return \Illuminate\Support\Collection
- */
- public function flip()
- {
- return $this->toBase()->flip();
- }
-
- /**
- * Pad collection to the specified length with a value.
- *
- * @param int $size
- * @param mixed $value
- * @return \Illuminate\Support\Collection
- */
- public function pad($size, $value)
- {
- return $this->toBase()->pad($size, $value);
- }
-
- /**
- * Get the comparison function to detect duplicates.
- *
- * @param bool $strict
- * @return \Closure
- */
- protected function duplicateComparator($strict)
- {
- return function ($a, $b) {
- return $a->is($b);
- };
- }
-
- /**
- * Get the type of the entities being queued.
- *
- * @return string|null
- *
- * @throws \LogicException
- */
- public function getQueueableClass()
- {
- if ($this->isEmpty()) {
- return;
- }
-
- $class = get_class($this->first());
-
- $this->each(function ($model) use ($class) {
- if (get_class($model) !== $class) {
- throw new LogicException('Queueing collections with multiple model types is not supported.');
- }
- });
-
- return $class;
- }
-
- /**
- * Get the identifiers for all of the entities.
- *
- * @return array
- */
- public function getQueueableIds()
- {
- if ($this->isEmpty()) {
- return [];
- }
-
- return $this->first() instanceof QueueableEntity
- ? $this->map->getQueueableId()->all()
- : $this->modelKeys();
- }
-
- /**
- * Get the relationships of the entities being queued.
- *
- * @return array
- */
- public function getQueueableRelations()
- {
- if ($this->isEmpty()) {
- return [];
- }
-
- $relations = $this->map->getQueueableRelations()->all();
-
- if (count($relations) === 0 || $relations === [[]]) {
- return [];
- } elseif (count($relations) === 1) {
- return reset($relations);
- } else {
- return array_intersect(...array_values($relations));
- }
- }
-
- /**
- * Get the connection of the entities being queued.
- *
- * @return string|null
- *
- * @throws \LogicException
- */
- public function getQueueableConnection()
- {
- if ($this->isEmpty()) {
- return;
- }
-
- $connection = $this->first()->getConnectionName();
-
- $this->each(function ($model) use ($connection) {
- if ($model->getConnectionName() !== $connection) {
- throw new LogicException('Queueing collections with multiple model connections is not supported.');
- }
- });
-
- return $connection;
- }
-
- /**
- * Get the Eloquent query builder from the collection.
- *
- * @return \Illuminate\Database\Eloquent\Builder
- *
- * @throws \LogicException
- */
- public function toQuery()
- {
- $model = $this->first();
-
- if (! $model) {
- throw new LogicException('Unable to create query for empty collection.');
- }
-
- $class = get_class($model);
-
- if ($this->filter(function ($model) use ($class) {
- return ! $model instanceof $class;
- })->isNotEmpty()) {
- throw new LogicException('Unable to create query for collection with mixed types.');
- }
-
- return $model->newModelQuery()->whereKey($this->modelKeys());
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Concerns/GuardsAttributes.php b/vendor/illuminate/database/Eloquent/Concerns/GuardsAttributes.php
deleted file mode 100644
index 60b510ce..00000000
--- a/vendor/illuminate/database/Eloquent/Concerns/GuardsAttributes.php
+++ /dev/null
@@ -1,252 +0,0 @@
-fillable;
- }
-
- /**
- * Set the fillable attributes for the model.
- *
- * @param array $fillable
- * @return $this
- */
- public function fillable(array $fillable)
- {
- $this->fillable = $fillable;
-
- return $this;
- }
-
- /**
- * Merge new fillable attributes with existing fillable attributes on the model.
- *
- * @param array $fillable
- * @return $this
- */
- public function mergeFillable(array $fillable)
- {
- $this->fillable = array_merge($this->fillable, $fillable);
-
- return $this;
- }
-
- /**
- * Get the guarded attributes for the model.
- *
- * @return array
- */
- public function getGuarded()
- {
- return $this->guarded === false
- ? []
- : $this->guarded;
- }
-
- /**
- * Set the guarded attributes for the model.
- *
- * @param array $guarded
- * @return $this
- */
- public function guard(array $guarded)
- {
- $this->guarded = $guarded;
-
- return $this;
- }
-
- /**
- * Merge new guarded attributes with existing guarded attributes on the model.
- *
- * @param array $guarded
- * @return $this
- */
- public function mergeGuarded(array $guarded)
- {
- $this->guarded = array_merge($this->guarded, $guarded);
-
- return $this;
- }
-
- /**
- * Disable all mass assignable restrictions.
- *
- * @param bool $state
- * @return void
- */
- public static function unguard($state = true)
- {
- static::$unguarded = $state;
- }
-
- /**
- * Enable the mass assignment restrictions.
- *
- * @return void
- */
- public static function reguard()
- {
- static::$unguarded = false;
- }
-
- /**
- * Determine if the current state is "unguarded".
- *
- * @return bool
- */
- public static function isUnguarded()
- {
- return static::$unguarded;
- }
-
- /**
- * Run the given callable while being unguarded.
- *
- * @param callable $callback
- * @return mixed
- */
- public static function unguarded(callable $callback)
- {
- if (static::$unguarded) {
- return $callback();
- }
-
- static::unguard();
-
- try {
- return $callback();
- } finally {
- static::reguard();
- }
- }
-
- /**
- * Determine if the given attribute may be mass assigned.
- *
- * @param string $key
- * @return bool
- */
- public function isFillable($key)
- {
- if (static::$unguarded) {
- return true;
- }
-
- // If the key is in the "fillable" array, we can of course assume that it's
- // a fillable attribute. Otherwise, we will check the guarded array when
- // we need to determine if the attribute is black-listed on the model.
- if (in_array($key, $this->getFillable())) {
- return true;
- }
-
- // If the attribute is explicitly listed in the "guarded" array then we can
- // return false immediately. This means this attribute is definitely not
- // fillable and there is no point in going any further in this method.
- if ($this->isGuarded($key)) {
- return false;
- }
-
- return empty($this->getFillable()) &&
- strpos($key, '.') === false &&
- ! Str::startsWith($key, '_');
- }
-
- /**
- * Determine if the given key is guarded.
- *
- * @param string $key
- * @return bool
- */
- public function isGuarded($key)
- {
- if (empty($this->getGuarded())) {
- return false;
- }
-
- return $this->getGuarded() == ['*'] ||
- ! empty(preg_grep('/^'.preg_quote($key).'$/i', $this->getGuarded())) ||
- ! $this->isGuardableColumn($key);
- }
-
- /**
- * Determine if the given column is a valid, guardable column.
- *
- * @param string $key
- * @return bool
- */
- protected function isGuardableColumn($key)
- {
- if (! isset(static::$guardableColumns[get_class($this)])) {
- static::$guardableColumns[get_class($this)] = $this->getConnection()
- ->getSchemaBuilder()
- ->getColumnListing($this->getTable());
- }
-
- return in_array($key, static::$guardableColumns[get_class($this)]);
- }
-
- /**
- * Determine if the model is totally guarded.
- *
- * @return bool
- */
- public function totallyGuarded()
- {
- return count($this->getFillable()) === 0 && $this->getGuarded() == ['*'];
- }
-
- /**
- * Get the fillable attributes of a given array.
- *
- * @param array $attributes
- * @return array
- */
- protected function fillableFromArray(array $attributes)
- {
- if (count($this->getFillable()) > 0 && ! static::$unguarded) {
- return array_intersect_key($attributes, array_flip($this->getFillable()));
- }
-
- return $attributes;
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Concerns/HasAttributes.php b/vendor/illuminate/database/Eloquent/Concerns/HasAttributes.php
deleted file mode 100644
index 46d9f2e7..00000000
--- a/vendor/illuminate/database/Eloquent/Concerns/HasAttributes.php
+++ /dev/null
@@ -1,1864 +0,0 @@
-addDateAttributesToArray(
- $attributes = $this->getArrayableAttributes()
- );
-
- $attributes = $this->addMutatedAttributesToArray(
- $attributes, $mutatedAttributes = $this->getMutatedAttributes()
- );
-
- // Next we will handle any casts that have been setup for this model and cast
- // the values to their appropriate type. If the attribute has a mutator we
- // will not perform the cast on those attributes to avoid any confusion.
- $attributes = $this->addCastAttributesToArray(
- $attributes, $mutatedAttributes
- );
-
- // Here we will grab all of the appended, calculated attributes to this model
- // as these attributes are not really in the attributes array, but are run
- // when we need to array or JSON the model for convenience to the coder.
- foreach ($this->getArrayableAppends() as $key) {
- $attributes[$key] = $this->mutateAttributeForArray($key, null);
- }
-
- return $attributes;
- }
-
- /**
- * Add the date attributes to the attributes array.
- *
- * @param array $attributes
- * @return array
- */
- protected function addDateAttributesToArray(array $attributes)
- {
- foreach ($this->getDates() as $key) {
- if (! isset($attributes[$key])) {
- continue;
- }
-
- $attributes[$key] = $this->serializeDate(
- $this->asDateTime($attributes[$key])
- );
- }
-
- return $attributes;
- }
-
- /**
- * Add the mutated attributes to the attributes array.
- *
- * @param array $attributes
- * @param array $mutatedAttributes
- * @return array
- */
- protected function addMutatedAttributesToArray(array $attributes, array $mutatedAttributes)
- {
- foreach ($mutatedAttributes as $key) {
- // We want to spin through all the mutated attributes for this model and call
- // the mutator for the attribute. We cache off every mutated attributes so
- // we don't have to constantly check on attributes that actually change.
- if (! array_key_exists($key, $attributes)) {
- continue;
- }
-
- // Next, we will call the mutator for this attribute so that we can get these
- // mutated attribute's actual values. After we finish mutating each of the
- // attributes we will return this final array of the mutated attributes.
- $attributes[$key] = $this->mutateAttributeForArray(
- $key, $attributes[$key]
- );
- }
-
- return $attributes;
- }
-
- /**
- * Add the casted attributes to the attributes array.
- *
- * @param array $attributes
- * @param array $mutatedAttributes
- * @return array
- */
- protected function addCastAttributesToArray(array $attributes, array $mutatedAttributes)
- {
- foreach ($this->getCasts() as $key => $value) {
- if (! array_key_exists($key, $attributes) ||
- in_array($key, $mutatedAttributes)) {
- continue;
- }
-
- // Here we will cast the attribute. Then, if the cast is a date or datetime cast
- // then we will serialize the date for the array. This will convert the dates
- // to strings based on the date format specified for these Eloquent models.
- $attributes[$key] = $this->castAttribute(
- $key, $attributes[$key]
- );
-
- // If the attribute cast was a date or a datetime, we will serialize the date as
- // a string. This allows the developers to customize how dates are serialized
- // into an array without affecting how they are persisted into the storage.
- if ($attributes[$key] && in_array($value, ['date', 'datetime', 'immutable_date', 'immutable_datetime'])) {
- $attributes[$key] = $this->serializeDate($attributes[$key]);
- }
-
- if ($attributes[$key] && ($this->isCustomDateTimeCast($value) ||
- $this->isImmutableCustomDateTimeCast($value))) {
- $attributes[$key] = $attributes[$key]->format(explode(':', $value, 2)[1]);
- }
-
- if ($attributes[$key] && $attributes[$key] instanceof DateTimeInterface &&
- $this->isClassCastable($key)) {
- $attributes[$key] = $this->serializeDate($attributes[$key]);
- }
-
- if ($attributes[$key] && $this->isClassSerializable($key)) {
- $attributes[$key] = $this->serializeClassCastableAttribute($key, $attributes[$key]);
- }
-
- if ($this->isEnumCastable($key)) {
- $attributes[$key] = isset($attributes[$key]) ? $attributes[$key]->value : null;
- }
-
- if ($attributes[$key] instanceof Arrayable) {
- $attributes[$key] = $attributes[$key]->toArray();
- }
- }
-
- return $attributes;
- }
-
- /**
- * Get an attribute array of all arrayable attributes.
- *
- * @return array
- */
- protected function getArrayableAttributes()
- {
- return $this->getArrayableItems($this->getAttributes());
- }
-
- /**
- * Get all of the appendable values that are arrayable.
- *
- * @return array
- */
- protected function getArrayableAppends()
- {
- if (! count($this->appends)) {
- return [];
- }
-
- return $this->getArrayableItems(
- array_combine($this->appends, $this->appends)
- );
- }
-
- /**
- * Get the model's relationships in array form.
- *
- * @return array
- */
- public function relationsToArray()
- {
- $attributes = [];
-
- foreach ($this->getArrayableRelations() as $key => $value) {
- // If the values implements the Arrayable interface we can just call this
- // toArray method on the instances which will convert both models and
- // collections to their proper array form and we'll set the values.
- if ($value instanceof Arrayable) {
- $relation = $value->toArray();
- }
-
- // If the value is null, we'll still go ahead and set it in this list of
- // attributes since null is used to represent empty relationships if
- // if it a has one or belongs to type relationships on the models.
- elseif (is_null($value)) {
- $relation = $value;
- }
-
- // If the relationships snake-casing is enabled, we will snake case this
- // key so that the relation attribute is snake cased in this returned
- // array to the developers, making this consistent with attributes.
- if (static::$snakeAttributes) {
- $key = Str::snake($key);
- }
-
- // If the relation value has been set, we will set it on this attributes
- // list for returning. If it was not arrayable or null, we'll not set
- // the value on the array because it is some type of invalid value.
- if (isset($relation) || is_null($value)) {
- $attributes[$key] = $relation;
- }
-
- unset($relation);
- }
-
- return $attributes;
- }
-
- /**
- * Get an attribute array of all arrayable relations.
- *
- * @return array
- */
- protected function getArrayableRelations()
- {
- return $this->getArrayableItems($this->relations);
- }
-
- /**
- * Get an attribute array of all arrayable values.
- *
- * @param array $values
- * @return array
- */
- protected function getArrayableItems(array $values)
- {
- if (count($this->getVisible()) > 0) {
- $values = array_intersect_key($values, array_flip($this->getVisible()));
- }
-
- if (count($this->getHidden()) > 0) {
- $values = array_diff_key($values, array_flip($this->getHidden()));
- }
-
- return $values;
- }
-
- /**
- * Get an attribute from the model.
- *
- * @param string $key
- * @return mixed
- */
- public function getAttribute($key)
- {
- if (! $key) {
- return;
- }
-
- // If the attribute exists in the attribute array or has a "get" mutator we will
- // get the attribute's value. Otherwise, we will proceed as if the developers
- // are asking for a relationship's value. This covers both types of values.
- if (array_key_exists($key, $this->attributes) ||
- array_key_exists($key, $this->casts) ||
- $this->hasGetMutator($key) ||
- $this->isClassCastable($key)) {
- return $this->getAttributeValue($key);
- }
-
- // Here we will determine if the model base class itself contains this given key
- // since we don't want to treat any of those methods as relationships because
- // they are all intended as helper methods and none of these are relations.
- if (method_exists(self::class, $key)) {
- return;
- }
-
- return $this->getRelationValue($key);
- }
-
- /**
- * Get a plain attribute (not a relationship).
- *
- * @param string $key
- * @return mixed
- */
- public function getAttributeValue($key)
- {
- return $this->transformModelValue($key, $this->getAttributeFromArray($key));
- }
-
- /**
- * Get an attribute from the $attributes array.
- *
- * @param string $key
- * @return mixed
- */
- protected function getAttributeFromArray($key)
- {
- return $this->getAttributes()[$key] ?? null;
- }
-
- /**
- * Get a relationship.
- *
- * @param string $key
- * @return mixed
- */
- public function getRelationValue($key)
- {
- // If the key already exists in the relationships array, it just means the
- // relationship has already been loaded, so we'll just return it out of
- // here because there is no need to query within the relations twice.
- if ($this->relationLoaded($key)) {
- return $this->relations[$key];
- }
-
- if (! $this->isRelation($key)) {
- return;
- }
-
- if ($this->preventsLazyLoading) {
- $this->handleLazyLoadingViolation($key);
- }
-
- // If the "attribute" exists as a method on the model, we will just assume
- // it is a relationship and will load and return results from the query
- // and hydrate the relationship's value on the "relationships" array.
- return $this->getRelationshipFromMethod($key);
- }
-
- /**
- * Determine if the given key is a relationship method on the model.
- *
- * @param string $key
- * @return bool
- */
- public function isRelation($key)
- {
- return method_exists($this, $key) ||
- (static::$relationResolvers[get_class($this)][$key] ?? null);
- }
-
- /**
- * Handle a lazy loading violation.
- *
- * @param string $key
- * @return mixed
- */
- protected function handleLazyLoadingViolation($key)
- {
- if (isset(static::$lazyLoadingViolationCallback)) {
- return call_user_func(static::$lazyLoadingViolationCallback, $this, $key);
- }
-
- throw new LazyLoadingViolationException($this, $key);
- }
-
- /**
- * Get a relationship value from a method.
- *
- * @param string $method
- * @return mixed
- *
- * @throws \LogicException
- */
- protected function getRelationshipFromMethod($method)
- {
- $relation = $this->$method();
-
- if (! $relation instanceof Relation) {
- if (is_null($relation)) {
- throw new LogicException(sprintf(
- '%s::%s must return a relationship instance, but "null" was returned. Was the "return" keyword used?', static::class, $method
- ));
- }
-
- throw new LogicException(sprintf(
- '%s::%s must return a relationship instance.', static::class, $method
- ));
- }
-
- return tap($relation->getResults(), function ($results) use ($method) {
- $this->setRelation($method, $results);
- });
- }
-
- /**
- * Determine if a get mutator exists for an attribute.
- *
- * @param string $key
- * @return bool
- */
- public function hasGetMutator($key)
- {
- return method_exists($this, 'get'.Str::studly($key).'Attribute');
- }
-
- /**
- * Get the value of an attribute using its mutator.
- *
- * @param string $key
- * @param mixed $value
- * @return mixed
- */
- protected function mutateAttribute($key, $value)
- {
- return $this->{'get'.Str::studly($key).'Attribute'}($value);
- }
-
- /**
- * Get the value of an attribute using its mutator for array conversion.
- *
- * @param string $key
- * @param mixed $value
- * @return mixed
- */
- protected function mutateAttributeForArray($key, $value)
- {
- $value = $this->isClassCastable($key)
- ? $this->getClassCastableAttributeValue($key, $value)
- : $this->mutateAttribute($key, $value);
-
- return $value instanceof Arrayable ? $value->toArray() : $value;
- }
-
- /**
- * Merge new casts with existing casts on the model.
- *
- * @param array $casts
- * @return $this
- */
- public function mergeCasts($casts)
- {
- $this->casts = array_merge($this->casts, $casts);
-
- return $this;
- }
-
- /**
- * Cast an attribute to a native PHP type.
- *
- * @param string $key
- * @param mixed $value
- * @return mixed
- */
- protected function castAttribute($key, $value)
- {
- $castType = $this->getCastType($key);
-
- if (is_null($value) && in_array($castType, static::$primitiveCastTypes)) {
- return $value;
- }
-
- // If the key is one of the encrypted castable types, we'll first decrypt
- // the value and update the cast type so we may leverage the following
- // logic for casting this value to any additionally specified types.
- if ($this->isEncryptedCastable($key)) {
- $value = $this->fromEncryptedString($value);
-
- $castType = Str::after($castType, 'encrypted:');
- }
-
- switch ($castType) {
- case 'int':
- case 'integer':
- return (int) $value;
- case 'real':
- case 'float':
- case 'double':
- return $this->fromFloat($value);
- case 'decimal':
- return $this->asDecimal($value, explode(':', $this->getCasts()[$key], 2)[1]);
- case 'string':
- return (string) $value;
- case 'bool':
- case 'boolean':
- return (bool) $value;
- case 'object':
- return $this->fromJson($value, true);
- case 'array':
- case 'json':
- return $this->fromJson($value);
- case 'collection':
- return new BaseCollection($this->fromJson($value));
- case 'date':
- return $this->asDate($value);
- case 'datetime':
- case 'custom_datetime':
- return $this->asDateTime($value);
- case 'immutable_date':
- return $this->asDate($value)->toImmutable();
- case 'immutable_custom_datetime':
- case 'immutable_datetime':
- return $this->asDateTime($value)->toImmutable();
- case 'timestamp':
- return $this->asTimestamp($value);
- }
-
- if ($this->isEnumCastable($key)) {
- return $this->getEnumCastableAttributeValue($key, $value);
- }
-
- if ($this->isClassCastable($key)) {
- return $this->getClassCastableAttributeValue($key, $value);
- }
-
- return $value;
- }
-
- /**
- * Cast the given attribute using a custom cast class.
- *
- * @param string $key
- * @param mixed $value
- * @return mixed
- */
- protected function getClassCastableAttributeValue($key, $value)
- {
- if (isset($this->classCastCache[$key])) {
- return $this->classCastCache[$key];
- } else {
- $caster = $this->resolveCasterClass($key);
-
- $value = $caster instanceof CastsInboundAttributes
- ? $value
- : $caster->get($this, $key, $value, $this->attributes);
-
- if ($caster instanceof CastsInboundAttributes || ! is_object($value)) {
- unset($this->classCastCache[$key]);
- } else {
- $this->classCastCache[$key] = $value;
- }
-
- return $value;
- }
- }
-
- /**
- * Cast the given attribute to an enum.
- *
- * @param string $key
- * @param mixed $value
- * @return mixed
- */
- protected function getEnumCastableAttributeValue($key, $value)
- {
- if (is_null($value)) {
- return;
- }
-
- $castType = $this->getCasts()[$key];
-
- return $castType::from($value);
- }
-
- /**
- * Get the type of cast for a model attribute.
- *
- * @param string $key
- * @return string
- */
- protected function getCastType($key)
- {
- if ($this->isCustomDateTimeCast($this->getCasts()[$key])) {
- return 'custom_datetime';
- }
-
- if ($this->isImmutableCustomDateTimeCast($this->getCasts()[$key])) {
- return 'immutable_custom_datetime';
- }
-
- if ($this->isDecimalCast($this->getCasts()[$key])) {
- return 'decimal';
- }
-
- return trim(strtolower($this->getCasts()[$key]));
- }
-
- /**
- * Increment or decrement the given attribute using the custom cast class.
- *
- * @param string $method
- * @param string $key
- * @param mixed $value
- * @return mixed
- */
- protected function deviateClassCastableAttribute($method, $key, $value)
- {
- return $this->resolveCasterClass($key)->{$method}(
- $this, $key, $value, $this->attributes
- );
- }
-
- /**
- * Serialize the given attribute using the custom cast class.
- *
- * @param string $key
- * @param mixed $value
- * @return mixed
- */
- protected function serializeClassCastableAttribute($key, $value)
- {
- return $this->resolveCasterClass($key)->serialize(
- $this, $key, $value, $this->attributes
- );
- }
-
- /**
- * Determine if the cast type is a custom date time cast.
- *
- * @param string $cast
- * @return bool
- */
- protected function isCustomDateTimeCast($cast)
- {
- return strncmp($cast, 'date:', 5) === 0 ||
- strncmp($cast, 'datetime:', 9) === 0;
- }
-
- /**
- * Determine if the cast type is an immutable custom date time cast.
- *
- * @param string $cast
- * @return bool
- */
- protected function isImmutableCustomDateTimeCast($cast)
- {
- return strncmp($cast, 'immutable_date:', 15) === 0 ||
- strncmp($cast, 'immutable_datetime:', 19) === 0;
- }
-
- /**
- * Determine if the cast type is a decimal cast.
- *
- * @param string $cast
- * @return bool
- */
- protected function isDecimalCast($cast)
- {
- return strncmp($cast, 'decimal:', 8) === 0;
- }
-
- /**
- * Set a given attribute on the model.
- *
- * @param string $key
- * @param mixed $value
- * @return mixed
- */
- public function setAttribute($key, $value)
- {
- // First we will check for the presence of a mutator for the set operation
- // which simply lets the developers tweak the attribute as it is set on
- // this model, such as "json_encoding" a listing of data for storage.
- if ($this->hasSetMutator($key)) {
- return $this->setMutatedAttributeValue($key, $value);
- }
-
- // If an attribute is listed as a "date", we'll convert it from a DateTime
- // instance into a form proper for storage on the database tables using
- // the connection grammar's date format. We will auto set the values.
- elseif ($value && $this->isDateAttribute($key)) {
- $value = $this->fromDateTime($value);
- }
-
- if ($this->isEnumCastable($key)) {
- $this->setEnumCastableAttribute($key, $value);
-
- return $this;
- }
-
- if ($this->isClassCastable($key)) {
- $this->setClassCastableAttribute($key, $value);
-
- return $this;
- }
-
- if (! is_null($value) && $this->isJsonCastable($key)) {
- $value = $this->castAttributeAsJson($key, $value);
- }
-
- // If this attribute contains a JSON ->, we'll set the proper value in the
- // attribute's underlying array. This takes care of properly nesting an
- // attribute in the array's value in the case of deeply nested items.
- if (Str::contains($key, '->')) {
- return $this->fillJsonAttribute($key, $value);
- }
-
- if (! is_null($value) && $this->isEncryptedCastable($key)) {
- $value = $this->castAttributeAsEncryptedString($key, $value);
- }
-
- $this->attributes[$key] = $value;
-
- return $this;
- }
-
- /**
- * Determine if a set mutator exists for an attribute.
- *
- * @param string $key
- * @return bool
- */
- public function hasSetMutator($key)
- {
- return method_exists($this, 'set'.Str::studly($key).'Attribute');
- }
-
- /**
- * Set the value of an attribute using its mutator.
- *
- * @param string $key
- * @param mixed $value
- * @return mixed
- */
- protected function setMutatedAttributeValue($key, $value)
- {
- return $this->{'set'.Str::studly($key).'Attribute'}($value);
- }
-
- /**
- * Determine if the given attribute is a date or date castable.
- *
- * @param string $key
- * @return bool
- */
- protected function isDateAttribute($key)
- {
- return in_array($key, $this->getDates(), true) ||
- $this->isDateCastable($key);
- }
-
- /**
- * Set a given JSON attribute on the model.
- *
- * @param string $key
- * @param mixed $value
- * @return $this
- */
- public function fillJsonAttribute($key, $value)
- {
- [$key, $path] = explode('->', $key, 2);
-
- $value = $this->asJson($this->getArrayAttributeWithValue(
- $path, $key, $value
- ));
-
- $this->attributes[$key] = $this->isEncryptedCastable($key)
- ? $this->castAttributeAsEncryptedString($key, $value)
- : $value;
-
- return $this;
- }
-
- /**
- * Set the value of a class castable attribute.
- *
- * @param string $key
- * @param mixed $value
- * @return void
- */
- protected function setClassCastableAttribute($key, $value)
- {
- $caster = $this->resolveCasterClass($key);
-
- if (is_null($value)) {
- $this->attributes = array_merge($this->attributes, array_map(
- function () {
- },
- $this->normalizeCastClassResponse($key, $caster->set(
- $this, $key, $this->{$key}, $this->attributes
- ))
- ));
- } else {
- $this->attributes = array_merge(
- $this->attributes,
- $this->normalizeCastClassResponse($key, $caster->set(
- $this, $key, $value, $this->attributes
- ))
- );
- }
-
- if ($caster instanceof CastsInboundAttributes || ! is_object($value)) {
- unset($this->classCastCache[$key]);
- } else {
- $this->classCastCache[$key] = $value;
- }
- }
-
- /**
- * Set the value of an enum castable attribute.
- *
- * @param string $key
- * @param \BackedEnum $value
- * @return void
- */
- protected function setEnumCastableAttribute($key, $value)
- {
- $this->attributes[$key] = isset($value) ? $value->value : null;
- }
-
- /**
- * Get an array attribute with the given key and value set.
- *
- * @param string $path
- * @param string $key
- * @param mixed $value
- * @return $this
- */
- protected function getArrayAttributeWithValue($path, $key, $value)
- {
- return tap($this->getArrayAttributeByKey($key), function (&$array) use ($path, $value) {
- Arr::set($array, str_replace('->', '.', $path), $value);
- });
- }
-
- /**
- * Get an array attribute or return an empty array if it is not set.
- *
- * @param string $key
- * @return array
- */
- protected function getArrayAttributeByKey($key)
- {
- if (! isset($this->attributes[$key])) {
- return [];
- }
-
- return $this->fromJson(
- $this->isEncryptedCastable($key)
- ? $this->fromEncryptedString($this->attributes[$key])
- : $this->attributes[$key]
- );
- }
-
- /**
- * Cast the given attribute to JSON.
- *
- * @param string $key
- * @param mixed $value
- * @return string
- */
- protected function castAttributeAsJson($key, $value)
- {
- $value = $this->asJson($value);
-
- if ($value === false) {
- throw JsonEncodingException::forAttribute(
- $this, $key, json_last_error_msg()
- );
- }
-
- return $value;
- }
-
- /**
- * Encode the given value as JSON.
- *
- * @param mixed $value
- * @return string
- */
- protected function asJson($value)
- {
- return json_encode($value);
- }
-
- /**
- * Decode the given JSON back into an array or object.
- *
- * @param string $value
- * @param bool $asObject
- * @return mixed
- */
- public function fromJson($value, $asObject = false)
- {
- return json_decode($value, ! $asObject);
- }
-
- /**
- * Decrypt the given encrypted string.
- *
- * @param string $value
- * @return mixed
- */
- public function fromEncryptedString($value)
- {
- return (static::$encrypter ?? Crypt::getFacadeRoot())->decrypt($value, false);
- }
-
- /**
- * Cast the given attribute to an encrypted string.
- *
- * @param string $key
- * @param mixed $value
- * @return string
- */
- protected function castAttributeAsEncryptedString($key, $value)
- {
- return (static::$encrypter ?? Crypt::getFacadeRoot())->encrypt($value, false);
- }
-
- /**
- * Set the encrypter instance that will be used to encrypt attributes.
- *
- * @param \Illuminate\Contracts\Encryption\Encrypter $encrypter
- * @return void
- */
- public static function encryptUsing($encrypter)
- {
- static::$encrypter = $encrypter;
- }
-
- /**
- * Decode the given float.
- *
- * @param mixed $value
- * @return mixed
- */
- public function fromFloat($value)
- {
- switch ((string) $value) {
- case 'Infinity':
- return INF;
- case '-Infinity':
- return -INF;
- case 'NaN':
- return NAN;
- default:
- return (float) $value;
- }
- }
-
- /**
- * Return a decimal as string.
- *
- * @param float $value
- * @param int $decimals
- * @return string
- */
- protected function asDecimal($value, $decimals)
- {
- return number_format($value, $decimals, '.', '');
- }
-
- /**
- * Return a timestamp as DateTime object with time set to 00:00:00.
- *
- * @param mixed $value
- * @return \Illuminate\Support\Carbon
- */
- protected function asDate($value)
- {
- return $this->asDateTime($value)->startOfDay();
- }
-
- /**
- * Return a timestamp as DateTime object.
- *
- * @param mixed $value
- * @return \Illuminate\Support\Carbon
- */
- protected function asDateTime($value)
- {
- // If this value is already a Carbon instance, we shall just return it as is.
- // This prevents us having to re-instantiate a Carbon instance when we know
- // it already is one, which wouldn't be fulfilled by the DateTime check.
- if ($value instanceof CarbonInterface) {
- return Date::instance($value);
- }
-
- // If the value is already a DateTime instance, we will just skip the rest of
- // these checks since they will be a waste of time, and hinder performance
- // when checking the field. We will just return the DateTime right away.
- if ($value instanceof DateTimeInterface) {
- return Date::parse(
- $value->format('Y-m-d H:i:s.u'), $value->getTimezone()
- );
- }
-
- // If this value is an integer, we will assume it is a UNIX timestamp's value
- // and format a Carbon object from this timestamp. This allows flexibility
- // when defining your date fields as they might be UNIX timestamps here.
- if (is_numeric($value)) {
- return Date::createFromTimestamp($value);
- }
-
- // If the value is in simply year, month, day format, we will instantiate the
- // Carbon instances from that format. Again, this provides for simple date
- // fields on the database, while still supporting Carbonized conversion.
- if ($this->isStandardDateFormat($value)) {
- return Date::instance(Carbon::createFromFormat('Y-m-d', $value)->startOfDay());
- }
-
- $format = $this->getDateFormat();
-
- // Finally, we will just assume this date is in the format used by default on
- // the database connection and use that format to create the Carbon object
- // that is returned back out to the developers after we convert it here.
- try {
- $date = Date::createFromFormat($format, $value);
- } catch (InvalidArgumentException $e) {
- $date = false;
- }
-
- return $date ?: Date::parse($value);
- }
-
- /**
- * Determine if the given value is a standard date format.
- *
- * @param string $value
- * @return bool
- */
- protected function isStandardDateFormat($value)
- {
- return preg_match('/^(\d{4})-(\d{1,2})-(\d{1,2})$/', $value);
- }
-
- /**
- * Convert a DateTime to a storable string.
- *
- * @param mixed $value
- * @return string|null
- */
- public function fromDateTime($value)
- {
- return empty($value) ? $value : $this->asDateTime($value)->format(
- $this->getDateFormat()
- );
- }
-
- /**
- * Return a timestamp as unix timestamp.
- *
- * @param mixed $value
- * @return int
- */
- protected function asTimestamp($value)
- {
- return $this->asDateTime($value)->getTimestamp();
- }
-
- /**
- * Prepare a date for array / JSON serialization.
- *
- * @param \DateTimeInterface $date
- * @return string
- */
- protected function serializeDate(DateTimeInterface $date)
- {
- return $date instanceof \DateTimeImmutable ?
- CarbonImmutable::instance($date)->toJSON() :
- Carbon::instance($date)->toJSON();
- }
-
- /**
- * Get the attributes that should be converted to dates.
- *
- * @return array
- */
- public function getDates()
- {
- if (! $this->usesTimestamps()) {
- return $this->dates;
- }
-
- $defaults = [
- $this->getCreatedAtColumn(),
- $this->getUpdatedAtColumn(),
- ];
-
- return array_unique(array_merge($this->dates, $defaults));
- }
-
- /**
- * Get the format for database stored dates.
- *
- * @return string
- */
- public function getDateFormat()
- {
- return $this->dateFormat ?: $this->getConnection()->getQueryGrammar()->getDateFormat();
- }
-
- /**
- * Set the date format used by the model.
- *
- * @param string $format
- * @return $this
- */
- public function setDateFormat($format)
- {
- $this->dateFormat = $format;
-
- return $this;
- }
-
- /**
- * Determine whether an attribute should be cast to a native type.
- *
- * @param string $key
- * @param array|string|null $types
- * @return bool
- */
- public function hasCast($key, $types = null)
- {
- if (array_key_exists($key, $this->getCasts())) {
- return $types ? in_array($this->getCastType($key), (array) $types, true) : true;
- }
-
- return false;
- }
-
- /**
- * Get the casts array.
- *
- * @return array
- */
- public function getCasts()
- {
- if ($this->getIncrementing()) {
- return array_merge([$this->getKeyName() => $this->getKeyType()], $this->casts);
- }
-
- return $this->casts;
- }
-
- /**
- * Determine whether a value is Date / DateTime castable for inbound manipulation.
- *
- * @param string $key
- * @return bool
- */
- protected function isDateCastable($key)
- {
- return $this->hasCast($key, ['date', 'datetime', 'immutable_date', 'immutable_datetime']);
- }
-
- /**
- * Determine whether a value is Date / DateTime custom-castable for inbound manipulation.
- *
- * @param string $key
- * @return bool
- */
- protected function isDateCastableWithCustomFormat($key)
- {
- return $this->hasCast($key, ['custom_datetime', 'immutable_custom_datetime']);
- }
-
- /**
- * Determine whether a value is JSON castable for inbound manipulation.
- *
- * @param string $key
- * @return bool
- */
- protected function isJsonCastable($key)
- {
- return $this->hasCast($key, ['array', 'json', 'object', 'collection', 'encrypted:array', 'encrypted:collection', 'encrypted:json', 'encrypted:object']);
- }
-
- /**
- * Determine whether a value is an encrypted castable for inbound manipulation.
- *
- * @param string $key
- * @return bool
- */
- protected function isEncryptedCastable($key)
- {
- return $this->hasCast($key, ['encrypted', 'encrypted:array', 'encrypted:collection', 'encrypted:json', 'encrypted:object']);
- }
-
- /**
- * Determine if the given key is cast using a custom class.
- *
- * @param string $key
- * @return bool
- *
- * @throws \Illuminate\Database\Eloquent\InvalidCastException
- */
- protected function isClassCastable($key)
- {
- if (! array_key_exists($key, $this->getCasts())) {
- return false;
- }
-
- $castType = $this->parseCasterClass($this->getCasts()[$key]);
-
- if (in_array($castType, static::$primitiveCastTypes)) {
- return false;
- }
-
- if (class_exists($castType)) {
- return true;
- }
-
- throw new InvalidCastException($this->getModel(), $key, $castType);
- }
-
- /**
- * Determine if the given key is cast using an enum.
- *
- * @param string $key
- * @return bool
- */
- protected function isEnumCastable($key)
- {
- if (! array_key_exists($key, $this->getCasts())) {
- return false;
- }
-
- $castType = $this->getCasts()[$key];
-
- if (in_array($castType, static::$primitiveCastTypes)) {
- return false;
- }
-
- if (function_exists('enum_exists') && enum_exists($castType)) {
- return true;
- }
- }
-
- /**
- * Determine if the key is deviable using a custom class.
- *
- * @param string $key
- * @return bool
- *
- * @throws \Illuminate\Database\Eloquent\InvalidCastException
- */
- protected function isClassDeviable($key)
- {
- return $this->isClassCastable($key) &&
- method_exists($castType = $this->parseCasterClass($this->getCasts()[$key]), 'increment') &&
- method_exists($castType, 'decrement');
- }
-
- /**
- * Determine if the key is serializable using a custom class.
- *
- * @param string $key
- * @return bool
- *
- * @throws \Illuminate\Database\Eloquent\InvalidCastException
- */
- protected function isClassSerializable($key)
- {
- return ! $this->isEnumCastable($key) &&
- $this->isClassCastable($key) &&
- method_exists($this->resolveCasterClass($key), 'serialize');
- }
-
- /**
- * Resolve the custom caster class for a given key.
- *
- * @param string $key
- * @return mixed
- */
- protected function resolveCasterClass($key)
- {
- $castType = $this->getCasts()[$key];
-
- $arguments = [];
-
- if (is_string($castType) && strpos($castType, ':') !== false) {
- $segments = explode(':', $castType, 2);
-
- $castType = $segments[0];
- $arguments = explode(',', $segments[1]);
- }
-
- if (is_subclass_of($castType, Castable::class)) {
- $castType = $castType::castUsing($arguments);
- }
-
- if (is_object($castType)) {
- return $castType;
- }
-
- return new $castType(...$arguments);
- }
-
- /**
- * Parse the given caster class, removing any arguments.
- *
- * @param string $class
- * @return string
- */
- protected function parseCasterClass($class)
- {
- return strpos($class, ':') === false
- ? $class
- : explode(':', $class, 2)[0];
- }
-
- /**
- * Merge the cast class attributes back into the model.
- *
- * @return void
- */
- protected function mergeAttributesFromClassCasts()
- {
- foreach ($this->classCastCache as $key => $value) {
- $caster = $this->resolveCasterClass($key);
-
- $this->attributes = array_merge(
- $this->attributes,
- $caster instanceof CastsInboundAttributes
- ? [$key => $value]
- : $this->normalizeCastClassResponse($key, $caster->set($this, $key, $value, $this->attributes))
- );
- }
- }
-
- /**
- * Normalize the response from a custom class caster.
- *
- * @param string $key
- * @param mixed $value
- * @return array
- */
- protected function normalizeCastClassResponse($key, $value)
- {
- return is_array($value) ? $value : [$key => $value];
- }
-
- /**
- * Get all of the current attributes on the model.
- *
- * @return array
- */
- public function getAttributes()
- {
- $this->mergeAttributesFromClassCasts();
-
- return $this->attributes;
- }
-
- /**
- * Get all of the current attributes on the model for an insert operation.
- *
- * @return array
- */
- protected function getAttributesForInsert()
- {
- return $this->getAttributes();
- }
-
- /**
- * Set the array of model attributes. No checking is done.
- *
- * @param array $attributes
- * @param bool $sync
- * @return $this
- */
- public function setRawAttributes(array $attributes, $sync = false)
- {
- $this->attributes = $attributes;
-
- if ($sync) {
- $this->syncOriginal();
- }
-
- $this->classCastCache = [];
-
- return $this;
- }
-
- /**
- * Get the model's original attribute values.
- *
- * @param string|null $key
- * @param mixed $default
- * @return mixed|array
- */
- public function getOriginal($key = null, $default = null)
- {
- return (new static)->setRawAttributes(
- $this->original, $sync = true
- )->getOriginalWithoutRewindingModel($key, $default);
- }
-
- /**
- * Get the model's original attribute values.
- *
- * @param string|null $key
- * @param mixed $default
- * @return mixed|array
- */
- protected function getOriginalWithoutRewindingModel($key = null, $default = null)
- {
- if ($key) {
- return $this->transformModelValue(
- $key, Arr::get($this->original, $key, $default)
- );
- }
-
- return collect($this->original)->mapWithKeys(function ($value, $key) {
- return [$key => $this->transformModelValue($key, $value)];
- })->all();
- }
-
- /**
- * Get the model's raw original attribute values.
- *
- * @param string|null $key
- * @param mixed $default
- * @return mixed|array
- */
- public function getRawOriginal($key = null, $default = null)
- {
- return Arr::get($this->original, $key, $default);
- }
-
- /**
- * Get a subset of the model's attributes.
- *
- * @param array|mixed $attributes
- * @return array
- */
- public function only($attributes)
- {
- $results = [];
-
- foreach (is_array($attributes) ? $attributes : func_get_args() as $attribute) {
- $results[$attribute] = $this->getAttribute($attribute);
- }
-
- return $results;
- }
-
- /**
- * Sync the original attributes with the current.
- *
- * @return $this
- */
- public function syncOriginal()
- {
- $this->original = $this->getAttributes();
-
- return $this;
- }
-
- /**
- * Sync a single original attribute with its current value.
- *
- * @param string $attribute
- * @return $this
- */
- public function syncOriginalAttribute($attribute)
- {
- return $this->syncOriginalAttributes($attribute);
- }
-
- /**
- * Sync multiple original attribute with their current values.
- *
- * @param array|string $attributes
- * @return $this
- */
- public function syncOriginalAttributes($attributes)
- {
- $attributes = is_array($attributes) ? $attributes : func_get_args();
-
- $modelAttributes = $this->getAttributes();
-
- foreach ($attributes as $attribute) {
- $this->original[$attribute] = $modelAttributes[$attribute];
- }
-
- return $this;
- }
-
- /**
- * Sync the changed attributes.
- *
- * @return $this
- */
- public function syncChanges()
- {
- $this->changes = $this->getDirty();
-
- return $this;
- }
-
- /**
- * Determine if the model or any of the given attribute(s) have been modified.
- *
- * @param array|string|null $attributes
- * @return bool
- */
- public function isDirty($attributes = null)
- {
- return $this->hasChanges(
- $this->getDirty(), is_array($attributes) ? $attributes : func_get_args()
- );
- }
-
- /**
- * Determine if the model or all the given attribute(s) have remained the same.
- *
- * @param array|string|null $attributes
- * @return bool
- */
- public function isClean($attributes = null)
- {
- return ! $this->isDirty(...func_get_args());
- }
-
- /**
- * Determine if the model or any of the given attribute(s) have been modified.
- *
- * @param array|string|null $attributes
- * @return bool
- */
- public function wasChanged($attributes = null)
- {
- return $this->hasChanges(
- $this->getChanges(), is_array($attributes) ? $attributes : func_get_args()
- );
- }
-
- /**
- * Determine if any of the given attributes were changed.
- *
- * @param array $changes
- * @param array|string|null $attributes
- * @return bool
- */
- protected function hasChanges($changes, $attributes = null)
- {
- // If no specific attributes were provided, we will just see if the dirty array
- // already contains any attributes. If it does we will just return that this
- // count is greater than zero. Else, we need to check specific attributes.
- if (empty($attributes)) {
- return count($changes) > 0;
- }
-
- // Here we will spin through every attribute and see if this is in the array of
- // dirty attributes. If it is, we will return true and if we make it through
- // all of the attributes for the entire array we will return false at end.
- foreach (Arr::wrap($attributes) as $attribute) {
- if (array_key_exists($attribute, $changes)) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Get the attributes that have been changed since the last sync.
- *
- * @return array
- */
- public function getDirty()
- {
- $dirty = [];
-
- foreach ($this->getAttributes() as $key => $value) {
- if (! $this->originalIsEquivalent($key)) {
- $dirty[$key] = $value;
- }
- }
-
- return $dirty;
- }
-
- /**
- * Get the attributes that were changed.
- *
- * @return array
- */
- public function getChanges()
- {
- return $this->changes;
- }
-
- /**
- * Determine if the new and old values for a given key are equivalent.
- *
- * @param string $key
- * @return bool
- */
- public function originalIsEquivalent($key)
- {
- if (! array_key_exists($key, $this->original)) {
- return false;
- }
-
- $attribute = Arr::get($this->attributes, $key);
- $original = Arr::get($this->original, $key);
-
- if ($attribute === $original) {
- return true;
- } elseif (is_null($attribute)) {
- return false;
- } elseif ($this->isDateAttribute($key) || $this->isDateCastableWithCustomFormat($key)) {
- return $this->fromDateTime($attribute) ===
- $this->fromDateTime($original);
- } elseif ($this->hasCast($key, ['object', 'collection'])) {
- return $this->castAttribute($key, $attribute) ==
- $this->castAttribute($key, $original);
- } elseif ($this->hasCast($key, ['real', 'float', 'double'])) {
- if (($attribute === null && $original !== null) || ($attribute !== null && $original === null)) {
- return false;
- }
-
- return abs($this->castAttribute($key, $attribute) - $this->castAttribute($key, $original)) < PHP_FLOAT_EPSILON * 4;
- } elseif ($this->hasCast($key, static::$primitiveCastTypes)) {
- return $this->castAttribute($key, $attribute) ===
- $this->castAttribute($key, $original);
- } elseif ($this->isClassCastable($key) && in_array($this->getCasts()[$key], [AsArrayObject::class, AsCollection::class])) {
- return $this->fromJson($attribute) === $this->fromJson($original);
- }
-
- return is_numeric($attribute) && is_numeric($original)
- && strcmp((string) $attribute, (string) $original) === 0;
- }
-
- /**
- * Transform a raw model value using mutators, casts, etc.
- *
- * @param string $key
- * @param mixed $value
- * @return mixed
- */
- protected function transformModelValue($key, $value)
- {
- // If the attribute has a get mutator, we will call that then return what
- // it returns as the value, which is useful for transforming values on
- // retrieval from the model to a form that is more useful for usage.
- if ($this->hasGetMutator($key)) {
- return $this->mutateAttribute($key, $value);
- }
-
- // If the attribute exists within the cast array, we will convert it to
- // an appropriate native PHP type dependent upon the associated value
- // given with the key in the pair. Dayle made this comment line up.
- if ($this->hasCast($key)) {
- return $this->castAttribute($key, $value);
- }
-
- // If the attribute is listed as a date, we will convert it to a DateTime
- // instance on retrieval, which makes it quite convenient to work with
- // date fields without having to create a mutator for each property.
- if ($value !== null
- && \in_array($key, $this->getDates(), false)) {
- return $this->asDateTime($value);
- }
-
- return $value;
- }
-
- /**
- * Append attributes to query when building a query.
- *
- * @param array|string $attributes
- * @return $this
- */
- public function append($attributes)
- {
- $this->appends = array_unique(
- array_merge($this->appends, is_string($attributes) ? func_get_args() : $attributes)
- );
-
- return $this;
- }
-
- /**
- * Set the accessors to append to model arrays.
- *
- * @param array $appends
- * @return $this
- */
- public function setAppends(array $appends)
- {
- $this->appends = $appends;
-
- return $this;
- }
-
- /**
- * Return whether the accessor attribute has been appended.
- *
- * @param string $attribute
- * @return bool
- */
- public function hasAppended($attribute)
- {
- return in_array($attribute, $this->appends);
- }
-
- /**
- * Get the mutated attributes for a given instance.
- *
- * @return array
- */
- public function getMutatedAttributes()
- {
- $class = static::class;
-
- if (! isset(static::$mutatorCache[$class])) {
- static::cacheMutatedAttributes($class);
- }
-
- return static::$mutatorCache[$class];
- }
-
- /**
- * Extract and cache all the mutated attributes of a class.
- *
- * @param string $class
- * @return void
- */
- public static function cacheMutatedAttributes($class)
- {
- static::$mutatorCache[$class] = collect(static::getMutatorMethods($class))->map(function ($match) {
- return lcfirst(static::$snakeAttributes ? Str::snake($match) : $match);
- })->all();
- }
-
- /**
- * Get all of the attribute mutator methods.
- *
- * @param mixed $class
- * @return array
- */
- protected static function getMutatorMethods($class)
- {
- preg_match_all('/(?<=^|;)get([^;]+?)Attribute(;|$)/', implode(';', get_class_methods($class)), $matches);
-
- return $matches[1];
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Concerns/HasEvents.php b/vendor/illuminate/database/Eloquent/Concerns/HasEvents.php
deleted file mode 100644
index 0dc54308..00000000
--- a/vendor/illuminate/database/Eloquent/Concerns/HasEvents.php
+++ /dev/null
@@ -1,415 +0,0 @@
-registerObserver($class);
- }
- }
-
- /**
- * Register a single observer with the model.
- *
- * @param object|string $class
- * @return void
- *
- * @throws \RuntimeException
- */
- protected function registerObserver($class)
- {
- $className = $this->resolveObserverClassName($class);
-
- // When registering a model observer, we will spin through the possible events
- // and determine if this observer has that method. If it does, we will hook
- // it into the model's event system, making it convenient to watch these.
- foreach ($this->getObservableEvents() as $event) {
- if (method_exists($class, $event)) {
- static::registerModelEvent($event, $className.'@'.$event);
- }
- }
- }
-
- /**
- * Resolve the observer's class name from an object or string.
- *
- * @param object|string $class
- * @return string
- *
- * @throws \InvalidArgumentException
- */
- private function resolveObserverClassName($class)
- {
- if (is_object($class)) {
- return get_class($class);
- }
-
- if (class_exists($class)) {
- return $class;
- }
-
- throw new InvalidArgumentException('Unable to find observer: '.$class);
- }
-
- /**
- * Get the observable event names.
- *
- * @return array
- */
- public function getObservableEvents()
- {
- return array_merge(
- [
- 'retrieved', 'creating', 'created', 'updating', 'updated',
- 'saving', 'saved', 'restoring', 'restored', 'replicating',
- 'deleting', 'deleted', 'forceDeleted',
- ],
- $this->observables
- );
- }
-
- /**
- * Set the observable event names.
- *
- * @param array $observables
- * @return $this
- */
- public function setObservableEvents(array $observables)
- {
- $this->observables = $observables;
-
- return $this;
- }
-
- /**
- * Add an observable event name.
- *
- * @param array|mixed $observables
- * @return void
- */
- public function addObservableEvents($observables)
- {
- $this->observables = array_unique(array_merge(
- $this->observables, is_array($observables) ? $observables : func_get_args()
- ));
- }
-
- /**
- * Remove an observable event name.
- *
- * @param array|mixed $observables
- * @return void
- */
- public function removeObservableEvents($observables)
- {
- $this->observables = array_diff(
- $this->observables, is_array($observables) ? $observables : func_get_args()
- );
- }
-
- /**
- * Register a model event with the dispatcher.
- *
- * @param string $event
- * @param \Closure|string $callback
- * @return void
- */
- protected static function registerModelEvent($event, $callback)
- {
- if (isset(static::$dispatcher)) {
- $name = static::class;
-
- static::$dispatcher->listen("eloquent.{$event}: {$name}", $callback);
- }
- }
-
- /**
- * Fire the given event for the model.
- *
- * @param string $event
- * @param bool $halt
- * @return mixed
- */
- protected function fireModelEvent($event, $halt = true)
- {
- if (! isset(static::$dispatcher)) {
- return true;
- }
-
- // First, we will get the proper method to call on the event dispatcher, and then we
- // will attempt to fire a custom, object based event for the given event. If that
- // returns a result we can return that result, or we'll call the string events.
- $method = $halt ? 'until' : 'dispatch';
-
- $result = $this->filterModelEventResults(
- $this->fireCustomModelEvent($event, $method)
- );
-
- if ($result === false) {
- return false;
- }
-
- return ! empty($result) ? $result : static::$dispatcher->{$method}(
- "eloquent.{$event}: ".static::class, $this
- );
- }
-
- /**
- * Fire a custom model event for the given event.
- *
- * @param string $event
- * @param string $method
- * @return mixed|null
- */
- protected function fireCustomModelEvent($event, $method)
- {
- if (! isset($this->dispatchesEvents[$event])) {
- return;
- }
-
- $result = static::$dispatcher->$method(new $this->dispatchesEvents[$event]($this));
-
- if (! is_null($result)) {
- return $result;
- }
- }
-
- /**
- * Filter the model event results.
- *
- * @param mixed $result
- * @return mixed
- */
- protected function filterModelEventResults($result)
- {
- if (is_array($result)) {
- $result = array_filter($result, function ($response) {
- return ! is_null($response);
- });
- }
-
- return $result;
- }
-
- /**
- * Register a retrieved model event with the dispatcher.
- *
- * @param \Closure|string $callback
- * @return void
- */
- public static function retrieved($callback)
- {
- static::registerModelEvent('retrieved', $callback);
- }
-
- /**
- * Register a saving model event with the dispatcher.
- *
- * @param \Closure|string $callback
- * @return void
- */
- public static function saving($callback)
- {
- static::registerModelEvent('saving', $callback);
- }
-
- /**
- * Register a saved model event with the dispatcher.
- *
- * @param \Closure|string $callback
- * @return void
- */
- public static function saved($callback)
- {
- static::registerModelEvent('saved', $callback);
- }
-
- /**
- * Register an updating model event with the dispatcher.
- *
- * @param \Closure|string $callback
- * @return void
- */
- public static function updating($callback)
- {
- static::registerModelEvent('updating', $callback);
- }
-
- /**
- * Register an updated model event with the dispatcher.
- *
- * @param \Closure|string $callback
- * @return void
- */
- public static function updated($callback)
- {
- static::registerModelEvent('updated', $callback);
- }
-
- /**
- * Register a creating model event with the dispatcher.
- *
- * @param \Closure|string $callback
- * @return void
- */
- public static function creating($callback)
- {
- static::registerModelEvent('creating', $callback);
- }
-
- /**
- * Register a created model event with the dispatcher.
- *
- * @param \Closure|string $callback
- * @return void
- */
- public static function created($callback)
- {
- static::registerModelEvent('created', $callback);
- }
-
- /**
- * Register a replicating model event with the dispatcher.
- *
- * @param \Closure|string $callback
- * @return void
- */
- public static function replicating($callback)
- {
- static::registerModelEvent('replicating', $callback);
- }
-
- /**
- * Register a deleting model event with the dispatcher.
- *
- * @param \Closure|string $callback
- * @return void
- */
- public static function deleting($callback)
- {
- static::registerModelEvent('deleting', $callback);
- }
-
- /**
- * Register a deleted model event with the dispatcher.
- *
- * @param \Closure|string $callback
- * @return void
- */
- public static function deleted($callback)
- {
- static::registerModelEvent('deleted', $callback);
- }
-
- /**
- * Remove all of the event listeners for the model.
- *
- * @return void
- */
- public static function flushEventListeners()
- {
- if (! isset(static::$dispatcher)) {
- return;
- }
-
- $instance = new static;
-
- foreach ($instance->getObservableEvents() as $event) {
- static::$dispatcher->forget("eloquent.{$event}: ".static::class);
- }
-
- foreach (array_values($instance->dispatchesEvents) as $event) {
- static::$dispatcher->forget($event);
- }
- }
-
- /**
- * Get the event dispatcher instance.
- *
- * @return \Illuminate\Contracts\Events\Dispatcher
- */
- public static function getEventDispatcher()
- {
- return static::$dispatcher;
- }
-
- /**
- * Set the event dispatcher instance.
- *
- * @param \Illuminate\Contracts\Events\Dispatcher $dispatcher
- * @return void
- */
- public static function setEventDispatcher(Dispatcher $dispatcher)
- {
- static::$dispatcher = $dispatcher;
- }
-
- /**
- * Unset the event dispatcher for models.
- *
- * @return void
- */
- public static function unsetEventDispatcher()
- {
- static::$dispatcher = null;
- }
-
- /**
- * Execute a callback without firing any model events for any model type.
- *
- * @param callable $callback
- * @return mixed
- */
- public static function withoutEvents(callable $callback)
- {
- $dispatcher = static::getEventDispatcher();
-
- if ($dispatcher) {
- static::setEventDispatcher(new NullDispatcher($dispatcher));
- }
-
- try {
- return $callback();
- } finally {
- if ($dispatcher) {
- static::setEventDispatcher($dispatcher);
- }
- }
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Concerns/HasGlobalScopes.php b/vendor/illuminate/database/Eloquent/Concerns/HasGlobalScopes.php
deleted file mode 100644
index 1742679c..00000000
--- a/vendor/illuminate/database/Eloquent/Concerns/HasGlobalScopes.php
+++ /dev/null
@@ -1,71 +0,0 @@
- [$name => $callback]]
- );
- }
-
- /**
- * Define a one-to-one relationship.
- *
- * @param string $related
- * @param string|null $foreignKey
- * @param string|null $localKey
- * @return \Illuminate\Database\Eloquent\Relations\HasOne
- */
- public function hasOne($related, $foreignKey = null, $localKey = null)
- {
- $instance = $this->newRelatedInstance($related);
-
- $foreignKey = $foreignKey ?: $this->getForeignKey();
-
- $localKey = $localKey ?: $this->getKeyName();
-
- return $this->newHasOne($instance->newQuery(), $this, $instance->getTable().'.'.$foreignKey, $localKey);
- }
-
- /**
- * Instantiate a new HasOne relationship.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @param \Illuminate\Database\Eloquent\Model $parent
- * @param string $foreignKey
- * @param string $localKey
- * @return \Illuminate\Database\Eloquent\Relations\HasOne
- */
- protected function newHasOne(Builder $query, Model $parent, $foreignKey, $localKey)
- {
- return new HasOne($query, $parent, $foreignKey, $localKey);
- }
-
- /**
- * Define a has-one-through relationship.
- *
- * @param string $related
- * @param string $through
- * @param string|null $firstKey
- * @param string|null $secondKey
- * @param string|null $localKey
- * @param string|null $secondLocalKey
- * @return \Illuminate\Database\Eloquent\Relations\HasOneThrough
- */
- public function hasOneThrough($related, $through, $firstKey = null, $secondKey = null, $localKey = null, $secondLocalKey = null)
- {
- $through = new $through;
-
- $firstKey = $firstKey ?: $this->getForeignKey();
-
- $secondKey = $secondKey ?: $through->getForeignKey();
-
- return $this->newHasOneThrough(
- $this->newRelatedInstance($related)->newQuery(), $this, $through,
- $firstKey, $secondKey, $localKey ?: $this->getKeyName(),
- $secondLocalKey ?: $through->getKeyName()
- );
- }
-
- /**
- * Instantiate a new HasOneThrough relationship.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @param \Illuminate\Database\Eloquent\Model $farParent
- * @param \Illuminate\Database\Eloquent\Model $throughParent
- * @param string $firstKey
- * @param string $secondKey
- * @param string $localKey
- * @param string $secondLocalKey
- * @return \Illuminate\Database\Eloquent\Relations\HasOneThrough
- */
- protected function newHasOneThrough(Builder $query, Model $farParent, Model $throughParent, $firstKey, $secondKey, $localKey, $secondLocalKey)
- {
- return new HasOneThrough($query, $farParent, $throughParent, $firstKey, $secondKey, $localKey, $secondLocalKey);
- }
-
- /**
- * Define a polymorphic one-to-one relationship.
- *
- * @param string $related
- * @param string $name
- * @param string|null $type
- * @param string|null $id
- * @param string|null $localKey
- * @return \Illuminate\Database\Eloquent\Relations\MorphOne
- */
- public function morphOne($related, $name, $type = null, $id = null, $localKey = null)
- {
- $instance = $this->newRelatedInstance($related);
-
- [$type, $id] = $this->getMorphs($name, $type, $id);
-
- $table = $instance->getTable();
-
- $localKey = $localKey ?: $this->getKeyName();
-
- return $this->newMorphOne($instance->newQuery(), $this, $table.'.'.$type, $table.'.'.$id, $localKey);
- }
-
- /**
- * Instantiate a new MorphOne relationship.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @param \Illuminate\Database\Eloquent\Model $parent
- * @param string $type
- * @param string $id
- * @param string $localKey
- * @return \Illuminate\Database\Eloquent\Relations\MorphOne
- */
- protected function newMorphOne(Builder $query, Model $parent, $type, $id, $localKey)
- {
- return new MorphOne($query, $parent, $type, $id, $localKey);
- }
-
- /**
- * Define an inverse one-to-one or many relationship.
- *
- * @param string $related
- * @param string|null $foreignKey
- * @param string|null $ownerKey
- * @param string|null $relation
- * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
- */
- public function belongsTo($related, $foreignKey = null, $ownerKey = null, $relation = null)
- {
- // If no relation name was given, we will use this debug backtrace to extract
- // the calling method's name and use that as the relationship name as most
- // of the time this will be what we desire to use for the relationships.
- if (is_null($relation)) {
- $relation = $this->guessBelongsToRelation();
- }
-
- $instance = $this->newRelatedInstance($related);
-
- // If no foreign key was supplied, we can use a backtrace to guess the proper
- // foreign key name by using the name of the relationship function, which
- // when combined with an "_id" should conventionally match the columns.
- if (is_null($foreignKey)) {
- $foreignKey = Str::snake($relation).'_'.$instance->getKeyName();
- }
-
- // Once we have the foreign key names, we'll just create a new Eloquent query
- // for the related models and returns the relationship instance which will
- // actually be responsible for retrieving and hydrating every relations.
- $ownerKey = $ownerKey ?: $instance->getKeyName();
-
- return $this->newBelongsTo(
- $instance->newQuery(), $this, $foreignKey, $ownerKey, $relation
- );
- }
-
- /**
- * Instantiate a new BelongsTo relationship.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @param \Illuminate\Database\Eloquent\Model $child
- * @param string $foreignKey
- * @param string $ownerKey
- * @param string $relation
- * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
- */
- protected function newBelongsTo(Builder $query, Model $child, $foreignKey, $ownerKey, $relation)
- {
- return new BelongsTo($query, $child, $foreignKey, $ownerKey, $relation);
- }
-
- /**
- * Define a polymorphic, inverse one-to-one or many relationship.
- *
- * @param string|null $name
- * @param string|null $type
- * @param string|null $id
- * @param string|null $ownerKey
- * @return \Illuminate\Database\Eloquent\Relations\MorphTo
- */
- public function morphTo($name = null, $type = null, $id = null, $ownerKey = null)
- {
- // If no name is provided, we will use the backtrace to get the function name
- // since that is most likely the name of the polymorphic interface. We can
- // use that to get both the class and foreign key that will be utilized.
- $name = $name ?: $this->guessBelongsToRelation();
-
- [$type, $id] = $this->getMorphs(
- Str::snake($name), $type, $id
- );
-
- // If the type value is null it is probably safe to assume we're eager loading
- // the relationship. In this case we'll just pass in a dummy query where we
- // need to remove any eager loads that may already be defined on a model.
- return is_null($class = $this->getAttributeFromArray($type)) || $class === ''
- ? $this->morphEagerTo($name, $type, $id, $ownerKey)
- : $this->morphInstanceTo($class, $name, $type, $id, $ownerKey);
- }
-
- /**
- * Define a polymorphic, inverse one-to-one or many relationship.
- *
- * @param string $name
- * @param string $type
- * @param string $id
- * @param string $ownerKey
- * @return \Illuminate\Database\Eloquent\Relations\MorphTo
- */
- protected function morphEagerTo($name, $type, $id, $ownerKey)
- {
- return $this->newMorphTo(
- $this->newQuery()->setEagerLoads([]), $this, $id, $ownerKey, $type, $name
- );
- }
-
- /**
- * Define a polymorphic, inverse one-to-one or many relationship.
- *
- * @param string $target
- * @param string $name
- * @param string $type
- * @param string $id
- * @param string $ownerKey
- * @return \Illuminate\Database\Eloquent\Relations\MorphTo
- */
- protected function morphInstanceTo($target, $name, $type, $id, $ownerKey)
- {
- $instance = $this->newRelatedInstance(
- static::getActualClassNameForMorph($target)
- );
-
- return $this->newMorphTo(
- $instance->newQuery(), $this, $id, $ownerKey ?? $instance->getKeyName(), $type, $name
- );
- }
-
- /**
- * Instantiate a new MorphTo relationship.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @param \Illuminate\Database\Eloquent\Model $parent
- * @param string $foreignKey
- * @param string $ownerKey
- * @param string $type
- * @param string $relation
- * @return \Illuminate\Database\Eloquent\Relations\MorphTo
- */
- protected function newMorphTo(Builder $query, Model $parent, $foreignKey, $ownerKey, $type, $relation)
- {
- return new MorphTo($query, $parent, $foreignKey, $ownerKey, $type, $relation);
- }
-
- /**
- * Retrieve the actual class name for a given morph class.
- *
- * @param string $class
- * @return string
- */
- public static function getActualClassNameForMorph($class)
- {
- return Arr::get(Relation::morphMap() ?: [], $class, $class);
- }
-
- /**
- * Guess the "belongs to" relationship name.
- *
- * @return string
- */
- protected function guessBelongsToRelation()
- {
- [$one, $two, $caller] = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 3);
-
- return $caller['function'];
- }
-
- /**
- * Define a one-to-many relationship.
- *
- * @param string $related
- * @param string|null $foreignKey
- * @param string|null $localKey
- * @return \Illuminate\Database\Eloquent\Relations\HasMany
- */
- public function hasMany($related, $foreignKey = null, $localKey = null)
- {
- $instance = $this->newRelatedInstance($related);
-
- $foreignKey = $foreignKey ?: $this->getForeignKey();
-
- $localKey = $localKey ?: $this->getKeyName();
-
- return $this->newHasMany(
- $instance->newQuery(), $this, $instance->getTable().'.'.$foreignKey, $localKey
- );
- }
-
- /**
- * Instantiate a new HasMany relationship.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @param \Illuminate\Database\Eloquent\Model $parent
- * @param string $foreignKey
- * @param string $localKey
- * @return \Illuminate\Database\Eloquent\Relations\HasMany
- */
- protected function newHasMany(Builder $query, Model $parent, $foreignKey, $localKey)
- {
- return new HasMany($query, $parent, $foreignKey, $localKey);
- }
-
- /**
- * Define a has-many-through relationship.
- *
- * @param string $related
- * @param string $through
- * @param string|null $firstKey
- * @param string|null $secondKey
- * @param string|null $localKey
- * @param string|null $secondLocalKey
- * @return \Illuminate\Database\Eloquent\Relations\HasManyThrough
- */
- public function hasManyThrough($related, $through, $firstKey = null, $secondKey = null, $localKey = null, $secondLocalKey = null)
- {
- $through = new $through;
-
- $firstKey = $firstKey ?: $this->getForeignKey();
-
- $secondKey = $secondKey ?: $through->getForeignKey();
-
- return $this->newHasManyThrough(
- $this->newRelatedInstance($related)->newQuery(),
- $this,
- $through,
- $firstKey,
- $secondKey,
- $localKey ?: $this->getKeyName(),
- $secondLocalKey ?: $through->getKeyName()
- );
- }
-
- /**
- * Instantiate a new HasManyThrough relationship.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @param \Illuminate\Database\Eloquent\Model $farParent
- * @param \Illuminate\Database\Eloquent\Model $throughParent
- * @param string $firstKey
- * @param string $secondKey
- * @param string $localKey
- * @param string $secondLocalKey
- * @return \Illuminate\Database\Eloquent\Relations\HasManyThrough
- */
- protected function newHasManyThrough(Builder $query, Model $farParent, Model $throughParent, $firstKey, $secondKey, $localKey, $secondLocalKey)
- {
- return new HasManyThrough($query, $farParent, $throughParent, $firstKey, $secondKey, $localKey, $secondLocalKey);
- }
-
- /**
- * Define a polymorphic one-to-many relationship.
- *
- * @param string $related
- * @param string $name
- * @param string|null $type
- * @param string|null $id
- * @param string|null $localKey
- * @return \Illuminate\Database\Eloquent\Relations\MorphMany
- */
- public function morphMany($related, $name, $type = null, $id = null, $localKey = null)
- {
- $instance = $this->newRelatedInstance($related);
-
- // Here we will gather up the morph type and ID for the relationship so that we
- // can properly query the intermediate table of a relation. Finally, we will
- // get the table and create the relationship instances for the developers.
- [$type, $id] = $this->getMorphs($name, $type, $id);
-
- $table = $instance->getTable();
-
- $localKey = $localKey ?: $this->getKeyName();
-
- return $this->newMorphMany($instance->newQuery(), $this, $table.'.'.$type, $table.'.'.$id, $localKey);
- }
-
- /**
- * Instantiate a new MorphMany relationship.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @param \Illuminate\Database\Eloquent\Model $parent
- * @param string $type
- * @param string $id
- * @param string $localKey
- * @return \Illuminate\Database\Eloquent\Relations\MorphMany
- */
- protected function newMorphMany(Builder $query, Model $parent, $type, $id, $localKey)
- {
- return new MorphMany($query, $parent, $type, $id, $localKey);
- }
-
- /**
- * Define a many-to-many relationship.
- *
- * @param string $related
- * @param string|null $table
- * @param string|null $foreignPivotKey
- * @param string|null $relatedPivotKey
- * @param string|null $parentKey
- * @param string|null $relatedKey
- * @param string|null $relation
- * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
- */
- public function belongsToMany($related, $table = null, $foreignPivotKey = null, $relatedPivotKey = null,
- $parentKey = null, $relatedKey = null, $relation = null)
- {
- // If no relationship name was passed, we will pull backtraces to get the
- // name of the calling function. We will use that function name as the
- // title of this relation since that is a great convention to apply.
- if (is_null($relation)) {
- $relation = $this->guessBelongsToManyRelation();
- }
-
- // First, we'll need to determine the foreign key and "other key" for the
- // relationship. Once we have determined the keys we'll make the query
- // instances as well as the relationship instances we need for this.
- $instance = $this->newRelatedInstance($related);
-
- $foreignPivotKey = $foreignPivotKey ?: $this->getForeignKey();
-
- $relatedPivotKey = $relatedPivotKey ?: $instance->getForeignKey();
-
- // If no table name was provided, we can guess it by concatenating the two
- // models using underscores in alphabetical order. The two model names
- // are transformed to snake case from their default CamelCase also.
- if (is_null($table)) {
- $table = $this->joiningTable($related, $instance);
- }
-
- return $this->newBelongsToMany(
- $instance->newQuery(), $this, $table, $foreignPivotKey,
- $relatedPivotKey, $parentKey ?: $this->getKeyName(),
- $relatedKey ?: $instance->getKeyName(), $relation
- );
- }
-
- /**
- * Instantiate a new BelongsToMany relationship.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @param \Illuminate\Database\Eloquent\Model $parent
- * @param string $table
- * @param string $foreignPivotKey
- * @param string $relatedPivotKey
- * @param string $parentKey
- * @param string $relatedKey
- * @param string|null $relationName
- * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
- */
- protected function newBelongsToMany(Builder $query, Model $parent, $table, $foreignPivotKey, $relatedPivotKey,
- $parentKey, $relatedKey, $relationName = null)
- {
- return new BelongsToMany($query, $parent, $table, $foreignPivotKey, $relatedPivotKey, $parentKey, $relatedKey, $relationName);
- }
-
- /**
- * Define a polymorphic many-to-many relationship.
- *
- * @param string $related
- * @param string $name
- * @param string|null $table
- * @param string|null $foreignPivotKey
- * @param string|null $relatedPivotKey
- * @param string|null $parentKey
- * @param string|null $relatedKey
- * @param bool $inverse
- * @return \Illuminate\Database\Eloquent\Relations\MorphToMany
- */
- public function morphToMany($related, $name, $table = null, $foreignPivotKey = null,
- $relatedPivotKey = null, $parentKey = null,
- $relatedKey = null, $inverse = false)
- {
- $caller = $this->guessBelongsToManyRelation();
-
- // First, we will need to determine the foreign key and "other key" for the
- // relationship. Once we have determined the keys we will make the query
- // instances, as well as the relationship instances we need for these.
- $instance = $this->newRelatedInstance($related);
-
- $foreignPivotKey = $foreignPivotKey ?: $name.'_id';
-
- $relatedPivotKey = $relatedPivotKey ?: $instance->getForeignKey();
-
- // Now we're ready to create a new query builder for this related model and
- // the relationship instances for this relation. This relations will set
- // appropriate query constraints then entirely manages the hydrations.
- if (! $table) {
- $words = preg_split('/(_)/u', $name, -1, PREG_SPLIT_DELIM_CAPTURE);
-
- $lastWord = array_pop($words);
-
- $table = implode('', $words).Str::plural($lastWord);
- }
-
- return $this->newMorphToMany(
- $instance->newQuery(), $this, $name, $table,
- $foreignPivotKey, $relatedPivotKey, $parentKey ?: $this->getKeyName(),
- $relatedKey ?: $instance->getKeyName(), $caller, $inverse
- );
- }
-
- /**
- * Instantiate a new MorphToMany relationship.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @param \Illuminate\Database\Eloquent\Model $parent
- * @param string $name
- * @param string $table
- * @param string $foreignPivotKey
- * @param string $relatedPivotKey
- * @param string $parentKey
- * @param string $relatedKey
- * @param string|null $relationName
- * @param bool $inverse
- * @return \Illuminate\Database\Eloquent\Relations\MorphToMany
- */
- protected function newMorphToMany(Builder $query, Model $parent, $name, $table, $foreignPivotKey,
- $relatedPivotKey, $parentKey, $relatedKey,
- $relationName = null, $inverse = false)
- {
- return new MorphToMany($query, $parent, $name, $table, $foreignPivotKey, $relatedPivotKey, $parentKey, $relatedKey,
- $relationName, $inverse);
- }
-
- /**
- * Define a polymorphic, inverse many-to-many relationship.
- *
- * @param string $related
- * @param string $name
- * @param string|null $table
- * @param string|null $foreignPivotKey
- * @param string|null $relatedPivotKey
- * @param string|null $parentKey
- * @param string|null $relatedKey
- * @return \Illuminate\Database\Eloquent\Relations\MorphToMany
- */
- public function morphedByMany($related, $name, $table = null, $foreignPivotKey = null,
- $relatedPivotKey = null, $parentKey = null, $relatedKey = null)
- {
- $foreignPivotKey = $foreignPivotKey ?: $this->getForeignKey();
-
- // For the inverse of the polymorphic many-to-many relations, we will change
- // the way we determine the foreign and other keys, as it is the opposite
- // of the morph-to-many method since we're figuring out these inverses.
- $relatedPivotKey = $relatedPivotKey ?: $name.'_id';
-
- return $this->morphToMany(
- $related, $name, $table, $foreignPivotKey,
- $relatedPivotKey, $parentKey, $relatedKey, true
- );
- }
-
- /**
- * Get the relationship name of the belongsToMany relationship.
- *
- * @return string|null
- */
- protected function guessBelongsToManyRelation()
- {
- $caller = Arr::first(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS), function ($trace) {
- return ! in_array(
- $trace['function'],
- array_merge(static::$manyMethods, ['guessBelongsToManyRelation'])
- );
- });
-
- return ! is_null($caller) ? $caller['function'] : null;
- }
-
- /**
- * Get the joining table name for a many-to-many relation.
- *
- * @param string $related
- * @param \Illuminate\Database\Eloquent\Model|null $instance
- * @return string
- */
- public function joiningTable($related, $instance = null)
- {
- // The joining table name, by convention, is simply the snake cased models
- // sorted alphabetically and concatenated with an underscore, so we can
- // just sort the models and join them together to get the table name.
- $segments = [
- $instance ? $instance->joiningTableSegment()
- : Str::snake(class_basename($related)),
- $this->joiningTableSegment(),
- ];
-
- // Now that we have the model names in an array we can just sort them and
- // use the implode function to join them together with an underscores,
- // which is typically used by convention within the database system.
- sort($segments);
-
- return strtolower(implode('_', $segments));
- }
-
- /**
- * Get this model's half of the intermediate table name for belongsToMany relationships.
- *
- * @return string
- */
- public function joiningTableSegment()
- {
- return Str::snake(class_basename($this));
- }
-
- /**
- * Determine if the model touches a given relation.
- *
- * @param string $relation
- * @return bool
- */
- public function touches($relation)
- {
- return in_array($relation, $this->getTouchedRelations());
- }
-
- /**
- * Touch the owning relations of the model.
- *
- * @return void
- */
- public function touchOwners()
- {
- foreach ($this->getTouchedRelations() as $relation) {
- $this->$relation()->touch();
-
- if ($this->$relation instanceof self) {
- $this->$relation->fireModelEvent('saved', false);
-
- $this->$relation->touchOwners();
- } elseif ($this->$relation instanceof Collection) {
- $this->$relation->each->touchOwners();
- }
- }
- }
-
- /**
- * Get the polymorphic relationship columns.
- *
- * @param string $name
- * @param string $type
- * @param string $id
- * @return array
- */
- protected function getMorphs($name, $type, $id)
- {
- return [$type ?: $name.'_type', $id ?: $name.'_id'];
- }
-
- /**
- * Get the class name for polymorphic relations.
- *
- * @return string
- */
- public function getMorphClass()
- {
- $morphMap = Relation::morphMap();
-
- if (! empty($morphMap) && in_array(static::class, $morphMap)) {
- return array_search(static::class, $morphMap, true);
- }
-
- if (Relation::requiresMorphMap()) {
- throw new ClassMorphViolationException($this);
- }
-
- return static::class;
- }
-
- /**
- * Create a new model instance for a related model.
- *
- * @param string $class
- * @return mixed
- */
- protected function newRelatedInstance($class)
- {
- return tap(new $class, function ($instance) {
- if (! $instance->getConnectionName()) {
- $instance->setConnection($this->connection);
- }
- });
- }
-
- /**
- * Get all the loaded relations for the instance.
- *
- * @return array
- */
- public function getRelations()
- {
- return $this->relations;
- }
-
- /**
- * Get a specified relationship.
- *
- * @param string $relation
- * @return mixed
- */
- public function getRelation($relation)
- {
- return $this->relations[$relation];
- }
-
- /**
- * Determine if the given relation is loaded.
- *
- * @param string $key
- * @return bool
- */
- public function relationLoaded($key)
- {
- return array_key_exists($key, $this->relations);
- }
-
- /**
- * Set the given relationship on the model.
- *
- * @param string $relation
- * @param mixed $value
- * @return $this
- */
- public function setRelation($relation, $value)
- {
- $this->relations[$relation] = $value;
-
- return $this;
- }
-
- /**
- * Unset a loaded relationship.
- *
- * @param string $relation
- * @return $this
- */
- public function unsetRelation($relation)
- {
- unset($this->relations[$relation]);
-
- return $this;
- }
-
- /**
- * Set the entire relations array on the model.
- *
- * @param array $relations
- * @return $this
- */
- public function setRelations(array $relations)
- {
- $this->relations = $relations;
-
- return $this;
- }
-
- /**
- * Duplicate the instance and unset all the loaded relations.
- *
- * @return $this
- */
- public function withoutRelations()
- {
- $model = clone $this;
-
- return $model->unsetRelations();
- }
-
- /**
- * Unset all the loaded relations for the instance.
- *
- * @return $this
- */
- public function unsetRelations()
- {
- $this->relations = [];
-
- return $this;
- }
-
- /**
- * Get the relationships that are touched on save.
- *
- * @return array
- */
- public function getTouchedRelations()
- {
- return $this->touches;
- }
-
- /**
- * Set the relationships that are touched on save.
- *
- * @param array $touches
- * @return $this
- */
- public function setTouchedRelations(array $touches)
- {
- $this->touches = $touches;
-
- return $this;
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Concerns/HasTimestamps.php b/vendor/illuminate/database/Eloquent/Concerns/HasTimestamps.php
deleted file mode 100644
index 13ebd317..00000000
--- a/vendor/illuminate/database/Eloquent/Concerns/HasTimestamps.php
+++ /dev/null
@@ -1,149 +0,0 @@
-usesTimestamps()) {
- return false;
- }
-
- $this->updateTimestamps();
-
- return $this->save();
- }
-
- /**
- * Update the creation and update timestamps.
- *
- * @return void
- */
- public function updateTimestamps()
- {
- $time = $this->freshTimestamp();
-
- $updatedAtColumn = $this->getUpdatedAtColumn();
-
- if (! is_null($updatedAtColumn) && ! $this->isDirty($updatedAtColumn)) {
- $this->setUpdatedAt($time);
- }
-
- $createdAtColumn = $this->getCreatedAtColumn();
-
- if (! $this->exists && ! is_null($createdAtColumn) && ! $this->isDirty($createdAtColumn)) {
- $this->setCreatedAt($time);
- }
- }
-
- /**
- * Set the value of the "created at" attribute.
- *
- * @param mixed $value
- * @return $this
- */
- public function setCreatedAt($value)
- {
- $this->{$this->getCreatedAtColumn()} = $value;
-
- return $this;
- }
-
- /**
- * Set the value of the "updated at" attribute.
- *
- * @param mixed $value
- * @return $this
- */
- public function setUpdatedAt($value)
- {
- $this->{$this->getUpdatedAtColumn()} = $value;
-
- return $this;
- }
-
- /**
- * Get a fresh timestamp for the model.
- *
- * @return \Illuminate\Support\Carbon
- */
- public function freshTimestamp()
- {
- return Date::now();
- }
-
- /**
- * Get a fresh timestamp for the model.
- *
- * @return string
- */
- public function freshTimestampString()
- {
- return $this->fromDateTime($this->freshTimestamp());
- }
-
- /**
- * Determine if the model uses timestamps.
- *
- * @return bool
- */
- public function usesTimestamps()
- {
- return $this->timestamps;
- }
-
- /**
- * Get the name of the "created at" column.
- *
- * @return string|null
- */
- public function getCreatedAtColumn()
- {
- return static::CREATED_AT;
- }
-
- /**
- * Get the name of the "updated at" column.
- *
- * @return string|null
- */
- public function getUpdatedAtColumn()
- {
- return static::UPDATED_AT;
- }
-
- /**
- * Get the fully qualified "created at" column.
- *
- * @return string|null
- */
- public function getQualifiedCreatedAtColumn()
- {
- return $this->qualifyColumn($this->getCreatedAtColumn());
- }
-
- /**
- * Get the fully qualified "updated at" column.
- *
- * @return string|null
- */
- public function getQualifiedUpdatedAtColumn()
- {
- return $this->qualifyColumn($this->getUpdatedAtColumn());
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Concerns/HidesAttributes.php b/vendor/illuminate/database/Eloquent/Concerns/HidesAttributes.php
deleted file mode 100644
index 065d48a8..00000000
--- a/vendor/illuminate/database/Eloquent/Concerns/HidesAttributes.php
+++ /dev/null
@@ -1,126 +0,0 @@
-hidden;
- }
-
- /**
- * Set the hidden attributes for the model.
- *
- * @param array $hidden
- * @return $this
- */
- public function setHidden(array $hidden)
- {
- $this->hidden = $hidden;
-
- return $this;
- }
-
- /**
- * Get the visible attributes for the model.
- *
- * @return array
- */
- public function getVisible()
- {
- return $this->visible;
- }
-
- /**
- * Set the visible attributes for the model.
- *
- * @param array $visible
- * @return $this
- */
- public function setVisible(array $visible)
- {
- $this->visible = $visible;
-
- return $this;
- }
-
- /**
- * Make the given, typically hidden, attributes visible.
- *
- * @param array|string|null $attributes
- * @return $this
- */
- public function makeVisible($attributes)
- {
- $attributes = is_array($attributes) ? $attributes : func_get_args();
-
- $this->hidden = array_diff($this->hidden, $attributes);
-
- if (! empty($this->visible)) {
- $this->visible = array_merge($this->visible, $attributes);
- }
-
- return $this;
- }
-
- /**
- * Make the given, typically hidden, attributes visible if the given truth test passes.
- *
- * @param bool|Closure $condition
- * @param array|string|null $attributes
- * @return $this
- */
- public function makeVisibleIf($condition, $attributes)
- {
- return value($condition, $this) ? $this->makeVisible($attributes) : $this;
- }
-
- /**
- * Make the given, typically visible, attributes hidden.
- *
- * @param array|string|null $attributes
- * @return $this
- */
- public function makeHidden($attributes)
- {
- $this->hidden = array_merge(
- $this->hidden, is_array($attributes) ? $attributes : func_get_args()
- );
-
- return $this;
- }
-
- /**
- * Make the given, typically visible, attributes hidden if the given truth test passes.
- *
- * @param bool|Closure $condition
- * @param array|string|null $attributes
- * @return $this
- */
- public function makeHiddenIf($condition, $attributes)
- {
- return value($condition, $this) ? $this->makeHidden($attributes) : $this;
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Concerns/QueriesRelationships.php b/vendor/illuminate/database/Eloquent/Concerns/QueriesRelationships.php
deleted file mode 100644
index aae3ffb1..00000000
--- a/vendor/illuminate/database/Eloquent/Concerns/QueriesRelationships.php
+++ /dev/null
@@ -1,758 +0,0 @@
-=', $count = 1, $boolean = 'and', Closure $callback = null)
- {
- if (is_string($relation)) {
- if (strpos($relation, '.') !== false) {
- return $this->hasNested($relation, $operator, $count, $boolean, $callback);
- }
-
- $relation = $this->getRelationWithoutConstraints($relation);
- }
-
- if ($relation instanceof MorphTo) {
- return $this->hasMorph($relation, ['*'], $operator, $count, $boolean, $callback);
- }
-
- // If we only need to check for the existence of the relation, then we can optimize
- // the subquery to only run a "where exists" clause instead of this full "count"
- // clause. This will make these queries run much faster compared with a count.
- $method = $this->canUseExistsForExistenceCheck($operator, $count)
- ? 'getRelationExistenceQuery'
- : 'getRelationExistenceCountQuery';
-
- $hasQuery = $relation->{$method}(
- $relation->getRelated()->newQueryWithoutRelationships(), $this
- );
-
- // Next we will call any given callback as an "anonymous" scope so they can get the
- // proper logical grouping of the where clauses if needed by this Eloquent query
- // builder. Then, we will be ready to finalize and return this query instance.
- if ($callback) {
- $hasQuery->callScope($callback);
- }
-
- return $this->addHasWhere(
- $hasQuery, $relation, $operator, $count, $boolean
- );
- }
-
- /**
- * Add nested relationship count / exists conditions to the query.
- *
- * Sets up recursive call to whereHas until we finish the nested relation.
- *
- * @param string $relations
- * @param string $operator
- * @param int $count
- * @param string $boolean
- * @param \Closure|null $callback
- * @return \Illuminate\Database\Eloquent\Builder|static
- */
- protected function hasNested($relations, $operator = '>=', $count = 1, $boolean = 'and', $callback = null)
- {
- $relations = explode('.', $relations);
-
- $doesntHave = $operator === '<' && $count === 1;
-
- if ($doesntHave) {
- $operator = '>=';
- $count = 1;
- }
-
- $closure = function ($q) use (&$closure, &$relations, $operator, $count, $callback) {
- // In order to nest "has", we need to add count relation constraints on the
- // callback Closure. We'll do this by simply passing the Closure its own
- // reference to itself so it calls itself recursively on each segment.
- count($relations) > 1
- ? $q->whereHas(array_shift($relations), $closure)
- : $q->has(array_shift($relations), $operator, $count, 'and', $callback);
- };
-
- return $this->has(array_shift($relations), $doesntHave ? '<' : '>=', 1, $boolean, $closure);
- }
-
- /**
- * Add a relationship count / exists condition to the query with an "or".
- *
- * @param string $relation
- * @param string $operator
- * @param int $count
- * @return \Illuminate\Database\Eloquent\Builder|static
- */
- public function orHas($relation, $operator = '>=', $count = 1)
- {
- return $this->has($relation, $operator, $count, 'or');
- }
-
- /**
- * Add a relationship count / exists condition to the query.
- *
- * @param string $relation
- * @param string $boolean
- * @param \Closure|null $callback
- * @return \Illuminate\Database\Eloquent\Builder|static
- */
- public function doesntHave($relation, $boolean = 'and', Closure $callback = null)
- {
- return $this->has($relation, '<', 1, $boolean, $callback);
- }
-
- /**
- * Add a relationship count / exists condition to the query with an "or".
- *
- * @param string $relation
- * @return \Illuminate\Database\Eloquent\Builder|static
- */
- public function orDoesntHave($relation)
- {
- return $this->doesntHave($relation, 'or');
- }
-
- /**
- * Add a relationship count / exists condition to the query with where clauses.
- *
- * @param string $relation
- * @param \Closure|null $callback
- * @param string $operator
- * @param int $count
- * @return \Illuminate\Database\Eloquent\Builder|static
- */
- public function whereHas($relation, Closure $callback = null, $operator = '>=', $count = 1)
- {
- return $this->has($relation, $operator, $count, 'and', $callback);
- }
-
- /**
- * Add a relationship count / exists condition to the query with where clauses and an "or".
- *
- * @param string $relation
- * @param \Closure|null $callback
- * @param string $operator
- * @param int $count
- * @return \Illuminate\Database\Eloquent\Builder|static
- */
- public function orWhereHas($relation, Closure $callback = null, $operator = '>=', $count = 1)
- {
- return $this->has($relation, $operator, $count, 'or', $callback);
- }
-
- /**
- * Add a relationship count / exists condition to the query with where clauses.
- *
- * @param string $relation
- * @param \Closure|null $callback
- * @return \Illuminate\Database\Eloquent\Builder|static
- */
- public function whereDoesntHave($relation, Closure $callback = null)
- {
- return $this->doesntHave($relation, 'and', $callback);
- }
-
- /**
- * Add a relationship count / exists condition to the query with where clauses and an "or".
- *
- * @param string $relation
- * @param \Closure|null $callback
- * @return \Illuminate\Database\Eloquent\Builder|static
- */
- public function orWhereDoesntHave($relation, Closure $callback = null)
- {
- return $this->doesntHave($relation, 'or', $callback);
- }
-
- /**
- * Add a polymorphic relationship count / exists condition to the query.
- *
- * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation
- * @param string|array $types
- * @param string $operator
- * @param int $count
- * @param string $boolean
- * @param \Closure|null $callback
- * @return \Illuminate\Database\Eloquent\Builder|static
- */
- public function hasMorph($relation, $types, $operator = '>=', $count = 1, $boolean = 'and', Closure $callback = null)
- {
- if (is_string($relation)) {
- $relation = $this->getRelationWithoutConstraints($relation);
- }
-
- $types = (array) $types;
-
- if ($types === ['*']) {
- $types = $this->model->newModelQuery()->distinct()->pluck($relation->getMorphType())->filter()->all();
- }
-
- foreach ($types as &$type) {
- $type = Relation::getMorphedModel($type) ?? $type;
- }
-
- return $this->where(function ($query) use ($relation, $callback, $operator, $count, $types) {
- foreach ($types as $type) {
- $query->orWhere(function ($query) use ($relation, $callback, $operator, $count, $type) {
- $belongsTo = $this->getBelongsToRelation($relation, $type);
-
- if ($callback) {
- $callback = function ($query) use ($callback, $type) {
- return $callback($query, $type);
- };
- }
-
- $query->where($this->qualifyColumn($relation->getMorphType()), '=', (new $type)->getMorphClass())
- ->whereHas($belongsTo, $callback, $operator, $count);
- });
- }
- }, null, null, $boolean);
- }
-
- /**
- * Get the BelongsTo relationship for a single polymorphic type.
- *
- * @param \Illuminate\Database\Eloquent\Relations\MorphTo $relation
- * @param string $type
- * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
- */
- protected function getBelongsToRelation(MorphTo $relation, $type)
- {
- $belongsTo = Relation::noConstraints(function () use ($relation, $type) {
- return $this->model->belongsTo(
- $type,
- $relation->getForeignKeyName(),
- $relation->getOwnerKeyName()
- );
- });
-
- $belongsTo->getQuery()->mergeConstraintsFrom($relation->getQuery());
-
- return $belongsTo;
- }
-
- /**
- * Add a polymorphic relationship count / exists condition to the query with an "or".
- *
- * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation
- * @param string|array $types
- * @param string $operator
- * @param int $count
- * @return \Illuminate\Database\Eloquent\Builder|static
- */
- public function orHasMorph($relation, $types, $operator = '>=', $count = 1)
- {
- return $this->hasMorph($relation, $types, $operator, $count, 'or');
- }
-
- /**
- * Add a polymorphic relationship count / exists condition to the query.
- *
- * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation
- * @param string|array $types
- * @param string $boolean
- * @param \Closure|null $callback
- * @return \Illuminate\Database\Eloquent\Builder|static
- */
- public function doesntHaveMorph($relation, $types, $boolean = 'and', Closure $callback = null)
- {
- return $this->hasMorph($relation, $types, '<', 1, $boolean, $callback);
- }
-
- /**
- * Add a polymorphic relationship count / exists condition to the query with an "or".
- *
- * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation
- * @param string|array $types
- * @return \Illuminate\Database\Eloquent\Builder|static
- */
- public function orDoesntHaveMorph($relation, $types)
- {
- return $this->doesntHaveMorph($relation, $types, 'or');
- }
-
- /**
- * Add a polymorphic relationship count / exists condition to the query with where clauses.
- *
- * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation
- * @param string|array $types
- * @param \Closure|null $callback
- * @param string $operator
- * @param int $count
- * @return \Illuminate\Database\Eloquent\Builder|static
- */
- public function whereHasMorph($relation, $types, Closure $callback = null, $operator = '>=', $count = 1)
- {
- return $this->hasMorph($relation, $types, $operator, $count, 'and', $callback);
- }
-
- /**
- * Add a polymorphic relationship count / exists condition to the query with where clauses and an "or".
- *
- * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation
- * @param string|array $types
- * @param \Closure|null $callback
- * @param string $operator
- * @param int $count
- * @return \Illuminate\Database\Eloquent\Builder|static
- */
- public function orWhereHasMorph($relation, $types, Closure $callback = null, $operator = '>=', $count = 1)
- {
- return $this->hasMorph($relation, $types, $operator, $count, 'or', $callback);
- }
-
- /**
- * Add a polymorphic relationship count / exists condition to the query with where clauses.
- *
- * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation
- * @param string|array $types
- * @param \Closure|null $callback
- * @return \Illuminate\Database\Eloquent\Builder|static
- */
- public function whereDoesntHaveMorph($relation, $types, Closure $callback = null)
- {
- return $this->doesntHaveMorph($relation, $types, 'and', $callback);
- }
-
- /**
- * Add a polymorphic relationship count / exists condition to the query with where clauses and an "or".
- *
- * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation
- * @param string|array $types
- * @param \Closure|null $callback
- * @return \Illuminate\Database\Eloquent\Builder|static
- */
- public function orWhereDoesntHaveMorph($relation, $types, Closure $callback = null)
- {
- return $this->doesntHaveMorph($relation, $types, 'or', $callback);
- }
-
- /**
- * Add a basic where clause to a relationship query.
- *
- * @param string $relation
- * @param \Closure|string|array|\Illuminate\Database\Query\Expression $column
- * @param mixed $operator
- * @param mixed $value
- * @return \Illuminate\Database\Eloquent\Builder|static
- */
- public function whereRelation($relation, $column, $operator = null, $value = null)
- {
- return $this->whereHas($relation, function ($query) use ($column, $operator, $value) {
- $query->where($column, $operator, $value);
- });
- }
-
- /**
- * Add an "or where" clause to a relationship query.
- *
- * @param string $relation
- * @param \Closure|string|array|\Illuminate\Database\Query\Expression $column
- * @param mixed $operator
- * @param mixed $value
- * @return \Illuminate\Database\Eloquent\Builder|static
- */
- public function orWhereRelation($relation, $column, $operator = null, $value = null)
- {
- return $this->orWhereHas($relation, function ($query) use ($column, $operator, $value) {
- $query->where($column, $operator, $value);
- });
- }
-
- /**
- * Add a polymorphic relationship condition to the query with a where clause.
- *
- * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation
- * @param string|array $types
- * @param \Closure|string|array|\Illuminate\Database\Query\Expression $column
- * @param mixed $operator
- * @param mixed $value
- * @return \Illuminate\Database\Eloquent\Builder|static
- */
- public function whereMorphRelation($relation, $types, $column, $operator = null, $value = null)
- {
- return $this->whereHasMorph($relation, $types, function ($query) use ($column, $operator, $value) {
- $query->where($column, $operator, $value);
- });
- }
-
- /**
- * Add a polymorphic relationship condition to the query with an "or where" clause.
- *
- * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation
- * @param string|array $types
- * @param \Closure|string|array|\Illuminate\Database\Query\Expression $column
- * @param mixed $operator
- * @param mixed $value
- * @return \Illuminate\Database\Eloquent\Builder|static
- */
- public function orWhereMorphRelation($relation, $types, $column, $operator = null, $value = null)
- {
- return $this->orWhereHasMorph($relation, $types, function ($query) use ($column, $operator, $value) {
- $query->where($column, $operator, $value);
- });
- }
-
- /**
- * Add a morph-to relationship condition to the query.
- *
- * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation
- * @param \Illuminate\Database\Eloquent\Model|string $model
- * @return \Illuminate\Database\Eloquent\Builder|static
- */
- public function whereMorphedTo($relation, $model, $boolean = 'and')
- {
- if (is_string($relation)) {
- $relation = $this->getRelationWithoutConstraints($relation);
- }
-
- if (is_string($model)) {
- $morphMap = Relation::morphMap();
-
- if (! empty($morphMap) && in_array($model, $morphMap)) {
- $model = array_search($model, $morphMap, true);
- }
-
- return $this->where($relation->getMorphType(), $model, null, $boolean);
- }
-
- return $this->where(function ($query) use ($relation, $model) {
- $query->where($relation->getMorphType(), $model->getMorphClass())
- ->where($relation->getForeignKeyName(), $model->getKey());
- }, null, null, $boolean);
- }
-
- /**
- * Add a morph-to relationship condition to the query with an "or where" clause.
- *
- * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation
- * @param \Illuminate\Database\Eloquent\Model|string $model
- * @return \Illuminate\Database\Eloquent\Builder|static
- */
- public function orWhereMorphedTo($relation, $model)
- {
- return $this->whereMorphedTo($relation, $model, 'or');
- }
-
- /**
- * Add a "belongs to" relationship where clause to the query.
- *
- * @param \Illuminate\Database\Eloquent\Model $related
- * @param string $relationship
- * @param string $boolean
- * @return $this
- *
- * @throws \Exception
- */
- public function whereBelongsTo($related, $relationshipName = null, $boolean = 'and')
- {
- if ($relationshipName === null) {
- $relationshipName = Str::camel(class_basename($related));
- }
-
- try {
- $relationship = $this->model->{$relationshipName}();
- } catch (BadMethodCallException $exception) {
- throw RelationNotFoundException::make($this->model, $relationshipName);
- }
-
- if (! $relationship instanceof BelongsTo) {
- throw RelationNotFoundException::make($this->model, $relationshipName, BelongsTo::class);
- }
-
- $this->where(
- $relationship->getQualifiedForeignKeyName(),
- '=',
- $related->getAttributeValue($relationship->getOwnerKeyName()),
- $boolean,
- );
-
- return $this;
- }
-
- /**
- * Add an "BelongsTo" relationship with an "or where" clause to the query.
- *
- * @param \Illuminate\Database\Eloquent\Model $related
- * @param string $relationship
- * @return $this
- *
- * @throws \Exception
- */
- public function orWhereBelongsTo($related, $relationshipName = null)
- {
- return $this->whereBelongsTo($related, $relationshipName, 'or');
- }
-
- /**
- * Add subselect queries to include an aggregate value for a relationship.
- *
- * @param mixed $relations
- * @param string $column
- * @param string $function
- * @return $this
- */
- public function withAggregate($relations, $column, $function = null)
- {
- if (empty($relations)) {
- return $this;
- }
-
- if (is_null($this->query->columns)) {
- $this->query->select([$this->query->from.'.*']);
- }
-
- $relations = is_array($relations) ? $relations : [$relations];
-
- foreach ($this->parseWithRelations($relations) as $name => $constraints) {
- // First we will determine if the name has been aliased using an "as" clause on the name
- // and if it has we will extract the actual relationship name and the desired name of
- // the resulting column. This allows multiple aggregates on the same relationships.
- $segments = explode(' ', $name);
-
- unset($alias);
-
- if (count($segments) === 3 && Str::lower($segments[1]) === 'as') {
- [$name, $alias] = [$segments[0], $segments[2]];
- }
-
- $relation = $this->getRelationWithoutConstraints($name);
-
- if ($function) {
- $hashedColumn = $this->getQuery()->from === $relation->getQuery()->getQuery()->from
- ? "{$relation->getRelationCountHash(false)}.$column"
- : $column;
-
- $wrappedColumn = $this->getQuery()->getGrammar()->wrap(
- $column === '*' ? $column : $relation->getRelated()->qualifyColumn($hashedColumn)
- );
-
- $expression = $function === 'exists' ? $wrappedColumn : sprintf('%s(%s)', $function, $wrappedColumn);
- } else {
- $expression = $column;
- }
-
- // Here, we will grab the relationship sub-query and prepare to add it to the main query
- // as a sub-select. First, we'll get the "has" query and use that to get the relation
- // sub-query. We'll format this relationship name and append this column if needed.
- $query = $relation->getRelationExistenceQuery(
- $relation->getRelated()->newQuery(), $this, new Expression($expression)
- )->setBindings([], 'select');
-
- $query->callScope($constraints);
-
- $query = $query->mergeConstraintsFrom($relation->getQuery())->toBase();
-
- // If the query contains certain elements like orderings / more than one column selected
- // then we will remove those elements from the query so that it will execute properly
- // when given to the database. Otherwise, we may receive SQL errors or poor syntax.
- $query->orders = null;
- $query->setBindings([], 'order');
-
- if (count($query->columns) > 1) {
- $query->columns = [$query->columns[0]];
- $query->bindings['select'] = [];
- }
-
- // Finally, we will make the proper column alias to the query and run this sub-select on
- // the query builder. Then, we will return the builder instance back to the developer
- // for further constraint chaining that needs to take place on the query as needed.
- $alias = $alias ?? Str::snake(
- preg_replace('/[^[:alnum:][:space:]_]/u', '', "$name $function $column")
- );
-
- if ($function === 'exists') {
- $this->selectRaw(
- sprintf('exists(%s) as %s', $query->toSql(), $this->getQuery()->grammar->wrap($alias)),
- $query->getBindings()
- )->withCasts([$alias => 'bool']);
- } else {
- $this->selectSub(
- $function ? $query : $query->limit(1),
- $alias
- );
- }
- }
-
- return $this;
- }
-
- /**
- * Add subselect queries to count the relations.
- *
- * @param mixed $relations
- * @return $this
- */
- public function withCount($relations)
- {
- return $this->withAggregate(is_array($relations) ? $relations : func_get_args(), '*', 'count');
- }
-
- /**
- * Add subselect queries to include the max of the relation's column.
- *
- * @param string|array $relation
- * @param string $column
- * @return $this
- */
- public function withMax($relation, $column)
- {
- return $this->withAggregate($relation, $column, 'max');
- }
-
- /**
- * Add subselect queries to include the min of the relation's column.
- *
- * @param string|array $relation
- * @param string $column
- * @return $this
- */
- public function withMin($relation, $column)
- {
- return $this->withAggregate($relation, $column, 'min');
- }
-
- /**
- * Add subselect queries to include the sum of the relation's column.
- *
- * @param string|array $relation
- * @param string $column
- * @return $this
- */
- public function withSum($relation, $column)
- {
- return $this->withAggregate($relation, $column, 'sum');
- }
-
- /**
- * Add subselect queries to include the average of the relation's column.
- *
- * @param string|array $relation
- * @param string $column
- * @return $this
- */
- public function withAvg($relation, $column)
- {
- return $this->withAggregate($relation, $column, 'avg');
- }
-
- /**
- * Add subselect queries to include the existence of related models.
- *
- * @param string|array $relation
- * @return $this
- */
- public function withExists($relation)
- {
- return $this->withAggregate($relation, '*', 'exists');
- }
-
- /**
- * Add the "has" condition where clause to the query.
- *
- * @param \Illuminate\Database\Eloquent\Builder $hasQuery
- * @param \Illuminate\Database\Eloquent\Relations\Relation $relation
- * @param string $operator
- * @param int $count
- * @param string $boolean
- * @return \Illuminate\Database\Eloquent\Builder|static
- */
- protected function addHasWhere(Builder $hasQuery, Relation $relation, $operator, $count, $boolean)
- {
- $hasQuery->mergeConstraintsFrom($relation->getQuery());
-
- return $this->canUseExistsForExistenceCheck($operator, $count)
- ? $this->addWhereExistsQuery($hasQuery->toBase(), $boolean, $operator === '<' && $count === 1)
- : $this->addWhereCountQuery($hasQuery->toBase(), $operator, $count, $boolean);
- }
-
- /**
- * Merge the where constraints from another query to the current query.
- *
- * @param \Illuminate\Database\Eloquent\Builder $from
- * @return \Illuminate\Database\Eloquent\Builder|static
- */
- public function mergeConstraintsFrom(Builder $from)
- {
- $whereBindings = $from->getQuery()->getRawBindings()['where'] ?? [];
-
- // Here we have some other query that we want to merge the where constraints from. We will
- // copy over any where constraints on the query as well as remove any global scopes the
- // query might have removed. Then we will return ourselves with the finished merging.
- return $this->withoutGlobalScopes(
- $from->removedScopes()
- )->mergeWheres(
- $from->getQuery()->wheres, $whereBindings
- );
- }
-
- /**
- * Add a sub-query count clause to this query.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param string $operator
- * @param int $count
- * @param string $boolean
- * @return $this
- */
- protected function addWhereCountQuery(QueryBuilder $query, $operator = '>=', $count = 1, $boolean = 'and')
- {
- $this->query->addBinding($query->getBindings(), 'where');
-
- return $this->where(
- new Expression('('.$query->toSql().')'),
- $operator,
- is_numeric($count) ? new Expression($count) : $count,
- $boolean
- );
- }
-
- /**
- * Get the "has relation" base query instance.
- *
- * @param string $relation
- * @return \Illuminate\Database\Eloquent\Relations\Relation
- */
- protected function getRelationWithoutConstraints($relation)
- {
- return Relation::noConstraints(function () use ($relation) {
- return $this->getModel()->{$relation}();
- });
- }
-
- /**
- * Check if we can run an "exists" query to optimize performance.
- *
- * @param string $operator
- * @param int $count
- * @return bool
- */
- protected function canUseExistsForExistenceCheck($operator, $count)
- {
- return ($operator === '>=' || $operator === '<') && $count === 1;
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Factories/BelongsToManyRelationship.php b/vendor/illuminate/database/Eloquent/Factories/BelongsToManyRelationship.php
deleted file mode 100644
index e0c42c4c..00000000
--- a/vendor/illuminate/database/Eloquent/Factories/BelongsToManyRelationship.php
+++ /dev/null
@@ -1,61 +0,0 @@
-factory = $factory;
- $this->pivot = $pivot;
- $this->relationship = $relationship;
- }
-
- /**
- * Create the attached relationship for the given model.
- *
- * @param \Illuminate\Database\Eloquent\Model $model
- * @return void
- */
- public function createFor(Model $model)
- {
- Collection::wrap($this->factory instanceof Factory ? $this->factory->create([], $model) : $this->factory)->each(function ($attachable) use ($model) {
- $model->{$this->relationship}()->attach(
- $attachable,
- is_callable($this->pivot) ? call_user_func($this->pivot, $model) : $this->pivot
- );
- });
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Factories/BelongsToRelationship.php b/vendor/illuminate/database/Eloquent/Factories/BelongsToRelationship.php
deleted file mode 100644
index 55747fdc..00000000
--- a/vendor/illuminate/database/Eloquent/Factories/BelongsToRelationship.php
+++ /dev/null
@@ -1,80 +0,0 @@
-factory = $factory;
- $this->relationship = $relationship;
- }
-
- /**
- * Get the parent model attributes and resolvers for the given child model.
- *
- * @param \Illuminate\Database\Eloquent\Model $model
- * @return array
- */
- public function attributesFor(Model $model)
- {
- $relationship = $model->{$this->relationship}();
-
- return $relationship instanceof MorphTo ? [
- $relationship->getMorphType() => $this->factory instanceof Factory ? $this->factory->newModel()->getMorphClass() : $this->factory->getMorphClass(),
- $relationship->getForeignKeyName() => $this->resolver($relationship->getOwnerKeyName()),
- ] : [
- $relationship->getForeignKeyName() => $this->resolver($relationship->getOwnerKeyName()),
- ];
- }
-
- /**
- * Get the deferred resolver for this relationship's parent ID.
- *
- * @param string|null $key
- * @return \Closure
- */
- protected function resolver($key)
- {
- return function () use ($key) {
- if (! $this->resolved) {
- $instance = $this->factory instanceof Factory ? $this->factory->create() : $this->factory;
-
- return $this->resolved = $key ? $instance->{$key} : $instance->getKey();
- }
-
- return $this->resolved;
- };
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Factories/Factory.php b/vendor/illuminate/database/Eloquent/Factories/Factory.php
deleted file mode 100644
index 9bdce1c7..00000000
--- a/vendor/illuminate/database/Eloquent/Factories/Factory.php
+++ /dev/null
@@ -1,821 +0,0 @@
-count = $count;
- $this->states = $states ?: new Collection;
- $this->has = $has ?: new Collection;
- $this->for = $for ?: new Collection;
- $this->afterMaking = $afterMaking ?: new Collection;
- $this->afterCreating = $afterCreating ?: new Collection;
- $this->connection = $connection;
- $this->faker = $this->withFaker();
- }
-
- /**
- * Define the model's default state.
- *
- * @return array
- */
- abstract public function definition();
-
- /**
- * Get a new factory instance for the given attributes.
- *
- * @param callable|array $attributes
- * @return static
- */
- public static function new($attributes = [])
- {
- return (new static)->state($attributes)->configure();
- }
-
- /**
- * Get a new factory instance for the given number of models.
- *
- * @param int $count
- * @return static
- */
- public static function times(int $count)
- {
- return static::new()->count($count);
- }
-
- /**
- * Configure the factory.
- *
- * @return $this
- */
- public function configure()
- {
- return $this;
- }
-
- /**
- * Get the raw attributes generated by the factory.
- *
- * @param array $attributes
- * @param \Illuminate\Database\Eloquent\Model|null $parent
- * @return array
- */
- public function raw($attributes = [], ?Model $parent = null)
- {
- if ($this->count === null) {
- return $this->state($attributes)->getExpandedAttributes($parent);
- }
-
- return array_map(function () use ($attributes, $parent) {
- return $this->state($attributes)->getExpandedAttributes($parent);
- }, range(1, $this->count));
- }
-
- /**
- * Create a single model and persist it to the database.
- *
- * @param array $attributes
- * @return \Illuminate\Database\Eloquent\Model
- */
- public function createOne($attributes = [])
- {
- return $this->count(null)->create($attributes);
- }
-
- /**
- * Create a single model and persist it to the database.
- *
- * @param array $attributes
- * @return \Illuminate\Database\Eloquent\Model
- */
- public function createOneQuietly($attributes = [])
- {
- return $this->count(null)->createQuietly($attributes);
- }
-
- /**
- * Create a collection of models and persist them to the database.
- *
- * @param iterable $records
- * @return \Illuminate\Database\Eloquent\Collection
- */
- public function createMany(iterable $records)
- {
- return new EloquentCollection(
- collect($records)->map(function ($record) {
- return $this->state($record)->create();
- })
- );
- }
-
- /**
- * Create a collection of models and persist them to the database.
- *
- * @param iterable $records
- * @return \Illuminate\Database\Eloquent\Collection
- */
- public function createManyQuietly(iterable $records)
- {
- return Model::withoutEvents(function () use ($records) {
- return $this->createMany($records);
- });
- }
-
- /**
- * Create a collection of models and persist them to the database.
- *
- * @param array $attributes
- * @param \Illuminate\Database\Eloquent\Model|null $parent
- * @return \Illuminate\Database\Eloquent\Collection|\Illuminate\Database\Eloquent\Model
- */
- public function create($attributes = [], ?Model $parent = null)
- {
- if (! empty($attributes)) {
- return $this->state($attributes)->create([], $parent);
- }
-
- $results = $this->make($attributes, $parent);
-
- if ($results instanceof Model) {
- $this->store(collect([$results]));
-
- $this->callAfterCreating(collect([$results]), $parent);
- } else {
- $this->store($results);
-
- $this->callAfterCreating($results, $parent);
- }
-
- return $results;
- }
-
- /**
- * Create a collection of models and persist them to the database.
- *
- * @param array $attributes
- * @param \Illuminate\Database\Eloquent\Model|null $parent
- * @return \Illuminate\Database\Eloquent\Collection|\Illuminate\Database\Eloquent\Model
- */
- public function createQuietly($attributes = [], ?Model $parent = null)
- {
- return Model::withoutEvents(function () use ($attributes, $parent) {
- return $this->create($attributes, $parent);
- });
- }
-
- /**
- * Create a callback that persists a model in the database when invoked.
- *
- * @param array $attributes
- * @param \Illuminate\Database\Eloquent\Model|null $parent
- * @return \Closure
- */
- public function lazy(array $attributes = [], ?Model $parent = null)
- {
- return function () use ($attributes, $parent) {
- return $this->create($attributes, $parent);
- };
- }
-
- /**
- * Set the connection name on the results and store them.
- *
- * @param \Illuminate\Support\Collection $results
- * @return void
- */
- protected function store(Collection $results)
- {
- $results->each(function ($model) {
- if (! isset($this->connection)) {
- $model->setConnection($model->newQueryWithoutScopes()->getConnection()->getName());
- }
-
- $model->save();
-
- $this->createChildren($model);
- });
- }
-
- /**
- * Create the children for the given model.
- *
- * @param \Illuminate\Database\Eloquent\Model $model
- * @return void
- */
- protected function createChildren(Model $model)
- {
- Model::unguarded(function () use ($model) {
- $this->has->each(function ($has) use ($model) {
- $has->createFor($model);
- });
- });
- }
-
- /**
- * Make a single instance of the model.
- *
- * @param callable|array $attributes
- * @return \Illuminate\Database\Eloquent\Model
- */
- public function makeOne($attributes = [])
- {
- return $this->count(null)->make($attributes);
- }
-
- /**
- * Create a collection of models.
- *
- * @param array $attributes
- * @param \Illuminate\Database\Eloquent\Model|null $parent
- * @return \Illuminate\Database\Eloquent\Collection|\Illuminate\Database\Eloquent\Model
- */
- public function make($attributes = [], ?Model $parent = null)
- {
- if (! empty($attributes)) {
- return $this->state($attributes)->make([], $parent);
- }
-
- if ($this->count === null) {
- return tap($this->makeInstance($parent), function ($instance) {
- $this->callAfterMaking(collect([$instance]));
- });
- }
-
- if ($this->count < 1) {
- return $this->newModel()->newCollection();
- }
-
- $instances = $this->newModel()->newCollection(array_map(function () use ($parent) {
- return $this->makeInstance($parent);
- }, range(1, $this->count)));
-
- $this->callAfterMaking($instances);
-
- return $instances;
- }
-
- /**
- * Make an instance of the model with the given attributes.
- *
- * @param \Illuminate\Database\Eloquent\Model|null $parent
- * @return \Illuminate\Database\Eloquent\Model
- */
- protected function makeInstance(?Model $parent)
- {
- return Model::unguarded(function () use ($parent) {
- return tap($this->newModel($this->getExpandedAttributes($parent)), function ($instance) {
- if (isset($this->connection)) {
- $instance->setConnection($this->connection);
- }
- });
- });
- }
-
- /**
- * Get a raw attributes array for the model.
- *
- * @param \Illuminate\Database\Eloquent\Model|null $parent
- * @return mixed
- */
- protected function getExpandedAttributes(?Model $parent)
- {
- return $this->expandAttributes($this->getRawAttributes($parent));
- }
-
- /**
- * Get the raw attributes for the model as an array.
- *
- * @param \Illuminate\Database\Eloquent\Model|null $parent
- * @return array
- */
- protected function getRawAttributes(?Model $parent)
- {
- return $this->states->pipe(function ($states) {
- return $this->for->isEmpty() ? $states : new Collection(array_merge([function () {
- return $this->parentResolvers();
- }], $states->all()));
- })->reduce(function ($carry, $state) use ($parent) {
- if ($state instanceof Closure) {
- $state = $state->bindTo($this);
- }
-
- return array_merge($carry, $state($carry, $parent));
- }, $this->definition());
- }
-
- /**
- * Create the parent relationship resolvers (as deferred Closures).
- *
- * @return array
- */
- protected function parentResolvers()
- {
- $model = $this->newModel();
-
- return $this->for->map(function (BelongsToRelationship $for) use ($model) {
- return $for->attributesFor($model);
- })->collapse()->all();
- }
-
- /**
- * Expand all attributes to their underlying values.
- *
- * @param array $definition
- * @return array
- */
- protected function expandAttributes(array $definition)
- {
- return collect($definition)->map(function ($attribute, $key) use (&$definition) {
- if (is_callable($attribute) && ! is_string($attribute) && ! is_array($attribute)) {
- $attribute = $attribute($definition);
- }
-
- if ($attribute instanceof self) {
- $attribute = $attribute->create()->getKey();
- } elseif ($attribute instanceof Model) {
- $attribute = $attribute->getKey();
- }
-
- $definition[$key] = $attribute;
-
- return $attribute;
- })->all();
- }
-
- /**
- * Add a new state transformation to the model definition.
- *
- * @param callable|array $state
- * @return static
- */
- public function state($state)
- {
- return $this->newInstance([
- 'states' => $this->states->concat([
- is_callable($state) ? $state : function () use ($state) {
- return $state;
- },
- ]),
- ]);
- }
-
- /**
- * Add a new sequenced state transformation to the model definition.
- *
- * @param array $sequence
- * @return static
- */
- public function sequence(...$sequence)
- {
- return $this->state(new Sequence(...$sequence));
- }
-
- /**
- * Define a child relationship for the model.
- *
- * @param \Illuminate\Database\Eloquent\Factories\Factory $factory
- * @param string|null $relationship
- * @return static
- */
- public function has(self $factory, $relationship = null)
- {
- return $this->newInstance([
- 'has' => $this->has->concat([new Relationship(
- $factory, $relationship ?: $this->guessRelationship($factory->modelName())
- )]),
- ]);
- }
-
- /**
- * Attempt to guess the relationship name for a "has" relationship.
- *
- * @param string $related
- * @return string
- */
- protected function guessRelationship(string $related)
- {
- $guess = Str::camel(Str::plural(class_basename($related)));
-
- return method_exists($this->modelName(), $guess) ? $guess : Str::singular($guess);
- }
-
- /**
- * Define an attached relationship for the model.
- *
- * @param \Illuminate\Database\Eloquent\Factories\Factory|\Illuminate\Support\Collection|\Illuminate\Database\Eloquent\Model $factory
- * @param callable|array $pivot
- * @param string|null $relationship
- * @return static
- */
- public function hasAttached($factory, $pivot = [], $relationship = null)
- {
- return $this->newInstance([
- 'has' => $this->has->concat([new BelongsToManyRelationship(
- $factory,
- $pivot,
- $relationship ?: Str::camel(Str::plural(class_basename(
- $factory instanceof Factory
- ? $factory->modelName()
- : Collection::wrap($factory)->first()
- )))
- )]),
- ]);
- }
-
- /**
- * Define a parent relationship for the model.
- *
- * @param \Illuminate\Database\Eloquent\Factories\Factory|\Illuminate\Database\Eloquent\Model $factory
- * @param string|null $relationship
- * @return static
- */
- public function for($factory, $relationship = null)
- {
- return $this->newInstance(['for' => $this->for->concat([new BelongsToRelationship(
- $factory,
- $relationship ?: Str::camel(class_basename(
- $factory instanceof Factory ? $factory->modelName() : $factory
- ))
- )])]);
- }
-
- /**
- * Add a new "after making" callback to the model definition.
- *
- * @param \Closure $callback
- * @return static
- */
- public function afterMaking(Closure $callback)
- {
- return $this->newInstance(['afterMaking' => $this->afterMaking->concat([$callback])]);
- }
-
- /**
- * Add a new "after creating" callback to the model definition.
- *
- * @param \Closure $callback
- * @return static
- */
- public function afterCreating(Closure $callback)
- {
- return $this->newInstance(['afterCreating' => $this->afterCreating->concat([$callback])]);
- }
-
- /**
- * Call the "after making" callbacks for the given model instances.
- *
- * @param \Illuminate\Support\Collection $instances
- * @return void
- */
- protected function callAfterMaking(Collection $instances)
- {
- $instances->each(function ($model) {
- $this->afterMaking->each(function ($callback) use ($model) {
- $callback($model);
- });
- });
- }
-
- /**
- * Call the "after creating" callbacks for the given model instances.
- *
- * @param \Illuminate\Support\Collection $instances
- * @param \Illuminate\Database\Eloquent\Model|null $parent
- * @return void
- */
- protected function callAfterCreating(Collection $instances, ?Model $parent = null)
- {
- $instances->each(function ($model) use ($parent) {
- $this->afterCreating->each(function ($callback) use ($model, $parent) {
- $callback($model, $parent);
- });
- });
- }
-
- /**
- * Specify how many models should be generated.
- *
- * @param int|null $count
- * @return static
- */
- public function count(?int $count)
- {
- return $this->newInstance(['count' => $count]);
- }
-
- /**
- * Specify the database connection that should be used to generate models.
- *
- * @param string $connection
- * @return static
- */
- public function connection(string $connection)
- {
- return $this->newInstance(['connection' => $connection]);
- }
-
- /**
- * Create a new instance of the factory builder with the given mutated properties.
- *
- * @param array $arguments
- * @return static
- */
- protected function newInstance(array $arguments = [])
- {
- return new static(...array_values(array_merge([
- 'count' => $this->count,
- 'states' => $this->states,
- 'has' => $this->has,
- 'for' => $this->for,
- 'afterMaking' => $this->afterMaking,
- 'afterCreating' => $this->afterCreating,
- 'connection' => $this->connection,
- ], $arguments)));
- }
-
- /**
- * Get a new model instance.
- *
- * @param array $attributes
- * @return \Illuminate\Database\Eloquent\Model
- */
- public function newModel(array $attributes = [])
- {
- $model = $this->modelName();
-
- return new $model($attributes);
- }
-
- /**
- * Get the name of the model that is generated by the factory.
- *
- * @return string
- */
- public function modelName()
- {
- $resolver = static::$modelNameResolver ?: function (self $factory) {
- $factoryBasename = Str::replaceLast('Factory', '', class_basename($factory));
-
- $appNamespace = static::appNamespace();
-
- return class_exists($appNamespace.'Models\\'.$factoryBasename)
- ? $appNamespace.'Models\\'.$factoryBasename
- : $appNamespace.$factoryBasename;
- };
-
- return $this->model ?: $resolver($this);
- }
-
- /**
- * Specify the callback that should be invoked to guess model names based on factory names.
- *
- * @param callable $callback
- * @return void
- */
- public static function guessModelNamesUsing(callable $callback)
- {
- static::$modelNameResolver = $callback;
- }
-
- /**
- * Specify the default namespace that contains the application's model factories.
- *
- * @param string $namespace
- * @return void
- */
- public static function useNamespace(string $namespace)
- {
- static::$namespace = $namespace;
- }
-
- /**
- * Get a new factory instance for the given model name.
- *
- * @param string $modelName
- * @return static
- */
- public static function factoryForModel(string $modelName)
- {
- $factory = static::resolveFactoryName($modelName);
-
- return $factory::new();
- }
-
- /**
- * Specify the callback that should be invoked to guess factory names based on dynamic relationship names.
- *
- * @param callable $callback
- * @return void
- */
- public static function guessFactoryNamesUsing(callable $callback)
- {
- static::$factoryNameResolver = $callback;
- }
-
- /**
- * Get a new Faker instance.
- *
- * @return \Faker\Generator
- */
- protected function withFaker()
- {
- return Container::getInstance()->make(Generator::class);
- }
-
- /**
- * Get the factory name for the given model name.
- *
- * @param string $modelName
- * @return string
- */
- public static function resolveFactoryName(string $modelName)
- {
- $resolver = static::$factoryNameResolver ?: function (string $modelName) {
- $appNamespace = static::appNamespace();
-
- $modelName = Str::startsWith($modelName, $appNamespace.'Models\\')
- ? Str::after($modelName, $appNamespace.'Models\\')
- : Str::after($modelName, $appNamespace);
-
- return static::$namespace.$modelName.'Factory';
- };
-
- return $resolver($modelName);
- }
-
- /**
- * Get the application namespace for the application.
- *
- * @return string
- */
- protected static function appNamespace()
- {
- try {
- return Container::getInstance()
- ->make(Application::class)
- ->getNamespace();
- } catch (Throwable $e) {
- return 'App\\';
- }
- }
-
- /**
- * Proxy dynamic factory methods onto their proper methods.
- *
- * @param string $method
- * @param array $parameters
- * @return mixed
- */
- public function __call($method, $parameters)
- {
- if (static::hasMacro($method)) {
- return $this->macroCall($method, $parameters);
- }
-
- if (! Str::startsWith($method, ['for', 'has'])) {
- static::throwBadMethodCallException($method);
- }
-
- $relationship = Str::camel(Str::substr($method, 3));
-
- $relatedModel = get_class($this->newModel()->{$relationship}()->getRelated());
-
- if (method_exists($relatedModel, 'newFactory')) {
- $factory = $relatedModel::newFactory() ?: static::factoryForModel($relatedModel);
- } else {
- $factory = static::factoryForModel($relatedModel);
- }
-
- if (Str::startsWith($method, 'for')) {
- return $this->for($factory->state($parameters[0] ?? []), $relationship);
- } elseif (Str::startsWith($method, 'has')) {
- return $this->has(
- $factory
- ->count(is_numeric($parameters[0] ?? null) ? $parameters[0] : 1)
- ->state((is_callable($parameters[0] ?? null) || is_array($parameters[0] ?? null)) ? $parameters[0] : ($parameters[1] ?? [])),
- $relationship
- );
- }
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Factories/HasFactory.php b/vendor/illuminate/database/Eloquent/Factories/HasFactory.php
deleted file mode 100644
index 7d2be220..00000000
--- a/vendor/illuminate/database/Eloquent/Factories/HasFactory.php
+++ /dev/null
@@ -1,31 +0,0 @@
-count(is_numeric($parameters[0] ?? null) ? $parameters[0] : null)
- ->state(is_array($parameters[0] ?? null) ? $parameters[0] : ($parameters[1] ?? []));
- }
-
- /**
- * Create a new factory instance for the model.
- *
- * @return \Illuminate\Database\Eloquent\Factories\Factory
- */
- protected static function newFactory()
- {
- //
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Factories/Relationship.php b/vendor/illuminate/database/Eloquent/Factories/Relationship.php
deleted file mode 100644
index 788f6bc8..00000000
--- a/vendor/illuminate/database/Eloquent/Factories/Relationship.php
+++ /dev/null
@@ -1,62 +0,0 @@
-factory = $factory;
- $this->relationship = $relationship;
- }
-
- /**
- * Create the child relationship for the given parent model.
- *
- * @param \Illuminate\Database\Eloquent\Model $parent
- * @return void
- */
- public function createFor(Model $parent)
- {
- $relationship = $parent->{$this->relationship}();
-
- if ($relationship instanceof MorphOneOrMany) {
- $this->factory->state([
- $relationship->getMorphType() => $relationship->getMorphClass(),
- $relationship->getForeignKeyName() => $relationship->getParentKey(),
- ])->create([], $parent);
- } elseif ($relationship instanceof HasOneOrMany) {
- $this->factory->state([
- $relationship->getForeignKeyName() => $relationship->getParentKey(),
- ])->create([], $parent);
- } elseif ($relationship instanceof BelongsToMany) {
- $relationship->attach($this->factory->create([], $parent));
- }
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Factories/Sequence.php b/vendor/illuminate/database/Eloquent/Factories/Sequence.php
deleted file mode 100644
index 169cc1d1..00000000
--- a/vendor/illuminate/database/Eloquent/Factories/Sequence.php
+++ /dev/null
@@ -1,51 +0,0 @@
-sequence = $sequence;
- $this->count = count($sequence);
- }
-
- /**
- * Get the next value in the sequence.
- *
- * @return mixed
- */
- public function __invoke()
- {
- return tap(value($this->sequence[$this->index % $this->count], $this), function () {
- $this->index = $this->index + 1;
- });
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/HigherOrderBuilderProxy.php b/vendor/illuminate/database/Eloquent/HigherOrderBuilderProxy.php
deleted file mode 100644
index 16b49a1b..00000000
--- a/vendor/illuminate/database/Eloquent/HigherOrderBuilderProxy.php
+++ /dev/null
@@ -1,50 +0,0 @@
-method = $method;
- $this->builder = $builder;
- }
-
- /**
- * Proxy a scope call onto the query builder.
- *
- * @param string $method
- * @param array $parameters
- * @return mixed
- */
- public function __call($method, $parameters)
- {
- return $this->builder->{$this->method}(function ($value) use ($method, $parameters) {
- return $value->{$method}(...$parameters);
- });
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/InvalidCastException.php b/vendor/illuminate/database/Eloquent/InvalidCastException.php
deleted file mode 100644
index 9d00eb3e..00000000
--- a/vendor/illuminate/database/Eloquent/InvalidCastException.php
+++ /dev/null
@@ -1,48 +0,0 @@
-model = $class;
- $this->column = $column;
- $this->castType = $castType;
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/JsonEncodingException.php b/vendor/illuminate/database/Eloquent/JsonEncodingException.php
deleted file mode 100644
index f62abd46..00000000
--- a/vendor/illuminate/database/Eloquent/JsonEncodingException.php
+++ /dev/null
@@ -1,49 +0,0 @@
-getKey().'] to JSON: '.$message);
- }
-
- /**
- * Create a new JSON encoding exception for the resource.
- *
- * @param \Illuminate\Http\Resources\Json\JsonResource $resource
- * @param string $message
- * @return static
- */
- public static function forResource($resource, $message)
- {
- $model = $resource->resource;
-
- return new static('Error encoding resource ['.get_class($resource).'] with model ['.get_class($model).'] with ID ['.$model->getKey().'] to JSON: '.$message);
- }
-
- /**
- * Create a new JSON encoding exception for an attribute.
- *
- * @param mixed $model
- * @param mixed $key
- * @param string $message
- * @return static
- */
- public static function forAttribute($model, $key, $message)
- {
- $class = get_class($model);
-
- return new static("Unable to encode attribute [{$key}] for model [{$class}] to JSON: {$message}.");
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/MassAssignmentException.php b/vendor/illuminate/database/Eloquent/MassAssignmentException.php
deleted file mode 100755
index 7c81aae5..00000000
--- a/vendor/illuminate/database/Eloquent/MassAssignmentException.php
+++ /dev/null
@@ -1,10 +0,0 @@
-prunable(), function ($query) use ($chunkSize) {
- $query->when(! $query->getQuery()->limit, function ($query) use ($chunkSize) {
- $query->limit($chunkSize);
- });
- });
-
- $total = 0;
-
- do {
- $total += $count = in_array(SoftDeletes::class, class_uses_recursive(get_class($this)))
- ? $query->forceDelete()
- : $query->delete();
-
- if ($count > 0) {
- event(new ModelsPruned(static::class, $total));
- }
- } while ($count > 0);
-
- return $total;
- }
-
- /**
- * Get the prunable model query.
- *
- * @return \Illuminate\Database\Eloquent\Builder
- */
- public function prunable()
- {
- throw new LogicException('Please implement the prunable method on your model.');
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Model.php b/vendor/illuminate/database/Eloquent/Model.php
deleted file mode 100644
index b07fdb4f..00000000
--- a/vendor/illuminate/database/Eloquent/Model.php
+++ /dev/null
@@ -1,2182 +0,0 @@
-bootIfNotBooted();
-
- $this->initializeTraits();
-
- $this->syncOriginal();
-
- $this->fill($attributes);
- }
-
- /**
- * Check if the model needs to be booted and if so, do it.
- *
- * @return void
- */
- protected function bootIfNotBooted()
- {
- if (! isset(static::$booted[static::class])) {
- static::$booted[static::class] = true;
-
- $this->fireModelEvent('booting', false);
-
- static::booting();
- static::boot();
- static::booted();
-
- $this->fireModelEvent('booted', false);
- }
- }
-
- /**
- * Perform any actions required before the model boots.
- *
- * @return void
- */
- protected static function booting()
- {
- //
- }
-
- /**
- * Bootstrap the model and its traits.
- *
- * @return void
- */
- protected static function boot()
- {
- static::bootTraits();
- }
-
- /**
- * Boot all of the bootable traits on the model.
- *
- * @return void
- */
- protected static function bootTraits()
- {
- $class = static::class;
-
- $booted = [];
-
- static::$traitInitializers[$class] = [];
-
- foreach (class_uses_recursive($class) as $trait) {
- $method = 'boot'.class_basename($trait);
-
- if (method_exists($class, $method) && ! in_array($method, $booted)) {
- forward_static_call([$class, $method]);
-
- $booted[] = $method;
- }
-
- if (method_exists($class, $method = 'initialize'.class_basename($trait))) {
- static::$traitInitializers[$class][] = $method;
-
- static::$traitInitializers[$class] = array_unique(
- static::$traitInitializers[$class]
- );
- }
- }
- }
-
- /**
- * Initialize any initializable traits on the model.
- *
- * @return void
- */
- protected function initializeTraits()
- {
- foreach (static::$traitInitializers[static::class] as $method) {
- $this->{$method}();
- }
- }
-
- /**
- * Perform any actions required after the model boots.
- *
- * @return void
- */
- protected static function booted()
- {
- //
- }
-
- /**
- * Clear the list of booted models so they will be re-booted.
- *
- * @return void
- */
- public static function clearBootedModels()
- {
- static::$booted = [];
-
- static::$globalScopes = [];
- }
-
- /**
- * Disables relationship model touching for the current class during given callback scope.
- *
- * @param callable $callback
- * @return void
- */
- public static function withoutTouching(callable $callback)
- {
- static::withoutTouchingOn([static::class], $callback);
- }
-
- /**
- * Disables relationship model touching for the given model classes during given callback scope.
- *
- * @param array $models
- * @param callable $callback
- * @return void
- */
- public static function withoutTouchingOn(array $models, callable $callback)
- {
- static::$ignoreOnTouch = array_values(array_merge(static::$ignoreOnTouch, $models));
-
- try {
- $callback();
- } finally {
- static::$ignoreOnTouch = array_values(array_diff(static::$ignoreOnTouch, $models));
- }
- }
-
- /**
- * Determine if the given model is ignoring touches.
- *
- * @param string|null $class
- * @return bool
- */
- public static function isIgnoringTouch($class = null)
- {
- $class = $class ?: static::class;
-
- if (! get_class_vars($class)['timestamps'] || ! $class::UPDATED_AT) {
- return true;
- }
-
- foreach (static::$ignoreOnTouch as $ignoredClass) {
- if ($class === $ignoredClass || is_subclass_of($class, $ignoredClass)) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Prevent model relationships from being lazy loaded.
- *
- * @param bool $value
- * @return void
- */
- public static function preventLazyLoading($value = true)
- {
- static::$modelsShouldPreventLazyLoading = $value;
- }
-
- /**
- * Register a callback that is responsible for handling lazy loading violations.
- *
- * @param callable $callback
- * @return void
- */
- public static function handleLazyLoadingViolationUsing(callable $callback)
- {
- static::$lazyLoadingViolationCallback = $callback;
- }
-
- /**
- * Execute a callback without broadcasting any model events for all model types.
- *
- * @param callable $callback
- * @return mixed
- */
- public static function withoutBroadcasting(callable $callback)
- {
- $isBroadcasting = static::$isBroadcasting;
-
- static::$isBroadcasting = false;
-
- try {
- return $callback();
- } finally {
- static::$isBroadcasting = $isBroadcasting;
- }
- }
-
- /**
- * Fill the model with an array of attributes.
- *
- * @param array $attributes
- * @return $this
- *
- * @throws \Illuminate\Database\Eloquent\MassAssignmentException
- */
- public function fill(array $attributes)
- {
- $totallyGuarded = $this->totallyGuarded();
-
- foreach ($this->fillableFromArray($attributes) as $key => $value) {
- // The developers may choose to place some attributes in the "fillable" array
- // which means only those attributes may be set through mass assignment to
- // the model, and all others will just get ignored for security reasons.
- if ($this->isFillable($key)) {
- $this->setAttribute($key, $value);
- } elseif ($totallyGuarded) {
- throw new MassAssignmentException(sprintf(
- 'Add [%s] to fillable property to allow mass assignment on [%s].',
- $key, get_class($this)
- ));
- }
- }
-
- return $this;
- }
-
- /**
- * Fill the model with an array of attributes. Force mass assignment.
- *
- * @param array $attributes
- * @return $this
- */
- public function forceFill(array $attributes)
- {
- return static::unguarded(function () use ($attributes) {
- return $this->fill($attributes);
- });
- }
-
- /**
- * Qualify the given column name by the model's table.
- *
- * @param string $column
- * @return string
- */
- public function qualifyColumn($column)
- {
- if (Str::contains($column, '.')) {
- return $column;
- }
-
- return $this->getTable().'.'.$column;
- }
-
- /**
- * Qualify the given columns with the model's table.
- *
- * @param array $columns
- * @return array
- */
- public function qualifyColumns($columns)
- {
- return collect($columns)->map(function ($column) {
- return $this->qualifyColumn($column);
- })->all();
- }
-
- /**
- * Create a new instance of the given model.
- *
- * @param array $attributes
- * @param bool $exists
- * @return static
- */
- public function newInstance($attributes = [], $exists = false)
- {
- // This method just provides a convenient way for us to generate fresh model
- // instances of this current model. It is particularly useful during the
- // hydration of new objects via the Eloquent query builder instances.
- $model = new static((array) $attributes);
-
- $model->exists = $exists;
-
- $model->setConnection(
- $this->getConnectionName()
- );
-
- $model->setTable($this->getTable());
-
- $model->mergeCasts($this->casts);
-
- return $model;
- }
-
- /**
- * Create a new model instance that is existing.
- *
- * @param array $attributes
- * @param string|null $connection
- * @return static
- */
- public function newFromBuilder($attributes = [], $connection = null)
- {
- $model = $this->newInstance([], true);
-
- $model->setRawAttributes((array) $attributes, true);
-
- $model->setConnection($connection ?: $this->getConnectionName());
-
- $model->fireModelEvent('retrieved', false);
-
- return $model;
- }
-
- /**
- * Begin querying the model on a given connection.
- *
- * @param string|null $connection
- * @return \Illuminate\Database\Eloquent\Builder
- */
- public static function on($connection = null)
- {
- // First we will just create a fresh instance of this model, and then we can set the
- // connection on the model so that it is used for the queries we execute, as well
- // as being set on every relation we retrieve without a custom connection name.
- $instance = new static;
-
- $instance->setConnection($connection);
-
- return $instance->newQuery();
- }
-
- /**
- * Begin querying the model on the write connection.
- *
- * @return \Illuminate\Database\Query\Builder
- */
- public static function onWriteConnection()
- {
- return static::query()->useWritePdo();
- }
-
- /**
- * Get all of the models from the database.
- *
- * @param array|mixed $columns
- * @return \Illuminate\Database\Eloquent\Collection|static[]
- */
- public static function all($columns = ['*'])
- {
- return static::query()->get(
- is_array($columns) ? $columns : func_get_args()
- );
- }
-
- /**
- * Begin querying a model with eager loading.
- *
- * @param array|string $relations
- * @return \Illuminate\Database\Eloquent\Builder
- */
- public static function with($relations)
- {
- return static::query()->with(
- is_string($relations) ? func_get_args() : $relations
- );
- }
-
- /**
- * Eager load relations on the model.
- *
- * @param array|string $relations
- * @return $this
- */
- public function load($relations)
- {
- $query = $this->newQueryWithoutRelationships()->with(
- is_string($relations) ? func_get_args() : $relations
- );
-
- $query->eagerLoadRelations([$this]);
-
- return $this;
- }
-
- /**
- * Eager load relationships on the polymorphic relation of a model.
- *
- * @param string $relation
- * @param array $relations
- * @return $this
- */
- public function loadMorph($relation, $relations)
- {
- if (! $this->{$relation}) {
- return $this;
- }
-
- $className = get_class($this->{$relation});
-
- $this->{$relation}->load($relations[$className] ?? []);
-
- return $this;
- }
-
- /**
- * Eager load relations on the model if they are not already eager loaded.
- *
- * @param array|string $relations
- * @return $this
- */
- public function loadMissing($relations)
- {
- $relations = is_string($relations) ? func_get_args() : $relations;
-
- $this->newCollection([$this])->loadMissing($relations);
-
- return $this;
- }
-
- /**
- * Eager load relation's column aggregations on the model.
- *
- * @param array|string $relations
- * @param string $column
- * @param string $function
- * @return $this
- */
- public function loadAggregate($relations, $column, $function = null)
- {
- $this->newCollection([$this])->loadAggregate($relations, $column, $function);
-
- return $this;
- }
-
- /**
- * Eager load relation counts on the model.
- *
- * @param array|string $relations
- * @return $this
- */
- public function loadCount($relations)
- {
- $relations = is_string($relations) ? func_get_args() : $relations;
-
- return $this->loadAggregate($relations, '*', 'count');
- }
-
- /**
- * Eager load relation max column values on the model.
- *
- * @param array|string $relations
- * @param string $column
- * @return $this
- */
- public function loadMax($relations, $column)
- {
- return $this->loadAggregate($relations, $column, 'max');
- }
-
- /**
- * Eager load relation min column values on the model.
- *
- * @param array|string $relations
- * @param string $column
- * @return $this
- */
- public function loadMin($relations, $column)
- {
- return $this->loadAggregate($relations, $column, 'min');
- }
-
- /**
- * Eager load relation's column summations on the model.
- *
- * @param array|string $relations
- * @param string $column
- * @return $this
- */
- public function loadSum($relations, $column)
- {
- return $this->loadAggregate($relations, $column, 'sum');
- }
-
- /**
- * Eager load relation average column values on the model.
- *
- * @param array|string $relations
- * @param string $column
- * @return $this
- */
- public function loadAvg($relations, $column)
- {
- return $this->loadAggregate($relations, $column, 'avg');
- }
-
- /**
- * Eager load related model existence values on the model.
- *
- * @param array|string $relations
- * @return $this
- */
- public function loadExists($relations)
- {
- return $this->loadAggregate($relations, '*', 'exists');
- }
-
- /**
- * Eager load relationship column aggregation on the polymorphic relation of a model.
- *
- * @param string $relation
- * @param array $relations
- * @param string $column
- * @param string $function
- * @return $this
- */
- public function loadMorphAggregate($relation, $relations, $column, $function = null)
- {
- if (! $this->{$relation}) {
- return $this;
- }
-
- $className = get_class($this->{$relation});
-
- $this->{$relation}->loadAggregate($relations[$className] ?? [], $column, $function);
-
- return $this;
- }
-
- /**
- * Eager load relationship counts on the polymorphic relation of a model.
- *
- * @param string $relation
- * @param array $relations
- * @return $this
- */
- public function loadMorphCount($relation, $relations)
- {
- return $this->loadMorphAggregate($relation, $relations, '*', 'count');
- }
-
- /**
- * Eager load relationship max column values on the polymorphic relation of a model.
- *
- * @param string $relation
- * @param array $relations
- * @param string $column
- * @return $this
- */
- public function loadMorphMax($relation, $relations, $column)
- {
- return $this->loadMorphAggregate($relation, $relations, $column, 'max');
- }
-
- /**
- * Eager load relationship min column values on the polymorphic relation of a model.
- *
- * @param string $relation
- * @param array $relations
- * @param string $column
- * @return $this
- */
- public function loadMorphMin($relation, $relations, $column)
- {
- return $this->loadMorphAggregate($relation, $relations, $column, 'min');
- }
-
- /**
- * Eager load relationship column summations on the polymorphic relation of a model.
- *
- * @param string $relation
- * @param array $relations
- * @param string $column
- * @return $this
- */
- public function loadMorphSum($relation, $relations, $column)
- {
- return $this->loadMorphAggregate($relation, $relations, $column, 'sum');
- }
-
- /**
- * Eager load relationship average column values on the polymorphic relation of a model.
- *
- * @param string $relation
- * @param array $relations
- * @param string $column
- * @return $this
- */
- public function loadMorphAvg($relation, $relations, $column)
- {
- return $this->loadMorphAggregate($relation, $relations, $column, 'avg');
- }
-
- /**
- * Increment a column's value by a given amount.
- *
- * @param string $column
- * @param float|int $amount
- * @param array $extra
- * @return int
- */
- protected function increment($column, $amount = 1, array $extra = [])
- {
- return $this->incrementOrDecrement($column, $amount, $extra, 'increment');
- }
-
- /**
- * Decrement a column's value by a given amount.
- *
- * @param string $column
- * @param float|int $amount
- * @param array $extra
- * @return int
- */
- protected function decrement($column, $amount = 1, array $extra = [])
- {
- return $this->incrementOrDecrement($column, $amount, $extra, 'decrement');
- }
-
- /**
- * Run the increment or decrement method on the model.
- *
- * @param string $column
- * @param float|int $amount
- * @param array $extra
- * @param string $method
- * @return int
- */
- protected function incrementOrDecrement($column, $amount, $extra, $method)
- {
- $query = $this->newQueryWithoutRelationships();
-
- if (! $this->exists) {
- return $query->{$method}($column, $amount, $extra);
- }
-
- $this->{$column} = $this->isClassDeviable($column)
- ? $this->deviateClassCastableAttribute($method, $column, $amount)
- : $this->{$column} + ($method === 'increment' ? $amount : $amount * -1);
-
- $this->forceFill($extra);
-
- if ($this->fireModelEvent('updating') === false) {
- return false;
- }
-
- return tap($this->setKeysForSaveQuery($query)->{$method}($column, $amount, $extra), function () use ($column) {
- $this->syncChanges();
-
- $this->fireModelEvent('updated', false);
-
- $this->syncOriginalAttribute($column);
- });
- }
-
- /**
- * Update the model in the database.
- *
- * @param array $attributes
- * @param array $options
- * @return bool
- */
- public function update(array $attributes = [], array $options = [])
- {
- if (! $this->exists) {
- return false;
- }
-
- return $this->fill($attributes)->save($options);
- }
-
- /**
- * Update the model in the database within a transaction.
- *
- * @param array $attributes
- * @param array $options
- * @return bool
- *
- * @throws \Throwable
- */
- public function updateOrFail(array $attributes = [], array $options = [])
- {
- if (! $this->exists) {
- return false;
- }
-
- return $this->fill($attributes)->saveOrFail($options);
- }
-
- /**
- * Update the model in the database without raising any events.
- *
- * @param array $attributes
- * @param array $options
- * @return bool
- */
- public function updateQuietly(array $attributes = [], array $options = [])
- {
- if (! $this->exists) {
- return false;
- }
-
- return $this->fill($attributes)->saveQuietly($options);
- }
-
- /**
- * Save the model and all of its relationships.
- *
- * @return bool
- */
- public function push()
- {
- if (! $this->save()) {
- return false;
- }
-
- // To sync all of the relationships to the database, we will simply spin through
- // the relationships and save each model via this "push" method, which allows
- // us to recurse into all of these nested relations for the model instance.
- foreach ($this->relations as $models) {
- $models = $models instanceof Collection
- ? $models->all() : [$models];
-
- foreach (array_filter($models) as $model) {
- if (! $model->push()) {
- return false;
- }
- }
- }
-
- return true;
- }
-
- /**
- * Save the model to the database without raising any events.
- *
- * @param array $options
- * @return bool
- */
- public function saveQuietly(array $options = [])
- {
- return static::withoutEvents(function () use ($options) {
- return $this->save($options);
- });
- }
-
- /**
- * Save the model to the database.
- *
- * @param array $options
- * @return bool
- */
- public function save(array $options = [])
- {
- $this->mergeAttributesFromClassCasts();
-
- $query = $this->newModelQuery();
-
- // If the "saving" event returns false we'll bail out of the save and return
- // false, indicating that the save failed. This provides a chance for any
- // listeners to cancel save operations if validations fail or whatever.
- if ($this->fireModelEvent('saving') === false) {
- return false;
- }
-
- // If the model already exists in the database we can just update our record
- // that is already in this database using the current IDs in this "where"
- // clause to only update this model. Otherwise, we'll just insert them.
- if ($this->exists) {
- $saved = $this->isDirty() ?
- $this->performUpdate($query) : true;
- }
-
- // If the model is brand new, we'll insert it into our database and set the
- // ID attribute on the model to the value of the newly inserted row's ID
- // which is typically an auto-increment value managed by the database.
- else {
- $saved = $this->performInsert($query);
-
- if (! $this->getConnectionName() &&
- $connection = $query->getConnection()) {
- $this->setConnection($connection->getName());
- }
- }
-
- // If the model is successfully saved, we need to do a few more things once
- // that is done. We will call the "saved" method here to run any actions
- // we need to happen after a model gets successfully saved right here.
- if ($saved) {
- $this->finishSave($options);
- }
-
- return $saved;
- }
-
- /**
- * Save the model to the database within a transaction.
- *
- * @param array $options
- * @return bool
- *
- * @throws \Throwable
- */
- public function saveOrFail(array $options = [])
- {
- return $this->getConnection()->transaction(function () use ($options) {
- return $this->save($options);
- });
- }
-
- /**
- * Perform any actions that are necessary after the model is saved.
- *
- * @param array $options
- * @return void
- */
- protected function finishSave(array $options)
- {
- $this->fireModelEvent('saved', false);
-
- if ($this->isDirty() && ($options['touch'] ?? true)) {
- $this->touchOwners();
- }
-
- $this->syncOriginal();
- }
-
- /**
- * Perform a model update operation.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @return bool
- */
- protected function performUpdate(Builder $query)
- {
- // If the updating event returns false, we will cancel the update operation so
- // developers can hook Validation systems into their models and cancel this
- // operation if the model does not pass validation. Otherwise, we update.
- if ($this->fireModelEvent('updating') === false) {
- return false;
- }
-
- // First we need to create a fresh query instance and touch the creation and
- // update timestamp on the model which are maintained by us for developer
- // convenience. Then we will just continue saving the model instances.
- if ($this->usesTimestamps()) {
- $this->updateTimestamps();
- }
-
- // Once we have run the update operation, we will fire the "updated" event for
- // this model instance. This will allow developers to hook into these after
- // models are updated, giving them a chance to do any special processing.
- $dirty = $this->getDirty();
-
- if (count($dirty) > 0) {
- $this->setKeysForSaveQuery($query)->update($dirty);
-
- $this->syncChanges();
-
- $this->fireModelEvent('updated', false);
- }
-
- return true;
- }
-
- /**
- * Set the keys for a select query.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @return \Illuminate\Database\Eloquent\Builder
- */
- protected function setKeysForSelectQuery($query)
- {
- $query->where($this->getKeyName(), '=', $this->getKeyForSelectQuery());
-
- return $query;
- }
-
- /**
- * Get the primary key value for a select query.
- *
- * @return mixed
- */
- protected function getKeyForSelectQuery()
- {
- return $this->original[$this->getKeyName()] ?? $this->getKey();
- }
-
- /**
- * Set the keys for a save update query.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @return \Illuminate\Database\Eloquent\Builder
- */
- protected function setKeysForSaveQuery($query)
- {
- $query->where($this->getKeyName(), '=', $this->getKeyForSaveQuery());
-
- return $query;
- }
-
- /**
- * Get the primary key value for a save query.
- *
- * @return mixed
- */
- protected function getKeyForSaveQuery()
- {
- return $this->original[$this->getKeyName()] ?? $this->getKey();
- }
-
- /**
- * Perform a model insert operation.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @return bool
- */
- protected function performInsert(Builder $query)
- {
- if ($this->fireModelEvent('creating') === false) {
- return false;
- }
-
- // First we'll need to create a fresh query instance and touch the creation and
- // update timestamps on this model, which are maintained by us for developer
- // convenience. After, we will just continue saving these model instances.
- if ($this->usesTimestamps()) {
- $this->updateTimestamps();
- }
-
- // If the model has an incrementing key, we can use the "insertGetId" method on
- // the query builder, which will give us back the final inserted ID for this
- // table from the database. Not all tables have to be incrementing though.
- $attributes = $this->getAttributesForInsert();
-
- if ($this->getIncrementing()) {
- $this->insertAndSetId($query, $attributes);
- }
-
- // If the table isn't incrementing we'll simply insert these attributes as they
- // are. These attribute arrays must contain an "id" column previously placed
- // there by the developer as the manually determined key for these models.
- else {
- if (empty($attributes)) {
- return true;
- }
-
- $query->insert($attributes);
- }
-
- // We will go ahead and set the exists property to true, so that it is set when
- // the created event is fired, just in case the developer tries to update it
- // during the event. This will allow them to do so and run an update here.
- $this->exists = true;
-
- $this->wasRecentlyCreated = true;
-
- $this->fireModelEvent('created', false);
-
- return true;
- }
-
- /**
- * Insert the given attributes and set the ID on the model.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @param array $attributes
- * @return void
- */
- protected function insertAndSetId(Builder $query, $attributes)
- {
- $id = $query->insertGetId($attributes, $keyName = $this->getKeyName());
-
- $this->setAttribute($keyName, $id);
- }
-
- /**
- * Destroy the models for the given IDs.
- *
- * @param \Illuminate\Support\Collection|array|int|string $ids
- * @return int
- */
- public static function destroy($ids)
- {
- if ($ids instanceof EloquentCollection) {
- $ids = $ids->modelKeys();
- }
-
- if ($ids instanceof BaseCollection) {
- $ids = $ids->all();
- }
-
- $ids = is_array($ids) ? $ids : func_get_args();
-
- if (count($ids) === 0) {
- return 0;
- }
-
- // We will actually pull the models from the database table and call delete on
- // each of them individually so that their events get fired properly with a
- // correct set of attributes in case the developers wants to check these.
- $key = ($instance = new static)->getKeyName();
-
- $count = 0;
-
- foreach ($instance->whereIn($key, $ids)->get() as $model) {
- if ($model->delete()) {
- $count++;
- }
- }
-
- return $count;
- }
-
- /**
- * Delete the model from the database.
- *
- * @return bool|null
- *
- * @throws \LogicException
- */
- public function delete()
- {
- $this->mergeAttributesFromClassCasts();
-
- if (is_null($this->getKeyName())) {
- throw new LogicException('No primary key defined on model.');
- }
-
- // If the model doesn't exist, there is nothing to delete so we'll just return
- // immediately and not do anything else. Otherwise, we will continue with a
- // deletion process on the model, firing the proper events, and so forth.
- if (! $this->exists) {
- return;
- }
-
- if ($this->fireModelEvent('deleting') === false) {
- return false;
- }
-
- // Here, we'll touch the owning models, verifying these timestamps get updated
- // for the models. This will allow any caching to get broken on the parents
- // by the timestamp. Then we will go ahead and delete the model instance.
- $this->touchOwners();
-
- $this->performDeleteOnModel();
-
- // Once the model has been deleted, we will fire off the deleted event so that
- // the developers may hook into post-delete operations. We will then return
- // a boolean true as the delete is presumably successful on the database.
- $this->fireModelEvent('deleted', false);
-
- return true;
- }
-
- /**
- * Delete the model from the database within a transaction.
- *
- * @return bool|null
- *
- * @throws \Throwable
- */
- public function deleteOrFail()
- {
- if (! $this->exists) {
- return false;
- }
-
- return $this->getConnection()->transaction(function () {
- return $this->delete();
- });
- }
-
- /**
- * Force a hard delete on a soft deleted model.
- *
- * This method protects developers from running forceDelete when the trait is missing.
- *
- * @return bool|null
- */
- public function forceDelete()
- {
- return $this->delete();
- }
-
- /**
- * Perform the actual delete query on this model instance.
- *
- * @return void
- */
- protected function performDeleteOnModel()
- {
- $this->setKeysForSaveQuery($this->newModelQuery())->delete();
-
- $this->exists = false;
- }
-
- /**
- * Begin querying the model.
- *
- * @return \Illuminate\Database\Eloquent\Builder
- */
- public static function query()
- {
- return (new static)->newQuery();
- }
-
- /**
- * Get a new query builder for the model's table.
- *
- * @return \Illuminate\Database\Eloquent\Builder
- */
- public function newQuery()
- {
- return $this->registerGlobalScopes($this->newQueryWithoutScopes());
- }
-
- /**
- * Get a new query builder that doesn't have any global scopes or eager loading.
- *
- * @return \Illuminate\Database\Eloquent\Builder|static
- */
- public function newModelQuery()
- {
- return $this->newEloquentBuilder(
- $this->newBaseQueryBuilder()
- )->setModel($this);
- }
-
- /**
- * Get a new query builder with no relationships loaded.
- *
- * @return \Illuminate\Database\Eloquent\Builder
- */
- public function newQueryWithoutRelationships()
- {
- return $this->registerGlobalScopes($this->newModelQuery());
- }
-
- /**
- * Register the global scopes for this builder instance.
- *
- * @param \Illuminate\Database\Eloquent\Builder $builder
- * @return \Illuminate\Database\Eloquent\Builder
- */
- public function registerGlobalScopes($builder)
- {
- foreach ($this->getGlobalScopes() as $identifier => $scope) {
- $builder->withGlobalScope($identifier, $scope);
- }
-
- return $builder;
- }
-
- /**
- * Get a new query builder that doesn't have any global scopes.
- *
- * @return \Illuminate\Database\Eloquent\Builder|static
- */
- public function newQueryWithoutScopes()
- {
- return $this->newModelQuery()
- ->with($this->with)
- ->withCount($this->withCount);
- }
-
- /**
- * Get a new query instance without a given scope.
- *
- * @param \Illuminate\Database\Eloquent\Scope|string $scope
- * @return \Illuminate\Database\Eloquent\Builder
- */
- public function newQueryWithoutScope($scope)
- {
- return $this->newQuery()->withoutGlobalScope($scope);
- }
-
- /**
- * Get a new query to restore one or more models by their queueable IDs.
- *
- * @param array|int $ids
- * @return \Illuminate\Database\Eloquent\Builder
- */
- public function newQueryForRestoration($ids)
- {
- return is_array($ids)
- ? $this->newQueryWithoutScopes()->whereIn($this->getQualifiedKeyName(), $ids)
- : $this->newQueryWithoutScopes()->whereKey($ids);
- }
-
- /**
- * Create a new Eloquent query builder for the model.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @return \Illuminate\Database\Eloquent\Builder|static
- */
- public function newEloquentBuilder($query)
- {
- return new Builder($query);
- }
-
- /**
- * Get a new query builder instance for the connection.
- *
- * @return \Illuminate\Database\Query\Builder
- */
- protected function newBaseQueryBuilder()
- {
- return $this->getConnection()->query();
- }
-
- /**
- * Create a new Eloquent Collection instance.
- *
- * @param array $models
- * @return \Illuminate\Database\Eloquent\Collection
- */
- public function newCollection(array $models = [])
- {
- return new Collection($models);
- }
-
- /**
- * Create a new pivot model instance.
- *
- * @param \Illuminate\Database\Eloquent\Model $parent
- * @param array $attributes
- * @param string $table
- * @param bool $exists
- * @param string|null $using
- * @return \Illuminate\Database\Eloquent\Relations\Pivot
- */
- public function newPivot(self $parent, array $attributes, $table, $exists, $using = null)
- {
- return $using ? $using::fromRawAttributes($parent, $attributes, $table, $exists)
- : Pivot::fromAttributes($parent, $attributes, $table, $exists);
- }
-
- /**
- * Determine if the model has a given scope.
- *
- * @param string $scope
- * @return bool
- */
- public function hasNamedScope($scope)
- {
- return method_exists($this, 'scope'.ucfirst($scope));
- }
-
- /**
- * Apply the given named scope if possible.
- *
- * @param string $scope
- * @param array $parameters
- * @return mixed
- */
- public function callNamedScope($scope, array $parameters = [])
- {
- return $this->{'scope'.ucfirst($scope)}(...$parameters);
- }
-
- /**
- * Convert the model instance to an array.
- *
- * @return array
- */
- public function toArray()
- {
- return array_merge($this->attributesToArray(), $this->relationsToArray());
- }
-
- /**
- * Convert the model instance to JSON.
- *
- * @param int $options
- * @return string
- *
- * @throws \Illuminate\Database\Eloquent\JsonEncodingException
- */
- public function toJson($options = 0)
- {
- $json = json_encode($this->jsonSerialize(), $options);
-
- if (JSON_ERROR_NONE !== json_last_error()) {
- throw JsonEncodingException::forModel($this, json_last_error_msg());
- }
-
- return $json;
- }
-
- /**
- * Convert the object into something JSON serializable.
- *
- * @return array
- */
- #[\ReturnTypeWillChange]
- public function jsonSerialize()
- {
- return $this->toArray();
- }
-
- /**
- * Reload a fresh model instance from the database.
- *
- * @param array|string $with
- * @return static|null
- */
- public function fresh($with = [])
- {
- if (! $this->exists) {
- return;
- }
-
- return $this->setKeysForSelectQuery($this->newQueryWithoutScopes())
- ->with(is_string($with) ? func_get_args() : $with)
- ->first();
- }
-
- /**
- * Reload the current model instance with fresh attributes from the database.
- *
- * @return $this
- */
- public function refresh()
- {
- if (! $this->exists) {
- return $this;
- }
-
- $this->setRawAttributes(
- $this->setKeysForSelectQuery($this->newQueryWithoutScopes())->firstOrFail()->attributes
- );
-
- $this->load(collect($this->relations)->reject(function ($relation) {
- return $relation instanceof Pivot
- || (is_object($relation) && in_array(AsPivot::class, class_uses_recursive($relation), true));
- })->keys()->all());
-
- $this->syncOriginal();
-
- return $this;
- }
-
- /**
- * Clone the model into a new, non-existing instance.
- *
- * @param array|null $except
- * @return static
- */
- public function replicate(array $except = null)
- {
- $defaults = [
- $this->getKeyName(),
- $this->getCreatedAtColumn(),
- $this->getUpdatedAtColumn(),
- ];
-
- $attributes = Arr::except(
- $this->getAttributes(), $except ? array_unique(array_merge($except, $defaults)) : $defaults
- );
-
- return tap(new static, function ($instance) use ($attributes) {
- $instance->setRawAttributes($attributes);
-
- $instance->setRelations($this->relations);
-
- $instance->fireModelEvent('replicating', false);
- });
- }
-
- /**
- * Determine if two models have the same ID and belong to the same table.
- *
- * @param \Illuminate\Database\Eloquent\Model|null $model
- * @return bool
- */
- public function is($model)
- {
- return ! is_null($model) &&
- $this->getKey() === $model->getKey() &&
- $this->getTable() === $model->getTable() &&
- $this->getConnectionName() === $model->getConnectionName();
- }
-
- /**
- * Determine if two models are not the same.
- *
- * @param \Illuminate\Database\Eloquent\Model|null $model
- * @return bool
- */
- public function isNot($model)
- {
- return ! $this->is($model);
- }
-
- /**
- * Get the database connection for the model.
- *
- * @return \Illuminate\Database\Connection
- */
- public function getConnection()
- {
- return static::resolveConnection($this->getConnectionName());
- }
-
- /**
- * Get the current connection name for the model.
- *
- * @return string|null
- */
- public function getConnectionName()
- {
- return $this->connection;
- }
-
- /**
- * Set the connection associated with the model.
- *
- * @param string|null $name
- * @return $this
- */
- public function setConnection($name)
- {
- $this->connection = $name;
-
- return $this;
- }
-
- /**
- * Resolve a connection instance.
- *
- * @param string|null $connection
- * @return \Illuminate\Database\Connection
- */
- public static function resolveConnection($connection = null)
- {
- return static::$resolver->connection($connection);
- }
-
- /**
- * Get the connection resolver instance.
- *
- * @return \Illuminate\Database\ConnectionResolverInterface
- */
- public static function getConnectionResolver()
- {
- return static::$resolver;
- }
-
- /**
- * Set the connection resolver instance.
- *
- * @param \Illuminate\Database\ConnectionResolverInterface $resolver
- * @return void
- */
- public static function setConnectionResolver(Resolver $resolver)
- {
- static::$resolver = $resolver;
- }
-
- /**
- * Unset the connection resolver for models.
- *
- * @return void
- */
- public static function unsetConnectionResolver()
- {
- static::$resolver = null;
- }
-
- /**
- * Get the table associated with the model.
- *
- * @return string
- */
- public function getTable()
- {
- return $this->table ?? Str::snake(Str::pluralStudly(class_basename($this)));
- }
-
- /**
- * Set the table associated with the model.
- *
- * @param string $table
- * @return $this
- */
- public function setTable($table)
- {
- $this->table = $table;
-
- return $this;
- }
-
- /**
- * Get the primary key for the model.
- *
- * @return string
- */
- public function getKeyName()
- {
- return $this->primaryKey;
- }
-
- /**
- * Set the primary key for the model.
- *
- * @param string $key
- * @return $this
- */
- public function setKeyName($key)
- {
- $this->primaryKey = $key;
-
- return $this;
- }
-
- /**
- * Get the table qualified key name.
- *
- * @return string
- */
- public function getQualifiedKeyName()
- {
- return $this->qualifyColumn($this->getKeyName());
- }
-
- /**
- * Get the auto-incrementing key type.
- *
- * @return string
- */
- public function getKeyType()
- {
- return $this->keyType;
- }
-
- /**
- * Set the data type for the primary key.
- *
- * @param string $type
- * @return $this
- */
- public function setKeyType($type)
- {
- $this->keyType = $type;
-
- return $this;
- }
-
- /**
- * Get the value indicating whether the IDs are incrementing.
- *
- * @return bool
- */
- public function getIncrementing()
- {
- return $this->incrementing;
- }
-
- /**
- * Set whether IDs are incrementing.
- *
- * @param bool $value
- * @return $this
- */
- public function setIncrementing($value)
- {
- $this->incrementing = $value;
-
- return $this;
- }
-
- /**
- * Get the value of the model's primary key.
- *
- * @return mixed
- */
- public function getKey()
- {
- return $this->getAttribute($this->getKeyName());
- }
-
- /**
- * Get the queueable identity for the entity.
- *
- * @return mixed
- */
- public function getQueueableId()
- {
- return $this->getKey();
- }
-
- /**
- * Get the queueable relationships for the entity.
- *
- * @return array
- */
- public function getQueueableRelations()
- {
- $relations = [];
-
- foreach ($this->getRelations() as $key => $relation) {
- if (! method_exists($this, $key)) {
- continue;
- }
-
- $relations[] = $key;
-
- if ($relation instanceof QueueableCollection) {
- foreach ($relation->getQueueableRelations() as $collectionValue) {
- $relations[] = $key.'.'.$collectionValue;
- }
- }
-
- if ($relation instanceof QueueableEntity) {
- foreach ($relation->getQueueableRelations() as $entityKey => $entityValue) {
- $relations[] = $key.'.'.$entityValue;
- }
- }
- }
-
- return array_unique($relations);
- }
-
- /**
- * Get the queueable connection for the entity.
- *
- * @return string|null
- */
- public function getQueueableConnection()
- {
- return $this->getConnectionName();
- }
-
- /**
- * Get the value of the model's route key.
- *
- * @return mixed
- */
- public function getRouteKey()
- {
- return $this->getAttribute($this->getRouteKeyName());
- }
-
- /**
- * Get the route key for the model.
- *
- * @return string
- */
- public function getRouteKeyName()
- {
- return $this->getKeyName();
- }
-
- /**
- * Retrieve the model for a bound value.
- *
- * @param mixed $value
- * @param string|null $field
- * @return \Illuminate\Database\Eloquent\Model|null
- */
- public function resolveRouteBinding($value, $field = null)
- {
- return $this->where($field ?? $this->getRouteKeyName(), $value)->first();
- }
-
- /**
- * Retrieve the model for a bound value.
- *
- * @param mixed $value
- * @param string|null $field
- * @return \Illuminate\Database\Eloquent\Model|null
- */
- public function resolveSoftDeletableRouteBinding($value, $field = null)
- {
- return $this->where($field ?? $this->getRouteKeyName(), $value)->withTrashed()->first();
- }
-
- /**
- * Retrieve the child model for a bound value.
- *
- * @param string $childType
- * @param mixed $value
- * @param string|null $field
- * @return \Illuminate\Database\Eloquent\Model|null
- */
- public function resolveChildRouteBinding($childType, $value, $field)
- {
- return $this->resolveChildRouteBindingQuery($childType, $value, $field)->first();
- }
-
- /**
- * Retrieve the child model for a bound value.
- *
- * @param string $childType
- * @param mixed $value
- * @param string|null $field
- * @return \Illuminate\Database\Eloquent\Model|null
- */
- public function resolveSoftDeletableChildRouteBinding($childType, $value, $field)
- {
- return $this->resolveChildRouteBindingQuery($childType, $value, $field)->withTrashed()->first();
- }
-
- /**
- * Retrieve the child model query for a bound value.
- *
- * @param string $childType
- * @param mixed $value
- * @param string|null $field
- * @return \Illuminate\Database\Eloquent\Model|null
- */
- protected function resolveChildRouteBindingQuery($childType, $value, $field)
- {
- $relationship = $this->{Str::plural(Str::camel($childType))}();
-
- $field = $field ?: $relationship->getRelated()->getRouteKeyName();
-
- if ($relationship instanceof HasManyThrough ||
- $relationship instanceof BelongsToMany) {
- return $relationship->where($relationship->getRelated()->getTable().'.'.$field, $value);
- } else {
- return $relationship->where($field, $value);
- }
- }
-
- /**
- * Get the default foreign key name for the model.
- *
- * @return string
- */
- public function getForeignKey()
- {
- return Str::snake(class_basename($this)).'_'.$this->getKeyName();
- }
-
- /**
- * Get the number of models to return per page.
- *
- * @return int
- */
- public function getPerPage()
- {
- return $this->perPage;
- }
-
- /**
- * Set the number of models to return per page.
- *
- * @param int $perPage
- * @return $this
- */
- public function setPerPage($perPage)
- {
- $this->perPage = $perPage;
-
- return $this;
- }
-
- /**
- * Determine if lazy loading is disabled.
- *
- * @return bool
- */
- public static function preventsLazyLoading()
- {
- return static::$modelsShouldPreventLazyLoading;
- }
-
- /**
- * Get the broadcast channel route definition that is associated with the given entity.
- *
- * @return string
- */
- public function broadcastChannelRoute()
- {
- return str_replace('\\', '.', get_class($this)).'.{'.Str::camel(class_basename($this)).'}';
- }
-
- /**
- * Get the broadcast channel name that is associated with the given entity.
- *
- * @return string
- */
- public function broadcastChannel()
- {
- return str_replace('\\', '.', get_class($this)).'.'.$this->getKey();
- }
-
- /**
- * Dynamically retrieve attributes on the model.
- *
- * @param string $key
- * @return mixed
- */
- public function __get($key)
- {
- return $this->getAttribute($key);
- }
-
- /**
- * Dynamically set attributes on the model.
- *
- * @param string $key
- * @param mixed $value
- * @return void
- */
- public function __set($key, $value)
- {
- $this->setAttribute($key, $value);
- }
-
- /**
- * Determine if the given attribute exists.
- *
- * @param mixed $offset
- * @return bool
- */
- #[\ReturnTypeWillChange]
- public function offsetExists($offset)
- {
- return ! is_null($this->getAttribute($offset));
- }
-
- /**
- * Get the value for a given offset.
- *
- * @param mixed $offset
- * @return mixed
- */
- #[\ReturnTypeWillChange]
- public function offsetGet($offset)
- {
- return $this->getAttribute($offset);
- }
-
- /**
- * Set the value for a given offset.
- *
- * @param mixed $offset
- * @param mixed $value
- * @return void
- */
- #[\ReturnTypeWillChange]
- public function offsetSet($offset, $value)
- {
- $this->setAttribute($offset, $value);
- }
-
- /**
- * Unset the value for a given offset.
- *
- * @param mixed $offset
- * @return void
- */
- #[\ReturnTypeWillChange]
- public function offsetUnset($offset)
- {
- unset($this->attributes[$offset], $this->relations[$offset]);
- }
-
- /**
- * Determine if an attribute or relation exists on the model.
- *
- * @param string $key
- * @return bool
- */
- public function __isset($key)
- {
- return $this->offsetExists($key);
- }
-
- /**
- * Unset an attribute on the model.
- *
- * @param string $key
- * @return void
- */
- public function __unset($key)
- {
- $this->offsetUnset($key);
- }
-
- /**
- * Handle dynamic method calls into the model.
- *
- * @param string $method
- * @param array $parameters
- * @return mixed
- */
- public function __call($method, $parameters)
- {
- if (in_array($method, ['increment', 'decrement'])) {
- return $this->$method(...$parameters);
- }
-
- if ($resolver = (static::$relationResolvers[get_class($this)][$method] ?? null)) {
- return $resolver($this);
- }
-
- return $this->forwardCallTo($this->newQuery(), $method, $parameters);
- }
-
- /**
- * Handle dynamic static method calls into the model.
- *
- * @param string $method
- * @param array $parameters
- * @return mixed
- */
- public static function __callStatic($method, $parameters)
- {
- return (new static)->$method(...$parameters);
- }
-
- /**
- * Convert the model to its string representation.
- *
- * @return string
- */
- public function __toString()
- {
- return $this->escapeWhenCastingToString
- ? e($this->toJson())
- : $this->toJson();
- }
-
- /**
- * Indicate that the object's string representation should be escaped when __toString is invoked.
- *
- * @param bool $escape
- * @return $this
- */
- public function escapeWhenCastingToString($escape = true)
- {
- $this->escapeWhenCastingToString = $escape;
-
- return $this;
- }
-
- /**
- * Prepare the object for serialization.
- *
- * @return array
- */
- public function __sleep()
- {
- $this->mergeAttributesFromClassCasts();
-
- $this->classCastCache = [];
-
- return array_keys(get_object_vars($this));
- }
-
- /**
- * When a model is being unserialized, check if it needs to be booted.
- *
- * @return void
- */
- public function __wakeup()
- {
- $this->bootIfNotBooted();
-
- $this->initializeTraits();
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/ModelNotFoundException.php b/vendor/illuminate/database/Eloquent/ModelNotFoundException.php
deleted file mode 100755
index c35598bd..00000000
--- a/vendor/illuminate/database/Eloquent/ModelNotFoundException.php
+++ /dev/null
@@ -1,66 +0,0 @@
-model = $model;
- $this->ids = Arr::wrap($ids);
-
- $this->message = "No query results for model [{$model}]";
-
- if (count($this->ids) > 0) {
- $this->message .= ' '.implode(', ', $this->ids);
- } else {
- $this->message .= '.';
- }
-
- return $this;
- }
-
- /**
- * Get the affected Eloquent model.
- *
- * @return string
- */
- public function getModel()
- {
- return $this->model;
- }
-
- /**
- * Get the affected Eloquent model IDs.
- *
- * @return int|array
- */
- public function getIds()
- {
- return $this->ids;
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Prunable.php b/vendor/illuminate/database/Eloquent/Prunable.php
deleted file mode 100644
index b4ce1b03..00000000
--- a/vendor/illuminate/database/Eloquent/Prunable.php
+++ /dev/null
@@ -1,67 +0,0 @@
-prunable()
- ->when(in_array(SoftDeletes::class, class_uses_recursive(get_class($this))), function ($query) {
- $query->withTrashed();
- })->chunkById($chunkSize, function ($models) use (&$total) {
- $models->each->prune();
-
- $total += $models->count();
-
- event(new ModelsPruned(static::class, $total));
- });
-
- return $total;
- }
-
- /**
- * Get the prunable model query.
- *
- * @return \Illuminate\Database\Eloquent\Builder
- */
- public function prunable()
- {
- throw new LogicException('Please implement the prunable method on your model.');
- }
-
- /**
- * Prune the model in the database.
- *
- * @return bool|null
- */
- public function prune()
- {
- $this->pruning();
-
- return in_array(SoftDeletes::class, class_uses_recursive(get_class($this)))
- ? $this->forceDelete()
- : $this->delete();
- }
-
- /**
- * Prepare the model for pruning.
- *
- * @return void
- */
- protected function pruning()
- {
- //
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/QueueEntityResolver.php b/vendor/illuminate/database/Eloquent/QueueEntityResolver.php
deleted file mode 100644
index 22fccf24..00000000
--- a/vendor/illuminate/database/Eloquent/QueueEntityResolver.php
+++ /dev/null
@@ -1,29 +0,0 @@
-find($id);
-
- if ($instance) {
- return $instance;
- }
-
- throw new EntityNotFoundException($type, $id);
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/RelationNotFoundException.php b/vendor/illuminate/database/Eloquent/RelationNotFoundException.php
deleted file mode 100755
index 73257bb1..00000000
--- a/vendor/illuminate/database/Eloquent/RelationNotFoundException.php
+++ /dev/null
@@ -1,46 +0,0 @@
-model = $class;
- $instance->relation = $relation;
-
- return $instance;
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Relations/BelongsTo.php b/vendor/illuminate/database/Eloquent/Relations/BelongsTo.php
deleted file mode 100755
index 8646822b..00000000
--- a/vendor/illuminate/database/Eloquent/Relations/BelongsTo.php
+++ /dev/null
@@ -1,383 +0,0 @@
-ownerKey = $ownerKey;
- $this->relationName = $relationName;
- $this->foreignKey = $foreignKey;
-
- // In the underlying base relationship class, this variable is referred to as
- // the "parent" since most relationships are not inversed. But, since this
- // one is we will create a "child" variable for much better readability.
- $this->child = $child;
-
- parent::__construct($query, $child);
- }
-
- /**
- * Get the results of the relationship.
- *
- * @return mixed
- */
- public function getResults()
- {
- if (is_null($this->child->{$this->foreignKey})) {
- return $this->getDefaultFor($this->parent);
- }
-
- return $this->query->first() ?: $this->getDefaultFor($this->parent);
- }
-
- /**
- * Set the base constraints on the relation query.
- *
- * @return void
- */
- public function addConstraints()
- {
- if (static::$constraints) {
- // For belongs to relationships, which are essentially the inverse of has one
- // or has many relationships, we need to actually query on the primary key
- // of the related models matching on the foreign key that's on a parent.
- $table = $this->related->getTable();
-
- $this->query->where($table.'.'.$this->ownerKey, '=', $this->child->{$this->foreignKey});
- }
- }
-
- /**
- * Set the constraints for an eager load of the relation.
- *
- * @param array $models
- * @return void
- */
- public function addEagerConstraints(array $models)
- {
- // We'll grab the primary key name of the related models since it could be set to
- // a non-standard name and not "id". We will then construct the constraint for
- // our eagerly loading query so it returns the proper models from execution.
- $key = $this->related->getTable().'.'.$this->ownerKey;
-
- $whereIn = $this->whereInMethod($this->related, $this->ownerKey);
-
- $this->query->{$whereIn}($key, $this->getEagerModelKeys($models));
- }
-
- /**
- * Gather the keys from an array of related models.
- *
- * @param array $models
- * @return array
- */
- protected function getEagerModelKeys(array $models)
- {
- $keys = [];
-
- // First we need to gather all of the keys from the parent models so we know what
- // to query for via the eager loading query. We will add them to an array then
- // execute a "where in" statement to gather up all of those related records.
- foreach ($models as $model) {
- if (! is_null($value = $model->{$this->foreignKey})) {
- $keys[] = $value;
- }
- }
-
- sort($keys);
-
- return array_values(array_unique($keys));
- }
-
- /**
- * Initialize the relation on a set of models.
- *
- * @param array $models
- * @param string $relation
- * @return array
- */
- public function initRelation(array $models, $relation)
- {
- foreach ($models as $model) {
- $model->setRelation($relation, $this->getDefaultFor($model));
- }
-
- return $models;
- }
-
- /**
- * Match the eagerly loaded results to their parents.
- *
- * @param array $models
- * @param \Illuminate\Database\Eloquent\Collection $results
- * @param string $relation
- * @return array
- */
- public function match(array $models, Collection $results, $relation)
- {
- $foreign = $this->foreignKey;
-
- $owner = $this->ownerKey;
-
- // First we will get to build a dictionary of the child models by their primary
- // key of the relationship, then we can easily match the children back onto
- // the parents using that dictionary and the primary key of the children.
- $dictionary = [];
-
- foreach ($results as $result) {
- $attribute = $this->getDictionaryKey($result->getAttribute($owner));
-
- $dictionary[$attribute] = $result;
- }
-
- // Once we have the dictionary constructed, we can loop through all the parents
- // and match back onto their children using these keys of the dictionary and
- // the primary key of the children to map them onto the correct instances.
- foreach ($models as $model) {
- $attribute = $this->getDictionaryKey($model->{$foreign});
-
- if (isset($dictionary[$attribute])) {
- $model->setRelation($relation, $dictionary[$attribute]);
- }
- }
-
- return $models;
- }
-
- /**
- * Associate the model instance to the given parent.
- *
- * @param \Illuminate\Database\Eloquent\Model|int|string $model
- * @return \Illuminate\Database\Eloquent\Model
- */
- public function associate($model)
- {
- $ownerKey = $model instanceof Model ? $model->getAttribute($this->ownerKey) : $model;
-
- $this->child->setAttribute($this->foreignKey, $ownerKey);
-
- if ($model instanceof Model) {
- $this->child->setRelation($this->relationName, $model);
- } else {
- $this->child->unsetRelation($this->relationName);
- }
-
- return $this->child;
- }
-
- /**
- * Dissociate previously associated model from the given parent.
- *
- * @return \Illuminate\Database\Eloquent\Model
- */
- public function dissociate()
- {
- $this->child->setAttribute($this->foreignKey, null);
-
- return $this->child->setRelation($this->relationName, null);
- }
-
- /**
- * Alias of "dissociate" method.
- *
- * @return \Illuminate\Database\Eloquent\Model
- */
- public function disassociate()
- {
- return $this->dissociate();
- }
-
- /**
- * Add the constraints for a relationship query.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @param \Illuminate\Database\Eloquent\Builder $parentQuery
- * @param array|mixed $columns
- * @return \Illuminate\Database\Eloquent\Builder
- */
- public function getRelationExistenceQuery(Builder $query, Builder $parentQuery, $columns = ['*'])
- {
- if ($parentQuery->getQuery()->from == $query->getQuery()->from) {
- return $this->getRelationExistenceQueryForSelfRelation($query, $parentQuery, $columns);
- }
-
- return $query->select($columns)->whereColumn(
- $this->getQualifiedForeignKeyName(), '=', $query->qualifyColumn($this->ownerKey)
- );
- }
-
- /**
- * Add the constraints for a relationship query on the same table.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @param \Illuminate\Database\Eloquent\Builder $parentQuery
- * @param array|mixed $columns
- * @return \Illuminate\Database\Eloquent\Builder
- */
- public function getRelationExistenceQueryForSelfRelation(Builder $query, Builder $parentQuery, $columns = ['*'])
- {
- $query->select($columns)->from(
- $query->getModel()->getTable().' as '.$hash = $this->getRelationCountHash()
- );
-
- $query->getModel()->setTable($hash);
-
- return $query->whereColumn(
- $hash.'.'.$this->ownerKey, '=', $this->getQualifiedForeignKeyName()
- );
- }
-
- /**
- * Determine if the related model has an auto-incrementing ID.
- *
- * @return bool
- */
- protected function relationHasIncrementingId()
- {
- return $this->related->getIncrementing() &&
- in_array($this->related->getKeyType(), ['int', 'integer']);
- }
-
- /**
- * Make a new related instance for the given model.
- *
- * @param \Illuminate\Database\Eloquent\Model $parent
- * @return \Illuminate\Database\Eloquent\Model
- */
- protected function newRelatedInstanceFor(Model $parent)
- {
- return $this->related->newInstance();
- }
-
- /**
- * Get the child of the relationship.
- *
- * @return \Illuminate\Database\Eloquent\Model
- */
- public function getChild()
- {
- return $this->child;
- }
-
- /**
- * Get the foreign key of the relationship.
- *
- * @return string
- */
- public function getForeignKeyName()
- {
- return $this->foreignKey;
- }
-
- /**
- * Get the fully qualified foreign key of the relationship.
- *
- * @return string
- */
- public function getQualifiedForeignKeyName()
- {
- return $this->child->qualifyColumn($this->foreignKey);
- }
-
- /**
- * Get the key value of the child's foreign key.
- *
- * @return mixed
- */
- public function getParentKey()
- {
- return $this->child->{$this->foreignKey};
- }
-
- /**
- * Get the associated key of the relationship.
- *
- * @return string
- */
- public function getOwnerKeyName()
- {
- return $this->ownerKey;
- }
-
- /**
- * Get the fully qualified associated key of the relationship.
- *
- * @return string
- */
- public function getQualifiedOwnerKeyName()
- {
- return $this->related->qualifyColumn($this->ownerKey);
- }
-
- /**
- * Get the value of the model's associated key.
- *
- * @param \Illuminate\Database\Eloquent\Model $model
- * @return mixed
- */
- protected function getRelatedKeyFrom(Model $model)
- {
- return $model->{$this->ownerKey};
- }
-
- /**
- * Get the name of the relationship.
- *
- * @return string
- */
- public function getRelationName()
- {
- return $this->relationName;
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Relations/BelongsToMany.php b/vendor/illuminate/database/Eloquent/Relations/BelongsToMany.php
deleted file mode 100755
index 5c93b8f8..00000000
--- a/vendor/illuminate/database/Eloquent/Relations/BelongsToMany.php
+++ /dev/null
@@ -1,1412 +0,0 @@
-parentKey = $parentKey;
- $this->relatedKey = $relatedKey;
- $this->relationName = $relationName;
- $this->relatedPivotKey = $relatedPivotKey;
- $this->foreignPivotKey = $foreignPivotKey;
- $this->table = $this->resolveTableName($table);
-
- parent::__construct($query, $parent);
- }
-
- /**
- * Attempt to resolve the intermediate table name from the given string.
- *
- * @param string $table
- * @return string
- */
- protected function resolveTableName($table)
- {
- if (! Str::contains($table, '\\') || ! class_exists($table)) {
- return $table;
- }
-
- $model = new $table;
-
- if (! $model instanceof Model) {
- return $table;
- }
-
- if (in_array(AsPivot::class, class_uses_recursive($model))) {
- $this->using($table);
- }
-
- return $model->getTable();
- }
-
- /**
- * Set the base constraints on the relation query.
- *
- * @return void
- */
- public function addConstraints()
- {
- $this->performJoin();
-
- if (static::$constraints) {
- $this->addWhereConstraints();
- }
- }
-
- /**
- * Set the join clause for the relation query.
- *
- * @param \Illuminate\Database\Eloquent\Builder|null $query
- * @return $this
- */
- protected function performJoin($query = null)
- {
- $query = $query ?: $this->query;
-
- // We need to join to the intermediate table on the related model's primary
- // key column with the intermediate table's foreign key for the related
- // model instance. Then we can set the "where" for the parent models.
- $query->join(
- $this->table,
- $this->getQualifiedRelatedKeyName(),
- '=',
- $this->getQualifiedRelatedPivotKeyName()
- );
-
- return $this;
- }
-
- /**
- * Set the where clause for the relation query.
- *
- * @return $this
- */
- protected function addWhereConstraints()
- {
- $this->query->where(
- $this->getQualifiedForeignPivotKeyName(), '=', $this->parent->{$this->parentKey}
- );
-
- return $this;
- }
-
- /**
- * Set the constraints for an eager load of the relation.
- *
- * @param array $models
- * @return void
- */
- public function addEagerConstraints(array $models)
- {
- $whereIn = $this->whereInMethod($this->parent, $this->parentKey);
-
- $this->query->{$whereIn}(
- $this->getQualifiedForeignPivotKeyName(),
- $this->getKeys($models, $this->parentKey)
- );
- }
-
- /**
- * Initialize the relation on a set of models.
- *
- * @param array $models
- * @param string $relation
- * @return array
- */
- public function initRelation(array $models, $relation)
- {
- foreach ($models as $model) {
- $model->setRelation($relation, $this->related->newCollection());
- }
-
- return $models;
- }
-
- /**
- * Match the eagerly loaded results to their parents.
- *
- * @param array $models
- * @param \Illuminate\Database\Eloquent\Collection $results
- * @param string $relation
- * @return array
- */
- public function match(array $models, Collection $results, $relation)
- {
- $dictionary = $this->buildDictionary($results);
-
- // Once we have an array dictionary of child objects we can easily match the
- // children back to their parent using the dictionary and the keys on the
- // parent models. Then we should return these hydrated models back out.
- foreach ($models as $model) {
- $key = $this->getDictionaryKey($model->{$this->parentKey});
-
- if (isset($dictionary[$key])) {
- $model->setRelation(
- $relation, $this->related->newCollection($dictionary[$key])
- );
- }
- }
-
- return $models;
- }
-
- /**
- * Build model dictionary keyed by the relation's foreign key.
- *
- * @param \Illuminate\Database\Eloquent\Collection $results
- * @return array
- */
- protected function buildDictionary(Collection $results)
- {
- // First we will build a dictionary of child models keyed by the foreign key
- // of the relation so that we will easily and quickly match them to their
- // parents without having a possibly slow inner loops for every models.
- $dictionary = [];
-
- foreach ($results as $result) {
- $value = $this->getDictionaryKey($result->{$this->accessor}->{$this->foreignPivotKey});
-
- $dictionary[$value][] = $result;
- }
-
- return $dictionary;
- }
-
- /**
- * Get the class being used for pivot models.
- *
- * @return string
- */
- public function getPivotClass()
- {
- return $this->using ?? Pivot::class;
- }
-
- /**
- * Specify the custom pivot model to use for the relationship.
- *
- * @param string $class
- * @return $this
- */
- public function using($class)
- {
- $this->using = $class;
-
- return $this;
- }
-
- /**
- * Specify the custom pivot accessor to use for the relationship.
- *
- * @param string $accessor
- * @return $this
- */
- public function as($accessor)
- {
- $this->accessor = $accessor;
-
- return $this;
- }
-
- /**
- * Set a where clause for a pivot table column.
- *
- * @param string $column
- * @param mixed $operator
- * @param mixed $value
- * @param string $boolean
- * @return $this
- */
- public function wherePivot($column, $operator = null, $value = null, $boolean = 'and')
- {
- $this->pivotWheres[] = func_get_args();
-
- return $this->where($this->qualifyPivotColumn($column), $operator, $value, $boolean);
- }
-
- /**
- * Set a "where between" clause for a pivot table column.
- *
- * @param string $column
- * @param array $values
- * @param string $boolean
- * @param bool $not
- * @return $this
- */
- public function wherePivotBetween($column, array $values, $boolean = 'and', $not = false)
- {
- return $this->whereBetween($this->qualifyPivotColumn($column), $values, $boolean, $not);
- }
-
- /**
- * Set a "or where between" clause for a pivot table column.
- *
- * @param string $column
- * @param array $values
- * @return $this
- */
- public function orWherePivotBetween($column, array $values)
- {
- return $this->wherePivotBetween($column, $values, 'or');
- }
-
- /**
- * Set a "where pivot not between" clause for a pivot table column.
- *
- * @param string $column
- * @param array $values
- * @param string $boolean
- * @return $this
- */
- public function wherePivotNotBetween($column, array $values, $boolean = 'and')
- {
- return $this->wherePivotBetween($column, $values, $boolean, true);
- }
-
- /**
- * Set a "or where not between" clause for a pivot table column.
- *
- * @param string $column
- * @param array $values
- * @return $this
- */
- public function orWherePivotNotBetween($column, array $values)
- {
- return $this->wherePivotBetween($column, $values, 'or', true);
- }
-
- /**
- * Set a "where in" clause for a pivot table column.
- *
- * @param string $column
- * @param mixed $values
- * @param string $boolean
- * @param bool $not
- * @return $this
- */
- public function wherePivotIn($column, $values, $boolean = 'and', $not = false)
- {
- $this->pivotWhereIns[] = func_get_args();
-
- return $this->whereIn($this->qualifyPivotColumn($column), $values, $boolean, $not);
- }
-
- /**
- * Set an "or where" clause for a pivot table column.
- *
- * @param string $column
- * @param mixed $operator
- * @param mixed $value
- * @return $this
- */
- public function orWherePivot($column, $operator = null, $value = null)
- {
- return $this->wherePivot($column, $operator, $value, 'or');
- }
-
- /**
- * Set a where clause for a pivot table column.
- *
- * In addition, new pivot records will receive this value.
- *
- * @param string|array $column
- * @param mixed $value
- * @return $this
- *
- * @throws \InvalidArgumentException
- */
- public function withPivotValue($column, $value = null)
- {
- if (is_array($column)) {
- foreach ($column as $name => $value) {
- $this->withPivotValue($name, $value);
- }
-
- return $this;
- }
-
- if (is_null($value)) {
- throw new InvalidArgumentException('The provided value may not be null.');
- }
-
- $this->pivotValues[] = compact('column', 'value');
-
- return $this->wherePivot($column, '=', $value);
- }
-
- /**
- * Set an "or where in" clause for a pivot table column.
- *
- * @param string $column
- * @param mixed $values
- * @return $this
- */
- public function orWherePivotIn($column, $values)
- {
- return $this->wherePivotIn($column, $values, 'or');
- }
-
- /**
- * Set a "where not in" clause for a pivot table column.
- *
- * @param string $column
- * @param mixed $values
- * @param string $boolean
- * @return $this
- */
- public function wherePivotNotIn($column, $values, $boolean = 'and')
- {
- return $this->wherePivotIn($column, $values, $boolean, true);
- }
-
- /**
- * Set an "or where not in" clause for a pivot table column.
- *
- * @param string $column
- * @param mixed $values
- * @return $this
- */
- public function orWherePivotNotIn($column, $values)
- {
- return $this->wherePivotNotIn($column, $values, 'or');
- }
-
- /**
- * Set a "where null" clause for a pivot table column.
- *
- * @param string $column
- * @param string $boolean
- * @param bool $not
- * @return $this
- */
- public function wherePivotNull($column, $boolean = 'and', $not = false)
- {
- $this->pivotWhereNulls[] = func_get_args();
-
- return $this->whereNull($this->qualifyPivotColumn($column), $boolean, $not);
- }
-
- /**
- * Set a "where not null" clause for a pivot table column.
- *
- * @param string $column
- * @param string $boolean
- * @return $this
- */
- public function wherePivotNotNull($column, $boolean = 'and')
- {
- return $this->wherePivotNull($column, $boolean, true);
- }
-
- /**
- * Set a "or where null" clause for a pivot table column.
- *
- * @param string $column
- * @param bool $not
- * @return $this
- */
- public function orWherePivotNull($column, $not = false)
- {
- return $this->wherePivotNull($column, 'or', $not);
- }
-
- /**
- * Set a "or where not null" clause for a pivot table column.
- *
- * @param string $column
- * @return $this
- */
- public function orWherePivotNotNull($column)
- {
- return $this->orWherePivotNull($column, true);
- }
-
- /**
- * Add an "order by" clause for a pivot table column.
- *
- * @param string $column
- * @param string $direction
- * @return $this
- */
- public function orderByPivot($column, $direction = 'asc')
- {
- return $this->orderBy($this->qualifyPivotColumn($column), $direction);
- }
-
- /**
- * Find a related model by its primary key or return a new instance of the related model.
- *
- * @param mixed $id
- * @param array $columns
- * @return \Illuminate\Support\Collection|\Illuminate\Database\Eloquent\Model
- */
- public function findOrNew($id, $columns = ['*'])
- {
- if (is_null($instance = $this->find($id, $columns))) {
- $instance = $this->related->newInstance();
- }
-
- return $instance;
- }
-
- /**
- * Get the first related model record matching the attributes or instantiate it.
- *
- * @param array $attributes
- * @return \Illuminate\Database\Eloquent\Model
- */
- public function firstOrNew(array $attributes)
- {
- if (is_null($instance = $this->where($attributes)->first())) {
- $instance = $this->related->newInstance($attributes);
- }
-
- return $instance;
- }
-
- /**
- * Get the first related record matching the attributes or create it.
- *
- * @param array $attributes
- * @param array $joining
- * @param bool $touch
- * @return \Illuminate\Database\Eloquent\Model
- */
- public function firstOrCreate(array $attributes, array $joining = [], $touch = true)
- {
- if (is_null($instance = $this->where($attributes)->first())) {
- $instance = $this->create($attributes, $joining, $touch);
- }
-
- return $instance;
- }
-
- /**
- * Create or update a related record matching the attributes, and fill it with values.
- *
- * @param array $attributes
- * @param array $values
- * @param array $joining
- * @param bool $touch
- * @return \Illuminate\Database\Eloquent\Model
- */
- public function updateOrCreate(array $attributes, array $values = [], array $joining = [], $touch = true)
- {
- if (is_null($instance = $this->where($attributes)->first())) {
- return $this->create($values, $joining, $touch);
- }
-
- $instance->fill($values);
-
- $instance->save(['touch' => false]);
-
- return $instance;
- }
-
- /**
- * Find a related model by its primary key.
- *
- * @param mixed $id
- * @param array $columns
- * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|null
- */
- public function find($id, $columns = ['*'])
- {
- if (! $id instanceof Model && (is_array($id) || $id instanceof Arrayable)) {
- return $this->findMany($id, $columns);
- }
-
- return $this->where(
- $this->getRelated()->getQualifiedKeyName(), '=', $this->parseId($id)
- )->first($columns);
- }
-
- /**
- * Find multiple related models by their primary keys.
- *
- * @param \Illuminate\Contracts\Support\Arrayable|array $ids
- * @param array $columns
- * @return \Illuminate\Database\Eloquent\Collection
- */
- public function findMany($ids, $columns = ['*'])
- {
- $ids = $ids instanceof Arrayable ? $ids->toArray() : $ids;
-
- if (empty($ids)) {
- return $this->getRelated()->newCollection();
- }
-
- return $this->whereIn(
- $this->getRelated()->getQualifiedKeyName(), $this->parseIds($ids)
- )->get($columns);
- }
-
- /**
- * Find a related model by its primary key or throw an exception.
- *
- * @param mixed $id
- * @param array $columns
- * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection
- *
- * @throws \Illuminate\Database\Eloquent\ModelNotFoundException
- */
- public function findOrFail($id, $columns = ['*'])
- {
- $result = $this->find($id, $columns);
-
- $id = $id instanceof Arrayable ? $id->toArray() : $id;
-
- if (is_array($id)) {
- if (count($result) === count(array_unique($id))) {
- return $result;
- }
- } elseif (! is_null($result)) {
- return $result;
- }
-
- throw (new ModelNotFoundException)->setModel(get_class($this->related), $id);
- }
-
- /**
- * Add a basic where clause to the query, and return the first result.
- *
- * @param \Closure|string|array $column
- * @param mixed $operator
- * @param mixed $value
- * @param string $boolean
- * @return \Illuminate\Database\Eloquent\Model|static
- */
- public function firstWhere($column, $operator = null, $value = null, $boolean = 'and')
- {
- return $this->where($column, $operator, $value, $boolean)->first();
- }
-
- /**
- * Execute the query and get the first result.
- *
- * @param array $columns
- * @return mixed
- */
- public function first($columns = ['*'])
- {
- $results = $this->take(1)->get($columns);
-
- return count($results) > 0 ? $results->first() : null;
- }
-
- /**
- * Execute the query and get the first result or throw an exception.
- *
- * @param array $columns
- * @return \Illuminate\Database\Eloquent\Model|static
- *
- * @throws \Illuminate\Database\Eloquent\ModelNotFoundException
- */
- public function firstOrFail($columns = ['*'])
- {
- if (! is_null($model = $this->first($columns))) {
- return $model;
- }
-
- throw (new ModelNotFoundException)->setModel(get_class($this->related));
- }
-
- /**
- * Get the results of the relationship.
- *
- * @return mixed
- */
- public function getResults()
- {
- return ! is_null($this->parent->{$this->parentKey})
- ? $this->get()
- : $this->related->newCollection();
- }
-
- /**
- * Execute the query as a "select" statement.
- *
- * @param array $columns
- * @return \Illuminate\Database\Eloquent\Collection
- */
- public function get($columns = ['*'])
- {
- // First we'll add the proper select columns onto the query so it is run with
- // the proper columns. Then, we will get the results and hydrate our pivot
- // models with the result of those columns as a separate model relation.
- $builder = $this->query->applyScopes();
-
- $columns = $builder->getQuery()->columns ? [] : $columns;
-
- $models = $builder->addSelect(
- $this->shouldSelect($columns)
- )->getModels();
-
- $this->hydratePivotRelation($models);
-
- // If we actually found models we will also eager load any relationships that
- // have been specified as needing to be eager loaded. This will solve the
- // n + 1 query problem for the developer and also increase performance.
- if (count($models) > 0) {
- $models = $builder->eagerLoadRelations($models);
- }
-
- return $this->related->newCollection($models);
- }
-
- /**
- * Get the select columns for the relation query.
- *
- * @param array $columns
- * @return array
- */
- protected function shouldSelect(array $columns = ['*'])
- {
- if ($columns == ['*']) {
- $columns = [$this->related->getTable().'.*'];
- }
-
- return array_merge($columns, $this->aliasedPivotColumns());
- }
-
- /**
- * Get the pivot columns for the relation.
- *
- * "pivot_" is prefixed ot each column for easy removal later.
- *
- * @return array
- */
- protected function aliasedPivotColumns()
- {
- $defaults = [$this->foreignPivotKey, $this->relatedPivotKey];
-
- return collect(array_merge($defaults, $this->pivotColumns))->map(function ($column) {
- return $this->qualifyPivotColumn($column).' as pivot_'.$column;
- })->unique()->all();
- }
-
- /**
- * Get a paginator for the "select" statement.
- *
- * @param int|null $perPage
- * @param array $columns
- * @param string $pageName
- * @param int|null $page
- * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator
- */
- public function paginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null)
- {
- $this->query->addSelect($this->shouldSelect($columns));
-
- return tap($this->query->paginate($perPage, $columns, $pageName, $page), function ($paginator) {
- $this->hydratePivotRelation($paginator->items());
- });
- }
-
- /**
- * Paginate the given query into a simple paginator.
- *
- * @param int|null $perPage
- * @param array $columns
- * @param string $pageName
- * @param int|null $page
- * @return \Illuminate\Contracts\Pagination\Paginator
- */
- public function simplePaginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null)
- {
- $this->query->addSelect($this->shouldSelect($columns));
-
- return tap($this->query->simplePaginate($perPage, $columns, $pageName, $page), function ($paginator) {
- $this->hydratePivotRelation($paginator->items());
- });
- }
-
- /**
- * Paginate the given query into a cursor paginator.
- *
- * @param int|null $perPage
- * @param array $columns
- * @param string $cursorName
- * @param string|null $cursor
- * @return \Illuminate\Contracts\Pagination\CursorPaginator
- */
- public function cursorPaginate($perPage = null, $columns = ['*'], $cursorName = 'cursor', $cursor = null)
- {
- $this->query->addSelect($this->shouldSelect($columns));
-
- return tap($this->query->cursorPaginate($perPage, $columns, $cursorName, $cursor), function ($paginator) {
- $this->hydratePivotRelation($paginator->items());
- });
- }
-
- /**
- * Chunk the results of the query.
- *
- * @param int $count
- * @param callable $callback
- * @return bool
- */
- public function chunk($count, callable $callback)
- {
- return $this->prepareQueryBuilder()->chunk($count, function ($results, $page) use ($callback) {
- $this->hydratePivotRelation($results->all());
-
- return $callback($results, $page);
- });
- }
-
- /**
- * Chunk the results of a query by comparing numeric IDs.
- *
- * @param int $count
- * @param callable $callback
- * @param string|null $column
- * @param string|null $alias
- * @return bool
- */
- public function chunkById($count, callable $callback, $column = null, $alias = null)
- {
- $this->prepareQueryBuilder();
-
- $column = $column ?? $this->getRelated()->qualifyColumn(
- $this->getRelatedKeyName()
- );
-
- $alias = $alias ?? $this->getRelatedKeyName();
-
- return $this->query->chunkById($count, function ($results) use ($callback) {
- $this->hydratePivotRelation($results->all());
-
- return $callback($results);
- }, $column, $alias);
- }
-
- /**
- * Execute a callback over each item while chunking.
- *
- * @param callable $callback
- * @param int $count
- * @return bool
- */
- public function each(callable $callback, $count = 1000)
- {
- return $this->chunk($count, function ($results) use ($callback) {
- foreach ($results as $key => $value) {
- if ($callback($value, $key) === false) {
- return false;
- }
- }
- });
- }
-
- /**
- * Query lazily, by chunks of the given size.
- *
- * @param int $chunkSize
- * @return \Illuminate\Support\LazyCollection
- */
- public function lazy($chunkSize = 1000)
- {
- return $this->prepareQueryBuilder()->lazy($chunkSize)->map(function ($model) {
- $this->hydratePivotRelation([$model]);
-
- return $model;
- });
- }
-
- /**
- * Query lazily, by chunking the results of a query by comparing IDs.
- *
- * @param int $count
- * @param string|null $column
- * @param string|null $alias
- * @return \Illuminate\Support\LazyCollection
- */
- public function lazyById($chunkSize = 1000, $column = null, $alias = null)
- {
- $column = $column ?? $this->getRelated()->qualifyColumn(
- $this->getRelatedKeyName()
- );
-
- $alias = $alias ?? $this->getRelatedKeyName();
-
- return $this->prepareQueryBuilder()->lazyById($chunkSize, $column, $alias)->map(function ($model) {
- $this->hydratePivotRelation([$model]);
-
- return $model;
- });
- }
-
- /**
- * Get a lazy collection for the given query.
- *
- * @return \Illuminate\Support\LazyCollection
- */
- public function cursor()
- {
- return $this->prepareQueryBuilder()->cursor()->map(function ($model) {
- $this->hydratePivotRelation([$model]);
-
- return $model;
- });
- }
-
- /**
- * Prepare the query builder for query execution.
- *
- * @return \Illuminate\Database\Eloquent\Builder
- */
- protected function prepareQueryBuilder()
- {
- return $this->query->addSelect($this->shouldSelect());
- }
-
- /**
- * Hydrate the pivot table relationship on the models.
- *
- * @param array $models
- * @return void
- */
- protected function hydratePivotRelation(array $models)
- {
- // To hydrate the pivot relationship, we will just gather the pivot attributes
- // and create a new Pivot model, which is basically a dynamic model that we
- // will set the attributes, table, and connections on it so it will work.
- foreach ($models as $model) {
- $model->setRelation($this->accessor, $this->newExistingPivot(
- $this->migratePivotAttributes($model)
- ));
- }
- }
-
- /**
- * Get the pivot attributes from a model.
- *
- * @param \Illuminate\Database\Eloquent\Model $model
- * @return array
- */
- protected function migratePivotAttributes(Model $model)
- {
- $values = [];
-
- foreach ($model->getAttributes() as $key => $value) {
- // To get the pivots attributes we will just take any of the attributes which
- // begin with "pivot_" and add those to this arrays, as well as unsetting
- // them from the parent's models since they exist in a different table.
- if (strpos($key, 'pivot_') === 0) {
- $values[substr($key, 6)] = $value;
-
- unset($model->$key);
- }
- }
-
- return $values;
- }
-
- /**
- * If we're touching the parent model, touch.
- *
- * @return void
- */
- public function touchIfTouching()
- {
- if ($this->touchingParent()) {
- $this->getParent()->touch();
- }
-
- if ($this->getParent()->touches($this->relationName)) {
- $this->touch();
- }
- }
-
- /**
- * Determine if we should touch the parent on sync.
- *
- * @return bool
- */
- protected function touchingParent()
- {
- return $this->getRelated()->touches($this->guessInverseRelation());
- }
-
- /**
- * Attempt to guess the name of the inverse of the relation.
- *
- * @return string
- */
- protected function guessInverseRelation()
- {
- return Str::camel(Str::pluralStudly(class_basename($this->getParent())));
- }
-
- /**
- * Touch all of the related models for the relationship.
- *
- * E.g.: Touch all roles associated with this user.
- *
- * @return void
- */
- public function touch()
- {
- $key = $this->getRelated()->getKeyName();
-
- $columns = [
- $this->related->getUpdatedAtColumn() => $this->related->freshTimestampString(),
- ];
-
- // If we actually have IDs for the relation, we will run the query to update all
- // the related model's timestamps, to make sure these all reflect the changes
- // to the parent models. This will help us keep any caching synced up here.
- if (count($ids = $this->allRelatedIds()) > 0) {
- $this->getRelated()->newQueryWithoutRelationships()->whereIn($key, $ids)->update($columns);
- }
- }
-
- /**
- * Get all of the IDs for the related models.
- *
- * @return \Illuminate\Support\Collection
- */
- public function allRelatedIds()
- {
- return $this->newPivotQuery()->pluck($this->relatedPivotKey);
- }
-
- /**
- * Save a new model and attach it to the parent model.
- *
- * @param \Illuminate\Database\Eloquent\Model $model
- * @param array $pivotAttributes
- * @param bool $touch
- * @return \Illuminate\Database\Eloquent\Model
- */
- public function save(Model $model, array $pivotAttributes = [], $touch = true)
- {
- $model->save(['touch' => false]);
-
- $this->attach($model, $pivotAttributes, $touch);
-
- return $model;
- }
-
- /**
- * Save an array of new models and attach them to the parent model.
- *
- * @param \Illuminate\Support\Collection|array $models
- * @param array $pivotAttributes
- * @return array
- */
- public function saveMany($models, array $pivotAttributes = [])
- {
- foreach ($models as $key => $model) {
- $this->save($model, (array) ($pivotAttributes[$key] ?? []), false);
- }
-
- $this->touchIfTouching();
-
- return $models;
- }
-
- /**
- * Create a new instance of the related model.
- *
- * @param array $attributes
- * @param array $joining
- * @param bool $touch
- * @return \Illuminate\Database\Eloquent\Model
- */
- public function create(array $attributes = [], array $joining = [], $touch = true)
- {
- $instance = $this->related->newInstance($attributes);
-
- // Once we save the related model, we need to attach it to the base model via
- // through intermediate table so we'll use the existing "attach" method to
- // accomplish this which will insert the record and any more attributes.
- $instance->save(['touch' => false]);
-
- $this->attach($instance, $joining, $touch);
-
- return $instance;
- }
-
- /**
- * Create an array of new instances of the related models.
- *
- * @param iterable $records
- * @param array $joinings
- * @return array
- */
- public function createMany(iterable $records, array $joinings = [])
- {
- $instances = [];
-
- foreach ($records as $key => $record) {
- $instances[] = $this->create($record, (array) ($joinings[$key] ?? []), false);
- }
-
- $this->touchIfTouching();
-
- return $instances;
- }
-
- /**
- * Add the constraints for a relationship query.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @param \Illuminate\Database\Eloquent\Builder $parentQuery
- * @param array|mixed $columns
- * @return \Illuminate\Database\Eloquent\Builder
- */
- public function getRelationExistenceQuery(Builder $query, Builder $parentQuery, $columns = ['*'])
- {
- if ($parentQuery->getQuery()->from == $query->getQuery()->from) {
- return $this->getRelationExistenceQueryForSelfJoin($query, $parentQuery, $columns);
- }
-
- $this->performJoin($query);
-
- return parent::getRelationExistenceQuery($query, $parentQuery, $columns);
- }
-
- /**
- * Add the constraints for a relationship query on the same table.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @param \Illuminate\Database\Eloquent\Builder $parentQuery
- * @param array|mixed $columns
- * @return \Illuminate\Database\Eloquent\Builder
- */
- public function getRelationExistenceQueryForSelfJoin(Builder $query, Builder $parentQuery, $columns = ['*'])
- {
- $query->select($columns);
-
- $query->from($this->related->getTable().' as '.$hash = $this->getRelationCountHash());
-
- $this->related->setTable($hash);
-
- $this->performJoin($query);
-
- return parent::getRelationExistenceQuery($query, $parentQuery, $columns);
- }
-
- /**
- * Get the key for comparing against the parent key in "has" query.
- *
- * @return string
- */
- public function getExistenceCompareKey()
- {
- return $this->getQualifiedForeignPivotKeyName();
- }
-
- /**
- * Specify that the pivot table has creation and update timestamps.
- *
- * @param mixed $createdAt
- * @param mixed $updatedAt
- * @return $this
- */
- public function withTimestamps($createdAt = null, $updatedAt = null)
- {
- $this->withTimestamps = true;
-
- $this->pivotCreatedAt = $createdAt;
- $this->pivotUpdatedAt = $updatedAt;
-
- return $this->withPivot($this->createdAt(), $this->updatedAt());
- }
-
- /**
- * Get the name of the "created at" column.
- *
- * @return string
- */
- public function createdAt()
- {
- return $this->pivotCreatedAt ?: $this->parent->getCreatedAtColumn();
- }
-
- /**
- * Get the name of the "updated at" column.
- *
- * @return string
- */
- public function updatedAt()
- {
- return $this->pivotUpdatedAt ?: $this->parent->getUpdatedAtColumn();
- }
-
- /**
- * Get the foreign key for the relation.
- *
- * @return string
- */
- public function getForeignPivotKeyName()
- {
- return $this->foreignPivotKey;
- }
-
- /**
- * Get the fully qualified foreign key for the relation.
- *
- * @return string
- */
- public function getQualifiedForeignPivotKeyName()
- {
- return $this->qualifyPivotColumn($this->foreignPivotKey);
- }
-
- /**
- * Get the "related key" for the relation.
- *
- * @return string
- */
- public function getRelatedPivotKeyName()
- {
- return $this->relatedPivotKey;
- }
-
- /**
- * Get the fully qualified "related key" for the relation.
- *
- * @return string
- */
- public function getQualifiedRelatedPivotKeyName()
- {
- return $this->qualifyPivotColumn($this->relatedPivotKey);
- }
-
- /**
- * Get the parent key for the relationship.
- *
- * @return string
- */
- public function getParentKeyName()
- {
- return $this->parentKey;
- }
-
- /**
- * Get the fully qualified parent key name for the relation.
- *
- * @return string
- */
- public function getQualifiedParentKeyName()
- {
- return $this->parent->qualifyColumn($this->parentKey);
- }
-
- /**
- * Get the related key for the relationship.
- *
- * @return string
- */
- public function getRelatedKeyName()
- {
- return $this->relatedKey;
- }
-
- /**
- * Get the fully qualified related key name for the relation.
- *
- * @return string
- */
- public function getQualifiedRelatedKeyName()
- {
- return $this->related->qualifyColumn($this->relatedKey);
- }
-
- /**
- * Get the intermediate table for the relationship.
- *
- * @return string
- */
- public function getTable()
- {
- return $this->table;
- }
-
- /**
- * Get the relationship name for the relationship.
- *
- * @return string
- */
- public function getRelationName()
- {
- return $this->relationName;
- }
-
- /**
- * Get the name of the pivot accessor for this relationship.
- *
- * @return string
- */
- public function getPivotAccessor()
- {
- return $this->accessor;
- }
-
- /**
- * Get the pivot columns for this relationship.
- *
- * @return array
- */
- public function getPivotColumns()
- {
- return $this->pivotColumns;
- }
-
- /**
- * Qualify the given column name by the pivot table.
- *
- * @param string $column
- * @return string
- */
- public function qualifyPivotColumn($column)
- {
- return Str::contains($column, '.')
- ? $column
- : $this->table.'.'.$column;
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Relations/Concerns/AsPivot.php b/vendor/illuminate/database/Eloquent/Relations/Concerns/AsPivot.php
deleted file mode 100644
index af9defb7..00000000
--- a/vendor/illuminate/database/Eloquent/Relations/Concerns/AsPivot.php
+++ /dev/null
@@ -1,332 +0,0 @@
-timestamps = $instance->hasTimestampAttributes($attributes);
-
- // The pivot model is a "dynamic" model since we will set the tables dynamically
- // for the instance. This allows it work for any intermediate tables for the
- // many to many relationship that are defined by this developer's classes.
- $instance->setConnection($parent->getConnectionName())
- ->setTable($table)
- ->forceFill($attributes)
- ->syncOriginal();
-
- // We store off the parent instance so we will access the timestamp column names
- // for the model, since the pivot model timestamps aren't easily configurable
- // from the developer's point of view. We can use the parents to get these.
- $instance->pivotParent = $parent;
-
- $instance->exists = $exists;
-
- return $instance;
- }
-
- /**
- * Create a new pivot model from raw values returned from a query.
- *
- * @param \Illuminate\Database\Eloquent\Model $parent
- * @param array $attributes
- * @param string $table
- * @param bool $exists
- * @return static
- */
- public static function fromRawAttributes(Model $parent, $attributes, $table, $exists = false)
- {
- $instance = static::fromAttributes($parent, [], $table, $exists);
-
- $instance->timestamps = $instance->hasTimestampAttributes($attributes);
-
- $instance->setRawAttributes($attributes, $exists);
-
- return $instance;
- }
-
- /**
- * Set the keys for a select query.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @return \Illuminate\Database\Eloquent\Builder
- */
- protected function setKeysForSelectQuery($query)
- {
- if (isset($this->attributes[$this->getKeyName()])) {
- return parent::setKeysForSelectQuery($query);
- }
-
- $query->where($this->foreignKey, $this->getOriginal(
- $this->foreignKey, $this->getAttribute($this->foreignKey)
- ));
-
- return $query->where($this->relatedKey, $this->getOriginal(
- $this->relatedKey, $this->getAttribute($this->relatedKey)
- ));
- }
-
- /**
- * Set the keys for a save update query.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @return \Illuminate\Database\Eloquent\Builder
- */
- protected function setKeysForSaveQuery($query)
- {
- return $this->setKeysForSelectQuery($query);
- }
-
- /**
- * Delete the pivot model record from the database.
- *
- * @return int
- */
- public function delete()
- {
- if (isset($this->attributes[$this->getKeyName()])) {
- return (int) parent::delete();
- }
-
- if ($this->fireModelEvent('deleting') === false) {
- return 0;
- }
-
- $this->touchOwners();
-
- return tap($this->getDeleteQuery()->delete(), function () {
- $this->exists = false;
-
- $this->fireModelEvent('deleted', false);
- });
- }
-
- /**
- * Get the query builder for a delete operation on the pivot.
- *
- * @return \Illuminate\Database\Eloquent\Builder
- */
- protected function getDeleteQuery()
- {
- return $this->newQueryWithoutRelationships()->where([
- $this->foreignKey => $this->getOriginal($this->foreignKey, $this->getAttribute($this->foreignKey)),
- $this->relatedKey => $this->getOriginal($this->relatedKey, $this->getAttribute($this->relatedKey)),
- ]);
- }
-
- /**
- * Get the table associated with the model.
- *
- * @return string
- */
- public function getTable()
- {
- if (! isset($this->table)) {
- $this->setTable(str_replace(
- '\\', '', Str::snake(Str::singular(class_basename($this)))
- ));
- }
-
- return $this->table;
- }
-
- /**
- * Get the foreign key column name.
- *
- * @return string
- */
- public function getForeignKey()
- {
- return $this->foreignKey;
- }
-
- /**
- * Get the "related key" column name.
- *
- * @return string
- */
- public function getRelatedKey()
- {
- return $this->relatedKey;
- }
-
- /**
- * Get the "related key" column name.
- *
- * @return string
- */
- public function getOtherKey()
- {
- return $this->getRelatedKey();
- }
-
- /**
- * Set the key names for the pivot model instance.
- *
- * @param string $foreignKey
- * @param string $relatedKey
- * @return $this
- */
- public function setPivotKeys($foreignKey, $relatedKey)
- {
- $this->foreignKey = $foreignKey;
-
- $this->relatedKey = $relatedKey;
-
- return $this;
- }
-
- /**
- * Determine if the pivot model or given attributes has timestamp attributes.
- *
- * @param array|null $attributes
- * @return bool
- */
- public function hasTimestampAttributes($attributes = null)
- {
- return array_key_exists($this->getCreatedAtColumn(), $attributes ?? $this->attributes);
- }
-
- /**
- * Get the name of the "created at" column.
- *
- * @return string
- */
- public function getCreatedAtColumn()
- {
- return $this->pivotParent
- ? $this->pivotParent->getCreatedAtColumn()
- : parent::getCreatedAtColumn();
- }
-
- /**
- * Get the name of the "updated at" column.
- *
- * @return string
- */
- public function getUpdatedAtColumn()
- {
- return $this->pivotParent
- ? $this->pivotParent->getUpdatedAtColumn()
- : parent::getUpdatedAtColumn();
- }
-
- /**
- * Get the queueable identity for the entity.
- *
- * @return mixed
- */
- public function getQueueableId()
- {
- if (isset($this->attributes[$this->getKeyName()])) {
- return $this->getKey();
- }
-
- return sprintf(
- '%s:%s:%s:%s',
- $this->foreignKey, $this->getAttribute($this->foreignKey),
- $this->relatedKey, $this->getAttribute($this->relatedKey)
- );
- }
-
- /**
- * Get a new query to restore one or more models by their queueable IDs.
- *
- * @param int[]|string[]|string $ids
- * @return \Illuminate\Database\Eloquent\Builder
- */
- public function newQueryForRestoration($ids)
- {
- if (is_array($ids)) {
- return $this->newQueryForCollectionRestoration($ids);
- }
-
- if (! Str::contains($ids, ':')) {
- return parent::newQueryForRestoration($ids);
- }
-
- $segments = explode(':', $ids);
-
- return $this->newQueryWithoutScopes()
- ->where($segments[0], $segments[1])
- ->where($segments[2], $segments[3]);
- }
-
- /**
- * Get a new query to restore multiple models by their queueable IDs.
- *
- * @param int[]|string[] $ids
- * @return \Illuminate\Database\Eloquent\Builder
- */
- protected function newQueryForCollectionRestoration(array $ids)
- {
- $ids = array_values($ids);
-
- if (! Str::contains($ids[0], ':')) {
- return parent::newQueryForRestoration($ids);
- }
-
- $query = $this->newQueryWithoutScopes();
-
- foreach ($ids as $id) {
- $segments = explode(':', $id);
-
- $query->orWhere(function ($query) use ($segments) {
- return $query->where($segments[0], $segments[1])
- ->where($segments[2], $segments[3]);
- });
- }
-
- return $query;
- }
-
- /**
- * Unset all the loaded relations for the instance.
- *
- * @return $this
- */
- public function unsetRelations()
- {
- $this->pivotParent = null;
- $this->relations = [];
-
- return $this;
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Relations/Concerns/CanBeOneOfMany.php b/vendor/illuminate/database/Eloquent/Relations/Concerns/CanBeOneOfMany.php
deleted file mode 100644
index 6f6b1b7f..00000000
--- a/vendor/illuminate/database/Eloquent/Relations/Concerns/CanBeOneOfMany.php
+++ /dev/null
@@ -1,313 +0,0 @@
-isOneOfMany = true;
-
- $this->relationName = $relation ?: $this->getDefaultOneOfManyJoinAlias(
- $this->guessRelationship()
- );
-
- $keyName = $this->query->getModel()->getKeyName();
-
- $columns = is_string($columns = $column) ? [
- $column => $aggregate,
- $keyName => $aggregate,
- ] : $column;
-
- if (! array_key_exists($keyName, $columns)) {
- $columns[$keyName] = 'MAX';
- }
-
- if ($aggregate instanceof Closure) {
- $closure = $aggregate;
- }
-
- foreach ($columns as $column => $aggregate) {
- if (! in_array(strtolower($aggregate), ['min', 'max'])) {
- throw new InvalidArgumentException("Invalid aggregate [{$aggregate}] used within ofMany relation. Available aggregates: MIN, MAX");
- }
-
- $subQuery = $this->newOneOfManySubQuery(
- $this->getOneOfManySubQuerySelectColumns(),
- $column, $aggregate
- );
-
- if (isset($previous)) {
- $this->addOneOfManyJoinSubQuery($subQuery, $previous['subQuery'], $previous['column']);
- }
-
- if (isset($closure)) {
- $closure($subQuery);
- }
-
- if (! isset($previous)) {
- $this->oneOfManySubQuery = $subQuery;
- }
-
- if (array_key_last($columns) == $column) {
- $this->addOneOfManyJoinSubQuery($this->query, $subQuery, $column);
- }
-
- $previous = [
- 'subQuery' => $subQuery,
- 'column' => $column,
- ];
- }
-
- $this->addConstraints();
-
- $columns = $this->query->getQuery()->columns;
-
- if (is_null($columns) || $columns === ['*']) {
- $this->select([$this->qualifyColumn('*')]);
- }
-
- return $this;
- }
-
- /**
- * Indicate that the relation is the latest single result of a larger one-to-many relationship.
- *
- * @param string|array|null $column
- * @param string|Closure|null $aggregate
- * @param string|null $relation
- * @return $this
- */
- public function latestOfMany($column = 'id', $relation = null)
- {
- return $this->ofMany(collect(Arr::wrap($column))->mapWithKeys(function ($column) {
- return [$column => 'MAX'];
- })->all(), 'MAX', $relation);
- }
-
- /**
- * Indicate that the relation is the oldest single result of a larger one-to-many relationship.
- *
- * @param string|array|null $column
- * @param string|Closure|null $aggregate
- * @param string|null $relation
- * @return $this
- */
- public function oldestOfMany($column = 'id', $relation = null)
- {
- return $this->ofMany(collect(Arr::wrap($column))->mapWithKeys(function ($column) {
- return [$column => 'MIN'];
- })->all(), 'MIN', $relation);
- }
-
- /**
- * Get the default alias for the one of many inner join clause.
- *
- * @param string $relation
- * @return string
- */
- protected function getDefaultOneOfManyJoinAlias($relation)
- {
- return $relation == $this->query->getModel()->getTable()
- ? $relation.'_of_many'
- : $relation;
- }
-
- /**
- * Get a new query for the related model, grouping the query by the given column, often the foreign key of the relationship.
- *
- * @param string|array $groupBy
- * @param string|null $column
- * @param string|null $aggregate
- * @return \Illuminate\Database\Eloquent\Builder
- */
- protected function newOneOfManySubQuery($groupBy, $column = null, $aggregate = null)
- {
- $subQuery = $this->query->getModel()
- ->newQuery()
- ->withoutGlobalScopes($this->removedScopes());
-
- foreach (Arr::wrap($groupBy) as $group) {
- $subQuery->groupBy($this->qualifyRelatedColumn($group));
- }
-
- if (! is_null($column)) {
- $subQuery->selectRaw($aggregate.'('.$subQuery->getQuery()->grammar->wrap($subQuery->qualifyColumn($column)).') as '.$subQuery->getQuery()->grammar->wrap($column.'_aggregate'));
- }
-
- $this->addOneOfManySubQueryConstraints($subQuery, $groupBy, $column, $aggregate);
-
- return $subQuery;
- }
-
- /**
- * Add the join subquery to the given query on the given column and the relationship's foreign key.
- *
- * @param \Illuminate\Database\Eloquent\Builder $parent
- * @param \Illuminate\Database\Eloquent\Builder $subQuery
- * @param string $on
- * @return void
- */
- protected function addOneOfManyJoinSubQuery(Builder $parent, Builder $subQuery, $on)
- {
- $parent->beforeQuery(function ($parent) use ($subQuery, $on) {
- $subQuery->applyBeforeQueryCallbacks();
-
- $parent->joinSub($subQuery, $this->relationName, function ($join) use ($on) {
- $join->on($this->qualifySubSelectColumn($on.'_aggregate'), '=', $this->qualifyRelatedColumn($on));
-
- $this->addOneOfManyJoinSubQueryConstraints($join, $on);
- });
- });
- }
-
- /**
- * Merge the relationship query joins to the given query builder.
- *
- * @param \Illuminate\Database\Eloquent\Builder $builder
- * @return void
- */
- protected function mergeOneOfManyJoinsTo(Builder $query)
- {
- $query->getQuery()->beforeQueryCallbacks = $this->query->getQuery()->beforeQueryCallbacks;
-
- $query->applyBeforeQueryCallbacks();
- }
-
- /**
- * Get the query builder that will contain the relationship constraints.
- *
- * @return \Illuminate\Database\Eloquent\Builder
- */
- protected function getRelationQuery()
- {
- return $this->isOneOfMany()
- ? $this->oneOfManySubQuery
- : $this->query;
- }
-
- /**
- * Get the one of many inner join subselect builder instance.
- *
- * @return \Illuminate\Database\Eloquent\Builder|void
- */
- public function getOneOfManySubQuery()
- {
- return $this->oneOfManySubQuery;
- }
-
- /**
- * Get the qualified column name for the one-of-many relationship using the subselect join query's alias.
- *
- * @param string $column
- * @return string
- */
- public function qualifySubSelectColumn($column)
- {
- return $this->getRelationName().'.'.last(explode('.', $column));
- }
-
- /**
- * Qualify related column using the related table name if it is not already qualified.
- *
- * @param string $column
- * @return string
- */
- protected function qualifyRelatedColumn($column)
- {
- return Str::contains($column, '.') ? $column : $this->query->getModel()->getTable().'.'.$column;
- }
-
- /**
- * Guess the "hasOne" relationship's name via backtrace.
- *
- * @return string
- */
- protected function guessRelationship()
- {
- return debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 3)[2]['function'];
- }
-
- /**
- * Determine whether the relationship is a one-of-many relationship.
- *
- * @return bool
- */
- public function isOneOfMany()
- {
- return $this->isOneOfMany;
- }
-
- /**
- * Get the name of the relationship.
- *
- * @return string
- */
- public function getRelationName()
- {
- return $this->relationName;
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Relations/Concerns/ComparesRelatedModels.php b/vendor/illuminate/database/Eloquent/Relations/Concerns/ComparesRelatedModels.php
deleted file mode 100644
index ca066988..00000000
--- a/vendor/illuminate/database/Eloquent/Relations/Concerns/ComparesRelatedModels.php
+++ /dev/null
@@ -1,77 +0,0 @@
-compareKeys($this->getParentKey(), $this->getRelatedKeyFrom($model)) &&
- $this->related->getTable() === $model->getTable() &&
- $this->related->getConnectionName() === $model->getConnectionName();
-
- if ($match && $this instanceof SupportsPartialRelations && $this->isOneOfMany()) {
- return $this->query
- ->whereKey($model->getKey())
- ->exists();
- }
-
- return $match;
- }
-
- /**
- * Determine if the model is not the related instance of the relationship.
- *
- * @param \Illuminate\Database\Eloquent\Model|null $model
- * @return bool
- */
- public function isNot($model)
- {
- return ! $this->is($model);
- }
-
- /**
- * Get the value of the parent model's key.
- *
- * @return mixed
- */
- abstract public function getParentKey();
-
- /**
- * Get the value of the model's related key.
- *
- * @param \Illuminate\Database\Eloquent\Model $model
- * @return mixed
- */
- abstract protected function getRelatedKeyFrom(Model $model);
-
- /**
- * Compare the parent key with the related key.
- *
- * @param mixed $parentKey
- * @param mixed $relatedKey
- * @return bool
- */
- protected function compareKeys($parentKey, $relatedKey)
- {
- if (empty($parentKey) || empty($relatedKey)) {
- return false;
- }
-
- if (is_int($parentKey) || is_int($relatedKey)) {
- return (int) $parentKey === (int) $relatedKey;
- }
-
- return $parentKey === $relatedKey;
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Relations/Concerns/InteractsWithDictionary.php b/vendor/illuminate/database/Eloquent/Relations/Concerns/InteractsWithDictionary.php
deleted file mode 100644
index abdfdd6a..00000000
--- a/vendor/illuminate/database/Eloquent/Relations/Concerns/InteractsWithDictionary.php
+++ /dev/null
@@ -1,29 +0,0 @@
-__toString();
- }
-
- throw new InvalidArgumentException('Model attribute value is an object but does not have a __toString method.');
- }
-
- return $attribute;
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Relations/Concerns/InteractsWithPivotTable.php b/vendor/illuminate/database/Eloquent/Relations/Concerns/InteractsWithPivotTable.php
deleted file mode 100644
index 7a1cbfae..00000000
--- a/vendor/illuminate/database/Eloquent/Relations/Concerns/InteractsWithPivotTable.php
+++ /dev/null
@@ -1,686 +0,0 @@
- [], 'detached' => [],
- ];
-
- $records = $this->formatRecordsList($this->parseIds($ids));
-
- // Next, we will determine which IDs should get removed from the join table by
- // checking which of the given ID/records is in the list of current records
- // and removing all of those rows from this "intermediate" joining table.
- $detach = array_values(array_intersect(
- $this->newPivotQuery()->pluck($this->relatedPivotKey)->all(),
- array_keys($records)
- ));
-
- if (count($detach) > 0) {
- $this->detach($detach, false);
-
- $changes['detached'] = $this->castKeys($detach);
- }
-
- // Finally, for all of the records which were not "detached", we'll attach the
- // records into the intermediate table. Then, we will add those attaches to
- // this change list and get ready to return these results to the callers.
- $attach = array_diff_key($records, array_flip($detach));
-
- if (count($attach) > 0) {
- $this->attach($attach, [], false);
-
- $changes['attached'] = array_keys($attach);
- }
-
- // Once we have finished attaching or detaching the records, we will see if we
- // have done any attaching or detaching, and if we have we will touch these
- // relationships if they are configured to touch on any database updates.
- if ($touch && (count($changes['attached']) ||
- count($changes['detached']))) {
- $this->touchIfTouching();
- }
-
- return $changes;
- }
-
- /**
- * Sync the intermediate tables with a list of IDs without detaching.
- *
- * @param \Illuminate\Support\Collection|\Illuminate\Database\Eloquent\Model|array $ids
- * @return array
- */
- public function syncWithoutDetaching($ids)
- {
- return $this->sync($ids, false);
- }
-
- /**
- * Sync the intermediate tables with a list of IDs or collection of models.
- *
- * @param \Illuminate\Support\Collection|\Illuminate\Database\Eloquent\Model|array $ids
- * @param bool $detaching
- * @return array
- */
- public function sync($ids, $detaching = true)
- {
- $changes = [
- 'attached' => [], 'detached' => [], 'updated' => [],
- ];
-
- // First we need to attach any of the associated models that are not currently
- // in this joining table. We'll spin through the given IDs, checking to see
- // if they exist in the array of current ones, and if not we will insert.
- $current = $this->getCurrentlyAttachedPivots()
- ->pluck($this->relatedPivotKey)->all();
-
- $detach = array_diff($current, array_keys(
- $records = $this->formatRecordsList($this->parseIds($ids))
- ));
-
- // Next, we will take the differences of the currents and given IDs and detach
- // all of the entities that exist in the "current" array but are not in the
- // array of the new IDs given to the method which will complete the sync.
- if ($detaching && count($detach) > 0) {
- $this->detach($detach);
-
- $changes['detached'] = $this->castKeys($detach);
- }
-
- // Now we are finally ready to attach the new records. Note that we'll disable
- // touching until after the entire operation is complete so we don't fire a
- // ton of touch operations until we are totally done syncing the records.
- $changes = array_merge(
- $changes, $this->attachNew($records, $current, false)
- );
-
- // Once we have finished attaching or detaching the records, we will see if we
- // have done any attaching or detaching, and if we have we will touch these
- // relationships if they are configured to touch on any database updates.
- if (count($changes['attached']) ||
- count($changes['updated']) ||
- count($changes['detached'])) {
- $this->touchIfTouching();
- }
-
- return $changes;
- }
-
- /**
- * Sync the intermediate tables with a list of IDs or collection of models with the given pivot values.
- *
- * @param \Illuminate\Support\Collection|\Illuminate\Database\Eloquent\Model|array $ids
- * @param array $values
- * @param bool $detaching
- * @return array
- */
- public function syncWithPivotValues($ids, array $values, bool $detaching = true)
- {
- return $this->sync(collect($this->parseIds($ids))->mapWithKeys(function ($id) use ($values) {
- return [$id => $values];
- }), $detaching);
- }
-
- /**
- * Format the sync / toggle record list so that it is keyed by ID.
- *
- * @param array $records
- * @return array
- */
- protected function formatRecordsList(array $records)
- {
- return collect($records)->mapWithKeys(function ($attributes, $id) {
- if (! is_array($attributes)) {
- [$id, $attributes] = [$attributes, []];
- }
-
- return [$id => $attributes];
- })->all();
- }
-
- /**
- * Attach all of the records that aren't in the given current records.
- *
- * @param array $records
- * @param array $current
- * @param bool $touch
- * @return array
- */
- protected function attachNew(array $records, array $current, $touch = true)
- {
- $changes = ['attached' => [], 'updated' => []];
-
- foreach ($records as $id => $attributes) {
- // If the ID is not in the list of existing pivot IDs, we will insert a new pivot
- // record, otherwise, we will just update this existing record on this joining
- // table, so that the developers will easily update these records pain free.
- if (! in_array($id, $current)) {
- $this->attach($id, $attributes, $touch);
-
- $changes['attached'][] = $this->castKey($id);
- }
-
- // Now we'll try to update an existing pivot record with the attributes that were
- // given to the method. If the model is actually updated we will add it to the
- // list of updated pivot records so we return them back out to the consumer.
- elseif (count($attributes) > 0 &&
- $this->updateExistingPivot($id, $attributes, $touch)) {
- $changes['updated'][] = $this->castKey($id);
- }
- }
-
- return $changes;
- }
-
- /**
- * Update an existing pivot record on the table.
- *
- * @param mixed $id
- * @param array $attributes
- * @param bool $touch
- * @return int
- */
- public function updateExistingPivot($id, array $attributes, $touch = true)
- {
- if ($this->using &&
- empty($this->pivotWheres) &&
- empty($this->pivotWhereIns) &&
- empty($this->pivotWhereNulls)) {
- return $this->updateExistingPivotUsingCustomClass($id, $attributes, $touch);
- }
-
- if (in_array($this->updatedAt(), $this->pivotColumns)) {
- $attributes = $this->addTimestampsToAttachment($attributes, true);
- }
-
- $updated = $this->newPivotStatementForId($this->parseId($id))->update(
- $this->castAttributes($attributes)
- );
-
- if ($touch) {
- $this->touchIfTouching();
- }
-
- return $updated;
- }
-
- /**
- * Update an existing pivot record on the table via a custom class.
- *
- * @param mixed $id
- * @param array $attributes
- * @param bool $touch
- * @return int
- */
- protected function updateExistingPivotUsingCustomClass($id, array $attributes, $touch)
- {
- $pivot = $this->getCurrentlyAttachedPivots()
- ->where($this->foreignPivotKey, $this->parent->{$this->parentKey})
- ->where($this->relatedPivotKey, $this->parseId($id))
- ->first();
-
- $updated = $pivot ? $pivot->fill($attributes)->isDirty() : false;
-
- if ($updated) {
- $pivot->save();
- }
-
- if ($touch) {
- $this->touchIfTouching();
- }
-
- return (int) $updated;
- }
-
- /**
- * Attach a model to the parent.
- *
- * @param mixed $id
- * @param array $attributes
- * @param bool $touch
- * @return void
- */
- public function attach($id, array $attributes = [], $touch = true)
- {
- if ($this->using) {
- $this->attachUsingCustomClass($id, $attributes);
- } else {
- // Here we will insert the attachment records into the pivot table. Once we have
- // inserted the records, we will touch the relationships if necessary and the
- // function will return. We can parse the IDs before inserting the records.
- $this->newPivotStatement()->insert($this->formatAttachRecords(
- $this->parseIds($id), $attributes
- ));
- }
-
- if ($touch) {
- $this->touchIfTouching();
- }
- }
-
- /**
- * Attach a model to the parent using a custom class.
- *
- * @param mixed $id
- * @param array $attributes
- * @return void
- */
- protected function attachUsingCustomClass($id, array $attributes)
- {
- $records = $this->formatAttachRecords(
- $this->parseIds($id), $attributes
- );
-
- foreach ($records as $record) {
- $this->newPivot($record, false)->save();
- }
- }
-
- /**
- * Create an array of records to insert into the pivot table.
- *
- * @param array $ids
- * @param array $attributes
- * @return array
- */
- protected function formatAttachRecords($ids, array $attributes)
- {
- $records = [];
-
- $hasTimestamps = ($this->hasPivotColumn($this->createdAt()) ||
- $this->hasPivotColumn($this->updatedAt()));
-
- // To create the attachment records, we will simply spin through the IDs given
- // and create a new record to insert for each ID. Each ID may actually be a
- // key in the array, with extra attributes to be placed in other columns.
- foreach ($ids as $key => $value) {
- $records[] = $this->formatAttachRecord(
- $key, $value, $attributes, $hasTimestamps
- );
- }
-
- return $records;
- }
-
- /**
- * Create a full attachment record payload.
- *
- * @param int $key
- * @param mixed $value
- * @param array $attributes
- * @param bool $hasTimestamps
- * @return array
- */
- protected function formatAttachRecord($key, $value, $attributes, $hasTimestamps)
- {
- [$id, $attributes] = $this->extractAttachIdAndAttributes($key, $value, $attributes);
-
- return array_merge(
- $this->baseAttachRecord($id, $hasTimestamps), $this->castAttributes($attributes)
- );
- }
-
- /**
- * Get the attach record ID and extra attributes.
- *
- * @param mixed $key
- * @param mixed $value
- * @param array $attributes
- * @return array
- */
- protected function extractAttachIdAndAttributes($key, $value, array $attributes)
- {
- return is_array($value)
- ? [$key, array_merge($value, $attributes)]
- : [$value, $attributes];
- }
-
- /**
- * Create a new pivot attachment record.
- *
- * @param int $id
- * @param bool $timed
- * @return array
- */
- protected function baseAttachRecord($id, $timed)
- {
- $record[$this->relatedPivotKey] = $id;
-
- $record[$this->foreignPivotKey] = $this->parent->{$this->parentKey};
-
- // If the record needs to have creation and update timestamps, we will make
- // them by calling the parent model's "freshTimestamp" method which will
- // provide us with a fresh timestamp in this model's preferred format.
- if ($timed) {
- $record = $this->addTimestampsToAttachment($record);
- }
-
- foreach ($this->pivotValues as $value) {
- $record[$value['column']] = $value['value'];
- }
-
- return $record;
- }
-
- /**
- * Set the creation and update timestamps on an attach record.
- *
- * @param array $record
- * @param bool $exists
- * @return array
- */
- protected function addTimestampsToAttachment(array $record, $exists = false)
- {
- $fresh = $this->parent->freshTimestamp();
-
- if ($this->using) {
- $pivotModel = new $this->using;
-
- $fresh = $fresh->format($pivotModel->getDateFormat());
- }
-
- if (! $exists && $this->hasPivotColumn($this->createdAt())) {
- $record[$this->createdAt()] = $fresh;
- }
-
- if ($this->hasPivotColumn($this->updatedAt())) {
- $record[$this->updatedAt()] = $fresh;
- }
-
- return $record;
- }
-
- /**
- * Determine whether the given column is defined as a pivot column.
- *
- * @param string $column
- * @return bool
- */
- public function hasPivotColumn($column)
- {
- return in_array($column, $this->pivotColumns);
- }
-
- /**
- * Detach models from the relationship.
- *
- * @param mixed $ids
- * @param bool $touch
- * @return int
- */
- public function detach($ids = null, $touch = true)
- {
- if ($this->using &&
- ! empty($ids) &&
- empty($this->pivotWheres) &&
- empty($this->pivotWhereIns) &&
- empty($this->pivotWhereNulls)) {
- $results = $this->detachUsingCustomClass($ids);
- } else {
- $query = $this->newPivotQuery();
-
- // If associated IDs were passed to the method we will only delete those
- // associations, otherwise all of the association ties will be broken.
- // We'll return the numbers of affected rows when we do the deletes.
- if (! is_null($ids)) {
- $ids = $this->parseIds($ids);
-
- if (empty($ids)) {
- return 0;
- }
-
- $query->whereIn($this->getQualifiedRelatedPivotKeyName(), (array) $ids);
- }
-
- // Once we have all of the conditions set on the statement, we are ready
- // to run the delete on the pivot table. Then, if the touch parameter
- // is true, we will go ahead and touch all related models to sync.
- $results = $query->delete();
- }
-
- if ($touch) {
- $this->touchIfTouching();
- }
-
- return $results;
- }
-
- /**
- * Detach models from the relationship using a custom class.
- *
- * @param mixed $ids
- * @return int
- */
- protected function detachUsingCustomClass($ids)
- {
- $results = 0;
-
- foreach ($this->parseIds($ids) as $id) {
- $results += $this->newPivot([
- $this->foreignPivotKey => $this->parent->{$this->parentKey},
- $this->relatedPivotKey => $id,
- ], true)->delete();
- }
-
- return $results;
- }
-
- /**
- * Get the pivot models that are currently attached.
- *
- * @return \Illuminate\Support\Collection
- */
- protected function getCurrentlyAttachedPivots()
- {
- return $this->newPivotQuery()->get()->map(function ($record) {
- $class = $this->using ?: Pivot::class;
-
- $pivot = $class::fromRawAttributes($this->parent, (array) $record, $this->getTable(), true);
-
- return $pivot->setPivotKeys($this->foreignPivotKey, $this->relatedPivotKey);
- });
- }
-
- /**
- * Create a new pivot model instance.
- *
- * @param array $attributes
- * @param bool $exists
- * @return \Illuminate\Database\Eloquent\Relations\Pivot
- */
- public function newPivot(array $attributes = [], $exists = false)
- {
- $pivot = $this->related->newPivot(
- $this->parent, $attributes, $this->table, $exists, $this->using
- );
-
- return $pivot->setPivotKeys($this->foreignPivotKey, $this->relatedPivotKey);
- }
-
- /**
- * Create a new existing pivot model instance.
- *
- * @param array $attributes
- * @return \Illuminate\Database\Eloquent\Relations\Pivot
- */
- public function newExistingPivot(array $attributes = [])
- {
- return $this->newPivot($attributes, true);
- }
-
- /**
- * Get a new plain query builder for the pivot table.
- *
- * @return \Illuminate\Database\Query\Builder
- */
- public function newPivotStatement()
- {
- return $this->query->getQuery()->newQuery()->from($this->table);
- }
-
- /**
- * Get a new pivot statement for a given "other" ID.
- *
- * @param mixed $id
- * @return \Illuminate\Database\Query\Builder
- */
- public function newPivotStatementForId($id)
- {
- return $this->newPivotQuery()->whereIn($this->relatedPivotKey, $this->parseIds($id));
- }
-
- /**
- * Create a new query builder for the pivot table.
- *
- * @return \Illuminate\Database\Query\Builder
- */
- public function newPivotQuery()
- {
- $query = $this->newPivotStatement();
-
- foreach ($this->pivotWheres as $arguments) {
- $query->where(...$arguments);
- }
-
- foreach ($this->pivotWhereIns as $arguments) {
- $query->whereIn(...$arguments);
- }
-
- foreach ($this->pivotWhereNulls as $arguments) {
- $query->whereNull(...$arguments);
- }
-
- return $query->where($this->getQualifiedForeignPivotKeyName(), $this->parent->{$this->parentKey});
- }
-
- /**
- * Set the columns on the pivot table to retrieve.
- *
- * @param array|mixed $columns
- * @return $this
- */
- public function withPivot($columns)
- {
- $this->pivotColumns = array_merge(
- $this->pivotColumns, is_array($columns) ? $columns : func_get_args()
- );
-
- return $this;
- }
-
- /**
- * Get all of the IDs from the given mixed value.
- *
- * @param mixed $value
- * @return array
- */
- protected function parseIds($value)
- {
- if ($value instanceof Model) {
- return [$value->{$this->relatedKey}];
- }
-
- if ($value instanceof Collection) {
- return $value->pluck($this->relatedKey)->all();
- }
-
- if ($value instanceof BaseCollection) {
- return $value->toArray();
- }
-
- return (array) $value;
- }
-
- /**
- * Get the ID from the given mixed value.
- *
- * @param mixed $value
- * @return mixed
- */
- protected function parseId($value)
- {
- return $value instanceof Model ? $value->{$this->relatedKey} : $value;
- }
-
- /**
- * Cast the given keys to integers if they are numeric and string otherwise.
- *
- * @param array $keys
- * @return array
- */
- protected function castKeys(array $keys)
- {
- return array_map(function ($v) {
- return $this->castKey($v);
- }, $keys);
- }
-
- /**
- * Cast the given key to convert to primary key type.
- *
- * @param mixed $key
- * @return mixed
- */
- protected function castKey($key)
- {
- return $this->getTypeSwapValue(
- $this->related->getKeyType(),
- $key
- );
- }
-
- /**
- * Cast the given pivot attributes.
- *
- * @param array $attributes
- * @return array
- */
- protected function castAttributes($attributes)
- {
- return $this->using
- ? $this->newPivot()->fill($attributes)->getAttributes()
- : $attributes;
- }
-
- /**
- * Converts a given value to a given type value.
- *
- * @param string $type
- * @param mixed $value
- * @return mixed
- */
- protected function getTypeSwapValue($type, $value)
- {
- switch (strtolower($type)) {
- case 'int':
- case 'integer':
- return (int) $value;
- case 'real':
- case 'float':
- case 'double':
- return (float) $value;
- case 'string':
- return (string) $value;
- default:
- return $value;
- }
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Relations/Concerns/SupportsDefaultModels.php b/vendor/illuminate/database/Eloquent/Relations/Concerns/SupportsDefaultModels.php
deleted file mode 100644
index 74e758f5..00000000
--- a/vendor/illuminate/database/Eloquent/Relations/Concerns/SupportsDefaultModels.php
+++ /dev/null
@@ -1,63 +0,0 @@
-withDefault = $callback;
-
- return $this;
- }
-
- /**
- * Get the default value for this relation.
- *
- * @param \Illuminate\Database\Eloquent\Model $parent
- * @return \Illuminate\Database\Eloquent\Model|null
- */
- protected function getDefaultFor(Model $parent)
- {
- if (! $this->withDefault) {
- return;
- }
-
- $instance = $this->newRelatedInstanceFor($parent);
-
- if (is_callable($this->withDefault)) {
- return call_user_func($this->withDefault, $instance, $parent) ?: $instance;
- }
-
- if (is_array($this->withDefault)) {
- $instance->forceFill($this->withDefault);
- }
-
- return $instance;
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Relations/HasMany.php b/vendor/illuminate/database/Eloquent/Relations/HasMany.php
deleted file mode 100755
index b005d4ff..00000000
--- a/vendor/illuminate/database/Eloquent/Relations/HasMany.php
+++ /dev/null
@@ -1,49 +0,0 @@
-getParentKey())
- ? $this->query->get()
- : $this->related->newCollection();
- }
-
- /**
- * Initialize the relation on a set of models.
- *
- * @param array $models
- * @param string $relation
- * @return array
- */
- public function initRelation(array $models, $relation)
- {
- foreach ($models as $model) {
- $model->setRelation($relation, $this->related->newCollection());
- }
-
- return $models;
- }
-
- /**
- * Match the eagerly loaded results to their parents.
- *
- * @param array $models
- * @param \Illuminate\Database\Eloquent\Collection $results
- * @param string $relation
- * @return array
- */
- public function match(array $models, Collection $results, $relation)
- {
- return $this->matchMany($models, $results, $relation);
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Relations/HasManyThrough.php b/vendor/illuminate/database/Eloquent/Relations/HasManyThrough.php
deleted file mode 100644
index 9ea30756..00000000
--- a/vendor/illuminate/database/Eloquent/Relations/HasManyThrough.php
+++ /dev/null
@@ -1,702 +0,0 @@
-localKey = $localKey;
- $this->firstKey = $firstKey;
- $this->secondKey = $secondKey;
- $this->farParent = $farParent;
- $this->throughParent = $throughParent;
- $this->secondLocalKey = $secondLocalKey;
-
- parent::__construct($query, $throughParent);
- }
-
- /**
- * Set the base constraints on the relation query.
- *
- * @return void
- */
- public function addConstraints()
- {
- $localValue = $this->farParent[$this->localKey];
-
- $this->performJoin();
-
- if (static::$constraints) {
- $this->query->where($this->getQualifiedFirstKeyName(), '=', $localValue);
- }
- }
-
- /**
- * Set the join clause on the query.
- *
- * @param \Illuminate\Database\Eloquent\Builder|null $query
- * @return void
- */
- protected function performJoin(Builder $query = null)
- {
- $query = $query ?: $this->query;
-
- $farKey = $this->getQualifiedFarKeyName();
-
- $query->join($this->throughParent->getTable(), $this->getQualifiedParentKeyName(), '=', $farKey);
-
- if ($this->throughParentSoftDeletes()) {
- $query->withGlobalScope('SoftDeletableHasManyThrough', function ($query) {
- $query->whereNull($this->throughParent->getQualifiedDeletedAtColumn());
- });
- }
- }
-
- /**
- * Get the fully qualified parent key name.
- *
- * @return string
- */
- public function getQualifiedParentKeyName()
- {
- return $this->parent->qualifyColumn($this->secondLocalKey);
- }
-
- /**
- * Determine whether "through" parent of the relation uses Soft Deletes.
- *
- * @return bool
- */
- public function throughParentSoftDeletes()
- {
- return in_array(SoftDeletes::class, class_uses_recursive($this->throughParent));
- }
-
- /**
- * Indicate that trashed "through" parents should be included in the query.
- *
- * @return $this
- */
- public function withTrashedParents()
- {
- $this->query->withoutGlobalScope('SoftDeletableHasManyThrough');
-
- return $this;
- }
-
- /**
- * Set the constraints for an eager load of the relation.
- *
- * @param array $models
- * @return void
- */
- public function addEagerConstraints(array $models)
- {
- $whereIn = $this->whereInMethod($this->farParent, $this->localKey);
-
- $this->query->{$whereIn}(
- $this->getQualifiedFirstKeyName(), $this->getKeys($models, $this->localKey)
- );
- }
-
- /**
- * Initialize the relation on a set of models.
- *
- * @param array $models
- * @param string $relation
- * @return array
- */
- public function initRelation(array $models, $relation)
- {
- foreach ($models as $model) {
- $model->setRelation($relation, $this->related->newCollection());
- }
-
- return $models;
- }
-
- /**
- * Match the eagerly loaded results to their parents.
- *
- * @param array $models
- * @param \Illuminate\Database\Eloquent\Collection $results
- * @param string $relation
- * @return array
- */
- public function match(array $models, Collection $results, $relation)
- {
- $dictionary = $this->buildDictionary($results);
-
- // Once we have the dictionary we can simply spin through the parent models to
- // link them up with their children using the keyed dictionary to make the
- // matching very convenient and easy work. Then we'll just return them.
- foreach ($models as $model) {
- if (isset($dictionary[$key = $this->getDictionaryKey($model->getAttribute($this->localKey))])) {
- $model->setRelation(
- $relation, $this->related->newCollection($dictionary[$key])
- );
- }
- }
-
- return $models;
- }
-
- /**
- * Build model dictionary keyed by the relation's foreign key.
- *
- * @param \Illuminate\Database\Eloquent\Collection $results
- * @return array
- */
- protected function buildDictionary(Collection $results)
- {
- $dictionary = [];
-
- // First we will create a dictionary of models keyed by the foreign key of the
- // relationship as this will allow us to quickly access all of the related
- // models without having to do nested looping which will be quite slow.
- foreach ($results as $result) {
- $dictionary[$result->laravel_through_key][] = $result;
- }
-
- return $dictionary;
- }
-
- /**
- * Get the first related model record matching the attributes or instantiate it.
- *
- * @param array $attributes
- * @return \Illuminate\Database\Eloquent\Model
- */
- public function firstOrNew(array $attributes)
- {
- if (is_null($instance = $this->where($attributes)->first())) {
- $instance = $this->related->newInstance($attributes);
- }
-
- return $instance;
- }
-
- /**
- * Create or update a related record matching the attributes, and fill it with values.
- *
- * @param array $attributes
- * @param array $values
- * @return \Illuminate\Database\Eloquent\Model
- */
- public function updateOrCreate(array $attributes, array $values = [])
- {
- $instance = $this->firstOrNew($attributes);
-
- $instance->fill($values)->save();
-
- return $instance;
- }
-
- /**
- * Add a basic where clause to the query, and return the first result.
- *
- * @param \Closure|string|array $column
- * @param mixed $operator
- * @param mixed $value
- * @param string $boolean
- * @return \Illuminate\Database\Eloquent\Model|static
- */
- public function firstWhere($column, $operator = null, $value = null, $boolean = 'and')
- {
- return $this->where($column, $operator, $value, $boolean)->first();
- }
-
- /**
- * Execute the query and get the first related model.
- *
- * @param array $columns
- * @return mixed
- */
- public function first($columns = ['*'])
- {
- $results = $this->take(1)->get($columns);
-
- return count($results) > 0 ? $results->first() : null;
- }
-
- /**
- * Execute the query and get the first result or throw an exception.
- *
- * @param array $columns
- * @return \Illuminate\Database\Eloquent\Model|static
- *
- * @throws \Illuminate\Database\Eloquent\ModelNotFoundException
- */
- public function firstOrFail($columns = ['*'])
- {
- if (! is_null($model = $this->first($columns))) {
- return $model;
- }
-
- throw (new ModelNotFoundException)->setModel(get_class($this->related));
- }
-
- /**
- * Find a related model by its primary key.
- *
- * @param mixed $id
- * @param array $columns
- * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|null
- */
- public function find($id, $columns = ['*'])
- {
- if (is_array($id) || $id instanceof Arrayable) {
- return $this->findMany($id, $columns);
- }
-
- return $this->where(
- $this->getRelated()->getQualifiedKeyName(), '=', $id
- )->first($columns);
- }
-
- /**
- * Find multiple related models by their primary keys.
- *
- * @param \Illuminate\Contracts\Support\Arrayable|array $ids
- * @param array $columns
- * @return \Illuminate\Database\Eloquent\Collection
- */
- public function findMany($ids, $columns = ['*'])
- {
- $ids = $ids instanceof Arrayable ? $ids->toArray() : $ids;
-
- if (empty($ids)) {
- return $this->getRelated()->newCollection();
- }
-
- return $this->whereIn(
- $this->getRelated()->getQualifiedKeyName(), $ids
- )->get($columns);
- }
-
- /**
- * Find a related model by its primary key or throw an exception.
- *
- * @param mixed $id
- * @param array $columns
- * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection
- *
- * @throws \Illuminate\Database\Eloquent\ModelNotFoundException
- */
- public function findOrFail($id, $columns = ['*'])
- {
- $result = $this->find($id, $columns);
-
- $id = $id instanceof Arrayable ? $id->toArray() : $id;
-
- if (is_array($id)) {
- if (count($result) === count(array_unique($id))) {
- return $result;
- }
- } elseif (! is_null($result)) {
- return $result;
- }
-
- throw (new ModelNotFoundException)->setModel(get_class($this->related), $id);
- }
-
- /**
- * Get the results of the relationship.
- *
- * @return mixed
- */
- public function getResults()
- {
- return ! is_null($this->farParent->{$this->localKey})
- ? $this->get()
- : $this->related->newCollection();
- }
-
- /**
- * Execute the query as a "select" statement.
- *
- * @param array $columns
- * @return \Illuminate\Database\Eloquent\Collection
- */
- public function get($columns = ['*'])
- {
- $builder = $this->prepareQueryBuilder($columns);
-
- $models = $builder->getModels();
-
- // If we actually found models we will also eager load any relationships that
- // have been specified as needing to be eager loaded. This will solve the
- // n + 1 query problem for the developer and also increase performance.
- if (count($models) > 0) {
- $models = $builder->eagerLoadRelations($models);
- }
-
- return $this->related->newCollection($models);
- }
-
- /**
- * Get a paginator for the "select" statement.
- *
- * @param int|null $perPage
- * @param array $columns
- * @param string $pageName
- * @param int $page
- * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator
- */
- public function paginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null)
- {
- $this->query->addSelect($this->shouldSelect($columns));
-
- return $this->query->paginate($perPage, $columns, $pageName, $page);
- }
-
- /**
- * Paginate the given query into a simple paginator.
- *
- * @param int|null $perPage
- * @param array $columns
- * @param string $pageName
- * @param int|null $page
- * @return \Illuminate\Contracts\Pagination\Paginator
- */
- public function simplePaginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null)
- {
- $this->query->addSelect($this->shouldSelect($columns));
-
- return $this->query->simplePaginate($perPage, $columns, $pageName, $page);
- }
-
- /**
- * Set the select clause for the relation query.
- *
- * @param array $columns
- * @return array
- */
- protected function shouldSelect(array $columns = ['*'])
- {
- if ($columns == ['*']) {
- $columns = [$this->related->getTable().'.*'];
- }
-
- return array_merge($columns, [$this->getQualifiedFirstKeyName().' as laravel_through_key']);
- }
-
- /**
- * Chunk the results of the query.
- *
- * @param int $count
- * @param callable $callback
- * @return bool
- */
- public function chunk($count, callable $callback)
- {
- return $this->prepareQueryBuilder()->chunk($count, $callback);
- }
-
- /**
- * Chunk the results of a query by comparing numeric IDs.
- *
- * @param int $count
- * @param callable $callback
- * @param string|null $column
- * @param string|null $alias
- * @return bool
- */
- public function chunkById($count, callable $callback, $column = null, $alias = null)
- {
- $column = $column ?? $this->getRelated()->getQualifiedKeyName();
-
- $alias = $alias ?? $this->getRelated()->getKeyName();
-
- return $this->prepareQueryBuilder()->chunkById($count, $callback, $column, $alias);
- }
-
- /**
- * Get a generator for the given query.
- *
- * @return \Generator
- */
- public function cursor()
- {
- return $this->prepareQueryBuilder()->cursor();
- }
-
- /**
- * Execute a callback over each item while chunking.
- *
- * @param callable $callback
- * @param int $count
- * @return bool
- */
- public function each(callable $callback, $count = 1000)
- {
- return $this->chunk($count, function ($results) use ($callback) {
- foreach ($results as $key => $value) {
- if ($callback($value, $key) === false) {
- return false;
- }
- }
- });
- }
-
- /**
- * Query lazily, by chunks of the given size.
- *
- * @param int $chunkSize
- * @return \Illuminate\Support\LazyCollection
- */
- public function lazy($chunkSize = 1000)
- {
- return $this->prepareQueryBuilder()->lazy($chunkSize);
- }
-
- /**
- * Query lazily, by chunking the results of a query by comparing IDs.
- *
- * @param int $count
- * @param string|null $column
- * @param string|null $alias
- * @return \Illuminate\Support\LazyCollection
- */
- public function lazyById($chunkSize = 1000, $column = null, $alias = null)
- {
- $column = $column ?? $this->getRelated()->getQualifiedKeyName();
-
- $alias = $alias ?? $this->getRelated()->getKeyName();
-
- return $this->prepareQueryBuilder()->lazyById($chunkSize, $column, $alias);
- }
-
- /**
- * Prepare the query builder for query execution.
- *
- * @param array $columns
- * @return \Illuminate\Database\Eloquent\Builder
- */
- protected function prepareQueryBuilder($columns = ['*'])
- {
- $builder = $this->query->applyScopes();
-
- return $builder->addSelect(
- $this->shouldSelect($builder->getQuery()->columns ? [] : $columns)
- );
- }
-
- /**
- * Add the constraints for a relationship query.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @param \Illuminate\Database\Eloquent\Builder $parentQuery
- * @param array|mixed $columns
- * @return \Illuminate\Database\Eloquent\Builder
- */
- public function getRelationExistenceQuery(Builder $query, Builder $parentQuery, $columns = ['*'])
- {
- if ($parentQuery->getQuery()->from === $query->getQuery()->from) {
- return $this->getRelationExistenceQueryForSelfRelation($query, $parentQuery, $columns);
- }
-
- if ($parentQuery->getQuery()->from === $this->throughParent->getTable()) {
- return $this->getRelationExistenceQueryForThroughSelfRelation($query, $parentQuery, $columns);
- }
-
- $this->performJoin($query);
-
- return $query->select($columns)->whereColumn(
- $this->getQualifiedLocalKeyName(), '=', $this->getQualifiedFirstKeyName()
- );
- }
-
- /**
- * Add the constraints for a relationship query on the same table.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @param \Illuminate\Database\Eloquent\Builder $parentQuery
- * @param array|mixed $columns
- * @return \Illuminate\Database\Eloquent\Builder
- */
- public function getRelationExistenceQueryForSelfRelation(Builder $query, Builder $parentQuery, $columns = ['*'])
- {
- $query->from($query->getModel()->getTable().' as '.$hash = $this->getRelationCountHash());
-
- $query->join($this->throughParent->getTable(), $this->getQualifiedParentKeyName(), '=', $hash.'.'.$this->secondKey);
-
- if ($this->throughParentSoftDeletes()) {
- $query->whereNull($this->throughParent->getQualifiedDeletedAtColumn());
- }
-
- $query->getModel()->setTable($hash);
-
- return $query->select($columns)->whereColumn(
- $parentQuery->getQuery()->from.'.'.$this->localKey, '=', $this->getQualifiedFirstKeyName()
- );
- }
-
- /**
- * Add the constraints for a relationship query on the same table as the through parent.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @param \Illuminate\Database\Eloquent\Builder $parentQuery
- * @param array|mixed $columns
- * @return \Illuminate\Database\Eloquent\Builder
- */
- public function getRelationExistenceQueryForThroughSelfRelation(Builder $query, Builder $parentQuery, $columns = ['*'])
- {
- $table = $this->throughParent->getTable().' as '.$hash = $this->getRelationCountHash();
-
- $query->join($table, $hash.'.'.$this->secondLocalKey, '=', $this->getQualifiedFarKeyName());
-
- if ($this->throughParentSoftDeletes()) {
- $query->whereNull($hash.'.'.$this->throughParent->getDeletedAtColumn());
- }
-
- return $query->select($columns)->whereColumn(
- $parentQuery->getQuery()->from.'.'.$this->localKey, '=', $hash.'.'.$this->firstKey
- );
- }
-
- /**
- * Get the qualified foreign key on the related model.
- *
- * @return string
- */
- public function getQualifiedFarKeyName()
- {
- return $this->getQualifiedForeignKeyName();
- }
-
- /**
- * Get the foreign key on the "through" model.
- *
- * @return string
- */
- public function getFirstKeyName()
- {
- return $this->firstKey;
- }
-
- /**
- * Get the qualified foreign key on the "through" model.
- *
- * @return string
- */
- public function getQualifiedFirstKeyName()
- {
- return $this->throughParent->qualifyColumn($this->firstKey);
- }
-
- /**
- * Get the foreign key on the related model.
- *
- * @return string
- */
- public function getForeignKeyName()
- {
- return $this->secondKey;
- }
-
- /**
- * Get the qualified foreign key on the related model.
- *
- * @return string
- */
- public function getQualifiedForeignKeyName()
- {
- return $this->related->qualifyColumn($this->secondKey);
- }
-
- /**
- * Get the local key on the far parent model.
- *
- * @return string
- */
- public function getLocalKeyName()
- {
- return $this->localKey;
- }
-
- /**
- * Get the qualified local key on the far parent model.
- *
- * @return string
- */
- public function getQualifiedLocalKeyName()
- {
- return $this->farParent->qualifyColumn($this->localKey);
- }
-
- /**
- * Get the local key on the intermediary model.
- *
- * @return string
- */
- public function getSecondLocalKeyName()
- {
- return $this->secondLocalKey;
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Relations/HasOne.php b/vendor/illuminate/database/Eloquent/Relations/HasOne.php
deleted file mode 100755
index 15c735c3..00000000
--- a/vendor/illuminate/database/Eloquent/Relations/HasOne.php
+++ /dev/null
@@ -1,137 +0,0 @@
-getParentKey())) {
- return $this->getDefaultFor($this->parent);
- }
-
- return $this->query->first() ?: $this->getDefaultFor($this->parent);
- }
-
- /**
- * Initialize the relation on a set of models.
- *
- * @param array $models
- * @param string $relation
- * @return array
- */
- public function initRelation(array $models, $relation)
- {
- foreach ($models as $model) {
- $model->setRelation($relation, $this->getDefaultFor($model));
- }
-
- return $models;
- }
-
- /**
- * Match the eagerly loaded results to their parents.
- *
- * @param array $models
- * @param \Illuminate\Database\Eloquent\Collection $results
- * @param string $relation
- * @return array
- */
- public function match(array $models, Collection $results, $relation)
- {
- return $this->matchOne($models, $results, $relation);
- }
-
- /**
- * Add the constraints for an internal relationship existence query.
- *
- * Essentially, these queries compare on column names like "whereColumn".
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @param \Illuminate\Database\Eloquent\Builder $parentQuery
- * @param array|mixed $columns
- * @return \Illuminate\Database\Eloquent\Builder
- */
- public function getRelationExistenceQuery(Builder $query, Builder $parentQuery, $columns = ['*'])
- {
- if ($this->isOneOfMany()) {
- $this->mergeOneOfManyJoinsTo($query);
- }
-
- return parent::getRelationExistenceQuery($query, $parentQuery, $columns);
- }
-
- /**
- * Add constraints for inner join subselect for one of many relationships.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @param string|null $column
- * @param string|null $aggregate
- * @return void
- */
- public function addOneOfManySubQueryConstraints(Builder $query, $column = null, $aggregate = null)
- {
- $query->addSelect($this->foreignKey);
- }
-
- /**
- * Get the columns that should be selected by the one of many subquery.
- *
- * @return array|string
- */
- public function getOneOfManySubQuerySelectColumns()
- {
- return $this->foreignKey;
- }
-
- /**
- * Add join query constraints for one of many relationships.
- *
- * @param \Illuminate\Database\Eloquent\JoinClause $join
- * @return void
- */
- public function addOneOfManyJoinSubQueryConstraints(JoinClause $join)
- {
- $join->on($this->qualifySubSelectColumn($this->foreignKey), '=', $this->qualifyRelatedColumn($this->foreignKey));
- }
-
- /**
- * Make a new related instance for the given model.
- *
- * @param \Illuminate\Database\Eloquent\Model $parent
- * @return \Illuminate\Database\Eloquent\Model
- */
- public function newRelatedInstanceFor(Model $parent)
- {
- return $this->related->newInstance()->setAttribute(
- $this->getForeignKeyName(), $parent->{$this->localKey}
- );
- }
-
- /**
- * Get the value of the model's foreign key.
- *
- * @param \Illuminate\Database\Eloquent\Model $model
- * @return mixed
- */
- protected function getRelatedKeyFrom(Model $model)
- {
- return $model->getAttribute($this->getForeignKeyName());
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Relations/HasOneOrMany.php b/vendor/illuminate/database/Eloquent/Relations/HasOneOrMany.php
deleted file mode 100755
index 1c7ff591..00000000
--- a/vendor/illuminate/database/Eloquent/Relations/HasOneOrMany.php
+++ /dev/null
@@ -1,425 +0,0 @@
-localKey = $localKey;
- $this->foreignKey = $foreignKey;
-
- parent::__construct($query, $parent);
- }
-
- /**
- * Create and return an un-saved instance of the related model.
- *
- * @param array $attributes
- * @return \Illuminate\Database\Eloquent\Model
- */
- public function make(array $attributes = [])
- {
- return tap($this->related->newInstance($attributes), function ($instance) {
- $this->setForeignAttributesForCreate($instance);
- });
- }
-
- /**
- * Create and return an un-saved instance of the related models.
- *
- * @param iterable $records
- * @return \Illuminate\Database\Eloquent\Collection
- */
- public function makeMany($records)
- {
- $instances = $this->related->newCollection();
-
- foreach ($records as $record) {
- $instances->push($this->make($record));
- }
-
- return $instances;
- }
-
- /**
- * Set the base constraints on the relation query.
- *
- * @return void
- */
- public function addConstraints()
- {
- if (static::$constraints) {
- $query = $this->getRelationQuery();
-
- $query->where($this->foreignKey, '=', $this->getParentKey());
-
- $query->whereNotNull($this->foreignKey);
- }
- }
-
- /**
- * Set the constraints for an eager load of the relation.
- *
- * @param array $models
- * @return void
- */
- public function addEagerConstraints(array $models)
- {
- $whereIn = $this->whereInMethod($this->parent, $this->localKey);
-
- $this->getRelationQuery()->{$whereIn}(
- $this->foreignKey, $this->getKeys($models, $this->localKey)
- );
- }
-
- /**
- * Match the eagerly loaded results to their single parents.
- *
- * @param array $models
- * @param \Illuminate\Database\Eloquent\Collection $results
- * @param string $relation
- * @return array
- */
- public function matchOne(array $models, Collection $results, $relation)
- {
- return $this->matchOneOrMany($models, $results, $relation, 'one');
- }
-
- /**
- * Match the eagerly loaded results to their many parents.
- *
- * @param array $models
- * @param \Illuminate\Database\Eloquent\Collection $results
- * @param string $relation
- * @return array
- */
- public function matchMany(array $models, Collection $results, $relation)
- {
- return $this->matchOneOrMany($models, $results, $relation, 'many');
- }
-
- /**
- * Match the eagerly loaded results to their many parents.
- *
- * @param array $models
- * @param \Illuminate\Database\Eloquent\Collection $results
- * @param string $relation
- * @param string $type
- * @return array
- */
- protected function matchOneOrMany(array $models, Collection $results, $relation, $type)
- {
- $dictionary = $this->buildDictionary($results);
-
- // Once we have the dictionary we can simply spin through the parent models to
- // link them up with their children using the keyed dictionary to make the
- // matching very convenient and easy work. Then we'll just return them.
- foreach ($models as $model) {
- if (isset($dictionary[$key = $this->getDictionaryKey($model->getAttribute($this->localKey))])) {
- $model->setRelation(
- $relation, $this->getRelationValue($dictionary, $key, $type)
- );
- }
- }
-
- return $models;
- }
-
- /**
- * Get the value of a relationship by one or many type.
- *
- * @param array $dictionary
- * @param string $key
- * @param string $type
- * @return mixed
- */
- protected function getRelationValue(array $dictionary, $key, $type)
- {
- $value = $dictionary[$key];
-
- return $type === 'one' ? reset($value) : $this->related->newCollection($value);
- }
-
- /**
- * Build model dictionary keyed by the relation's foreign key.
- *
- * @param \Illuminate\Database\Eloquent\Collection $results
- * @return array
- */
- protected function buildDictionary(Collection $results)
- {
- $foreign = $this->getForeignKeyName();
-
- return $results->mapToDictionary(function ($result) use ($foreign) {
- return [$this->getDictionaryKey($result->{$foreign}) => $result];
- })->all();
- }
-
- /**
- * Find a model by its primary key or return a new instance of the related model.
- *
- * @param mixed $id
- * @param array $columns
- * @return \Illuminate\Support\Collection|\Illuminate\Database\Eloquent\Model
- */
- public function findOrNew($id, $columns = ['*'])
- {
- if (is_null($instance = $this->find($id, $columns))) {
- $instance = $this->related->newInstance();
-
- $this->setForeignAttributesForCreate($instance);
- }
-
- return $instance;
- }
-
- /**
- * Get the first related model record matching the attributes or instantiate it.
- *
- * @param array $attributes
- * @param array $values
- * @return \Illuminate\Database\Eloquent\Model
- */
- public function firstOrNew(array $attributes = [], array $values = [])
- {
- if (is_null($instance = $this->where($attributes)->first())) {
- $instance = $this->related->newInstance(array_merge($attributes, $values));
-
- $this->setForeignAttributesForCreate($instance);
- }
-
- return $instance;
- }
-
- /**
- * Get the first related record matching the attributes or create it.
- *
- * @param array $attributes
- * @param array $values
- * @return \Illuminate\Database\Eloquent\Model
- */
- public function firstOrCreate(array $attributes = [], array $values = [])
- {
- if (is_null($instance = $this->where($attributes)->first())) {
- $instance = $this->create(array_merge($attributes, $values));
- }
-
- return $instance;
- }
-
- /**
- * Create or update a related record matching the attributes, and fill it with values.
- *
- * @param array $attributes
- * @param array $values
- * @return \Illuminate\Database\Eloquent\Model
- */
- public function updateOrCreate(array $attributes, array $values = [])
- {
- return tap($this->firstOrNew($attributes), function ($instance) use ($values) {
- $instance->fill($values);
-
- $instance->save();
- });
- }
-
- /**
- * Attach a model instance to the parent model.
- *
- * @param \Illuminate\Database\Eloquent\Model $model
- * @return \Illuminate\Database\Eloquent\Model|false
- */
- public function save(Model $model)
- {
- $this->setForeignAttributesForCreate($model);
-
- return $model->save() ? $model : false;
- }
-
- /**
- * Attach a collection of models to the parent instance.
- *
- * @param iterable $models
- * @return iterable
- */
- public function saveMany($models)
- {
- foreach ($models as $model) {
- $this->save($model);
- }
-
- return $models;
- }
-
- /**
- * Create a new instance of the related model.
- *
- * @param array $attributes
- * @return \Illuminate\Database\Eloquent\Model
- */
- public function create(array $attributes = [])
- {
- return tap($this->related->newInstance($attributes), function ($instance) {
- $this->setForeignAttributesForCreate($instance);
-
- $instance->save();
- });
- }
-
- /**
- * Create a Collection of new instances of the related model.
- *
- * @param iterable $records
- * @return \Illuminate\Database\Eloquent\Collection
- */
- public function createMany(iterable $records)
- {
- $instances = $this->related->newCollection();
-
- foreach ($records as $record) {
- $instances->push($this->create($record));
- }
-
- return $instances;
- }
-
- /**
- * Set the foreign ID for creating a related model.
- *
- * @param \Illuminate\Database\Eloquent\Model $model
- * @return void
- */
- protected function setForeignAttributesForCreate(Model $model)
- {
- $model->setAttribute($this->getForeignKeyName(), $this->getParentKey());
- }
-
- /**
- * Add the constraints for a relationship query.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @param \Illuminate\Database\Eloquent\Builder $parentQuery
- * @param array|mixed $columns
- * @return \Illuminate\Database\Eloquent\Builder
- */
- public function getRelationExistenceQuery(Builder $query, Builder $parentQuery, $columns = ['*'])
- {
- if ($query->getQuery()->from == $parentQuery->getQuery()->from) {
- return $this->getRelationExistenceQueryForSelfRelation($query, $parentQuery, $columns);
- }
-
- return parent::getRelationExistenceQuery($query, $parentQuery, $columns);
- }
-
- /**
- * Add the constraints for a relationship query on the same table.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @param \Illuminate\Database\Eloquent\Builder $parentQuery
- * @param array|mixed $columns
- * @return \Illuminate\Database\Eloquent\Builder
- */
- public function getRelationExistenceQueryForSelfRelation(Builder $query, Builder $parentQuery, $columns = ['*'])
- {
- $query->from($query->getModel()->getTable().' as '.$hash = $this->getRelationCountHash());
-
- $query->getModel()->setTable($hash);
-
- return $query->select($columns)->whereColumn(
- $this->getQualifiedParentKeyName(), '=', $hash.'.'.$this->getForeignKeyName()
- );
- }
-
- /**
- * Get the key for comparing against the parent key in "has" query.
- *
- * @return string
- */
- public function getExistenceCompareKey()
- {
- return $this->getQualifiedForeignKeyName();
- }
-
- /**
- * Get the key value of the parent's local key.
- *
- * @return mixed
- */
- public function getParentKey()
- {
- return $this->parent->getAttribute($this->localKey);
- }
-
- /**
- * Get the fully qualified parent key name.
- *
- * @return string
- */
- public function getQualifiedParentKeyName()
- {
- return $this->parent->qualifyColumn($this->localKey);
- }
-
- /**
- * Get the plain foreign key.
- *
- * @return string
- */
- public function getForeignKeyName()
- {
- $segments = explode('.', $this->getQualifiedForeignKeyName());
-
- return end($segments);
- }
-
- /**
- * Get the foreign key for the relationship.
- *
- * @return string
- */
- public function getQualifiedForeignKeyName()
- {
- return $this->foreignKey;
- }
-
- /**
- * Get the local key for the relationship.
- *
- * @return string
- */
- public function getLocalKeyName()
- {
- return $this->localKey;
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Relations/HasOneThrough.php b/vendor/illuminate/database/Eloquent/Relations/HasOneThrough.php
deleted file mode 100644
index ed9c7baa..00000000
--- a/vendor/illuminate/database/Eloquent/Relations/HasOneThrough.php
+++ /dev/null
@@ -1,77 +0,0 @@
-first() ?: $this->getDefaultFor($this->farParent);
- }
-
- /**
- * Initialize the relation on a set of models.
- *
- * @param array $models
- * @param string $relation
- * @return array
- */
- public function initRelation(array $models, $relation)
- {
- foreach ($models as $model) {
- $model->setRelation($relation, $this->getDefaultFor($model));
- }
-
- return $models;
- }
-
- /**
- * Match the eagerly loaded results to their parents.
- *
- * @param array $models
- * @param \Illuminate\Database\Eloquent\Collection $results
- * @param string $relation
- * @return array
- */
- public function match(array $models, Collection $results, $relation)
- {
- $dictionary = $this->buildDictionary($results);
-
- // Once we have the dictionary we can simply spin through the parent models to
- // link them up with their children using the keyed dictionary to make the
- // matching very convenient and easy work. Then we'll just return them.
- foreach ($models as $model) {
- if (isset($dictionary[$key = $this->getDictionaryKey($model->getAttribute($this->localKey))])) {
- $value = $dictionary[$key];
- $model->setRelation(
- $relation, reset($value)
- );
- }
- }
-
- return $models;
- }
-
- /**
- * Make a new related instance for the given model.
- *
- * @param \Illuminate\Database\Eloquent\Model $parent
- * @return \Illuminate\Database\Eloquent\Model
- */
- public function newRelatedInstanceFor(Model $parent)
- {
- return $this->related->newInstance();
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Relations/MorphMany.php b/vendor/illuminate/database/Eloquent/Relations/MorphMany.php
deleted file mode 100755
index 12b06502..00000000
--- a/vendor/illuminate/database/Eloquent/Relations/MorphMany.php
+++ /dev/null
@@ -1,49 +0,0 @@
-getParentKey())
- ? $this->query->get()
- : $this->related->newCollection();
- }
-
- /**
- * Initialize the relation on a set of models.
- *
- * @param array $models
- * @param string $relation
- * @return array
- */
- public function initRelation(array $models, $relation)
- {
- foreach ($models as $model) {
- $model->setRelation($relation, $this->related->newCollection());
- }
-
- return $models;
- }
-
- /**
- * Match the eagerly loaded results to their parents.
- *
- * @param array $models
- * @param \Illuminate\Database\Eloquent\Collection $results
- * @param string $relation
- * @return array
- */
- public function match(array $models, Collection $results, $relation)
- {
- return $this->matchMany($models, $results, $relation);
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Relations/MorphOne.php b/vendor/illuminate/database/Eloquent/Relations/MorphOne.php
deleted file mode 100755
index ff526842..00000000
--- a/vendor/illuminate/database/Eloquent/Relations/MorphOne.php
+++ /dev/null
@@ -1,137 +0,0 @@
-getParentKey())) {
- return $this->getDefaultFor($this->parent);
- }
-
- return $this->query->first() ?: $this->getDefaultFor($this->parent);
- }
-
- /**
- * Initialize the relation on a set of models.
- *
- * @param array $models
- * @param string $relation
- * @return array
- */
- public function initRelation(array $models, $relation)
- {
- foreach ($models as $model) {
- $model->setRelation($relation, $this->getDefaultFor($model));
- }
-
- return $models;
- }
-
- /**
- * Match the eagerly loaded results to their parents.
- *
- * @param array $models
- * @param \Illuminate\Database\Eloquent\Collection $results
- * @param string $relation
- * @return array
- */
- public function match(array $models, Collection $results, $relation)
- {
- return $this->matchOne($models, $results, $relation);
- }
-
- /**
- * Get the relationship query.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @param \Illuminate\Database\Eloquent\Builder $parentQuery
- * @param array|mixed $columns
- * @return \Illuminate\Database\Eloquent\Builder
- */
- public function getRelationExistenceQuery(Builder $query, Builder $parentQuery, $columns = ['*'])
- {
- if ($this->isOneOfMany()) {
- $this->mergeOneOfManyJoinsTo($query);
- }
-
- return parent::getRelationExistenceQuery($query, $parentQuery, $columns);
- }
-
- /**
- * Add constraints for inner join subselect for one of many relationships.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @param string|null $column
- * @param string|null $aggregate
- * @return void
- */
- public function addOneOfManySubQueryConstraints(Builder $query, $column = null, $aggregate = null)
- {
- $query->addSelect($this->foreignKey, $this->morphType);
- }
-
- /**
- * Get the columns that should be selected by the one of many subquery.
- *
- * @return array|string
- */
- public function getOneOfManySubQuerySelectColumns()
- {
- return [$this->foreignKey, $this->morphType];
- }
-
- /**
- * Add join query constraints for one of many relationships.
- *
- * @param \Illuminate\Database\Eloquent\JoinClause $join
- * @return void
- */
- public function addOneOfManyJoinSubQueryConstraints(JoinClause $join)
- {
- $join
- ->on($this->qualifySubSelectColumn($this->morphType), '=', $this->qualifyRelatedColumn($this->morphType))
- ->on($this->qualifySubSelectColumn($this->foreignKey), '=', $this->qualifyRelatedColumn($this->foreignKey));
- }
-
- /**
- * Make a new related instance for the given model.
- *
- * @param \Illuminate\Database\Eloquent\Model $parent
- * @return \Illuminate\Database\Eloquent\Model
- */
- public function newRelatedInstanceFor(Model $parent)
- {
- return $this->related->newInstance()
- ->setAttribute($this->getForeignKeyName(), $parent->{$this->localKey})
- ->setAttribute($this->getMorphType(), $this->morphClass);
- }
-
- /**
- * Get the value of the model's foreign key.
- *
- * @param \Illuminate\Database\Eloquent\Model $model
- * @return mixed
- */
- protected function getRelatedKeyFrom(Model $model)
- {
- return $model->getAttribute($this->getForeignKeyName());
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Relations/MorphOneOrMany.php b/vendor/illuminate/database/Eloquent/Relations/MorphOneOrMany.php
deleted file mode 100755
index ff58ef97..00000000
--- a/vendor/illuminate/database/Eloquent/Relations/MorphOneOrMany.php
+++ /dev/null
@@ -1,127 +0,0 @@
-morphType = $type;
-
- $this->morphClass = $parent->getMorphClass();
-
- parent::__construct($query, $parent, $id, $localKey);
- }
-
- /**
- * Set the base constraints on the relation query.
- *
- * @return void
- */
- public function addConstraints()
- {
- if (static::$constraints) {
- parent::addConstraints();
-
- $this->getRelationQuery()->where($this->morphType, $this->morphClass);
- }
- }
-
- /**
- * Set the constraints for an eager load of the relation.
- *
- * @param array $models
- * @return void
- */
- public function addEagerConstraints(array $models)
- {
- parent::addEagerConstraints($models);
-
- $this->getRelationQuery()->where($this->morphType, $this->morphClass);
- }
-
- /**
- * Set the foreign ID and type for creating a related model.
- *
- * @param \Illuminate\Database\Eloquent\Model $model
- * @return void
- */
- protected function setForeignAttributesForCreate(Model $model)
- {
- $model->{$this->getForeignKeyName()} = $this->getParentKey();
-
- $model->{$this->getMorphType()} = $this->morphClass;
- }
-
- /**
- * Get the relationship query.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @param \Illuminate\Database\Eloquent\Builder $parentQuery
- * @param array|mixed $columns
- * @return \Illuminate\Database\Eloquent\Builder
- */
- public function getRelationExistenceQuery(Builder $query, Builder $parentQuery, $columns = ['*'])
- {
- return parent::getRelationExistenceQuery($query, $parentQuery, $columns)->where(
- $query->qualifyColumn($this->getMorphType()), $this->morphClass
- );
- }
-
- /**
- * Get the foreign key "type" name.
- *
- * @return string
- */
- public function getQualifiedMorphType()
- {
- return $this->morphType;
- }
-
- /**
- * Get the plain morph type name without the table.
- *
- * @return string
- */
- public function getMorphType()
- {
- return last(explode('.', $this->morphType));
- }
-
- /**
- * Get the class name of the parent model.
- *
- * @return string
- */
- public function getMorphClass()
- {
- return $this->morphClass;
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Relations/MorphPivot.php b/vendor/illuminate/database/Eloquent/Relations/MorphPivot.php
deleted file mode 100644
index 7fbe484a..00000000
--- a/vendor/illuminate/database/Eloquent/Relations/MorphPivot.php
+++ /dev/null
@@ -1,184 +0,0 @@
-where($this->morphType, $this->morphClass);
-
- return parent::setKeysForSaveQuery($query);
- }
-
- /**
- * Set the keys for a select query.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @return \Illuminate\Database\Eloquent\Builder
- */
- protected function setKeysForSelectQuery($query)
- {
- $query->where($this->morphType, $this->morphClass);
-
- return parent::setKeysForSelectQuery($query);
- }
-
- /**
- * Delete the pivot model record from the database.
- *
- * @return int
- */
- public function delete()
- {
- if (isset($this->attributes[$this->getKeyName()])) {
- return (int) parent::delete();
- }
-
- if ($this->fireModelEvent('deleting') === false) {
- return 0;
- }
-
- $query = $this->getDeleteQuery();
-
- $query->where($this->morphType, $this->morphClass);
-
- return tap($query->delete(), function () {
- $this->fireModelEvent('deleted', false);
- });
- }
-
- /**
- * Get the morph type for the pivot.
- *
- * @return string
- */
- public function getMorphType()
- {
- return $this->morphType;
- }
-
- /**
- * Set the morph type for the pivot.
- *
- * @param string $morphType
- * @return $this
- */
- public function setMorphType($morphType)
- {
- $this->morphType = $morphType;
-
- return $this;
- }
-
- /**
- * Set the morph class for the pivot.
- *
- * @param string $morphClass
- * @return \Illuminate\Database\Eloquent\Relations\MorphPivot
- */
- public function setMorphClass($morphClass)
- {
- $this->morphClass = $morphClass;
-
- return $this;
- }
-
- /**
- * Get the queueable identity for the entity.
- *
- * @return mixed
- */
- public function getQueueableId()
- {
- if (isset($this->attributes[$this->getKeyName()])) {
- return $this->getKey();
- }
-
- return sprintf(
- '%s:%s:%s:%s:%s:%s',
- $this->foreignKey, $this->getAttribute($this->foreignKey),
- $this->relatedKey, $this->getAttribute($this->relatedKey),
- $this->morphType, $this->morphClass
- );
- }
-
- /**
- * Get a new query to restore one or more models by their queueable IDs.
- *
- * @param array|int $ids
- * @return \Illuminate\Database\Eloquent\Builder
- */
- public function newQueryForRestoration($ids)
- {
- if (is_array($ids)) {
- return $this->newQueryForCollectionRestoration($ids);
- }
-
- if (! Str::contains($ids, ':')) {
- return parent::newQueryForRestoration($ids);
- }
-
- $segments = explode(':', $ids);
-
- return $this->newQueryWithoutScopes()
- ->where($segments[0], $segments[1])
- ->where($segments[2], $segments[3])
- ->where($segments[4], $segments[5]);
- }
-
- /**
- * Get a new query to restore multiple models by their queueable IDs.
- *
- * @param array $ids
- * @return \Illuminate\Database\Eloquent\Builder
- */
- protected function newQueryForCollectionRestoration(array $ids)
- {
- $ids = array_values($ids);
-
- if (! Str::contains($ids[0], ':')) {
- return parent::newQueryForRestoration($ids);
- }
-
- $query = $this->newQueryWithoutScopes();
-
- foreach ($ids as $id) {
- $segments = explode(':', $id);
-
- $query->orWhere(function ($query) use ($segments) {
- return $query->where($segments[0], $segments[1])
- ->where($segments[2], $segments[3])
- ->where($segments[4], $segments[5]);
- });
- }
-
- return $query;
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Relations/MorphTo.php b/vendor/illuminate/database/Eloquent/Relations/MorphTo.php
deleted file mode 100644
index 262741f3..00000000
--- a/vendor/illuminate/database/Eloquent/Relations/MorphTo.php
+++ /dev/null
@@ -1,396 +0,0 @@
-morphType = $type;
-
- parent::__construct($query, $parent, $foreignKey, $ownerKey, $relation);
- }
-
- /**
- * Set the constraints for an eager load of the relation.
- *
- * @param array $models
- * @return void
- */
- public function addEagerConstraints(array $models)
- {
- $this->buildDictionary($this->models = Collection::make($models));
- }
-
- /**
- * Build a dictionary with the models.
- *
- * @param \Illuminate\Database\Eloquent\Collection $models
- * @return void
- */
- protected function buildDictionary(Collection $models)
- {
- foreach ($models as $model) {
- if ($model->{$this->morphType}) {
- $morphTypeKey = $this->getDictionaryKey($model->{$this->morphType});
- $foreignKeyKey = $this->getDictionaryKey($model->{$this->foreignKey});
-
- $this->dictionary[$morphTypeKey][$foreignKeyKey][] = $model;
- }
- }
- }
-
- /**
- * Get the results of the relationship.
- *
- * Called via eager load method of Eloquent query builder.
- *
- * @return mixed
- */
- public function getEager()
- {
- foreach (array_keys($this->dictionary) as $type) {
- $this->matchToMorphParents($type, $this->getResultsByType($type));
- }
-
- return $this->models;
- }
-
- /**
- * Get all of the relation results for a type.
- *
- * @param string $type
- * @return \Illuminate\Database\Eloquent\Collection
- */
- protected function getResultsByType($type)
- {
- $instance = $this->createModelByType($type);
-
- $ownerKey = $this->ownerKey ?? $instance->getKeyName();
-
- $query = $this->replayMacros($instance->newQuery())
- ->mergeConstraintsFrom($this->getQuery())
- ->with(array_merge(
- $this->getQuery()->getEagerLoads(),
- (array) ($this->morphableEagerLoads[get_class($instance)] ?? [])
- ))
- ->withCount(
- (array) ($this->morphableEagerLoadCounts[get_class($instance)] ?? [])
- );
-
- if ($callback = ($this->morphableConstraints[get_class($instance)] ?? null)) {
- $callback($query);
- }
-
- $whereIn = $this->whereInMethod($instance, $ownerKey);
-
- return $query->{$whereIn}(
- $instance->getTable().'.'.$ownerKey, $this->gatherKeysByType($type, $instance->getKeyType())
- )->get();
- }
-
- /**
- * Gather all of the foreign keys for a given type.
- *
- * @param string $type
- * @param string $keyType
- * @return array
- */
- protected function gatherKeysByType($type, $keyType)
- {
- return $keyType !== 'string'
- ? array_keys($this->dictionary[$type])
- : array_map(function ($modelId) {
- return (string) $modelId;
- }, array_filter(array_keys($this->dictionary[$type])));
- }
-
- /**
- * Create a new model instance by type.
- *
- * @param string $type
- * @return \Illuminate\Database\Eloquent\Model
- */
- public function createModelByType($type)
- {
- $class = Model::getActualClassNameForMorph($type);
-
- return tap(new $class, function ($instance) {
- if (! $instance->getConnectionName()) {
- $instance->setConnection($this->getConnection()->getName());
- }
- });
- }
-
- /**
- * Match the eagerly loaded results to their parents.
- *
- * @param array $models
- * @param \Illuminate\Database\Eloquent\Collection $results
- * @param string $relation
- * @return array
- */
- public function match(array $models, Collection $results, $relation)
- {
- return $models;
- }
-
- /**
- * Match the results for a given type to their parents.
- *
- * @param string $type
- * @param \Illuminate\Database\Eloquent\Collection $results
- * @return void
- */
- protected function matchToMorphParents($type, Collection $results)
- {
- foreach ($results as $result) {
- $ownerKey = ! is_null($this->ownerKey) ? $this->getDictionaryKey($result->{$this->ownerKey}) : $result->getKey();
-
- if (isset($this->dictionary[$type][$ownerKey])) {
- foreach ($this->dictionary[$type][$ownerKey] as $model) {
- $model->setRelation($this->relationName, $result);
- }
- }
- }
- }
-
- /**
- * Associate the model instance to the given parent.
- *
- * @param \Illuminate\Database\Eloquent\Model $model
- * @return \Illuminate\Database\Eloquent\Model
- */
- public function associate($model)
- {
- if ($model instanceof Model) {
- $foreignKey = $this->ownerKey && $model->{$this->ownerKey}
- ? $this->ownerKey
- : $model->getKeyName();
- }
-
- $this->parent->setAttribute(
- $this->foreignKey, $model instanceof Model ? $model->{$foreignKey} : null
- );
-
- $this->parent->setAttribute(
- $this->morphType, $model instanceof Model ? $model->getMorphClass() : null
- );
-
- return $this->parent->setRelation($this->relationName, $model);
- }
-
- /**
- * Dissociate previously associated model from the given parent.
- *
- * @return \Illuminate\Database\Eloquent\Model
- */
- public function dissociate()
- {
- $this->parent->setAttribute($this->foreignKey, null);
-
- $this->parent->setAttribute($this->morphType, null);
-
- return $this->parent->setRelation($this->relationName, null);
- }
-
- /**
- * Touch all of the related models for the relationship.
- *
- * @return void
- */
- public function touch()
- {
- if (! is_null($this->child->{$this->foreignKey})) {
- parent::touch();
- }
- }
-
- /**
- * Make a new related instance for the given model.
- *
- * @param \Illuminate\Database\Eloquent\Model $parent
- * @return \Illuminate\Database\Eloquent\Model
- */
- protected function newRelatedInstanceFor(Model $parent)
- {
- return $parent->{$this->getRelationName()}()->getRelated()->newInstance();
- }
-
- /**
- * Get the foreign key "type" name.
- *
- * @return string
- */
- public function getMorphType()
- {
- return $this->morphType;
- }
-
- /**
- * Get the dictionary used by the relationship.
- *
- * @return array
- */
- public function getDictionary()
- {
- return $this->dictionary;
- }
-
- /**
- * Specify which relations to load for a given morph type.
- *
- * @param array $with
- * @return \Illuminate\Database\Eloquent\Relations\MorphTo
- */
- public function morphWith(array $with)
- {
- $this->morphableEagerLoads = array_merge(
- $this->morphableEagerLoads, $with
- );
-
- return $this;
- }
-
- /**
- * Specify which relationship counts to load for a given morph type.
- *
- * @param array $withCount
- * @return \Illuminate\Database\Eloquent\Relations\MorphTo
- */
- public function morphWithCount(array $withCount)
- {
- $this->morphableEagerLoadCounts = array_merge(
- $this->morphableEagerLoadCounts, $withCount
- );
-
- return $this;
- }
-
- /**
- * Specify constraints on the query for a given morph type.
- *
- * @param array $callbacks
- * @return \Illuminate\Database\Eloquent\Relations\MorphTo
- */
- public function constrain(array $callbacks)
- {
- $this->morphableConstraints = array_merge(
- $this->morphableConstraints, $callbacks
- );
-
- return $this;
- }
-
- /**
- * Replay stored macro calls on the actual related instance.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @return \Illuminate\Database\Eloquent\Builder
- */
- protected function replayMacros(Builder $query)
- {
- foreach ($this->macroBuffer as $macro) {
- $query->{$macro['method']}(...$macro['parameters']);
- }
-
- return $query;
- }
-
- /**
- * Handle dynamic method calls to the relationship.
- *
- * @param string $method
- * @param array $parameters
- * @return mixed
- */
- public function __call($method, $parameters)
- {
- try {
- $result = parent::__call($method, $parameters);
-
- if (in_array($method, ['select', 'selectRaw', 'selectSub', 'addSelect', 'withoutGlobalScopes'])) {
- $this->macroBuffer[] = compact('method', 'parameters');
- }
-
- return $result;
- }
-
- // If we tried to call a method that does not exist on the parent Builder instance,
- // we'll assume that we want to call a query macro (e.g. withTrashed) that only
- // exists on related models. We will just store the call and replay it later.
- catch (BadMethodCallException $e) {
- $this->macroBuffer[] = compact('method', 'parameters');
-
- return $this;
- }
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Relations/MorphToMany.php b/vendor/illuminate/database/Eloquent/Relations/MorphToMany.php
deleted file mode 100644
index c2d57455..00000000
--- a/vendor/illuminate/database/Eloquent/Relations/MorphToMany.php
+++ /dev/null
@@ -1,209 +0,0 @@
-inverse = $inverse;
- $this->morphType = $name.'_type';
- $this->morphClass = $inverse ? $query->getModel()->getMorphClass() : $parent->getMorphClass();
-
- parent::__construct(
- $query, $parent, $table, $foreignPivotKey,
- $relatedPivotKey, $parentKey, $relatedKey, $relationName
- );
- }
-
- /**
- * Set the where clause for the relation query.
- *
- * @return $this
- */
- protected function addWhereConstraints()
- {
- parent::addWhereConstraints();
-
- $this->query->where($this->qualifyPivotColumn($this->morphType), $this->morphClass);
-
- return $this;
- }
-
- /**
- * Set the constraints for an eager load of the relation.
- *
- * @param array $models
- * @return void
- */
- public function addEagerConstraints(array $models)
- {
- parent::addEagerConstraints($models);
-
- $this->query->where($this->qualifyPivotColumn($this->morphType), $this->morphClass);
- }
-
- /**
- * Create a new pivot attachment record.
- *
- * @param int $id
- * @param bool $timed
- * @return array
- */
- protected function baseAttachRecord($id, $timed)
- {
- return Arr::add(
- parent::baseAttachRecord($id, $timed), $this->morphType, $this->morphClass
- );
- }
-
- /**
- * Add the constraints for a relationship count query.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @param \Illuminate\Database\Eloquent\Builder $parentQuery
- * @param array|mixed $columns
- * @return \Illuminate\Database\Eloquent\Builder
- */
- public function getRelationExistenceQuery(Builder $query, Builder $parentQuery, $columns = ['*'])
- {
- return parent::getRelationExistenceQuery($query, $parentQuery, $columns)->where(
- $this->qualifyPivotColumn($this->morphType), $this->morphClass
- );
- }
-
- /**
- * Get the pivot models that are currently attached.
- *
- * @return \Illuminate\Support\Collection
- */
- protected function getCurrentlyAttachedPivots()
- {
- return parent::getCurrentlyAttachedPivots()->map(function ($record) {
- return $record instanceof MorphPivot
- ? $record->setMorphType($this->morphType)
- ->setMorphClass($this->morphClass)
- : $record;
- });
- }
-
- /**
- * Create a new query builder for the pivot table.
- *
- * @return \Illuminate\Database\Query\Builder
- */
- public function newPivotQuery()
- {
- return parent::newPivotQuery()->where($this->morphType, $this->morphClass);
- }
-
- /**
- * Create a new pivot model instance.
- *
- * @param array $attributes
- * @param bool $exists
- * @return \Illuminate\Database\Eloquent\Relations\Pivot
- */
- public function newPivot(array $attributes = [], $exists = false)
- {
- $using = $this->using;
-
- $pivot = $using ? $using::fromRawAttributes($this->parent, $attributes, $this->table, $exists)
- : MorphPivot::fromAttributes($this->parent, $attributes, $this->table, $exists);
-
- $pivot->setPivotKeys($this->foreignPivotKey, $this->relatedPivotKey)
- ->setMorphType($this->morphType)
- ->setMorphClass($this->morphClass);
-
- return $pivot;
- }
-
- /**
- * Get the pivot columns for the relation.
- *
- * "pivot_" is prefixed at each column for easy removal later.
- *
- * @return array
- */
- protected function aliasedPivotColumns()
- {
- $defaults = [$this->foreignPivotKey, $this->relatedPivotKey, $this->morphType];
-
- return collect(array_merge($defaults, $this->pivotColumns))->map(function ($column) {
- return $this->qualifyPivotColumn($column).' as pivot_'.$column;
- })->unique()->all();
- }
-
- /**
- * Get the foreign key "type" name.
- *
- * @return string
- */
- public function getMorphType()
- {
- return $this->morphType;
- }
-
- /**
- * Get the class name of the parent model.
- *
- * @return string
- */
- public function getMorphClass()
- {
- return $this->morphClass;
- }
-
- /**
- * Get the indicator for a reverse relationship.
- *
- * @return bool
- */
- public function getInverse()
- {
- return $this->inverse;
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Relations/Pivot.php b/vendor/illuminate/database/Eloquent/Relations/Pivot.php
deleted file mode 100755
index a65ecdea..00000000
--- a/vendor/illuminate/database/Eloquent/Relations/Pivot.php
+++ /dev/null
@@ -1,25 +0,0 @@
-query = $query;
- $this->parent = $parent;
- $this->related = $query->getModel();
-
- $this->addConstraints();
- }
-
- /**
- * Run a callback with constraints disabled on the relation.
- *
- * @param \Closure $callback
- * @return mixed
- */
- public static function noConstraints(Closure $callback)
- {
- $previous = static::$constraints;
-
- static::$constraints = false;
-
- // When resetting the relation where clause, we want to shift the first element
- // off of the bindings, leaving only the constraints that the developers put
- // as "extra" on the relationships, and not original relation constraints.
- try {
- return $callback();
- } finally {
- static::$constraints = $previous;
- }
- }
-
- /**
- * Set the base constraints on the relation query.
- *
- * @return void
- */
- abstract public function addConstraints();
-
- /**
- * Set the constraints for an eager load of the relation.
- *
- * @param array $models
- * @return void
- */
- abstract public function addEagerConstraints(array $models);
-
- /**
- * Initialize the relation on a set of models.
- *
- * @param array $models
- * @param string $relation
- * @return array
- */
- abstract public function initRelation(array $models, $relation);
-
- /**
- * Match the eagerly loaded results to their parents.
- *
- * @param array $models
- * @param \Illuminate\Database\Eloquent\Collection $results
- * @param string $relation
- * @return array
- */
- abstract public function match(array $models, Collection $results, $relation);
-
- /**
- * Get the results of the relationship.
- *
- * @return mixed
- */
- abstract public function getResults();
-
- /**
- * Get the relationship for eager loading.
- *
- * @return \Illuminate\Database\Eloquent\Collection
- */
- public function getEager()
- {
- return $this->get();
- }
-
- /**
- * Execute the query and get the first result if it's the sole matching record.
- *
- * @param array|string $columns
- * @return \Illuminate\Database\Eloquent\Model
- *
- * @throws \Illuminate\Database\Eloquent\ModelNotFoundException
- * @throws \Illuminate\Database\MultipleRecordsFoundException
- */
- public function sole($columns = ['*'])
- {
- $result = $this->take(2)->get($columns);
-
- if ($result->isEmpty()) {
- throw (new ModelNotFoundException)->setModel(get_class($this->related));
- }
-
- if ($result->count() > 1) {
- throw new MultipleRecordsFoundException;
- }
-
- return $result->first();
- }
-
- /**
- * Execute the query as a "select" statement.
- *
- * @param array $columns
- * @return \Illuminate\Database\Eloquent\Collection
- */
- public function get($columns = ['*'])
- {
- return $this->query->get($columns);
- }
-
- /**
- * Touch all of the related models for the relationship.
- *
- * @return void
- */
- public function touch()
- {
- $model = $this->getRelated();
-
- if (! $model::isIgnoringTouch()) {
- $this->rawUpdate([
- $model->getUpdatedAtColumn() => $model->freshTimestampString(),
- ]);
- }
- }
-
- /**
- * Run a raw update against the base query.
- *
- * @param array $attributes
- * @return int
- */
- public function rawUpdate(array $attributes = [])
- {
- return $this->query->withoutGlobalScopes()->update($attributes);
- }
-
- /**
- * Add the constraints for a relationship count query.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @param \Illuminate\Database\Eloquent\Builder $parentQuery
- * @return \Illuminate\Database\Eloquent\Builder
- */
- public function getRelationExistenceCountQuery(Builder $query, Builder $parentQuery)
- {
- return $this->getRelationExistenceQuery(
- $query, $parentQuery, new Expression('count(*)')
- )->setBindings([], 'select');
- }
-
- /**
- * Add the constraints for an internal relationship existence query.
- *
- * Essentially, these queries compare on column names like whereColumn.
- *
- * @param \Illuminate\Database\Eloquent\Builder $query
- * @param \Illuminate\Database\Eloquent\Builder $parentQuery
- * @param array|mixed $columns
- * @return \Illuminate\Database\Eloquent\Builder
- */
- public function getRelationExistenceQuery(Builder $query, Builder $parentQuery, $columns = ['*'])
- {
- return $query->select($columns)->whereColumn(
- $this->getQualifiedParentKeyName(), '=', $this->getExistenceCompareKey()
- );
- }
-
- /**
- * Get a relationship join table hash.
- *
- * @param bool $incrementJoinCount
- * @return string
- */
- public function getRelationCountHash($incrementJoinCount = true)
- {
- return 'laravel_reserved_'.($incrementJoinCount ? static::$selfJoinCount++ : static::$selfJoinCount);
- }
-
- /**
- * Get all of the primary keys for an array of models.
- *
- * @param array $models
- * @param string|null $key
- * @return array
- */
- protected function getKeys(array $models, $key = null)
- {
- return collect($models)->map(function ($value) use ($key) {
- return $key ? $value->getAttribute($key) : $value->getKey();
- })->values()->unique(null, true)->sort()->all();
- }
-
- /**
- * Get the query builder that will contain the relationship constraints.
- *
- * @return \Illuminate\Database\Eloquent\Builder
- */
- protected function getRelationQuery()
- {
- return $this->query;
- }
-
- /**
- * Get the underlying query for the relation.
- *
- * @return \Illuminate\Database\Eloquent\Builder
- */
- public function getQuery()
- {
- return $this->query;
- }
-
- /**
- * Get the base query builder driving the Eloquent builder.
- *
- * @return \Illuminate\Database\Query\Builder
- */
- public function getBaseQuery()
- {
- return $this->query->getQuery();
- }
-
- /**
- * Get the parent model of the relation.
- *
- * @return \Illuminate\Database\Eloquent\Model
- */
- public function getParent()
- {
- return $this->parent;
- }
-
- /**
- * Get the fully qualified parent key name.
- *
- * @return string
- */
- public function getQualifiedParentKeyName()
- {
- return $this->parent->getQualifiedKeyName();
- }
-
- /**
- * Get the related model of the relation.
- *
- * @return \Illuminate\Database\Eloquent\Model
- */
- public function getRelated()
- {
- return $this->related;
- }
-
- /**
- * Get the name of the "created at" column.
- *
- * @return string
- */
- public function createdAt()
- {
- return $this->parent->getCreatedAtColumn();
- }
-
- /**
- * Get the name of the "updated at" column.
- *
- * @return string
- */
- public function updatedAt()
- {
- return $this->parent->getUpdatedAtColumn();
- }
-
- /**
- * Get the name of the related model's "updated at" column.
- *
- * @return string
- */
- public function relatedUpdatedAt()
- {
- return $this->related->getUpdatedAtColumn();
- }
-
- /**
- * Get the name of the "where in" method for eager loading.
- *
- * @param \Illuminate\Database\Eloquent\Model $model
- * @param string $key
- * @return string
- */
- protected function whereInMethod(Model $model, $key)
- {
- return $model->getKeyName() === last(explode('.', $key))
- && in_array($model->getKeyType(), ['int', 'integer'])
- ? 'whereIntegerInRaw'
- : 'whereIn';
- }
-
- /**
- * Prevent polymorphic relationships from being used without model mappings.
- *
- * @param bool $requireMorphMap
- * @return void
- */
- public static function requireMorphMap($requireMorphMap = true)
- {
- static::$requireMorphMap = $requireMorphMap;
- }
-
- /**
- * Determine if polymorphic relationships require explicit model mapping.
- *
- * @return bool
- */
- public static function requiresMorphMap()
- {
- return static::$requireMorphMap;
- }
-
- /**
- * Define the morph map for polymorphic relations and require all morphed models to be explicitly mapped.
- *
- * @param array $map
- * @param bool $merge
- * @return array
- */
- public static function enforceMorphMap(array $map, $merge = true)
- {
- static::requireMorphMap();
-
- return static::morphMap($map, $merge);
- }
-
- /**
- * Set or get the morph map for polymorphic relations.
- *
- * @param array|null $map
- * @param bool $merge
- * @return array
- */
- public static function morphMap(array $map = null, $merge = true)
- {
- $map = static::buildMorphMapFromModels($map);
-
- if (is_array($map)) {
- static::$morphMap = $merge && static::$morphMap
- ? $map + static::$morphMap : $map;
- }
-
- return static::$morphMap;
- }
-
- /**
- * Builds a table-keyed array from model class names.
- *
- * @param string[]|null $models
- * @return array|null
- */
- protected static function buildMorphMapFromModels(array $models = null)
- {
- if (is_null($models) || Arr::isAssoc($models)) {
- return $models;
- }
-
- return array_combine(array_map(function ($model) {
- return (new $model)->getTable();
- }, $models), $models);
- }
-
- /**
- * Get the model associated with a custom polymorphic type.
- *
- * @param string $alias
- * @return string|null
- */
- public static function getMorphedModel($alias)
- {
- return static::$morphMap[$alias] ?? null;
- }
-
- /**
- * Handle dynamic method calls to the relationship.
- *
- * @param string $method
- * @param array $parameters
- * @return mixed
- */
- public function __call($method, $parameters)
- {
- if (static::hasMacro($method)) {
- return $this->macroCall($method, $parameters);
- }
-
- return $this->forwardDecoratedCallTo($this->query, $method, $parameters);
- }
-
- /**
- * Force a clone of the underlying query builder when cloning.
- *
- * @return void
- */
- public function __clone()
- {
- $this->query = clone $this->query;
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/Scope.php b/vendor/illuminate/database/Eloquent/Scope.php
deleted file mode 100644
index 63cba6a5..00000000
--- a/vendor/illuminate/database/Eloquent/Scope.php
+++ /dev/null
@@ -1,15 +0,0 @@
-casts[$this->getDeletedAtColumn()])) {
- $this->casts[$this->getDeletedAtColumn()] = 'datetime';
- }
- }
-
- /**
- * Force a hard delete on a soft deleted model.
- *
- * @return bool|null
- */
- public function forceDelete()
- {
- $this->forceDeleting = true;
-
- return tap($this->delete(), function ($deleted) {
- $this->forceDeleting = false;
-
- if ($deleted) {
- $this->fireModelEvent('forceDeleted', false);
- }
- });
- }
-
- /**
- * Perform the actual delete query on this model instance.
- *
- * @return mixed
- */
- protected function performDeleteOnModel()
- {
- if ($this->forceDeleting) {
- $this->exists = false;
-
- return $this->setKeysForSaveQuery($this->newModelQuery())->forceDelete();
- }
-
- return $this->runSoftDelete();
- }
-
- /**
- * Perform the actual delete query on this model instance.
- *
- * @return void
- */
- protected function runSoftDelete()
- {
- $query = $this->setKeysForSaveQuery($this->newModelQuery());
-
- $time = $this->freshTimestamp();
-
- $columns = [$this->getDeletedAtColumn() => $this->fromDateTime($time)];
-
- $this->{$this->getDeletedAtColumn()} = $time;
-
- if ($this->timestamps && ! is_null($this->getUpdatedAtColumn())) {
- $this->{$this->getUpdatedAtColumn()} = $time;
-
- $columns[$this->getUpdatedAtColumn()] = $this->fromDateTime($time);
- }
-
- $query->update($columns);
-
- $this->syncOriginalAttributes(array_keys($columns));
-
- $this->fireModelEvent('trashed', false);
- }
-
- /**
- * Restore a soft-deleted model instance.
- *
- * @return bool|null
- */
- public function restore()
- {
- // If the restoring event does not return false, we will proceed with this
- // restore operation. Otherwise, we bail out so the developer will stop
- // the restore totally. We will clear the deleted timestamp and save.
- if ($this->fireModelEvent('restoring') === false) {
- return false;
- }
-
- $this->{$this->getDeletedAtColumn()} = null;
-
- // Once we have saved the model, we will fire the "restored" event so this
- // developer will do anything they need to after a restore operation is
- // totally finished. Then we will return the result of the save call.
- $this->exists = true;
-
- $result = $this->save();
-
- $this->fireModelEvent('restored', false);
-
- return $result;
- }
-
- /**
- * Determine if the model instance has been soft-deleted.
- *
- * @return bool
- */
- public function trashed()
- {
- return ! is_null($this->{$this->getDeletedAtColumn()});
- }
-
- /**
- * Register a "softDeleted" model event callback with the dispatcher.
- *
- * @param \Closure|string $callback
- * @return void
- */
- public static function softDeleted($callback)
- {
- static::registerModelEvent('trashed', $callback);
- }
-
- /**
- * Register a "restoring" model event callback with the dispatcher.
- *
- * @param \Closure|string $callback
- * @return void
- */
- public static function restoring($callback)
- {
- static::registerModelEvent('restoring', $callback);
- }
-
- /**
- * Register a "restored" model event callback with the dispatcher.
- *
- * @param \Closure|string $callback
- * @return void
- */
- public static function restored($callback)
- {
- static::registerModelEvent('restored', $callback);
- }
-
- /**
- * Register a "forceDeleted" model event callback with the dispatcher.
- *
- * @param \Closure|string $callback
- * @return void
- */
- public static function forceDeleted($callback)
- {
- static::registerModelEvent('forceDeleted', $callback);
- }
-
- /**
- * Determine if the model is currently force deleting.
- *
- * @return bool
- */
- public function isForceDeleting()
- {
- return $this->forceDeleting;
- }
-
- /**
- * Get the name of the "deleted at" column.
- *
- * @return string
- */
- public function getDeletedAtColumn()
- {
- return defined('static::DELETED_AT') ? static::DELETED_AT : 'deleted_at';
- }
-
- /**
- * Get the fully qualified "deleted at" column.
- *
- * @return string
- */
- public function getQualifiedDeletedAtColumn()
- {
- return $this->qualifyColumn($this->getDeletedAtColumn());
- }
-}
diff --git a/vendor/illuminate/database/Eloquent/SoftDeletingScope.php b/vendor/illuminate/database/Eloquent/SoftDeletingScope.php
deleted file mode 100644
index 7528964c..00000000
--- a/vendor/illuminate/database/Eloquent/SoftDeletingScope.php
+++ /dev/null
@@ -1,131 +0,0 @@
-whereNull($model->getQualifiedDeletedAtColumn());
- }
-
- /**
- * Extend the query builder with the needed functions.
- *
- * @param \Illuminate\Database\Eloquent\Builder $builder
- * @return void
- */
- public function extend(Builder $builder)
- {
- foreach ($this->extensions as $extension) {
- $this->{"add{$extension}"}($builder);
- }
-
- $builder->onDelete(function (Builder $builder) {
- $column = $this->getDeletedAtColumn($builder);
-
- return $builder->update([
- $column => $builder->getModel()->freshTimestampString(),
- ]);
- });
- }
-
- /**
- * Get the "deleted at" column for the builder.
- *
- * @param \Illuminate\Database\Eloquent\Builder $builder
- * @return string
- */
- protected function getDeletedAtColumn(Builder $builder)
- {
- if (count((array) $builder->getQuery()->joins) > 0) {
- return $builder->getModel()->getQualifiedDeletedAtColumn();
- }
-
- return $builder->getModel()->getDeletedAtColumn();
- }
-
- /**
- * Add the restore extension to the builder.
- *
- * @param \Illuminate\Database\Eloquent\Builder $builder
- * @return void
- */
- protected function addRestore(Builder $builder)
- {
- $builder->macro('restore', function (Builder $builder) {
- $builder->withTrashed();
-
- return $builder->update([$builder->getModel()->getDeletedAtColumn() => null]);
- });
- }
-
- /**
- * Add the with-trashed extension to the builder.
- *
- * @param \Illuminate\Database\Eloquent\Builder $builder
- * @return void
- */
- protected function addWithTrashed(Builder $builder)
- {
- $builder->macro('withTrashed', function (Builder $builder, $withTrashed = true) {
- if (! $withTrashed) {
- return $builder->withoutTrashed();
- }
-
- return $builder->withoutGlobalScope($this);
- });
- }
-
- /**
- * Add the without-trashed extension to the builder.
- *
- * @param \Illuminate\Database\Eloquent\Builder $builder
- * @return void
- */
- protected function addWithoutTrashed(Builder $builder)
- {
- $builder->macro('withoutTrashed', function (Builder $builder) {
- $model = $builder->getModel();
-
- $builder->withoutGlobalScope($this)->whereNull(
- $model->getQualifiedDeletedAtColumn()
- );
-
- return $builder;
- });
- }
-
- /**
- * Add the only-trashed extension to the builder.
- *
- * @param \Illuminate\Database\Eloquent\Builder $builder
- * @return void
- */
- protected function addOnlyTrashed(Builder $builder)
- {
- $builder->macro('onlyTrashed', function (Builder $builder) {
- $model = $builder->getModel();
-
- $builder->withoutGlobalScope($this)->whereNotNull(
- $model->getQualifiedDeletedAtColumn()
- );
-
- return $builder;
- });
- }
-}
diff --git a/vendor/illuminate/database/Events/ConnectionEvent.php b/vendor/illuminate/database/Events/ConnectionEvent.php
deleted file mode 100644
index 818c7850..00000000
--- a/vendor/illuminate/database/Events/ConnectionEvent.php
+++ /dev/null
@@ -1,32 +0,0 @@
-connection = $connection;
- $this->connectionName = $connection->getName();
- }
-}
diff --git a/vendor/illuminate/database/Events/DatabaseRefreshed.php b/vendor/illuminate/database/Events/DatabaseRefreshed.php
deleted file mode 100644
index 5b1fb458..00000000
--- a/vendor/illuminate/database/Events/DatabaseRefreshed.php
+++ /dev/null
@@ -1,10 +0,0 @@
-method = $method;
- $this->migration = $migration;
- }
-}
diff --git a/vendor/illuminate/database/Events/MigrationStarted.php b/vendor/illuminate/database/Events/MigrationStarted.php
deleted file mode 100644
index 3f206b4c..00000000
--- a/vendor/illuminate/database/Events/MigrationStarted.php
+++ /dev/null
@@ -1,8 +0,0 @@
-model = $model;
- $this->count = $count;
- }
-}
diff --git a/vendor/illuminate/database/Events/NoPendingMigrations.php b/vendor/illuminate/database/Events/NoPendingMigrations.php
deleted file mode 100644
index 100f7866..00000000
--- a/vendor/illuminate/database/Events/NoPendingMigrations.php
+++ /dev/null
@@ -1,24 +0,0 @@
-method = $method;
- }
-}
diff --git a/vendor/illuminate/database/Events/QueryExecuted.php b/vendor/illuminate/database/Events/QueryExecuted.php
deleted file mode 100644
index 833a21e6..00000000
--- a/vendor/illuminate/database/Events/QueryExecuted.php
+++ /dev/null
@@ -1,59 +0,0 @@
-sql = $sql;
- $this->time = $time;
- $this->bindings = $bindings;
- $this->connection = $connection;
- $this->connectionName = $connection->getName();
- }
-}
diff --git a/vendor/illuminate/database/Events/SchemaDumped.php b/vendor/illuminate/database/Events/SchemaDumped.php
deleted file mode 100644
index 1cbbfff9..00000000
--- a/vendor/illuminate/database/Events/SchemaDumped.php
+++ /dev/null
@@ -1,41 +0,0 @@
-connection = $connection;
- $this->connectionName = $connection->getName();
- $this->path = $path;
- }
-}
diff --git a/vendor/illuminate/database/Events/SchemaLoaded.php b/vendor/illuminate/database/Events/SchemaLoaded.php
deleted file mode 100644
index 061a079a..00000000
--- a/vendor/illuminate/database/Events/SchemaLoaded.php
+++ /dev/null
@@ -1,41 +0,0 @@
-connection = $connection;
- $this->connectionName = $connection->getName();
- $this->path = $path;
- }
-}
diff --git a/vendor/illuminate/database/Events/StatementPrepared.php b/vendor/illuminate/database/Events/StatementPrepared.php
deleted file mode 100644
index 2f603235..00000000
--- a/vendor/illuminate/database/Events/StatementPrepared.php
+++ /dev/null
@@ -1,33 +0,0 @@
-statement = $statement;
- $this->connection = $connection;
- }
-}
diff --git a/vendor/illuminate/database/Events/TransactionBeginning.php b/vendor/illuminate/database/Events/TransactionBeginning.php
deleted file mode 100644
index 3287b5c8..00000000
--- a/vendor/illuminate/database/Events/TransactionBeginning.php
+++ /dev/null
@@ -1,8 +0,0 @@
-isExpression($table)) {
- return $this->wrap($this->tablePrefix.$table, true);
- }
-
- return $this->getValue($table);
- }
-
- /**
- * Wrap a value in keyword identifiers.
- *
- * @param \Illuminate\Database\Query\Expression|string $value
- * @param bool $prefixAlias
- * @return string
- */
- public function wrap($value, $prefixAlias = false)
- {
- if ($this->isExpression($value)) {
- return $this->getValue($value);
- }
-
- // If the value being wrapped has a column alias we will need to separate out
- // the pieces so we can wrap each of the segments of the expression on its
- // own, and then join these both back together using the "as" connector.
- if (stripos($value, ' as ') !== false) {
- return $this->wrapAliasedValue($value, $prefixAlias);
- }
-
- return $this->wrapSegments(explode('.', $value));
- }
-
- /**
- * Wrap a value that has an alias.
- *
- * @param string $value
- * @param bool $prefixAlias
- * @return string
- */
- protected function wrapAliasedValue($value, $prefixAlias = false)
- {
- $segments = preg_split('/\s+as\s+/i', $value);
-
- // If we are wrapping a table we need to prefix the alias with the table prefix
- // as well in order to generate proper syntax. If this is a column of course
- // no prefix is necessary. The condition will be true when from wrapTable.
- if ($prefixAlias) {
- $segments[1] = $this->tablePrefix.$segments[1];
- }
-
- return $this->wrap($segments[0]).' as '.$this->wrapValue($segments[1]);
- }
-
- /**
- * Wrap the given value segments.
- *
- * @param array $segments
- * @return string
- */
- protected function wrapSegments($segments)
- {
- return collect($segments)->map(function ($segment, $key) use ($segments) {
- return $key == 0 && count($segments) > 1
- ? $this->wrapTable($segment)
- : $this->wrapValue($segment);
- })->implode('.');
- }
-
- /**
- * Wrap a single string in keyword identifiers.
- *
- * @param string $value
- * @return string
- */
- protected function wrapValue($value)
- {
- if ($value !== '*') {
- return '"'.str_replace('"', '""', $value).'"';
- }
-
- return $value;
- }
-
- /**
- * Convert an array of column names into a delimited string.
- *
- * @param array $columns
- * @return string
- */
- public function columnize(array $columns)
- {
- return implode(', ', array_map([$this, 'wrap'], $columns));
- }
-
- /**
- * Create query parameter place-holders for an array.
- *
- * @param array $values
- * @return string
- */
- public function parameterize(array $values)
- {
- return implode(', ', array_map([$this, 'parameter'], $values));
- }
-
- /**
- * Get the appropriate query parameter place-holder for a value.
- *
- * @param mixed $value
- * @return string
- */
- public function parameter($value)
- {
- return $this->isExpression($value) ? $this->getValue($value) : '?';
- }
-
- /**
- * Quote the given string literal.
- *
- * @param string|array $value
- * @return string
- */
- public function quoteString($value)
- {
- if (is_array($value)) {
- return implode(', ', array_map([$this, __FUNCTION__], $value));
- }
-
- return "'$value'";
- }
-
- /**
- * Determine if the given value is a raw expression.
- *
- * @param mixed $value
- * @return bool
- */
- public function isExpression($value)
- {
- return $value instanceof Expression;
- }
-
- /**
- * Get the value of a raw expression.
- *
- * @param \Illuminate\Database\Query\Expression $expression
- * @return string
- */
- public function getValue($expression)
- {
- return $expression->getValue();
- }
-
- /**
- * Get the format for database stored dates.
- *
- * @return string
- */
- public function getDateFormat()
- {
- return 'Y-m-d H:i:s';
- }
-
- /**
- * Get the grammar's table prefix.
- *
- * @return string
- */
- public function getTablePrefix()
- {
- return $this->tablePrefix;
- }
-
- /**
- * Set the grammar's table prefix.
- *
- * @param string $prefix
- * @return $this
- */
- public function setTablePrefix($prefix)
- {
- $this->tablePrefix = $prefix;
-
- return $this;
- }
-}
diff --git a/vendor/illuminate/database/LICENSE.md b/vendor/illuminate/database/LICENSE.md
deleted file mode 100644
index 79810c84..00000000
--- a/vendor/illuminate/database/LICENSE.md
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Taylor Otwell
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/illuminate/database/LazyLoadingViolationException.php b/vendor/illuminate/database/LazyLoadingViolationException.php
deleted file mode 100644
index 1bcd40c9..00000000
--- a/vendor/illuminate/database/LazyLoadingViolationException.php
+++ /dev/null
@@ -1,39 +0,0 @@
-model = $class;
- $this->relation = $relation;
- }
-}
diff --git a/vendor/illuminate/database/MigrationServiceProvider.php b/vendor/illuminate/database/MigrationServiceProvider.php
deleted file mode 100755
index 9ae76857..00000000
--- a/vendor/illuminate/database/MigrationServiceProvider.php
+++ /dev/null
@@ -1,226 +0,0 @@
- 'command.migrate',
- 'MigrateFresh' => 'command.migrate.fresh',
- 'MigrateInstall' => 'command.migrate.install',
- 'MigrateRefresh' => 'command.migrate.refresh',
- 'MigrateReset' => 'command.migrate.reset',
- 'MigrateRollback' => 'command.migrate.rollback',
- 'MigrateStatus' => 'command.migrate.status',
- 'MigrateMake' => 'command.migrate.make',
- ];
-
- /**
- * Register the service provider.
- *
- * @return void
- */
- public function register()
- {
- $this->registerRepository();
-
- $this->registerMigrator();
-
- $this->registerCreator();
-
- $this->registerCommands($this->commands);
- }
-
- /**
- * Register the migration repository service.
- *
- * @return void
- */
- protected function registerRepository()
- {
- $this->app->singleton('migration.repository', function ($app) {
- $table = $app['config']['database.migrations'];
-
- return new DatabaseMigrationRepository($app['db'], $table);
- });
- }
-
- /**
- * Register the migrator service.
- *
- * @return void
- */
- protected function registerMigrator()
- {
- // The migrator is responsible for actually running and rollback the migration
- // files in the application. We'll pass in our database connection resolver
- // so the migrator can resolve any of these connections when it needs to.
- $this->app->singleton('migrator', function ($app) {
- $repository = $app['migration.repository'];
-
- return new Migrator($repository, $app['db'], $app['files'], $app['events']);
- });
- }
-
- /**
- * Register the migration creator.
- *
- * @return void
- */
- protected function registerCreator()
- {
- $this->app->singleton('migration.creator', function ($app) {
- return new MigrationCreator($app['files'], $app->basePath('stubs'));
- });
- }
-
- /**
- * Register the given commands.
- *
- * @param array $commands
- * @return void
- */
- protected function registerCommands(array $commands)
- {
- foreach (array_keys($commands) as $command) {
- $this->{"register{$command}Command"}();
- }
-
- $this->commands(array_values($commands));
- }
-
- /**
- * Register the command.
- *
- * @return void
- */
- protected function registerMigrateCommand()
- {
- $this->app->singleton('command.migrate', function ($app) {
- return new MigrateCommand($app['migrator'], $app[Dispatcher::class]);
- });
- }
-
- /**
- * Register the command.
- *
- * @return void
- */
- protected function registerMigrateFreshCommand()
- {
- $this->app->singleton('command.migrate.fresh', function () {
- return new FreshCommand;
- });
- }
-
- /**
- * Register the command.
- *
- * @return void
- */
- protected function registerMigrateInstallCommand()
- {
- $this->app->singleton('command.migrate.install', function ($app) {
- return new InstallCommand($app['migration.repository']);
- });
- }
-
- /**
- * Register the command.
- *
- * @return void
- */
- protected function registerMigrateMakeCommand()
- {
- $this->app->singleton('command.migrate.make', function ($app) {
- // Once we have the migration creator registered, we will create the command
- // and inject the creator. The creator is responsible for the actual file
- // creation of the migrations, and may be extended by these developers.
- $creator = $app['migration.creator'];
-
- $composer = $app['composer'];
-
- return new MigrateMakeCommand($creator, $composer);
- });
- }
-
- /**
- * Register the command.
- *
- * @return void
- */
- protected function registerMigrateRefreshCommand()
- {
- $this->app->singleton('command.migrate.refresh', function () {
- return new RefreshCommand;
- });
- }
-
- /**
- * Register the command.
- *
- * @return void
- */
- protected function registerMigrateResetCommand()
- {
- $this->app->singleton('command.migrate.reset', function ($app) {
- return new ResetCommand($app['migrator']);
- });
- }
-
- /**
- * Register the command.
- *
- * @return void
- */
- protected function registerMigrateRollbackCommand()
- {
- $this->app->singleton('command.migrate.rollback', function ($app) {
- return new RollbackCommand($app['migrator']);
- });
- }
-
- /**
- * Register the command.
- *
- * @return void
- */
- protected function registerMigrateStatusCommand()
- {
- $this->app->singleton('command.migrate.status', function ($app) {
- return new StatusCommand($app['migrator']);
- });
- }
-
- /**
- * Get the services provided by the provider.
- *
- * @return array
- */
- public function provides()
- {
- return array_merge([
- 'migrator', 'migration.repository', 'migration.creator',
- ], array_values($this->commands));
- }
-}
diff --git a/vendor/illuminate/database/Migrations/DatabaseMigrationRepository.php b/vendor/illuminate/database/Migrations/DatabaseMigrationRepository.php
deleted file mode 100755
index ed42756b..00000000
--- a/vendor/illuminate/database/Migrations/DatabaseMigrationRepository.php
+++ /dev/null
@@ -1,224 +0,0 @@
-table = $table;
- $this->resolver = $resolver;
- }
-
- /**
- * Get the completed migrations.
- *
- * @return array
- */
- public function getRan()
- {
- return $this->table()
- ->orderBy('batch', 'asc')
- ->orderBy('migration', 'asc')
- ->pluck('migration')->all();
- }
-
- /**
- * Get list of migrations.
- *
- * @param int $steps
- * @return array
- */
- public function getMigrations($steps)
- {
- $query = $this->table()->where('batch', '>=', '1');
-
- return $query->orderBy('batch', 'desc')
- ->orderBy('migration', 'desc')
- ->take($steps)->get()->all();
- }
-
- /**
- * Get the last migration batch.
- *
- * @return array
- */
- public function getLast()
- {
- $query = $this->table()->where('batch', $this->getLastBatchNumber());
-
- return $query->orderBy('migration', 'desc')->get()->all();
- }
-
- /**
- * Get the completed migrations with their batch numbers.
- *
- * @return array
- */
- public function getMigrationBatches()
- {
- return $this->table()
- ->orderBy('batch', 'asc')
- ->orderBy('migration', 'asc')
- ->pluck('batch', 'migration')->all();
- }
-
- /**
- * Log that a migration was run.
- *
- * @param string $file
- * @param int $batch
- * @return void
- */
- public function log($file, $batch)
- {
- $record = ['migration' => $file, 'batch' => $batch];
-
- $this->table()->insert($record);
- }
-
- /**
- * Remove a migration from the log.
- *
- * @param object $migration
- * @return void
- */
- public function delete($migration)
- {
- $this->table()->where('migration', $migration->migration)->delete();
- }
-
- /**
- * Get the next migration batch number.
- *
- * @return int
- */
- public function getNextBatchNumber()
- {
- return $this->getLastBatchNumber() + 1;
- }
-
- /**
- * Get the last migration batch number.
- *
- * @return int
- */
- public function getLastBatchNumber()
- {
- return $this->table()->max('batch');
- }
-
- /**
- * Create the migration repository data store.
- *
- * @return void
- */
- public function createRepository()
- {
- $schema = $this->getConnection()->getSchemaBuilder();
-
- $schema->create($this->table, function ($table) {
- // The migrations table is responsible for keeping track of which of the
- // migrations have actually run for the application. We'll create the
- // table to hold the migration file's path as well as the batch ID.
- $table->increments('id');
- $table->string('migration');
- $table->integer('batch');
- });
- }
-
- /**
- * Determine if the migration repository exists.
- *
- * @return bool
- */
- public function repositoryExists()
- {
- $schema = $this->getConnection()->getSchemaBuilder();
-
- return $schema->hasTable($this->table);
- }
-
- /**
- * Delete the migration repository data store.
- *
- * @return void
- */
- public function deleteRepository()
- {
- $schema = $this->getConnection()->getSchemaBuilder();
-
- $schema->drop($this->table);
- }
-
- /**
- * Get a query builder for the migration table.
- *
- * @return \Illuminate\Database\Query\Builder
- */
- protected function table()
- {
- return $this->getConnection()->table($this->table)->useWritePdo();
- }
-
- /**
- * Get the connection resolver instance.
- *
- * @return \Illuminate\Database\ConnectionResolverInterface
- */
- public function getConnectionResolver()
- {
- return $this->resolver;
- }
-
- /**
- * Resolve the database connection instance.
- *
- * @return \Illuminate\Database\Connection
- */
- public function getConnection()
- {
- return $this->resolver->connection($this->connection);
- }
-
- /**
- * Set the information source to gather data.
- *
- * @param string $name
- * @return void
- */
- public function setSource($name)
- {
- $this->connection = $name;
- }
-}
diff --git a/vendor/illuminate/database/Migrations/Migration.php b/vendor/illuminate/database/Migrations/Migration.php
deleted file mode 100755
index a58f7848..00000000
--- a/vendor/illuminate/database/Migrations/Migration.php
+++ /dev/null
@@ -1,30 +0,0 @@
-connection;
- }
-}
diff --git a/vendor/illuminate/database/Migrations/MigrationCreator.php b/vendor/illuminate/database/Migrations/MigrationCreator.php
deleted file mode 100755
index a79039a7..00000000
--- a/vendor/illuminate/database/Migrations/MigrationCreator.php
+++ /dev/null
@@ -1,236 +0,0 @@
-files = $files;
- $this->customStubPath = $customStubPath;
- }
-
- /**
- * Create a new migration at the given path.
- *
- * @param string $name
- * @param string $path
- * @param string|null $table
- * @param bool $create
- * @return string
- *
- * @throws \Exception
- */
- public function create($name, $path, $table = null, $create = false)
- {
- $this->ensureMigrationDoesntAlreadyExist($name, $path);
-
- // First we will get the stub file for the migration, which serves as a type
- // of template for the migration. Once we have those we will populate the
- // various place-holders, save the file, and run the post create event.
- $stub = $this->getStub($table, $create);
-
- $path = $this->getPath($name, $path);
-
- $this->files->ensureDirectoryExists(dirname($path));
-
- $this->files->put(
- $path, $this->populateStub($name, $stub, $table)
- );
-
- // Next, we will fire any hooks that are supposed to fire after a migration is
- // created. Once that is done we'll be ready to return the full path to the
- // migration file so it can be used however it's needed by the developer.
- $this->firePostCreateHooks($table);
-
- return $path;
- }
-
- /**
- * Ensure that a migration with the given name doesn't already exist.
- *
- * @param string $name
- * @param string $migrationPath
- * @return void
- *
- * @throws \InvalidArgumentException
- */
- protected function ensureMigrationDoesntAlreadyExist($name, $migrationPath = null)
- {
- if (! empty($migrationPath)) {
- $migrationFiles = $this->files->glob($migrationPath.'/*.php');
-
- foreach ($migrationFiles as $migrationFile) {
- $this->files->requireOnce($migrationFile);
- }
- }
-
- if (class_exists($className = $this->getClassName($name))) {
- throw new InvalidArgumentException("A {$className} class already exists.");
- }
- }
-
- /**
- * Get the migration stub file.
- *
- * @param string|null $table
- * @param bool $create
- * @return string
- */
- protected function getStub($table, $create)
- {
- if (is_null($table)) {
- $stub = $this->files->exists($customPath = $this->customStubPath.'/migration.stub')
- ? $customPath
- : $this->stubPath().'/migration.stub';
- } elseif ($create) {
- $stub = $this->files->exists($customPath = $this->customStubPath.'/migration.create.stub')
- ? $customPath
- : $this->stubPath().'/migration.create.stub';
- } else {
- $stub = $this->files->exists($customPath = $this->customStubPath.'/migration.update.stub')
- ? $customPath
- : $this->stubPath().'/migration.update.stub';
- }
-
- return $this->files->get($stub);
- }
-
- /**
- * Populate the place-holders in the migration stub.
- *
- * @param string $name
- * @param string $stub
- * @param string|null $table
- * @return string
- */
- protected function populateStub($name, $stub, $table)
- {
- $stub = str_replace(
- ['DummyClass', '{{ class }}', '{{class}}'],
- $this->getClassName($name), $stub
- );
-
- // Here we will replace the table place-holders with the table specified by
- // the developer, which is useful for quickly creating a tables creation
- // or update migration from the console instead of typing it manually.
- if (! is_null($table)) {
- $stub = str_replace(
- ['DummyTable', '{{ table }}', '{{table}}'],
- $table, $stub
- );
- }
-
- return $stub;
- }
-
- /**
- * Get the class name of a migration name.
- *
- * @param string $name
- * @return string
- */
- protected function getClassName($name)
- {
- return Str::studly($name);
- }
-
- /**
- * Get the full path to the migration.
- *
- * @param string $name
- * @param string $path
- * @return string
- */
- protected function getPath($name, $path)
- {
- return $path.'/'.$this->getDatePrefix().'_'.$name.'.php';
- }
-
- /**
- * Fire the registered post create hooks.
- *
- * @param string|null $table
- * @return void
- */
- protected function firePostCreateHooks($table)
- {
- foreach ($this->postCreate as $callback) {
- $callback($table);
- }
- }
-
- /**
- * Register a post migration create hook.
- *
- * @param \Closure $callback
- * @return void
- */
- public function afterCreate(Closure $callback)
- {
- $this->postCreate[] = $callback;
- }
-
- /**
- * Get the date prefix for the migration.
- *
- * @return string
- */
- protected function getDatePrefix()
- {
- return date('Y_m_d_His');
- }
-
- /**
- * Get the path to the stubs.
- *
- * @return string
- */
- public function stubPath()
- {
- return __DIR__.'/stubs';
- }
-
- /**
- * Get the filesystem instance.
- *
- * @return \Illuminate\Filesystem\Filesystem
- */
- public function getFilesystem()
- {
- return $this->files;
- }
-}
diff --git a/vendor/illuminate/database/Migrations/MigrationRepositoryInterface.php b/vendor/illuminate/database/Migrations/MigrationRepositoryInterface.php
deleted file mode 100755
index 840a5e1d..00000000
--- a/vendor/illuminate/database/Migrations/MigrationRepositoryInterface.php
+++ /dev/null
@@ -1,88 +0,0 @@
-files = $files;
- $this->events = $dispatcher;
- $this->resolver = $resolver;
- $this->repository = $repository;
- }
-
- /**
- * Run the pending migrations at a given path.
- *
- * @param array|string $paths
- * @param array $options
- * @return array
- */
- public function run($paths = [], array $options = [])
- {
- // Once we grab all of the migration files for the path, we will compare them
- // against the migrations that have already been run for this package then
- // run each of the outstanding migrations against a database connection.
- $files = $this->getMigrationFiles($paths);
-
- $this->requireFiles($migrations = $this->pendingMigrations(
- $files, $this->repository->getRan()
- ));
-
- // Once we have all these migrations that are outstanding we are ready to run
- // we will go ahead and run them "up". This will execute each migration as
- // an operation against a database. Then we'll return this list of them.
- $this->runPending($migrations, $options);
-
- return $migrations;
- }
-
- /**
- * Get the migration files that have not yet run.
- *
- * @param array $files
- * @param array $ran
- * @return array
- */
- protected function pendingMigrations($files, $ran)
- {
- return Collection::make($files)
- ->reject(function ($file) use ($ran) {
- return in_array($this->getMigrationName($file), $ran);
- })->values()->all();
- }
-
- /**
- * Run an array of migrations.
- *
- * @param array $migrations
- * @param array $options
- * @return void
- */
- public function runPending(array $migrations, array $options = [])
- {
- // First we will just make sure that there are any migrations to run. If there
- // aren't, we will just make a note of it to the developer so they're aware
- // that all of the migrations have been run against this database system.
- if (count($migrations) === 0) {
- $this->fireMigrationEvent(new NoPendingMigrations('up'));
-
- $this->note('Nothing to migrate. ');
-
- return;
- }
-
- // Next, we will get the next batch number for the migrations so we can insert
- // correct batch number in the database migrations repository when we store
- // each migration's execution. We will also extract a few of the options.
- $batch = $this->repository->getNextBatchNumber();
-
- $pretend = $options['pretend'] ?? false;
-
- $step = $options['step'] ?? false;
-
- $this->fireMigrationEvent(new MigrationsStarted);
-
- // Once we have the array of migrations, we will spin through them and run the
- // migrations "up" so the changes are made to the databases. We'll then log
- // that the migration was run so we don't repeat it next time we execute.
- foreach ($migrations as $file) {
- $this->runUp($file, $batch, $pretend);
-
- if ($step) {
- $batch++;
- }
- }
-
- $this->fireMigrationEvent(new MigrationsEnded);
- }
-
- /**
- * Run "up" a migration instance.
- *
- * @param string $file
- * @param int $batch
- * @param bool $pretend
- * @return void
- */
- protected function runUp($file, $batch, $pretend)
- {
- // First we will resolve a "real" instance of the migration class from this
- // migration file name. Once we have the instances we can run the actual
- // command such as "up" or "down", or we can just simulate the action.
- $migration = $this->resolvePath($file);
-
- $name = $this->getMigrationName($file);
-
- if ($pretend) {
- return $this->pretendToRun($migration, 'up');
- }
-
- $this->note("Migrating: {$name}");
-
- $startTime = microtime(true);
-
- $this->runMigration($migration, 'up');
-
- $runTime = number_format((microtime(true) - $startTime) * 1000, 2);
-
- // Once we have run a migrations class, we will log that it was run in this
- // repository so that we don't try to run it next time we do a migration
- // in the application. A migration repository keeps the migrate order.
- $this->repository->log($name, $batch);
-
- $this->note("Migrated: {$name} ({$runTime}ms)");
- }
-
- /**
- * Rollback the last migration operation.
- *
- * @param array|string $paths
- * @param array $options
- * @return array
- */
- public function rollback($paths = [], array $options = [])
- {
- // We want to pull in the last batch of migrations that ran on the previous
- // migration operation. We'll then reverse those migrations and run each
- // of them "down" to reverse the last migration "operation" which ran.
- $migrations = $this->getMigrationsForRollback($options);
-
- if (count($migrations) === 0) {
- $this->fireMigrationEvent(new NoPendingMigrations('down'));
-
- $this->note('Nothing to rollback. ');
-
- return [];
- }
-
- return $this->rollbackMigrations($migrations, $paths, $options);
- }
-
- /**
- * Get the migrations for a rollback operation.
- *
- * @param array $options
- * @return array
- */
- protected function getMigrationsForRollback(array $options)
- {
- if (($steps = $options['step'] ?? 0) > 0) {
- return $this->repository->getMigrations($steps);
- }
-
- return $this->repository->getLast();
- }
-
- /**
- * Rollback the given migrations.
- *
- * @param array $migrations
- * @param array|string $paths
- * @param array $options
- * @return array
- */
- protected function rollbackMigrations(array $migrations, $paths, array $options)
- {
- $rolledBack = [];
-
- $this->requireFiles($files = $this->getMigrationFiles($paths));
-
- $this->fireMigrationEvent(new MigrationsStarted);
-
- // Next we will run through all of the migrations and call the "down" method
- // which will reverse each migration in order. This getLast method on the
- // repository already returns these migration's names in reverse order.
- foreach ($migrations as $migration) {
- $migration = (object) $migration;
-
- if (! $file = Arr::get($files, $migration->migration)) {
- $this->note("Migration not found:> {$migration->migration}");
-
- continue;
- }
-
- $rolledBack[] = $file;
-
- $this->runDown(
- $file, $migration,
- $options['pretend'] ?? false
- );
- }
-
- $this->fireMigrationEvent(new MigrationsEnded);
-
- return $rolledBack;
- }
-
- /**
- * Rolls all of the currently applied migrations back.
- *
- * @param array|string $paths
- * @param bool $pretend
- * @return array
- */
- public function reset($paths = [], $pretend = false)
- {
- // Next, we will reverse the migration list so we can run them back in the
- // correct order for resetting this database. This will allow us to get
- // the database back into its "empty" state ready for the migrations.
- $migrations = array_reverse($this->repository->getRan());
-
- if (count($migrations) === 0) {
- $this->note('Nothing to rollback. ');
-
- return [];
- }
-
- return $this->resetMigrations($migrations, $paths, $pretend);
- }
-
- /**
- * Reset the given migrations.
- *
- * @param array $migrations
- * @param array $paths
- * @param bool $pretend
- * @return array
- */
- protected function resetMigrations(array $migrations, array $paths, $pretend = false)
- {
- // Since the getRan method that retrieves the migration name just gives us the
- // migration name, we will format the names into objects with the name as a
- // property on the objects so that we can pass it to the rollback method.
- $migrations = collect($migrations)->map(function ($m) {
- return (object) ['migration' => $m];
- })->all();
-
- return $this->rollbackMigrations(
- $migrations, $paths, compact('pretend')
- );
- }
-
- /**
- * Run "down" a migration instance.
- *
- * @param string $file
- * @param object $migration
- * @param bool $pretend
- * @return void
- */
- protected function runDown($file, $migration, $pretend)
- {
- // First we will get the file name of the migration so we can resolve out an
- // instance of the migration. Once we get an instance we can either run a
- // pretend execution of the migration or we can run the real migration.
- $instance = $this->resolvePath($file);
-
- $name = $this->getMigrationName($file);
-
- $this->note("Rolling back: {$name}");
-
- if ($pretend) {
- return $this->pretendToRun($instance, 'down');
- }
-
- $startTime = microtime(true);
-
- $this->runMigration($instance, 'down');
-
- $runTime = number_format((microtime(true) - $startTime) * 1000, 2);
-
- // Once we have successfully run the migration "down" we will remove it from
- // the migration repository so it will be considered to have not been run
- // by the application then will be able to fire by any later operation.
- $this->repository->delete($migration);
-
- $this->note("Rolled back: {$name} ({$runTime}ms)");
- }
-
- /**
- * Run a migration inside a transaction if the database supports it.
- *
- * @param object $migration
- * @param string $method
- * @return void
- */
- protected function runMigration($migration, $method)
- {
- $connection = $this->resolveConnection(
- $migration->getConnection()
- );
-
- $callback = function () use ($migration, $method) {
- if (method_exists($migration, $method)) {
- $this->fireMigrationEvent(new MigrationStarted($migration, $method));
-
- $migration->{$method}();
-
- $this->fireMigrationEvent(new MigrationEnded($migration, $method));
- }
- };
-
- $this->getSchemaGrammar($connection)->supportsSchemaTransactions()
- && $migration->withinTransaction
- ? $connection->transaction($callback)
- : $callback();
- }
-
- /**
- * Pretend to run the migrations.
- *
- * @param object $migration
- * @param string $method
- * @return void
- */
- protected function pretendToRun($migration, $method)
- {
- try {
- foreach ($this->getQueries($migration, $method) as $query) {
- $name = get_class($migration);
-
- $reflectionClass = new ReflectionClass($migration);
-
- if ($reflectionClass->isAnonymous()) {
- $name = $this->getMigrationName($reflectionClass->getFileName());
- }
-
- $this->note("{$name}: {$query['query']}");
- }
- } catch (SchemaException $e) {
- $name = get_class($migration);
-
- $this->note("{$name}: failed to dump queries. This may be due to changing database columns using Doctrine, which is not supported while pretending to run migrations.");
- }
- }
-
- /**
- * Get all of the queries that would be run for a migration.
- *
- * @param object $migration
- * @param string $method
- * @return array
- */
- protected function getQueries($migration, $method)
- {
- // Now that we have the connections we can resolve it and pretend to run the
- // queries against the database returning the array of raw SQL statements
- // that would get fired against the database system for this migration.
- $db = $this->resolveConnection(
- $migration->getConnection()
- );
-
- return $db->pretend(function () use ($migration, $method) {
- if (method_exists($migration, $method)) {
- $migration->{$method}();
- }
- });
- }
-
- /**
- * Resolve a migration instance from a file.
- *
- * @param string $file
- * @return object
- */
- public function resolve($file)
- {
- $class = $this->getMigrationClass($file);
-
- return new $class;
- }
-
- /**
- * Resolve a migration instance from a migration path.
- *
- * @param string $path
- * @return object
- */
- protected function resolvePath(string $path)
- {
- $class = $this->getMigrationClass($this->getMigrationName($path));
-
- if (class_exists($class) && realpath($path) == (new ReflectionClass($class))->getFileName()) {
- return new $class;
- }
-
- $migration = $this->files->getRequire($path);
-
- return is_object($migration) ? $migration : new $class;
- }
-
- /**
- * Generate a migration class name based on the migration file name.
- *
- * @param string $migrationName
- * @return string
- */
- protected function getMigrationClass(string $migrationName): string
- {
- return Str::studly(implode('_', array_slice(explode('_', $migrationName), 4)));
- }
-
- /**
- * Get all of the migration files in a given path.
- *
- * @param string|array $paths
- * @return array
- */
- public function getMigrationFiles($paths)
- {
- return Collection::make($paths)->flatMap(function ($path) {
- return Str::endsWith($path, '.php') ? [$path] : $this->files->glob($path.'/*_*.php');
- })->filter()->values()->keyBy(function ($file) {
- return $this->getMigrationName($file);
- })->sortBy(function ($file, $key) {
- return $key;
- })->all();
- }
-
- /**
- * Require in all the migration files in a given path.
- *
- * @param array $files
- * @return void
- */
- public function requireFiles(array $files)
- {
- foreach ($files as $file) {
- $this->files->requireOnce($file);
- }
- }
-
- /**
- * Get the name of the migration.
- *
- * @param string $path
- * @return string
- */
- public function getMigrationName($path)
- {
- return str_replace('.php', '', basename($path));
- }
-
- /**
- * Register a custom migration path.
- *
- * @param string $path
- * @return void
- */
- public function path($path)
- {
- $this->paths = array_unique(array_merge($this->paths, [$path]));
- }
-
- /**
- * Get all of the custom migration paths.
- *
- * @return array
- */
- public function paths()
- {
- return $this->paths;
- }
-
- /**
- * Get the default connection name.
- *
- * @return string
- */
- public function getConnection()
- {
- return $this->connection;
- }
-
- /**
- * Execute the given callback using the given connection as the default connection.
- *
- * @param string $name
- * @param callable $callback
- * @return mixed
- */
- public function usingConnection($name, callable $callback)
- {
- $previousConnection = $this->resolver->getDefaultConnection();
-
- $this->setConnection($name);
-
- return tap($callback(), function () use ($previousConnection) {
- $this->setConnection($previousConnection);
- });
- }
-
- /**
- * Set the default connection name.
- *
- * @param string $name
- * @return void
- */
- public function setConnection($name)
- {
- if (! is_null($name)) {
- $this->resolver->setDefaultConnection($name);
- }
-
- $this->repository->setSource($name);
-
- $this->connection = $name;
- }
-
- /**
- * Resolve the database connection instance.
- *
- * @param string $connection
- * @return \Illuminate\Database\Connection
- */
- public function resolveConnection($connection)
- {
- return $this->resolver->connection($connection ?: $this->connection);
- }
-
- /**
- * Get the schema grammar out of a migration connection.
- *
- * @param \Illuminate\Database\Connection $connection
- * @return \Illuminate\Database\Schema\Grammars\Grammar
- */
- protected function getSchemaGrammar($connection)
- {
- if (is_null($grammar = $connection->getSchemaGrammar())) {
- $connection->useDefaultSchemaGrammar();
-
- $grammar = $connection->getSchemaGrammar();
- }
-
- return $grammar;
- }
-
- /**
- * Get the migration repository instance.
- *
- * @return \Illuminate\Database\Migrations\MigrationRepositoryInterface
- */
- public function getRepository()
- {
- return $this->repository;
- }
-
- /**
- * Determine if the migration repository exists.
- *
- * @return bool
- */
- public function repositoryExists()
- {
- return $this->repository->repositoryExists();
- }
-
- /**
- * Determine if any migrations have been run.
- *
- * @return bool
- */
- public function hasRunAnyMigrations()
- {
- return $this->repositoryExists() && count($this->repository->getRan()) > 0;
- }
-
- /**
- * Delete the migration repository data store.
- *
- * @return void
- */
- public function deleteRepository()
- {
- return $this->repository->deleteRepository();
- }
-
- /**
- * Get the file system instance.
- *
- * @return \Illuminate\Filesystem\Filesystem
- */
- public function getFilesystem()
- {
- return $this->files;
- }
-
- /**
- * Set the output implementation that should be used by the console.
- *
- * @param \Symfony\Component\Console\Output\OutputInterface $output
- * @return $this
- */
- public function setOutput(OutputInterface $output)
- {
- $this->output = $output;
-
- return $this;
- }
-
- /**
- * Write a note to the console's output.
- *
- * @param string $message
- * @return void
- */
- protected function note($message)
- {
- if ($this->output) {
- $this->output->writeln($message);
- }
- }
-
- /**
- * Fire the given event for the migration.
- *
- * @param \Illuminate\Contracts\Database\Events\MigrationEvent $event
- * @return void
- */
- public function fireMigrationEvent($event)
- {
- if ($this->events) {
- $this->events->dispatch($event);
- }
- }
-}
diff --git a/vendor/illuminate/database/Migrations/stubs/migration.create.stub b/vendor/illuminate/database/Migrations/stubs/migration.create.stub
deleted file mode 100755
index f4a56a07..00000000
--- a/vendor/illuminate/database/Migrations/stubs/migration.create.stub
+++ /dev/null
@@ -1,31 +0,0 @@
-id();
- $table->timestamps();
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- Schema::dropIfExists('{{ table }}');
- }
-}
diff --git a/vendor/illuminate/database/Migrations/stubs/migration.stub b/vendor/illuminate/database/Migrations/stubs/migration.stub
deleted file mode 100755
index fd0e4378..00000000
--- a/vendor/illuminate/database/Migrations/stubs/migration.stub
+++ /dev/null
@@ -1,28 +0,0 @@
-getPdo()->getAttribute(PDO::ATTR_SERVER_VERSION), 'MariaDB') !== false;
- }
-
- /**
- * Get the default query grammar instance.
- *
- * @return \Illuminate\Database\Query\Grammars\MySqlGrammar
- */
- protected function getDefaultQueryGrammar()
- {
- return $this->withTablePrefix(new QueryGrammar);
- }
-
- /**
- * Get a schema builder instance for the connection.
- *
- * @return \Illuminate\Database\Schema\MySqlBuilder
- */
- public function getSchemaBuilder()
- {
- if (is_null($this->schemaGrammar)) {
- $this->useDefaultSchemaGrammar();
- }
-
- return new MySqlBuilder($this);
- }
-
- /**
- * Get the default schema grammar instance.
- *
- * @return \Illuminate\Database\Schema\Grammars\MySqlGrammar
- */
- protected function getDefaultSchemaGrammar()
- {
- return $this->withTablePrefix(new SchemaGrammar);
- }
-
- /**
- * Get the schema state for the connection.
- *
- * @param \Illuminate\Filesystem\Filesystem|null $files
- * @param callable|null $processFactory
- * @return \Illuminate\Database\Schema\MySqlSchemaState
- */
- public function getSchemaState(Filesystem $files = null, callable $processFactory = null)
- {
- return new MySqlSchemaState($this, $files, $processFactory);
- }
-
- /**
- * Get the default post processor instance.
- *
- * @return \Illuminate\Database\Query\Processors\MySqlProcessor
- */
- protected function getDefaultPostProcessor()
- {
- return new MySqlProcessor;
- }
-
- /**
- * Get the Doctrine DBAL driver.
- *
- * @return \Doctrine\DBAL\Driver\PDOMySql\Driver|\Illuminate\Database\PDO\MySqlDriver
- */
- protected function getDoctrineDriver()
- {
- return class_exists(Version::class) ? new DoctrineDriver : new MySqlDriver;
- }
-}
diff --git a/vendor/illuminate/database/PDO/Concerns/ConnectsToDatabase.php b/vendor/illuminate/database/PDO/Concerns/ConnectsToDatabase.php
deleted file mode 100644
index 84c33380..00000000
--- a/vendor/illuminate/database/PDO/Concerns/ConnectsToDatabase.php
+++ /dev/null
@@ -1,27 +0,0 @@
-connection = $connection;
- }
-
- /**
- * Execute an SQL statement.
- *
- * @param string $statement
- * @return int
- */
- public function exec(string $statement): int
- {
- try {
- $result = $this->connection->exec($statement);
-
- \assert($result !== false);
-
- return $result;
- } catch (PDOException $exception) {
- throw Exception::new($exception);
- }
- }
-
- /**
- * Prepare a new SQL statement.
- *
- * @param string $sql
- * @return \Doctrine\DBAL\Driver\Statement
- */
- public function prepare(string $sql): StatementInterface
- {
- try {
- return $this->createStatement(
- $this->connection->prepare($sql)
- );
- } catch (PDOException $exception) {
- throw Exception::new($exception);
- }
- }
-
- /**
- * Execute a new query against the connection.
- *
- * @param string $sql
- * @return \Doctrine\DBAL\Driver\Result
- */
- public function query(string $sql): ResultInterface
- {
- try {
- $stmt = $this->connection->query($sql);
-
- \assert($stmt instanceof PDOStatement);
-
- return new Result($stmt);
- } catch (PDOException $exception) {
- throw Exception::new($exception);
- }
- }
-
- /**
- * Get the last insert ID.
- *
- * @param string|null $name
- * @return mixed
- */
- public function lastInsertId($name = null)
- {
- try {
- if ($name === null) {
- return $this->connection->lastInsertId();
- }
-
- return $this->connection->lastInsertId($name);
- } catch (PDOException $exception) {
- throw Exception::new($exception);
- }
- }
-
- /**
- * Create a new statement instance.
- *
- * @param \PDOStatement $stmt
- * @return \Doctrine\DBAL\Driver\PDO\Statement
- */
- protected function createStatement(PDOStatement $stmt): Statement
- {
- return new Statement($stmt);
- }
-
- /**
- * Begin a new database transaction.
- *
- * @return void
- */
- public function beginTransaction()
- {
- return $this->connection->beginTransaction();
- }
-
- /**
- * Commit a database transaction.
- *
- * @return void
- */
- public function commit()
- {
- return $this->connection->commit();
- }
-
- /**
- * Rollback a database transaction.
- *
- * @return void
- */
- public function rollBack()
- {
- return $this->connection->rollBack();
- }
-
- /**
- * Wrap quotes around the given input.
- *
- * @param string $input
- * @param string $type
- * @return string
- */
- public function quote($input, $type = ParameterType::STRING)
- {
- return $this->connection->quote($input, $type);
- }
-
- /**
- * Get the server version for the connection.
- *
- * @return string
- */
- public function getServerVersion()
- {
- return $this->connection->getAttribute(PDO::ATTR_SERVER_VERSION);
- }
-
- /**
- * Get the wrapped PDO connection.
- *
- * @return \PDO
- */
- public function getWrappedConnection(): PDO
- {
- return $this->connection;
- }
-}
diff --git a/vendor/illuminate/database/PDO/MySqlDriver.php b/vendor/illuminate/database/PDO/MySqlDriver.php
deleted file mode 100644
index 5f68c6fa..00000000
--- a/vendor/illuminate/database/PDO/MySqlDriver.php
+++ /dev/null
@@ -1,11 +0,0 @@
-connection = $connection;
- }
-
- /**
- * Prepare a new SQL statement.
- *
- * @param string $sql
- * @return \Doctrine\DBAL\Driver\Statement
- */
- public function prepare(string $sql): StatementInterface
- {
- return new Statement(
- $this->connection->prepare($sql)
- );
- }
-
- /**
- * Execute a new query against the connection.
- *
- * @param string $sql
- * @return \Doctrine\DBAL\Driver\Result
- */
- public function query(string $sql): Result
- {
- return $this->connection->query($sql);
- }
-
- /**
- * Execute an SQL statement.
- *
- * @param string $statement
- * @return int
- */
- public function exec(string $statement): int
- {
- return $this->connection->exec($statement);
- }
-
- /**
- * Get the last insert ID.
- *
- * @param string|null $name
- * @return mixed
- */
- public function lastInsertId($name = null)
- {
- if ($name === null) {
- return $this->connection->lastInsertId($name);
- }
-
- return $this->prepare('SELECT CONVERT(VARCHAR(MAX), current_value) FROM sys.sequences WHERE name = ?')
- ->execute([$name])
- ->fetchOne();
- }
-
- /**
- * Begin a new database transaction.
- *
- * @return void
- */
- public function beginTransaction()
- {
- return $this->connection->beginTransaction();
- }
-
- /**
- * Commit a database transaction.
- *
- * @return void
- */
- public function commit()
- {
- return $this->connection->commit();
- }
-
- /**
- * Rollback a database transaction.
- *
- * @return void
- */
- public function rollBack()
- {
- return $this->connection->rollBack();
- }
-
- /**
- * Wrap quotes around the given input.
- *
- * @param string $value
- * @param int $type
- * @return string
- */
- public function quote($value, $type = ParameterType::STRING)
- {
- $val = $this->connection->quote($value, $type);
-
- // Fix for a driver version terminating all values with null byte...
- if (\is_string($val) && \strpos($val, "\0") !== false) {
- $val = \substr($val, 0, -1);
- }
-
- return $val;
- }
-
- /**
- * Get the server version for the connection.
- *
- * @return string
- */
- public function getServerVersion()
- {
- return $this->connection->getServerVersion();
- }
-
- /**
- * Get the wrapped PDO connection.
- *
- * @return \PDO
- */
- public function getWrappedConnection(): PDO
- {
- return $this->connection->getWrappedConnection();
- }
-}
diff --git a/vendor/illuminate/database/PDO/SqlServerDriver.php b/vendor/illuminate/database/PDO/SqlServerDriver.php
deleted file mode 100644
index 1373fc49..00000000
--- a/vendor/illuminate/database/PDO/SqlServerDriver.php
+++ /dev/null
@@ -1,18 +0,0 @@
- $value) {
- if (is_int($value)) {
- $pdoParam = PDO::PARAM_INT;
- } elseif (is_resource($value)) {
- $pdoParam = PDO::PARAM_LOB;
- } else {
- $pdoParam = PDO::PARAM_STR;
- }
-
- $statement->bindValue(
- is_string($key) ? $key : $key + 1,
- $value,
- $pdoParam
- );
- }
- }
-
- /**
- * Get the default query grammar instance.
- *
- * @return \Illuminate\Database\Query\Grammars\PostgresGrammar
- */
- protected function getDefaultQueryGrammar()
- {
- return $this->withTablePrefix(new QueryGrammar);
- }
-
- /**
- * Get a schema builder instance for the connection.
- *
- * @return \Illuminate\Database\Schema\PostgresBuilder
- */
- public function getSchemaBuilder()
- {
- if (is_null($this->schemaGrammar)) {
- $this->useDefaultSchemaGrammar();
- }
-
- return new PostgresBuilder($this);
- }
-
- /**
- * Get the default schema grammar instance.
- *
- * @return \Illuminate\Database\Schema\Grammars\PostgresGrammar
- */
- protected function getDefaultSchemaGrammar()
- {
- return $this->withTablePrefix(new SchemaGrammar);
- }
-
- /**
- * Get the schema state for the connection.
- *
- * @param \Illuminate\Filesystem\Filesystem|null $files
- * @param callable|null $processFactory
- * @return \Illuminate\Database\Schema\PostgresSchemaState
- */
- public function getSchemaState(Filesystem $files = null, callable $processFactory = null)
- {
- return new PostgresSchemaState($this, $files, $processFactory);
- }
-
- /**
- * Get the default post processor instance.
- *
- * @return \Illuminate\Database\Query\Processors\PostgresProcessor
- */
- protected function getDefaultPostProcessor()
- {
- return new PostgresProcessor;
- }
-
- /**
- * Get the Doctrine DBAL driver.
- *
- * @return \Doctrine\DBAL\Driver\PDOPgSql\Driver|\Illuminate\Database\PDO\PostgresDriver
- */
- protected function getDoctrineDriver()
- {
- return class_exists(Version::class) ? new DoctrineDriver : new PostgresDriver;
- }
-}
diff --git a/vendor/illuminate/database/Query/Builder.php b/vendor/illuminate/database/Query/Builder.php
deleted file mode 100755
index 82354391..00000000
--- a/vendor/illuminate/database/Query/Builder.php
+++ /dev/null
@@ -1,3455 +0,0 @@
- [],
- 'from' => [],
- 'join' => [],
- 'where' => [],
- 'groupBy' => [],
- 'having' => [],
- 'order' => [],
- 'union' => [],
- 'unionOrder' => [],
- ];
-
- /**
- * An aggregate function and column to be run.
- *
- * @var array
- */
- public $aggregate;
-
- /**
- * The columns that should be returned.
- *
- * @var array
- */
- public $columns;
-
- /**
- * Indicates if the query returns distinct results.
- *
- * Occasionally contains the columns that should be distinct.
- *
- * @var bool|array
- */
- public $distinct = false;
-
- /**
- * The table which the query is targeting.
- *
- * @var string
- */
- public $from;
-
- /**
- * The table joins for the query.
- *
- * @var array
- */
- public $joins;
-
- /**
- * The where constraints for the query.
- *
- * @var array
- */
- public $wheres = [];
-
- /**
- * The groupings for the query.
- *
- * @var array
- */
- public $groups;
-
- /**
- * The having constraints for the query.
- *
- * @var array
- */
- public $havings;
-
- /**
- * The orderings for the query.
- *
- * @var array
- */
- public $orders;
-
- /**
- * The maximum number of records to return.
- *
- * @var int
- */
- public $limit;
-
- /**
- * The number of records to skip.
- *
- * @var int
- */
- public $offset;
-
- /**
- * The query union statements.
- *
- * @var array
- */
- public $unions;
-
- /**
- * The maximum number of union records to return.
- *
- * @var int
- */
- public $unionLimit;
-
- /**
- * The number of union records to skip.
- *
- * @var int
- */
- public $unionOffset;
-
- /**
- * The orderings for the union query.
- *
- * @var array
- */
- public $unionOrders;
-
- /**
- * Indicates whether row locking is being used.
- *
- * @var string|bool
- */
- public $lock;
-
- /**
- * The callbacks that should be invoked before the query is executed.
- *
- * @var array
- */
- public $beforeQueryCallbacks = [];
-
- /**
- * All of the available clause operators.
- *
- * @var string[]
- */
- public $operators = [
- '=', '<', '>', '<=', '>=', '<>', '!=', '<=>',
- 'like', 'like binary', 'not like', 'ilike',
- '&', '|', '^', '<<', '>>', '&~',
- 'rlike', 'not rlike', 'regexp', 'not regexp',
- '~', '~*', '!~', '!~*', 'similar to',
- 'not similar to', 'not ilike', '~~*', '!~~*',
- ];
-
- /**
- * Whether to use write pdo for the select.
- *
- * @var bool
- */
- public $useWritePdo = false;
-
- /**
- * Create a new query builder instance.
- *
- * @param \Illuminate\Database\ConnectionInterface $connection
- * @param \Illuminate\Database\Query\Grammars\Grammar|null $grammar
- * @param \Illuminate\Database\Query\Processors\Processor|null $processor
- * @return void
- */
- public function __construct(ConnectionInterface $connection,
- Grammar $grammar = null,
- Processor $processor = null)
- {
- $this->connection = $connection;
- $this->grammar = $grammar ?: $connection->getQueryGrammar();
- $this->processor = $processor ?: $connection->getPostProcessor();
- }
-
- /**
- * Set the columns to be selected.
- *
- * @param array|mixed $columns
- * @return $this
- */
- public function select($columns = ['*'])
- {
- $this->columns = [];
- $this->bindings['select'] = [];
- $columns = is_array($columns) ? $columns : func_get_args();
-
- foreach ($columns as $as => $column) {
- if (is_string($as) && $this->isQueryable($column)) {
- $this->selectSub($column, $as);
- } else {
- $this->columns[] = $column;
- }
- }
-
- return $this;
- }
-
- /**
- * Add a subselect expression to the query.
- *
- * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query
- * @param string $as
- * @return $this
- *
- * @throws \InvalidArgumentException
- */
- public function selectSub($query, $as)
- {
- [$query, $bindings] = $this->createSub($query);
-
- return $this->selectRaw(
- '('.$query.') as '.$this->grammar->wrap($as), $bindings
- );
- }
-
- /**
- * Add a new "raw" select expression to the query.
- *
- * @param string $expression
- * @param array $bindings
- * @return $this
- */
- public function selectRaw($expression, array $bindings = [])
- {
- $this->addSelect(new Expression($expression));
-
- if ($bindings) {
- $this->addBinding($bindings, 'select');
- }
-
- return $this;
- }
-
- /**
- * Makes "from" fetch from a subquery.
- *
- * @param \Closure|\Illuminate\Database\Query\Builder|string $query
- * @param string $as
- * @return $this
- *
- * @throws \InvalidArgumentException
- */
- public function fromSub($query, $as)
- {
- [$query, $bindings] = $this->createSub($query);
-
- return $this->fromRaw('('.$query.') as '.$this->grammar->wrapTable($as), $bindings);
- }
-
- /**
- * Add a raw from clause to the query.
- *
- * @param string $expression
- * @param mixed $bindings
- * @return $this
- */
- public function fromRaw($expression, $bindings = [])
- {
- $this->from = new Expression($expression);
-
- $this->addBinding($bindings, 'from');
-
- return $this;
- }
-
- /**
- * Creates a subquery and parse it.
- *
- * @param \Closure|\Illuminate\Database\Query\Builder|string $query
- * @return array
- */
- protected function createSub($query)
- {
- // If the given query is a Closure, we will execute it while passing in a new
- // query instance to the Closure. This will give the developer a chance to
- // format and work with the query before we cast it to a raw SQL string.
- if ($query instanceof Closure) {
- $callback = $query;
-
- $callback($query = $this->forSubQuery());
- }
-
- return $this->parseSub($query);
- }
-
- /**
- * Parse the subquery into SQL and bindings.
- *
- * @param mixed $query
- * @return array
- *
- * @throws \InvalidArgumentException
- */
- protected function parseSub($query)
- {
- if ($query instanceof self || $query instanceof EloquentBuilder || $query instanceof Relation) {
- $query = $this->prependDatabaseNameIfCrossDatabaseQuery($query);
-
- return [$query->toSql(), $query->getBindings()];
- } elseif (is_string($query)) {
- return [$query, []];
- } else {
- throw new InvalidArgumentException(
- 'A subquery must be a query builder instance, a Closure, or a string.'
- );
- }
- }
-
- /**
- * Prepend the database name if the given query is on another database.
- *
- * @param mixed $query
- * @return mixed
- */
- protected function prependDatabaseNameIfCrossDatabaseQuery($query)
- {
- if ($query->getConnection()->getDatabaseName() !==
- $this->getConnection()->getDatabaseName()) {
- $databaseName = $query->getConnection()->getDatabaseName();
-
- if (strpos($query->from, $databaseName) !== 0 && strpos($query->from, '.') === false) {
- $query->from($databaseName.'.'.$query->from);
- }
- }
-
- return $query;
- }
-
- /**
- * Add a new select column to the query.
- *
- * @param array|mixed $column
- * @return $this
- */
- public function addSelect($column)
- {
- $columns = is_array($column) ? $column : func_get_args();
-
- foreach ($columns as $as => $column) {
- if (is_string($as) && $this->isQueryable($column)) {
- if (is_null($this->columns)) {
- $this->select($this->from.'.*');
- }
-
- $this->selectSub($column, $as);
- } else {
- $this->columns[] = $column;
- }
- }
-
- return $this;
- }
-
- /**
- * Force the query to only return distinct results.
- *
- * @param mixed ...$distinct
- * @return $this
- */
- public function distinct()
- {
- $columns = func_get_args();
-
- if (count($columns) > 0) {
- $this->distinct = is_array($columns[0]) || is_bool($columns[0]) ? $columns[0] : $columns;
- } else {
- $this->distinct = true;
- }
-
- return $this;
- }
-
- /**
- * Set the table which the query is targeting.
- *
- * @param \Closure|\Illuminate\Database\Query\Builder|string $table
- * @param string|null $as
- * @return $this
- */
- public function from($table, $as = null)
- {
- if ($this->isQueryable($table)) {
- return $this->fromSub($table, $as);
- }
-
- $this->from = $as ? "{$table} as {$as}" : $table;
-
- return $this;
- }
-
- /**
- * Add a join clause to the query.
- *
- * @param string $table
- * @param \Closure|string $first
- * @param string|null $operator
- * @param string|null $second
- * @param string $type
- * @param bool $where
- * @return $this
- */
- public function join($table, $first, $operator = null, $second = null, $type = 'inner', $where = false)
- {
- $join = $this->newJoinClause($this, $type, $table);
-
- // If the first "column" of the join is really a Closure instance the developer
- // is trying to build a join with a complex "on" clause containing more than
- // one condition, so we'll add the join and call a Closure with the query.
- if ($first instanceof Closure) {
- $first($join);
-
- $this->joins[] = $join;
-
- $this->addBinding($join->getBindings(), 'join');
- }
-
- // If the column is simply a string, we can assume the join simply has a basic
- // "on" clause with a single condition. So we will just build the join with
- // this simple join clauses attached to it. There is not a join callback.
- else {
- $method = $where ? 'where' : 'on';
-
- $this->joins[] = $join->$method($first, $operator, $second);
-
- $this->addBinding($join->getBindings(), 'join');
- }
-
- return $this;
- }
-
- /**
- * Add a "join where" clause to the query.
- *
- * @param string $table
- * @param \Closure|string $first
- * @param string $operator
- * @param string $second
- * @param string $type
- * @return $this
- */
- public function joinWhere($table, $first, $operator, $second, $type = 'inner')
- {
- return $this->join($table, $first, $operator, $second, $type, true);
- }
-
- /**
- * Add a subquery join clause to the query.
- *
- * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query
- * @param string $as
- * @param \Closure|string $first
- * @param string|null $operator
- * @param string|null $second
- * @param string $type
- * @param bool $where
- * @return $this
- *
- * @throws \InvalidArgumentException
- */
- public function joinSub($query, $as, $first, $operator = null, $second = null, $type = 'inner', $where = false)
- {
- [$query, $bindings] = $this->createSub($query);
-
- $expression = '('.$query.') as '.$this->grammar->wrapTable($as);
-
- $this->addBinding($bindings, 'join');
-
- return $this->join(new Expression($expression), $first, $operator, $second, $type, $where);
- }
-
- /**
- * Add a left join to the query.
- *
- * @param string $table
- * @param \Closure|string $first
- * @param string|null $operator
- * @param string|null $second
- * @return $this
- */
- public function leftJoin($table, $first, $operator = null, $second = null)
- {
- return $this->join($table, $first, $operator, $second, 'left');
- }
-
- /**
- * Add a "join where" clause to the query.
- *
- * @param string $table
- * @param \Closure|string $first
- * @param string $operator
- * @param string $second
- * @return $this
- */
- public function leftJoinWhere($table, $first, $operator, $second)
- {
- return $this->joinWhere($table, $first, $operator, $second, 'left');
- }
-
- /**
- * Add a subquery left join to the query.
- *
- * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query
- * @param string $as
- * @param \Closure|string $first
- * @param string|null $operator
- * @param string|null $second
- * @return $this
- */
- public function leftJoinSub($query, $as, $first, $operator = null, $second = null)
- {
- return $this->joinSub($query, $as, $first, $operator, $second, 'left');
- }
-
- /**
- * Add a right join to the query.
- *
- * @param string $table
- * @param \Closure|string $first
- * @param string|null $operator
- * @param string|null $second
- * @return $this
- */
- public function rightJoin($table, $first, $operator = null, $second = null)
- {
- return $this->join($table, $first, $operator, $second, 'right');
- }
-
- /**
- * Add a "right join where" clause to the query.
- *
- * @param string $table
- * @param \Closure|string $first
- * @param string $operator
- * @param string $second
- * @return $this
- */
- public function rightJoinWhere($table, $first, $operator, $second)
- {
- return $this->joinWhere($table, $first, $operator, $second, 'right');
- }
-
- /**
- * Add a subquery right join to the query.
- *
- * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query
- * @param string $as
- * @param \Closure|string $first
- * @param string|null $operator
- * @param string|null $second
- * @return $this
- */
- public function rightJoinSub($query, $as, $first, $operator = null, $second = null)
- {
- return $this->joinSub($query, $as, $first, $operator, $second, 'right');
- }
-
- /**
- * Add a "cross join" clause to the query.
- *
- * @param string $table
- * @param \Closure|string|null $first
- * @param string|null $operator
- * @param string|null $second
- * @return $this
- */
- public function crossJoin($table, $first = null, $operator = null, $second = null)
- {
- if ($first) {
- return $this->join($table, $first, $operator, $second, 'cross');
- }
-
- $this->joins[] = $this->newJoinClause($this, 'cross', $table);
-
- return $this;
- }
-
- /**
- * Add a subquery cross join to the query.
- *
- * @param \Closure|\Illuminate\Database\Query\Builder|string $query
- * @param string $as
- * @return $this
- */
- public function crossJoinSub($query, $as)
- {
- [$query, $bindings] = $this->createSub($query);
-
- $expression = '('.$query.') as '.$this->grammar->wrapTable($as);
-
- $this->addBinding($bindings, 'join');
-
- $this->joins[] = $this->newJoinClause($this, 'cross', new Expression($expression));
-
- return $this;
- }
-
- /**
- * Get a new join clause.
- *
- * @param \Illuminate\Database\Query\Builder $parentQuery
- * @param string $type
- * @param string $table
- * @return \Illuminate\Database\Query\JoinClause
- */
- protected function newJoinClause(self $parentQuery, $type, $table)
- {
- return new JoinClause($parentQuery, $type, $table);
- }
-
- /**
- * Merge an array of where clauses and bindings.
- *
- * @param array $wheres
- * @param array $bindings
- * @return void
- */
- public function mergeWheres($wheres, $bindings)
- {
- $this->wheres = array_merge($this->wheres, (array) $wheres);
-
- $this->bindings['where'] = array_values(
- array_merge($this->bindings['where'], (array) $bindings)
- );
- }
-
- /**
- * Add a basic where clause to the query.
- *
- * @param \Closure|string|array $column
- * @param mixed $operator
- * @param mixed $value
- * @param string $boolean
- * @return $this
- */
- public function where($column, $operator = null, $value = null, $boolean = 'and')
- {
- // If the column is an array, we will assume it is an array of key-value pairs
- // and can add them each as a where clause. We will maintain the boolean we
- // received when the method was called and pass it into the nested where.
- if (is_array($column)) {
- return $this->addArrayOfWheres($column, $boolean);
- }
-
- // Here we will make some assumptions about the operator. If only 2 values are
- // passed to the method, we will assume that the operator is an equals sign
- // and keep going. Otherwise, we'll require the operator to be passed in.
- [$value, $operator] = $this->prepareValueAndOperator(
- $value, $operator, func_num_args() === 2
- );
-
- // If the columns is actually a Closure instance, we will assume the developer
- // wants to begin a nested where statement which is wrapped in parenthesis.
- // We'll add that Closure to the query then return back out immediately.
- if ($column instanceof Closure && is_null($operator)) {
- return $this->whereNested($column, $boolean);
- }
-
- // If the column is a Closure instance and there is an operator value, we will
- // assume the developer wants to run a subquery and then compare the result
- // of that subquery with the given value that was provided to the method.
- if ($this->isQueryable($column) && ! is_null($operator)) {
- [$sub, $bindings] = $this->createSub($column);
-
- return $this->addBinding($bindings, 'where')
- ->where(new Expression('('.$sub.')'), $operator, $value, $boolean);
- }
-
- // If the given operator is not found in the list of valid operators we will
- // assume that the developer is just short-cutting the '=' operators and
- // we will set the operators to '=' and set the values appropriately.
- if ($this->invalidOperator($operator)) {
- [$value, $operator] = [$operator, '='];
- }
-
- // If the value is a Closure, it means the developer is performing an entire
- // sub-select within the query and we will need to compile the sub-select
- // within the where clause to get the appropriate query record results.
- if ($value instanceof Closure) {
- return $this->whereSub($column, $operator, $value, $boolean);
- }
-
- // If the value is "null", we will just assume the developer wants to add a
- // where null clause to the query. So, we will allow a short-cut here to
- // that method for convenience so the developer doesn't have to check.
- if (is_null($value)) {
- return $this->whereNull($column, $boolean, $operator !== '=');
- }
-
- $type = 'Basic';
-
- // If the column is making a JSON reference we'll check to see if the value
- // is a boolean. If it is, we'll add the raw boolean string as an actual
- // value to the query to ensure this is properly handled by the query.
- if (Str::contains($column, '->') && is_bool($value)) {
- $value = new Expression($value ? 'true' : 'false');
-
- if (is_string($column)) {
- $type = 'JsonBoolean';
- }
- }
-
- // Now that we are working with just a simple query we can put the elements
- // in our array and add the query binding to our array of bindings that
- // will be bound to each SQL statements when it is finally executed.
- $this->wheres[] = compact(
- 'type', 'column', 'operator', 'value', 'boolean'
- );
-
- if (! $value instanceof Expression) {
- $this->addBinding($this->flattenValue($value), 'where');
- }
-
- return $this;
- }
-
- /**
- * Add an array of where clauses to the query.
- *
- * @param array $column
- * @param string $boolean
- * @param string $method
- * @return $this
- */
- protected function addArrayOfWheres($column, $boolean, $method = 'where')
- {
- return $this->whereNested(function ($query) use ($column, $method, $boolean) {
- foreach ($column as $key => $value) {
- if (is_numeric($key) && is_array($value)) {
- $query->{$method}(...array_values($value));
- } else {
- $query->$method($key, '=', $value, $boolean);
- }
- }
- }, $boolean);
- }
-
- /**
- * Prepare the value and operator for a where clause.
- *
- * @param string $value
- * @param string $operator
- * @param bool $useDefault
- * @return array
- *
- * @throws \InvalidArgumentException
- */
- public function prepareValueAndOperator($value, $operator, $useDefault = false)
- {
- if ($useDefault) {
- return [$operator, '='];
- } elseif ($this->invalidOperatorAndValue($operator, $value)) {
- throw new InvalidArgumentException('Illegal operator and value combination.');
- }
-
- return [$value, $operator];
- }
-
- /**
- * Determine if the given operator and value combination is legal.
- *
- * Prevents using Null values with invalid operators.
- *
- * @param string $operator
- * @param mixed $value
- * @return bool
- */
- protected function invalidOperatorAndValue($operator, $value)
- {
- return is_null($value) && in_array($operator, $this->operators) &&
- ! in_array($operator, ['=', '<>', '!=']);
- }
-
- /**
- * Determine if the given operator is supported.
- *
- * @param string $operator
- * @return bool
- */
- protected function invalidOperator($operator)
- {
- return ! in_array(strtolower($operator), $this->operators, true) &&
- ! in_array(strtolower($operator), $this->grammar->getOperators(), true);
- }
-
- /**
- * Add an "or where" clause to the query.
- *
- * @param \Closure|string|array $column
- * @param mixed $operator
- * @param mixed $value
- * @return $this
- */
- public function orWhere($column, $operator = null, $value = null)
- {
- [$value, $operator] = $this->prepareValueAndOperator(
- $value, $operator, func_num_args() === 2
- );
-
- return $this->where($column, $operator, $value, 'or');
- }
-
- /**
- * Add a "where" clause comparing two columns to the query.
- *
- * @param string|array $first
- * @param string|null $operator
- * @param string|null $second
- * @param string|null $boolean
- * @return $this
- */
- public function whereColumn($first, $operator = null, $second = null, $boolean = 'and')
- {
- // If the column is an array, we will assume it is an array of key-value pairs
- // and can add them each as a where clause. We will maintain the boolean we
- // received when the method was called and pass it into the nested where.
- if (is_array($first)) {
- return $this->addArrayOfWheres($first, $boolean, 'whereColumn');
- }
-
- // If the given operator is not found in the list of valid operators we will
- // assume that the developer is just short-cutting the '=' operators and
- // we will set the operators to '=' and set the values appropriately.
- if ($this->invalidOperator($operator)) {
- [$second, $operator] = [$operator, '='];
- }
-
- // Finally, we will add this where clause into this array of clauses that we
- // are building for the query. All of them will be compiled via a grammar
- // once the query is about to be executed and run against the database.
- $type = 'Column';
-
- $this->wheres[] = compact(
- 'type', 'first', 'operator', 'second', 'boolean'
- );
-
- return $this;
- }
-
- /**
- * Add an "or where" clause comparing two columns to the query.
- *
- * @param string|array $first
- * @param string|null $operator
- * @param string|null $second
- * @return $this
- */
- public function orWhereColumn($first, $operator = null, $second = null)
- {
- return $this->whereColumn($first, $operator, $second, 'or');
- }
-
- /**
- * Add a raw where clause to the query.
- *
- * @param string $sql
- * @param mixed $bindings
- * @param string $boolean
- * @return $this
- */
- public function whereRaw($sql, $bindings = [], $boolean = 'and')
- {
- $this->wheres[] = ['type' => 'raw', 'sql' => $sql, 'boolean' => $boolean];
-
- $this->addBinding((array) $bindings, 'where');
-
- return $this;
- }
-
- /**
- * Add a raw or where clause to the query.
- *
- * @param string $sql
- * @param mixed $bindings
- * @return $this
- */
- public function orWhereRaw($sql, $bindings = [])
- {
- return $this->whereRaw($sql, $bindings, 'or');
- }
-
- /**
- * Add a "where in" clause to the query.
- *
- * @param string $column
- * @param mixed $values
- * @param string $boolean
- * @param bool $not
- * @return $this
- */
- public function whereIn($column, $values, $boolean = 'and', $not = false)
- {
- $type = $not ? 'NotIn' : 'In';
-
- // If the value is a query builder instance we will assume the developer wants to
- // look for any values that exists within this given query. So we will add the
- // query accordingly so that this query is properly executed when it is run.
- if ($this->isQueryable($values)) {
- [$query, $bindings] = $this->createSub($values);
-
- $values = [new Expression($query)];
-
- $this->addBinding($bindings, 'where');
- }
-
- // Next, if the value is Arrayable we need to cast it to its raw array form so we
- // have the underlying array value instead of an Arrayable object which is not
- // able to be added as a binding, etc. We will then add to the wheres array.
- if ($values instanceof Arrayable) {
- $values = $values->toArray();
- }
-
- $this->wheres[] = compact('type', 'column', 'values', 'boolean');
-
- // Finally we'll add a binding for each values unless that value is an expression
- // in which case we will just skip over it since it will be the query as a raw
- // string and not as a parameterized place-holder to be replaced by the PDO.
- $this->addBinding($this->cleanBindings($values), 'where');
-
- return $this;
- }
-
- /**
- * Add an "or where in" clause to the query.
- *
- * @param string $column
- * @param mixed $values
- * @return $this
- */
- public function orWhereIn($column, $values)
- {
- return $this->whereIn($column, $values, 'or');
- }
-
- /**
- * Add a "where not in" clause to the query.
- *
- * @param string $column
- * @param mixed $values
- * @param string $boolean
- * @return $this
- */
- public function whereNotIn($column, $values, $boolean = 'and')
- {
- return $this->whereIn($column, $values, $boolean, true);
- }
-
- /**
- * Add an "or where not in" clause to the query.
- *
- * @param string $column
- * @param mixed $values
- * @return $this
- */
- public function orWhereNotIn($column, $values)
- {
- return $this->whereNotIn($column, $values, 'or');
- }
-
- /**
- * Add a "where in raw" clause for integer values to the query.
- *
- * @param string $column
- * @param \Illuminate\Contracts\Support\Arrayable|array $values
- * @param string $boolean
- * @param bool $not
- * @return $this
- */
- public function whereIntegerInRaw($column, $values, $boolean = 'and', $not = false)
- {
- $type = $not ? 'NotInRaw' : 'InRaw';
-
- if ($values instanceof Arrayable) {
- $values = $values->toArray();
- }
-
- foreach ($values as &$value) {
- $value = (int) $value;
- }
-
- $this->wheres[] = compact('type', 'column', 'values', 'boolean');
-
- return $this;
- }
-
- /**
- * Add an "or where in raw" clause for integer values to the query.
- *
- * @param string $column
- * @param \Illuminate\Contracts\Support\Arrayable|array $values
- * @return $this
- */
- public function orWhereIntegerInRaw($column, $values)
- {
- return $this->whereIntegerInRaw($column, $values, 'or');
- }
-
- /**
- * Add a "where not in raw" clause for integer values to the query.
- *
- * @param string $column
- * @param \Illuminate\Contracts\Support\Arrayable|array $values
- * @param string $boolean
- * @return $this
- */
- public function whereIntegerNotInRaw($column, $values, $boolean = 'and')
- {
- return $this->whereIntegerInRaw($column, $values, $boolean, true);
- }
-
- /**
- * Add an "or where not in raw" clause for integer values to the query.
- *
- * @param string $column
- * @param \Illuminate\Contracts\Support\Arrayable|array $values
- * @return $this
- */
- public function orWhereIntegerNotInRaw($column, $values)
- {
- return $this->whereIntegerNotInRaw($column, $values, 'or');
- }
-
- /**
- * Add a "where null" clause to the query.
- *
- * @param string|array $columns
- * @param string $boolean
- * @param bool $not
- * @return $this
- */
- public function whereNull($columns, $boolean = 'and', $not = false)
- {
- $type = $not ? 'NotNull' : 'Null';
-
- foreach (Arr::wrap($columns) as $column) {
- $this->wheres[] = compact('type', 'column', 'boolean');
- }
-
- return $this;
- }
-
- /**
- * Add an "or where null" clause to the query.
- *
- * @param string|array $column
- * @return $this
- */
- public function orWhereNull($column)
- {
- return $this->whereNull($column, 'or');
- }
-
- /**
- * Add a "where not null" clause to the query.
- *
- * @param string|array $columns
- * @param string $boolean
- * @return $this
- */
- public function whereNotNull($columns, $boolean = 'and')
- {
- return $this->whereNull($columns, $boolean, true);
- }
-
- /**
- * Add a where between statement to the query.
- *
- * @param string|\Illuminate\Database\Query\Expression $column
- * @param array $values
- * @param string $boolean
- * @param bool $not
- * @return $this
- */
- public function whereBetween($column, array $values, $boolean = 'and', $not = false)
- {
- $type = 'between';
-
- $this->wheres[] = compact('type', 'column', 'values', 'boolean', 'not');
-
- $this->addBinding(array_slice($this->cleanBindings(Arr::flatten($values)), 0, 2), 'where');
-
- return $this;
- }
-
- /**
- * Add a where between statement using columns to the query.
- *
- * @param string $column
- * @param array $values
- * @param string $boolean
- * @param bool $not
- * @return $this
- */
- public function whereBetweenColumns($column, array $values, $boolean = 'and', $not = false)
- {
- $type = 'betweenColumns';
-
- $this->wheres[] = compact('type', 'column', 'values', 'boolean', 'not');
-
- return $this;
- }
-
- /**
- * Add an or where between statement to the query.
- *
- * @param string $column
- * @param array $values
- * @return $this
- */
- public function orWhereBetween($column, array $values)
- {
- return $this->whereBetween($column, $values, 'or');
- }
-
- /**
- * Add an or where between statement using columns to the query.
- *
- * @param string $column
- * @param array $values
- * @return $this
- */
- public function orWhereBetweenColumns($column, array $values)
- {
- return $this->whereBetweenColumns($column, $values, 'or');
- }
-
- /**
- * Add a where not between statement to the query.
- *
- * @param string $column
- * @param array $values
- * @param string $boolean
- * @return $this
- */
- public function whereNotBetween($column, array $values, $boolean = 'and')
- {
- return $this->whereBetween($column, $values, $boolean, true);
- }
-
- /**
- * Add a where not between statement using columns to the query.
- *
- * @param string $column
- * @param array $values
- * @param string $boolean
- * @return $this
- */
- public function whereNotBetweenColumns($column, array $values, $boolean = 'and')
- {
- return $this->whereBetweenColumns($column, $values, $boolean, true);
- }
-
- /**
- * Add an or where not between statement to the query.
- *
- * @param string $column
- * @param array $values
- * @return $this
- */
- public function orWhereNotBetween($column, array $values)
- {
- return $this->whereNotBetween($column, $values, 'or');
- }
-
- /**
- * Add an or where not between statement using columns to the query.
- *
- * @param string $column
- * @param array $values
- * @return $this
- */
- public function orWhereNotBetweenColumns($column, array $values)
- {
- return $this->whereNotBetweenColumns($column, $values, 'or');
- }
-
- /**
- * Add an "or where not null" clause to the query.
- *
- * @param string $column
- * @return $this
- */
- public function orWhereNotNull($column)
- {
- return $this->whereNotNull($column, 'or');
- }
-
- /**
- * Add a "where date" statement to the query.
- *
- * @param string $column
- * @param string $operator
- * @param \DateTimeInterface|string|null $value
- * @param string $boolean
- * @return $this
- */
- public function whereDate($column, $operator, $value = null, $boolean = 'and')
- {
- [$value, $operator] = $this->prepareValueAndOperator(
- $value, $operator, func_num_args() === 2
- );
-
- $value = $this->flattenValue($value);
-
- if ($value instanceof DateTimeInterface) {
- $value = $value->format('Y-m-d');
- }
-
- return $this->addDateBasedWhere('Date', $column, $operator, $value, $boolean);
- }
-
- /**
- * Add an "or where date" statement to the query.
- *
- * @param string $column
- * @param string $operator
- * @param \DateTimeInterface|string|null $value
- * @return $this
- */
- public function orWhereDate($column, $operator, $value = null)
- {
- [$value, $operator] = $this->prepareValueAndOperator(
- $value, $operator, func_num_args() === 2
- );
-
- return $this->whereDate($column, $operator, $value, 'or');
- }
-
- /**
- * Add a "where time" statement to the query.
- *
- * @param string $column
- * @param string $operator
- * @param \DateTimeInterface|string|null $value
- * @param string $boolean
- * @return $this
- */
- public function whereTime($column, $operator, $value = null, $boolean = 'and')
- {
- [$value, $operator] = $this->prepareValueAndOperator(
- $value, $operator, func_num_args() === 2
- );
-
- $value = $this->flattenValue($value);
-
- if ($value instanceof DateTimeInterface) {
- $value = $value->format('H:i:s');
- }
-
- return $this->addDateBasedWhere('Time', $column, $operator, $value, $boolean);
- }
-
- /**
- * Add an "or where time" statement to the query.
- *
- * @param string $column
- * @param string $operator
- * @param \DateTimeInterface|string|null $value
- * @return $this
- */
- public function orWhereTime($column, $operator, $value = null)
- {
- [$value, $operator] = $this->prepareValueAndOperator(
- $value, $operator, func_num_args() === 2
- );
-
- return $this->whereTime($column, $operator, $value, 'or');
- }
-
- /**
- * Add a "where day" statement to the query.
- *
- * @param string $column
- * @param string $operator
- * @param \DateTimeInterface|string|null $value
- * @param string $boolean
- * @return $this
- */
- public function whereDay($column, $operator, $value = null, $boolean = 'and')
- {
- [$value, $operator] = $this->prepareValueAndOperator(
- $value, $operator, func_num_args() === 2
- );
-
- $value = $this->flattenValue($value);
-
- if ($value instanceof DateTimeInterface) {
- $value = $value->format('d');
- }
-
- if (! $value instanceof Expression) {
- $value = str_pad($value, 2, '0', STR_PAD_LEFT);
- }
-
- return $this->addDateBasedWhere('Day', $column, $operator, $value, $boolean);
- }
-
- /**
- * Add an "or where day" statement to the query.
- *
- * @param string $column
- * @param string $operator
- * @param \DateTimeInterface|string|null $value
- * @return $this
- */
- public function orWhereDay($column, $operator, $value = null)
- {
- [$value, $operator] = $this->prepareValueAndOperator(
- $value, $operator, func_num_args() === 2
- );
-
- return $this->whereDay($column, $operator, $value, 'or');
- }
-
- /**
- * Add a "where month" statement to the query.
- *
- * @param string $column
- * @param string $operator
- * @param \DateTimeInterface|string|null $value
- * @param string $boolean
- * @return $this
- */
- public function whereMonth($column, $operator, $value = null, $boolean = 'and')
- {
- [$value, $operator] = $this->prepareValueAndOperator(
- $value, $operator, func_num_args() === 2
- );
-
- $value = $this->flattenValue($value);
-
- if ($value instanceof DateTimeInterface) {
- $value = $value->format('m');
- }
-
- if (! $value instanceof Expression) {
- $value = str_pad($value, 2, '0', STR_PAD_LEFT);
- }
-
- return $this->addDateBasedWhere('Month', $column, $operator, $value, $boolean);
- }
-
- /**
- * Add an "or where month" statement to the query.
- *
- * @param string $column
- * @param string $operator
- * @param \DateTimeInterface|string|null $value
- * @return $this
- */
- public function orWhereMonth($column, $operator, $value = null)
- {
- [$value, $operator] = $this->prepareValueAndOperator(
- $value, $operator, func_num_args() === 2
- );
-
- return $this->whereMonth($column, $operator, $value, 'or');
- }
-
- /**
- * Add a "where year" statement to the query.
- *
- * @param string $column
- * @param string $operator
- * @param \DateTimeInterface|string|int|null $value
- * @param string $boolean
- * @return $this
- */
- public function whereYear($column, $operator, $value = null, $boolean = 'and')
- {
- [$value, $operator] = $this->prepareValueAndOperator(
- $value, $operator, func_num_args() === 2
- );
-
- $value = $this->flattenValue($value);
-
- if ($value instanceof DateTimeInterface) {
- $value = $value->format('Y');
- }
-
- return $this->addDateBasedWhere('Year', $column, $operator, $value, $boolean);
- }
-
- /**
- * Add an "or where year" statement to the query.
- *
- * @param string $column
- * @param string $operator
- * @param \DateTimeInterface|string|int|null $value
- * @return $this
- */
- public function orWhereYear($column, $operator, $value = null)
- {
- [$value, $operator] = $this->prepareValueAndOperator(
- $value, $operator, func_num_args() === 2
- );
-
- return $this->whereYear($column, $operator, $value, 'or');
- }
-
- /**
- * Add a date based (year, month, day, time) statement to the query.
- *
- * @param string $type
- * @param string $column
- * @param string $operator
- * @param mixed $value
- * @param string $boolean
- * @return $this
- */
- protected function addDateBasedWhere($type, $column, $operator, $value, $boolean = 'and')
- {
- $this->wheres[] = compact('column', 'type', 'boolean', 'operator', 'value');
-
- if (! $value instanceof Expression) {
- $this->addBinding($value, 'where');
- }
-
- return $this;
- }
-
- /**
- * Add a nested where statement to the query.
- *
- * @param \Closure $callback
- * @param string $boolean
- * @return $this
- */
- public function whereNested(Closure $callback, $boolean = 'and')
- {
- call_user_func($callback, $query = $this->forNestedWhere());
-
- return $this->addNestedWhereQuery($query, $boolean);
- }
-
- /**
- * Create a new query instance for nested where condition.
- *
- * @return \Illuminate\Database\Query\Builder
- */
- public function forNestedWhere()
- {
- return $this->newQuery()->from($this->from);
- }
-
- /**
- * Add another query builder as a nested where to the query builder.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param string $boolean
- * @return $this
- */
- public function addNestedWhereQuery($query, $boolean = 'and')
- {
- if (count($query->wheres)) {
- $type = 'Nested';
-
- $this->wheres[] = compact('type', 'query', 'boolean');
-
- $this->addBinding($query->getRawBindings()['where'], 'where');
- }
-
- return $this;
- }
-
- /**
- * Add a full sub-select to the query.
- *
- * @param string $column
- * @param string $operator
- * @param \Closure $callback
- * @param string $boolean
- * @return $this
- */
- protected function whereSub($column, $operator, Closure $callback, $boolean)
- {
- $type = 'Sub';
-
- // Once we have the query instance we can simply execute it so it can add all
- // of the sub-select's conditions to itself, and then we can cache it off
- // in the array of where clauses for the "main" parent query instance.
- call_user_func($callback, $query = $this->forSubQuery());
-
- $this->wheres[] = compact(
- 'type', 'column', 'operator', 'query', 'boolean'
- );
-
- $this->addBinding($query->getBindings(), 'where');
-
- return $this;
- }
-
- /**
- * Add an exists clause to the query.
- *
- * @param \Closure $callback
- * @param string $boolean
- * @param bool $not
- * @return $this
- */
- public function whereExists(Closure $callback, $boolean = 'and', $not = false)
- {
- $query = $this->forSubQuery();
-
- // Similar to the sub-select clause, we will create a new query instance so
- // the developer may cleanly specify the entire exists query and we will
- // compile the whole thing in the grammar and insert it into the SQL.
- call_user_func($callback, $query);
-
- return $this->addWhereExistsQuery($query, $boolean, $not);
- }
-
- /**
- * Add an or exists clause to the query.
- *
- * @param \Closure $callback
- * @param bool $not
- * @return $this
- */
- public function orWhereExists(Closure $callback, $not = false)
- {
- return $this->whereExists($callback, 'or', $not);
- }
-
- /**
- * Add a where not exists clause to the query.
- *
- * @param \Closure $callback
- * @param string $boolean
- * @return $this
- */
- public function whereNotExists(Closure $callback, $boolean = 'and')
- {
- return $this->whereExists($callback, $boolean, true);
- }
-
- /**
- * Add a where not exists clause to the query.
- *
- * @param \Closure $callback
- * @return $this
- */
- public function orWhereNotExists(Closure $callback)
- {
- return $this->orWhereExists($callback, true);
- }
-
- /**
- * Add an exists clause to the query.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param string $boolean
- * @param bool $not
- * @return $this
- */
- public function addWhereExistsQuery(self $query, $boolean = 'and', $not = false)
- {
- $type = $not ? 'NotExists' : 'Exists';
-
- $this->wheres[] = compact('type', 'query', 'boolean');
-
- $this->addBinding($query->getBindings(), 'where');
-
- return $this;
- }
-
- /**
- * Adds a where condition using row values.
- *
- * @param array $columns
- * @param string $operator
- * @param array $values
- * @param string $boolean
- * @return $this
- *
- * @throws \InvalidArgumentException
- */
- public function whereRowValues($columns, $operator, $values, $boolean = 'and')
- {
- if (count($columns) !== count($values)) {
- throw new InvalidArgumentException('The number of columns must match the number of values');
- }
-
- $type = 'RowValues';
-
- $this->wheres[] = compact('type', 'columns', 'operator', 'values', 'boolean');
-
- $this->addBinding($this->cleanBindings($values));
-
- return $this;
- }
-
- /**
- * Adds an or where condition using row values.
- *
- * @param array $columns
- * @param string $operator
- * @param array $values
- * @return $this
- */
- public function orWhereRowValues($columns, $operator, $values)
- {
- return $this->whereRowValues($columns, $operator, $values, 'or');
- }
-
- /**
- * Add a "where JSON contains" clause to the query.
- *
- * @param string $column
- * @param mixed $value
- * @param string $boolean
- * @param bool $not
- * @return $this
- */
- public function whereJsonContains($column, $value, $boolean = 'and', $not = false)
- {
- $type = 'JsonContains';
-
- $this->wheres[] = compact('type', 'column', 'value', 'boolean', 'not');
-
- if (! $value instanceof Expression) {
- $this->addBinding($this->grammar->prepareBindingForJsonContains($value));
- }
-
- return $this;
- }
-
- /**
- * Add an "or where JSON contains" clause to the query.
- *
- * @param string $column
- * @param mixed $value
- * @return $this
- */
- public function orWhereJsonContains($column, $value)
- {
- return $this->whereJsonContains($column, $value, 'or');
- }
-
- /**
- * Add a "where JSON not contains" clause to the query.
- *
- * @param string $column
- * @param mixed $value
- * @param string $boolean
- * @return $this
- */
- public function whereJsonDoesntContain($column, $value, $boolean = 'and')
- {
- return $this->whereJsonContains($column, $value, $boolean, true);
- }
-
- /**
- * Add an "or where JSON not contains" clause to the query.
- *
- * @param string $column
- * @param mixed $value
- * @return $this
- */
- public function orWhereJsonDoesntContain($column, $value)
- {
- return $this->whereJsonDoesntContain($column, $value, 'or');
- }
-
- /**
- * Add a "where JSON length" clause to the query.
- *
- * @param string $column
- * @param mixed $operator
- * @param mixed $value
- * @param string $boolean
- * @return $this
- */
- public function whereJsonLength($column, $operator, $value = null, $boolean = 'and')
- {
- $type = 'JsonLength';
-
- [$value, $operator] = $this->prepareValueAndOperator(
- $value, $operator, func_num_args() === 2
- );
-
- $this->wheres[] = compact('type', 'column', 'operator', 'value', 'boolean');
-
- if (! $value instanceof Expression) {
- $this->addBinding((int) $this->flattenValue($value));
- }
-
- return $this;
- }
-
- /**
- * Add an "or where JSON length" clause to the query.
- *
- * @param string $column
- * @param mixed $operator
- * @param mixed $value
- * @return $this
- */
- public function orWhereJsonLength($column, $operator, $value = null)
- {
- [$value, $operator] = $this->prepareValueAndOperator(
- $value, $operator, func_num_args() === 2
- );
-
- return $this->whereJsonLength($column, $operator, $value, 'or');
- }
-
- /**
- * Handles dynamic "where" clauses to the query.
- *
- * @param string $method
- * @param array $parameters
- * @return $this
- */
- public function dynamicWhere($method, $parameters)
- {
- $finder = substr($method, 5);
-
- $segments = preg_split(
- '/(And|Or)(?=[A-Z])/', $finder, -1, PREG_SPLIT_DELIM_CAPTURE
- );
-
- // The connector variable will determine which connector will be used for the
- // query condition. We will change it as we come across new boolean values
- // in the dynamic method strings, which could contain a number of these.
- $connector = 'and';
-
- $index = 0;
-
- foreach ($segments as $segment) {
- // If the segment is not a boolean connector, we can assume it is a column's name
- // and we will add it to the query as a new constraint as a where clause, then
- // we can keep iterating through the dynamic method string's segments again.
- if ($segment !== 'And' && $segment !== 'Or') {
- $this->addDynamic($segment, $connector, $parameters, $index);
-
- $index++;
- }
-
- // Otherwise, we will store the connector so we know how the next where clause we
- // find in the query should be connected to the previous ones, meaning we will
- // have the proper boolean connector to connect the next where clause found.
- else {
- $connector = $segment;
- }
- }
-
- return $this;
- }
-
- /**
- * Add a single dynamic where clause statement to the query.
- *
- * @param string $segment
- * @param string $connector
- * @param array $parameters
- * @param int $index
- * @return void
- */
- protected function addDynamic($segment, $connector, $parameters, $index)
- {
- // Once we have parsed out the columns and formatted the boolean operators we
- // are ready to add it to this query as a where clause just like any other
- // clause on the query. Then we'll increment the parameter index values.
- $bool = strtolower($connector);
-
- $this->where(Str::snake($segment), '=', $parameters[$index], $bool);
- }
-
- /**
- * Add a "group by" clause to the query.
- *
- * @param array|string ...$groups
- * @return $this
- */
- public function groupBy(...$groups)
- {
- foreach ($groups as $group) {
- $this->groups = array_merge(
- (array) $this->groups,
- Arr::wrap($group)
- );
- }
-
- return $this;
- }
-
- /**
- * Add a raw groupBy clause to the query.
- *
- * @param string $sql
- * @param array $bindings
- * @return $this
- */
- public function groupByRaw($sql, array $bindings = [])
- {
- $this->groups[] = new Expression($sql);
-
- $this->addBinding($bindings, 'groupBy');
-
- return $this;
- }
-
- /**
- * Add a "having" clause to the query.
- *
- * @param string $column
- * @param string|null $operator
- * @param string|null $value
- * @param string $boolean
- * @return $this
- */
- public function having($column, $operator = null, $value = null, $boolean = 'and')
- {
- $type = 'Basic';
-
- // Here we will make some assumptions about the operator. If only 2 values are
- // passed to the method, we will assume that the operator is an equals sign
- // and keep going. Otherwise, we'll require the operator to be passed in.
- [$value, $operator] = $this->prepareValueAndOperator(
- $value, $operator, func_num_args() === 2
- );
-
- // If the given operator is not found in the list of valid operators we will
- // assume that the developer is just short-cutting the '=' operators and
- // we will set the operators to '=' and set the values appropriately.
- if ($this->invalidOperator($operator)) {
- [$value, $operator] = [$operator, '='];
- }
-
- $this->havings[] = compact('type', 'column', 'operator', 'value', 'boolean');
-
- if (! $value instanceof Expression) {
- $this->addBinding($this->flattenValue($value), 'having');
- }
-
- return $this;
- }
-
- /**
- * Add an "or having" clause to the query.
- *
- * @param string $column
- * @param string|null $operator
- * @param string|null $value
- * @return $this
- */
- public function orHaving($column, $operator = null, $value = null)
- {
- [$value, $operator] = $this->prepareValueAndOperator(
- $value, $operator, func_num_args() === 2
- );
-
- return $this->having($column, $operator, $value, 'or');
- }
-
- /**
- * Add a "having between " clause to the query.
- *
- * @param string $column
- * @param array $values
- * @param string $boolean
- * @param bool $not
- * @return $this
- */
- public function havingBetween($column, array $values, $boolean = 'and', $not = false)
- {
- $type = 'between';
-
- $this->havings[] = compact('type', 'column', 'values', 'boolean', 'not');
-
- $this->addBinding(array_slice($this->cleanBindings(Arr::flatten($values)), 0, 2), 'having');
-
- return $this;
- }
-
- /**
- * Add a raw having clause to the query.
- *
- * @param string $sql
- * @param array $bindings
- * @param string $boolean
- * @return $this
- */
- public function havingRaw($sql, array $bindings = [], $boolean = 'and')
- {
- $type = 'Raw';
-
- $this->havings[] = compact('type', 'sql', 'boolean');
-
- $this->addBinding($bindings, 'having');
-
- return $this;
- }
-
- /**
- * Add a raw or having clause to the query.
- *
- * @param string $sql
- * @param array $bindings
- * @return $this
- */
- public function orHavingRaw($sql, array $bindings = [])
- {
- return $this->havingRaw($sql, $bindings, 'or');
- }
-
- /**
- * Add an "order by" clause to the query.
- *
- * @param \Closure|\Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Query\Builder|\Illuminate\Database\Query\Expression|string $column
- * @param string $direction
- * @return $this
- *
- * @throws \InvalidArgumentException
- */
- public function orderBy($column, $direction = 'asc')
- {
- if ($this->isQueryable($column)) {
- [$query, $bindings] = $this->createSub($column);
-
- $column = new Expression('('.$query.')');
-
- $this->addBinding($bindings, $this->unions ? 'unionOrder' : 'order');
- }
-
- $direction = strtolower($direction);
-
- if (! in_array($direction, ['asc', 'desc'], true)) {
- throw new InvalidArgumentException('Order direction must be "asc" or "desc".');
- }
-
- $this->{$this->unions ? 'unionOrders' : 'orders'}[] = [
- 'column' => $column,
- 'direction' => $direction,
- ];
-
- return $this;
- }
-
- /**
- * Add a descending "order by" clause to the query.
- *
- * @param \Closure|\Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Query\Builder|\Illuminate\Database\Query\Expression|string $column
- * @return $this
- */
- public function orderByDesc($column)
- {
- return $this->orderBy($column, 'desc');
- }
-
- /**
- * Add an "order by" clause for a timestamp to the query.
- *
- * @param \Closure|\Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Query\Builder|\Illuminate\Database\Query\Expression|string $column
- * @return $this
- */
- public function latest($column = 'created_at')
- {
- return $this->orderBy($column, 'desc');
- }
-
- /**
- * Add an "order by" clause for a timestamp to the query.
- *
- * @param \Closure|\Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Query\Builder|\Illuminate\Database\Query\Expression|string $column
- * @return $this
- */
- public function oldest($column = 'created_at')
- {
- return $this->orderBy($column, 'asc');
- }
-
- /**
- * Put the query's results in random order.
- *
- * @param string $seed
- * @return $this
- */
- public function inRandomOrder($seed = '')
- {
- return $this->orderByRaw($this->grammar->compileRandom($seed));
- }
-
- /**
- * Add a raw "order by" clause to the query.
- *
- * @param string $sql
- * @param array $bindings
- * @return $this
- */
- public function orderByRaw($sql, $bindings = [])
- {
- $type = 'Raw';
-
- $this->{$this->unions ? 'unionOrders' : 'orders'}[] = compact('type', 'sql');
-
- $this->addBinding($bindings, $this->unions ? 'unionOrder' : 'order');
-
- return $this;
- }
-
- /**
- * Alias to set the "offset" value of the query.
- *
- * @param int $value
- * @return $this
- */
- public function skip($value)
- {
- return $this->offset($value);
- }
-
- /**
- * Set the "offset" value of the query.
- *
- * @param int $value
- * @return $this
- */
- public function offset($value)
- {
- $property = $this->unions ? 'unionOffset' : 'offset';
-
- $this->$property = max(0, (int) $value);
-
- return $this;
- }
-
- /**
- * Alias to set the "limit" value of the query.
- *
- * @param int $value
- * @return $this
- */
- public function take($value)
- {
- return $this->limit($value);
- }
-
- /**
- * Set the "limit" value of the query.
- *
- * @param int $value
- * @return $this
- */
- public function limit($value)
- {
- $property = $this->unions ? 'unionLimit' : 'limit';
-
- if ($value >= 0) {
- $this->$property = $value;
- }
-
- return $this;
- }
-
- /**
- * Set the limit and offset for a given page.
- *
- * @param int $page
- * @param int $perPage
- * @return $this
- */
- public function forPage($page, $perPage = 15)
- {
- return $this->offset(($page - 1) * $perPage)->limit($perPage);
- }
-
- /**
- * Constrain the query to the previous "page" of results before a given ID.
- *
- * @param int $perPage
- * @param int|null $lastId
- * @param string $column
- * @return $this
- */
- public function forPageBeforeId($perPage = 15, $lastId = 0, $column = 'id')
- {
- $this->orders = $this->removeExistingOrdersFor($column);
-
- if (! is_null($lastId)) {
- $this->where($column, '<', $lastId);
- }
-
- return $this->orderBy($column, 'desc')
- ->limit($perPage);
- }
-
- /**
- * Constrain the query to the next "page" of results after a given ID.
- *
- * @param int $perPage
- * @param int|null $lastId
- * @param string $column
- * @return $this
- */
- public function forPageAfterId($perPage = 15, $lastId = 0, $column = 'id')
- {
- $this->orders = $this->removeExistingOrdersFor($column);
-
- if (! is_null($lastId)) {
- $this->where($column, '>', $lastId);
- }
-
- return $this->orderBy($column, 'asc')
- ->limit($perPage);
- }
-
- /**
- * Remove all existing orders and optionally add a new order.
- *
- * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Query\Expression|string|null $column
- * @param string $direction
- * @return $this
- */
- public function reorder($column = null, $direction = 'asc')
- {
- $this->orders = null;
- $this->unionOrders = null;
- $this->bindings['order'] = [];
- $this->bindings['unionOrder'] = [];
-
- if ($column) {
- return $this->orderBy($column, $direction);
- }
-
- return $this;
- }
-
- /**
- * Get an array with all orders with a given column removed.
- *
- * @param string $column
- * @return array
- */
- protected function removeExistingOrdersFor($column)
- {
- return Collection::make($this->orders)
- ->reject(function ($order) use ($column) {
- return isset($order['column'])
- ? $order['column'] === $column : false;
- })->values()->all();
- }
-
- /**
- * Add a union statement to the query.
- *
- * @param \Illuminate\Database\Query\Builder|\Closure $query
- * @param bool $all
- * @return $this
- */
- public function union($query, $all = false)
- {
- if ($query instanceof Closure) {
- call_user_func($query, $query = $this->newQuery());
- }
-
- $this->unions[] = compact('query', 'all');
-
- $this->addBinding($query->getBindings(), 'union');
-
- return $this;
- }
-
- /**
- * Add a union all statement to the query.
- *
- * @param \Illuminate\Database\Query\Builder|\Closure $query
- * @return $this
- */
- public function unionAll($query)
- {
- return $this->union($query, true);
- }
-
- /**
- * Lock the selected rows in the table.
- *
- * @param string|bool $value
- * @return $this
- */
- public function lock($value = true)
- {
- $this->lock = $value;
-
- if (! is_null($this->lock)) {
- $this->useWritePdo();
- }
-
- return $this;
- }
-
- /**
- * Lock the selected rows in the table for updating.
- *
- * @return \Illuminate\Database\Query\Builder
- */
- public function lockForUpdate()
- {
- return $this->lock(true);
- }
-
- /**
- * Share lock the selected rows in the table.
- *
- * @return \Illuminate\Database\Query\Builder
- */
- public function sharedLock()
- {
- return $this->lock(false);
- }
-
- /**
- * Register a closure to be invoked before the query is executed.
- *
- * @param callable $callback
- * @return $this
- */
- public function beforeQuery(callable $callback)
- {
- $this->beforeQueryCallbacks[] = $callback;
-
- return $this;
- }
-
- /**
- * Invoke the "before query" modification callbacks.
- *
- * @return void
- */
- public function applyBeforeQueryCallbacks()
- {
- foreach ($this->beforeQueryCallbacks as $callback) {
- $callback($this);
- }
-
- $this->beforeQueryCallbacks = [];
- }
-
- /**
- * Get the SQL representation of the query.
- *
- * @return string
- */
- public function toSql()
- {
- $this->applyBeforeQueryCallbacks();
-
- return $this->grammar->compileSelect($this);
- }
-
- /**
- * Execute a query for a single record by ID.
- *
- * @param int|string $id
- * @param array $columns
- * @return mixed|static
- */
- public function find($id, $columns = ['*'])
- {
- return $this->where('id', '=', $id)->first($columns);
- }
-
- /**
- * Get a single column's value from the first result of a query.
- *
- * @param string $column
- * @return mixed
- */
- public function value($column)
- {
- $result = (array) $this->first([$column]);
-
- return count($result) > 0 ? reset($result) : null;
- }
-
- /**
- * Execute the query as a "select" statement.
- *
- * @param array|string $columns
- * @return \Illuminate\Support\Collection
- */
- public function get($columns = ['*'])
- {
- return collect($this->onceWithColumns(Arr::wrap($columns), function () {
- return $this->processor->processSelect($this, $this->runSelect());
- }));
- }
-
- /**
- * Run the query as a "select" statement against the connection.
- *
- * @return array
- */
- protected function runSelect()
- {
- return $this->connection->select(
- $this->toSql(), $this->getBindings(), ! $this->useWritePdo
- );
- }
-
- /**
- * Paginate the given query into a simple paginator.
- *
- * @param int $perPage
- * @param array $columns
- * @param string $pageName
- * @param int|null $page
- * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator
- */
- public function paginate($perPage = 15, $columns = ['*'], $pageName = 'page', $page = null)
- {
- $page = $page ?: Paginator::resolveCurrentPage($pageName);
-
- $total = $this->getCountForPagination();
-
- $results = $total ? $this->forPage($page, $perPage)->get($columns) : collect();
-
- return $this->paginator($results, $total, $perPage, $page, [
- 'path' => Paginator::resolveCurrentPath(),
- 'pageName' => $pageName,
- ]);
- }
-
- /**
- * Get a paginator only supporting simple next and previous links.
- *
- * This is more efficient on larger data-sets, etc.
- *
- * @param int $perPage
- * @param array $columns
- * @param string $pageName
- * @param int|null $page
- * @return \Illuminate\Contracts\Pagination\Paginator
- */
- public function simplePaginate($perPage = 15, $columns = ['*'], $pageName = 'page', $page = null)
- {
- $page = $page ?: Paginator::resolveCurrentPage($pageName);
-
- $this->offset(($page - 1) * $perPage)->limit($perPage + 1);
-
- return $this->simplePaginator($this->get($columns), $perPage, $page, [
- 'path' => Paginator::resolveCurrentPath(),
- 'pageName' => $pageName,
- ]);
- }
-
- /**
- * Get a paginator only supporting simple next and previous links.
- *
- * This is more efficient on larger data-sets, etc.
- *
- * @param int|null $perPage
- * @param array $columns
- * @param string $cursorName
- * @param \Illuminate\Pagination\Cursor|string|null $cursor
- * @return \Illuminate\Contracts\Pagination\CursorPaginator
- */
- public function cursorPaginate($perPage = 15, $columns = ['*'], $cursorName = 'cursor', $cursor = null)
- {
- return $this->paginateUsingCursor($perPage, $columns, $cursorName, $cursor);
- }
-
- /**
- * Ensure the proper order by required for cursor pagination.
- *
- * @param bool $shouldReverse
- * @return \Illuminate\Support\Collection
- */
- protected function ensureOrderForCursorPagination($shouldReverse = false)
- {
- $this->enforceOrderBy();
-
- if ($shouldReverse) {
- $this->orders = collect($this->orders)->map(function ($order) {
- $order['direction'] = $order['direction'] === 'asc' ? 'desc' : 'asc';
-
- return $order;
- })->toArray();
- }
-
- return collect($this->orders);
- }
-
- /**
- * Get the count of the total records for the paginator.
- *
- * @param array $columns
- * @return int
- */
- public function getCountForPagination($columns = ['*'])
- {
- $results = $this->runPaginationCountQuery($columns);
-
- // Once we have run the pagination count query, we will get the resulting count and
- // take into account what type of query it was. When there is a group by we will
- // just return the count of the entire results set since that will be correct.
- if (! isset($results[0])) {
- return 0;
- } elseif (is_object($results[0])) {
- return (int) $results[0]->aggregate;
- }
-
- return (int) array_change_key_case((array) $results[0])['aggregate'];
- }
-
- /**
- * Run a pagination count query.
- *
- * @param array $columns
- * @return array
- */
- protected function runPaginationCountQuery($columns = ['*'])
- {
- if ($this->groups || $this->havings) {
- $clone = $this->cloneForPaginationCount();
-
- if (is_null($clone->columns) && ! empty($this->joins)) {
- $clone->select($this->from.'.*');
- }
-
- return $this->newQuery()
- ->from(new Expression('('.$clone->toSql().') as '.$this->grammar->wrap('aggregate_table')))
- ->mergeBindings($clone)
- ->setAggregate('count', $this->withoutSelectAliases($columns))
- ->get()->all();
- }
-
- $without = $this->unions ? ['orders', 'limit', 'offset'] : ['columns', 'orders', 'limit', 'offset'];
-
- return $this->cloneWithout($without)
- ->cloneWithoutBindings($this->unions ? ['order'] : ['select', 'order'])
- ->setAggregate('count', $this->withoutSelectAliases($columns))
- ->get()->all();
- }
-
- /**
- * Clone the existing query instance for usage in a pagination subquery.
- *
- * @return self
- */
- protected function cloneForPaginationCount()
- {
- return $this->cloneWithout(['orders', 'limit', 'offset'])
- ->cloneWithoutBindings(['order']);
- }
-
- /**
- * Remove the column aliases since they will break count queries.
- *
- * @param array $columns
- * @return array
- */
- protected function withoutSelectAliases(array $columns)
- {
- return array_map(function ($column) {
- return is_string($column) && ($aliasPosition = stripos($column, ' as ')) !== false
- ? substr($column, 0, $aliasPosition) : $column;
- }, $columns);
- }
-
- /**
- * Get a lazy collection for the given query.
- *
- * @return \Illuminate\Support\LazyCollection
- */
- public function cursor()
- {
- if (is_null($this->columns)) {
- $this->columns = ['*'];
- }
-
- return new LazyCollection(function () {
- yield from $this->connection->cursor(
- $this->toSql(), $this->getBindings(), ! $this->useWritePdo
- );
- });
- }
-
- /**
- * Throw an exception if the query doesn't have an orderBy clause.
- *
- * @return void
- *
- * @throws \RuntimeException
- */
- protected function enforceOrderBy()
- {
- if (empty($this->orders) && empty($this->unionOrders)) {
- throw new RuntimeException('You must specify an orderBy clause when using this function.');
- }
- }
-
- /**
- * Get a collection instance containing the values of a given column.
- *
- * @param string $column
- * @param string|null $key
- * @return \Illuminate\Support\Collection
- */
- public function pluck($column, $key = null)
- {
- // First, we will need to select the results of the query accounting for the
- // given columns / key. Once we have the results, we will be able to take
- // the results and get the exact data that was requested for the query.
- $queryResult = $this->onceWithColumns(
- is_null($key) ? [$column] : [$column, $key],
- function () {
- return $this->processor->processSelect(
- $this, $this->runSelect()
- );
- }
- );
-
- if (empty($queryResult)) {
- return collect();
- }
-
- // If the columns are qualified with a table or have an alias, we cannot use
- // those directly in the "pluck" operations since the results from the DB
- // are only keyed by the column itself. We'll strip the table out here.
- $column = $this->stripTableForPluck($column);
-
- $key = $this->stripTableForPluck($key);
-
- return is_array($queryResult[0])
- ? $this->pluckFromArrayColumn($queryResult, $column, $key)
- : $this->pluckFromObjectColumn($queryResult, $column, $key);
- }
-
- /**
- * Strip off the table name or alias from a column identifier.
- *
- * @param string $column
- * @return string|null
- */
- protected function stripTableForPluck($column)
- {
- if (is_null($column)) {
- return $column;
- }
-
- $separator = strpos(strtolower($column), ' as ') !== false ? ' as ' : '\.';
-
- return last(preg_split('~'.$separator.'~i', $column));
- }
-
- /**
- * Retrieve column values from rows represented as objects.
- *
- * @param array $queryResult
- * @param string $column
- * @param string $key
- * @return \Illuminate\Support\Collection
- */
- protected function pluckFromObjectColumn($queryResult, $column, $key)
- {
- $results = [];
-
- if (is_null($key)) {
- foreach ($queryResult as $row) {
- $results[] = $row->$column;
- }
- } else {
- foreach ($queryResult as $row) {
- $results[$row->$key] = $row->$column;
- }
- }
-
- return collect($results);
- }
-
- /**
- * Retrieve column values from rows represented as arrays.
- *
- * @param array $queryResult
- * @param string $column
- * @param string $key
- * @return \Illuminate\Support\Collection
- */
- protected function pluckFromArrayColumn($queryResult, $column, $key)
- {
- $results = [];
-
- if (is_null($key)) {
- foreach ($queryResult as $row) {
- $results[] = $row[$column];
- }
- } else {
- foreach ($queryResult as $row) {
- $results[$row[$key]] = $row[$column];
- }
- }
-
- return collect($results);
- }
-
- /**
- * Concatenate values of a given column as a string.
- *
- * @param string $column
- * @param string $glue
- * @return string
- */
- public function implode($column, $glue = '')
- {
- return $this->pluck($column)->implode($glue);
- }
-
- /**
- * Determine if any rows exist for the current query.
- *
- * @return bool
- */
- public function exists()
- {
- $this->applyBeforeQueryCallbacks();
-
- $results = $this->connection->select(
- $this->grammar->compileExists($this), $this->getBindings(), ! $this->useWritePdo
- );
-
- // If the results has rows, we will get the row and see if the exists column is a
- // boolean true. If there is no results for this query we will return false as
- // there are no rows for this query at all and we can return that info here.
- if (isset($results[0])) {
- $results = (array) $results[0];
-
- return (bool) $results['exists'];
- }
-
- return false;
- }
-
- /**
- * Determine if no rows exist for the current query.
- *
- * @return bool
- */
- public function doesntExist()
- {
- return ! $this->exists();
- }
-
- /**
- * Execute the given callback if no rows exist for the current query.
- *
- * @param \Closure $callback
- * @return mixed
- */
- public function existsOr(Closure $callback)
- {
- return $this->exists() ? true : $callback();
- }
-
- /**
- * Execute the given callback if rows exist for the current query.
- *
- * @param \Closure $callback
- * @return mixed
- */
- public function doesntExistOr(Closure $callback)
- {
- return $this->doesntExist() ? true : $callback();
- }
-
- /**
- * Retrieve the "count" result of the query.
- *
- * @param string $columns
- * @return int
- */
- public function count($columns = '*')
- {
- return (int) $this->aggregate(__FUNCTION__, Arr::wrap($columns));
- }
-
- /**
- * Retrieve the minimum value of a given column.
- *
- * @param string $column
- * @return mixed
- */
- public function min($column)
- {
- return $this->aggregate(__FUNCTION__, [$column]);
- }
-
- /**
- * Retrieve the maximum value of a given column.
- *
- * @param string $column
- * @return mixed
- */
- public function max($column)
- {
- return $this->aggregate(__FUNCTION__, [$column]);
- }
-
- /**
- * Retrieve the sum of the values of a given column.
- *
- * @param string $column
- * @return mixed
- */
- public function sum($column)
- {
- $result = $this->aggregate(__FUNCTION__, [$column]);
-
- return $result ?: 0;
- }
-
- /**
- * Retrieve the average of the values of a given column.
- *
- * @param string $column
- * @return mixed
- */
- public function avg($column)
- {
- return $this->aggregate(__FUNCTION__, [$column]);
- }
-
- /**
- * Alias for the "avg" method.
- *
- * @param string $column
- * @return mixed
- */
- public function average($column)
- {
- return $this->avg($column);
- }
-
- /**
- * Execute an aggregate function on the database.
- *
- * @param string $function
- * @param array $columns
- * @return mixed
- */
- public function aggregate($function, $columns = ['*'])
- {
- $results = $this->cloneWithout($this->unions || $this->havings ? [] : ['columns'])
- ->cloneWithoutBindings($this->unions || $this->havings ? [] : ['select'])
- ->setAggregate($function, $columns)
- ->get($columns);
-
- if (! $results->isEmpty()) {
- return array_change_key_case((array) $results[0])['aggregate'];
- }
- }
-
- /**
- * Execute a numeric aggregate function on the database.
- *
- * @param string $function
- * @param array $columns
- * @return float|int
- */
- public function numericAggregate($function, $columns = ['*'])
- {
- $result = $this->aggregate($function, $columns);
-
- // If there is no result, we can obviously just return 0 here. Next, we will check
- // if the result is an integer or float. If it is already one of these two data
- // types we can just return the result as-is, otherwise we will convert this.
- if (! $result) {
- return 0;
- }
-
- if (is_int($result) || is_float($result)) {
- return $result;
- }
-
- // If the result doesn't contain a decimal place, we will assume it is an int then
- // cast it to one. When it does we will cast it to a float since it needs to be
- // cast to the expected data type for the developers out of pure convenience.
- return strpos((string) $result, '.') === false
- ? (int) $result : (float) $result;
- }
-
- /**
- * Set the aggregate property without running the query.
- *
- * @param string $function
- * @param array $columns
- * @return $this
- */
- protected function setAggregate($function, $columns)
- {
- $this->aggregate = compact('function', 'columns');
-
- if (empty($this->groups)) {
- $this->orders = null;
-
- $this->bindings['order'] = [];
- }
-
- return $this;
- }
-
- /**
- * Execute the given callback while selecting the given columns.
- *
- * After running the callback, the columns are reset to the original value.
- *
- * @param array $columns
- * @param callable $callback
- * @return mixed
- */
- protected function onceWithColumns($columns, $callback)
- {
- $original = $this->columns;
-
- if (is_null($original)) {
- $this->columns = $columns;
- }
-
- $result = $callback();
-
- $this->columns = $original;
-
- return $result;
- }
-
- /**
- * Insert new records into the database.
- *
- * @param array $values
- * @return bool
- */
- public function insert(array $values)
- {
- // Since every insert gets treated like a batch insert, we will make sure the
- // bindings are structured in a way that is convenient when building these
- // inserts statements by verifying these elements are actually an array.
- if (empty($values)) {
- return true;
- }
-
- if (! is_array(reset($values))) {
- $values = [$values];
- }
-
- // Here, we will sort the insert keys for every record so that each insert is
- // in the same order for the record. We need to make sure this is the case
- // so there are not any errors or problems when inserting these records.
- else {
- foreach ($values as $key => $value) {
- ksort($value);
-
- $values[$key] = $value;
- }
- }
-
- $this->applyBeforeQueryCallbacks();
-
- // Finally, we will run this query against the database connection and return
- // the results. We will need to also flatten these bindings before running
- // the query so they are all in one huge, flattened array for execution.
- return $this->connection->insert(
- $this->grammar->compileInsert($this, $values),
- $this->cleanBindings(Arr::flatten($values, 1))
- );
- }
-
- /**
- * Insert new records into the database while ignoring errors.
- *
- * @param array $values
- * @return int
- */
- public function insertOrIgnore(array $values)
- {
- if (empty($values)) {
- return 0;
- }
-
- if (! is_array(reset($values))) {
- $values = [$values];
- } else {
- foreach ($values as $key => $value) {
- ksort($value);
- $values[$key] = $value;
- }
- }
-
- $this->applyBeforeQueryCallbacks();
-
- return $this->connection->affectingStatement(
- $this->grammar->compileInsertOrIgnore($this, $values),
- $this->cleanBindings(Arr::flatten($values, 1))
- );
- }
-
- /**
- * Insert a new record and get the value of the primary key.
- *
- * @param array $values
- * @param string|null $sequence
- * @return int
- */
- public function insertGetId(array $values, $sequence = null)
- {
- $this->applyBeforeQueryCallbacks();
-
- $sql = $this->grammar->compileInsertGetId($this, $values, $sequence);
-
- $values = $this->cleanBindings($values);
-
- return $this->processor->processInsertGetId($this, $sql, $values, $sequence);
- }
-
- /**
- * Insert new records into the table using a subquery.
- *
- * @param array $columns
- * @param \Closure|\Illuminate\Database\Query\Builder|string $query
- * @return int
- */
- public function insertUsing(array $columns, $query)
- {
- $this->applyBeforeQueryCallbacks();
-
- [$sql, $bindings] = $this->createSub($query);
-
- return $this->connection->affectingStatement(
- $this->grammar->compileInsertUsing($this, $columns, $sql),
- $this->cleanBindings($bindings)
- );
- }
-
- /**
- * Update records in the database.
- *
- * @param array $values
- * @return int
- */
- public function update(array $values)
- {
- $this->applyBeforeQueryCallbacks();
-
- $sql = $this->grammar->compileUpdate($this, $values);
-
- return $this->connection->update($sql, $this->cleanBindings(
- $this->grammar->prepareBindingsForUpdate($this->bindings, $values)
- ));
- }
-
- /**
- * Update records in a PostgreSQL database using the update from syntax.
- *
- * @param array $values
- * @return int
- */
- public function updateFrom(array $values)
- {
- if (! method_exists($this->grammar, 'compileUpdateFrom')) {
- throw new LogicException('This database engine does not support the updateFrom method.');
- }
-
- $this->applyBeforeQueryCallbacks();
-
- $sql = $this->grammar->compileUpdateFrom($this, $values);
-
- return $this->connection->update($sql, $this->cleanBindings(
- $this->grammar->prepareBindingsForUpdateFrom($this->bindings, $values)
- ));
- }
-
- /**
- * Insert or update a record matching the attributes, and fill it with values.
- *
- * @param array $attributes
- * @param array $values
- * @return bool
- */
- public function updateOrInsert(array $attributes, array $values = [])
- {
- if (! $this->where($attributes)->exists()) {
- return $this->insert(array_merge($attributes, $values));
- }
-
- if (empty($values)) {
- return true;
- }
-
- return (bool) $this->limit(1)->update($values);
- }
-
- /**
- * Insert new records or update the existing ones.
- *
- * @param array $values
- * @param array|string $uniqueBy
- * @param array|null $update
- * @return int
- */
- public function upsert(array $values, $uniqueBy, $update = null)
- {
- if (empty($values)) {
- return 0;
- } elseif ($update === []) {
- return (int) $this->insert($values);
- }
-
- if (! is_array(reset($values))) {
- $values = [$values];
- } else {
- foreach ($values as $key => $value) {
- ksort($value);
-
- $values[$key] = $value;
- }
- }
-
- if (is_null($update)) {
- $update = array_keys(reset($values));
- }
-
- $this->applyBeforeQueryCallbacks();
-
- $bindings = $this->cleanBindings(array_merge(
- Arr::flatten($values, 1),
- collect($update)->reject(function ($value, $key) {
- return is_int($key);
- })->all()
- ));
-
- return $this->connection->affectingStatement(
- $this->grammar->compileUpsert($this, $values, (array) $uniqueBy, $update),
- $bindings
- );
- }
-
- /**
- * Increment a column's value by a given amount.
- *
- * @param string $column
- * @param float|int $amount
- * @param array $extra
- * @return int
- *
- * @throws \InvalidArgumentException
- */
- public function increment($column, $amount = 1, array $extra = [])
- {
- if (! is_numeric($amount)) {
- throw new InvalidArgumentException('Non-numeric value passed to increment method.');
- }
-
- $wrapped = $this->grammar->wrap($column);
-
- $columns = array_merge([$column => $this->raw("$wrapped + $amount")], $extra);
-
- return $this->update($columns);
- }
-
- /**
- * Decrement a column's value by a given amount.
- *
- * @param string $column
- * @param float|int $amount
- * @param array $extra
- * @return int
- *
- * @throws \InvalidArgumentException
- */
- public function decrement($column, $amount = 1, array $extra = [])
- {
- if (! is_numeric($amount)) {
- throw new InvalidArgumentException('Non-numeric value passed to decrement method.');
- }
-
- $wrapped = $this->grammar->wrap($column);
-
- $columns = array_merge([$column => $this->raw("$wrapped - $amount")], $extra);
-
- return $this->update($columns);
- }
-
- /**
- * Delete records from the database.
- *
- * @param mixed $id
- * @return int
- */
- public function delete($id = null)
- {
- // If an ID is passed to the method, we will set the where clause to check the
- // ID to let developers to simply and quickly remove a single row from this
- // database without manually specifying the "where" clauses on the query.
- if (! is_null($id)) {
- $this->where($this->from.'.id', '=', $id);
- }
-
- $this->applyBeforeQueryCallbacks();
-
- return $this->connection->delete(
- $this->grammar->compileDelete($this), $this->cleanBindings(
- $this->grammar->prepareBindingsForDelete($this->bindings)
- )
- );
- }
-
- /**
- * Run a truncate statement on the table.
- *
- * @return void
- */
- public function truncate()
- {
- $this->applyBeforeQueryCallbacks();
-
- foreach ($this->grammar->compileTruncate($this) as $sql => $bindings) {
- $this->connection->statement($sql, $bindings);
- }
- }
-
- /**
- * Get a new instance of the query builder.
- *
- * @return \Illuminate\Database\Query\Builder
- */
- public function newQuery()
- {
- return new static($this->connection, $this->grammar, $this->processor);
- }
-
- /**
- * Create a new query instance for a sub-query.
- *
- * @return \Illuminate\Database\Query\Builder
- */
- protected function forSubQuery()
- {
- return $this->newQuery();
- }
-
- /**
- * Create a raw database expression.
- *
- * @param mixed $value
- * @return \Illuminate\Database\Query\Expression
- */
- public function raw($value)
- {
- return $this->connection->raw($value);
- }
-
- /**
- * Get the current query value bindings in a flattened array.
- *
- * @return array
- */
- public function getBindings()
- {
- return Arr::flatten($this->bindings);
- }
-
- /**
- * Get the raw array of bindings.
- *
- * @return array
- */
- public function getRawBindings()
- {
- return $this->bindings;
- }
-
- /**
- * Set the bindings on the query builder.
- *
- * @param array $bindings
- * @param string $type
- * @return $this
- *
- * @throws \InvalidArgumentException
- */
- public function setBindings(array $bindings, $type = 'where')
- {
- if (! array_key_exists($type, $this->bindings)) {
- throw new InvalidArgumentException("Invalid binding type: {$type}.");
- }
-
- $this->bindings[$type] = $bindings;
-
- return $this;
- }
-
- /**
- * Add a binding to the query.
- *
- * @param mixed $value
- * @param string $type
- * @return $this
- *
- * @throws \InvalidArgumentException
- */
- public function addBinding($value, $type = 'where')
- {
- if (! array_key_exists($type, $this->bindings)) {
- throw new InvalidArgumentException("Invalid binding type: {$type}.");
- }
-
- if (is_array($value)) {
- $this->bindings[$type] = array_values(array_merge($this->bindings[$type], $value));
- } else {
- $this->bindings[$type][] = $value;
- }
-
- return $this;
- }
-
- /**
- * Merge an array of bindings into our bindings.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @return $this
- */
- public function mergeBindings(self $query)
- {
- $this->bindings = array_merge_recursive($this->bindings, $query->bindings);
-
- return $this;
- }
-
- /**
- * Remove all of the expressions from a list of bindings.
- *
- * @param array $bindings
- * @return array
- */
- public function cleanBindings(array $bindings)
- {
- return array_values(array_filter($bindings, function ($binding) {
- return ! $binding instanceof Expression;
- }));
- }
-
- /**
- * Get a scalar type value from an unknown type of input.
- *
- * @param mixed $value
- * @return mixed
- */
- protected function flattenValue($value)
- {
- return is_array($value) ? head(Arr::flatten($value)) : $value;
- }
-
- /**
- * Get the default key name of the table.
- *
- * @return string
- */
- protected function defaultKeyName()
- {
- return 'id';
- }
-
- /**
- * Get the database connection instance.
- *
- * @return \Illuminate\Database\ConnectionInterface
- */
- public function getConnection()
- {
- return $this->connection;
- }
-
- /**
- * Get the database query processor instance.
- *
- * @return \Illuminate\Database\Query\Processors\Processor
- */
- public function getProcessor()
- {
- return $this->processor;
- }
-
- /**
- * Get the query grammar instance.
- *
- * @return \Illuminate\Database\Query\Grammars\Grammar
- */
- public function getGrammar()
- {
- return $this->grammar;
- }
-
- /**
- * Use the write pdo for query.
- *
- * @return $this
- */
- public function useWritePdo()
- {
- $this->useWritePdo = true;
-
- return $this;
- }
-
- /**
- * Determine if the value is a query builder instance or a Closure.
- *
- * @param mixed $value
- * @return bool
- */
- protected function isQueryable($value)
- {
- return $value instanceof self ||
- $value instanceof EloquentBuilder ||
- $value instanceof Relation ||
- $value instanceof Closure;
- }
-
- /**
- * Clone the query.
- *
- * @return static
- */
- public function clone()
- {
- return clone $this;
- }
-
- /**
- * Clone the query without the given properties.
- *
- * @param array $properties
- * @return static
- */
- public function cloneWithout(array $properties)
- {
- return tap($this->clone(), function ($clone) use ($properties) {
- foreach ($properties as $property) {
- $clone->{$property} = null;
- }
- });
- }
-
- /**
- * Clone the query without the given bindings.
- *
- * @param array $except
- * @return static
- */
- public function cloneWithoutBindings(array $except)
- {
- return tap($this->clone(), function ($clone) use ($except) {
- foreach ($except as $type) {
- $clone->bindings[$type] = [];
- }
- });
- }
-
- /**
- * Dump the current SQL and bindings.
- *
- * @return $this
- */
- public function dump()
- {
- dump($this->toSql(), $this->getBindings());
-
- return $this;
- }
-
- /**
- * Die and dump the current SQL and bindings.
- *
- * @return never
- */
- public function dd()
- {
- dd($this->toSql(), $this->getBindings());
- }
-
- /**
- * Handle dynamic method calls into the method.
- *
- * @param string $method
- * @param array $parameters
- * @return mixed
- *
- * @throws \BadMethodCallException
- */
- public function __call($method, $parameters)
- {
- if (static::hasMacro($method)) {
- return $this->macroCall($method, $parameters);
- }
-
- if (Str::startsWith($method, 'where')) {
- return $this->dynamicWhere($method, $parameters);
- }
-
- static::throwBadMethodCallException($method);
- }
-}
diff --git a/vendor/illuminate/database/Query/Expression.php b/vendor/illuminate/database/Query/Expression.php
deleted file mode 100755
index de690299..00000000
--- a/vendor/illuminate/database/Query/Expression.php
+++ /dev/null
@@ -1,44 +0,0 @@
-value = $value;
- }
-
- /**
- * Get the value of the expression.
- *
- * @return mixed
- */
- public function getValue()
- {
- return $this->value;
- }
-
- /**
- * Get the value of the expression.
- *
- * @return string
- */
- public function __toString()
- {
- return (string) $this->getValue();
- }
-}
diff --git a/vendor/illuminate/database/Query/Grammars/Grammar.php b/vendor/illuminate/database/Query/Grammars/Grammar.php
deleted file mode 100755
index 2f7d0721..00000000
--- a/vendor/illuminate/database/Query/Grammars/Grammar.php
+++ /dev/null
@@ -1,1287 +0,0 @@
-unions || $query->havings) && $query->aggregate) {
- return $this->compileUnionAggregate($query);
- }
-
- // If the query does not have any columns set, we'll set the columns to the
- // * character to just get all of the columns from the database. Then we
- // can build the query and concatenate all the pieces together as one.
- $original = $query->columns;
-
- if (is_null($query->columns)) {
- $query->columns = ['*'];
- }
-
- // To compile the query, we'll spin through each component of the query and
- // see if that component exists. If it does we'll just call the compiler
- // function for the component which is responsible for making the SQL.
- $sql = trim($this->concatenate(
- $this->compileComponents($query))
- );
-
- if ($query->unions) {
- $sql = $this->wrapUnion($sql).' '.$this->compileUnions($query);
- }
-
- $query->columns = $original;
-
- return $sql;
- }
-
- /**
- * Compile the components necessary for a select clause.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @return array
- */
- protected function compileComponents(Builder $query)
- {
- $sql = [];
-
- foreach ($this->selectComponents as $component) {
- if (isset($query->$component)) {
- $method = 'compile'.ucfirst($component);
-
- $sql[$component] = $this->$method($query, $query->$component);
- }
- }
-
- return $sql;
- }
-
- /**
- * Compile an aggregated select clause.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $aggregate
- * @return string
- */
- protected function compileAggregate(Builder $query, $aggregate)
- {
- $column = $this->columnize($aggregate['columns']);
-
- // If the query has a "distinct" constraint and we're not asking for all columns
- // we need to prepend "distinct" onto the column name so that the query takes
- // it into account when it performs the aggregating operations on the data.
- if (is_array($query->distinct)) {
- $column = 'distinct '.$this->columnize($query->distinct);
- } elseif ($query->distinct && $column !== '*') {
- $column = 'distinct '.$column;
- }
-
- return 'select '.$aggregate['function'].'('.$column.') as aggregate';
- }
-
- /**
- * Compile the "select *" portion of the query.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $columns
- * @return string|null
- */
- protected function compileColumns(Builder $query, $columns)
- {
- // If the query is actually performing an aggregating select, we will let that
- // compiler handle the building of the select clauses, as it will need some
- // more syntax that is best handled by that function to keep things neat.
- if (! is_null($query->aggregate)) {
- return;
- }
-
- if ($query->distinct) {
- $select = 'select distinct ';
- } else {
- $select = 'select ';
- }
-
- return $select.$this->columnize($columns);
- }
-
- /**
- * Compile the "from" portion of the query.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param string $table
- * @return string
- */
- protected function compileFrom(Builder $query, $table)
- {
- return 'from '.$this->wrapTable($table);
- }
-
- /**
- * Compile the "join" portions of the query.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $joins
- * @return string
- */
- protected function compileJoins(Builder $query, $joins)
- {
- return collect($joins)->map(function ($join) use ($query) {
- $table = $this->wrapTable($join->table);
-
- $nestedJoins = is_null($join->joins) ? '' : ' '.$this->compileJoins($query, $join->joins);
-
- $tableAndNestedJoins = is_null($join->joins) ? $table : '('.$table.$nestedJoins.')';
-
- return trim("{$join->type} join {$tableAndNestedJoins} {$this->compileWheres($join)}");
- })->implode(' ');
- }
-
- /**
- * Compile the "where" portions of the query.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @return string
- */
- public function compileWheres(Builder $query)
- {
- // Each type of where clauses has its own compiler function which is responsible
- // for actually creating the where clauses SQL. This helps keep the code nice
- // and maintainable since each clause has a very small method that it uses.
- if (is_null($query->wheres)) {
- return '';
- }
-
- // If we actually have some where clauses, we will strip off the first boolean
- // operator, which is added by the query builders for convenience so we can
- // avoid checking for the first clauses in each of the compilers methods.
- if (count($sql = $this->compileWheresToArray($query)) > 0) {
- return $this->concatenateWhereClauses($query, $sql);
- }
-
- return '';
- }
-
- /**
- * Get an array of all the where clauses for the query.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @return array
- */
- protected function compileWheresToArray($query)
- {
- return collect($query->wheres)->map(function ($where) use ($query) {
- return $where['boolean'].' '.$this->{"where{$where['type']}"}($query, $where);
- })->all();
- }
-
- /**
- * Format the where clause statements into one string.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $sql
- * @return string
- */
- protected function concatenateWhereClauses($query, $sql)
- {
- $conjunction = $query instanceof JoinClause ? 'on' : 'where';
-
- return $conjunction.' '.$this->removeLeadingBoolean(implode(' ', $sql));
- }
-
- /**
- * Compile a raw where clause.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereRaw(Builder $query, $where)
- {
- return $where['sql'];
- }
-
- /**
- * Compile a basic where clause.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereBasic(Builder $query, $where)
- {
- $value = $this->parameter($where['value']);
-
- $operator = str_replace('?', '??', $where['operator']);
-
- return $this->wrap($where['column']).' '.$operator.' '.$value;
- }
-
- /**
- * Compile a "where in" clause.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereIn(Builder $query, $where)
- {
- if (! empty($where['values'])) {
- return $this->wrap($where['column']).' in ('.$this->parameterize($where['values']).')';
- }
-
- return '0 = 1';
- }
-
- /**
- * Compile a "where not in" clause.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereNotIn(Builder $query, $where)
- {
- if (! empty($where['values'])) {
- return $this->wrap($where['column']).' not in ('.$this->parameterize($where['values']).')';
- }
-
- return '1 = 1';
- }
-
- /**
- * Compile a "where not in raw" clause.
- *
- * For safety, whereIntegerInRaw ensures this method is only used with integer values.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereNotInRaw(Builder $query, $where)
- {
- if (! empty($where['values'])) {
- return $this->wrap($where['column']).' not in ('.implode(', ', $where['values']).')';
- }
-
- return '1 = 1';
- }
-
- /**
- * Compile a "where in raw" clause.
- *
- * For safety, whereIntegerInRaw ensures this method is only used with integer values.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereInRaw(Builder $query, $where)
- {
- if (! empty($where['values'])) {
- return $this->wrap($where['column']).' in ('.implode(', ', $where['values']).')';
- }
-
- return '0 = 1';
- }
-
- /**
- * Compile a "where null" clause.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereNull(Builder $query, $where)
- {
- return $this->wrap($where['column']).' is null';
- }
-
- /**
- * Compile a "where not null" clause.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereNotNull(Builder $query, $where)
- {
- return $this->wrap($where['column']).' is not null';
- }
-
- /**
- * Compile a "between" where clause.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereBetween(Builder $query, $where)
- {
- $between = $where['not'] ? 'not between' : 'between';
-
- $min = $this->parameter(reset($where['values']));
-
- $max = $this->parameter(end($where['values']));
-
- return $this->wrap($where['column']).' '.$between.' '.$min.' and '.$max;
- }
-
- /**
- * Compile a "between" where clause.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereBetweenColumns(Builder $query, $where)
- {
- $between = $where['not'] ? 'not between' : 'between';
-
- $min = $this->wrap(reset($where['values']));
-
- $max = $this->wrap(end($where['values']));
-
- return $this->wrap($where['column']).' '.$between.' '.$min.' and '.$max;
- }
-
- /**
- * Compile a "where date" clause.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereDate(Builder $query, $where)
- {
- return $this->dateBasedWhere('date', $query, $where);
- }
-
- /**
- * Compile a "where time" clause.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereTime(Builder $query, $where)
- {
- return $this->dateBasedWhere('time', $query, $where);
- }
-
- /**
- * Compile a "where day" clause.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereDay(Builder $query, $where)
- {
- return $this->dateBasedWhere('day', $query, $where);
- }
-
- /**
- * Compile a "where month" clause.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereMonth(Builder $query, $where)
- {
- return $this->dateBasedWhere('month', $query, $where);
- }
-
- /**
- * Compile a "where year" clause.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereYear(Builder $query, $where)
- {
- return $this->dateBasedWhere('year', $query, $where);
- }
-
- /**
- * Compile a date based where clause.
- *
- * @param string $type
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function dateBasedWhere($type, Builder $query, $where)
- {
- $value = $this->parameter($where['value']);
-
- return $type.'('.$this->wrap($where['column']).') '.$where['operator'].' '.$value;
- }
-
- /**
- * Compile a where clause comparing two columns.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereColumn(Builder $query, $where)
- {
- return $this->wrap($where['first']).' '.$where['operator'].' '.$this->wrap($where['second']);
- }
-
- /**
- * Compile a nested where clause.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereNested(Builder $query, $where)
- {
- // Here we will calculate what portion of the string we need to remove. If this
- // is a join clause query, we need to remove the "on" portion of the SQL and
- // if it is a normal query we need to take the leading "where" of queries.
- $offset = $query instanceof JoinClause ? 3 : 6;
-
- return '('.substr($this->compileWheres($where['query']), $offset).')';
- }
-
- /**
- * Compile a where condition with a sub-select.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereSub(Builder $query, $where)
- {
- $select = $this->compileSelect($where['query']);
-
- return $this->wrap($where['column']).' '.$where['operator']." ($select)";
- }
-
- /**
- * Compile a where exists clause.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereExists(Builder $query, $where)
- {
- return 'exists ('.$this->compileSelect($where['query']).')';
- }
-
- /**
- * Compile a where exists clause.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereNotExists(Builder $query, $where)
- {
- return 'not exists ('.$this->compileSelect($where['query']).')';
- }
-
- /**
- * Compile a where row values condition.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereRowValues(Builder $query, $where)
- {
- $columns = $this->columnize($where['columns']);
-
- $values = $this->parameterize($where['values']);
-
- return '('.$columns.') '.$where['operator'].' ('.$values.')';
- }
-
- /**
- * Compile a "where JSON boolean" clause.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereJsonBoolean(Builder $query, $where)
- {
- $column = $this->wrapJsonBooleanSelector($where['column']);
-
- $value = $this->wrapJsonBooleanValue(
- $this->parameter($where['value'])
- );
-
- return $column.' '.$where['operator'].' '.$value;
- }
-
- /**
- * Compile a "where JSON contains" clause.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereJsonContains(Builder $query, $where)
- {
- $not = $where['not'] ? 'not ' : '';
-
- return $not.$this->compileJsonContains(
- $where['column'], $this->parameter($where['value'])
- );
- }
-
- /**
- * Compile a "JSON contains" statement into SQL.
- *
- * @param string $column
- * @param string $value
- * @return string
- *
- * @throws \RuntimeException
- */
- protected function compileJsonContains($column, $value)
- {
- throw new RuntimeException('This database engine does not support JSON contains operations.');
- }
-
- /**
- * Prepare the binding for a "JSON contains" statement.
- *
- * @param mixed $binding
- * @return string
- */
- public function prepareBindingForJsonContains($binding)
- {
- return json_encode($binding);
- }
-
- /**
- * Compile a "where JSON length" clause.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereJsonLength(Builder $query, $where)
- {
- return $this->compileJsonLength(
- $where['column'], $where['operator'], $this->parameter($where['value'])
- );
- }
-
- /**
- * Compile a "JSON length" statement into SQL.
- *
- * @param string $column
- * @param string $operator
- * @param string $value
- * @return string
- *
- * @throws \RuntimeException
- */
- protected function compileJsonLength($column, $operator, $value)
- {
- throw new RuntimeException('This database engine does not support JSON length operations.');
- }
-
- /**
- * Compile the "group by" portions of the query.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $groups
- * @return string
- */
- protected function compileGroups(Builder $query, $groups)
- {
- return 'group by '.$this->columnize($groups);
- }
-
- /**
- * Compile the "having" portions of the query.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $havings
- * @return string
- */
- protected function compileHavings(Builder $query, $havings)
- {
- $sql = implode(' ', array_map([$this, 'compileHaving'], $havings));
-
- return 'having '.$this->removeLeadingBoolean($sql);
- }
-
- /**
- * Compile a single having clause.
- *
- * @param array $having
- * @return string
- */
- protected function compileHaving(array $having)
- {
- // If the having clause is "raw", we can just return the clause straight away
- // without doing any more processing on it. Otherwise, we will compile the
- // clause into SQL based on the components that make it up from builder.
- if ($having['type'] === 'Raw') {
- return $having['boolean'].' '.$having['sql'];
- } elseif ($having['type'] === 'between') {
- return $this->compileHavingBetween($having);
- }
-
- return $this->compileBasicHaving($having);
- }
-
- /**
- * Compile a basic having clause.
- *
- * @param array $having
- * @return string
- */
- protected function compileBasicHaving($having)
- {
- $column = $this->wrap($having['column']);
-
- $parameter = $this->parameter($having['value']);
-
- return $having['boolean'].' '.$column.' '.$having['operator'].' '.$parameter;
- }
-
- /**
- * Compile a "between" having clause.
- *
- * @param array $having
- * @return string
- */
- protected function compileHavingBetween($having)
- {
- $between = $having['not'] ? 'not between' : 'between';
-
- $column = $this->wrap($having['column']);
-
- $min = $this->parameter(head($having['values']));
-
- $max = $this->parameter(last($having['values']));
-
- return $having['boolean'].' '.$column.' '.$between.' '.$min.' and '.$max;
- }
-
- /**
- * Compile the "order by" portions of the query.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $orders
- * @return string
- */
- protected function compileOrders(Builder $query, $orders)
- {
- if (! empty($orders)) {
- return 'order by '.implode(', ', $this->compileOrdersToArray($query, $orders));
- }
-
- return '';
- }
-
- /**
- * Compile the query orders to an array.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $orders
- * @return array
- */
- protected function compileOrdersToArray(Builder $query, $orders)
- {
- return array_map(function ($order) {
- return $order['sql'] ?? $this->wrap($order['column']).' '.$order['direction'];
- }, $orders);
- }
-
- /**
- * Compile the random statement into SQL.
- *
- * @param string $seed
- * @return string
- */
- public function compileRandom($seed)
- {
- return 'RANDOM()';
- }
-
- /**
- * Compile the "limit" portions of the query.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param int $limit
- * @return string
- */
- protected function compileLimit(Builder $query, $limit)
- {
- return 'limit '.(int) $limit;
- }
-
- /**
- * Compile the "offset" portions of the query.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param int $offset
- * @return string
- */
- protected function compileOffset(Builder $query, $offset)
- {
- return 'offset '.(int) $offset;
- }
-
- /**
- * Compile the "union" queries attached to the main query.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @return string
- */
- protected function compileUnions(Builder $query)
- {
- $sql = '';
-
- foreach ($query->unions as $union) {
- $sql .= $this->compileUnion($union);
- }
-
- if (! empty($query->unionOrders)) {
- $sql .= ' '.$this->compileOrders($query, $query->unionOrders);
- }
-
- if (isset($query->unionLimit)) {
- $sql .= ' '.$this->compileLimit($query, $query->unionLimit);
- }
-
- if (isset($query->unionOffset)) {
- $sql .= ' '.$this->compileOffset($query, $query->unionOffset);
- }
-
- return ltrim($sql);
- }
-
- /**
- * Compile a single union statement.
- *
- * @param array $union
- * @return string
- */
- protected function compileUnion(array $union)
- {
- $conjunction = $union['all'] ? ' union all ' : ' union ';
-
- return $conjunction.$this->wrapUnion($union['query']->toSql());
- }
-
- /**
- * Wrap a union subquery in parentheses.
- *
- * @param string $sql
- * @return string
- */
- protected function wrapUnion($sql)
- {
- return '('.$sql.')';
- }
-
- /**
- * Compile a union aggregate query into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @return string
- */
- protected function compileUnionAggregate(Builder $query)
- {
- $sql = $this->compileAggregate($query, $query->aggregate);
-
- $query->aggregate = null;
-
- return $sql.' from ('.$this->compileSelect($query).') as '.$this->wrapTable('temp_table');
- }
-
- /**
- * Compile an exists statement into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @return string
- */
- public function compileExists(Builder $query)
- {
- $select = $this->compileSelect($query);
-
- return "select exists({$select}) as {$this->wrap('exists')}";
- }
-
- /**
- * Compile an insert statement into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $values
- * @return string
- */
- public function compileInsert(Builder $query, array $values)
- {
- // Essentially we will force every insert to be treated as a batch insert which
- // simply makes creating the SQL easier for us since we can utilize the same
- // basic routine regardless of an amount of records given to us to insert.
- $table = $this->wrapTable($query->from);
-
- if (empty($values)) {
- return "insert into {$table} default values";
- }
-
- if (! is_array(reset($values))) {
- $values = [$values];
- }
-
- $columns = $this->columnize(array_keys(reset($values)));
-
- // We need to build a list of parameter place-holders of values that are bound
- // to the query. Each insert should have the exact same amount of parameter
- // bindings so we will loop through the record and parameterize them all.
- $parameters = collect($values)->map(function ($record) {
- return '('.$this->parameterize($record).')';
- })->implode(', ');
-
- return "insert into $table ($columns) values $parameters";
- }
-
- /**
- * Compile an insert ignore statement into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $values
- * @return string
- *
- * @throws \RuntimeException
- */
- public function compileInsertOrIgnore(Builder $query, array $values)
- {
- throw new RuntimeException('This database engine does not support inserting while ignoring errors.');
- }
-
- /**
- * Compile an insert and get ID statement into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $values
- * @param string $sequence
- * @return string
- */
- public function compileInsertGetId(Builder $query, $values, $sequence)
- {
- return $this->compileInsert($query, $values);
- }
-
- /**
- * Compile an insert statement using a subquery into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $columns
- * @param string $sql
- * @return string
- */
- public function compileInsertUsing(Builder $query, array $columns, string $sql)
- {
- return "insert into {$this->wrapTable($query->from)} ({$this->columnize($columns)}) $sql";
- }
-
- /**
- * Compile an update statement into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $values
- * @return string
- */
- public function compileUpdate(Builder $query, array $values)
- {
- $table = $this->wrapTable($query->from);
-
- $columns = $this->compileUpdateColumns($query, $values);
-
- $where = $this->compileWheres($query);
-
- return trim(
- isset($query->joins)
- ? $this->compileUpdateWithJoins($query, $table, $columns, $where)
- : $this->compileUpdateWithoutJoins($query, $table, $columns, $where)
- );
- }
-
- /**
- * Compile the columns for an update statement.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $values
- * @return string
- */
- protected function compileUpdateColumns(Builder $query, array $values)
- {
- return collect($values)->map(function ($value, $key) {
- return $this->wrap($key).' = '.$this->parameter($value);
- })->implode(', ');
- }
-
- /**
- * Compile an update statement without joins into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param string $table
- * @param string $columns
- * @param string $where
- * @return string
- */
- protected function compileUpdateWithoutJoins(Builder $query, $table, $columns, $where)
- {
- return "update {$table} set {$columns} {$where}";
- }
-
- /**
- * Compile an update statement with joins into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param string $table
- * @param string $columns
- * @param string $where
- * @return string
- */
- protected function compileUpdateWithJoins(Builder $query, $table, $columns, $where)
- {
- $joins = $this->compileJoins($query, $query->joins);
-
- return "update {$table} {$joins} set {$columns} {$where}";
- }
-
- /**
- * Compile an "upsert" statement into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $values
- * @param array $uniqueBy
- * @param array $update
- * @return string
- *
- * @throws \RuntimeException
- */
- public function compileUpsert(Builder $query, array $values, array $uniqueBy, array $update)
- {
- throw new RuntimeException('This database engine does not support upserts.');
- }
-
- /**
- * Prepare the bindings for an update statement.
- *
- * @param array $bindings
- * @param array $values
- * @return array
- */
- public function prepareBindingsForUpdate(array $bindings, array $values)
- {
- $cleanBindings = Arr::except($bindings, ['select', 'join']);
-
- return array_values(
- array_merge($bindings['join'], $values, Arr::flatten($cleanBindings))
- );
- }
-
- /**
- * Compile a delete statement into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @return string
- */
- public function compileDelete(Builder $query)
- {
- $table = $this->wrapTable($query->from);
-
- $where = $this->compileWheres($query);
-
- return trim(
- isset($query->joins)
- ? $this->compileDeleteWithJoins($query, $table, $where)
- : $this->compileDeleteWithoutJoins($query, $table, $where)
- );
- }
-
- /**
- * Compile a delete statement without joins into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param string $table
- * @param string $where
- * @return string
- */
- protected function compileDeleteWithoutJoins(Builder $query, $table, $where)
- {
- return "delete from {$table} {$where}";
- }
-
- /**
- * Compile a delete statement with joins into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param string $table
- * @param string $where
- * @return string
- */
- protected function compileDeleteWithJoins(Builder $query, $table, $where)
- {
- $alias = last(explode(' as ', $table));
-
- $joins = $this->compileJoins($query, $query->joins);
-
- return "delete {$alias} from {$table} {$joins} {$where}";
- }
-
- /**
- * Prepare the bindings for a delete statement.
- *
- * @param array $bindings
- * @return array
- */
- public function prepareBindingsForDelete(array $bindings)
- {
- return Arr::flatten(
- Arr::except($bindings, 'select')
- );
- }
-
- /**
- * Compile a truncate table statement into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @return array
- */
- public function compileTruncate(Builder $query)
- {
- return ['truncate table '.$this->wrapTable($query->from) => []];
- }
-
- /**
- * Compile the lock into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param bool|string $value
- * @return string
- */
- protected function compileLock(Builder $query, $value)
- {
- return is_string($value) ? $value : '';
- }
-
- /**
- * Determine if the grammar supports savepoints.
- *
- * @return bool
- */
- public function supportsSavepoints()
- {
- return true;
- }
-
- /**
- * Compile the SQL statement to define a savepoint.
- *
- * @param string $name
- * @return string
- */
- public function compileSavepoint($name)
- {
- return 'SAVEPOINT '.$name;
- }
-
- /**
- * Compile the SQL statement to execute a savepoint rollback.
- *
- * @param string $name
- * @return string
- */
- public function compileSavepointRollBack($name)
- {
- return 'ROLLBACK TO SAVEPOINT '.$name;
- }
-
- /**
- * Wrap a value in keyword identifiers.
- *
- * @param \Illuminate\Database\Query\Expression|string $value
- * @param bool $prefixAlias
- * @return string
- */
- public function wrap($value, $prefixAlias = false)
- {
- if ($this->isExpression($value)) {
- return $this->getValue($value);
- }
-
- // If the value being wrapped has a column alias we will need to separate out
- // the pieces so we can wrap each of the segments of the expression on its
- // own, and then join these both back together using the "as" connector.
- if (stripos($value, ' as ') !== false) {
- return $this->wrapAliasedValue($value, $prefixAlias);
- }
-
- // If the given value is a JSON selector we will wrap it differently than a
- // traditional value. We will need to split this path and wrap each part
- // wrapped, etc. Otherwise, we will simply wrap the value as a string.
- if ($this->isJsonSelector($value)) {
- return $this->wrapJsonSelector($value);
- }
-
- return $this->wrapSegments(explode('.', $value));
- }
-
- /**
- * Wrap the given JSON selector.
- *
- * @param string $value
- * @return string
- *
- * @throws \RuntimeException
- */
- protected function wrapJsonSelector($value)
- {
- throw new RuntimeException('This database engine does not support JSON operations.');
- }
-
- /**
- * Wrap the given JSON selector for boolean values.
- *
- * @param string $value
- * @return string
- */
- protected function wrapJsonBooleanSelector($value)
- {
- return $this->wrapJsonSelector($value);
- }
-
- /**
- * Wrap the given JSON boolean value.
- *
- * @param string $value
- * @return string
- */
- protected function wrapJsonBooleanValue($value)
- {
- return $value;
- }
-
- /**
- * Split the given JSON selector into the field and the optional path and wrap them separately.
- *
- * @param string $column
- * @return array
- */
- protected function wrapJsonFieldAndPath($column)
- {
- $parts = explode('->', $column, 2);
-
- $field = $this->wrap($parts[0]);
-
- $path = count($parts) > 1 ? ', '.$this->wrapJsonPath($parts[1], '->') : '';
-
- return [$field, $path];
- }
-
- /**
- * Wrap the given JSON path.
- *
- * @param string $value
- * @param string $delimiter
- * @return string
- */
- protected function wrapJsonPath($value, $delimiter = '->')
- {
- $value = preg_replace("/([\\\\]+)?\\'/", "''", $value);
-
- return '\'$."'.str_replace($delimiter, '"."', $value).'"\'';
- }
-
- /**
- * Determine if the given string is a JSON selector.
- *
- * @param string $value
- * @return bool
- */
- protected function isJsonSelector($value)
- {
- return Str::contains($value, '->');
- }
-
- /**
- * Concatenate an array of segments, removing empties.
- *
- * @param array $segments
- * @return string
- */
- protected function concatenate($segments)
- {
- return implode(' ', array_filter($segments, function ($value) {
- return (string) $value !== '';
- }));
- }
-
- /**
- * Remove the leading boolean from a statement.
- *
- * @param string $value
- * @return string
- */
- protected function removeLeadingBoolean($value)
- {
- return preg_replace('/and |or /i', '', $value, 1);
- }
-
- /**
- * Get the grammar specific operators.
- *
- * @return array
- */
- public function getOperators()
- {
- return $this->operators;
- }
-}
diff --git a/vendor/illuminate/database/Query/Grammars/MySqlGrammar.php b/vendor/illuminate/database/Query/Grammars/MySqlGrammar.php
deleted file mode 100755
index 17b1aff0..00000000
--- a/vendor/illuminate/database/Query/Grammars/MySqlGrammar.php
+++ /dev/null
@@ -1,305 +0,0 @@
-isJsonSelector($where['column'])) {
- [$field, $path] = $this->wrapJsonFieldAndPath($where['column']);
-
- return '(json_extract('.$field.$path.') is null OR json_type(json_extract('.$field.$path.')) = \'NULL\')';
- }
-
- return parent::whereNull($query, $where);
- }
-
- /**
- * Add a "where not null" clause to the query.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereNotNull(Builder $query, $where)
- {
- if ($this->isJsonSelector($where['column'])) {
- [$field, $path] = $this->wrapJsonFieldAndPath($where['column']);
-
- return '(json_extract('.$field.$path.') is not null AND json_type(json_extract('.$field.$path.')) != \'NULL\')';
- }
-
- return parent::whereNotNull($query, $where);
- }
-
- /**
- * Compile an insert ignore statement into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $values
- * @return string
- */
- public function compileInsertOrIgnore(Builder $query, array $values)
- {
- return Str::replaceFirst('insert', 'insert ignore', $this->compileInsert($query, $values));
- }
-
- /**
- * Compile a "JSON contains" statement into SQL.
- *
- * @param string $column
- * @param string $value
- * @return string
- */
- protected function compileJsonContains($column, $value)
- {
- [$field, $path] = $this->wrapJsonFieldAndPath($column);
-
- return 'json_contains('.$field.', '.$value.$path.')';
- }
-
- /**
- * Compile a "JSON length" statement into SQL.
- *
- * @param string $column
- * @param string $operator
- * @param string $value
- * @return string
- */
- protected function compileJsonLength($column, $operator, $value)
- {
- [$field, $path] = $this->wrapJsonFieldAndPath($column);
-
- return 'json_length('.$field.$path.') '.$operator.' '.$value;
- }
-
- /**
- * Compile the random statement into SQL.
- *
- * @param string $seed
- * @return string
- */
- public function compileRandom($seed)
- {
- return 'RAND('.$seed.')';
- }
-
- /**
- * Compile the lock into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param bool|string $value
- * @return string
- */
- protected function compileLock(Builder $query, $value)
- {
- if (! is_string($value)) {
- return $value ? 'for update' : 'lock in share mode';
- }
-
- return $value;
- }
-
- /**
- * Compile an insert statement into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $values
- * @return string
- */
- public function compileInsert(Builder $query, array $values)
- {
- if (empty($values)) {
- $values = [[]];
- }
-
- return parent::compileInsert($query, $values);
- }
-
- /**
- * Compile the columns for an update statement.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $values
- * @return string
- */
- protected function compileUpdateColumns(Builder $query, array $values)
- {
- return collect($values)->map(function ($value, $key) {
- if ($this->isJsonSelector($key)) {
- return $this->compileJsonUpdateColumn($key, $value);
- }
-
- return $this->wrap($key).' = '.$this->parameter($value);
- })->implode(', ');
- }
-
- /**
- * Compile an "upsert" statement into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $values
- * @param array $uniqueBy
- * @param array $update
- * @return string
- */
- public function compileUpsert(Builder $query, array $values, array $uniqueBy, array $update)
- {
- $sql = $this->compileInsert($query, $values).' on duplicate key update ';
-
- $columns = collect($update)->map(function ($value, $key) {
- return is_numeric($key)
- ? $this->wrap($value).' = values('.$this->wrap($value).')'
- : $this->wrap($key).' = '.$this->parameter($value);
- })->implode(', ');
-
- return $sql.$columns;
- }
-
- /**
- * Prepare a JSON column being updated using the JSON_SET function.
- *
- * @param string $key
- * @param mixed $value
- * @return string
- */
- protected function compileJsonUpdateColumn($key, $value)
- {
- if (is_bool($value)) {
- $value = $value ? 'true' : 'false';
- } elseif (is_array($value)) {
- $value = 'cast(? as json)';
- } else {
- $value = $this->parameter($value);
- }
-
- [$field, $path] = $this->wrapJsonFieldAndPath($key);
-
- return "{$field} = json_set({$field}{$path}, {$value})";
- }
-
- /**
- * Compile an update statement without joins into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param string $table
- * @param string $columns
- * @param string $where
- * @return string
- */
- protected function compileUpdateWithoutJoins(Builder $query, $table, $columns, $where)
- {
- $sql = parent::compileUpdateWithoutJoins($query, $table, $columns, $where);
-
- if (! empty($query->orders)) {
- $sql .= ' '.$this->compileOrders($query, $query->orders);
- }
-
- if (isset($query->limit)) {
- $sql .= ' '.$this->compileLimit($query, $query->limit);
- }
-
- return $sql;
- }
-
- /**
- * Prepare the bindings for an update statement.
- *
- * Booleans, integers, and doubles are inserted into JSON updates as raw values.
- *
- * @param array $bindings
- * @param array $values
- * @return array
- */
- public function prepareBindingsForUpdate(array $bindings, array $values)
- {
- $values = collect($values)->reject(function ($value, $column) {
- return $this->isJsonSelector($column) && is_bool($value);
- })->map(function ($value) {
- return is_array($value) ? json_encode($value) : $value;
- })->all();
-
- return parent::prepareBindingsForUpdate($bindings, $values);
- }
-
- /**
- * Compile a delete query that does not use joins.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param string $table
- * @param string $where
- * @return string
- */
- protected function compileDeleteWithoutJoins(Builder $query, $table, $where)
- {
- $sql = parent::compileDeleteWithoutJoins($query, $table, $where);
-
- // When using MySQL, delete statements may contain order by statements and limits
- // so we will compile both of those here. Once we have finished compiling this
- // we will return the completed SQL statement so it will be executed for us.
- if (! empty($query->orders)) {
- $sql .= ' '.$this->compileOrders($query, $query->orders);
- }
-
- if (isset($query->limit)) {
- $sql .= ' '.$this->compileLimit($query, $query->limit);
- }
-
- return $sql;
- }
-
- /**
- * Wrap a single string in keyword identifiers.
- *
- * @param string $value
- * @return string
- */
- protected function wrapValue($value)
- {
- return $value === '*' ? $value : '`'.str_replace('`', '``', $value).'`';
- }
-
- /**
- * Wrap the given JSON selector.
- *
- * @param string $value
- * @return string
- */
- protected function wrapJsonSelector($value)
- {
- [$field, $path] = $this->wrapJsonFieldAndPath($value);
-
- return 'json_unquote(json_extract('.$field.$path.'))';
- }
-
- /**
- * Wrap the given JSON selector for boolean values.
- *
- * @param string $value
- * @return string
- */
- protected function wrapJsonBooleanSelector($value)
- {
- [$field, $path] = $this->wrapJsonFieldAndPath($value);
-
- return 'json_extract('.$field.$path.')';
- }
-}
diff --git a/vendor/illuminate/database/Query/Grammars/PostgresGrammar.php b/vendor/illuminate/database/Query/Grammars/PostgresGrammar.php
deleted file mode 100755
index d40d163c..00000000
--- a/vendor/illuminate/database/Query/Grammars/PostgresGrammar.php
+++ /dev/null
@@ -1,520 +0,0 @@
-', '<=', '>=', '<>', '!=',
- 'like', 'not like', 'between', 'ilike', 'not ilike',
- '~', '&', '|', '#', '<<', '>>', '<<=', '>>=',
- '&&', '@>', '<@', '?', '?|', '?&', '||', '-', '@?', '@@', '#-',
- 'is distinct from', 'is not distinct from',
- ];
-
- /**
- * {@inheritdoc}
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereBasic(Builder $query, $where)
- {
- if (Str::contains(strtolower($where['operator']), 'like')) {
- return sprintf(
- '%s::text %s %s',
- $this->wrap($where['column']),
- $where['operator'],
- $this->parameter($where['value'])
- );
- }
-
- return parent::whereBasic($query, $where);
- }
-
- /**
- * Compile a "where date" clause.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereDate(Builder $query, $where)
- {
- $value = $this->parameter($where['value']);
-
- return $this->wrap($where['column']).'::date '.$where['operator'].' '.$value;
- }
-
- /**
- * Compile a "where time" clause.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereTime(Builder $query, $where)
- {
- $value = $this->parameter($where['value']);
-
- return $this->wrap($where['column']).'::time '.$where['operator'].' '.$value;
- }
-
- /**
- * Compile a date based where clause.
- *
- * @param string $type
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function dateBasedWhere($type, Builder $query, $where)
- {
- $value = $this->parameter($where['value']);
-
- return 'extract('.$type.' from '.$this->wrap($where['column']).') '.$where['operator'].' '.$value;
- }
-
- /**
- * Compile the "select *" portion of the query.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $columns
- * @return string|null
- */
- protected function compileColumns(Builder $query, $columns)
- {
- // If the query is actually performing an aggregating select, we will let that
- // compiler handle the building of the select clauses, as it will need some
- // more syntax that is best handled by that function to keep things neat.
- if (! is_null($query->aggregate)) {
- return;
- }
-
- if (is_array($query->distinct)) {
- $select = 'select distinct on ('.$this->columnize($query->distinct).') ';
- } elseif ($query->distinct) {
- $select = 'select distinct ';
- } else {
- $select = 'select ';
- }
-
- return $select.$this->columnize($columns);
- }
-
- /**
- * Compile a "JSON contains" statement into SQL.
- *
- * @param string $column
- * @param string $value
- * @return string
- */
- protected function compileJsonContains($column, $value)
- {
- $column = str_replace('->>', '->', $this->wrap($column));
-
- return '('.$column.')::jsonb @> '.$value;
- }
-
- /**
- * Compile a "JSON length" statement into SQL.
- *
- * @param string $column
- * @param string $operator
- * @param string $value
- * @return string
- */
- protected function compileJsonLength($column, $operator, $value)
- {
- $column = str_replace('->>', '->', $this->wrap($column));
-
- return 'json_array_length(('.$column.')::json) '.$operator.' '.$value;
- }
-
- /**
- * Compile the lock into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param bool|string $value
- * @return string
- */
- protected function compileLock(Builder $query, $value)
- {
- if (! is_string($value)) {
- return $value ? 'for update' : 'for share';
- }
-
- return $value;
- }
-
- /**
- * Compile an insert ignore statement into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $values
- * @return string
- */
- public function compileInsertOrIgnore(Builder $query, array $values)
- {
- return $this->compileInsert($query, $values).' on conflict do nothing';
- }
-
- /**
- * Compile an insert and get ID statement into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $values
- * @param string $sequence
- * @return string
- */
- public function compileInsertGetId(Builder $query, $values, $sequence)
- {
- return $this->compileInsert($query, $values).' returning '.$this->wrap($sequence ?: 'id');
- }
-
- /**
- * Compile an update statement into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $values
- * @return string
- */
- public function compileUpdate(Builder $query, array $values)
- {
- if (isset($query->joins) || isset($query->limit)) {
- return $this->compileUpdateWithJoinsOrLimit($query, $values);
- }
-
- return parent::compileUpdate($query, $values);
- }
-
- /**
- * Compile the columns for an update statement.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $values
- * @return string
- */
- protected function compileUpdateColumns(Builder $query, array $values)
- {
- return collect($values)->map(function ($value, $key) {
- $column = last(explode('.', $key));
-
- if ($this->isJsonSelector($key)) {
- return $this->compileJsonUpdateColumn($column, $value);
- }
-
- return $this->wrap($column).' = '.$this->parameter($value);
- })->implode(', ');
- }
-
- /**
- * Compile an "upsert" statement into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $values
- * @param array $uniqueBy
- * @param array $update
- * @return string
- */
- public function compileUpsert(Builder $query, array $values, array $uniqueBy, array $update)
- {
- $sql = $this->compileInsert($query, $values);
-
- $sql .= ' on conflict ('.$this->columnize($uniqueBy).') do update set ';
-
- $columns = collect($update)->map(function ($value, $key) {
- return is_numeric($key)
- ? $this->wrap($value).' = '.$this->wrapValue('excluded').'.'.$this->wrap($value)
- : $this->wrap($key).' = '.$this->parameter($value);
- })->implode(', ');
-
- return $sql.$columns;
- }
-
- /**
- * Prepares a JSON column being updated using the JSONB_SET function.
- *
- * @param string $key
- * @param mixed $value
- * @return string
- */
- protected function compileJsonUpdateColumn($key, $value)
- {
- $segments = explode('->', $key);
-
- $field = $this->wrap(array_shift($segments));
-
- $path = '\'{"'.implode('","', $segments).'"}\'';
-
- return "{$field} = jsonb_set({$field}::jsonb, {$path}, {$this->parameter($value)})";
- }
-
- /**
- * Compile an update from statement into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $values
- * @return string
- */
- public function compileUpdateFrom(Builder $query, $values)
- {
- $table = $this->wrapTable($query->from);
-
- // Each one of the columns in the update statements needs to be wrapped in the
- // keyword identifiers, also a place-holder needs to be created for each of
- // the values in the list of bindings so we can make the sets statements.
- $columns = $this->compileUpdateColumns($query, $values);
-
- $from = '';
-
- if (isset($query->joins)) {
- // When using Postgres, updates with joins list the joined tables in the from
- // clause, which is different than other systems like MySQL. Here, we will
- // compile out the tables that are joined and add them to a from clause.
- $froms = collect($query->joins)->map(function ($join) {
- return $this->wrapTable($join->table);
- })->all();
-
- if (count($froms) > 0) {
- $from = ' from '.implode(', ', $froms);
- }
- }
-
- $where = $this->compileUpdateWheres($query);
-
- return trim("update {$table} set {$columns}{$from} {$where}");
- }
-
- /**
- * Compile the additional where clauses for updates with joins.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @return string
- */
- protected function compileUpdateWheres(Builder $query)
- {
- $baseWheres = $this->compileWheres($query);
-
- if (! isset($query->joins)) {
- return $baseWheres;
- }
-
- // Once we compile the join constraints, we will either use them as the where
- // clause or append them to the existing base where clauses. If we need to
- // strip the leading boolean we will do so when using as the only where.
- $joinWheres = $this->compileUpdateJoinWheres($query);
-
- if (trim($baseWheres) == '') {
- return 'where '.$this->removeLeadingBoolean($joinWheres);
- }
-
- return $baseWheres.' '.$joinWheres;
- }
-
- /**
- * Compile the "join" clause where clauses for an update.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @return string
- */
- protected function compileUpdateJoinWheres(Builder $query)
- {
- $joinWheres = [];
-
- // Here we will just loop through all of the join constraints and compile them
- // all out then implode them. This should give us "where" like syntax after
- // everything has been built and then we will join it to the real wheres.
- foreach ($query->joins as $join) {
- foreach ($join->wheres as $where) {
- $method = "where{$where['type']}";
-
- $joinWheres[] = $where['boolean'].' '.$this->$method($query, $where);
- }
- }
-
- return implode(' ', $joinWheres);
- }
-
- /**
- * Prepare the bindings for an update statement.
- *
- * @param array $bindings
- * @param array $values
- * @return array
- */
- public function prepareBindingsForUpdateFrom(array $bindings, array $values)
- {
- $values = collect($values)->map(function ($value, $column) {
- return is_array($value) || ($this->isJsonSelector($column) && ! $this->isExpression($value))
- ? json_encode($value)
- : $value;
- })->all();
-
- $bindingsWithoutWhere = Arr::except($bindings, ['select', 'where']);
-
- return array_values(
- array_merge($values, $bindings['where'], Arr::flatten($bindingsWithoutWhere))
- );
- }
-
- /**
- * Compile an update statement with joins or limit into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $values
- * @return string
- */
- protected function compileUpdateWithJoinsOrLimit(Builder $query, array $values)
- {
- $table = $this->wrapTable($query->from);
-
- $columns = $this->compileUpdateColumns($query, $values);
-
- $alias = last(preg_split('/\s+as\s+/i', $query->from));
-
- $selectSql = $this->compileSelect($query->select($alias.'.ctid'));
-
- return "update {$table} set {$columns} where {$this->wrap('ctid')} in ({$selectSql})";
- }
-
- /**
- * Prepare the bindings for an update statement.
- *
- * @param array $bindings
- * @param array $values
- * @return array
- */
- public function prepareBindingsForUpdate(array $bindings, array $values)
- {
- $values = collect($values)->map(function ($value, $column) {
- return is_array($value) || ($this->isJsonSelector($column) && ! $this->isExpression($value))
- ? json_encode($value)
- : $value;
- })->all();
-
- $cleanBindings = Arr::except($bindings, 'select');
-
- return array_values(
- array_merge($values, Arr::flatten($cleanBindings))
- );
- }
-
- /**
- * Compile a delete statement into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @return string
- */
- public function compileDelete(Builder $query)
- {
- if (isset($query->joins) || isset($query->limit)) {
- return $this->compileDeleteWithJoinsOrLimit($query);
- }
-
- return parent::compileDelete($query);
- }
-
- /**
- * Compile a delete statement with joins or limit into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @return string
- */
- protected function compileDeleteWithJoinsOrLimit(Builder $query)
- {
- $table = $this->wrapTable($query->from);
-
- $alias = last(preg_split('/\s+as\s+/i', $query->from));
-
- $selectSql = $this->compileSelect($query->select($alias.'.ctid'));
-
- return "delete from {$table} where {$this->wrap('ctid')} in ({$selectSql})";
- }
-
- /**
- * Compile a truncate table statement into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @return array
- */
- public function compileTruncate(Builder $query)
- {
- return ['truncate '.$this->wrapTable($query->from).' restart identity cascade' => []];
- }
-
- /**
- * Wrap the given JSON selector.
- *
- * @param string $value
- * @return string
- */
- protected function wrapJsonSelector($value)
- {
- $path = explode('->', $value);
-
- $field = $this->wrapSegments(explode('.', array_shift($path)));
-
- $wrappedPath = $this->wrapJsonPathAttributes($path);
-
- $attribute = array_pop($wrappedPath);
-
- if (! empty($wrappedPath)) {
- return $field.'->'.implode('->', $wrappedPath).'->>'.$attribute;
- }
-
- return $field.'->>'.$attribute;
- }
-
- /**
- * Wrap the given JSON selector for boolean values.
- *
- * @param string $value
- * @return string
- */
- protected function wrapJsonBooleanSelector($value)
- {
- $selector = str_replace(
- '->>', '->',
- $this->wrapJsonSelector($value)
- );
-
- return '('.$selector.')::jsonb';
- }
-
- /**
- * Wrap the given JSON boolean value.
- *
- * @param string $value
- * @return string
- */
- protected function wrapJsonBooleanValue($value)
- {
- return "'".$value."'::jsonb";
- }
-
- /**
- * Wrap the attributes of the give JSON path.
- *
- * @param array $path
- * @return array
- */
- protected function wrapJsonPathAttributes($path)
- {
- return array_map(function ($attribute) {
- return filter_var($attribute, FILTER_VALIDATE_INT) !== false
- ? $attribute
- : "'$attribute'";
- }, $path);
- }
-}
diff --git a/vendor/illuminate/database/Query/Grammars/SQLiteGrammar.php b/vendor/illuminate/database/Query/Grammars/SQLiteGrammar.php
deleted file mode 100755
index 29a37968..00000000
--- a/vendor/illuminate/database/Query/Grammars/SQLiteGrammar.php
+++ /dev/null
@@ -1,342 +0,0 @@
-', '<=', '>=', '<>', '!=',
- 'like', 'not like', 'ilike',
- '&', '|', '<<', '>>',
- ];
-
- /**
- * Compile the lock into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param bool|string $value
- * @return string
- */
- protected function compileLock(Builder $query, $value)
- {
- return '';
- }
-
- /**
- * Wrap a union subquery in parentheses.
- *
- * @param string $sql
- * @return string
- */
- protected function wrapUnion($sql)
- {
- return 'select * from ('.$sql.')';
- }
-
- /**
- * Compile a "where date" clause.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereDate(Builder $query, $where)
- {
- return $this->dateBasedWhere('%Y-%m-%d', $query, $where);
- }
-
- /**
- * Compile a "where day" clause.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereDay(Builder $query, $where)
- {
- return $this->dateBasedWhere('%d', $query, $where);
- }
-
- /**
- * Compile a "where month" clause.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereMonth(Builder $query, $where)
- {
- return $this->dateBasedWhere('%m', $query, $where);
- }
-
- /**
- * Compile a "where year" clause.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereYear(Builder $query, $where)
- {
- return $this->dateBasedWhere('%Y', $query, $where);
- }
-
- /**
- * Compile a "where time" clause.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereTime(Builder $query, $where)
- {
- return $this->dateBasedWhere('%H:%M:%S', $query, $where);
- }
-
- /**
- * Compile a date based where clause.
- *
- * @param string $type
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function dateBasedWhere($type, Builder $query, $where)
- {
- $value = $this->parameter($where['value']);
-
- return "strftime('{$type}', {$this->wrap($where['column'])}) {$where['operator']} cast({$value} as text)";
- }
-
- /**
- * Compile a "JSON length" statement into SQL.
- *
- * @param string $column
- * @param string $operator
- * @param string $value
- * @return string
- */
- protected function compileJsonLength($column, $operator, $value)
- {
- [$field, $path] = $this->wrapJsonFieldAndPath($column);
-
- return 'json_array_length('.$field.$path.') '.$operator.' '.$value;
- }
-
- /**
- * Compile an update statement into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $values
- * @return string
- */
- public function compileUpdate(Builder $query, array $values)
- {
- if (isset($query->joins) || isset($query->limit)) {
- return $this->compileUpdateWithJoinsOrLimit($query, $values);
- }
-
- return parent::compileUpdate($query, $values);
- }
-
- /**
- * Compile an insert ignore statement into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $values
- * @return string
- */
- public function compileInsertOrIgnore(Builder $query, array $values)
- {
- return Str::replaceFirst('insert', 'insert or ignore', $this->compileInsert($query, $values));
- }
-
- /**
- * Compile the columns for an update statement.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $values
- * @return string
- */
- protected function compileUpdateColumns(Builder $query, array $values)
- {
- $jsonGroups = $this->groupJsonColumnsForUpdate($values);
-
- return collect($values)->reject(function ($value, $key) {
- return $this->isJsonSelector($key);
- })->merge($jsonGroups)->map(function ($value, $key) use ($jsonGroups) {
- $column = last(explode('.', $key));
-
- $value = isset($jsonGroups[$key]) ? $this->compileJsonPatch($column, $value) : $this->parameter($value);
-
- return $this->wrap($column).' = '.$value;
- })->implode(', ');
- }
-
- /**
- * Compile an "upsert" statement into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $values
- * @param array $uniqueBy
- * @param array $update
- * @return string
- */
- public function compileUpsert(Builder $query, array $values, array $uniqueBy, array $update)
- {
- $sql = $this->compileInsert($query, $values);
-
- $sql .= ' on conflict ('.$this->columnize($uniqueBy).') do update set ';
-
- $columns = collect($update)->map(function ($value, $key) {
- return is_numeric($key)
- ? $this->wrap($value).' = '.$this->wrapValue('excluded').'.'.$this->wrap($value)
- : $this->wrap($key).' = '.$this->parameter($value);
- })->implode(', ');
-
- return $sql.$columns;
- }
-
- /**
- * Group the nested JSON columns.
- *
- * @param array $values
- * @return array
- */
- protected function groupJsonColumnsForUpdate(array $values)
- {
- $groups = [];
-
- foreach ($values as $key => $value) {
- if ($this->isJsonSelector($key)) {
- Arr::set($groups, str_replace('->', '.', Str::after($key, '.')), $value);
- }
- }
-
- return $groups;
- }
-
- /**
- * Compile a "JSON" patch statement into SQL.
- *
- * @param string $column
- * @param mixed $value
- * @return string
- */
- protected function compileJsonPatch($column, $value)
- {
- return "json_patch(ifnull({$this->wrap($column)}, json('{}')), json({$this->parameter($value)}))";
- }
-
- /**
- * Compile an update statement with joins or limit into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $values
- * @return string
- */
- protected function compileUpdateWithJoinsOrLimit(Builder $query, array $values)
- {
- $table = $this->wrapTable($query->from);
-
- $columns = $this->compileUpdateColumns($query, $values);
-
- $alias = last(preg_split('/\s+as\s+/i', $query->from));
-
- $selectSql = $this->compileSelect($query->select($alias.'.rowid'));
-
- return "update {$table} set {$columns} where {$this->wrap('rowid')} in ({$selectSql})";
- }
-
- /**
- * Prepare the bindings for an update statement.
- *
- * @param array $bindings
- * @param array $values
- * @return array
- */
- public function prepareBindingsForUpdate(array $bindings, array $values)
- {
- $groups = $this->groupJsonColumnsForUpdate($values);
-
- $values = collect($values)->reject(function ($value, $key) {
- return $this->isJsonSelector($key);
- })->merge($groups)->map(function ($value) {
- return is_array($value) ? json_encode($value) : $value;
- })->all();
-
- $cleanBindings = Arr::except($bindings, 'select');
-
- return array_values(
- array_merge($values, Arr::flatten($cleanBindings))
- );
- }
-
- /**
- * Compile a delete statement into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @return string
- */
- public function compileDelete(Builder $query)
- {
- if (isset($query->joins) || isset($query->limit)) {
- return $this->compileDeleteWithJoinsOrLimit($query);
- }
-
- return parent::compileDelete($query);
- }
-
- /**
- * Compile a delete statement with joins or limit into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @return string
- */
- protected function compileDeleteWithJoinsOrLimit(Builder $query)
- {
- $table = $this->wrapTable($query->from);
-
- $alias = last(preg_split('/\s+as\s+/i', $query->from));
-
- $selectSql = $this->compileSelect($query->select($alias.'.rowid'));
-
- return "delete from {$table} where {$this->wrap('rowid')} in ({$selectSql})";
- }
-
- /**
- * Compile a truncate table statement into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @return array
- */
- public function compileTruncate(Builder $query)
- {
- return [
- 'delete from sqlite_sequence where name = ?' => [$query->from],
- 'delete from '.$this->wrapTable($query->from) => [],
- ];
- }
-
- /**
- * Wrap the given JSON selector.
- *
- * @param string $value
- * @return string
- */
- protected function wrapJsonSelector($value)
- {
- [$field, $path] = $this->wrapJsonFieldAndPath($value);
-
- return 'json_extract('.$field.$path.')';
- }
-}
diff --git a/vendor/illuminate/database/Query/Grammars/SqlServerGrammar.php b/vendor/illuminate/database/Query/Grammars/SqlServerGrammar.php
deleted file mode 100755
index 0f5a27a6..00000000
--- a/vendor/illuminate/database/Query/Grammars/SqlServerGrammar.php
+++ /dev/null
@@ -1,532 +0,0 @@
-', '<=', '>=', '!<', '!>', '<>', '!=',
- 'like', 'not like', 'ilike',
- '&', '&=', '|', '|=', '^', '^=',
- ];
-
- /**
- * Compile a select query into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @return string
- */
- public function compileSelect(Builder $query)
- {
- if (! $query->offset) {
- return parent::compileSelect($query);
- }
-
- // If an offset is present on the query, we will need to wrap the query in
- // a big "ANSI" offset syntax block. This is very nasty compared to the
- // other database systems but is necessary for implementing features.
- if (is_null($query->columns)) {
- $query->columns = ['*'];
- }
-
- return $this->compileAnsiOffset(
- $query, $this->compileComponents($query)
- );
- }
-
- /**
- * Compile the "select *" portion of the query.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $columns
- * @return string|null
- */
- protected function compileColumns(Builder $query, $columns)
- {
- if (! is_null($query->aggregate)) {
- return;
- }
-
- $select = $query->distinct ? 'select distinct ' : 'select ';
-
- // If there is a limit on the query, but not an offset, we will add the top
- // clause to the query, which serves as a "limit" type clause within the
- // SQL Server system similar to the limit keywords available in MySQL.
- if (is_numeric($query->limit) && $query->limit > 0 && $query->offset <= 0) {
- $select .= 'top '.((int) $query->limit).' ';
- }
-
- return $select.$this->columnize($columns);
- }
-
- /**
- * Compile the "from" portion of the query.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param string $table
- * @return string
- */
- protected function compileFrom(Builder $query, $table)
- {
- $from = parent::compileFrom($query, $table);
-
- if (is_string($query->lock)) {
- return $from.' '.$query->lock;
- }
-
- if (! is_null($query->lock)) {
- return $from.' with(rowlock,'.($query->lock ? 'updlock,' : '').'holdlock)';
- }
-
- return $from;
- }
-
- /**
- * Compile a "where date" clause.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereDate(Builder $query, $where)
- {
- $value = $this->parameter($where['value']);
-
- return 'cast('.$this->wrap($where['column']).' as date) '.$where['operator'].' '.$value;
- }
-
- /**
- * Compile a "where time" clause.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $where
- * @return string
- */
- protected function whereTime(Builder $query, $where)
- {
- $value = $this->parameter($where['value']);
-
- return 'cast('.$this->wrap($where['column']).' as time) '.$where['operator'].' '.$value;
- }
-
- /**
- * Compile a "JSON contains" statement into SQL.
- *
- * @param string $column
- * @param string $value
- * @return string
- */
- protected function compileJsonContains($column, $value)
- {
- [$field, $path] = $this->wrapJsonFieldAndPath($column);
-
- return $value.' in (select [value] from openjson('.$field.$path.'))';
- }
-
- /**
- * Prepare the binding for a "JSON contains" statement.
- *
- * @param mixed $binding
- * @return string
- */
- public function prepareBindingForJsonContains($binding)
- {
- return is_bool($binding) ? json_encode($binding) : $binding;
- }
-
- /**
- * Compile a "JSON length" statement into SQL.
- *
- * @param string $column
- * @param string $operator
- * @param string $value
- * @return string
- */
- protected function compileJsonLength($column, $operator, $value)
- {
- [$field, $path] = $this->wrapJsonFieldAndPath($column);
-
- return '(select count(*) from openjson('.$field.$path.')) '.$operator.' '.$value;
- }
-
- /**
- * Create a full ANSI offset clause for the query.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $components
- * @return string
- */
- protected function compileAnsiOffset(Builder $query, $components)
- {
- // An ORDER BY clause is required to make this offset query work, so if one does
- // not exist we'll just create a dummy clause to trick the database and so it
- // does not complain about the queries for not having an "order by" clause.
- if (empty($components['orders'])) {
- $components['orders'] = 'order by (select 0)';
- }
-
- // We need to add the row number to the query so we can compare it to the offset
- // and limit values given for the statements. So we will add an expression to
- // the "select" that will give back the row numbers on each of the records.
- $components['columns'] .= $this->compileOver($components['orders']);
-
- unset($components['orders']);
-
- if ($this->queryOrderContainsSubquery($query)) {
- $query->bindings = $this->sortBindingsForSubqueryOrderBy($query);
- }
-
- // Next we need to calculate the constraints that should be placed on the query
- // to get the right offset and limit from our query but if there is no limit
- // set we will just handle the offset only since that is all that matters.
- $sql = $this->concatenate($components);
-
- return $this->compileTableExpression($sql, $query);
- }
-
- /**
- * Compile the over statement for a table expression.
- *
- * @param string $orderings
- * @return string
- */
- protected function compileOver($orderings)
- {
- return ", row_number() over ({$orderings}) as row_num";
- }
-
- /**
- * Determine if the query's order by clauses contain a subquery.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @return bool
- */
- protected function queryOrderContainsSubquery($query)
- {
- if (! is_array($query->orders)) {
- return false;
- }
-
- return Arr::first($query->orders, function ($value) {
- return $this->isExpression($value['column'] ?? null);
- }, false) !== false;
- }
-
- /**
- * Move the order bindings to be after the "select" statement to account for an order by subquery.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @return array
- */
- protected function sortBindingsForSubqueryOrderBy($query)
- {
- return Arr::sort($query->bindings, function ($bindings, $key) {
- return array_search($key, ['select', 'order', 'from', 'join', 'where', 'groupBy', 'having', 'union', 'unionOrder']);
- });
- }
-
- /**
- * Compile a common table expression for a query.
- *
- * @param string $sql
- * @param \Illuminate\Database\Query\Builder $query
- * @return string
- */
- protected function compileTableExpression($sql, $query)
- {
- $constraint = $this->compileRowConstraint($query);
-
- return "select * from ({$sql}) as temp_table where row_num {$constraint} order by row_num";
- }
-
- /**
- * Compile the limit / offset row constraint for a query.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @return string
- */
- protected function compileRowConstraint($query)
- {
- $start = (int) $query->offset + 1;
-
- if ($query->limit > 0) {
- $finish = (int) $query->offset + (int) $query->limit;
-
- return "between {$start} and {$finish}";
- }
-
- return ">= {$start}";
- }
-
- /**
- * Compile a delete statement without joins into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param string $table
- * @param string $where
- * @return string
- */
- protected function compileDeleteWithoutJoins(Builder $query, $table, $where)
- {
- $sql = parent::compileDeleteWithoutJoins($query, $table, $where);
-
- return ! is_null($query->limit) && $query->limit > 0 && $query->offset <= 0
- ? Str::replaceFirst('delete', 'delete top ('.$query->limit.')', $sql)
- : $sql;
- }
-
- /**
- * Compile the random statement into SQL.
- *
- * @param string $seed
- * @return string
- */
- public function compileRandom($seed)
- {
- return 'NEWID()';
- }
-
- /**
- * Compile the "limit" portions of the query.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param int $limit
- * @return string
- */
- protected function compileLimit(Builder $query, $limit)
- {
- return '';
- }
-
- /**
- * Compile the "offset" portions of the query.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param int $offset
- * @return string
- */
- protected function compileOffset(Builder $query, $offset)
- {
- return '';
- }
-
- /**
- * Compile the lock into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param bool|string $value
- * @return string
- */
- protected function compileLock(Builder $query, $value)
- {
- return '';
- }
-
- /**
- * Wrap a union subquery in parentheses.
- *
- * @param string $sql
- * @return string
- */
- protected function wrapUnion($sql)
- {
- return 'select * from ('.$sql.') as '.$this->wrapTable('temp_table');
- }
-
- /**
- * Compile an exists statement into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @return string
- */
- public function compileExists(Builder $query)
- {
- $existsQuery = clone $query;
-
- $existsQuery->columns = [];
-
- return $this->compileSelect($existsQuery->selectRaw('1 [exists]')->limit(1));
- }
-
- /**
- * Compile an update statement with joins into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param string $table
- * @param string $columns
- * @param string $where
- * @return string
- */
- protected function compileUpdateWithJoins(Builder $query, $table, $columns, $where)
- {
- $alias = last(explode(' as ', $table));
-
- $joins = $this->compileJoins($query, $query->joins);
-
- return "update {$alias} set {$columns} from {$table} {$joins} {$where}";
- }
-
- /**
- * Compile an "upsert" statement into SQL.
- *
- * @param \Illuminate\Database\Query\Builder $query
- * @param array $values
- * @param array $uniqueBy
- * @param array $update
- * @return string
- */
- public function compileUpsert(Builder $query, array $values, array $uniqueBy, array $update)
- {
- $columns = $this->columnize(array_keys(reset($values)));
-
- $sql = 'merge '.$this->wrapTable($query->from).' ';
-
- $parameters = collect($values)->map(function ($record) {
- return '('.$this->parameterize($record).')';
- })->implode(', ');
-
- $sql .= 'using (values '.$parameters.') '.$this->wrapTable('laravel_source').' ('.$columns.') ';
-
- $on = collect($uniqueBy)->map(function ($column) use ($query) {
- return $this->wrap('laravel_source.'.$column).' = '.$this->wrap($query->from.'.'.$column);
- })->implode(' and ');
-
- $sql .= 'on '.$on.' ';
-
- if ($update) {
- $update = collect($update)->map(function ($value, $key) {
- return is_numeric($key)
- ? $this->wrap($value).' = '.$this->wrap('laravel_source.'.$value)
- : $this->wrap($key).' = '.$this->parameter($value);
- })->implode(', ');
-
- $sql .= 'when matched then update set '.$update.' ';
- }
-
- $sql .= 'when not matched then insert ('.$columns.') values ('.$columns.');';
-
- return $sql;
- }
-
- /**
- * Prepare the bindings for an update statement.
- *
- * @param array $bindings
- * @param array $values
- * @return array
- */
- public function prepareBindingsForUpdate(array $bindings, array $values)
- {
- $cleanBindings = Arr::except($bindings, 'select');
-
- return array_values(
- array_merge($values, Arr::flatten($cleanBindings))
- );
- }
-
- /**
- * Compile the SQL statement to define a savepoint.
- *
- * @param string $name
- * @return string
- */
- public function compileSavepoint($name)
- {
- return 'SAVE TRANSACTION '.$name;
- }
-
- /**
- * Compile the SQL statement to execute a savepoint rollback.
- *
- * @param string $name
- * @return string
- */
- public function compileSavepointRollBack($name)
- {
- return 'ROLLBACK TRANSACTION '.$name;
- }
-
- /**
- * Get the format for database stored dates.
- *
- * @return string
- */
- public function getDateFormat()
- {
- return 'Y-m-d H:i:s.v';
- }
-
- /**
- * Wrap a single string in keyword identifiers.
- *
- * @param string $value
- * @return string
- */
- protected function wrapValue($value)
- {
- return $value === '*' ? $value : '['.str_replace(']', ']]', $value).']';
- }
-
- /**
- * Wrap the given JSON selector.
- *
- * @param string $value
- * @return string
- */
- protected function wrapJsonSelector($value)
- {
- [$field, $path] = $this->wrapJsonFieldAndPath($value);
-
- return 'json_value('.$field.$path.')';
- }
-
- /**
- * Wrap the given JSON boolean value.
- *
- * @param string $value
- * @return string
- */
- protected function wrapJsonBooleanValue($value)
- {
- return "'".$value."'";
- }
-
- /**
- * Wrap a table in keyword identifiers.
- *
- * @param \Illuminate\Database\Query\Expression|string $table
- * @return string
- */
- public function wrapTable($table)
- {
- if (! $this->isExpression($table)) {
- return $this->wrapTableValuedFunction(parent::wrapTable($table));
- }
-
- return $this->getValue($table);
- }
-
- /**
- * Wrap a table in keyword identifiers.
- *
- * @param string $table
- * @return string
- */
- protected function wrapTableValuedFunction($table)
- {
- if (preg_match('/^(.+?)(\(.*?\))]$/', $table, $matches) === 1) {
- $table = $matches[1].']'.$matches[2];
- }
-
- return $table;
- }
-}
diff --git a/vendor/illuminate/database/Query/JoinClause.php b/vendor/illuminate/database/Query/JoinClause.php
deleted file mode 100755
index 57d650a3..00000000
--- a/vendor/illuminate/database/Query/JoinClause.php
+++ /dev/null
@@ -1,146 +0,0 @@
-type = $type;
- $this->table = $table;
- $this->parentClass = get_class($parentQuery);
- $this->parentGrammar = $parentQuery->getGrammar();
- $this->parentProcessor = $parentQuery->getProcessor();
- $this->parentConnection = $parentQuery->getConnection();
-
- parent::__construct(
- $this->parentConnection, $this->parentGrammar, $this->parentProcessor
- );
- }
-
- /**
- * Add an "on" clause to the join.
- *
- * On clauses can be chained, e.g.
- *
- * $join->on('contacts.user_id', '=', 'users.id')
- * ->on('contacts.info_id', '=', 'info.id')
- *
- * will produce the following SQL:
- *
- * on `contacts`.`user_id` = `users`.`id` and `contacts`.`info_id` = `info`.`id`
- *
- * @param \Closure|string $first
- * @param string|null $operator
- * @param \Illuminate\Database\Query\Expression|string|null $second
- * @param string $boolean
- * @return $this
- *
- * @throws \InvalidArgumentException
- */
- public function on($first, $operator = null, $second = null, $boolean = 'and')
- {
- if ($first instanceof Closure) {
- return $this->whereNested($first, $boolean);
- }
-
- return $this->whereColumn($first, $operator, $second, $boolean);
- }
-
- /**
- * Add an "or on" clause to the join.
- *
- * @param \Closure|string $first
- * @param string|null $operator
- * @param \Illuminate\Database\Query\Expression|string|null $second
- * @return \Illuminate\Database\Query\JoinClause
- */
- public function orOn($first, $operator = null, $second = null)
- {
- return $this->on($first, $operator, $second, 'or');
- }
-
- /**
- * Get a new instance of the join clause builder.
- *
- * @return \Illuminate\Database\Query\JoinClause
- */
- public function newQuery()
- {
- return new static($this->newParentQuery(), $this->type, $this->table);
- }
-
- /**
- * Create a new query instance for sub-query.
- *
- * @return \Illuminate\Database\Query\Builder
- */
- protected function forSubQuery()
- {
- return $this->newParentQuery()->newQuery();
- }
-
- /**
- * Create a new parent query instance.
- *
- * @return \Illuminate\Database\Query\Builder
- */
- protected function newParentQuery()
- {
- $class = $this->parentClass;
-
- return new $class($this->parentConnection, $this->parentGrammar, $this->parentProcessor);
- }
-}
diff --git a/vendor/illuminate/database/Query/Processors/MySqlProcessor.php b/vendor/illuminate/database/Query/Processors/MySqlProcessor.php
deleted file mode 100644
index ce918385..00000000
--- a/vendor/illuminate/database/Query/Processors/MySqlProcessor.php
+++ /dev/null
@@ -1,19 +0,0 @@
-column_name;
- }, $results);
- }
-}
diff --git a/vendor/illuminate/database/Query/Processors/PostgresProcessor.php b/vendor/illuminate/database/Query/Processors/PostgresProcessor.php
deleted file mode 100755
index 5956a8fb..00000000
--- a/vendor/illuminate/database/Query/Processors/PostgresProcessor.php
+++ /dev/null
@@ -1,45 +0,0 @@
-getConnection();
-
- $connection->recordsHaveBeenModified();
-
- $result = $connection->selectFromWriteConnection($sql, $values)[0];
-
- $sequence = $sequence ?: 'id';
-
- $id = is_object($result) ? $result->{$sequence} : $result[$sequence];
-
- return is_numeric($id) ? (int) $id : $id;
- }
-
- /**
- * Process the results of a column listing query.
- *
- * @param array $results
- * @return array
- */
- public function processColumnListing($results)
- {
- return array_map(function ($result) {
- return ((object) $result)->column_name;
- }, $results);
- }
-}
diff --git a/vendor/illuminate/database/Query/Processors/Processor.php b/vendor/illuminate/database/Query/Processors/Processor.php
deleted file mode 100755
index 0069b436..00000000
--- a/vendor/illuminate/database/Query/Processors/Processor.php
+++ /dev/null
@@ -1,49 +0,0 @@
-getConnection()->insert($sql, $values);
-
- $id = $query->getConnection()->getPdo()->lastInsertId($sequence);
-
- return is_numeric($id) ? (int) $id : $id;
- }
-
- /**
- * Process the results of a column listing query.
- *
- * @param array $results
- * @return array
- */
- public function processColumnListing($results)
- {
- return $results;
- }
-}
diff --git a/vendor/illuminate/database/Query/Processors/SQLiteProcessor.php b/vendor/illuminate/database/Query/Processors/SQLiteProcessor.php
deleted file mode 100644
index 65da1dff..00000000
--- a/vendor/illuminate/database/Query/Processors/SQLiteProcessor.php
+++ /dev/null
@@ -1,19 +0,0 @@
-name;
- }, $results);
- }
-}
diff --git a/vendor/illuminate/database/Query/Processors/SqlServerProcessor.php b/vendor/illuminate/database/Query/Processors/SqlServerProcessor.php
deleted file mode 100755
index 49476f09..00000000
--- a/vendor/illuminate/database/Query/Processors/SqlServerProcessor.php
+++ /dev/null
@@ -1,70 +0,0 @@
-getConnection();
-
- $connection->insert($sql, $values);
-
- if ($connection->getConfig('odbc') === true) {
- $id = $this->processInsertGetIdForOdbc($connection);
- } else {
- $id = $connection->getPdo()->lastInsertId();
- }
-
- return is_numeric($id) ? (int) $id : $id;
- }
-
- /**
- * Process an "insert get ID" query for ODBC.
- *
- * @param \Illuminate\Database\Connection $connection
- * @return int
- *
- * @throws \Exception
- */
- protected function processInsertGetIdForOdbc(Connection $connection)
- {
- $result = $connection->selectFromWriteConnection(
- 'SELECT CAST(COALESCE(SCOPE_IDENTITY(), @@IDENTITY) AS int) AS insertid'
- );
-
- if (! $result) {
- throw new Exception('Unable to retrieve lastInsertID for ODBC.');
- }
-
- $row = $result[0];
-
- return is_object($row) ? $row->insertid : $row['insertid'];
- }
-
- /**
- * Process the results of a column listing query.
- *
- * @param array $results
- * @return array
- */
- public function processColumnListing($results)
- {
- return array_map(function ($result) {
- return ((object) $result)->name;
- }, $results);
- }
-}
diff --git a/vendor/illuminate/database/QueryException.php b/vendor/illuminate/database/QueryException.php
deleted file mode 100644
index 74e5a31a..00000000
--- a/vendor/illuminate/database/QueryException.php
+++ /dev/null
@@ -1,79 +0,0 @@
-sql = $sql;
- $this->bindings = $bindings;
- $this->code = $previous->getCode();
- $this->message = $this->formatMessage($sql, $bindings, $previous);
-
- if ($previous instanceof PDOException) {
- $this->errorInfo = $previous->errorInfo;
- }
- }
-
- /**
- * Format the SQL error message.
- *
- * @param string $sql
- * @param array $bindings
- * @param \Throwable $previous
- * @return string
- */
- protected function formatMessage($sql, $bindings, Throwable $previous)
- {
- return $previous->getMessage().' (SQL: '.Str::replaceArray('?', $bindings, $sql).')';
- }
-
- /**
- * Get the SQL for the query.
- *
- * @return string
- */
- public function getSql()
- {
- return $this->sql;
- }
-
- /**
- * Get the bindings for the query.
- *
- * @return array
- */
- public function getBindings()
- {
- return $this->bindings;
- }
-}
diff --git a/vendor/illuminate/database/README.md b/vendor/illuminate/database/README.md
deleted file mode 100755
index 90199360..00000000
--- a/vendor/illuminate/database/README.md
+++ /dev/null
@@ -1,69 +0,0 @@
-## Illuminate Database
-
-The Illuminate Database component is a full database toolkit for PHP, providing an expressive query builder, ActiveRecord style ORM, and schema builder. It currently supports MySQL, Postgres, SQL Server, and SQLite. It also serves as the database layer of the Laravel PHP framework.
-
-### Usage Instructions
-
-First, create a new "Capsule" manager instance. Capsule aims to make configuring the library for usage outside of the Laravel framework as easy as possible.
-
-```PHP
-use Illuminate\Database\Capsule\Manager as Capsule;
-
-$capsule = new Capsule;
-
-$capsule->addConnection([
- 'driver' => 'mysql',
- 'host' => 'localhost',
- 'database' => 'database',
- 'username' => 'root',
- 'password' => 'password',
- 'charset' => 'utf8',
- 'collation' => 'utf8_unicode_ci',
- 'prefix' => '',
-]);
-
-// Set the event dispatcher used by Eloquent models... (optional)
-use Illuminate\Events\Dispatcher;
-use Illuminate\Container\Container;
-$capsule->setEventDispatcher(new Dispatcher(new Container));
-
-// Make this Capsule instance available globally via static methods... (optional)
-$capsule->setAsGlobal();
-
-// Setup the Eloquent ORM... (optional; unless you've used setEventDispatcher())
-$capsule->bootEloquent();
-```
-
-> `composer require "illuminate/events"` required when you need to use observers with Eloquent.
-
-Once the Capsule instance has been registered. You may use it like so:
-
-**Using The Query Builder**
-
-```PHP
-$users = Capsule::table('users')->where('votes', '>', 100)->get();
-```
-Other core methods may be accessed directly from the Capsule in the same manner as from the DB facade:
-```PHP
-$results = Capsule::select('select * from users where id = ?', [1]);
-```
-
-**Using The Schema Builder**
-
-```PHP
-Capsule::schema()->create('users', function ($table) {
- $table->increments('id');
- $table->string('email')->unique();
- $table->timestamps();
-});
-```
-
-**Using The Eloquent ORM**
-
-```PHP
-class User extends Illuminate\Database\Eloquent\Model {}
-
-$users = User::where('votes', '>', 1)->get();
-```
-
-For further documentation on using the various database facilities this library provides, consult the [Laravel framework documentation](https://laravel.com/docs).
diff --git a/vendor/illuminate/database/RecordsNotFoundException.php b/vendor/illuminate/database/RecordsNotFoundException.php
deleted file mode 100755
index 3e0d9557..00000000
--- a/vendor/illuminate/database/RecordsNotFoundException.php
+++ /dev/null
@@ -1,10 +0,0 @@
-getForeignKeyConstraintsConfigurationValue();
-
- if ($enableForeignKeyConstraints === null) {
- return;
- }
-
- $enableForeignKeyConstraints
- ? $this->getSchemaBuilder()->enableForeignKeyConstraints()
- : $this->getSchemaBuilder()->disableForeignKeyConstraints();
- }
-
- /**
- * Get the default query grammar instance.
- *
- * @return \Illuminate\Database\Query\Grammars\SQLiteGrammar
- */
- protected function getDefaultQueryGrammar()
- {
- return $this->withTablePrefix(new QueryGrammar);
- }
-
- /**
- * Get a schema builder instance for the connection.
- *
- * @return \Illuminate\Database\Schema\SQLiteBuilder
- */
- public function getSchemaBuilder()
- {
- if (is_null($this->schemaGrammar)) {
- $this->useDefaultSchemaGrammar();
- }
-
- return new SQLiteBuilder($this);
- }
-
- /**
- * Get the default schema grammar instance.
- *
- * @return \Illuminate\Database\Schema\Grammars\SQLiteGrammar
- */
- protected function getDefaultSchemaGrammar()
- {
- return $this->withTablePrefix(new SchemaGrammar);
- }
-
- /**
- * Get the schema state for the connection.
- *
- * @param \Illuminate\Filesystem\Filesystem|null $files
- * @param callable|null $processFactory
- *
- * @throws \RuntimeException
- */
- public function getSchemaState(Filesystem $files = null, callable $processFactory = null)
- {
- return new SqliteSchemaState($this, $files, $processFactory);
- }
-
- /**
- * Get the default post processor instance.
- *
- * @return \Illuminate\Database\Query\Processors\SQLiteProcessor
- */
- protected function getDefaultPostProcessor()
- {
- return new SQLiteProcessor;
- }
-
- /**
- * Get the Doctrine DBAL driver.
- *
- * @return \Doctrine\DBAL\Driver\PDOSqlite\Driver|\Illuminate\Database\PDO\SQLiteDriver
- */
- protected function getDoctrineDriver()
- {
- return class_exists(Version::class) ? new DoctrineDriver : new SQLiteDriver;
- }
-
- /**
- * Get the database connection foreign key constraints configuration option.
- *
- * @return bool|null
- */
- protected function getForeignKeyConstraintsConfigurationValue()
- {
- return $this->getConfig('foreign_key_constraints');
- }
-}
diff --git a/vendor/illuminate/database/Schema/Blueprint.php b/vendor/illuminate/database/Schema/Blueprint.php
deleted file mode 100755
index e2b968ab..00000000
--- a/vendor/illuminate/database/Schema/Blueprint.php
+++ /dev/null
@@ -1,1687 +0,0 @@
-table = $table;
- $this->prefix = $prefix;
-
- if (! is_null($callback)) {
- $callback($this);
- }
- }
-
- /**
- * Execute the blueprint against the database.
- *
- * @param \Illuminate\Database\Connection $connection
- * @param \Illuminate\Database\Schema\Grammars\Grammar $grammar
- * @return void
- */
- public function build(Connection $connection, Grammar $grammar)
- {
- foreach ($this->toSql($connection, $grammar) as $statement) {
- $connection->statement($statement);
- }
- }
-
- /**
- * Get the raw SQL statements for the blueprint.
- *
- * @param \Illuminate\Database\Connection $connection
- * @param \Illuminate\Database\Schema\Grammars\Grammar $grammar
- * @return array
- */
- public function toSql(Connection $connection, Grammar $grammar)
- {
- $this->addImpliedCommands($grammar);
-
- $statements = [];
-
- // Each type of command has a corresponding compiler function on the schema
- // grammar which is used to build the necessary SQL statements to build
- // the blueprint element, so we'll just call that compilers function.
- $this->ensureCommandsAreValid($connection);
-
- foreach ($this->commands as $command) {
- $method = 'compile'.ucfirst($command->name);
-
- if (method_exists($grammar, $method) || $grammar::hasMacro($method)) {
- if (! is_null($sql = $grammar->$method($this, $command, $connection))) {
- $statements = array_merge($statements, (array) $sql);
- }
- }
- }
-
- return $statements;
- }
-
- /**
- * Ensure the commands on the blueprint are valid for the connection type.
- *
- * @param \Illuminate\Database\Connection $connection
- * @return void
- *
- * @throws \BadMethodCallException
- */
- protected function ensureCommandsAreValid(Connection $connection)
- {
- if ($connection instanceof SQLiteConnection) {
- if ($this->commandsNamed(['dropColumn', 'renameColumn'])->count() > 1) {
- throw new BadMethodCallException(
- "SQLite doesn't support multiple calls to dropColumn / renameColumn in a single modification."
- );
- }
-
- if ($this->commandsNamed(['dropForeign'])->count() > 0) {
- throw new BadMethodCallException(
- "SQLite doesn't support dropping foreign keys (you would need to re-create the table)."
- );
- }
- }
- }
-
- /**
- * Get all of the commands matching the given names.
- *
- * @param array $names
- * @return \Illuminate\Support\Collection
- */
- protected function commandsNamed(array $names)
- {
- return collect($this->commands)->filter(function ($command) use ($names) {
- return in_array($command->name, $names);
- });
- }
-
- /**
- * Add the commands that are implied by the blueprint's state.
- *
- * @param \Illuminate\Database\Schema\Grammars\Grammar $grammar
- * @return void
- */
- protected function addImpliedCommands(Grammar $grammar)
- {
- if (count($this->getAddedColumns()) > 0 && ! $this->creating()) {
- array_unshift($this->commands, $this->createCommand('add'));
- }
-
- if (count($this->getChangedColumns()) > 0 && ! $this->creating()) {
- array_unshift($this->commands, $this->createCommand('change'));
- }
-
- $this->addFluentIndexes();
-
- $this->addFluentCommands($grammar);
- }
-
- /**
- * Add the index commands fluently specified on columns.
- *
- * @return void
- */
- protected function addFluentIndexes()
- {
- foreach ($this->columns as $column) {
- foreach (['primary', 'unique', 'index', 'spatialIndex'] as $index) {
- // If the index has been specified on the given column, but is simply equal
- // to "true" (boolean), no name has been specified for this index so the
- // index method can be called without a name and it will generate one.
- if ($column->{$index} === true) {
- $this->{$index}($column->name);
- $column->{$index} = false;
-
- continue 2;
- }
-
- // If the index has been specified on the given column, and it has a string
- // value, we'll go ahead and call the index method and pass the name for
- // the index since the developer specified the explicit name for this.
- elseif (isset($column->{$index})) {
- $this->{$index}($column->name, $column->{$index});
- $column->{$index} = false;
-
- continue 2;
- }
- }
- }
- }
-
- /**
- * Add the fluent commands specified on any columns.
- *
- * @param \Illuminate\Database\Schema\Grammars\Grammar $grammar
- * @return void
- */
- public function addFluentCommands(Grammar $grammar)
- {
- foreach ($this->columns as $column) {
- foreach ($grammar->getFluentCommands() as $commandName) {
- $attributeName = lcfirst($commandName);
-
- if (! isset($column->{$attributeName})) {
- continue;
- }
-
- $value = $column->{$attributeName};
-
- $this->addCommand(
- $commandName, compact('value', 'column')
- );
- }
- }
- }
-
- /**
- * Determine if the blueprint has a create command.
- *
- * @return bool
- */
- public function creating()
- {
- return collect($this->commands)->contains(function ($command) {
- return $command->name === 'create';
- });
- }
-
- /**
- * Indicate that the table needs to be created.
- *
- * @return \Illuminate\Support\Fluent
- */
- public function create()
- {
- return $this->addCommand('create');
- }
-
- /**
- * Indicate that the table needs to be temporary.
- *
- * @return void
- */
- public function temporary()
- {
- $this->temporary = true;
- }
-
- /**
- * Indicate that the table should be dropped.
- *
- * @return \Illuminate\Support\Fluent
- */
- public function drop()
- {
- return $this->addCommand('drop');
- }
-
- /**
- * Indicate that the table should be dropped if it exists.
- *
- * @return \Illuminate\Support\Fluent
- */
- public function dropIfExists()
- {
- return $this->addCommand('dropIfExists');
- }
-
- /**
- * Indicate that the given columns should be dropped.
- *
- * @param array|mixed $columns
- * @return \Illuminate\Support\Fluent
- */
- public function dropColumn($columns)
- {
- $columns = is_array($columns) ? $columns : func_get_args();
-
- return $this->addCommand('dropColumn', compact('columns'));
- }
-
- /**
- * Indicate that the given columns should be renamed.
- *
- * @param string $from
- * @param string $to
- * @return \Illuminate\Support\Fluent
- */
- public function renameColumn($from, $to)
- {
- return $this->addCommand('renameColumn', compact('from', 'to'));
- }
-
- /**
- * Indicate that the given primary key should be dropped.
- *
- * @param string|array|null $index
- * @return \Illuminate\Support\Fluent
- */
- public function dropPrimary($index = null)
- {
- return $this->dropIndexCommand('dropPrimary', 'primary', $index);
- }
-
- /**
- * Indicate that the given unique key should be dropped.
- *
- * @param string|array $index
- * @return \Illuminate\Support\Fluent
- */
- public function dropUnique($index)
- {
- return $this->dropIndexCommand('dropUnique', 'unique', $index);
- }
-
- /**
- * Indicate that the given index should be dropped.
- *
- * @param string|array $index
- * @return \Illuminate\Support\Fluent
- */
- public function dropIndex($index)
- {
- return $this->dropIndexCommand('dropIndex', 'index', $index);
- }
-
- /**
- * Indicate that the given spatial index should be dropped.
- *
- * @param string|array $index
- * @return \Illuminate\Support\Fluent
- */
- public function dropSpatialIndex($index)
- {
- return $this->dropIndexCommand('dropSpatialIndex', 'spatialIndex', $index);
- }
-
- /**
- * Indicate that the given foreign key should be dropped.
- *
- * @param string|array $index
- * @return \Illuminate\Support\Fluent
- */
- public function dropForeign($index)
- {
- return $this->dropIndexCommand('dropForeign', 'foreign', $index);
- }
-
- /**
- * Indicate that the given column and foreign key should be dropped.
- *
- * @param string $column
- * @return \Illuminate\Support\Fluent
- */
- public function dropConstrainedForeignId($column)
- {
- $this->dropForeign([$column]);
-
- return $this->dropColumn($column);
- }
-
- /**
- * Indicate that the given indexes should be renamed.
- *
- * @param string $from
- * @param string $to
- * @return \Illuminate\Support\Fluent
- */
- public function renameIndex($from, $to)
- {
- return $this->addCommand('renameIndex', compact('from', 'to'));
- }
-
- /**
- * Indicate that the timestamp columns should be dropped.
- *
- * @return void
- */
- public function dropTimestamps()
- {
- $this->dropColumn('created_at', 'updated_at');
- }
-
- /**
- * Indicate that the timestamp columns should be dropped.
- *
- * @return void
- */
- public function dropTimestampsTz()
- {
- $this->dropTimestamps();
- }
-
- /**
- * Indicate that the soft delete column should be dropped.
- *
- * @param string $column
- * @return void
- */
- public function dropSoftDeletes($column = 'deleted_at')
- {
- $this->dropColumn($column);
- }
-
- /**
- * Indicate that the soft delete column should be dropped.
- *
- * @param string $column
- * @return void
- */
- public function dropSoftDeletesTz($column = 'deleted_at')
- {
- $this->dropSoftDeletes($column);
- }
-
- /**
- * Indicate that the remember token column should be dropped.
- *
- * @return void
- */
- public function dropRememberToken()
- {
- $this->dropColumn('remember_token');
- }
-
- /**
- * Indicate that the polymorphic columns should be dropped.
- *
- * @param string $name
- * @param string|null $indexName
- * @return void
- */
- public function dropMorphs($name, $indexName = null)
- {
- $this->dropIndex($indexName ?: $this->createIndexName('index', ["{$name}_type", "{$name}_id"]));
-
- $this->dropColumn("{$name}_type", "{$name}_id");
- }
-
- /**
- * Rename the table to a given name.
- *
- * @param string $to
- * @return \Illuminate\Support\Fluent
- */
- public function rename($to)
- {
- return $this->addCommand('rename', compact('to'));
- }
-
- /**
- * Specify the primary key(s) for the table.
- *
- * @param string|array $columns
- * @param string|null $name
- * @param string|null $algorithm
- * @return \Illuminate\Support\Fluent
- */
- public function primary($columns, $name = null, $algorithm = null)
- {
- return $this->indexCommand('primary', $columns, $name, $algorithm);
- }
-
- /**
- * Specify a unique index for the table.
- *
- * @param string|array $columns
- * @param string|null $name
- * @param string|null $algorithm
- * @return \Illuminate\Support\Fluent
- */
- public function unique($columns, $name = null, $algorithm = null)
- {
- return $this->indexCommand('unique', $columns, $name, $algorithm);
- }
-
- /**
- * Specify an index for the table.
- *
- * @param string|array $columns
- * @param string|null $name
- * @param string|null $algorithm
- * @return \Illuminate\Support\Fluent
- */
- public function index($columns, $name = null, $algorithm = null)
- {
- return $this->indexCommand('index', $columns, $name, $algorithm);
- }
-
- /**
- * Specify a spatial index for the table.
- *
- * @param string|array $columns
- * @param string|null $name
- * @return \Illuminate\Support\Fluent
- */
- public function spatialIndex($columns, $name = null)
- {
- return $this->indexCommand('spatialIndex', $columns, $name);
- }
-
- /**
- * Specify a raw index for the table.
- *
- * @param string $expression
- * @param string $name
- * @return \Illuminate\Support\Fluent
- */
- public function rawIndex($expression, $name)
- {
- return $this->index([new Expression($expression)], $name);
- }
-
- /**
- * Specify a foreign key for the table.
- *
- * @param string|array $columns
- * @param string|null $name
- * @return \Illuminate\Database\Schema\ForeignKeyDefinition
- */
- public function foreign($columns, $name = null)
- {
- $command = new ForeignKeyDefinition(
- $this->indexCommand('foreign', $columns, $name)->getAttributes()
- );
-
- $this->commands[count($this->commands) - 1] = $command;
-
- return $command;
- }
-
- /**
- * Create a new auto-incrementing big integer (8-byte) column on the table.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function id($column = 'id')
- {
- return $this->bigIncrements($column);
- }
-
- /**
- * Create a new auto-incrementing integer (4-byte) column on the table.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function increments($column)
- {
- return $this->unsignedInteger($column, true);
- }
-
- /**
- * Create a new auto-incrementing integer (4-byte) column on the table.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function integerIncrements($column)
- {
- return $this->unsignedInteger($column, true);
- }
-
- /**
- * Create a new auto-incrementing tiny integer (1-byte) column on the table.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function tinyIncrements($column)
- {
- return $this->unsignedTinyInteger($column, true);
- }
-
- /**
- * Create a new auto-incrementing small integer (2-byte) column on the table.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function smallIncrements($column)
- {
- return $this->unsignedSmallInteger($column, true);
- }
-
- /**
- * Create a new auto-incrementing medium integer (3-byte) column on the table.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function mediumIncrements($column)
- {
- return $this->unsignedMediumInteger($column, true);
- }
-
- /**
- * Create a new auto-incrementing big integer (8-byte) column on the table.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function bigIncrements($column)
- {
- return $this->unsignedBigInteger($column, true);
- }
-
- /**
- * Create a new char column on the table.
- *
- * @param string $column
- * @param int|null $length
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function char($column, $length = null)
- {
- $length = $length ?: Builder::$defaultStringLength;
-
- return $this->addColumn('char', $column, compact('length'));
- }
-
- /**
- * Create a new string column on the table.
- *
- * @param string $column
- * @param int|null $length
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function string($column, $length = null)
- {
- $length = $length ?: Builder::$defaultStringLength;
-
- return $this->addColumn('string', $column, compact('length'));
- }
-
- /**
- * Create a new tiny text column on the table.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function tinyText($column)
- {
- return $this->addColumn('tinyText', $column);
- }
-
- /**
- * Create a new text column on the table.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function text($column)
- {
- return $this->addColumn('text', $column);
- }
-
- /**
- * Create a new medium text column on the table.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function mediumText($column)
- {
- return $this->addColumn('mediumText', $column);
- }
-
- /**
- * Create a new long text column on the table.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function longText($column)
- {
- return $this->addColumn('longText', $column);
- }
-
- /**
- * Create a new integer (4-byte) column on the table.
- *
- * @param string $column
- * @param bool $autoIncrement
- * @param bool $unsigned
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function integer($column, $autoIncrement = false, $unsigned = false)
- {
- return $this->addColumn('integer', $column, compact('autoIncrement', 'unsigned'));
- }
-
- /**
- * Create a new tiny integer (1-byte) column on the table.
- *
- * @param string $column
- * @param bool $autoIncrement
- * @param bool $unsigned
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function tinyInteger($column, $autoIncrement = false, $unsigned = false)
- {
- return $this->addColumn('tinyInteger', $column, compact('autoIncrement', 'unsigned'));
- }
-
- /**
- * Create a new small integer (2-byte) column on the table.
- *
- * @param string $column
- * @param bool $autoIncrement
- * @param bool $unsigned
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function smallInteger($column, $autoIncrement = false, $unsigned = false)
- {
- return $this->addColumn('smallInteger', $column, compact('autoIncrement', 'unsigned'));
- }
-
- /**
- * Create a new medium integer (3-byte) column on the table.
- *
- * @param string $column
- * @param bool $autoIncrement
- * @param bool $unsigned
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function mediumInteger($column, $autoIncrement = false, $unsigned = false)
- {
- return $this->addColumn('mediumInteger', $column, compact('autoIncrement', 'unsigned'));
- }
-
- /**
- * Create a new big integer (8-byte) column on the table.
- *
- * @param string $column
- * @param bool $autoIncrement
- * @param bool $unsigned
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function bigInteger($column, $autoIncrement = false, $unsigned = false)
- {
- return $this->addColumn('bigInteger', $column, compact('autoIncrement', 'unsigned'));
- }
-
- /**
- * Create a new unsigned integer (4-byte) column on the table.
- *
- * @param string $column
- * @param bool $autoIncrement
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function unsignedInteger($column, $autoIncrement = false)
- {
- return $this->integer($column, $autoIncrement, true);
- }
-
- /**
- * Create a new unsigned tiny integer (1-byte) column on the table.
- *
- * @param string $column
- * @param bool $autoIncrement
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function unsignedTinyInteger($column, $autoIncrement = false)
- {
- return $this->tinyInteger($column, $autoIncrement, true);
- }
-
- /**
- * Create a new unsigned small integer (2-byte) column on the table.
- *
- * @param string $column
- * @param bool $autoIncrement
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function unsignedSmallInteger($column, $autoIncrement = false)
- {
- return $this->smallInteger($column, $autoIncrement, true);
- }
-
- /**
- * Create a new unsigned medium integer (3-byte) column on the table.
- *
- * @param string $column
- * @param bool $autoIncrement
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function unsignedMediumInteger($column, $autoIncrement = false)
- {
- return $this->mediumInteger($column, $autoIncrement, true);
- }
-
- /**
- * Create a new unsigned big integer (8-byte) column on the table.
- *
- * @param string $column
- * @param bool $autoIncrement
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function unsignedBigInteger($column, $autoIncrement = false)
- {
- return $this->bigInteger($column, $autoIncrement, true);
- }
-
- /**
- * Create a new unsigned big integer (8-byte) column on the table.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ForeignIdColumnDefinition
- */
- public function foreignId($column)
- {
- return $this->addColumnDefinition(new ForeignIdColumnDefinition($this, [
- 'type' => 'bigInteger',
- 'name' => $column,
- 'autoIncrement' => false,
- 'unsigned' => true,
- ]));
- }
-
- /**
- * Create a foreign ID column for the given model.
- *
- * @param \Illuminate\Database\Eloquent\Model|string $model
- * @param string|null $column
- * @return \Illuminate\Database\Schema\ForeignIdColumnDefinition
- */
- public function foreignIdFor($model, $column = null)
- {
- if (is_string($model)) {
- $model = new $model;
- }
-
- return $model->getKeyType() === 'int' && $model->getIncrementing()
- ? $this->foreignId($column ?: $model->getForeignKey())
- : $this->foreignUuid($column ?: $model->getForeignKey());
- }
-
- /**
- * Create a new float column on the table.
- *
- * @param string $column
- * @param int $total
- * @param int $places
- * @param bool $unsigned
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function float($column, $total = 8, $places = 2, $unsigned = false)
- {
- return $this->addColumn('float', $column, compact('total', 'places', 'unsigned'));
- }
-
- /**
- * Create a new double column on the table.
- *
- * @param string $column
- * @param int|null $total
- * @param int|null $places
- * @param bool $unsigned
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function double($column, $total = null, $places = null, $unsigned = false)
- {
- return $this->addColumn('double', $column, compact('total', 'places', 'unsigned'));
- }
-
- /**
- * Create a new decimal column on the table.
- *
- * @param string $column
- * @param int $total
- * @param int $places
- * @param bool $unsigned
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function decimal($column, $total = 8, $places = 2, $unsigned = false)
- {
- return $this->addColumn('decimal', $column, compact('total', 'places', 'unsigned'));
- }
-
- /**
- * Create a new unsigned float column on the table.
- *
- * @param string $column
- * @param int $total
- * @param int $places
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function unsignedFloat($column, $total = 8, $places = 2)
- {
- return $this->float($column, $total, $places, true);
- }
-
- /**
- * Create a new unsigned double column on the table.
- *
- * @param string $column
- * @param int $total
- * @param int $places
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function unsignedDouble($column, $total = null, $places = null)
- {
- return $this->double($column, $total, $places, true);
- }
-
- /**
- * Create a new unsigned decimal column on the table.
- *
- * @param string $column
- * @param int $total
- * @param int $places
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function unsignedDecimal($column, $total = 8, $places = 2)
- {
- return $this->decimal($column, $total, $places, true);
- }
-
- /**
- * Create a new boolean column on the table.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function boolean($column)
- {
- return $this->addColumn('boolean', $column);
- }
-
- /**
- * Create a new enum column on the table.
- *
- * @param string $column
- * @param array $allowed
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function enum($column, array $allowed)
- {
- return $this->addColumn('enum', $column, compact('allowed'));
- }
-
- /**
- * Create a new set column on the table.
- *
- * @param string $column
- * @param array $allowed
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function set($column, array $allowed)
- {
- return $this->addColumn('set', $column, compact('allowed'));
- }
-
- /**
- * Create a new json column on the table.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function json($column)
- {
- return $this->addColumn('json', $column);
- }
-
- /**
- * Create a new jsonb column on the table.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function jsonb($column)
- {
- return $this->addColumn('jsonb', $column);
- }
-
- /**
- * Create a new date column on the table.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function date($column)
- {
- return $this->addColumn('date', $column);
- }
-
- /**
- * Create a new date-time column on the table.
- *
- * @param string $column
- * @param int $precision
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function dateTime($column, $precision = 0)
- {
- return $this->addColumn('dateTime', $column, compact('precision'));
- }
-
- /**
- * Create a new date-time column (with time zone) on the table.
- *
- * @param string $column
- * @param int $precision
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function dateTimeTz($column, $precision = 0)
- {
- return $this->addColumn('dateTimeTz', $column, compact('precision'));
- }
-
- /**
- * Create a new time column on the table.
- *
- * @param string $column
- * @param int $precision
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function time($column, $precision = 0)
- {
- return $this->addColumn('time', $column, compact('precision'));
- }
-
- /**
- * Create a new time column (with time zone) on the table.
- *
- * @param string $column
- * @param int $precision
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function timeTz($column, $precision = 0)
- {
- return $this->addColumn('timeTz', $column, compact('precision'));
- }
-
- /**
- * Create a new timestamp column on the table.
- *
- * @param string $column
- * @param int $precision
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function timestamp($column, $precision = 0)
- {
- return $this->addColumn('timestamp', $column, compact('precision'));
- }
-
- /**
- * Create a new timestamp (with time zone) column on the table.
- *
- * @param string $column
- * @param int $precision
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function timestampTz($column, $precision = 0)
- {
- return $this->addColumn('timestampTz', $column, compact('precision'));
- }
-
- /**
- * Add nullable creation and update timestamps to the table.
- *
- * @param int $precision
- * @return void
- */
- public function timestamps($precision = 0)
- {
- $this->timestamp('created_at', $precision)->nullable();
-
- $this->timestamp('updated_at', $precision)->nullable();
- }
-
- /**
- * Add nullable creation and update timestamps to the table.
- *
- * Alias for self::timestamps().
- *
- * @param int $precision
- * @return void
- */
- public function nullableTimestamps($precision = 0)
- {
- $this->timestamps($precision);
- }
-
- /**
- * Add creation and update timestampTz columns to the table.
- *
- * @param int $precision
- * @return void
- */
- public function timestampsTz($precision = 0)
- {
- $this->timestampTz('created_at', $precision)->nullable();
-
- $this->timestampTz('updated_at', $precision)->nullable();
- }
-
- /**
- * Add a "deleted at" timestamp for the table.
- *
- * @param string $column
- * @param int $precision
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function softDeletes($column = 'deleted_at', $precision = 0)
- {
- return $this->timestamp($column, $precision)->nullable();
- }
-
- /**
- * Add a "deleted at" timestampTz for the table.
- *
- * @param string $column
- * @param int $precision
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function softDeletesTz($column = 'deleted_at', $precision = 0)
- {
- return $this->timestampTz($column, $precision)->nullable();
- }
-
- /**
- * Create a new year column on the table.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function year($column)
- {
- return $this->addColumn('year', $column);
- }
-
- /**
- * Create a new binary column on the table.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function binary($column)
- {
- return $this->addColumn('binary', $column);
- }
-
- /**
- * Create a new uuid column on the table.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function uuid($column)
- {
- return $this->addColumn('uuid', $column);
- }
-
- /**
- * Create a new UUID column on the table with a foreign key constraint.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ForeignIdColumnDefinition
- */
- public function foreignUuid($column)
- {
- return $this->addColumnDefinition(new ForeignIdColumnDefinition($this, [
- 'type' => 'uuid',
- 'name' => $column,
- ]));
- }
-
- /**
- * Create a new IP address column on the table.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function ipAddress($column)
- {
- return $this->addColumn('ipAddress', $column);
- }
-
- /**
- * Create a new MAC address column on the table.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function macAddress($column)
- {
- return $this->addColumn('macAddress', $column);
- }
-
- /**
- * Create a new geometry column on the table.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function geometry($column)
- {
- return $this->addColumn('geometry', $column);
- }
-
- /**
- * Create a new point column on the table.
- *
- * @param string $column
- * @param int|null $srid
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function point($column, $srid = null)
- {
- return $this->addColumn('point', $column, compact('srid'));
- }
-
- /**
- * Create a new linestring column on the table.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function lineString($column)
- {
- return $this->addColumn('linestring', $column);
- }
-
- /**
- * Create a new polygon column on the table.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function polygon($column)
- {
- return $this->addColumn('polygon', $column);
- }
-
- /**
- * Create a new geometrycollection column on the table.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function geometryCollection($column)
- {
- return $this->addColumn('geometrycollection', $column);
- }
-
- /**
- * Create a new multipoint column on the table.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function multiPoint($column)
- {
- return $this->addColumn('multipoint', $column);
- }
-
- /**
- * Create a new multilinestring column on the table.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function multiLineString($column)
- {
- return $this->addColumn('multilinestring', $column);
- }
-
- /**
- * Create a new multipolygon column on the table.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function multiPolygon($column)
- {
- return $this->addColumn('multipolygon', $column);
- }
-
- /**
- * Create a new multipolygon column on the table.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function multiPolygonZ($column)
- {
- return $this->addColumn('multipolygonz', $column);
- }
-
- /**
- * Create a new generated, computed column on the table.
- *
- * @param string $column
- * @param string $expression
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function computed($column, $expression)
- {
- return $this->addColumn('computed', $column, compact('expression'));
- }
-
- /**
- * Add the proper columns for a polymorphic table.
- *
- * @param string $name
- * @param string|null $indexName
- * @return void
- */
- public function morphs($name, $indexName = null)
- {
- if (Builder::$defaultMorphKeyType === 'uuid') {
- $this->uuidMorphs($name, $indexName);
- } else {
- $this->numericMorphs($name, $indexName);
- }
- }
-
- /**
- * Add nullable columns for a polymorphic table.
- *
- * @param string $name
- * @param string|null $indexName
- * @return void
- */
- public function nullableMorphs($name, $indexName = null)
- {
- if (Builder::$defaultMorphKeyType === 'uuid') {
- $this->nullableUuidMorphs($name, $indexName);
- } else {
- $this->nullableNumericMorphs($name, $indexName);
- }
- }
-
- /**
- * Add the proper columns for a polymorphic table using numeric IDs (incremental).
- *
- * @param string $name
- * @param string|null $indexName
- * @return void
- */
- public function numericMorphs($name, $indexName = null)
- {
- $this->string("{$name}_type");
-
- $this->unsignedBigInteger("{$name}_id");
-
- $this->index(["{$name}_type", "{$name}_id"], $indexName);
- }
-
- /**
- * Add nullable columns for a polymorphic table using numeric IDs (incremental).
- *
- * @param string $name
- * @param string|null $indexName
- * @return void
- */
- public function nullableNumericMorphs($name, $indexName = null)
- {
- $this->string("{$name}_type")->nullable();
-
- $this->unsignedBigInteger("{$name}_id")->nullable();
-
- $this->index(["{$name}_type", "{$name}_id"], $indexName);
- }
-
- /**
- * Add the proper columns for a polymorphic table using UUIDs.
- *
- * @param string $name
- * @param string|null $indexName
- * @return void
- */
- public function uuidMorphs($name, $indexName = null)
- {
- $this->string("{$name}_type");
-
- $this->uuid("{$name}_id");
-
- $this->index(["{$name}_type", "{$name}_id"], $indexName);
- }
-
- /**
- * Add nullable columns for a polymorphic table using UUIDs.
- *
- * @param string $name
- * @param string|null $indexName
- * @return void
- */
- public function nullableUuidMorphs($name, $indexName = null)
- {
- $this->string("{$name}_type")->nullable();
-
- $this->uuid("{$name}_id")->nullable();
-
- $this->index(["{$name}_type", "{$name}_id"], $indexName);
- }
-
- /**
- * Adds the `remember_token` column to the table.
- *
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function rememberToken()
- {
- return $this->string('remember_token', 100)->nullable();
- }
-
- /**
- * Add a new index command to the blueprint.
- *
- * @param string $type
- * @param string|array $columns
- * @param string $index
- * @param string|null $algorithm
- * @return \Illuminate\Support\Fluent
- */
- protected function indexCommand($type, $columns, $index, $algorithm = null)
- {
- $columns = (array) $columns;
-
- // If no name was specified for this index, we will create one using a basic
- // convention of the table name, followed by the columns, followed by an
- // index type, such as primary or index, which makes the index unique.
- $index = $index ?: $this->createIndexName($type, $columns);
-
- return $this->addCommand(
- $type, compact('index', 'columns', 'algorithm')
- );
- }
-
- /**
- * Create a new drop index command on the blueprint.
- *
- * @param string $command
- * @param string $type
- * @param string|array $index
- * @return \Illuminate\Support\Fluent
- */
- protected function dropIndexCommand($command, $type, $index)
- {
- $columns = [];
-
- // If the given "index" is actually an array of columns, the developer means
- // to drop an index merely by specifying the columns involved without the
- // conventional name, so we will build the index name from the columns.
- if (is_array($index)) {
- $index = $this->createIndexName($type, $columns = $index);
- }
-
- return $this->indexCommand($command, $columns, $index);
- }
-
- /**
- * Create a default index name for the table.
- *
- * @param string $type
- * @param array $columns
- * @return string
- */
- protected function createIndexName($type, array $columns)
- {
- $index = strtolower($this->prefix.$this->table.'_'.implode('_', $columns).'_'.$type);
-
- return str_replace(['-', '.'], '_', $index);
- }
-
- /**
- * Add a new column to the blueprint.
- *
- * @param string $type
- * @param string $name
- * @param array $parameters
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- public function addColumn($type, $name, array $parameters = [])
- {
- return $this->addColumnDefinition(new ColumnDefinition(
- array_merge(compact('type', 'name'), $parameters)
- ));
- }
-
- /**
- * Add a new column definition to the blueprint.
- *
- * @param \Illuminate\Database\Schema\ColumnDefinition $definition
- * @return \Illuminate\Database\Schema\ColumnDefinition
- */
- protected function addColumnDefinition($definition)
- {
- $this->columns[] = $definition;
-
- if ($this->after) {
- $definition->after($this->after);
-
- $this->after = $definition->name;
- }
-
- return $definition;
- }
-
- /**
- * Add the columns from the callback after the given column.
- *
- * @param string $column
- * @param \Closure $callback
- * @return void
- */
- public function after($column, Closure $callback)
- {
- $this->after = $column;
-
- $callback($this);
-
- $this->after = null;
- }
-
- /**
- * Remove a column from the schema blueprint.
- *
- * @param string $name
- * @return $this
- */
- public function removeColumn($name)
- {
- $this->columns = array_values(array_filter($this->columns, function ($c) use ($name) {
- return $c['name'] != $name;
- }));
-
- return $this;
- }
-
- /**
- * Add a new command to the blueprint.
- *
- * @param string $name
- * @param array $parameters
- * @return \Illuminate\Support\Fluent
- */
- protected function addCommand($name, array $parameters = [])
- {
- $this->commands[] = $command = $this->createCommand($name, $parameters);
-
- return $command;
- }
-
- /**
- * Create a new Fluent command.
- *
- * @param string $name
- * @param array $parameters
- * @return \Illuminate\Support\Fluent
- */
- protected function createCommand($name, array $parameters = [])
- {
- return new Fluent(array_merge(compact('name'), $parameters));
- }
-
- /**
- * Get the table the blueprint describes.
- *
- * @return string
- */
- public function getTable()
- {
- return $this->table;
- }
-
- /**
- * Get the columns on the blueprint.
- *
- * @return \Illuminate\Database\Schema\ColumnDefinition[]
- */
- public function getColumns()
- {
- return $this->columns;
- }
-
- /**
- * Get the commands on the blueprint.
- *
- * @return \Illuminate\Support\Fluent[]
- */
- public function getCommands()
- {
- return $this->commands;
- }
-
- /**
- * Get the columns on the blueprint that should be added.
- *
- * @return \Illuminate\Database\Schema\ColumnDefinition[]
- */
- public function getAddedColumns()
- {
- return array_filter($this->columns, function ($column) {
- return ! $column->change;
- });
- }
-
- /**
- * Get the columns on the blueprint that should be changed.
- *
- * @return \Illuminate\Database\Schema\ColumnDefinition[]
- */
- public function getChangedColumns()
- {
- return array_filter($this->columns, function ($column) {
- return (bool) $column->change;
- });
- }
-
- /**
- * Determine if the blueprint has auto-increment columns.
- *
- * @return bool
- */
- public function hasAutoIncrementColumn()
- {
- return ! is_null(collect($this->getAddedColumns())->first(function ($column) {
- return $column->autoIncrement === true;
- }));
- }
-
- /**
- * Get the auto-increment column starting values.
- *
- * @return array
- */
- public function autoIncrementingStartingValues()
- {
- if (! $this->hasAutoIncrementColumn()) {
- return [];
- }
-
- return collect($this->getAddedColumns())->mapWithKeys(function ($column) {
- return $column->autoIncrement === true
- ? [$column->name => $column->get('startingValue', $column->get('from'))]
- : [$column->name => null];
- })->filter()->all();
- }
-}
diff --git a/vendor/illuminate/database/Schema/Builder.php b/vendor/illuminate/database/Schema/Builder.php
deleted file mode 100755
index c919d170..00000000
--- a/vendor/illuminate/database/Schema/Builder.php
+++ /dev/null
@@ -1,450 +0,0 @@
-connection = $connection;
- $this->grammar = $connection->getSchemaGrammar();
- }
-
- /**
- * Set the default string length for migrations.
- *
- * @param int $length
- * @return void
- */
- public static function defaultStringLength($length)
- {
- static::$defaultStringLength = $length;
- }
-
- /**
- * Set the default morph key type for migrations.
- *
- * @param string $type
- * @return void
- *
- * @throws \InvalidArgumentException
- */
- public static function defaultMorphKeyType(string $type)
- {
- if (! in_array($type, ['int', 'uuid'])) {
- throw new InvalidArgumentException("Morph key type must be 'int' or 'uuid'.");
- }
-
- static::$defaultMorphKeyType = $type;
- }
-
- /**
- * Set the default morph key type for migrations to UUIDs.
- *
- * @return void
- */
- public static function morphUsingUuids()
- {
- return static::defaultMorphKeyType('uuid');
- }
-
- /**
- * Create a database in the schema.
- *
- * @param string $name
- * @return bool
- *
- * @throws \LogicException
- */
- public function createDatabase($name)
- {
- throw new LogicException('This database driver does not support creating databases.');
- }
-
- /**
- * Drop a database from the schema if the database exists.
- *
- * @param string $name
- * @return bool
- *
- * @throws \LogicException
- */
- public function dropDatabaseIfExists($name)
- {
- throw new LogicException('This database driver does not support dropping databases.');
- }
-
- /**
- * Determine if the given table exists.
- *
- * @param string $table
- * @return bool
- */
- public function hasTable($table)
- {
- $table = $this->connection->getTablePrefix().$table;
-
- return count($this->connection->selectFromWriteConnection(
- $this->grammar->compileTableExists(), [$table]
- )) > 0;
- }
-
- /**
- * Determine if the given table has a given column.
- *
- * @param string $table
- * @param string $column
- * @return bool
- */
- public function hasColumn($table, $column)
- {
- return in_array(
- strtolower($column), array_map('strtolower', $this->getColumnListing($table))
- );
- }
-
- /**
- * Determine if the given table has given columns.
- *
- * @param string $table
- * @param array $columns
- * @return bool
- */
- public function hasColumns($table, array $columns)
- {
- $tableColumns = array_map('strtolower', $this->getColumnListing($table));
-
- foreach ($columns as $column) {
- if (! in_array(strtolower($column), $tableColumns)) {
- return false;
- }
- }
-
- return true;
- }
-
- /**
- * Get the data type for the given column name.
- *
- * @param string $table
- * @param string $column
- * @return string
- */
- public function getColumnType($table, $column)
- {
- $table = $this->connection->getTablePrefix().$table;
-
- return $this->connection->getDoctrineColumn($table, $column)->getType()->getName();
- }
-
- /**
- * Get the column listing for a given table.
- *
- * @param string $table
- * @return array
- */
- public function getColumnListing($table)
- {
- $results = $this->connection->selectFromWriteConnection($this->grammar->compileColumnListing(
- $this->connection->getTablePrefix().$table
- ));
-
- return $this->connection->getPostProcessor()->processColumnListing($results);
- }
-
- /**
- * Modify a table on the schema.
- *
- * @param string $table
- * @param \Closure $callback
- * @return void
- */
- public function table($table, Closure $callback)
- {
- $this->build($this->createBlueprint($table, $callback));
- }
-
- /**
- * Create a new table on the schema.
- *
- * @param string $table
- * @param \Closure $callback
- * @return void
- */
- public function create($table, Closure $callback)
- {
- $this->build(tap($this->createBlueprint($table), function ($blueprint) use ($callback) {
- $blueprint->create();
-
- $callback($blueprint);
- }));
- }
-
- /**
- * Drop a table from the schema.
- *
- * @param string $table
- * @return void
- */
- public function drop($table)
- {
- $this->build(tap($this->createBlueprint($table), function ($blueprint) {
- $blueprint->drop();
- }));
- }
-
- /**
- * Drop a table from the schema if it exists.
- *
- * @param string $table
- * @return void
- */
- public function dropIfExists($table)
- {
- $this->build(tap($this->createBlueprint($table), function ($blueprint) {
- $blueprint->dropIfExists();
- }));
- }
-
- /**
- * Drop columns from a table schema.
- *
- * @param string $table
- * @param string|array $columns
- * @return void
- */
- public function dropColumns($table, $columns)
- {
- $this->table($table, function (Blueprint $blueprint) use ($columns) {
- $blueprint->dropColumn($columns);
- });
- }
-
- /**
- * Drop all tables from the database.
- *
- * @return void
- *
- * @throws \LogicException
- */
- public function dropAllTables()
- {
- throw new LogicException('This database driver does not support dropping all tables.');
- }
-
- /**
- * Drop all views from the database.
- *
- * @return void
- *
- * @throws \LogicException
- */
- public function dropAllViews()
- {
- throw new LogicException('This database driver does not support dropping all views.');
- }
-
- /**
- * Drop all types from the database.
- *
- * @return void
- *
- * @throws \LogicException
- */
- public function dropAllTypes()
- {
- throw new LogicException('This database driver does not support dropping all types.');
- }
-
- /**
- * Get all of the table names for the database.
- *
- * @return void
- *
- * @throws \LogicException
- */
- public function getAllTables()
- {
- throw new LogicException('This database driver does not support getting all tables.');
- }
-
- /**
- * Rename a table on the schema.
- *
- * @param string $from
- * @param string $to
- * @return void
- */
- public function rename($from, $to)
- {
- $this->build(tap($this->createBlueprint($from), function ($blueprint) use ($to) {
- $blueprint->rename($to);
- }));
- }
-
- /**
- * Enable foreign key constraints.
- *
- * @return bool
- */
- public function enableForeignKeyConstraints()
- {
- return $this->connection->statement(
- $this->grammar->compileEnableForeignKeyConstraints()
- );
- }
-
- /**
- * Disable foreign key constraints.
- *
- * @return bool
- */
- public function disableForeignKeyConstraints()
- {
- return $this->connection->statement(
- $this->grammar->compileDisableForeignKeyConstraints()
- );
- }
-
- /**
- * Execute the blueprint to build / modify the table.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @return void
- */
- protected function build(Blueprint $blueprint)
- {
- $blueprint->build($this->connection, $this->grammar);
- }
-
- /**
- * Create a new command set with a Closure.
- *
- * @param string $table
- * @param \Closure|null $callback
- * @return \Illuminate\Database\Schema\Blueprint
- */
- protected function createBlueprint($table, Closure $callback = null)
- {
- $prefix = $this->connection->getConfig('prefix_indexes')
- ? $this->connection->getConfig('prefix')
- : '';
-
- if (isset($this->resolver)) {
- return call_user_func($this->resolver, $table, $callback, $prefix);
- }
-
- return new Blueprint($table, $callback, $prefix);
- }
-
- /**
- * Register a custom Doctrine mapping type.
- *
- * @param string $class
- * @param string $name
- * @param string $type
- * @return void
- *
- * @throws \Doctrine\DBAL\DBALException
- * @throws \RuntimeException
- */
- public function registerCustomDoctrineType($class, $name, $type)
- {
- if (! $this->connection->isDoctrineAvailable()) {
- throw new RuntimeException(
- 'Registering a custom Doctrine type requires Doctrine DBAL (doctrine/dbal).'
- );
- }
-
- if (! Type::hasType($name)) {
- Type::addType($name, $class);
-
- $this->connection
- ->getDoctrineSchemaManager()
- ->getDatabasePlatform()
- ->registerDoctrineTypeMapping($type, $name);
- }
- }
-
- /**
- * Get the database connection instance.
- *
- * @return \Illuminate\Database\Connection
- */
- public function getConnection()
- {
- return $this->connection;
- }
-
- /**
- * Set the database connection instance.
- *
- * @param \Illuminate\Database\Connection $connection
- * @return $this
- */
- public function setConnection(Connection $connection)
- {
- $this->connection = $connection;
-
- return $this;
- }
-
- /**
- * Set the Schema Blueprint resolver callback.
- *
- * @param \Closure $resolver
- * @return void
- */
- public function blueprintResolver(Closure $resolver)
- {
- $this->resolver = $resolver;
- }
-}
diff --git a/vendor/illuminate/database/Schema/ColumnDefinition.php b/vendor/illuminate/database/Schema/ColumnDefinition.php
deleted file mode 100644
index e2fd9cc7..00000000
--- a/vendor/illuminate/database/Schema/ColumnDefinition.php
+++ /dev/null
@@ -1,35 +0,0 @@
-blueprint = $blueprint;
- }
-
- /**
- * Create a foreign key constraint on this column referencing the "id" column of the conventionally related table.
- *
- * @param string|null $table
- * @param string $column
- * @return \Illuminate\Database\Schema\ForeignKeyDefinition
- */
- public function constrained($table = null, $column = 'id')
- {
- return $this->references($column)->on($table ?? Str::plural(Str::beforeLast($this->name, '_'.$column)));
- }
-
- /**
- * Specify which column this foreign ID references on another table.
- *
- * @param string $column
- * @return \Illuminate\Database\Schema\ForeignKeyDefinition
- */
- public function references($column)
- {
- return $this->blueprint->foreign($this->name)->references($column);
- }
-}
diff --git a/vendor/illuminate/database/Schema/ForeignKeyDefinition.php b/vendor/illuminate/database/Schema/ForeignKeyDefinition.php
deleted file mode 100644
index a03fcff7..00000000
--- a/vendor/illuminate/database/Schema/ForeignKeyDefinition.php
+++ /dev/null
@@ -1,66 +0,0 @@
-onUpdate('cascade');
- }
-
- /**
- * Indicate that updates should be restricted.
- *
- * @return $this
- */
- public function restrictOnUpdate()
- {
- return $this->onUpdate('restrict');
- }
-
- /**
- * Indicate that deletes should cascade.
- *
- * @return $this
- */
- public function cascadeOnDelete()
- {
- return $this->onDelete('cascade');
- }
-
- /**
- * Indicate that deletes should be restricted.
- *
- * @return $this
- */
- public function restrictOnDelete()
- {
- return $this->onDelete('restrict');
- }
-
- /**
- * Indicate that deletes should set the foreign key value to null.
- *
- * @return $this
- */
- public function nullOnDelete()
- {
- return $this->onDelete('set null');
- }
-}
diff --git a/vendor/illuminate/database/Schema/Grammars/ChangeColumn.php b/vendor/illuminate/database/Schema/Grammars/ChangeColumn.php
deleted file mode 100644
index 260935f8..00000000
--- a/vendor/illuminate/database/Schema/Grammars/ChangeColumn.php
+++ /dev/null
@@ -1,248 +0,0 @@
-isDoctrineAvailable()) {
- throw new RuntimeException(sprintf(
- 'Changing columns for table "%s" requires Doctrine DBAL. Please install the doctrine/dbal package.',
- $blueprint->getTable()
- ));
- }
-
- $schema = $connection->getDoctrineSchemaManager();
- $databasePlatform = $schema->getDatabasePlatform();
- $databasePlatform->registerDoctrineTypeMapping('enum', 'string');
-
- $tableDiff = static::getChangedDiff(
- $grammar, $blueprint, $schema
- );
-
- if ($tableDiff !== false) {
- return (array) $databasePlatform->getAlterTableSQL($tableDiff);
- }
-
- return [];
- }
-
- /**
- * Get the Doctrine table difference for the given changes.
- *
- * @param \Illuminate\Database\Schema\Grammars\Grammar $grammar
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Doctrine\DBAL\Schema\AbstractSchemaManager $schema
- * @return \Doctrine\DBAL\Schema\TableDiff|bool
- */
- protected static function getChangedDiff($grammar, Blueprint $blueprint, SchemaManager $schema)
- {
- $current = $schema->listTableDetails($grammar->getTablePrefix().$blueprint->getTable());
-
- return (new Comparator)->diffTable(
- $current, static::getTableWithColumnChanges($blueprint, $current)
- );
- }
-
- /**
- * Get a copy of the given Doctrine table after making the column changes.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Doctrine\DBAL\Schema\Table $table
- * @return \Doctrine\DBAL\Schema\Table
- */
- protected static function getTableWithColumnChanges(Blueprint $blueprint, Table $table)
- {
- $table = clone $table;
-
- foreach ($blueprint->getChangedColumns() as $fluent) {
- $column = static::getDoctrineColumn($table, $fluent);
-
- // Here we will spin through each fluent column definition and map it to the proper
- // Doctrine column definitions - which is necessary because Laravel and Doctrine
- // use some different terminology for various column attributes on the tables.
- foreach ($fluent->getAttributes() as $key => $value) {
- if (! is_null($option = static::mapFluentOptionToDoctrine($key))) {
- if (method_exists($column, $method = 'set'.ucfirst($option))) {
- $column->{$method}(static::mapFluentValueToDoctrine($option, $value));
- continue;
- }
-
- $column->setCustomSchemaOption($option, static::mapFluentValueToDoctrine($option, $value));
- }
- }
- }
-
- return $table;
- }
-
- /**
- * Get the Doctrine column instance for a column change.
- *
- * @param \Doctrine\DBAL\Schema\Table $table
- * @param \Illuminate\Support\Fluent $fluent
- * @return \Doctrine\DBAL\Schema\Column
- */
- protected static function getDoctrineColumn(Table $table, Fluent $fluent)
- {
- return $table->changeColumn(
- $fluent['name'], static::getDoctrineColumnChangeOptions($fluent)
- )->getColumn($fluent['name']);
- }
-
- /**
- * Get the Doctrine column change options.
- *
- * @param \Illuminate\Support\Fluent $fluent
- * @return array
- */
- protected static function getDoctrineColumnChangeOptions(Fluent $fluent)
- {
- $options = ['type' => static::getDoctrineColumnType($fluent['type'])];
-
- if (in_array($fluent['type'], ['text', 'mediumText', 'longText'])) {
- $options['length'] = static::calculateDoctrineTextLength($fluent['type']);
- }
-
- if (static::doesntNeedCharacterOptions($fluent['type'])) {
- $options['customSchemaOptions'] = [
- 'collation' => '',
- 'charset' => '',
- ];
- }
-
- return $options;
- }
-
- /**
- * Get the doctrine column type.
- *
- * @param string $type
- * @return \Doctrine\DBAL\Types\Type
- */
- protected static function getDoctrineColumnType($type)
- {
- $type = strtolower($type);
-
- switch ($type) {
- case 'biginteger':
- $type = 'bigint';
- break;
- case 'smallinteger':
- $type = 'smallint';
- break;
- case 'mediumtext':
- case 'longtext':
- $type = 'text';
- break;
- case 'binary':
- $type = 'blob';
- break;
- case 'uuid':
- $type = 'guid';
- break;
- }
-
- return Type::getType($type);
- }
-
- /**
- * Calculate the proper column length to force the Doctrine text type.
- *
- * @param string $type
- * @return int
- */
- protected static function calculateDoctrineTextLength($type)
- {
- switch ($type) {
- case 'mediumText':
- return 65535 + 1;
- case 'longText':
- return 16777215 + 1;
- default:
- return 255 + 1;
- }
- }
-
- /**
- * Determine if the given type does not need character / collation options.
- *
- * @param string $type
- * @return bool
- */
- protected static function doesntNeedCharacterOptions($type)
- {
- return in_array($type, [
- 'bigInteger',
- 'binary',
- 'boolean',
- 'date',
- 'dateTime',
- 'decimal',
- 'double',
- 'float',
- 'integer',
- 'json',
- 'mediumInteger',
- 'smallInteger',
- 'time',
- 'tinyInteger',
- ]);
- }
-
- /**
- * Get the matching Doctrine option for a given Fluent attribute name.
- *
- * @param string $attribute
- * @return string|null
- */
- protected static function mapFluentOptionToDoctrine($attribute)
- {
- switch ($attribute) {
- case 'type':
- case 'name':
- return;
- case 'nullable':
- return 'notnull';
- case 'total':
- return 'precision';
- case 'places':
- return 'scale';
- default:
- return $attribute;
- }
- }
-
- /**
- * Get the matching Doctrine value for a given Fluent attribute.
- *
- * @param string $option
- * @param mixed $value
- * @return mixed
- */
- protected static function mapFluentValueToDoctrine($option, $value)
- {
- return $option === 'notnull' ? ! $value : $value;
- }
-}
diff --git a/vendor/illuminate/database/Schema/Grammars/Grammar.php b/vendor/illuminate/database/Schema/Grammars/Grammar.php
deleted file mode 100755
index 2acaa76a..00000000
--- a/vendor/illuminate/database/Schema/Grammars/Grammar.php
+++ /dev/null
@@ -1,314 +0,0 @@
-wrapTable($blueprint),
- $this->wrap($command->index)
- );
-
- // Once we have the initial portion of the SQL statement we will add on the
- // key name, table name, and referenced columns. These will complete the
- // main portion of the SQL statement and this SQL will almost be done.
- $sql .= sprintf('foreign key (%s) references %s (%s)',
- $this->columnize($command->columns),
- $this->wrapTable($command->on),
- $this->columnize((array) $command->references)
- );
-
- // Once we have the basic foreign key creation statement constructed we can
- // build out the syntax for what should happen on an update or delete of
- // the affected columns, which will get something like "cascade", etc.
- if (! is_null($command->onDelete)) {
- $sql .= " on delete {$command->onDelete}";
- }
-
- if (! is_null($command->onUpdate)) {
- $sql .= " on update {$command->onUpdate}";
- }
-
- return $sql;
- }
-
- /**
- * Compile the blueprint's column definitions.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @return array
- */
- protected function getColumns(Blueprint $blueprint)
- {
- $columns = [];
-
- foreach ($blueprint->getAddedColumns() as $column) {
- // Each of the column types have their own compiler functions which are tasked
- // with turning the column definition into its SQL format for this platform
- // used by the connection. The column's modifiers are compiled and added.
- $sql = $this->wrap($column).' '.$this->getType($column);
-
- $columns[] = $this->addModifiers($sql, $blueprint, $column);
- }
-
- return $columns;
- }
-
- /**
- * Get the SQL for the column data type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function getType(Fluent $column)
- {
- return $this->{'type'.ucfirst($column->type)}($column);
- }
-
- /**
- * Create the column definition for a generated, computed column type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return void
- *
- * @throws \RuntimeException
- */
- protected function typeComputed(Fluent $column)
- {
- throw new RuntimeException('This database driver does not support the computed type.');
- }
-
- /**
- * Add the column modifiers to the definition.
- *
- * @param string $sql
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function addModifiers($sql, Blueprint $blueprint, Fluent $column)
- {
- foreach ($this->modifiers as $modifier) {
- if (method_exists($this, $method = "modify{$modifier}")) {
- $sql .= $this->{$method}($blueprint, $column);
- }
- }
-
- return $sql;
- }
-
- /**
- * Get the primary key command if it exists on the blueprint.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param string $name
- * @return \Illuminate\Support\Fluent|null
- */
- protected function getCommandByName(Blueprint $blueprint, $name)
- {
- $commands = $this->getCommandsByName($blueprint, $name);
-
- if (count($commands) > 0) {
- return reset($commands);
- }
- }
-
- /**
- * Get all of the commands with a given name.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param string $name
- * @return array
- */
- protected function getCommandsByName(Blueprint $blueprint, $name)
- {
- return array_filter($blueprint->getCommands(), function ($value) use ($name) {
- return $value->name == $name;
- });
- }
-
- /**
- * Add a prefix to an array of values.
- *
- * @param string $prefix
- * @param array $values
- * @return array
- */
- public function prefixArray($prefix, array $values)
- {
- return array_map(function ($value) use ($prefix) {
- return $prefix.' '.$value;
- }, $values);
- }
-
- /**
- * Wrap a table in keyword identifiers.
- *
- * @param mixed $table
- * @return string
- */
- public function wrapTable($table)
- {
- return parent::wrapTable(
- $table instanceof Blueprint ? $table->getTable() : $table
- );
- }
-
- /**
- * Wrap a value in keyword identifiers.
- *
- * @param \Illuminate\Database\Query\Expression|string $value
- * @param bool $prefixAlias
- * @return string
- */
- public function wrap($value, $prefixAlias = false)
- {
- return parent::wrap(
- $value instanceof Fluent ? $value->name : $value, $prefixAlias
- );
- }
-
- /**
- * Format a value so that it can be used in "default" clauses.
- *
- * @param mixed $value
- * @return string
- */
- protected function getDefaultValue($value)
- {
- if ($value instanceof Expression) {
- return $value;
- }
-
- return is_bool($value)
- ? "'".(int) $value."'"
- : "'".(string) $value."'";
- }
-
- /**
- * Create an empty Doctrine DBAL TableDiff from the Blueprint.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Doctrine\DBAL\Schema\AbstractSchemaManager $schema
- * @return \Doctrine\DBAL\Schema\TableDiff
- */
- public function getDoctrineTableDiff(Blueprint $blueprint, SchemaManager $schema)
- {
- $table = $this->getTablePrefix().$blueprint->getTable();
-
- return tap(new TableDiff($table), function ($tableDiff) use ($schema, $table) {
- $tableDiff->fromTable = $schema->listTableDetails($table);
- });
- }
-
- /**
- * Get the fluent commands for the grammar.
- *
- * @return array
- */
- public function getFluentCommands()
- {
- return $this->fluentCommands;
- }
-
- /**
- * Check if this Grammar supports schema changes wrapped in a transaction.
- *
- * @return bool
- */
- public function supportsSchemaTransactions()
- {
- return $this->transactions;
- }
-}
diff --git a/vendor/illuminate/database/Schema/Grammars/MySqlGrammar.php b/vendor/illuminate/database/Schema/Grammars/MySqlGrammar.php
deleted file mode 100755
index b6e4e356..00000000
--- a/vendor/illuminate/database/Schema/Grammars/MySqlGrammar.php
+++ /dev/null
@@ -1,1115 +0,0 @@
-wrapValue($name),
- $this->wrapValue($connection->getConfig('charset')),
- $this->wrapValue($connection->getConfig('collation')),
- );
- }
-
- /**
- * Compile a drop database if exists command.
- *
- * @param string $name
- * @return string
- */
- public function compileDropDatabaseIfExists($name)
- {
- return sprintf(
- 'drop database if exists %s',
- $this->wrapValue($name)
- );
- }
-
- /**
- * Compile the query to determine the list of tables.
- *
- * @return string
- */
- public function compileTableExists()
- {
- return "select * from information_schema.tables where table_schema = ? and table_name = ? and table_type = 'BASE TABLE'";
- }
-
- /**
- * Compile the query to determine the list of columns.
- *
- * @return string
- */
- public function compileColumnListing()
- {
- return 'select column_name as `column_name` from information_schema.columns where table_schema = ? and table_name = ?';
- }
-
- /**
- * Compile a create table command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @param \Illuminate\Database\Connection $connection
- * @return array
- */
- public function compileCreate(Blueprint $blueprint, Fluent $command, Connection $connection)
- {
- $sql = $this->compileCreateTable(
- $blueprint, $command, $connection
- );
-
- // Once we have the primary SQL, we can add the encoding option to the SQL for
- // the table. Then, we can check if a storage engine has been supplied for
- // the table. If so, we will add the engine declaration to the SQL query.
- $sql = $this->compileCreateEncoding(
- $sql, $connection, $blueprint
- );
-
- // Finally, we will append the engine configuration onto this SQL statement as
- // the final thing we do before returning this finished SQL. Once this gets
- // added the query will be ready to execute against the real connections.
- return array_values(array_filter(array_merge([$this->compileCreateEngine(
- $sql, $connection, $blueprint
- )], $this->compileAutoIncrementStartingValues($blueprint))));
- }
-
- /**
- * Create the main create table clause.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @param \Illuminate\Database\Connection $connection
- * @return array
- */
- protected function compileCreateTable($blueprint, $command, $connection)
- {
- return trim(sprintf('%s table %s (%s)',
- $blueprint->temporary ? 'create temporary' : 'create',
- $this->wrapTable($blueprint),
- implode(', ', $this->getColumns($blueprint))
- ));
- }
-
- /**
- * Append the character set specifications to a command.
- *
- * @param string $sql
- * @param \Illuminate\Database\Connection $connection
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @return string
- */
- protected function compileCreateEncoding($sql, Connection $connection, Blueprint $blueprint)
- {
- // First we will set the character set if one has been set on either the create
- // blueprint itself or on the root configuration for the connection that the
- // table is being created on. We will add these to the create table query.
- if (isset($blueprint->charset)) {
- $sql .= ' default character set '.$blueprint->charset;
- } elseif (! is_null($charset = $connection->getConfig('charset'))) {
- $sql .= ' default character set '.$charset;
- }
-
- // Next we will add the collation to the create table statement if one has been
- // added to either this create table blueprint or the configuration for this
- // connection that the query is targeting. We'll add it to this SQL query.
- if (isset($blueprint->collation)) {
- $sql .= " collate '{$blueprint->collation}'";
- } elseif (! is_null($collation = $connection->getConfig('collation'))) {
- $sql .= " collate '{$collation}'";
- }
-
- return $sql;
- }
-
- /**
- * Append the engine specifications to a command.
- *
- * @param string $sql
- * @param \Illuminate\Database\Connection $connection
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @return string
- */
- protected function compileCreateEngine($sql, Connection $connection, Blueprint $blueprint)
- {
- if (isset($blueprint->engine)) {
- return $sql.' engine = '.$blueprint->engine;
- } elseif (! is_null($engine = $connection->getConfig('engine'))) {
- return $sql.' engine = '.$engine;
- }
-
- return $sql;
- }
-
- /**
- * Compile an add column command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return array
- */
- public function compileAdd(Blueprint $blueprint, Fluent $command)
- {
- $columns = $this->prefixArray('add', $this->getColumns($blueprint));
-
- return array_values(array_merge(
- ['alter table '.$this->wrapTable($blueprint).' '.implode(', ', $columns)],
- $this->compileAutoIncrementStartingValues($blueprint)
- ));
- }
-
- /**
- * Compile the auto-incrementing column starting values.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @return array
- */
- public function compileAutoIncrementStartingValues(Blueprint $blueprint)
- {
- return collect($blueprint->autoIncrementingStartingValues())->map(function ($value, $column) use ($blueprint) {
- return 'alter table '.$this->wrapTable($blueprint->getTable()).' auto_increment = '.$value;
- })->all();
- }
-
- /**
- * Compile a primary key command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compilePrimary(Blueprint $blueprint, Fluent $command)
- {
- $command->name(null);
-
- return $this->compileKey($blueprint, $command, 'primary key');
- }
-
- /**
- * Compile a unique key command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileUnique(Blueprint $blueprint, Fluent $command)
- {
- return $this->compileKey($blueprint, $command, 'unique');
- }
-
- /**
- * Compile a plain index key command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileIndex(Blueprint $blueprint, Fluent $command)
- {
- return $this->compileKey($blueprint, $command, 'index');
- }
-
- /**
- * Compile a spatial index key command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileSpatialIndex(Blueprint $blueprint, Fluent $command)
- {
- return $this->compileKey($blueprint, $command, 'spatial index');
- }
-
- /**
- * Compile an index creation command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @param string $type
- * @return string
- */
- protected function compileKey(Blueprint $blueprint, Fluent $command, $type)
- {
- return sprintf('alter table %s add %s %s%s(%s)',
- $this->wrapTable($blueprint),
- $type,
- $this->wrap($command->index),
- $command->algorithm ? ' using '.$command->algorithm : '',
- $this->columnize($command->columns)
- );
- }
-
- /**
- * Compile a drop table command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileDrop(Blueprint $blueprint, Fluent $command)
- {
- return 'drop table '.$this->wrapTable($blueprint);
- }
-
- /**
- * Compile a drop table (if exists) command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileDropIfExists(Blueprint $blueprint, Fluent $command)
- {
- return 'drop table if exists '.$this->wrapTable($blueprint);
- }
-
- /**
- * Compile a drop column command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileDropColumn(Blueprint $blueprint, Fluent $command)
- {
- $columns = $this->prefixArray('drop', $this->wrapArray($command->columns));
-
- return 'alter table '.$this->wrapTable($blueprint).' '.implode(', ', $columns);
- }
-
- /**
- * Compile a drop primary key command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileDropPrimary(Blueprint $blueprint, Fluent $command)
- {
- return 'alter table '.$this->wrapTable($blueprint).' drop primary key';
- }
-
- /**
- * Compile a drop unique key command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileDropUnique(Blueprint $blueprint, Fluent $command)
- {
- $index = $this->wrap($command->index);
-
- return "alter table {$this->wrapTable($blueprint)} drop index {$index}";
- }
-
- /**
- * Compile a drop index command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileDropIndex(Blueprint $blueprint, Fluent $command)
- {
- $index = $this->wrap($command->index);
-
- return "alter table {$this->wrapTable($blueprint)} drop index {$index}";
- }
-
- /**
- * Compile a drop spatial index command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileDropSpatialIndex(Blueprint $blueprint, Fluent $command)
- {
- return $this->compileDropIndex($blueprint, $command);
- }
-
- /**
- * Compile a drop foreign key command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileDropForeign(Blueprint $blueprint, Fluent $command)
- {
- $index = $this->wrap($command->index);
-
- return "alter table {$this->wrapTable($blueprint)} drop foreign key {$index}";
- }
-
- /**
- * Compile a rename table command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileRename(Blueprint $blueprint, Fluent $command)
- {
- $from = $this->wrapTable($blueprint);
-
- return "rename table {$from} to ".$this->wrapTable($command->to);
- }
-
- /**
- * Compile a rename index command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileRenameIndex(Blueprint $blueprint, Fluent $command)
- {
- return sprintf('alter table %s rename index %s to %s',
- $this->wrapTable($blueprint),
- $this->wrap($command->from),
- $this->wrap($command->to)
- );
- }
-
- /**
- * Compile the SQL needed to drop all tables.
- *
- * @param array $tables
- * @return string
- */
- public function compileDropAllTables($tables)
- {
- return 'drop table '.implode(',', $this->wrapArray($tables));
- }
-
- /**
- * Compile the SQL needed to drop all views.
- *
- * @param array $views
- * @return string
- */
- public function compileDropAllViews($views)
- {
- return 'drop view '.implode(',', $this->wrapArray($views));
- }
-
- /**
- * Compile the SQL needed to retrieve all table names.
- *
- * @return string
- */
- public function compileGetAllTables()
- {
- return 'SHOW FULL TABLES WHERE table_type = \'BASE TABLE\'';
- }
-
- /**
- * Compile the SQL needed to retrieve all view names.
- *
- * @return string
- */
- public function compileGetAllViews()
- {
- return 'SHOW FULL TABLES WHERE table_type = \'VIEW\'';
- }
-
- /**
- * Compile the command to enable foreign key constraints.
- *
- * @return string
- */
- public function compileEnableForeignKeyConstraints()
- {
- return 'SET FOREIGN_KEY_CHECKS=1;';
- }
-
- /**
- * Compile the command to disable foreign key constraints.
- *
- * @return string
- */
- public function compileDisableForeignKeyConstraints()
- {
- return 'SET FOREIGN_KEY_CHECKS=0;';
- }
-
- /**
- * Create the column definition for a char type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeChar(Fluent $column)
- {
- return "char({$column->length})";
- }
-
- /**
- * Create the column definition for a string type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeString(Fluent $column)
- {
- return "varchar({$column->length})";
- }
-
- /**
- * Create the column definition for a tiny text type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeTinyText(Fluent $column)
- {
- return 'tinytext';
- }
-
- /**
- * Create the column definition for a text type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeText(Fluent $column)
- {
- return 'text';
- }
-
- /**
- * Create the column definition for a medium text type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeMediumText(Fluent $column)
- {
- return 'mediumtext';
- }
-
- /**
- * Create the column definition for a long text type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeLongText(Fluent $column)
- {
- return 'longtext';
- }
-
- /**
- * Create the column definition for a big integer type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeBigInteger(Fluent $column)
- {
- return 'bigint';
- }
-
- /**
- * Create the column definition for an integer type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeInteger(Fluent $column)
- {
- return 'int';
- }
-
- /**
- * Create the column definition for a medium integer type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeMediumInteger(Fluent $column)
- {
- return 'mediumint';
- }
-
- /**
- * Create the column definition for a tiny integer type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeTinyInteger(Fluent $column)
- {
- return 'tinyint';
- }
-
- /**
- * Create the column definition for a small integer type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeSmallInteger(Fluent $column)
- {
- return 'smallint';
- }
-
- /**
- * Create the column definition for a float type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeFloat(Fluent $column)
- {
- return $this->typeDouble($column);
- }
-
- /**
- * Create the column definition for a double type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeDouble(Fluent $column)
- {
- if ($column->total && $column->places) {
- return "double({$column->total}, {$column->places})";
- }
-
- return 'double';
- }
-
- /**
- * Create the column definition for a decimal type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeDecimal(Fluent $column)
- {
- return "decimal({$column->total}, {$column->places})";
- }
-
- /**
- * Create the column definition for a boolean type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeBoolean(Fluent $column)
- {
- return 'tinyint(1)';
- }
-
- /**
- * Create the column definition for an enumeration type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeEnum(Fluent $column)
- {
- return sprintf('enum(%s)', $this->quoteString($column->allowed));
- }
-
- /**
- * Create the column definition for a set enumeration type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeSet(Fluent $column)
- {
- return sprintf('set(%s)', $this->quoteString($column->allowed));
- }
-
- /**
- * Create the column definition for a json type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeJson(Fluent $column)
- {
- return 'json';
- }
-
- /**
- * Create the column definition for a jsonb type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeJsonb(Fluent $column)
- {
- return 'json';
- }
-
- /**
- * Create the column definition for a date type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeDate(Fluent $column)
- {
- return 'date';
- }
-
- /**
- * Create the column definition for a date-time type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeDateTime(Fluent $column)
- {
- $columnType = $column->precision ? "datetime($column->precision)" : 'datetime';
-
- $current = $column->precision ? "CURRENT_TIMESTAMP($column->precision)" : 'CURRENT_TIMESTAMP';
-
- $columnType = $column->useCurrent ? "$columnType default $current" : $columnType;
-
- return $column->useCurrentOnUpdate ? "$columnType on update $current" : $columnType;
- }
-
- /**
- * Create the column definition for a date-time (with time zone) type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeDateTimeTz(Fluent $column)
- {
- return $this->typeDateTime($column);
- }
-
- /**
- * Create the column definition for a time type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeTime(Fluent $column)
- {
- return $column->precision ? "time($column->precision)" : 'time';
- }
-
- /**
- * Create the column definition for a time (with time zone) type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeTimeTz(Fluent $column)
- {
- return $this->typeTime($column);
- }
-
- /**
- * Create the column definition for a timestamp type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeTimestamp(Fluent $column)
- {
- $columnType = $column->precision ? "timestamp($column->precision)" : 'timestamp';
-
- $current = $column->precision ? "CURRENT_TIMESTAMP($column->precision)" : 'CURRENT_TIMESTAMP';
-
- $columnType = $column->useCurrent ? "$columnType default $current" : $columnType;
-
- return $column->useCurrentOnUpdate ? "$columnType on update $current" : $columnType;
- }
-
- /**
- * Create the column definition for a timestamp (with time zone) type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeTimestampTz(Fluent $column)
- {
- return $this->typeTimestamp($column);
- }
-
- /**
- * Create the column definition for a year type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeYear(Fluent $column)
- {
- return 'year';
- }
-
- /**
- * Create the column definition for a binary type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeBinary(Fluent $column)
- {
- return 'blob';
- }
-
- /**
- * Create the column definition for a uuid type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeUuid(Fluent $column)
- {
- return 'char(36)';
- }
-
- /**
- * Create the column definition for an IP address type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeIpAddress(Fluent $column)
- {
- return 'varchar(45)';
- }
-
- /**
- * Create the column definition for a MAC address type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeMacAddress(Fluent $column)
- {
- return 'varchar(17)';
- }
-
- /**
- * Create the column definition for a spatial Geometry type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- public function typeGeometry(Fluent $column)
- {
- return 'geometry';
- }
-
- /**
- * Create the column definition for a spatial Point type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- public function typePoint(Fluent $column)
- {
- return 'point';
- }
-
- /**
- * Create the column definition for a spatial LineString type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- public function typeLineString(Fluent $column)
- {
- return 'linestring';
- }
-
- /**
- * Create the column definition for a spatial Polygon type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- public function typePolygon(Fluent $column)
- {
- return 'polygon';
- }
-
- /**
- * Create the column definition for a spatial GeometryCollection type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- public function typeGeometryCollection(Fluent $column)
- {
- return 'geometrycollection';
- }
-
- /**
- * Create the column definition for a spatial MultiPoint type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- public function typeMultiPoint(Fluent $column)
- {
- return 'multipoint';
- }
-
- /**
- * Create the column definition for a spatial MultiLineString type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- public function typeMultiLineString(Fluent $column)
- {
- return 'multilinestring';
- }
-
- /**
- * Create the column definition for a spatial MultiPolygon type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- public function typeMultiPolygon(Fluent $column)
- {
- return 'multipolygon';
- }
-
- /**
- * Create the column definition for a generated, computed column type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return void
- *
- * @throws \RuntimeException
- */
- protected function typeComputed(Fluent $column)
- {
- throw new RuntimeException('This database driver requires a type, see the virtualAs / storedAs modifiers.');
- }
-
- /**
- * Get the SQL for a generated virtual column modifier.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $column
- * @return string|null
- */
- protected function modifyVirtualAs(Blueprint $blueprint, Fluent $column)
- {
- if (! is_null($column->virtualAs)) {
- return " as ({$column->virtualAs})";
- }
- }
-
- /**
- * Get the SQL for a generated stored column modifier.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $column
- * @return string|null
- */
- protected function modifyStoredAs(Blueprint $blueprint, Fluent $column)
- {
- if (! is_null($column->storedAs)) {
- return " as ({$column->storedAs}) stored";
- }
- }
-
- /**
- * Get the SQL for an unsigned column modifier.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $column
- * @return string|null
- */
- protected function modifyUnsigned(Blueprint $blueprint, Fluent $column)
- {
- if ($column->unsigned) {
- return ' unsigned';
- }
- }
-
- /**
- * Get the SQL for a character set column modifier.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $column
- * @return string|null
- */
- protected function modifyCharset(Blueprint $blueprint, Fluent $column)
- {
- if (! is_null($column->charset)) {
- return ' character set '.$column->charset;
- }
- }
-
- /**
- * Get the SQL for a collation column modifier.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $column
- * @return string|null
- */
- protected function modifyCollate(Blueprint $blueprint, Fluent $column)
- {
- if (! is_null($column->collation)) {
- return " collate '{$column->collation}'";
- }
- }
-
- /**
- * Get the SQL for a nullable column modifier.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $column
- * @return string|null
- */
- protected function modifyNullable(Blueprint $blueprint, Fluent $column)
- {
- if (is_null($column->virtualAs) && is_null($column->storedAs)) {
- return $column->nullable ? ' null' : ' not null';
- }
-
- if ($column->nullable === false) {
- return ' not null';
- }
- }
-
- /**
- * Get the SQL for a default column modifier.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $column
- * @return string|null
- */
- protected function modifyDefault(Blueprint $blueprint, Fluent $column)
- {
- if (! is_null($column->default)) {
- return ' default '.$this->getDefaultValue($column->default);
- }
- }
-
- /**
- * Get the SQL for an auto-increment column modifier.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $column
- * @return string|null
- */
- protected function modifyIncrement(Blueprint $blueprint, Fluent $column)
- {
- if (in_array($column->type, $this->serials) && $column->autoIncrement) {
- return ' auto_increment primary key';
- }
- }
-
- /**
- * Get the SQL for a "first" column modifier.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $column
- * @return string|null
- */
- protected function modifyFirst(Blueprint $blueprint, Fluent $column)
- {
- if (! is_null($column->first)) {
- return ' first';
- }
- }
-
- /**
- * Get the SQL for an "after" column modifier.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $column
- * @return string|null
- */
- protected function modifyAfter(Blueprint $blueprint, Fluent $column)
- {
- if (! is_null($column->after)) {
- return ' after '.$this->wrap($column->after);
- }
- }
-
- /**
- * Get the SQL for a "comment" column modifier.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $column
- * @return string|null
- */
- protected function modifyComment(Blueprint $blueprint, Fluent $column)
- {
- if (! is_null($column->comment)) {
- return " comment '".addslashes($column->comment)."'";
- }
- }
-
- /**
- * Get the SQL for a SRID column modifier.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $column
- * @return string|null
- */
- protected function modifySrid(Blueprint $blueprint, Fluent $column)
- {
- if (! is_null($column->srid) && is_int($column->srid) && $column->srid > 0) {
- return ' srid '.$column->srid;
- }
- }
-
- /**
- * Wrap a single string in keyword identifiers.
- *
- * @param string $value
- * @return string
- */
- protected function wrapValue($value)
- {
- if ($value !== '*') {
- return '`'.str_replace('`', '``', $value).'`';
- }
-
- return $value;
- }
-}
diff --git a/vendor/illuminate/database/Schema/Grammars/PostgresGrammar.php b/vendor/illuminate/database/Schema/Grammars/PostgresGrammar.php
deleted file mode 100755
index 133da288..00000000
--- a/vendor/illuminate/database/Schema/Grammars/PostgresGrammar.php
+++ /dev/null
@@ -1,1037 +0,0 @@
-wrapValue($name),
- $this->wrapValue($connection->getConfig('charset')),
- );
- }
-
- /**
- * Compile a drop database if exists command.
- *
- * @param string $name
- * @return string
- */
- public function compileDropDatabaseIfExists($name)
- {
- return sprintf(
- 'drop database if exists %s',
- $this->wrapValue($name)
- );
- }
-
- /**
- * Compile the query to determine if a table exists.
- *
- * @return string
- */
- public function compileTableExists()
- {
- return "select * from information_schema.tables where table_schema = ? and table_name = ? and table_type = 'BASE TABLE'";
- }
-
- /**
- * Compile the query to determine the list of columns.
- *
- * @return string
- */
- public function compileColumnListing()
- {
- return 'select column_name from information_schema.columns where table_schema = ? and table_name = ?';
- }
-
- /**
- * Compile a create table command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return array
- */
- public function compileCreate(Blueprint $blueprint, Fluent $command)
- {
- return array_values(array_filter(array_merge([sprintf('%s table %s (%s)',
- $blueprint->temporary ? 'create temporary' : 'create',
- $this->wrapTable($blueprint),
- implode(', ', $this->getColumns($blueprint))
- )], $this->compileAutoIncrementStartingValues($blueprint))));
- }
-
- /**
- * Compile a column addition command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileAdd(Blueprint $blueprint, Fluent $command)
- {
- return array_values(array_filter(array_merge([sprintf('alter table %s %s',
- $this->wrapTable($blueprint),
- implode(', ', $this->prefixArray('add column', $this->getColumns($blueprint)))
- )], $this->compileAutoIncrementStartingValues($blueprint))));
- }
-
- /**
- * Compile the auto-incrementing column starting values.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @return array
- */
- public function compileAutoIncrementStartingValues(Blueprint $blueprint)
- {
- return collect($blueprint->autoIncrementingStartingValues())->map(function ($value, $column) use ($blueprint) {
- return 'alter sequence '.$blueprint->getTable().'_'.$column.'_seq restart with '.$value;
- })->all();
- }
-
- /**
- * Compile a primary key command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compilePrimary(Blueprint $blueprint, Fluent $command)
- {
- $columns = $this->columnize($command->columns);
-
- return 'alter table '.$this->wrapTable($blueprint)." add primary key ({$columns})";
- }
-
- /**
- * Compile a unique key command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileUnique(Blueprint $blueprint, Fluent $command)
- {
- return sprintf('alter table %s add constraint %s unique (%s)',
- $this->wrapTable($blueprint),
- $this->wrap($command->index),
- $this->columnize($command->columns)
- );
- }
-
- /**
- * Compile a plain index key command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileIndex(Blueprint $blueprint, Fluent $command)
- {
- return sprintf('create index %s on %s%s (%s)',
- $this->wrap($command->index),
- $this->wrapTable($blueprint),
- $command->algorithm ? ' using '.$command->algorithm : '',
- $this->columnize($command->columns)
- );
- }
-
- /**
- * Compile a spatial index key command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileSpatialIndex(Blueprint $blueprint, Fluent $command)
- {
- $command->algorithm = 'gist';
-
- return $this->compileIndex($blueprint, $command);
- }
-
- /**
- * Compile a foreign key command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileForeign(Blueprint $blueprint, Fluent $command)
- {
- $sql = parent::compileForeign($blueprint, $command);
-
- if (! is_null($command->deferrable)) {
- $sql .= $command->deferrable ? ' deferrable' : ' not deferrable';
- }
-
- if ($command->deferrable && ! is_null($command->initiallyImmediate)) {
- $sql .= $command->initiallyImmediate ? ' initially immediate' : ' initially deferred';
- }
-
- if (! is_null($command->notValid)) {
- $sql .= ' not valid';
- }
-
- return $sql;
- }
-
- /**
- * Compile a drop table command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileDrop(Blueprint $blueprint, Fluent $command)
- {
- return 'drop table '.$this->wrapTable($blueprint);
- }
-
- /**
- * Compile a drop table (if exists) command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileDropIfExists(Blueprint $blueprint, Fluent $command)
- {
- return 'drop table if exists '.$this->wrapTable($blueprint);
- }
-
- /**
- * Compile the SQL needed to drop all tables.
- *
- * @param array $tables
- * @return string
- */
- public function compileDropAllTables($tables)
- {
- return 'drop table "'.implode('","', $tables).'" cascade';
- }
-
- /**
- * Compile the SQL needed to drop all views.
- *
- * @param array $views
- * @return string
- */
- public function compileDropAllViews($views)
- {
- return 'drop view "'.implode('","', $views).'" cascade';
- }
-
- /**
- * Compile the SQL needed to drop all types.
- *
- * @param array $types
- * @return string
- */
- public function compileDropAllTypes($types)
- {
- return 'drop type "'.implode('","', $types).'" cascade';
- }
-
- /**
- * Compile the SQL needed to retrieve all table names.
- *
- * @param string|array $schema
- * @return string
- */
- public function compileGetAllTables($schema)
- {
- return "select tablename from pg_catalog.pg_tables where schemaname in ('".implode("','", (array) $schema)."')";
- }
-
- /**
- * Compile the SQL needed to retrieve all view names.
- *
- * @param string|array $schema
- * @return string
- */
- public function compileGetAllViews($schema)
- {
- return "select viewname from pg_catalog.pg_views where schemaname in ('".implode("','", (array) $schema)."')";
- }
-
- /**
- * Compile the SQL needed to retrieve all type names.
- *
- * @return string
- */
- public function compileGetAllTypes()
- {
- return 'select distinct pg_type.typname from pg_type inner join pg_enum on pg_enum.enumtypid = pg_type.oid';
- }
-
- /**
- * Compile a drop column command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileDropColumn(Blueprint $blueprint, Fluent $command)
- {
- $columns = $this->prefixArray('drop column', $this->wrapArray($command->columns));
-
- return 'alter table '.$this->wrapTable($blueprint).' '.implode(', ', $columns);
- }
-
- /**
- * Compile a drop primary key command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileDropPrimary(Blueprint $blueprint, Fluent $command)
- {
- $index = $this->wrap("{$blueprint->getTable()}_pkey");
-
- return 'alter table '.$this->wrapTable($blueprint)." drop constraint {$index}";
- }
-
- /**
- * Compile a drop unique key command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileDropUnique(Blueprint $blueprint, Fluent $command)
- {
- $index = $this->wrap($command->index);
-
- return "alter table {$this->wrapTable($blueprint)} drop constraint {$index}";
- }
-
- /**
- * Compile a drop index command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileDropIndex(Blueprint $blueprint, Fluent $command)
- {
- return "drop index {$this->wrap($command->index)}";
- }
-
- /**
- * Compile a drop spatial index command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileDropSpatialIndex(Blueprint $blueprint, Fluent $command)
- {
- return $this->compileDropIndex($blueprint, $command);
- }
-
- /**
- * Compile a drop foreign key command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileDropForeign(Blueprint $blueprint, Fluent $command)
- {
- $index = $this->wrap($command->index);
-
- return "alter table {$this->wrapTable($blueprint)} drop constraint {$index}";
- }
-
- /**
- * Compile a rename table command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileRename(Blueprint $blueprint, Fluent $command)
- {
- $from = $this->wrapTable($blueprint);
-
- return "alter table {$from} rename to ".$this->wrapTable($command->to);
- }
-
- /**
- * Compile a rename index command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileRenameIndex(Blueprint $blueprint, Fluent $command)
- {
- return sprintf('alter index %s rename to %s',
- $this->wrap($command->from),
- $this->wrap($command->to)
- );
- }
-
- /**
- * Compile the command to enable foreign key constraints.
- *
- * @return string
- */
- public function compileEnableForeignKeyConstraints()
- {
- return 'SET CONSTRAINTS ALL IMMEDIATE;';
- }
-
- /**
- * Compile the command to disable foreign key constraints.
- *
- * @return string
- */
- public function compileDisableForeignKeyConstraints()
- {
- return 'SET CONSTRAINTS ALL DEFERRED;';
- }
-
- /**
- * Compile a comment command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileComment(Blueprint $blueprint, Fluent $command)
- {
- return sprintf('comment on column %s.%s is %s',
- $this->wrapTable($blueprint),
- $this->wrap($command->column->name),
- "'".str_replace("'", "''", $command->value)."'"
- );
- }
-
- /**
- * Create the column definition for a char type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeChar(Fluent $column)
- {
- return "char({$column->length})";
- }
-
- /**
- * Create the column definition for a string type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeString(Fluent $column)
- {
- return "varchar({$column->length})";
- }
-
- /**
- * Create the column definition for a tiny text type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeTinyText(Fluent $column)
- {
- return 'varchar(255)';
- }
-
- /**
- * Create the column definition for a text type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeText(Fluent $column)
- {
- return 'text';
- }
-
- /**
- * Create the column definition for a medium text type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeMediumText(Fluent $column)
- {
- return 'text';
- }
-
- /**
- * Create the column definition for a long text type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeLongText(Fluent $column)
- {
- return 'text';
- }
-
- /**
- * Create the column definition for an integer type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeInteger(Fluent $column)
- {
- return $this->generatableColumn('integer', $column);
- }
-
- /**
- * Create the column definition for a big integer type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeBigInteger(Fluent $column)
- {
- return $this->generatableColumn('bigint', $column);
- }
-
- /**
- * Create the column definition for a medium integer type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeMediumInteger(Fluent $column)
- {
- return $this->generatableColumn('integer', $column);
- }
-
- /**
- * Create the column definition for a tiny integer type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeTinyInteger(Fluent $column)
- {
- return $this->generatableColumn('smallint', $column);
- }
-
- /**
- * Create the column definition for a small integer type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeSmallInteger(Fluent $column)
- {
- return $this->generatableColumn('smallint', $column);
- }
-
- /**
- * Create the column definition for a generatable column.
- *
- * @param string $type
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function generatableColumn($type, Fluent $column)
- {
- if (! $column->autoIncrement && is_null($column->generatedAs)) {
- return $type;
- }
-
- if ($column->autoIncrement && is_null($column->generatedAs)) {
- return with([
- 'integer' => 'serial',
- 'bigint' => 'bigserial',
- 'smallint' => 'smallserial',
- ])[$type];
- }
-
- $options = '';
-
- if (! is_bool($column->generatedAs) && ! empty($column->generatedAs)) {
- $options = sprintf(' (%s)', $column->generatedAs);
- }
-
- return sprintf(
- '%s generated %s as identity%s',
- $type,
- $column->always ? 'always' : 'by default',
- $options
- );
- }
-
- /**
- * Create the column definition for a float type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeFloat(Fluent $column)
- {
- return $this->typeDouble($column);
- }
-
- /**
- * Create the column definition for a double type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeDouble(Fluent $column)
- {
- return 'double precision';
- }
-
- /**
- * Create the column definition for a real type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeReal(Fluent $column)
- {
- return 'real';
- }
-
- /**
- * Create the column definition for a decimal type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeDecimal(Fluent $column)
- {
- return "decimal({$column->total}, {$column->places})";
- }
-
- /**
- * Create the column definition for a boolean type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeBoolean(Fluent $column)
- {
- return 'boolean';
- }
-
- /**
- * Create the column definition for an enumeration type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeEnum(Fluent $column)
- {
- return sprintf(
- 'varchar(255) check ("%s" in (%s))',
- $column->name,
- $this->quoteString($column->allowed)
- );
- }
-
- /**
- * Create the column definition for a json type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeJson(Fluent $column)
- {
- return 'json';
- }
-
- /**
- * Create the column definition for a jsonb type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeJsonb(Fluent $column)
- {
- return 'jsonb';
- }
-
- /**
- * Create the column definition for a date type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeDate(Fluent $column)
- {
- return 'date';
- }
-
- /**
- * Create the column definition for a date-time type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeDateTime(Fluent $column)
- {
- return $this->typeTimestamp($column);
- }
-
- /**
- * Create the column definition for a date-time (with time zone) type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeDateTimeTz(Fluent $column)
- {
- return $this->typeTimestampTz($column);
- }
-
- /**
- * Create the column definition for a time type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeTime(Fluent $column)
- {
- return 'time'.(is_null($column->precision) ? '' : "($column->precision)").' without time zone';
- }
-
- /**
- * Create the column definition for a time (with time zone) type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeTimeTz(Fluent $column)
- {
- return 'time'.(is_null($column->precision) ? '' : "($column->precision)").' with time zone';
- }
-
- /**
- * Create the column definition for a timestamp type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeTimestamp(Fluent $column)
- {
- $columnType = 'timestamp'.(is_null($column->precision) ? '' : "($column->precision)").' without time zone';
-
- return $column->useCurrent ? "$columnType default CURRENT_TIMESTAMP" : $columnType;
- }
-
- /**
- * Create the column definition for a timestamp (with time zone) type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeTimestampTz(Fluent $column)
- {
- $columnType = 'timestamp'.(is_null($column->precision) ? '' : "($column->precision)").' with time zone';
-
- return $column->useCurrent ? "$columnType default CURRENT_TIMESTAMP" : $columnType;
- }
-
- /**
- * Create the column definition for a year type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeYear(Fluent $column)
- {
- return $this->typeInteger($column);
- }
-
- /**
- * Create the column definition for a binary type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeBinary(Fluent $column)
- {
- return 'bytea';
- }
-
- /**
- * Create the column definition for a uuid type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeUuid(Fluent $column)
- {
- return 'uuid';
- }
-
- /**
- * Create the column definition for an IP address type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeIpAddress(Fluent $column)
- {
- return 'inet';
- }
-
- /**
- * Create the column definition for a MAC address type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeMacAddress(Fluent $column)
- {
- return 'macaddr';
- }
-
- /**
- * Create the column definition for a spatial Geometry type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeGeometry(Fluent $column)
- {
- return $this->formatPostGisType('geometry', $column);
- }
-
- /**
- * Create the column definition for a spatial Point type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typePoint(Fluent $column)
- {
- return $this->formatPostGisType('point', $column);
- }
-
- /**
- * Create the column definition for a spatial LineString type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeLineString(Fluent $column)
- {
- return $this->formatPostGisType('linestring', $column);
- }
-
- /**
- * Create the column definition for a spatial Polygon type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typePolygon(Fluent $column)
- {
- return $this->formatPostGisType('polygon', $column);
- }
-
- /**
- * Create the column definition for a spatial GeometryCollection type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeGeometryCollection(Fluent $column)
- {
- return $this->formatPostGisType('geometrycollection', $column);
- }
-
- /**
- * Create the column definition for a spatial MultiPoint type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeMultiPoint(Fluent $column)
- {
- return $this->formatPostGisType('multipoint', $column);
- }
-
- /**
- * Create the column definition for a spatial MultiLineString type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- public function typeMultiLineString(Fluent $column)
- {
- return $this->formatPostGisType('multilinestring', $column);
- }
-
- /**
- * Create the column definition for a spatial MultiPolygon type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeMultiPolygon(Fluent $column)
- {
- return $this->formatPostGisType('multipolygon', $column);
- }
-
- /**
- * Create the column definition for a spatial MultiPolygonZ type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeMultiPolygonZ(Fluent $column)
- {
- return $this->formatPostGisType('multipolygonz', $column);
- }
-
- /**
- * Format the column definition for a PostGIS spatial type.
- *
- * @param string $type
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- private function formatPostGisType($type, Fluent $column)
- {
- if ($column->isGeometry === null) {
- return sprintf('geography(%s, %s)', $type, $column->projection ?? '4326');
- }
-
- if ($column->projection !== null) {
- return sprintf('geometry(%s, %s)', $type, $column->projection);
- }
-
- return "geometry({$type})";
- }
-
- /**
- * Get the SQL for a collation column modifier.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $column
- * @return string|null
- */
- protected function modifyCollate(Blueprint $blueprint, Fluent $column)
- {
- if (! is_null($column->collation)) {
- return ' collate '.$this->wrapValue($column->collation);
- }
- }
-
- /**
- * Get the SQL for a nullable column modifier.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $column
- * @return string|null
- */
- protected function modifyNullable(Blueprint $blueprint, Fluent $column)
- {
- return $column->nullable ? ' null' : ' not null';
- }
-
- /**
- * Get the SQL for a default column modifier.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $column
- * @return string|null
- */
- protected function modifyDefault(Blueprint $blueprint, Fluent $column)
- {
- if (! is_null($column->default)) {
- return ' default '.$this->getDefaultValue($column->default);
- }
- }
-
- /**
- * Get the SQL for an auto-increment column modifier.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $column
- * @return string|null
- */
- protected function modifyIncrement(Blueprint $blueprint, Fluent $column)
- {
- if ((in_array($column->type, $this->serials) || ($column->generatedAs !== null)) && $column->autoIncrement) {
- return ' primary key';
- }
- }
-
- /**
- * Get the SQL for a generated virtual column modifier.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $column
- * @return string|null
- */
- protected function modifyVirtualAs(Blueprint $blueprint, Fluent $column)
- {
- if ($column->virtualAs !== null) {
- return " generated always as ({$column->virtualAs})";
- }
- }
-
- /**
- * Get the SQL for a generated stored column modifier.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $column
- * @return string|null
- */
- protected function modifyStoredAs(Blueprint $blueprint, Fluent $column)
- {
- if ($column->storedAs !== null) {
- return " generated always as ({$column->storedAs}) stored";
- }
- }
-}
diff --git a/vendor/illuminate/database/Schema/Grammars/RenameColumn.php b/vendor/illuminate/database/Schema/Grammars/RenameColumn.php
deleted file mode 100644
index 0db0c507..00000000
--- a/vendor/illuminate/database/Schema/Grammars/RenameColumn.php
+++ /dev/null
@@ -1,84 +0,0 @@
-getDoctrineSchemaManager();
- $databasePlatform = $schema->getDatabasePlatform();
- $databasePlatform->registerDoctrineTypeMapping('enum', 'string');
-
- $column = $connection->getDoctrineColumn(
- $grammar->getTablePrefix().$blueprint->getTable(), $command->from
- );
-
- return (array) $databasePlatform->getAlterTableSQL(static::getRenamedDiff(
- $grammar, $blueprint, $command, $column, $schema
- ));
- }
-
- /**
- * Get a new column instance with the new column name.
- *
- * @param \Illuminate\Database\Schema\Grammars\Grammar $grammar
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @param \Doctrine\DBAL\Schema\Column $column
- * @param \Doctrine\DBAL\Schema\AbstractSchemaManager $schema
- * @return \Doctrine\DBAL\Schema\TableDiff
- */
- protected static function getRenamedDiff(Grammar $grammar, Blueprint $blueprint, Fluent $command, Column $column, SchemaManager $schema)
- {
- return static::setRenamedColumns(
- $grammar->getDoctrineTableDiff($blueprint, $schema), $command, $column
- );
- }
-
- /**
- * Set the renamed columns on the table diff.
- *
- * @param \Doctrine\DBAL\Schema\TableDiff $tableDiff
- * @param \Illuminate\Support\Fluent $command
- * @param \Doctrine\DBAL\Schema\Column $column
- * @return \Doctrine\DBAL\Schema\TableDiff
- */
- protected static function setRenamedColumns(TableDiff $tableDiff, Fluent $command, Column $column)
- {
- $tableDiff->renamedColumns = [
- $command->from => new Column($command->to, $column->getType(), self::getWritableColumnOptions($column)),
- ];
-
- return $tableDiff;
- }
-
- /**
- * Get the writable column options.
- *
- * @param \Doctrine\DBAL\Schema\Column $column
- * @return array
- */
- private static function getWritableColumnOptions(Column $column)
- {
- return array_filter($column->toArray(), function (string $name) use ($column) {
- return method_exists($column, 'set'.$name);
- }, ARRAY_FILTER_USE_KEY);
- }
-}
diff --git a/vendor/illuminate/database/Schema/Grammars/SQLiteGrammar.php b/vendor/illuminate/database/Schema/Grammars/SQLiteGrammar.php
deleted file mode 100755
index e699ee68..00000000
--- a/vendor/illuminate/database/Schema/Grammars/SQLiteGrammar.php
+++ /dev/null
@@ -1,925 +0,0 @@
-wrap(str_replace('.', '__', $table)).')';
- }
-
- /**
- * Compile a create table command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileCreate(Blueprint $blueprint, Fluent $command)
- {
- return sprintf('%s table %s (%s%s%s)',
- $blueprint->temporary ? 'create temporary' : 'create',
- $this->wrapTable($blueprint),
- implode(', ', $this->getColumns($blueprint)),
- (string) $this->addForeignKeys($blueprint),
- (string) $this->addPrimaryKeys($blueprint)
- );
- }
-
- /**
- * Get the foreign key syntax for a table creation statement.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @return string|null
- */
- protected function addForeignKeys(Blueprint $blueprint)
- {
- $foreigns = $this->getCommandsByName($blueprint, 'foreign');
-
- return collect($foreigns)->reduce(function ($sql, $foreign) {
- // Once we have all the foreign key commands for the table creation statement
- // we'll loop through each of them and add them to the create table SQL we
- // are building, since SQLite needs foreign keys on the tables creation.
- $sql .= $this->getForeignKey($foreign);
-
- if (! is_null($foreign->onDelete)) {
- $sql .= " on delete {$foreign->onDelete}";
- }
-
- // If this foreign key specifies the action to be taken on update we will add
- // that to the statement here. We'll append it to this SQL and then return
- // the SQL so we can keep adding any other foreign constraints onto this.
- if (! is_null($foreign->onUpdate)) {
- $sql .= " on update {$foreign->onUpdate}";
- }
-
- return $sql;
- }, '');
- }
-
- /**
- * Get the SQL for the foreign key.
- *
- * @param \Illuminate\Support\Fluent $foreign
- * @return string
- */
- protected function getForeignKey($foreign)
- {
- // We need to columnize the columns that the foreign key is being defined for
- // so that it is a properly formatted list. Once we have done this, we can
- // return the foreign key SQL declaration to the calling method for use.
- return sprintf(', foreign key(%s) references %s(%s)',
- $this->columnize($foreign->columns),
- $this->wrapTable($foreign->on),
- $this->columnize((array) $foreign->references)
- );
- }
-
- /**
- * Get the primary key syntax for a table creation statement.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @return string|null
- */
- protected function addPrimaryKeys(Blueprint $blueprint)
- {
- if (! is_null($primary = $this->getCommandByName($blueprint, 'primary'))) {
- return ", primary key ({$this->columnize($primary->columns)})";
- }
- }
-
- /**
- * Compile alter table commands for adding columns.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return array
- */
- public function compileAdd(Blueprint $blueprint, Fluent $command)
- {
- $columns = $this->prefixArray('add column', $this->getColumns($blueprint));
-
- return collect($columns)->reject(function ($column) {
- return preg_match('/as \(.*\) stored/', $column) > 0;
- })->map(function ($column) use ($blueprint) {
- return 'alter table '.$this->wrapTable($blueprint).' '.$column;
- })->all();
- }
-
- /**
- * Compile a unique key command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileUnique(Blueprint $blueprint, Fluent $command)
- {
- return sprintf('create unique index %s on %s (%s)',
- $this->wrap($command->index),
- $this->wrapTable($blueprint),
- $this->columnize($command->columns)
- );
- }
-
- /**
- * Compile a plain index key command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileIndex(Blueprint $blueprint, Fluent $command)
- {
- return sprintf('create index %s on %s (%s)',
- $this->wrap($command->index),
- $this->wrapTable($blueprint),
- $this->columnize($command->columns)
- );
- }
-
- /**
- * Compile a spatial index key command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return void
- *
- * @throws \RuntimeException
- */
- public function compileSpatialIndex(Blueprint $blueprint, Fluent $command)
- {
- throw new RuntimeException('The database driver in use does not support spatial indexes.');
- }
-
- /**
- * Compile a foreign key command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileForeign(Blueprint $blueprint, Fluent $command)
- {
- // Handled on table creation...
- }
-
- /**
- * Compile a drop table command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileDrop(Blueprint $blueprint, Fluent $command)
- {
- return 'drop table '.$this->wrapTable($blueprint);
- }
-
- /**
- * Compile a drop table (if exists) command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileDropIfExists(Blueprint $blueprint, Fluent $command)
- {
- return 'drop table if exists '.$this->wrapTable($blueprint);
- }
-
- /**
- * Compile the SQL needed to drop all tables.
- *
- * @return string
- */
- public function compileDropAllTables()
- {
- return "delete from sqlite_master where type in ('table', 'index', 'trigger')";
- }
-
- /**
- * Compile the SQL needed to drop all views.
- *
- * @return string
- */
- public function compileDropAllViews()
- {
- return "delete from sqlite_master where type in ('view')";
- }
-
- /**
- * Compile the SQL needed to rebuild the database.
- *
- * @return string
- */
- public function compileRebuild()
- {
- return 'vacuum';
- }
-
- /**
- * Compile a drop column command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @param \Illuminate\Database\Connection $connection
- * @return array
- */
- public function compileDropColumn(Blueprint $blueprint, Fluent $command, Connection $connection)
- {
- $tableDiff = $this->getDoctrineTableDiff(
- $blueprint, $schema = $connection->getDoctrineSchemaManager()
- );
-
- foreach ($command->columns as $name) {
- $tableDiff->removedColumns[$name] = $connection->getDoctrineColumn(
- $this->getTablePrefix().$blueprint->getTable(), $name
- );
- }
-
- return (array) $schema->getDatabasePlatform()->getAlterTableSQL($tableDiff);
- }
-
- /**
- * Compile a drop unique key command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileDropUnique(Blueprint $blueprint, Fluent $command)
- {
- $index = $this->wrap($command->index);
-
- return "drop index {$index}";
- }
-
- /**
- * Compile a drop index command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileDropIndex(Blueprint $blueprint, Fluent $command)
- {
- $index = $this->wrap($command->index);
-
- return "drop index {$index}";
- }
-
- /**
- * Compile a drop spatial index command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return void
- *
- * @throws \RuntimeException
- */
- public function compileDropSpatialIndex(Blueprint $blueprint, Fluent $command)
- {
- throw new RuntimeException('The database driver in use does not support spatial indexes.');
- }
-
- /**
- * Compile a rename table command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileRename(Blueprint $blueprint, Fluent $command)
- {
- $from = $this->wrapTable($blueprint);
-
- return "alter table {$from} rename to ".$this->wrapTable($command->to);
- }
-
- /**
- * Compile a rename index command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @param \Illuminate\Database\Connection $connection
- * @return array
- *
- * @throws \RuntimeException
- */
- public function compileRenameIndex(Blueprint $blueprint, Fluent $command, Connection $connection)
- {
- $schemaManager = $connection->getDoctrineSchemaManager();
-
- $indexes = $schemaManager->listTableIndexes($this->getTablePrefix().$blueprint->getTable());
-
- $index = Arr::get($indexes, $command->from);
-
- if (! $index) {
- throw new RuntimeException("Index [{$command->from}] does not exist.");
- }
-
- $newIndex = new Index(
- $command->to, $index->getColumns(), $index->isUnique(),
- $index->isPrimary(), $index->getFlags(), $index->getOptions()
- );
-
- $platform = $schemaManager->getDatabasePlatform();
-
- return [
- $platform->getDropIndexSQL($command->from, $this->getTablePrefix().$blueprint->getTable()),
- $platform->getCreateIndexSQL($newIndex, $this->getTablePrefix().$blueprint->getTable()),
- ];
- }
-
- /**
- * Compile the command to enable foreign key constraints.
- *
- * @return string
- */
- public function compileEnableForeignKeyConstraints()
- {
- return 'PRAGMA foreign_keys = ON;';
- }
-
- /**
- * Compile the command to disable foreign key constraints.
- *
- * @return string
- */
- public function compileDisableForeignKeyConstraints()
- {
- return 'PRAGMA foreign_keys = OFF;';
- }
-
- /**
- * Compile the SQL needed to enable a writable schema.
- *
- * @return string
- */
- public function compileEnableWriteableSchema()
- {
- return 'PRAGMA writable_schema = 1;';
- }
-
- /**
- * Compile the SQL needed to disable a writable schema.
- *
- * @return string
- */
- public function compileDisableWriteableSchema()
- {
- return 'PRAGMA writable_schema = 0;';
- }
-
- /**
- * Create the column definition for a char type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeChar(Fluent $column)
- {
- return 'varchar';
- }
-
- /**
- * Create the column definition for a string type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeString(Fluent $column)
- {
- return 'varchar';
- }
-
- /**
- * Create the column definition for a tiny text type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeTinyText(Fluent $column)
- {
- return 'text';
- }
-
- /**
- * Create the column definition for a text type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeText(Fluent $column)
- {
- return 'text';
- }
-
- /**
- * Create the column definition for a medium text type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeMediumText(Fluent $column)
- {
- return 'text';
- }
-
- /**
- * Create the column definition for a long text type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeLongText(Fluent $column)
- {
- return 'text';
- }
-
- /**
- * Create the column definition for an integer type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeInteger(Fluent $column)
- {
- return 'integer';
- }
-
- /**
- * Create the column definition for a big integer type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeBigInteger(Fluent $column)
- {
- return 'integer';
- }
-
- /**
- * Create the column definition for a medium integer type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeMediumInteger(Fluent $column)
- {
- return 'integer';
- }
-
- /**
- * Create the column definition for a tiny integer type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeTinyInteger(Fluent $column)
- {
- return 'integer';
- }
-
- /**
- * Create the column definition for a small integer type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeSmallInteger(Fluent $column)
- {
- return 'integer';
- }
-
- /**
- * Create the column definition for a float type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeFloat(Fluent $column)
- {
- return 'float';
- }
-
- /**
- * Create the column definition for a double type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeDouble(Fluent $column)
- {
- return 'float';
- }
-
- /**
- * Create the column definition for a decimal type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeDecimal(Fluent $column)
- {
- return 'numeric';
- }
-
- /**
- * Create the column definition for a boolean type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeBoolean(Fluent $column)
- {
- return 'tinyint(1)';
- }
-
- /**
- * Create the column definition for an enumeration type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeEnum(Fluent $column)
- {
- return sprintf(
- 'varchar check ("%s" in (%s))',
- $column->name,
- $this->quoteString($column->allowed)
- );
- }
-
- /**
- * Create the column definition for a json type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeJson(Fluent $column)
- {
- return 'text';
- }
-
- /**
- * Create the column definition for a jsonb type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeJsonb(Fluent $column)
- {
- return 'text';
- }
-
- /**
- * Create the column definition for a date type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeDate(Fluent $column)
- {
- return 'date';
- }
-
- /**
- * Create the column definition for a date-time type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeDateTime(Fluent $column)
- {
- return $this->typeTimestamp($column);
- }
-
- /**
- * Create the column definition for a date-time (with time zone) type.
- *
- * Note: "SQLite does not have a storage class set aside for storing dates and/or times."
- *
- * @link https://www.sqlite.org/datatype3.html
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeDateTimeTz(Fluent $column)
- {
- return $this->typeDateTime($column);
- }
-
- /**
- * Create the column definition for a time type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeTime(Fluent $column)
- {
- return 'time';
- }
-
- /**
- * Create the column definition for a time (with time zone) type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeTimeTz(Fluent $column)
- {
- return $this->typeTime($column);
- }
-
- /**
- * Create the column definition for a timestamp type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeTimestamp(Fluent $column)
- {
- return $column->useCurrent ? 'datetime default CURRENT_TIMESTAMP' : 'datetime';
- }
-
- /**
- * Create the column definition for a timestamp (with time zone) type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeTimestampTz(Fluent $column)
- {
- return $this->typeTimestamp($column);
- }
-
- /**
- * Create the column definition for a year type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeYear(Fluent $column)
- {
- return $this->typeInteger($column);
- }
-
- /**
- * Create the column definition for a binary type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeBinary(Fluent $column)
- {
- return 'blob';
- }
-
- /**
- * Create the column definition for a uuid type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeUuid(Fluent $column)
- {
- return 'varchar';
- }
-
- /**
- * Create the column definition for an IP address type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeIpAddress(Fluent $column)
- {
- return 'varchar';
- }
-
- /**
- * Create the column definition for a MAC address type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeMacAddress(Fluent $column)
- {
- return 'varchar';
- }
-
- /**
- * Create the column definition for a spatial Geometry type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- public function typeGeometry(Fluent $column)
- {
- return 'geometry';
- }
-
- /**
- * Create the column definition for a spatial Point type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- public function typePoint(Fluent $column)
- {
- return 'point';
- }
-
- /**
- * Create the column definition for a spatial LineString type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- public function typeLineString(Fluent $column)
- {
- return 'linestring';
- }
-
- /**
- * Create the column definition for a spatial Polygon type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- public function typePolygon(Fluent $column)
- {
- return 'polygon';
- }
-
- /**
- * Create the column definition for a spatial GeometryCollection type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- public function typeGeometryCollection(Fluent $column)
- {
- return 'geometrycollection';
- }
-
- /**
- * Create the column definition for a spatial MultiPoint type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- public function typeMultiPoint(Fluent $column)
- {
- return 'multipoint';
- }
-
- /**
- * Create the column definition for a spatial MultiLineString type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- public function typeMultiLineString(Fluent $column)
- {
- return 'multilinestring';
- }
-
- /**
- * Create the column definition for a spatial MultiPolygon type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- public function typeMultiPolygon(Fluent $column)
- {
- return 'multipolygon';
- }
-
- /**
- * Create the column definition for a generated, computed column type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return void
- *
- * @throws \RuntimeException
- */
- protected function typeComputed(Fluent $column)
- {
- throw new RuntimeException('This database driver requires a type, see the virtualAs / storedAs modifiers.');
- }
-
- /**
- * Get the SQL for a generated virtual column modifier.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $column
- * @return string|null
- */
- protected function modifyVirtualAs(Blueprint $blueprint, Fluent $column)
- {
- if (! is_null($column->virtualAs)) {
- return " as ({$column->virtualAs})";
- }
- }
-
- /**
- * Get the SQL for a generated stored column modifier.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $column
- * @return string|null
- */
- protected function modifyStoredAs(Blueprint $blueprint, Fluent $column)
- {
- if (! is_null($column->storedAs)) {
- return " as ({$column->storedAs}) stored";
- }
- }
-
- /**
- * Get the SQL for a nullable column modifier.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $column
- * @return string|null
- */
- protected function modifyNullable(Blueprint $blueprint, Fluent $column)
- {
- if (is_null($column->virtualAs) && is_null($column->storedAs)) {
- return $column->nullable ? '' : ' not null';
- }
-
- if ($column->nullable === false) {
- return ' not null';
- }
- }
-
- /**
- * Get the SQL for a default column modifier.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $column
- * @return string|null
- */
- protected function modifyDefault(Blueprint $blueprint, Fluent $column)
- {
- if (! is_null($column->default) && is_null($column->virtualAs) && is_null($column->storedAs)) {
- return ' default '.$this->getDefaultValue($column->default);
- }
- }
-
- /**
- * Get the SQL for an auto-increment column modifier.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $column
- * @return string|null
- */
- protected function modifyIncrement(Blueprint $blueprint, Fluent $column)
- {
- if (in_array($column->type, $this->serials) && $column->autoIncrement) {
- return ' primary key autoincrement';
- }
- }
-}
diff --git a/vendor/illuminate/database/Schema/Grammars/SqlServerGrammar.php b/vendor/illuminate/database/Schema/Grammars/SqlServerGrammar.php
deleted file mode 100755
index caec0204..00000000
--- a/vendor/illuminate/database/Schema/Grammars/SqlServerGrammar.php
+++ /dev/null
@@ -1,934 +0,0 @@
-wrapValue($name),
- );
- }
-
- /**
- * Compile a drop database if exists command.
- *
- * @param string $name
- * @return string
- */
- public function compileDropDatabaseIfExists($name)
- {
- return sprintf(
- 'drop database if exists %s',
- $this->wrapValue($name)
- );
- }
-
- /**
- * Compile the query to determine if a table exists.
- *
- * @return string
- */
- public function compileTableExists()
- {
- return "select * from sys.sysobjects where id = object_id(?) and xtype in ('U', 'V')";
- }
-
- /**
- * Compile the query to determine the list of columns.
- *
- * @param string $table
- * @return string
- */
- public function compileColumnListing($table)
- {
- return "select name from sys.columns where object_id = object_id('$table')";
- }
-
- /**
- * Compile a create table command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileCreate(Blueprint $blueprint, Fluent $command)
- {
- $columns = implode(', ', $this->getColumns($blueprint));
-
- return 'create table '.$this->wrapTable($blueprint)." ($columns)";
- }
-
- /**
- * Compile a column addition table command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileAdd(Blueprint $blueprint, Fluent $command)
- {
- return sprintf('alter table %s add %s',
- $this->wrapTable($blueprint),
- implode(', ', $this->getColumns($blueprint))
- );
- }
-
- /**
- * Compile a primary key command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compilePrimary(Blueprint $blueprint, Fluent $command)
- {
- return sprintf('alter table %s add constraint %s primary key (%s)',
- $this->wrapTable($blueprint),
- $this->wrap($command->index),
- $this->columnize($command->columns)
- );
- }
-
- /**
- * Compile a unique key command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileUnique(Blueprint $blueprint, Fluent $command)
- {
- return sprintf('create unique index %s on %s (%s)',
- $this->wrap($command->index),
- $this->wrapTable($blueprint),
- $this->columnize($command->columns)
- );
- }
-
- /**
- * Compile a plain index key command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileIndex(Blueprint $blueprint, Fluent $command)
- {
- return sprintf('create index %s on %s (%s)',
- $this->wrap($command->index),
- $this->wrapTable($blueprint),
- $this->columnize($command->columns)
- );
- }
-
- /**
- * Compile a spatial index key command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileSpatialIndex(Blueprint $blueprint, Fluent $command)
- {
- return sprintf('create spatial index %s on %s (%s)',
- $this->wrap($command->index),
- $this->wrapTable($blueprint),
- $this->columnize($command->columns)
- );
- }
-
- /**
- * Compile a drop table command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileDrop(Blueprint $blueprint, Fluent $command)
- {
- return 'drop table '.$this->wrapTable($blueprint);
- }
-
- /**
- * Compile a drop table (if exists) command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileDropIfExists(Blueprint $blueprint, Fluent $command)
- {
- return sprintf('if exists (select * from sys.sysobjects where id = object_id(%s, \'U\')) drop table %s',
- "'".str_replace("'", "''", $this->getTablePrefix().$blueprint->getTable())."'",
- $this->wrapTable($blueprint)
- );
- }
-
- /**
- * Compile the SQL needed to drop all tables.
- *
- * @return string
- */
- public function compileDropAllTables()
- {
- return "EXEC sp_msforeachtable 'DROP TABLE ?'";
- }
-
- /**
- * Compile a drop column command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileDropColumn(Blueprint $blueprint, Fluent $command)
- {
- $columns = $this->wrapArray($command->columns);
-
- $dropExistingConstraintsSql = $this->compileDropDefaultConstraint($blueprint, $command).';';
-
- return $dropExistingConstraintsSql.'alter table '.$this->wrapTable($blueprint).' drop column '.implode(', ', $columns);
- }
-
- /**
- * Compile a drop default constraint command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileDropDefaultConstraint(Blueprint $blueprint, Fluent $command)
- {
- $columns = "'".implode("','", $command->columns)."'";
-
- $tableName = $this->getTablePrefix().$blueprint->getTable();
-
- $sql = "DECLARE @sql NVARCHAR(MAX) = '';";
- $sql .= "SELECT @sql += 'ALTER TABLE [dbo].[{$tableName}] DROP CONSTRAINT ' + OBJECT_NAME([default_object_id]) + ';' ";
- $sql .= 'FROM SYS.COLUMNS ';
- $sql .= "WHERE [object_id] = OBJECT_ID('[dbo].[{$tableName}]') AND [name] in ({$columns}) AND [default_object_id] <> 0;";
- $sql .= 'EXEC(@sql)';
-
- return $sql;
- }
-
- /**
- * Compile a drop primary key command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileDropPrimary(Blueprint $blueprint, Fluent $command)
- {
- $index = $this->wrap($command->index);
-
- return "alter table {$this->wrapTable($blueprint)} drop constraint {$index}";
- }
-
- /**
- * Compile a drop unique key command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileDropUnique(Blueprint $blueprint, Fluent $command)
- {
- $index = $this->wrap($command->index);
-
- return "drop index {$index} on {$this->wrapTable($blueprint)}";
- }
-
- /**
- * Compile a drop index command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileDropIndex(Blueprint $blueprint, Fluent $command)
- {
- $index = $this->wrap($command->index);
-
- return "drop index {$index} on {$this->wrapTable($blueprint)}";
- }
-
- /**
- * Compile a drop spatial index command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileDropSpatialIndex(Blueprint $blueprint, Fluent $command)
- {
- return $this->compileDropIndex($blueprint, $command);
- }
-
- /**
- * Compile a drop foreign key command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileDropForeign(Blueprint $blueprint, Fluent $command)
- {
- $index = $this->wrap($command->index);
-
- return "alter table {$this->wrapTable($blueprint)} drop constraint {$index}";
- }
-
- /**
- * Compile a rename table command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileRename(Blueprint $blueprint, Fluent $command)
- {
- $from = $this->wrapTable($blueprint);
-
- return "sp_rename {$from}, ".$this->wrapTable($command->to);
- }
-
- /**
- * Compile a rename index command.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @return string
- */
- public function compileRenameIndex(Blueprint $blueprint, Fluent $command)
- {
- return sprintf("sp_rename N'%s', %s, N'INDEX'",
- $this->wrap($blueprint->getTable().'.'.$command->from),
- $this->wrap($command->to)
- );
- }
-
- /**
- * Compile the command to enable foreign key constraints.
- *
- * @return string
- */
- public function compileEnableForeignKeyConstraints()
- {
- return 'EXEC sp_msforeachtable @command1="print \'?\'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all";';
- }
-
- /**
- * Compile the command to disable foreign key constraints.
- *
- * @return string
- */
- public function compileDisableForeignKeyConstraints()
- {
- return 'EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all";';
- }
-
- /**
- * Compile the command to drop all foreign keys.
- *
- * @return string
- */
- public function compileDropAllForeignKeys()
- {
- return "DECLARE @sql NVARCHAR(MAX) = N'';
- SELECT @sql += 'ALTER TABLE '
- + QUOTENAME(OBJECT_SCHEMA_NAME(parent_object_id)) + '.' + + QUOTENAME(OBJECT_NAME(parent_object_id))
- + ' DROP CONSTRAINT ' + QUOTENAME(name) + ';'
- FROM sys.foreign_keys;
-
- EXEC sp_executesql @sql;";
- }
-
- /**
- * Compile the command to drop all views.
- *
- * @return string
- */
- public function compileDropAllViews()
- {
- return "DECLARE @sql NVARCHAR(MAX) = N'';
- SELECT @sql += 'DROP VIEW ' + QUOTENAME(OBJECT_SCHEMA_NAME(object_id)) + '.' + QUOTENAME(name) + ';'
- FROM sys.views;
-
- EXEC sp_executesql @sql;";
- }
-
- /**
- * Create the column definition for a char type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeChar(Fluent $column)
- {
- return "nchar({$column->length})";
- }
-
- /**
- * Create the column definition for a string type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeString(Fluent $column)
- {
- return "nvarchar({$column->length})";
- }
-
- /**
- * Create the column definition for a tiny text type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeTinyText(Fluent $column)
- {
- return 'nvarchar(255)';
- }
-
- /**
- * Create the column definition for a text type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeText(Fluent $column)
- {
- return 'nvarchar(max)';
- }
-
- /**
- * Create the column definition for a medium text type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeMediumText(Fluent $column)
- {
- return 'nvarchar(max)';
- }
-
- /**
- * Create the column definition for a long text type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeLongText(Fluent $column)
- {
- return 'nvarchar(max)';
- }
-
- /**
- * Create the column definition for an integer type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeInteger(Fluent $column)
- {
- return 'int';
- }
-
- /**
- * Create the column definition for a big integer type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeBigInteger(Fluent $column)
- {
- return 'bigint';
- }
-
- /**
- * Create the column definition for a medium integer type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeMediumInteger(Fluent $column)
- {
- return 'int';
- }
-
- /**
- * Create the column definition for a tiny integer type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeTinyInteger(Fluent $column)
- {
- return 'tinyint';
- }
-
- /**
- * Create the column definition for a small integer type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeSmallInteger(Fluent $column)
- {
- return 'smallint';
- }
-
- /**
- * Create the column definition for a float type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeFloat(Fluent $column)
- {
- return 'float';
- }
-
- /**
- * Create the column definition for a double type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeDouble(Fluent $column)
- {
- return 'float';
- }
-
- /**
- * Create the column definition for a decimal type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeDecimal(Fluent $column)
- {
- return "decimal({$column->total}, {$column->places})";
- }
-
- /**
- * Create the column definition for a boolean type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeBoolean(Fluent $column)
- {
- return 'bit';
- }
-
- /**
- * Create the column definition for an enumeration type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeEnum(Fluent $column)
- {
- return sprintf(
- 'nvarchar(255) check ("%s" in (%s))',
- $column->name,
- $this->quoteString($column->allowed)
- );
- }
-
- /**
- * Create the column definition for a json type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeJson(Fluent $column)
- {
- return 'nvarchar(max)';
- }
-
- /**
- * Create the column definition for a jsonb type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeJsonb(Fluent $column)
- {
- return 'nvarchar(max)';
- }
-
- /**
- * Create the column definition for a date type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeDate(Fluent $column)
- {
- return 'date';
- }
-
- /**
- * Create the column definition for a date-time type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeDateTime(Fluent $column)
- {
- return $this->typeTimestamp($column);
- }
-
- /**
- * Create the column definition for a date-time (with time zone) type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeDateTimeTz(Fluent $column)
- {
- return $this->typeTimestampTz($column);
- }
-
- /**
- * Create the column definition for a time type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeTime(Fluent $column)
- {
- return $column->precision ? "time($column->precision)" : 'time';
- }
-
- /**
- * Create the column definition for a time (with time zone) type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeTimeTz(Fluent $column)
- {
- return $this->typeTime($column);
- }
-
- /**
- * Create the column definition for a timestamp type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeTimestamp(Fluent $column)
- {
- $columnType = $column->precision ? "datetime2($column->precision)" : 'datetime';
-
- return $column->useCurrent ? "$columnType default CURRENT_TIMESTAMP" : $columnType;
- }
-
- /**
- * Create the column definition for a timestamp (with time zone) type.
- *
- * @link https://docs.microsoft.com/en-us/sql/t-sql/data-types/datetimeoffset-transact-sql?view=sql-server-ver15
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeTimestampTz(Fluent $column)
- {
- $columnType = $column->precision ? "datetimeoffset($column->precision)" : 'datetimeoffset';
-
- return $column->useCurrent ? "$columnType default CURRENT_TIMESTAMP" : $columnType;
- }
-
- /**
- * Create the column definition for a year type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeYear(Fluent $column)
- {
- return $this->typeInteger($column);
- }
-
- /**
- * Create the column definition for a binary type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeBinary(Fluent $column)
- {
- return 'varbinary(max)';
- }
-
- /**
- * Create the column definition for a uuid type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeUuid(Fluent $column)
- {
- return 'uniqueidentifier';
- }
-
- /**
- * Create the column definition for an IP address type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeIpAddress(Fluent $column)
- {
- return 'nvarchar(45)';
- }
-
- /**
- * Create the column definition for a MAC address type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- protected function typeMacAddress(Fluent $column)
- {
- return 'nvarchar(17)';
- }
-
- /**
- * Create the column definition for a spatial Geometry type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- public function typeGeometry(Fluent $column)
- {
- return 'geography';
- }
-
- /**
- * Create the column definition for a spatial Point type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- public function typePoint(Fluent $column)
- {
- return 'geography';
- }
-
- /**
- * Create the column definition for a spatial LineString type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- public function typeLineString(Fluent $column)
- {
- return 'geography';
- }
-
- /**
- * Create the column definition for a spatial Polygon type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- public function typePolygon(Fluent $column)
- {
- return 'geography';
- }
-
- /**
- * Create the column definition for a spatial GeometryCollection type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- public function typeGeometryCollection(Fluent $column)
- {
- return 'geography';
- }
-
- /**
- * Create the column definition for a spatial MultiPoint type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- public function typeMultiPoint(Fluent $column)
- {
- return 'geography';
- }
-
- /**
- * Create the column definition for a spatial MultiLineString type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- public function typeMultiLineString(Fluent $column)
- {
- return 'geography';
- }
-
- /**
- * Create the column definition for a spatial MultiPolygon type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string
- */
- public function typeMultiPolygon(Fluent $column)
- {
- return 'geography';
- }
-
- /**
- * Create the column definition for a generated, computed column type.
- *
- * @param \Illuminate\Support\Fluent $column
- * @return string|null
- */
- protected function typeComputed(Fluent $column)
- {
- return "as ({$column->expression})";
- }
-
- /**
- * Get the SQL for a collation column modifier.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $column
- * @return string|null
- */
- protected function modifyCollate(Blueprint $blueprint, Fluent $column)
- {
- if (! is_null($column->collation)) {
- return ' collate '.$column->collation;
- }
- }
-
- /**
- * Get the SQL for a nullable column modifier.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $column
- * @return string|null
- */
- protected function modifyNullable(Blueprint $blueprint, Fluent $column)
- {
- if ($column->type !== 'computed') {
- return $column->nullable ? ' null' : ' not null';
- }
- }
-
- /**
- * Get the SQL for a default column modifier.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $column
- * @return string|null
- */
- protected function modifyDefault(Blueprint $blueprint, Fluent $column)
- {
- if (! is_null($column->default)) {
- return ' default '.$this->getDefaultValue($column->default);
- }
- }
-
- /**
- * Get the SQL for an auto-increment column modifier.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $column
- * @return string|null
- */
- protected function modifyIncrement(Blueprint $blueprint, Fluent $column)
- {
- if (in_array($column->type, $this->serials) && $column->autoIncrement) {
- return ' identity primary key';
- }
- }
-
- /**
- * Get the SQL for a generated stored column modifier.
- *
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $column
- * @return string|null
- */
- protected function modifyPersisted(Blueprint $blueprint, Fluent $column)
- {
- if ($column->persisted) {
- return ' persisted';
- }
- }
-
- /**
- * Wrap a table in keyword identifiers.
- *
- * @param \Illuminate\Database\Query\Expression|string $table
- * @return string
- */
- public function wrapTable($table)
- {
- if ($table instanceof Blueprint && $table->temporary) {
- $this->setTablePrefix('#');
- }
-
- return parent::wrapTable($table);
- }
-
- /**
- * Quote the given string literal.
- *
- * @param string|array $value
- * @return string
- */
- public function quoteString($value)
- {
- if (is_array($value)) {
- return implode(', ', array_map([$this, __FUNCTION__], $value));
- }
-
- return "N'$value'";
- }
-}
diff --git a/vendor/illuminate/database/Schema/MySqlBuilder.php b/vendor/illuminate/database/Schema/MySqlBuilder.php
deleted file mode 100755
index 699b41d5..00000000
--- a/vendor/illuminate/database/Schema/MySqlBuilder.php
+++ /dev/null
@@ -1,140 +0,0 @@
-connection->statement(
- $this->grammar->compileCreateDatabase($name, $this->connection)
- );
- }
-
- /**
- * Drop a database from the schema if the database exists.
- *
- * @param string $name
- * @return bool
- */
- public function dropDatabaseIfExists($name)
- {
- return $this->connection->statement(
- $this->grammar->compileDropDatabaseIfExists($name)
- );
- }
-
- /**
- * Determine if the given table exists.
- *
- * @param string $table
- * @return bool
- */
- public function hasTable($table)
- {
- $table = $this->connection->getTablePrefix().$table;
-
- return count($this->connection->select(
- $this->grammar->compileTableExists(), [$this->connection->getDatabaseName(), $table]
- )) > 0;
- }
-
- /**
- * Get the column listing for a given table.
- *
- * @param string $table
- * @return array
- */
- public function getColumnListing($table)
- {
- $table = $this->connection->getTablePrefix().$table;
-
- $results = $this->connection->select(
- $this->grammar->compileColumnListing(), [$this->connection->getDatabaseName(), $table]
- );
-
- return $this->connection->getPostProcessor()->processColumnListing($results);
- }
-
- /**
- * Drop all tables from the database.
- *
- * @return void
- */
- public function dropAllTables()
- {
- $tables = [];
-
- foreach ($this->getAllTables() as $row) {
- $row = (array) $row;
-
- $tables[] = reset($row);
- }
-
- if (empty($tables)) {
- return;
- }
-
- $this->disableForeignKeyConstraints();
-
- $this->connection->statement(
- $this->grammar->compileDropAllTables($tables)
- );
-
- $this->enableForeignKeyConstraints();
- }
-
- /**
- * Drop all views from the database.
- *
- * @return void
- */
- public function dropAllViews()
- {
- $views = [];
-
- foreach ($this->getAllViews() as $row) {
- $row = (array) $row;
-
- $views[] = reset($row);
- }
-
- if (empty($views)) {
- return;
- }
-
- $this->connection->statement(
- $this->grammar->compileDropAllViews($views)
- );
- }
-
- /**
- * Get all of the table names for the database.
- *
- * @return array
- */
- public function getAllTables()
- {
- return $this->connection->select(
- $this->grammar->compileGetAllTables()
- );
- }
-
- /**
- * Get all of the view names for the database.
- *
- * @return array
- */
- public function getAllViews()
- {
- return $this->connection->select(
- $this->grammar->compileGetAllViews()
- );
- }
-}
diff --git a/vendor/illuminate/database/Schema/MySqlSchemaState.php b/vendor/illuminate/database/Schema/MySqlSchemaState.php
deleted file mode 100644
index 9bbec7a4..00000000
--- a/vendor/illuminate/database/Schema/MySqlSchemaState.php
+++ /dev/null
@@ -1,163 +0,0 @@
-executeDumpProcess($this->makeProcess(
- $this->baseDumpCommand().' --routines --result-file="${:LARAVEL_LOAD_PATH}" --no-data'
- ), $this->output, array_merge($this->baseVariables($this->connection->getConfig()), [
- 'LARAVEL_LOAD_PATH' => $path,
- ]));
-
- $this->removeAutoIncrementingState($path);
-
- $this->appendMigrationData($path);
- }
-
- /**
- * Remove the auto-incrementing state from the given schema dump.
- *
- * @param string $path
- * @return void
- */
- protected function removeAutoIncrementingState(string $path)
- {
- $this->files->put($path, preg_replace(
- '/\s+AUTO_INCREMENT=[0-9]+/iu',
- '',
- $this->files->get($path)
- ));
- }
-
- /**
- * Append the migration data to the schema dump.
- *
- * @param string $path
- * @return void
- */
- protected function appendMigrationData(string $path)
- {
- $process = $this->executeDumpProcess($this->makeProcess(
- $this->baseDumpCommand().' '.$this->migrationTable.' --no-create-info --skip-extended-insert --skip-routines --compact'
- ), null, array_merge($this->baseVariables($this->connection->getConfig()), [
- //
- ]));
-
- $this->files->append($path, $process->getOutput());
- }
-
- /**
- * Load the given schema file into the database.
- *
- * @param string $path
- * @return void
- */
- public function load($path)
- {
- $command = 'mysql '.$this->connectionString().' --database="${:LARAVEL_LOAD_DATABASE}" < "${:LARAVEL_LOAD_PATH}"';
-
- $process = $this->makeProcess($command)->setTimeout(null);
-
- $process->mustRun(null, array_merge($this->baseVariables($this->connection->getConfig()), [
- 'LARAVEL_LOAD_PATH' => $path,
- ]));
- }
-
- /**
- * Get the base dump command arguments for MySQL as a string.
- *
- * @return string
- */
- protected function baseDumpCommand()
- {
- $command = 'mysqldump '.$this->connectionString().' --no-tablespaces --skip-add-locks --skip-comments --skip-set-charset --tz-utc';
-
- if (! $this->connection->isMaria()) {
- $command .= ' --column-statistics=0 --set-gtid-purged=OFF';
- }
-
- return $command.' "${:LARAVEL_LOAD_DATABASE}"';
- }
-
- /**
- * Generate a basic connection string (--socket, --host, --port, --user, --password) for the database.
- *
- * @return string
- */
- protected function connectionString()
- {
- $value = ' --user="${:LARAVEL_LOAD_USER}" --password="${:LARAVEL_LOAD_PASSWORD}"';
-
- $value .= $this->connection->getConfig()['unix_socket'] ?? false
- ? ' --socket="${:LARAVEL_LOAD_SOCKET}"'
- : ' --host="${:LARAVEL_LOAD_HOST}" --port="${:LARAVEL_LOAD_PORT}"';
-
- return $value;
- }
-
- /**
- * Get the base variables for a dump / load command.
- *
- * @param array $config
- * @return array
- */
- protected function baseVariables(array $config)
- {
- $config['host'] = $config['host'] ?? '';
-
- return [
- 'LARAVEL_LOAD_SOCKET' => $config['unix_socket'] ?? '',
- 'LARAVEL_LOAD_HOST' => is_array($config['host']) ? $config['host'][0] : $config['host'],
- 'LARAVEL_LOAD_PORT' => $config['port'] ?? '',
- 'LARAVEL_LOAD_USER' => $config['username'],
- 'LARAVEL_LOAD_PASSWORD' => $config['password'] ?? '',
- 'LARAVEL_LOAD_DATABASE' => $config['database'],
- ];
- }
-
- /**
- * Execute the given dump process.
- *
- * @param \Symfony\Component\Process\Process $process
- * @param callable $output
- * @param array $variables
- * @return \Symfony\Component\Process\Process
- */
- protected function executeDumpProcess(Process $process, $output, array $variables)
- {
- try {
- $process->setTimeout(null)->mustRun($output, $variables);
- } catch (Exception $e) {
- if (Str::contains($e->getMessage(), ['column-statistics', 'column_statistics'])) {
- return $this->executeDumpProcess(Process::fromShellCommandLine(
- str_replace(' --column-statistics=0', '', $process->getCommandLine())
- ), $output, $variables);
- }
-
- if (Str::contains($e->getMessage(), ['set-gtid-purged'])) {
- return $this->executeDumpProcess(Process::fromShellCommandLine(
- str_replace(' --set-gtid-purged=OFF', '', $process->getCommandLine())
- ), $output, $variables);
- }
-
- throw $e;
- }
-
- return $process;
- }
-}
diff --git a/vendor/illuminate/database/Schema/PostgresBuilder.php b/vendor/illuminate/database/Schema/PostgresBuilder.php
deleted file mode 100755
index ce1b5770..00000000
--- a/vendor/illuminate/database/Schema/PostgresBuilder.php
+++ /dev/null
@@ -1,203 +0,0 @@
-connection->statement(
- $this->grammar->compileCreateDatabase($name, $this->connection)
- );
- }
-
- /**
- * Drop a database from the schema if the database exists.
- *
- * @param string $name
- * @return bool
- */
- public function dropDatabaseIfExists($name)
- {
- return $this->connection->statement(
- $this->grammar->compileDropDatabaseIfExists($name)
- );
- }
-
- /**
- * Determine if the given table exists.
- *
- * @param string $table
- * @return bool
- */
- public function hasTable($table)
- {
- [$schema, $table] = $this->parseSchemaAndTable($table);
-
- $table = $this->connection->getTablePrefix().$table;
-
- return count($this->connection->select(
- $this->grammar->compileTableExists(), [$schema, $table]
- )) > 0;
- }
-
- /**
- * Drop all tables from the database.
- *
- * @return void
- */
- public function dropAllTables()
- {
- $tables = [];
-
- $excludedTables = $this->connection->getConfig('dont_drop') ?? ['spatial_ref_sys'];
-
- foreach ($this->getAllTables() as $row) {
- $row = (array) $row;
-
- $table = reset($row);
-
- if (! in_array($table, $excludedTables)) {
- $tables[] = $table;
- }
- }
-
- if (empty($tables)) {
- return;
- }
-
- $this->connection->statement(
- $this->grammar->compileDropAllTables($tables)
- );
- }
-
- /**
- * Drop all views from the database.
- *
- * @return void
- */
- public function dropAllViews()
- {
- $views = [];
-
- foreach ($this->getAllViews() as $row) {
- $row = (array) $row;
-
- $views[] = reset($row);
- }
-
- if (empty($views)) {
- return;
- }
-
- $this->connection->statement(
- $this->grammar->compileDropAllViews($views)
- );
- }
-
- /**
- * Drop all types from the database.
- *
- * @return void
- */
- public function dropAllTypes()
- {
- $types = [];
-
- foreach ($this->getAllTypes() as $row) {
- $row = (array) $row;
-
- $types[] = reset($row);
- }
-
- if (empty($types)) {
- return;
- }
-
- $this->connection->statement(
- $this->grammar->compileDropAllTypes($types)
- );
- }
-
- /**
- * Get all of the table names for the database.
- *
- * @return array
- */
- public function getAllTables()
- {
- return $this->connection->select(
- $this->grammar->compileGetAllTables((array) $this->connection->getConfig('schema'))
- );
- }
-
- /**
- * Get all of the view names for the database.
- *
- * @return array
- */
- public function getAllViews()
- {
- return $this->connection->select(
- $this->grammar->compileGetAllViews((array) $this->connection->getConfig('schema'))
- );
- }
-
- /**
- * Get all of the type names for the database.
- *
- * @return array
- */
- public function getAllTypes()
- {
- return $this->connection->select(
- $this->grammar->compileGetAllTypes()
- );
- }
-
- /**
- * Get the column listing for a given table.
- *
- * @param string $table
- * @return array
- */
- public function getColumnListing($table)
- {
- [$schema, $table] = $this->parseSchemaAndTable($table);
-
- $table = $this->connection->getTablePrefix().$table;
-
- $results = $this->connection->select(
- $this->grammar->compileColumnListing(), [$schema, $table]
- );
-
- return $this->connection->getPostProcessor()->processColumnListing($results);
- }
-
- /**
- * Parse the table name and extract the schema and table.
- *
- * @param string $table
- * @return array
- */
- protected function parseSchemaAndTable($table)
- {
- $table = explode('.', $table);
-
- if (is_array($schema = $this->connection->getConfig('schema'))) {
- if (in_array($table[0], $schema)) {
- return [array_shift($table), implode('.', $table)];
- }
-
- $schema = head($schema);
- }
-
- return [$schema ?: 'public', implode('.', $table)];
- }
-}
diff --git a/vendor/illuminate/database/Schema/PostgresSchemaState.php b/vendor/illuminate/database/Schema/PostgresSchemaState.php
deleted file mode 100644
index 3e2f5666..00000000
--- a/vendor/illuminate/database/Schema/PostgresSchemaState.php
+++ /dev/null
@@ -1,83 +0,0 @@
-getSchemaBuilder()->getAllTables())
- ->map->tablename
- ->reject(function ($table) {
- return $table === $this->migrationTable;
- })->map(function ($table) {
- return '--exclude-table-data="*.'.$table.'"';
- })->implode(' ');
-
- $this->makeProcess(
- $this->baseDumpCommand().' --file="${:LARAVEL_LOAD_PATH}" '.$excludedTables
- )->mustRun($this->output, array_merge($this->baseVariables($this->connection->getConfig()), [
- 'LARAVEL_LOAD_PATH' => $path,
- ]));
- }
-
- /**
- * Load the given schema file into the database.
- *
- * @param string $path
- * @return void
- */
- public function load($path)
- {
- $command = 'pg_restore --no-owner --no-acl --clean --if-exists --host="${:LARAVEL_LOAD_HOST}" --port="${:LARAVEL_LOAD_PORT}" --username="${:LARAVEL_LOAD_USER}" --dbname="${:LARAVEL_LOAD_DATABASE}" "${:LARAVEL_LOAD_PATH}"';
-
- if (Str::endsWith($path, '.sql')) {
- $command = 'psql --file="${:LARAVEL_LOAD_PATH}" --host="${:LARAVEL_LOAD_HOST}" --port="${:LARAVEL_LOAD_PORT}" --username="${:LARAVEL_LOAD_USER}" --dbname="${:LARAVEL_LOAD_DATABASE}"';
- }
-
- $process = $this->makeProcess($command);
-
- $process->mustRun(null, array_merge($this->baseVariables($this->connection->getConfig()), [
- 'LARAVEL_LOAD_PATH' => $path,
- ]));
- }
-
- /**
- * Get the base dump command arguments for PostgreSQL as a string.
- *
- * @return string
- */
- protected function baseDumpCommand()
- {
- return 'pg_dump --no-owner --no-acl -Fc --host="${:LARAVEL_LOAD_HOST}" --port="${:LARAVEL_LOAD_PORT}" --username="${:LARAVEL_LOAD_USER}" --dbname="${:LARAVEL_LOAD_DATABASE}"';
- }
-
- /**
- * Get the base variables for a dump / load command.
- *
- * @param array $config
- * @return array
- */
- protected function baseVariables(array $config)
- {
- $config['host'] = $config['host'] ?? '';
-
- return [
- 'LARAVEL_LOAD_HOST' => is_array($config['host']) ? $config['host'][0] : $config['host'],
- 'LARAVEL_LOAD_PORT' => $config['port'],
- 'LARAVEL_LOAD_USER' => $config['username'],
- 'PGPASSWORD' => $config['password'],
- 'LARAVEL_LOAD_DATABASE' => $config['database'],
- ];
- }
-}
diff --git a/vendor/illuminate/database/Schema/SQLiteBuilder.php b/vendor/illuminate/database/Schema/SQLiteBuilder.php
deleted file mode 100644
index 3bc1275c..00000000
--- a/vendor/illuminate/database/Schema/SQLiteBuilder.php
+++ /dev/null
@@ -1,78 +0,0 @@
-connection->getDatabaseName() !== ':memory:') {
- return $this->refreshDatabaseFile();
- }
-
- $this->connection->select($this->grammar->compileEnableWriteableSchema());
-
- $this->connection->select($this->grammar->compileDropAllTables());
-
- $this->connection->select($this->grammar->compileDisableWriteableSchema());
-
- $this->connection->select($this->grammar->compileRebuild());
- }
-
- /**
- * Drop all views from the database.
- *
- * @return void
- */
- public function dropAllViews()
- {
- $this->connection->select($this->grammar->compileEnableWriteableSchema());
-
- $this->connection->select($this->grammar->compileDropAllViews());
-
- $this->connection->select($this->grammar->compileDisableWriteableSchema());
-
- $this->connection->select($this->grammar->compileRebuild());
- }
-
- /**
- * Empty the database file.
- *
- * @return void
- */
- public function refreshDatabaseFile()
- {
- file_put_contents($this->connection->getDatabaseName(), '');
- }
-}
diff --git a/vendor/illuminate/database/Schema/SchemaState.php b/vendor/illuminate/database/Schema/SchemaState.php
deleted file mode 100644
index e6f35ab9..00000000
--- a/vendor/illuminate/database/Schema/SchemaState.php
+++ /dev/null
@@ -1,122 +0,0 @@
-connection = $connection;
-
- $this->files = $files ?: new Filesystem;
-
- $this->processFactory = $processFactory ?: function (...$arguments) {
- return Process::fromShellCommandline(...$arguments)->setTimeout(null);
- };
-
- $this->handleOutputUsing(function () {
- //
- });
- }
-
- /**
- * Dump the database's schema into a file.
- *
- * @param \Illuminate\Database\Connection $connection
- * @param string $path
- * @return void
- */
- abstract public function dump(Connection $connection, $path);
-
- /**
- * Load the given schema file into the database.
- *
- * @param string $path
- * @return void
- */
- abstract public function load($path);
-
- /**
- * Create a new process instance.
- *
- * @param array $arguments
- * @return \Symfony\Component\Process\Process
- */
- public function makeProcess(...$arguments)
- {
- return call_user_func($this->processFactory, ...$arguments);
- }
-
- /**
- * Specify the name of the application's migration table.
- *
- * @param string $table
- * @return $this
- */
- public function withMigrationTable(string $table)
- {
- $this->migrationTable = $table;
-
- return $this;
- }
-
- /**
- * Specify the callback that should be used to handle process output.
- *
- * @param callable $output
- * @return $this
- */
- public function handleOutputUsing(callable $output)
- {
- $this->output = $output;
-
- return $this;
- }
-}
diff --git a/vendor/illuminate/database/Schema/SqlServerBuilder.php b/vendor/illuminate/database/Schema/SqlServerBuilder.php
deleted file mode 100644
index 93da1cb8..00000000
--- a/vendor/illuminate/database/Schema/SqlServerBuilder.php
+++ /dev/null
@@ -1,54 +0,0 @@
-connection->statement(
- $this->grammar->compileCreateDatabase($name, $this->connection)
- );
- }
-
- /**
- * Drop a database from the schema if the database exists.
- *
- * @param string $name
- * @return bool
- */
- public function dropDatabaseIfExists($name)
- {
- return $this->connection->statement(
- $this->grammar->compileDropDatabaseIfExists($name)
- );
- }
-
- /**
- * Drop all tables from the database.
- *
- * @return void
- */
- public function dropAllTables()
- {
- $this->connection->statement($this->grammar->compileDropAllForeignKeys());
-
- $this->connection->statement($this->grammar->compileDropAllTables());
- }
-
- /**
- * Drop all views from the database.
- *
- * @return void
- */
- public function dropAllViews()
- {
- $this->connection->statement($this->grammar->compileDropAllViews());
- }
-}
diff --git a/vendor/illuminate/database/Schema/SqliteSchemaState.php b/vendor/illuminate/database/Schema/SqliteSchemaState.php
deleted file mode 100644
index 9a98b633..00000000
--- a/vendor/illuminate/database/Schema/SqliteSchemaState.php
+++ /dev/null
@@ -1,93 +0,0 @@
-makeProcess(
- $this->baseCommand().' .schema'
- ))->setTimeout(null)->mustRun(null, array_merge($this->baseVariables($this->connection->getConfig()), [
- //
- ]));
-
- $migrations = collect(preg_split("/\r\n|\n|\r/", $process->getOutput()))->filter(function ($line) {
- return stripos($line, 'sqlite_sequence') === false &&
- strlen($line) > 0;
- })->all();
-
- $this->files->put($path, implode(PHP_EOL, $migrations).PHP_EOL);
-
- $this->appendMigrationData($path);
- }
-
- /**
- * Append the migration data to the schema dump.
- *
- * @param string $path
- * @return void
- */
- protected function appendMigrationData(string $path)
- {
- with($process = $this->makeProcess(
- $this->baseCommand().' ".dump \''.$this->migrationTable.'\'"'
- ))->mustRun(null, array_merge($this->baseVariables($this->connection->getConfig()), [
- //
- ]));
-
- $migrations = collect(preg_split("/\r\n|\n|\r/", $process->getOutput()))->filter(function ($line) {
- return preg_match('/^\s*(--|INSERT\s)/iu', $line) === 1 &&
- strlen($line) > 0;
- })->all();
-
- $this->files->append($path, implode(PHP_EOL, $migrations).PHP_EOL);
- }
-
- /**
- * Load the given schema file into the database.
- *
- * @param string $path
- * @return void
- */
- public function load($path)
- {
- $process = $this->makeProcess($this->baseCommand().' < "${:LARAVEL_LOAD_PATH}"');
-
- $process->mustRun(null, array_merge($this->baseVariables($this->connection->getConfig()), [
- 'LARAVEL_LOAD_PATH' => $path,
- ]));
- }
-
- /**
- * Get the base sqlite command arguments as a string.
- *
- * @return string
- */
- protected function baseCommand()
- {
- return 'sqlite3 "${:LARAVEL_LOAD_DATABASE}"';
- }
-
- /**
- * Get the base variables for a dump / load command.
- *
- * @param array $config
- * @return array
- */
- protected function baseVariables(array $config)
- {
- return [
- 'LARAVEL_LOAD_DATABASE' => $config['database'],
- ];
- }
-}
diff --git a/vendor/illuminate/database/Seeder.php b/vendor/illuminate/database/Seeder.php
deleted file mode 100755
index 441fa27d..00000000
--- a/vendor/illuminate/database/Seeder.php
+++ /dev/null
@@ -1,152 +0,0 @@
-resolve($class);
-
- $name = get_class($seeder);
-
- if ($silent === false && isset($this->command)) {
- $this->command->getOutput()->writeln("Seeding: {$name}");
- }
-
- $startTime = microtime(true);
-
- $seeder->__invoke($parameters);
-
- $runTime = number_format((microtime(true) - $startTime) * 1000, 2);
-
- if ($silent === false && isset($this->command)) {
- $this->command->getOutput()->writeln("Seeded: {$name} ({$runTime}ms)");
- }
- }
-
- return $this;
- }
-
- /**
- * Run the given seeder class.
- *
- * @param array|string $class
- * @param array $parameters
- * @return void
- */
- public function callWith($class, array $parameters = [])
- {
- $this->call($class, false, $parameters);
- }
-
- /**
- * Silently run the given seeder class.
- *
- * @param array|string $class
- * @param array $parameters
- * @return void
- */
- public function callSilent($class, array $parameters = [])
- {
- $this->call($class, true, $parameters);
- }
-
- /**
- * Resolve an instance of the given seeder class.
- *
- * @param string $class
- * @return \Illuminate\Database\Seeder
- */
- protected function resolve($class)
- {
- if (isset($this->container)) {
- $instance = $this->container->make($class);
-
- $instance->setContainer($this->container);
- } else {
- $instance = new $class;
- }
-
- if (isset($this->command)) {
- $instance->setCommand($this->command);
- }
-
- return $instance;
- }
-
- /**
- * Set the IoC container instance.
- *
- * @param \Illuminate\Container\Container $container
- * @return $this
- */
- public function setContainer(Container $container)
- {
- $this->container = $container;
-
- return $this;
- }
-
- /**
- * Set the console command instance.
- *
- * @param \Illuminate\Console\Command $command
- * @return $this
- */
- public function setCommand(Command $command)
- {
- $this->command = $command;
-
- return $this;
- }
-
- /**
- * Run the database seeds.
- *
- * @param array $parameters
- * @return mixed
- *
- * @throws \InvalidArgumentException
- */
- public function __invoke(array $parameters = [])
- {
- if (! method_exists($this, 'run')) {
- throw new InvalidArgumentException('Method [run] missing from '.get_class($this));
- }
-
- return isset($this->container)
- ? $this->container->call([$this, 'run'], $parameters)
- : $this->run(...$parameters);
- }
-}
diff --git a/vendor/illuminate/database/SqlServerConnection.php b/vendor/illuminate/database/SqlServerConnection.php
deleted file mode 100755
index 87628b99..00000000
--- a/vendor/illuminate/database/SqlServerConnection.php
+++ /dev/null
@@ -1,125 +0,0 @@
-getDriverName() === 'sqlsrv') {
- return parent::transaction($callback);
- }
-
- $this->getPdo()->exec('BEGIN TRAN');
-
- // We'll simply execute the given callback within a try / catch block
- // and if we catch any exception we can rollback the transaction
- // so that none of the changes are persisted to the database.
- try {
- $result = $callback($this);
-
- $this->getPdo()->exec('COMMIT TRAN');
- }
-
- // If we catch an exception, we will rollback so nothing gets messed
- // up in the database. Then we'll re-throw the exception so it can
- // be handled how the developer sees fit for their applications.
- catch (Throwable $e) {
- $this->getPdo()->exec('ROLLBACK TRAN');
-
- throw $e;
- }
-
- return $result;
- }
- }
-
- /**
- * Get the default query grammar instance.
- *
- * @return \Illuminate\Database\Query\Grammars\SqlServerGrammar
- */
- protected function getDefaultQueryGrammar()
- {
- return $this->withTablePrefix(new QueryGrammar);
- }
-
- /**
- * Get a schema builder instance for the connection.
- *
- * @return \Illuminate\Database\Schema\SqlServerBuilder
- */
- public function getSchemaBuilder()
- {
- if (is_null($this->schemaGrammar)) {
- $this->useDefaultSchemaGrammar();
- }
-
- return new SqlServerBuilder($this);
- }
-
- /**
- * Get the default schema grammar instance.
- *
- * @return \Illuminate\Database\Schema\Grammars\SqlServerGrammar
- */
- protected function getDefaultSchemaGrammar()
- {
- return $this->withTablePrefix(new SchemaGrammar);
- }
-
- /**
- * Get the schema state for the connection.
- *
- * @param \Illuminate\Filesystem\Filesystem|null $files
- * @param callable|null $processFactory
- *
- * @throws \RuntimeException
- */
- public function getSchemaState(Filesystem $files = null, callable $processFactory = null)
- {
- throw new RuntimeException('Schema dumping is not supported when using SQL Server.');
- }
-
- /**
- * Get the default post processor instance.
- *
- * @return \Illuminate\Database\Query\Processors\SqlServerProcessor
- */
- protected function getDefaultPostProcessor()
- {
- return new SqlServerProcessor;
- }
-
- /**
- * Get the Doctrine DBAL driver.
- *
- * @return \Doctrine\DBAL\Driver\PDOSqlsrv\Driver|\Illuminate\Database\PDO\SqlServerDriver
- */
- protected function getDoctrineDriver()
- {
- return class_exists(Version::class) ? new DoctrineDriver : new SqlServerDriver;
- }
-}
diff --git a/vendor/illuminate/database/composer.json b/vendor/illuminate/database/composer.json
deleted file mode 100644
index c7398fde..00000000
--- a/vendor/illuminate/database/composer.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- "name": "illuminate/database",
- "description": "The Illuminate Database package.",
- "license": "MIT",
- "homepage": "https://laravel.com",
- "support": {
- "issues": "https://github.com/laravel/framework/issues",
- "source": "https://github.com/laravel/framework"
- },
- "keywords": ["laravel", "database", "sql", "orm"],
- "authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- }
- ],
- "require": {
- "php": "^7.3|^8.0",
- "ext-json": "*",
- "illuminate/collections": "^8.0",
- "illuminate/container": "^8.0",
- "illuminate/contracts": "^8.0",
- "illuminate/macroable": "^8.0",
- "illuminate/support": "^8.0",
- "symfony/console": "^5.1.4"
- },
- "autoload": {
- "psr-4": {
- "Illuminate\\Database\\": ""
- }
- },
- "extra": {
- "branch-alias": {
- "dev-master": "8.x-dev"
- }
- },
- "suggest": {
- "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.2).",
- "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).",
- "illuminate/console": "Required to use the database commands (^8.0).",
- "illuminate/events": "Required to use the observers with Eloquent (^8.0).",
- "illuminate/filesystem": "Required to use the migrations (^8.0).",
- "illuminate/pagination": "Required to paginate the result set (^8.0).",
- "symfony/finder": "Required to use Eloquent model factories (^5.1.4)."
- },
- "config": {
- "sort-packages": true
- },
- "minimum-stability": "dev"
-}
diff --git a/vendor/illuminate/events/CallQueuedListener.php b/vendor/illuminate/events/CallQueuedListener.php
deleted file mode 100644
index 6a390085..00000000
--- a/vendor/illuminate/events/CallQueuedListener.php
+++ /dev/null
@@ -1,180 +0,0 @@
-data = $data;
- $this->class = $class;
- $this->method = $method;
- }
-
- /**
- * Handle the queued job.
- *
- * @param \Illuminate\Container\Container $container
- * @return void
- */
- public function handle(Container $container)
- {
- $this->prepareData();
-
- $handler = $this->setJobInstanceIfNecessary(
- $this->job, $container->make($this->class)
- );
-
- $handler->{$this->method}(...array_values($this->data));
- }
-
- /**
- * Set the job instance of the given class if necessary.
- *
- * @param \Illuminate\Contracts\Queue\Job $job
- * @param object $instance
- * @return object
- */
- protected function setJobInstanceIfNecessary(Job $job, $instance)
- {
- if (in_array(InteractsWithQueue::class, class_uses_recursive($instance))) {
- $instance->setJob($job);
- }
-
- return $instance;
- }
-
- /**
- * Call the failed method on the job instance.
- *
- * The event instance and the exception will be passed.
- *
- * @param \Throwable $e
- * @return void
- */
- public function failed($e)
- {
- $this->prepareData();
-
- $handler = Container::getInstance()->make($this->class);
-
- $parameters = array_merge(array_values($this->data), [$e]);
-
- if (method_exists($handler, 'failed')) {
- $handler->failed(...$parameters);
- }
- }
-
- /**
- * Unserialize the data if needed.
- *
- * @return void
- */
- protected function prepareData()
- {
- if (is_string($this->data)) {
- $this->data = unserialize($this->data);
- }
- }
-
- /**
- * Get the display name for the queued job.
- *
- * @return string
- */
- public function displayName()
- {
- return $this->class;
- }
-
- /**
- * Prepare the instance for cloning.
- *
- * @return void
- */
- public function __clone()
- {
- $this->data = array_map(function ($data) {
- return is_object($data) ? clone $data : $data;
- }, $this->data);
- }
-}
diff --git a/vendor/illuminate/events/Dispatcher.php b/vendor/illuminate/events/Dispatcher.php
deleted file mode 100755
index 5972a838..00000000
--- a/vendor/illuminate/events/Dispatcher.php
+++ /dev/null
@@ -1,676 +0,0 @@
-container = $container ?: new Container;
- }
-
- /**
- * Register an event listener with the dispatcher.
- *
- * @param \Closure|string|array $events
- * @param \Closure|string|array|null $listener
- * @return void
- */
- public function listen($events, $listener = null)
- {
- if ($events instanceof Closure) {
- return collect($this->firstClosureParameterTypes($events))
- ->each(function ($event) use ($events) {
- $this->listen($event, $events);
- });
- } elseif ($events instanceof QueuedClosure) {
- return collect($this->firstClosureParameterTypes($events->closure))
- ->each(function ($event) use ($events) {
- $this->listen($event, $events->resolve());
- });
- } elseif ($listener instanceof QueuedClosure) {
- $listener = $listener->resolve();
- }
-
- foreach ((array) $events as $event) {
- if (Str::contains($event, '*')) {
- $this->setupWildcardListen($event, $listener);
- } else {
- $this->listeners[$event][] = $this->makeListener($listener);
- }
- }
- }
-
- /**
- * Setup a wildcard listener callback.
- *
- * @param string $event
- * @param \Closure|string $listener
- * @return void
- */
- protected function setupWildcardListen($event, $listener)
- {
- $this->wildcards[$event][] = $this->makeListener($listener, true);
-
- $this->wildcardsCache = [];
- }
-
- /**
- * Determine if a given event has listeners.
- *
- * @param string $eventName
- * @return bool
- */
- public function hasListeners($eventName)
- {
- return isset($this->listeners[$eventName]) ||
- isset($this->wildcards[$eventName]) ||
- $this->hasWildcardListeners($eventName);
- }
-
- /**
- * Determine if the given event has any wildcard listeners.
- *
- * @param string $eventName
- * @return bool
- */
- public function hasWildcardListeners($eventName)
- {
- foreach ($this->wildcards as $key => $listeners) {
- if (Str::is($key, $eventName)) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Register an event and payload to be fired later.
- *
- * @param string $event
- * @param array $payload
- * @return void
- */
- public function push($event, $payload = [])
- {
- $this->listen($event.'_pushed', function () use ($event, $payload) {
- $this->dispatch($event, $payload);
- });
- }
-
- /**
- * Flush a set of pushed events.
- *
- * @param string $event
- * @return void
- */
- public function flush($event)
- {
- $this->dispatch($event.'_pushed');
- }
-
- /**
- * Register an event subscriber with the dispatcher.
- *
- * @param object|string $subscriber
- * @return void
- */
- public function subscribe($subscriber)
- {
- $subscriber = $this->resolveSubscriber($subscriber);
-
- $events = $subscriber->subscribe($this);
-
- if (is_array($events)) {
- foreach ($events as $event => $listeners) {
- foreach (Arr::wrap($listeners) as $listener) {
- if (is_string($listener) && method_exists($subscriber, $listener)) {
- $this->listen($event, [get_class($subscriber), $listener]);
-
- continue;
- }
-
- $this->listen($event, $listener);
- }
- }
- }
- }
-
- /**
- * Resolve the subscriber instance.
- *
- * @param object|string $subscriber
- * @return mixed
- */
- protected function resolveSubscriber($subscriber)
- {
- if (is_string($subscriber)) {
- return $this->container->make($subscriber);
- }
-
- return $subscriber;
- }
-
- /**
- * Fire an event until the first non-null response is returned.
- *
- * @param string|object $event
- * @param mixed $payload
- * @return array|null
- */
- public function until($event, $payload = [])
- {
- return $this->dispatch($event, $payload, true);
- }
-
- /**
- * Fire an event and call the listeners.
- *
- * @param string|object $event
- * @param mixed $payload
- * @param bool $halt
- * @return array|null
- */
- public function dispatch($event, $payload = [], $halt = false)
- {
- // When the given "event" is actually an object we will assume it is an event
- // object and use the class as the event name and this event itself as the
- // payload to the handler, which makes object based events quite simple.
- [$event, $payload] = $this->parseEventAndPayload(
- $event, $payload
- );
-
- if ($this->shouldBroadcast($payload)) {
- $this->broadcastEvent($payload[0]);
- }
-
- $responses = [];
-
- foreach ($this->getListeners($event) as $listener) {
- $response = $listener($event, $payload);
-
- // If a response is returned from the listener and event halting is enabled
- // we will just return this response, and not call the rest of the event
- // listeners. Otherwise we will add the response on the response list.
- if ($halt && ! is_null($response)) {
- return $response;
- }
-
- // If a boolean false is returned from a listener, we will stop propagating
- // the event to any further listeners down in the chain, else we keep on
- // looping through the listeners and firing every one in our sequence.
- if ($response === false) {
- break;
- }
-
- $responses[] = $response;
- }
-
- return $halt ? null : $responses;
- }
-
- /**
- * Parse the given event and payload and prepare them for dispatching.
- *
- * @param mixed $event
- * @param mixed $payload
- * @return array
- */
- protected function parseEventAndPayload($event, $payload)
- {
- if (is_object($event)) {
- [$payload, $event] = [[$event], get_class($event)];
- }
-
- return [$event, Arr::wrap($payload)];
- }
-
- /**
- * Determine if the payload has a broadcastable event.
- *
- * @param array $payload
- * @return bool
- */
- protected function shouldBroadcast(array $payload)
- {
- return isset($payload[0]) &&
- $payload[0] instanceof ShouldBroadcast &&
- $this->broadcastWhen($payload[0]);
- }
-
- /**
- * Check if the event should be broadcasted by the condition.
- *
- * @param mixed $event
- * @return bool
- */
- protected function broadcastWhen($event)
- {
- return method_exists($event, 'broadcastWhen')
- ? $event->broadcastWhen() : true;
- }
-
- /**
- * Broadcast the given event class.
- *
- * @param \Illuminate\Contracts\Broadcasting\ShouldBroadcast $event
- * @return void
- */
- protected function broadcastEvent($event)
- {
- $this->container->make(BroadcastFactory::class)->queue($event);
- }
-
- /**
- * Get all of the listeners for a given event name.
- *
- * @param string $eventName
- * @return array
- */
- public function getListeners($eventName)
- {
- $listeners = $this->listeners[$eventName] ?? [];
-
- $listeners = array_merge(
- $listeners,
- $this->wildcardsCache[$eventName] ?? $this->getWildcardListeners($eventName)
- );
-
- return class_exists($eventName, false)
- ? $this->addInterfaceListeners($eventName, $listeners)
- : $listeners;
- }
-
- /**
- * Get the wildcard listeners for the event.
- *
- * @param string $eventName
- * @return array
- */
- protected function getWildcardListeners($eventName)
- {
- $wildcards = [];
-
- foreach ($this->wildcards as $key => $listeners) {
- if (Str::is($key, $eventName)) {
- $wildcards = array_merge($wildcards, $listeners);
- }
- }
-
- return $this->wildcardsCache[$eventName] = $wildcards;
- }
-
- /**
- * Add the listeners for the event's interfaces to the given array.
- *
- * @param string $eventName
- * @param array $listeners
- * @return array
- */
- protected function addInterfaceListeners($eventName, array $listeners = [])
- {
- foreach (class_implements($eventName) as $interface) {
- if (isset($this->listeners[$interface])) {
- foreach ($this->listeners[$interface] as $names) {
- $listeners = array_merge($listeners, (array) $names);
- }
- }
- }
-
- return $listeners;
- }
-
- /**
- * Register an event listener with the dispatcher.
- *
- * @param \Closure|string|array $listener
- * @param bool $wildcard
- * @return \Closure
- */
- public function makeListener($listener, $wildcard = false)
- {
- if (is_string($listener)) {
- return $this->createClassListener($listener, $wildcard);
- }
-
- if (is_array($listener) && isset($listener[0]) && is_string($listener[0])) {
- return $this->createClassListener($listener, $wildcard);
- }
-
- return function ($event, $payload) use ($listener, $wildcard) {
- if ($wildcard) {
- return $listener($event, $payload);
- }
-
- return $listener(...array_values($payload));
- };
- }
-
- /**
- * Create a class based listener using the IoC container.
- *
- * @param string $listener
- * @param bool $wildcard
- * @return \Closure
- */
- public function createClassListener($listener, $wildcard = false)
- {
- return function ($event, $payload) use ($listener, $wildcard) {
- if ($wildcard) {
- return call_user_func($this->createClassCallable($listener), $event, $payload);
- }
-
- $callable = $this->createClassCallable($listener);
-
- return $callable(...array_values($payload));
- };
- }
-
- /**
- * Create the class based event callable.
- *
- * @param array|string $listener
- * @return callable
- */
- protected function createClassCallable($listener)
- {
- [$class, $method] = is_array($listener)
- ? $listener
- : $this->parseClassCallable($listener);
-
- if (! method_exists($class, $method)) {
- $method = '__invoke';
- }
-
- if ($this->handlerShouldBeQueued($class)) {
- return $this->createQueuedHandlerCallable($class, $method);
- }
-
- $listener = $this->container->make($class);
-
- return $this->handlerShouldBeDispatchedAfterDatabaseTransactions($listener)
- ? $this->createCallbackForListenerRunningAfterCommits($listener, $method)
- : [$listener, $method];
- }
-
- /**
- * Parse the class listener into class and method.
- *
- * @param string $listener
- * @return array
- */
- protected function parseClassCallable($listener)
- {
- return Str::parseCallback($listener, 'handle');
- }
-
- /**
- * Determine if the event handler class should be queued.
- *
- * @param string $class
- * @return bool
- */
- protected function handlerShouldBeQueued($class)
- {
- try {
- return (new ReflectionClass($class))->implementsInterface(
- ShouldQueue::class
- );
- } catch (Exception $e) {
- return false;
- }
- }
-
- /**
- * Create a callable for putting an event handler on the queue.
- *
- * @param string $class
- * @param string $method
- * @return \Closure
- */
- protected function createQueuedHandlerCallable($class, $method)
- {
- return function () use ($class, $method) {
- $arguments = array_map(function ($a) {
- return is_object($a) ? clone $a : $a;
- }, func_get_args());
-
- if ($this->handlerWantsToBeQueued($class, $arguments)) {
- $this->queueHandler($class, $method, $arguments);
- }
- };
- }
-
- /**
- * Determine if the given event handler should be dispatched after all database transactions have committed.
- *
- * @param object|mixed $listener
- * @return bool
- */
- protected function handlerShouldBeDispatchedAfterDatabaseTransactions($listener)
- {
- return ($listener->afterCommit ?? null) && $this->container->bound('db.transactions');
- }
-
- /**
- * Create a callable for dispatching a listener after database transactions.
- *
- * @param mixed $listener
- * @param string $method
- * @return \Closure
- */
- protected function createCallbackForListenerRunningAfterCommits($listener, $method)
- {
- return function () use ($method, $listener) {
- $payload = func_get_args();
-
- $this->container->make('db.transactions')->addCallback(
- function () use ($listener, $method, $payload) {
- $listener->$method(...$payload);
- }
- );
- };
- }
-
- /**
- * Determine if the event handler wants to be queued.
- *
- * @param string $class
- * @param array $arguments
- * @return bool
- */
- protected function handlerWantsToBeQueued($class, $arguments)
- {
- $instance = $this->container->make($class);
-
- if (method_exists($instance, 'shouldQueue')) {
- return $instance->shouldQueue($arguments[0]);
- }
-
- return true;
- }
-
- /**
- * Queue the handler class.
- *
- * @param string $class
- * @param string $method
- * @param array $arguments
- * @return void
- */
- protected function queueHandler($class, $method, $arguments)
- {
- [$listener, $job] = $this->createListenerAndJob($class, $method, $arguments);
-
- $connection = $this->resolveQueue()->connection(method_exists($listener, 'viaConnection')
- ? $listener->viaConnection()
- : $listener->connection ?? null);
-
- $queue = method_exists($listener, 'viaQueue')
- ? $listener->viaQueue()
- : $listener->queue ?? null;
-
- isset($listener->delay)
- ? $connection->laterOn($queue, $listener->delay, $job)
- : $connection->pushOn($queue, $job);
- }
-
- /**
- * Create the listener and job for a queued listener.
- *
- * @param string $class
- * @param string $method
- * @param array $arguments
- * @return array
- */
- protected function createListenerAndJob($class, $method, $arguments)
- {
- $listener = (new ReflectionClass($class))->newInstanceWithoutConstructor();
-
- return [$listener, $this->propagateListenerOptions(
- $listener, new CallQueuedListener($class, $method, $arguments)
- )];
- }
-
- /**
- * Propagate listener options to the job.
- *
- * @param mixed $listener
- * @param mixed $job
- * @return mixed
- */
- protected function propagateListenerOptions($listener, $job)
- {
- return tap($job, function ($job) use ($listener) {
- $job->afterCommit = property_exists($listener, 'afterCommit') ? $listener->afterCommit : null;
- $job->backoff = method_exists($listener, 'backoff') ? $listener->backoff() : ($listener->backoff ?? null);
- $job->maxExceptions = $listener->maxExceptions ?? null;
- $job->retryUntil = method_exists($listener, 'retryUntil') ? $listener->retryUntil() : null;
- $job->shouldBeEncrypted = $listener instanceof ShouldBeEncrypted;
- $job->timeout = $listener->timeout ?? null;
- $job->tries = $listener->tries ?? null;
-
- $job->through(array_merge(
- method_exists($listener, 'middleware') ? $listener->middleware() : [],
- $listener->middleware ?? []
- ));
- });
- }
-
- /**
- * Remove a set of listeners from the dispatcher.
- *
- * @param string $event
- * @return void
- */
- public function forget($event)
- {
- if (Str::contains($event, '*')) {
- unset($this->wildcards[$event]);
- } else {
- unset($this->listeners[$event]);
- }
-
- foreach ($this->wildcardsCache as $key => $listeners) {
- if (Str::is($event, $key)) {
- unset($this->wildcardsCache[$key]);
- }
- }
- }
-
- /**
- * Forget all of the pushed listeners.
- *
- * @return void
- */
- public function forgetPushed()
- {
- foreach ($this->listeners as $key => $value) {
- if (Str::endsWith($key, '_pushed')) {
- $this->forget($key);
- }
- }
- }
-
- /**
- * Get the queue implementation from the resolver.
- *
- * @return \Illuminate\Contracts\Queue\Queue
- */
- protected function resolveQueue()
- {
- return call_user_func($this->queueResolver);
- }
-
- /**
- * Set the queue resolver implementation.
- *
- * @param callable $resolver
- * @return $this
- */
- public function setQueueResolver(callable $resolver)
- {
- $this->queueResolver = $resolver;
-
- return $this;
- }
-}
diff --git a/vendor/illuminate/events/EventServiceProvider.php b/vendor/illuminate/events/EventServiceProvider.php
deleted file mode 100755
index 15fb60b1..00000000
--- a/vendor/illuminate/events/EventServiceProvider.php
+++ /dev/null
@@ -1,23 +0,0 @@
-app->singleton('events', function ($app) {
- return (new Dispatcher($app))->setQueueResolver(function () use ($app) {
- return $app->make(QueueFactoryContract::class);
- });
- });
- }
-}
diff --git a/vendor/illuminate/events/InvokeQueuedClosure.php b/vendor/illuminate/events/InvokeQueuedClosure.php
deleted file mode 100644
index bc68b19d..00000000
--- a/vendor/illuminate/events/InvokeQueuedClosure.php
+++ /dev/null
@@ -1,34 +0,0 @@
-getClosure(), ...$arguments);
- }
-
- /**
- * Handle a job failure.
- *
- * @param \Laravel\SerializableClosure\SerializableClosure $closure
- * @param array $arguments
- * @param array $catchCallbacks
- * @param \Throwable $exception
- * @return void
- */
- public function failed($closure, array $arguments, array $catchCallbacks, $exception)
- {
- $arguments[] = $exception;
-
- collect($catchCallbacks)->each->__invoke(...$arguments);
- }
-}
diff --git a/vendor/illuminate/events/LICENSE.md b/vendor/illuminate/events/LICENSE.md
deleted file mode 100644
index 79810c84..00000000
--- a/vendor/illuminate/events/LICENSE.md
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Taylor Otwell
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/illuminate/events/NullDispatcher.php b/vendor/illuminate/events/NullDispatcher.php
deleted file mode 100644
index 5c539d53..00000000
--- a/vendor/illuminate/events/NullDispatcher.php
+++ /dev/null
@@ -1,144 +0,0 @@
-dispatcher = $dispatcher;
- }
-
- /**
- * Don't fire an event.
- *
- * @param string|object $event
- * @param mixed $payload
- * @param bool $halt
- * @return void
- */
- public function dispatch($event, $payload = [], $halt = false)
- {
- //
- }
-
- /**
- * Don't register an event and payload to be fired later.
- *
- * @param string $event
- * @param array $payload
- * @return void
- */
- public function push($event, $payload = [])
- {
- //
- }
-
- /**
- * Don't dispatch an event.
- *
- * @param string|object $event
- * @param mixed $payload
- * @return array|null
- */
- public function until($event, $payload = [])
- {
- //
- }
-
- /**
- * Register an event listener with the dispatcher.
- *
- * @param \Closure|string|array $events
- * @param \Closure|string|array|null $listener
- * @return void
- */
- public function listen($events, $listener = null)
- {
- $this->dispatcher->listen($events, $listener);
- }
-
- /**
- * Determine if a given event has listeners.
- *
- * @param string $eventName
- * @return bool
- */
- public function hasListeners($eventName)
- {
- return $this->dispatcher->hasListeners($eventName);
- }
-
- /**
- * Register an event subscriber with the dispatcher.
- *
- * @param object|string $subscriber
- * @return void
- */
- public function subscribe($subscriber)
- {
- $this->dispatcher->subscribe($subscriber);
- }
-
- /**
- * Flush a set of pushed events.
- *
- * @param string $event
- * @return void
- */
- public function flush($event)
- {
- $this->dispatcher->flush($event);
- }
-
- /**
- * Remove a set of listeners from the dispatcher.
- *
- * @param string $event
- * @return void
- */
- public function forget($event)
- {
- $this->dispatcher->forget($event);
- }
-
- /**
- * Forget all of the queued listeners.
- *
- * @return void
- */
- public function forgetPushed()
- {
- $this->dispatcher->forgetPushed();
- }
-
- /**
- * Dynamically pass method calls to the underlying dispatcher.
- *
- * @param string $method
- * @param array $parameters
- * @return mixed
- */
- public function __call($method, $parameters)
- {
- return $this->forwardCallTo($this->dispatcher, $method, $parameters);
- }
-}
diff --git a/vendor/illuminate/events/QueuedClosure.php b/vendor/illuminate/events/QueuedClosure.php
deleted file mode 100644
index 82590598..00000000
--- a/vendor/illuminate/events/QueuedClosure.php
+++ /dev/null
@@ -1,125 +0,0 @@
-closure = $closure;
- }
-
- /**
- * Set the desired connection for the job.
- *
- * @param string|null $connection
- * @return $this
- */
- public function onConnection($connection)
- {
- $this->connection = $connection;
-
- return $this;
- }
-
- /**
- * Set the desired queue for the job.
- *
- * @param string|null $queue
- * @return $this
- */
- public function onQueue($queue)
- {
- $this->queue = $queue;
-
- return $this;
- }
-
- /**
- * Set the desired delay for the job.
- *
- * @param \DateTimeInterface|\DateInterval|int|null $delay
- * @return $this
- */
- public function delay($delay)
- {
- $this->delay = $delay;
-
- return $this;
- }
-
- /**
- * Specify a callback that should be invoked if the queued listener job fails.
- *
- * @param \Closure $closure
- * @return $this
- */
- public function catch(Closure $closure)
- {
- $this->catchCallbacks[] = $closure;
-
- return $this;
- }
-
- /**
- * Resolve the actual event listener callback.
- *
- * @return \Closure
- */
- public function resolve()
- {
- return function (...$arguments) {
- dispatch(new CallQueuedListener(InvokeQueuedClosure::class, 'handle', [
- 'closure' => SerializableClosureFactory::make($this->closure),
- 'arguments' => $arguments,
- 'catch' => collect($this->catchCallbacks)->map(function ($callback) {
- return SerializableClosureFactory::make($callback);
- })->all(),
- ]))->onConnection($this->connection)->onQueue($this->queue)->delay($this->delay);
- };
- }
-}
diff --git a/vendor/illuminate/events/composer.json b/vendor/illuminate/events/composer.json
deleted file mode 100755
index b77ba2c8..00000000
--- a/vendor/illuminate/events/composer.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "name": "illuminate/events",
- "description": "The Illuminate Events package.",
- "license": "MIT",
- "homepage": "https://laravel.com",
- "support": {
- "issues": "https://github.com/laravel/framework/issues",
- "source": "https://github.com/laravel/framework"
- },
- "authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- }
- ],
- "require": {
- "php": "^7.3|^8.0",
- "illuminate/bus": "^8.0",
- "illuminate/collections": "^8.0",
- "illuminate/container": "^8.0",
- "illuminate/contracts": "^8.0",
- "illuminate/macroable": "^8.0",
- "illuminate/support": "^8.0"
- },
- "autoload": {
- "psr-4": {
- "Illuminate\\Events\\": ""
- },
- "files": [
- "functions.php"
- ]
- },
- "extra": {
- "branch-alias": {
- "dev-master": "8.x-dev"
- }
- },
- "config": {
- "sort-packages": true
- },
- "minimum-stability": "dev"
-}
diff --git a/vendor/illuminate/events/functions.php b/vendor/illuminate/events/functions.php
deleted file mode 100644
index df1b0feb..00000000
--- a/vendor/illuminate/events/functions.php
+++ /dev/null
@@ -1,18 +0,0 @@
-getMethods(
- ReflectionMethod::IS_PUBLIC | ReflectionMethod::IS_PROTECTED
- );
-
- foreach ($methods as $method) {
- if ($replace || ! static::hasMacro($method->name)) {
- $method->setAccessible(true);
- static::macro($method->name, $method->invoke($mixin));
- }
- }
- }
-
- /**
- * Checks if macro is registered.
- *
- * @param string $name
- * @return bool
- */
- public static function hasMacro($name)
- {
- return isset(static::$macros[$name]);
- }
-
- /**
- * Dynamically handle calls to the class.
- *
- * @param string $method
- * @param array $parameters
- * @return mixed
- *
- * @throws \BadMethodCallException
- */
- public static function __callStatic($method, $parameters)
- {
- if (! static::hasMacro($method)) {
- throw new BadMethodCallException(sprintf(
- 'Method %s::%s does not exist.', static::class, $method
- ));
- }
-
- $macro = static::$macros[$method];
-
- if ($macro instanceof Closure) {
- $macro = $macro->bindTo(null, static::class);
- }
-
- return $macro(...$parameters);
- }
-
- /**
- * Dynamically handle calls to the class.
- *
- * @param string $method
- * @param array $parameters
- * @return mixed
- *
- * @throws \BadMethodCallException
- */
- public function __call($method, $parameters)
- {
- if (! static::hasMacro($method)) {
- throw new BadMethodCallException(sprintf(
- 'Method %s::%s does not exist.', static::class, $method
- ));
- }
-
- $macro = static::$macros[$method];
-
- if ($macro instanceof Closure) {
- $macro = $macro->bindTo($this, static::class);
- }
-
- return $macro(...$parameters);
- }
-}
diff --git a/vendor/illuminate/macroable/composer.json b/vendor/illuminate/macroable/composer.json
deleted file mode 100644
index dfa5c62b..00000000
--- a/vendor/illuminate/macroable/composer.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "name": "illuminate/macroable",
- "description": "The Illuminate Macroable package.",
- "license": "MIT",
- "homepage": "https://laravel.com",
- "support": {
- "issues": "https://github.com/laravel/framework/issues",
- "source": "https://github.com/laravel/framework"
- },
- "authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- }
- ],
- "require": {
- "php": "^7.3|^8.0"
- },
- "autoload": {
- "psr-4": {
- "Illuminate\\Support\\": ""
- }
- },
- "extra": {
- "branch-alias": {
- "dev-master": "8.x-dev"
- }
- },
- "config": {
- "sort-packages": true
- },
- "minimum-stability": "dev"
-}
diff --git a/vendor/illuminate/pipeline/Hub.php b/vendor/illuminate/pipeline/Hub.php
deleted file mode 100644
index 91e9b3f3..00000000
--- a/vendor/illuminate/pipeline/Hub.php
+++ /dev/null
@@ -1,97 +0,0 @@
-container = $container;
- }
-
- /**
- * Define the default named pipeline.
- *
- * @param \Closure $callback
- * @return void
- */
- public function defaults(Closure $callback)
- {
- return $this->pipeline('default', $callback);
- }
-
- /**
- * Define a new named pipeline.
- *
- * @param string $name
- * @param \Closure $callback
- * @return void
- */
- public function pipeline($name, Closure $callback)
- {
- $this->pipelines[$name] = $callback;
- }
-
- /**
- * Send an object through one of the available pipelines.
- *
- * @param mixed $object
- * @param string|null $pipeline
- * @return mixed
- */
- public function pipe($object, $pipeline = null)
- {
- $pipeline = $pipeline ?: 'default';
-
- return call_user_func(
- $this->pipelines[$pipeline], new Pipeline($this->container), $object
- );
- }
-
- /**
- * Get the container instance used by the hub.
- *
- * @return \Illuminate\Contracts\Container\Container
- */
- public function getContainer()
- {
- return $this->container;
- }
-
- /**
- * Set the container instance used by the hub.
- *
- * @param \Illuminate\Contracts\Container\Container $container
- * @return $this
- */
- public function setContainer(Container $container)
- {
- $this->container = $container;
-
- return $this;
- }
-}
diff --git a/vendor/illuminate/pipeline/LICENSE.md b/vendor/illuminate/pipeline/LICENSE.md
deleted file mode 100644
index 79810c84..00000000
--- a/vendor/illuminate/pipeline/LICENSE.md
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Taylor Otwell
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/illuminate/pipeline/Pipeline.php b/vendor/illuminate/pipeline/Pipeline.php
deleted file mode 100644
index d2924e53..00000000
--- a/vendor/illuminate/pipeline/Pipeline.php
+++ /dev/null
@@ -1,258 +0,0 @@
-container = $container;
- }
-
- /**
- * Set the object being sent through the pipeline.
- *
- * @param mixed $passable
- * @return $this
- */
- public function send($passable)
- {
- $this->passable = $passable;
-
- return $this;
- }
-
- /**
- * Set the array of pipes.
- *
- * @param array|mixed $pipes
- * @return $this
- */
- public function through($pipes)
- {
- $this->pipes = is_array($pipes) ? $pipes : func_get_args();
-
- return $this;
- }
-
- /**
- * Set the method to call on the pipes.
- *
- * @param string $method
- * @return $this
- */
- public function via($method)
- {
- $this->method = $method;
-
- return $this;
- }
-
- /**
- * Run the pipeline with a final destination callback.
- *
- * @param \Closure $destination
- * @return mixed
- */
- public function then(Closure $destination)
- {
- $pipeline = array_reduce(
- array_reverse($this->pipes()), $this->carry(), $this->prepareDestination($destination)
- );
-
- return $pipeline($this->passable);
- }
-
- /**
- * Run the pipeline and return the result.
- *
- * @return mixed
- */
- public function thenReturn()
- {
- return $this->then(function ($passable) {
- return $passable;
- });
- }
-
- /**
- * Get the final piece of the Closure onion.
- *
- * @param \Closure $destination
- * @return \Closure
- */
- protected function prepareDestination(Closure $destination)
- {
- return function ($passable) use ($destination) {
- try {
- return $destination($passable);
- } catch (Throwable $e) {
- return $this->handleException($passable, $e);
- }
- };
- }
-
- /**
- * Get a Closure that represents a slice of the application onion.
- *
- * @return \Closure
- */
- protected function carry()
- {
- return function ($stack, $pipe) {
- return function ($passable) use ($stack, $pipe) {
- try {
- if (is_callable($pipe)) {
- // If the pipe is a callable, then we will call it directly, but otherwise we
- // will resolve the pipes out of the dependency container and call it with
- // the appropriate method and arguments, returning the results back out.
- return $pipe($passable, $stack);
- } elseif (! is_object($pipe)) {
- [$name, $parameters] = $this->parsePipeString($pipe);
-
- // If the pipe is a string we will parse the string and resolve the class out
- // of the dependency injection container. We can then build a callable and
- // execute the pipe function giving in the parameters that are required.
- $pipe = $this->getContainer()->make($name);
-
- $parameters = array_merge([$passable, $stack], $parameters);
- } else {
- // If the pipe is already an object we'll just make a callable and pass it to
- // the pipe as-is. There is no need to do any extra parsing and formatting
- // since the object we're given was already a fully instantiated object.
- $parameters = [$passable, $stack];
- }
-
- $carry = method_exists($pipe, $this->method)
- ? $pipe->{$this->method}(...$parameters)
- : $pipe(...$parameters);
-
- return $this->handleCarry($carry);
- } catch (Throwable $e) {
- return $this->handleException($passable, $e);
- }
- };
- };
- }
-
- /**
- * Parse full pipe string to get name and parameters.
- *
- * @param string $pipe
- * @return array
- */
- protected function parsePipeString($pipe)
- {
- [$name, $parameters] = array_pad(explode(':', $pipe, 2), 2, []);
-
- if (is_string($parameters)) {
- $parameters = explode(',', $parameters);
- }
-
- return [$name, $parameters];
- }
-
- /**
- * Get the array of configured pipes.
- *
- * @return array
- */
- protected function pipes()
- {
- return $this->pipes;
- }
-
- /**
- * Get the container instance.
- *
- * @return \Illuminate\Contracts\Container\Container
- *
- * @throws \RuntimeException
- */
- protected function getContainer()
- {
- if (! $this->container) {
- throw new RuntimeException('A container instance has not been passed to the Pipeline.');
- }
-
- return $this->container;
- }
-
- /**
- * Set the container instance.
- *
- * @param \Illuminate\Contracts\Container\Container $container
- * @return $this
- */
- public function setContainer(Container $container)
- {
- $this->container = $container;
-
- return $this;
- }
-
- /**
- * Handle the value returned from each pipe before passing it to the next.
- *
- * @param mixed $carry
- * @return mixed
- */
- protected function handleCarry($carry)
- {
- return $carry;
- }
-
- /**
- * Handle the given exception.
- *
- * @param mixed $passable
- * @param \Throwable $e
- * @return mixed
- *
- * @throws \Throwable
- */
- protected function handleException($passable, Throwable $e)
- {
- throw $e;
- }
-}
diff --git a/vendor/illuminate/pipeline/PipelineServiceProvider.php b/vendor/illuminate/pipeline/PipelineServiceProvider.php
deleted file mode 100644
index 982608b6..00000000
--- a/vendor/illuminate/pipeline/PipelineServiceProvider.php
+++ /dev/null
@@ -1,34 +0,0 @@
-app->singleton(
- PipelineHubContract::class, Hub::class
- );
- }
-
- /**
- * Get the services provided by the provider.
- *
- * @return array
- */
- public function provides()
- {
- return [
- PipelineHubContract::class,
- ];
- }
-}
diff --git a/vendor/illuminate/pipeline/composer.json b/vendor/illuminate/pipeline/composer.json
deleted file mode 100644
index ef6805bd..00000000
--- a/vendor/illuminate/pipeline/composer.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "name": "illuminate/pipeline",
- "description": "The Illuminate Pipeline package.",
- "license": "MIT",
- "homepage": "https://laravel.com",
- "support": {
- "issues": "https://github.com/laravel/framework/issues",
- "source": "https://github.com/laravel/framework"
- },
- "authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- }
- ],
- "require": {
- "php": "^7.3|^8.0",
- "illuminate/contracts": "^8.0",
- "illuminate/support": "^8.0"
- },
- "autoload": {
- "psr-4": {
- "Illuminate\\Pipeline\\": ""
- }
- },
- "extra": {
- "branch-alias": {
- "dev-master": "8.x-dev"
- }
- },
- "config": {
- "sort-packages": true
- },
- "minimum-stability": "dev"
-}
diff --git a/vendor/illuminate/support/AggregateServiceProvider.php b/vendor/illuminate/support/AggregateServiceProvider.php
deleted file mode 100644
index d7425c5c..00000000
--- a/vendor/illuminate/support/AggregateServiceProvider.php
+++ /dev/null
@@ -1,52 +0,0 @@
-instances = [];
-
- foreach ($this->providers as $provider) {
- $this->instances[] = $this->app->register($provider);
- }
- }
-
- /**
- * Get the services provided by the provider.
- *
- * @return array
- */
- public function provides()
- {
- $provides = [];
-
- foreach ($this->providers as $provider) {
- $instance = $this->app->resolveProvider($provider);
-
- $provides = array_merge($provides, $instance->provides());
- }
-
- return $provides;
- }
-}
diff --git a/vendor/illuminate/support/Carbon.php b/vendor/illuminate/support/Carbon.php
deleted file mode 100644
index 004b27b0..00000000
--- a/vendor/illuminate/support/Carbon.php
+++ /dev/null
@@ -1,18 +0,0 @@
-files = $files;
- $this->workingPath = $workingPath;
- }
-
- /**
- * Regenerate the Composer autoloader files.
- *
- * @param string|array $extra
- * @return int
- */
- public function dumpAutoloads($extra = '')
- {
- $extra = $extra ? (array) $extra : [];
-
- $command = array_merge($this->findComposer(), ['dump-autoload'], $extra);
-
- return $this->getProcess($command)->run();
- }
-
- /**
- * Regenerate the optimized Composer autoloader files.
- *
- * @return int
- */
- public function dumpOptimized()
- {
- return $this->dumpAutoloads('--optimize');
- }
-
- /**
- * Get the composer command for the environment.
- *
- * @return array
- */
- protected function findComposer()
- {
- if ($this->files->exists($this->workingPath.'/composer.phar')) {
- return [$this->phpBinary(), 'composer.phar'];
- }
-
- return ['composer'];
- }
-
- /**
- * Get the PHP binary.
- *
- * @return string
- */
- protected function phpBinary()
- {
- return ProcessUtils::escapeArgument((new PhpExecutableFinder)->find(false));
- }
-
- /**
- * Get a new Symfony process instance.
- *
- * @param array $command
- * @return \Symfony\Component\Process\Process
- */
- protected function getProcess(array $command)
- {
- return (new Process($command, $this->workingPath))->setTimeout(null);
- }
-
- /**
- * Set the working path used by the class.
- *
- * @param string $path
- * @return $this
- */
- public function setWorkingPath($path)
- {
- $this->workingPath = realpath($path);
-
- return $this;
- }
-}
diff --git a/vendor/illuminate/support/ConfigurationUrlParser.php b/vendor/illuminate/support/ConfigurationUrlParser.php
deleted file mode 100644
index be54b9a8..00000000
--- a/vendor/illuminate/support/ConfigurationUrlParser.php
+++ /dev/null
@@ -1,193 +0,0 @@
- 'sqlsrv',
- 'mysql2' => 'mysql', // RDS
- 'postgres' => 'pgsql',
- 'postgresql' => 'pgsql',
- 'sqlite3' => 'sqlite',
- 'redis' => 'tcp',
- 'rediss' => 'tls',
- ];
-
- /**
- * Parse the database configuration, hydrating options using a database configuration URL if possible.
- *
- * @param array|string $config
- * @return array
- */
- public function parseConfiguration($config)
- {
- if (is_string($config)) {
- $config = ['url' => $config];
- }
-
- $url = Arr::pull($config, 'url');
-
- if (! $url) {
- return $config;
- }
-
- $rawComponents = $this->parseUrl($url);
-
- $decodedComponents = $this->parseStringsToNativeTypes(
- array_map('rawurldecode', $rawComponents)
- );
-
- return array_merge(
- $config,
- $this->getPrimaryOptions($decodedComponents),
- $this->getQueryOptions($rawComponents)
- );
- }
-
- /**
- * Get the primary database connection options.
- *
- * @param array $url
- * @return array
- */
- protected function getPrimaryOptions($url)
- {
- return array_filter([
- 'driver' => $this->getDriver($url),
- 'database' => $this->getDatabase($url),
- 'host' => $url['host'] ?? null,
- 'port' => $url['port'] ?? null,
- 'username' => $url['user'] ?? null,
- 'password' => $url['pass'] ?? null,
- ], function ($value) {
- return ! is_null($value);
- });
- }
-
- /**
- * Get the database driver from the URL.
- *
- * @param array $url
- * @return string|null
- */
- protected function getDriver($url)
- {
- $alias = $url['scheme'] ?? null;
-
- if (! $alias) {
- return;
- }
-
- return static::$driverAliases[$alias] ?? $alias;
- }
-
- /**
- * Get the database name from the URL.
- *
- * @param array $url
- * @return string|null
- */
- protected function getDatabase($url)
- {
- $path = $url['path'] ?? null;
-
- return $path && $path !== '/' ? substr($path, 1) : null;
- }
-
- /**
- * Get all of the additional database options from the query string.
- *
- * @param array $url
- * @return array
- */
- protected function getQueryOptions($url)
- {
- $queryString = $url['query'] ?? null;
-
- if (! $queryString) {
- return [];
- }
-
- $query = [];
-
- parse_str($queryString, $query);
-
- return $this->parseStringsToNativeTypes($query);
- }
-
- /**
- * Parse the string URL to an array of components.
- *
- * @param string $url
- * @return array
- *
- * @throws \InvalidArgumentException
- */
- protected function parseUrl($url)
- {
- $url = preg_replace('#^(sqlite3?):///#', '$1://null/', $url);
-
- $parsedUrl = parse_url($url);
-
- if ($parsedUrl === false) {
- throw new InvalidArgumentException('The database configuration URL is malformed.');
- }
-
- return $parsedUrl;
- }
-
- /**
- * Convert string casted values to their native types.
- *
- * @param mixed $value
- * @return mixed
- */
- protected function parseStringsToNativeTypes($value)
- {
- if (is_array($value)) {
- return array_map([$this, 'parseStringsToNativeTypes'], $value);
- }
-
- if (! is_string($value)) {
- return $value;
- }
-
- $parsedValue = json_decode($value, true);
-
- if (json_last_error() === JSON_ERROR_NONE) {
- return $parsedValue;
- }
-
- return $value;
- }
-
- /**
- * Get all of the current drivers' aliases.
- *
- * @return array
- */
- public static function getDriverAliases()
- {
- return static::$driverAliases;
- }
-
- /**
- * Add the given driver alias to the driver aliases array.
- *
- * @param string $alias
- * @param string $driver
- * @return void
- */
- public static function addDriverAlias($alias, $driver)
- {
- static::$driverAliases[$alias] = $driver;
- }
-}
diff --git a/vendor/illuminate/support/DateFactory.php b/vendor/illuminate/support/DateFactory.php
deleted file mode 100644
index e1d0ca14..00000000
--- a/vendor/illuminate/support/DateFactory.php
+++ /dev/null
@@ -1,231 +0,0 @@
-$method(...$parameters);
- }
-
- $dateClass = static::$dateClass ?: $defaultClassName;
-
- // Check if date can be created using public class method...
- if (method_exists($dateClass, $method) ||
- method_exists($dateClass, 'hasMacro') && $dateClass::hasMacro($method)) {
- return $dateClass::$method(...$parameters);
- }
-
- // If that fails, create the date with the default class...
- $date = $defaultClassName::$method(...$parameters);
-
- // If the configured class has an "instance" method, we'll try to pass our date into there...
- if (method_exists($dateClass, 'instance')) {
- return $dateClass::instance($date);
- }
-
- // Otherwise, assume the configured class has a DateTime compatible constructor...
- return new $dateClass($date->format('Y-m-d H:i:s.u'), $date->getTimezone());
- }
-}
diff --git a/vendor/illuminate/support/Env.php b/vendor/illuminate/support/Env.php
deleted file mode 100644
index b3100730..00000000
--- a/vendor/illuminate/support/Env.php
+++ /dev/null
@@ -1,103 +0,0 @@
-addAdapter(PutenvAdapter::class);
- }
-
- static::$repository = $builder->immutable()->make();
- }
-
- return static::$repository;
- }
-
- /**
- * Gets the value of an environment variable.
- *
- * @param string $key
- * @param mixed $default
- * @return mixed
- */
- public static function get($key, $default = null)
- {
- return Option::fromValue(static::getRepository()->get($key))
- ->map(function ($value) {
- switch (strtolower($value)) {
- case 'true':
- case '(true)':
- return true;
- case 'false':
- case '(false)':
- return false;
- case 'empty':
- case '(empty)':
- return '';
- case 'null':
- case '(null)':
- return;
- }
-
- if (preg_match('/\A([\'"])(.*)\1\z/', $value, $matches)) {
- return $matches[2];
- }
-
- return $value;
- })
- ->getOrCall(function () use ($default) {
- return value($default);
- });
- }
-}
diff --git a/vendor/illuminate/support/Facades/App.php b/vendor/illuminate/support/Facades/App.php
deleted file mode 100755
index 0adb144d..00000000
--- a/vendor/illuminate/support/Facades/App.php
+++ /dev/null
@@ -1,63 +0,0 @@
-providerIsLoaded(UiServiceProvider::class)) {
- throw new RuntimeException('In order to use the Auth::routes() method, please install the laravel/ui package.');
- }
-
- static::$app->make('router')->auth($options);
- }
-}
diff --git a/vendor/illuminate/support/Facades/Blade.php b/vendor/illuminate/support/Facades/Blade.php
deleted file mode 100755
index 8c7df0c2..00000000
--- a/vendor/illuminate/support/Facades/Blade.php
+++ /dev/null
@@ -1,44 +0,0 @@
-dispatch();
- }
-
- /**
- * Get the registered name of the component.
- *
- * @return string
- */
- protected static function getFacadeAccessor()
- {
- return BusDispatcherContract::class;
- }
-}
diff --git a/vendor/illuminate/support/Facades/Cache.php b/vendor/illuminate/support/Facades/Cache.php
deleted file mode 100755
index 70aa1dc4..00000000
--- a/vendor/illuminate/support/Facades/Cache.php
+++ /dev/null
@@ -1,40 +0,0 @@
-cookie($key, null));
- }
-
- /**
- * Retrieve a cookie from the request.
- *
- * @param string|null $key
- * @param mixed $default
- * @return string|array|null
- */
- public static function get($key = null, $default = null)
- {
- return static::$app['request']->cookie($key, $default);
- }
-
- /**
- * Get the registered name of the component.
- *
- * @return string
- */
- protected static function getFacadeAccessor()
- {
- return 'cookie';
- }
-}
diff --git a/vendor/illuminate/support/Facades/Crypt.php b/vendor/illuminate/support/Facades/Crypt.php
deleted file mode 100755
index 61eaaa83..00000000
--- a/vendor/illuminate/support/Facades/Crypt.php
+++ /dev/null
@@ -1,27 +0,0 @@
-resolved($accessor) === true) {
- $callback(static::getFacadeRoot());
- }
-
- static::$app->afterResolving($accessor, function ($service) use ($callback) {
- $callback($service);
- });
- }
-
- /**
- * Convert the facade into a Mockery spy.
- *
- * @return \Mockery\MockInterface
- */
- public static function spy()
- {
- if (! static::isMock()) {
- $class = static::getMockableClass();
-
- return tap($class ? Mockery::spy($class) : Mockery::spy(), function ($spy) {
- static::swap($spy);
- });
- }
- }
-
- /**
- * Initiate a partial mock on the facade.
- *
- * @return \Mockery\MockInterface
- */
- public static function partialMock()
- {
- $name = static::getFacadeAccessor();
-
- $mock = static::isMock()
- ? static::$resolvedInstance[$name]
- : static::createFreshMockInstance();
-
- return $mock->makePartial();
- }
-
- /**
- * Initiate a mock expectation on the facade.
- *
- * @return \Mockery\Expectation
- */
- public static function shouldReceive()
- {
- $name = static::getFacadeAccessor();
-
- $mock = static::isMock()
- ? static::$resolvedInstance[$name]
- : static::createFreshMockInstance();
-
- return $mock->shouldReceive(...func_get_args());
- }
-
- /**
- * Create a fresh mock instance for the given class.
- *
- * @return \Mockery\MockInterface
- */
- protected static function createFreshMockInstance()
- {
- return tap(static::createMock(), function ($mock) {
- static::swap($mock);
-
- $mock->shouldAllowMockingProtectedMethods();
- });
- }
-
- /**
- * Create a fresh mock instance for the given class.
- *
- * @return \Mockery\MockInterface
- */
- protected static function createMock()
- {
- $class = static::getMockableClass();
-
- return $class ? Mockery::mock($class) : Mockery::mock();
- }
-
- /**
- * Determines whether a mock is set as the instance of the facade.
- *
- * @return bool
- */
- protected static function isMock()
- {
- $name = static::getFacadeAccessor();
-
- return isset(static::$resolvedInstance[$name]) &&
- static::$resolvedInstance[$name] instanceof LegacyMockInterface;
- }
-
- /**
- * Get the mockable class for the bound instance.
- *
- * @return string|null
- */
- protected static function getMockableClass()
- {
- if ($root = static::getFacadeRoot()) {
- return get_class($root);
- }
- }
-
- /**
- * Hotswap the underlying instance behind the facade.
- *
- * @param mixed $instance
- * @return void
- */
- public static function swap($instance)
- {
- static::$resolvedInstance[static::getFacadeAccessor()] = $instance;
-
- if (isset(static::$app)) {
- static::$app->instance(static::getFacadeAccessor(), $instance);
- }
- }
-
- /**
- * Get the root object behind the facade.
- *
- * @return mixed
- */
- public static function getFacadeRoot()
- {
- return static::resolveFacadeInstance(static::getFacadeAccessor());
- }
-
- /**
- * Get the registered name of the component.
- *
- * @return string
- *
- * @throws \RuntimeException
- */
- protected static function getFacadeAccessor()
- {
- throw new RuntimeException('Facade does not implement getFacadeAccessor method.');
- }
-
- /**
- * Resolve the facade root instance from the container.
- *
- * @param object|string $name
- * @return mixed
- */
- protected static function resolveFacadeInstance($name)
- {
- if (is_object($name)) {
- return $name;
- }
-
- if (isset(static::$resolvedInstance[$name])) {
- return static::$resolvedInstance[$name];
- }
-
- if (static::$app) {
- return static::$resolvedInstance[$name] = static::$app[$name];
- }
- }
-
- /**
- * Clear a resolved facade instance.
- *
- * @param string $name
- * @return void
- */
- public static function clearResolvedInstance($name)
- {
- unset(static::$resolvedInstance[$name]);
- }
-
- /**
- * Clear all of the resolved instances.
- *
- * @return void
- */
- public static function clearResolvedInstances()
- {
- static::$resolvedInstance = [];
- }
-
- /**
- * Get the application instance behind the facade.
- *
- * @return \Illuminate\Contracts\Foundation\Application
- */
- public static function getFacadeApplication()
- {
- return static::$app;
- }
-
- /**
- * Set the application instance.
- *
- * @param \Illuminate\Contracts\Foundation\Application $app
- * @return void
- */
- public static function setFacadeApplication($app)
- {
- static::$app = $app;
- }
-
- /**
- * Handle dynamic, static calls to the object.
- *
- * @param string $method
- * @param array $args
- * @return mixed
- *
- * @throws \RuntimeException
- */
- public static function __callStatic($method, $args)
- {
- $instance = static::getFacadeRoot();
-
- if (! $instance) {
- throw new RuntimeException('A facade root has not been set.');
- }
-
- return $instance->$method(...$args);
- }
-}
diff --git a/vendor/illuminate/support/Facades/File.php b/vendor/illuminate/support/Facades/File.php
deleted file mode 100755
index c22d363a..00000000
--- a/vendor/illuminate/support/Facades/File.php
+++ /dev/null
@@ -1,62 +0,0 @@
-route($channel, $route);
- }
-
- /**
- * Get the registered name of the component.
- *
- * @return string
- */
- protected static function getFacadeAccessor()
- {
- return ChannelManager::class;
- }
-}
diff --git a/vendor/illuminate/support/Facades/ParallelTesting.php b/vendor/illuminate/support/Facades/ParallelTesting.php
deleted file mode 100644
index c3976113..00000000
--- a/vendor/illuminate/support/Facades/ParallelTesting.php
+++ /dev/null
@@ -1,26 +0,0 @@
-connection($name)->getSchemaBuilder();
- }
-
- /**
- * Get a schema builder instance for the default connection.
- *
- * @return \Illuminate\Database\Schema\Builder
- */
- protected static function getFacadeAccessor()
- {
- return static::$app['db']->connection()->getSchemaBuilder();
- }
-}
diff --git a/vendor/illuminate/support/Facades/Session.php b/vendor/illuminate/support/Facades/Session.php
deleted file mode 100755
index a0723216..00000000
--- a/vendor/illuminate/support/Facades/Session.php
+++ /dev/null
@@ -1,45 +0,0 @@
-get('filesystems.default');
-
- $root = storage_path('framework/testing/disks/'.$disk);
-
- if ($token = ParallelTesting::token()) {
- $root = "{$root}_test_{$token}";
- }
-
- (new Filesystem)->cleanDirectory($root);
-
- static::set($disk, $fake = static::createLocalDriver(array_merge($config, [
- 'root' => $root,
- ])));
-
- return $fake;
- }
-
- /**
- * Replace the given disk with a persistent local testing disk.
- *
- * @param string|null $disk
- * @param array $config
- * @return \Illuminate\Contracts\Filesystem\Filesystem
- */
- public static function persistentFake($disk = null, array $config = [])
- {
- $disk = $disk ?: static::$app['config']->get('filesystems.default');
-
- static::set($disk, $fake = static::createLocalDriver(array_merge($config, [
- 'root' => storage_path('framework/testing/disks/'.$disk),
- ])));
-
- return $fake;
- }
-
- /**
- * Get the registered name of the component.
- *
- * @return string
- */
- protected static function getFacadeAccessor()
- {
- return 'filesystem';
- }
-}
diff --git a/vendor/illuminate/support/Facades/URL.php b/vendor/illuminate/support/Facades/URL.php
deleted file mode 100755
index 7d9941d7..00000000
--- a/vendor/illuminate/support/Facades/URL.php
+++ /dev/null
@@ -1,38 +0,0 @@
- $value) {
- $this->attributes[$key] = $value;
- }
- }
-
- /**
- * Get an attribute from the fluent instance.
- *
- * @param string $key
- * @param mixed $default
- * @return mixed
- */
- public function get($key, $default = null)
- {
- if (array_key_exists($key, $this->attributes)) {
- return $this->attributes[$key];
- }
-
- return value($default);
- }
-
- /**
- * Get the attributes from the fluent instance.
- *
- * @return array
- */
- public function getAttributes()
- {
- return $this->attributes;
- }
-
- /**
- * Convert the fluent instance to an array.
- *
- * @return array
- */
- public function toArray()
- {
- return $this->attributes;
- }
-
- /**
- * Convert the object into something JSON serializable.
- *
- * @return array
- */
- #[\ReturnTypeWillChange]
- public function jsonSerialize()
- {
- return $this->toArray();
- }
-
- /**
- * Convert the fluent instance to JSON.
- *
- * @param int $options
- * @return string
- */
- public function toJson($options = 0)
- {
- return json_encode($this->jsonSerialize(), $options);
- }
-
- /**
- * Determine if the given offset exists.
- *
- * @param string $offset
- * @return bool
- */
- #[\ReturnTypeWillChange]
- public function offsetExists($offset)
- {
- return isset($this->attributes[$offset]);
- }
-
- /**
- * Get the value for a given offset.
- *
- * @param string $offset
- * @return mixed
- */
- #[\ReturnTypeWillChange]
- public function offsetGet($offset)
- {
- return $this->get($offset);
- }
-
- /**
- * Set the value at the given offset.
- *
- * @param string $offset
- * @param mixed $value
- * @return void
- */
- #[\ReturnTypeWillChange]
- public function offsetSet($offset, $value)
- {
- $this->attributes[$offset] = $value;
- }
-
- /**
- * Unset the value at the given offset.
- *
- * @param string $offset
- * @return void
- */
- #[\ReturnTypeWillChange]
- public function offsetUnset($offset)
- {
- unset($this->attributes[$offset]);
- }
-
- /**
- * Handle dynamic calls to the fluent instance to set attributes.
- *
- * @param string $method
- * @param array $parameters
- * @return $this
- */
- public function __call($method, $parameters)
- {
- $this->attributes[$method] = count($parameters) > 0 ? $parameters[0] : true;
-
- return $this;
- }
-
- /**
- * Dynamically retrieve the value of an attribute.
- *
- * @param string $key
- * @return mixed
- */
- public function __get($key)
- {
- return $this->get($key);
- }
-
- /**
- * Dynamically set the value of an attribute.
- *
- * @param string $key
- * @param mixed $value
- * @return void
- */
- public function __set($key, $value)
- {
- $this->offsetSet($key, $value);
- }
-
- /**
- * Dynamically check if an attribute is set.
- *
- * @param string $key
- * @return bool
- */
- public function __isset($key)
- {
- return $this->offsetExists($key);
- }
-
- /**
- * Dynamically unset an attribute.
- *
- * @param string $key
- * @return void
- */
- public function __unset($key)
- {
- $this->offsetUnset($key);
- }
-}
diff --git a/vendor/illuminate/support/HigherOrderTapProxy.php b/vendor/illuminate/support/HigherOrderTapProxy.php
deleted file mode 100644
index bbf9b2e5..00000000
--- a/vendor/illuminate/support/HigherOrderTapProxy.php
+++ /dev/null
@@ -1,38 +0,0 @@
-target = $target;
- }
-
- /**
- * Dynamically pass method calls to the target.
- *
- * @param string $method
- * @param array $parameters
- * @return mixed
- */
- public function __call($method, $parameters)
- {
- $this->target->{$method}(...$parameters);
-
- return $this->target;
- }
-}
diff --git a/vendor/illuminate/support/HtmlString.php b/vendor/illuminate/support/HtmlString.php
deleted file mode 100644
index d6b71d46..00000000
--- a/vendor/illuminate/support/HtmlString.php
+++ /dev/null
@@ -1,66 +0,0 @@
-html = $html;
- }
-
- /**
- * Get the HTML string.
- *
- * @return string
- */
- public function toHtml()
- {
- return $this->html;
- }
-
- /**
- * Determine if the given HTML string is empty.
- *
- * @return bool
- */
- public function isEmpty()
- {
- return $this->html === '';
- }
-
- /**
- * Determine if the given HTML string is not empty.
- *
- * @return bool
- */
- public function isNotEmpty()
- {
- return ! $this->isEmpty();
- }
-
- /**
- * Get the HTML string.
- *
- * @return string
- */
- public function __toString()
- {
- return $this->toHtml();
- }
-}
diff --git a/vendor/illuminate/support/InteractsWithTime.php b/vendor/illuminate/support/InteractsWithTime.php
deleted file mode 100644
index 2b617c39..00000000
--- a/vendor/illuminate/support/InteractsWithTime.php
+++ /dev/null
@@ -1,64 +0,0 @@
-parseDateInterval($delay);
-
- return $delay instanceof DateTimeInterface
- ? max(0, $delay->getTimestamp() - $this->currentTime())
- : (int) $delay;
- }
-
- /**
- * Get the "available at" UNIX timestamp.
- *
- * @param \DateTimeInterface|\DateInterval|int $delay
- * @return int
- */
- protected function availableAt($delay = 0)
- {
- $delay = $this->parseDateInterval($delay);
-
- return $delay instanceof DateTimeInterface
- ? $delay->getTimestamp()
- : Carbon::now()->addRealSeconds($delay)->getTimestamp();
- }
-
- /**
- * If the given value is an interval, convert it to a DateTime instance.
- *
- * @param \DateTimeInterface|\DateInterval|int $delay
- * @return \DateTimeInterface|int
- */
- protected function parseDateInterval($delay)
- {
- if ($delay instanceof DateInterval) {
- $delay = Carbon::now()->add($delay);
- }
-
- return $delay;
- }
-
- /**
- * Get the current system time as a UNIX timestamp.
- *
- * @return int
- */
- protected function currentTime()
- {
- return Carbon::now()->getTimestamp();
- }
-}
diff --git a/vendor/illuminate/support/LICENSE.md b/vendor/illuminate/support/LICENSE.md
deleted file mode 100644
index 79810c84..00000000
--- a/vendor/illuminate/support/LICENSE.md
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Taylor Otwell
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/illuminate/support/Manager.php b/vendor/illuminate/support/Manager.php
deleted file mode 100755
index f8ae0729..00000000
--- a/vendor/illuminate/support/Manager.php
+++ /dev/null
@@ -1,193 +0,0 @@
-container = $container;
- $this->config = $container->make('config');
- }
-
- /**
- * Get the default driver name.
- *
- * @return string
- */
- abstract public function getDefaultDriver();
-
- /**
- * Get a driver instance.
- *
- * @param string|null $driver
- * @return mixed
- *
- * @throws \InvalidArgumentException
- */
- public function driver($driver = null)
- {
- $driver = $driver ?: $this->getDefaultDriver();
-
- if (is_null($driver)) {
- throw new InvalidArgumentException(sprintf(
- 'Unable to resolve NULL driver for [%s].', static::class
- ));
- }
-
- // If the given driver has not been created before, we will create the instances
- // here and cache it so we can return it next time very quickly. If there is
- // already a driver created by this name, we'll just return that instance.
- if (! isset($this->drivers[$driver])) {
- $this->drivers[$driver] = $this->createDriver($driver);
- }
-
- return $this->drivers[$driver];
- }
-
- /**
- * Create a new driver instance.
- *
- * @param string $driver
- * @return mixed
- *
- * @throws \InvalidArgumentException
- */
- protected function createDriver($driver)
- {
- // First, we will determine if a custom driver creator exists for the given driver and
- // if it does not we will check for a creator method for the driver. Custom creator
- // callbacks allow developers to build their own "drivers" easily using Closures.
- if (isset($this->customCreators[$driver])) {
- return $this->callCustomCreator($driver);
- } else {
- $method = 'create'.Str::studly($driver).'Driver';
-
- if (method_exists($this, $method)) {
- return $this->$method();
- }
- }
-
- throw new InvalidArgumentException("Driver [$driver] not supported.");
- }
-
- /**
- * Call a custom driver creator.
- *
- * @param string $driver
- * @return mixed
- */
- protected function callCustomCreator($driver)
- {
- return $this->customCreators[$driver]($this->container);
- }
-
- /**
- * Register a custom driver creator Closure.
- *
- * @param string $driver
- * @param \Closure $callback
- * @return $this
- */
- public function extend($driver, Closure $callback)
- {
- $this->customCreators[$driver] = $callback;
-
- return $this;
- }
-
- /**
- * Get all of the created "drivers".
- *
- * @return array
- */
- public function getDrivers()
- {
- return $this->drivers;
- }
-
- /**
- * Get the container instance used by the manager.
- *
- * @return \Illuminate\Contracts\Container\Container
- */
- public function getContainer()
- {
- return $this->container;
- }
-
- /**
- * Set the container instance used by the manager.
- *
- * @param \Illuminate\Contracts\Container\Container $container
- * @return $this
- */
- public function setContainer(Container $container)
- {
- $this->container = $container;
-
- return $this;
- }
-
- /**
- * Forget all of the resolved driver instances.
- *
- * @return $this
- */
- public function forgetDrivers()
- {
- $this->drivers = [];
-
- return $this;
- }
-
- /**
- * Dynamically call the default driver instance.
- *
- * @param string $method
- * @param array $parameters
- * @return mixed
- */
- public function __call($method, $parameters)
- {
- return $this->driver()->$method(...$parameters);
- }
-}
diff --git a/vendor/illuminate/support/MessageBag.php b/vendor/illuminate/support/MessageBag.php
deleted file mode 100755
index e53d509d..00000000
--- a/vendor/illuminate/support/MessageBag.php
+++ /dev/null
@@ -1,418 +0,0 @@
- $value) {
- $value = $value instanceof Arrayable ? $value->toArray() : (array) $value;
-
- $this->messages[$key] = array_unique($value);
- }
- }
-
- /**
- * Get the keys present in the message bag.
- *
- * @return array
- */
- public function keys()
- {
- return array_keys($this->messages);
- }
-
- /**
- * Add a message to the message bag.
- *
- * @param string $key
- * @param string $message
- * @return $this
- */
- public function add($key, $message)
- {
- if ($this->isUnique($key, $message)) {
- $this->messages[$key][] = $message;
- }
-
- return $this;
- }
-
- /**
- * Add a message to the message bag if the given conditional is "true".
- *
- * @param bool $boolean
- * @param string $key
- * @param string $message
- * @return $this
- */
- public function addIf($boolean, $key, $message)
- {
- return $boolean ? $this->add($key, $message) : $this;
- }
-
- /**
- * Determine if a key and message combination already exists.
- *
- * @param string $key
- * @param string $message
- * @return bool
- */
- protected function isUnique($key, $message)
- {
- $messages = (array) $this->messages;
-
- return ! isset($messages[$key]) || ! in_array($message, $messages[$key]);
- }
-
- /**
- * Merge a new array of messages into the message bag.
- *
- * @param \Illuminate\Contracts\Support\MessageProvider|array $messages
- * @return $this
- */
- public function merge($messages)
- {
- if ($messages instanceof MessageProvider) {
- $messages = $messages->getMessageBag()->getMessages();
- }
-
- $this->messages = array_merge_recursive($this->messages, $messages);
-
- return $this;
- }
-
- /**
- * Determine if messages exist for all of the given keys.
- *
- * @param array|string|null $key
- * @return bool
- */
- public function has($key)
- {
- if ($this->isEmpty()) {
- return false;
- }
-
- if (is_null($key)) {
- return $this->any();
- }
-
- $keys = is_array($key) ? $key : func_get_args();
-
- foreach ($keys as $key) {
- if ($this->first($key) === '') {
- return false;
- }
- }
-
- return true;
- }
-
- /**
- * Determine if messages exist for any of the given keys.
- *
- * @param array|string $keys
- * @return bool
- */
- public function hasAny($keys = [])
- {
- if ($this->isEmpty()) {
- return false;
- }
-
- $keys = is_array($keys) ? $keys : func_get_args();
-
- foreach ($keys as $key) {
- if ($this->has($key)) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Get the first message from the message bag for a given key.
- *
- * @param string|null $key
- * @param string|null $format
- * @return string
- */
- public function first($key = null, $format = null)
- {
- $messages = is_null($key) ? $this->all($format) : $this->get($key, $format);
-
- $firstMessage = Arr::first($messages, null, '');
-
- return is_array($firstMessage) ? Arr::first($firstMessage) : $firstMessage;
- }
-
- /**
- * Get all of the messages from the message bag for a given key.
- *
- * @param string $key
- * @param string|null $format
- * @return array
- */
- public function get($key, $format = null)
- {
- // If the message exists in the message bag, we will transform it and return
- // the message. Otherwise, we will check if the key is implicit & collect
- // all the messages that match the given key and output it as an array.
- if (array_key_exists($key, $this->messages)) {
- return $this->transform(
- $this->messages[$key], $this->checkFormat($format), $key
- );
- }
-
- if (Str::contains($key, '*')) {
- return $this->getMessagesForWildcardKey($key, $format);
- }
-
- return [];
- }
-
- /**
- * Get the messages for a wildcard key.
- *
- * @param string $key
- * @param string|null $format
- * @return array
- */
- protected function getMessagesForWildcardKey($key, $format)
- {
- return collect($this->messages)
- ->filter(function ($messages, $messageKey) use ($key) {
- return Str::is($key, $messageKey);
- })
- ->map(function ($messages, $messageKey) use ($format) {
- return $this->transform(
- $messages, $this->checkFormat($format), $messageKey
- );
- })->all();
- }
-
- /**
- * Get all of the messages for every key in the message bag.
- *
- * @param string|null $format
- * @return array
- */
- public function all($format = null)
- {
- $format = $this->checkFormat($format);
-
- $all = [];
-
- foreach ($this->messages as $key => $messages) {
- $all = array_merge($all, $this->transform($messages, $format, $key));
- }
-
- return $all;
- }
-
- /**
- * Get all of the unique messages for every key in the message bag.
- *
- * @param string|null $format
- * @return array
- */
- public function unique($format = null)
- {
- return array_unique($this->all($format));
- }
-
- /**
- * Format an array of messages.
- *
- * @param array $messages
- * @param string $format
- * @param string $messageKey
- * @return array
- */
- protected function transform($messages, $format, $messageKey)
- {
- return collect((array) $messages)
- ->map(function ($message) use ($format, $messageKey) {
- // We will simply spin through the given messages and transform each one
- // replacing the :message place holder with the real message allowing
- // the messages to be easily formatted to each developer's desires.
- return str_replace([':message', ':key'], [$message, $messageKey], $format);
- })->all();
- }
-
- /**
- * Get the appropriate format based on the given format.
- *
- * @param string $format
- * @return string
- */
- protected function checkFormat($format)
- {
- return $format ?: $this->format;
- }
-
- /**
- * Get the raw messages in the message bag.
- *
- * @return array
- */
- public function messages()
- {
- return $this->messages;
- }
-
- /**
- * Get the raw messages in the message bag.
- *
- * @return array
- */
- public function getMessages()
- {
- return $this->messages();
- }
-
- /**
- * Get the messages for the instance.
- *
- * @return \Illuminate\Support\MessageBag
- */
- public function getMessageBag()
- {
- return $this;
- }
-
- /**
- * Get the default message format.
- *
- * @return string
- */
- public function getFormat()
- {
- return $this->format;
- }
-
- /**
- * Set the default message format.
- *
- * @param string $format
- * @return \Illuminate\Support\MessageBag
- */
- public function setFormat($format = ':message')
- {
- $this->format = $format;
-
- return $this;
- }
-
- /**
- * Determine if the message bag has any messages.
- *
- * @return bool
- */
- public function isEmpty()
- {
- return ! $this->any();
- }
-
- /**
- * Determine if the message bag has any messages.
- *
- * @return bool
- */
- public function isNotEmpty()
- {
- return $this->any();
- }
-
- /**
- * Determine if the message bag has any messages.
- *
- * @return bool
- */
- public function any()
- {
- return $this->count() > 0;
- }
-
- /**
- * Get the number of messages in the message bag.
- *
- * @return int
- */
- #[\ReturnTypeWillChange]
- public function count()
- {
- return count($this->messages, COUNT_RECURSIVE) - count($this->messages);
- }
-
- /**
- * Get the instance as an array.
- *
- * @return array
- */
- public function toArray()
- {
- return $this->getMessages();
- }
-
- /**
- * Convert the object into something JSON serializable.
- *
- * @return array
- */
- #[\ReturnTypeWillChange]
- public function jsonSerialize()
- {
- return $this->toArray();
- }
-
- /**
- * Convert the object to its JSON representation.
- *
- * @param int $options
- * @return string
- */
- public function toJson($options = 0)
- {
- return json_encode($this->jsonSerialize(), $options);
- }
-
- /**
- * Convert the message bag to its string representation.
- *
- * @return string
- */
- public function __toString()
- {
- return $this->toJson();
- }
-}
diff --git a/vendor/illuminate/support/NamespacedItemResolver.php b/vendor/illuminate/support/NamespacedItemResolver.php
deleted file mode 100755
index e9251db6..00000000
--- a/vendor/illuminate/support/NamespacedItemResolver.php
+++ /dev/null
@@ -1,102 +0,0 @@
-parsed[$key])) {
- return $this->parsed[$key];
- }
-
- // If the key does not contain a double colon, it means the key is not in a
- // namespace, and is just a regular configuration item. Namespaces are a
- // tool for organizing configuration items for things such as modules.
- if (strpos($key, '::') === false) {
- $segments = explode('.', $key);
-
- $parsed = $this->parseBasicSegments($segments);
- } else {
- $parsed = $this->parseNamespacedSegments($key);
- }
-
- // Once we have the parsed array of this key's elements, such as its groups
- // and namespace, we will cache each array inside a simple list that has
- // the key and the parsed array for quick look-ups for later requests.
- return $this->parsed[$key] = $parsed;
- }
-
- /**
- * Parse an array of basic segments.
- *
- * @param array $segments
- * @return array
- */
- protected function parseBasicSegments(array $segments)
- {
- // The first segment in a basic array will always be the group, so we can go
- // ahead and grab that segment. If there is only one total segment we are
- // just pulling an entire group out of the array and not a single item.
- $group = $segments[0];
-
- // If there is more than one segment in this group, it means we are pulling
- // a specific item out of a group and will need to return this item name
- // as well as the group so we know which item to pull from the arrays.
- $item = count($segments) === 1
- ? null
- : implode('.', array_slice($segments, 1));
-
- return [null, $group, $item];
- }
-
- /**
- * Parse an array of namespaced segments.
- *
- * @param string $key
- * @return array
- */
- protected function parseNamespacedSegments($key)
- {
- [$namespace, $item] = explode('::', $key);
-
- // First we'll just explode the first segment to get the namespace and group
- // since the item should be in the remaining segments. Once we have these
- // two pieces of data we can proceed with parsing out the item's value.
- $itemSegments = explode('.', $item);
-
- $groupAndItem = array_slice(
- $this->parseBasicSegments($itemSegments), 1
- );
-
- return array_merge([$namespace], $groupAndItem);
- }
-
- /**
- * Set the parsed value of a key.
- *
- * @param string $key
- * @param array $parsed
- * @return void
- */
- public function setParsedKey($key, $parsed)
- {
- $this->parsed[$key] = $parsed;
- }
-}
diff --git a/vendor/illuminate/support/Optional.php b/vendor/illuminate/support/Optional.php
deleted file mode 100644
index 816190dd..00000000
--- a/vendor/illuminate/support/Optional.php
+++ /dev/null
@@ -1,135 +0,0 @@
-value = $value;
- }
-
- /**
- * Dynamically access a property on the underlying object.
- *
- * @param string $key
- * @return mixed
- */
- public function __get($key)
- {
- if (is_object($this->value)) {
- return $this->value->{$key} ?? null;
- }
- }
-
- /**
- * Dynamically check a property exists on the underlying object.
- *
- * @param mixed $name
- * @return bool
- */
- public function __isset($name)
- {
- if (is_object($this->value)) {
- return isset($this->value->{$name});
- }
-
- if (is_array($this->value) || $this->value instanceof ArrayObject) {
- return isset($this->value[$name]);
- }
-
- return false;
- }
-
- /**
- * Determine if an item exists at an offset.
- *
- * @param mixed $key
- * @return bool
- */
- #[\ReturnTypeWillChange]
- public function offsetExists($key)
- {
- return Arr::accessible($this->value) && Arr::exists($this->value, $key);
- }
-
- /**
- * Get an item at a given offset.
- *
- * @param mixed $key
- * @return mixed
- */
- #[\ReturnTypeWillChange]
- public function offsetGet($key)
- {
- return Arr::get($this->value, $key);
- }
-
- /**
- * Set the item at a given offset.
- *
- * @param mixed $key
- * @param mixed $value
- * @return void
- */
- #[\ReturnTypeWillChange]
- public function offsetSet($key, $value)
- {
- if (Arr::accessible($this->value)) {
- $this->value[$key] = $value;
- }
- }
-
- /**
- * Unset the item at a given offset.
- *
- * @param string $key
- * @return void
- */
- #[\ReturnTypeWillChange]
- public function offsetUnset($key)
- {
- if (Arr::accessible($this->value)) {
- unset($this->value[$key]);
- }
- }
-
- /**
- * Dynamically pass a method to the underlying object.
- *
- * @param string $method
- * @param array $parameters
- * @return mixed
- */
- public function __call($method, $parameters)
- {
- if (static::hasMacro($method)) {
- return $this->macroCall($method, $parameters);
- }
-
- if (is_object($this->value)) {
- return $this->value->{$method}(...$parameters);
- }
- }
-}
diff --git a/vendor/illuminate/support/Pluralizer.php b/vendor/illuminate/support/Pluralizer.php
deleted file mode 100755
index 5babd0e0..00000000
--- a/vendor/illuminate/support/Pluralizer.php
+++ /dev/null
@@ -1,147 +0,0 @@
-pluralize($value);
-
- return static::matchCase($plural, $value);
- }
-
- /**
- * Get the singular form of an English word.
- *
- * @param string $value
- * @return string
- */
- public static function singular($value)
- {
- $singular = static::inflector()->singularize($value);
-
- return static::matchCase($singular, $value);
- }
-
- /**
- * Determine if the given value is uncountable.
- *
- * @param string $value
- * @return bool
- */
- protected static function uncountable($value)
- {
- return in_array(strtolower($value), static::$uncountable);
- }
-
- /**
- * Attempt to match the case on two strings.
- *
- * @param string $value
- * @param string $comparison
- * @return string
- */
- protected static function matchCase($value, $comparison)
- {
- $functions = ['mb_strtolower', 'mb_strtoupper', 'ucfirst', 'ucwords'];
-
- foreach ($functions as $function) {
- if ($function($comparison) === $comparison) {
- return $function($value);
- }
- }
-
- return $value;
- }
-
- /**
- * Get the inflector instance.
- *
- * @return \Doctrine\Inflector\Inflector
- */
- public static function inflector()
- {
- static $inflector;
-
- if (is_null($inflector)) {
- $inflector = new Inflector(
- new CachedWordInflector(new RulesetInflector(
- English\Rules::getSingularRuleset()
- )),
- new CachedWordInflector(new RulesetInflector(
- English\Rules::getPluralRuleset()
- ))
- );
- }
-
- return $inflector;
- }
-}
diff --git a/vendor/illuminate/support/ProcessUtils.php b/vendor/illuminate/support/ProcessUtils.php
deleted file mode 100644
index 1caa9e16..00000000
--- a/vendor/illuminate/support/ProcessUtils.php
+++ /dev/null
@@ -1,69 +0,0 @@
-isPublic();
- }
-
- if (is_object($var[0]) && method_exists($class, '__call')) {
- return (new ReflectionMethod($class, '__call'))->isPublic();
- }
-
- if (! is_object($var[0]) && method_exists($class, '__callStatic')) {
- return (new ReflectionMethod($class, '__callStatic'))->isPublic();
- }
-
- return false;
- }
-
- /**
- * Get the class name of the given parameter's type, if possible.
- *
- * @param \ReflectionParameter $parameter
- * @return string|null
- */
- public static function getParameterClassName($parameter)
- {
- $type = $parameter->getType();
-
- if (! $type instanceof ReflectionNamedType || $type->isBuiltin()) {
- return;
- }
-
- return static::getTypeName($parameter, $type);
- }
-
- /**
- * Get the class names of the given parameter's type, including union types.
- *
- * @param \ReflectionParameter $parameter
- * @return array
- */
- public static function getParameterClassNames($parameter)
- {
- $type = $parameter->getType();
-
- if (! $type instanceof ReflectionUnionType) {
- return array_filter([static::getParameterClassName($parameter)]);
- }
-
- $unionTypes = [];
-
- foreach ($type->getTypes() as $listedType) {
- if (! $listedType instanceof ReflectionNamedType || $listedType->isBuiltin()) {
- continue;
- }
-
- $unionTypes[] = static::getTypeName($parameter, $listedType);
- }
-
- return array_filter($unionTypes);
- }
-
- /**
- * Get the given type's class name.
- *
- * @param \ReflectionParameter $parameter
- * @param \ReflectionNamedType $type
- * @return string
- */
- protected static function getTypeName($parameter, $type)
- {
- $name = $type->getName();
-
- if (! is_null($class = $parameter->getDeclaringClass())) {
- if ($name === 'self') {
- return $class->getName();
- }
-
- if ($name === 'parent' && $parent = $class->getParentClass()) {
- return $parent->getName();
- }
- }
-
- return $name;
- }
-
- /**
- * Determine if the parameter's type is a subclass of the given type.
- *
- * @param \ReflectionParameter $parameter
- * @param string $className
- * @return bool
- */
- public static function isParameterSubclassOf($parameter, $className)
- {
- $paramClassName = static::getParameterClassName($parameter);
-
- return ($paramClassName && class_exists($paramClassName))
- ? (new ReflectionClass($paramClassName))->isSubclassOf($className)
- : false;
- }
-}
diff --git a/vendor/illuminate/support/ServiceProvider.php b/vendor/illuminate/support/ServiceProvider.php
deleted file mode 100755
index 6c530c12..00000000
--- a/vendor/illuminate/support/ServiceProvider.php
+++ /dev/null
@@ -1,437 +0,0 @@
-app = $app;
- }
-
- /**
- * Register any application services.
- *
- * @return void
- */
- public function register()
- {
- //
- }
-
- /**
- * Register a booting callback to be run before the "boot" method is called.
- *
- * @param \Closure $callback
- * @return void
- */
- public function booting(Closure $callback)
- {
- $this->bootingCallbacks[] = $callback;
- }
-
- /**
- * Register a booted callback to be run after the "boot" method is called.
- *
- * @param \Closure $callback
- * @return void
- */
- public function booted(Closure $callback)
- {
- $this->bootedCallbacks[] = $callback;
- }
-
- /**
- * Call the registered booting callbacks.
- *
- * @return void
- */
- public function callBootingCallbacks()
- {
- $index = 0;
-
- while ($index < count($this->bootingCallbacks)) {
- $this->app->call($this->bootingCallbacks[$index]);
-
- $index++;
- }
- }
-
- /**
- * Call the registered booted callbacks.
- *
- * @return void
- */
- public function callBootedCallbacks()
- {
- $index = 0;
-
- while ($index < count($this->bootedCallbacks)) {
- $this->app->call($this->bootedCallbacks[$index]);
-
- $index++;
- }
- }
-
- /**
- * Merge the given configuration with the existing configuration.
- *
- * @param string $path
- * @param string $key
- * @return void
- */
- protected function mergeConfigFrom($path, $key)
- {
- if (! ($this->app instanceof CachesConfiguration && $this->app->configurationIsCached())) {
- $config = $this->app->make('config');
-
- $config->set($key, array_merge(
- require $path, $config->get($key, [])
- ));
- }
- }
-
- /**
- * Load the given routes file if routes are not already cached.
- *
- * @param string $path
- * @return void
- */
- protected function loadRoutesFrom($path)
- {
- if (! ($this->app instanceof CachesRoutes && $this->app->routesAreCached())) {
- require $path;
- }
- }
-
- /**
- * Register a view file namespace.
- *
- * @param string|array $path
- * @param string $namespace
- * @return void
- */
- protected function loadViewsFrom($path, $namespace)
- {
- $this->callAfterResolving('view', function ($view) use ($path, $namespace) {
- if (isset($this->app->config['view']['paths']) &&
- is_array($this->app->config['view']['paths'])) {
- foreach ($this->app->config['view']['paths'] as $viewPath) {
- if (is_dir($appPath = $viewPath.'/vendor/'.$namespace)) {
- $view->addNamespace($namespace, $appPath);
- }
- }
- }
-
- $view->addNamespace($namespace, $path);
- });
- }
-
- /**
- * Register the given view components with a custom prefix.
- *
- * @param string $prefix
- * @param array $components
- * @return void
- */
- protected function loadViewComponentsAs($prefix, array $components)
- {
- $this->callAfterResolving(BladeCompiler::class, function ($blade) use ($prefix, $components) {
- foreach ($components as $alias => $component) {
- $blade->component($component, is_string($alias) ? $alias : null, $prefix);
- }
- });
- }
-
- /**
- * Register a translation file namespace.
- *
- * @param string $path
- * @param string $namespace
- * @return void
- */
- protected function loadTranslationsFrom($path, $namespace)
- {
- $this->callAfterResolving('translator', function ($translator) use ($path, $namespace) {
- $translator->addNamespace($namespace, $path);
- });
- }
-
- /**
- * Register a JSON translation file path.
- *
- * @param string $path
- * @return void
- */
- protected function loadJsonTranslationsFrom($path)
- {
- $this->callAfterResolving('translator', function ($translator) use ($path) {
- $translator->addJsonPath($path);
- });
- }
-
- /**
- * Register database migration paths.
- *
- * @param array|string $paths
- * @return void
- */
- protected function loadMigrationsFrom($paths)
- {
- $this->callAfterResolving('migrator', function ($migrator) use ($paths) {
- foreach ((array) $paths as $path) {
- $migrator->path($path);
- }
- });
- }
-
- /**
- * Register Eloquent model factory paths.
- *
- * @deprecated Will be removed in a future Laravel version.
- *
- * @param array|string $paths
- * @return void
- */
- protected function loadFactoriesFrom($paths)
- {
- $this->callAfterResolving(ModelFactory::class, function ($factory) use ($paths) {
- foreach ((array) $paths as $path) {
- $factory->load($path);
- }
- });
- }
-
- /**
- * Setup an after resolving listener, or fire immediately if already resolved.
- *
- * @param string $name
- * @param callable $callback
- * @return void
- */
- protected function callAfterResolving($name, $callback)
- {
- $this->app->afterResolving($name, $callback);
-
- if ($this->app->resolved($name)) {
- $callback($this->app->make($name), $this->app);
- }
- }
-
- /**
- * Register paths to be published by the publish command.
- *
- * @param array $paths
- * @param mixed $groups
- * @return void
- */
- protected function publishes(array $paths, $groups = null)
- {
- $this->ensurePublishArrayInitialized($class = static::class);
-
- static::$publishes[$class] = array_merge(static::$publishes[$class], $paths);
-
- foreach ((array) $groups as $group) {
- $this->addPublishGroup($group, $paths);
- }
- }
-
- /**
- * Ensure the publish array for the service provider is initialized.
- *
- * @param string $class
- * @return void
- */
- protected function ensurePublishArrayInitialized($class)
- {
- if (! array_key_exists($class, static::$publishes)) {
- static::$publishes[$class] = [];
- }
- }
-
- /**
- * Add a publish group / tag to the service provider.
- *
- * @param string $group
- * @param array $paths
- * @return void
- */
- protected function addPublishGroup($group, $paths)
- {
- if (! array_key_exists($group, static::$publishGroups)) {
- static::$publishGroups[$group] = [];
- }
-
- static::$publishGroups[$group] = array_merge(
- static::$publishGroups[$group], $paths
- );
- }
-
- /**
- * Get the paths to publish.
- *
- * @param string|null $provider
- * @param string|null $group
- * @return array
- */
- public static function pathsToPublish($provider = null, $group = null)
- {
- if (! is_null($paths = static::pathsForProviderOrGroup($provider, $group))) {
- return $paths;
- }
-
- return collect(static::$publishes)->reduce(function ($paths, $p) {
- return array_merge($paths, $p);
- }, []);
- }
-
- /**
- * Get the paths for the provider or group (or both).
- *
- * @param string|null $provider
- * @param string|null $group
- * @return array
- */
- protected static function pathsForProviderOrGroup($provider, $group)
- {
- if ($provider && $group) {
- return static::pathsForProviderAndGroup($provider, $group);
- } elseif ($group && array_key_exists($group, static::$publishGroups)) {
- return static::$publishGroups[$group];
- } elseif ($provider && array_key_exists($provider, static::$publishes)) {
- return static::$publishes[$provider];
- } elseif ($group || $provider) {
- return [];
- }
- }
-
- /**
- * Get the paths for the provider and group.
- *
- * @param string $provider
- * @param string $group
- * @return array
- */
- protected static function pathsForProviderAndGroup($provider, $group)
- {
- if (! empty(static::$publishes[$provider]) && ! empty(static::$publishGroups[$group])) {
- return array_intersect_key(static::$publishes[$provider], static::$publishGroups[$group]);
- }
-
- return [];
- }
-
- /**
- * Get the service providers available for publishing.
- *
- * @return array
- */
- public static function publishableProviders()
- {
- return array_keys(static::$publishes);
- }
-
- /**
- * Get the groups available for publishing.
- *
- * @return array
- */
- public static function publishableGroups()
- {
- return array_keys(static::$publishGroups);
- }
-
- /**
- * Register the package's custom Artisan commands.
- *
- * @param array|mixed $commands
- * @return void
- */
- public function commands($commands)
- {
- $commands = is_array($commands) ? $commands : func_get_args();
-
- Artisan::starting(function ($artisan) use ($commands) {
- $artisan->resolveCommands($commands);
- });
- }
-
- /**
- * Get the services provided by the provider.
- *
- * @return array
- */
- public function provides()
- {
- return [];
- }
-
- /**
- * Get the events that trigger this service provider to register.
- *
- * @return array
- */
- public function when()
- {
- return [];
- }
-
- /**
- * Determine if the provider is deferred.
- *
- * @return bool
- */
- public function isDeferred()
- {
- return $this instanceof DeferrableProvider;
- }
-}
diff --git a/vendor/illuminate/support/Str.php b/vendor/illuminate/support/Str.php
deleted file mode 100644
index 5b341c0d..00000000
--- a/vendor/illuminate/support/Str.php
+++ /dev/null
@@ -1,946 +0,0 @@
- 0;
- }
-
- /**
- * Convert a string to kebab case.
- *
- * @param string $value
- * @return string
- */
- public static function kebab($value)
- {
- return static::snake($value, '-');
- }
-
- /**
- * Return the length of the given string.
- *
- * @param string $value
- * @param string|null $encoding
- * @return int
- */
- public static function length($value, $encoding = null)
- {
- if ($encoding) {
- return mb_strlen($value, $encoding);
- }
-
- return mb_strlen($value);
- }
-
- /**
- * Limit the number of characters in a string.
- *
- * @param string $value
- * @param int $limit
- * @param string $end
- * @return string
- */
- public static function limit($value, $limit = 100, $end = '...')
- {
- if (mb_strwidth($value, 'UTF-8') <= $limit) {
- return $value;
- }
-
- return rtrim(mb_strimwidth($value, 0, $limit, '', 'UTF-8')).$end;
- }
-
- /**
- * Convert the given string to lower-case.
- *
- * @param string $value
- * @return string
- */
- public static function lower($value)
- {
- return mb_strtolower($value, 'UTF-8');
- }
-
- /**
- * Limit the number of words in a string.
- *
- * @param string $value
- * @param int $words
- * @param string $end
- * @return string
- */
- public static function words($value, $words = 100, $end = '...')
- {
- preg_match('/^\s*+(?:\S++\s*+){1,'.$words.'}/u', $value, $matches);
-
- if (! isset($matches[0]) || static::length($value) === static::length($matches[0])) {
- return $value;
- }
-
- return rtrim($matches[0]).$end;
- }
-
- /**
- * Converts GitHub flavored Markdown into HTML.
- *
- * @param string $string
- * @param array $options
- * @return string
- */
- public static function markdown($string, array $options = [])
- {
- $converter = new GithubFlavoredMarkdownConverter($options);
-
- return (string) $converter->convertToHtml($string);
- }
-
- /**
- * Masks a portion of a string with a repeated character.
- *
- * @param string $string
- * @param string $character
- * @param int $index
- * @param int|null $length
- * @param string $encoding
- * @return string
- */
- public static function mask($string, $character, $index, $length = null, $encoding = 'UTF-8')
- {
- if ($character === '') {
- return $string;
- }
-
- if (is_null($length) && PHP_MAJOR_VERSION < 8) {
- $length = mb_strlen($string, $encoding);
- }
-
- $segment = mb_substr($string, $index, $length, $encoding);
-
- if ($segment === '') {
- return $string;
- }
-
- $start = mb_substr($string, 0, mb_strpos($string, $segment, 0, $encoding), $encoding);
- $end = mb_substr($string, mb_strpos($string, $segment, 0, $encoding) + mb_strlen($segment, $encoding));
-
- return $start.str_repeat(mb_substr($character, 0, 1, $encoding), mb_strlen($segment, $encoding)).$end;
- }
-
- /**
- * Get the string matching the given pattern.
- *
- * @param string $pattern
- * @param string $subject
- * @return string
- */
- public static function match($pattern, $subject)
- {
- preg_match($pattern, $subject, $matches);
-
- if (! $matches) {
- return '';
- }
-
- return $matches[1] ?? $matches[0];
- }
-
- /**
- * Get the string matching the given pattern.
- *
- * @param string $pattern
- * @param string $subject
- * @return \Illuminate\Support\Collection
- */
- public static function matchAll($pattern, $subject)
- {
- preg_match_all($pattern, $subject, $matches);
-
- if (empty($matches[0])) {
- return collect();
- }
-
- return collect($matches[1] ?? $matches[0]);
- }
-
- /**
- * Pad both sides of a string with another.
- *
- * @param string $value
- * @param int $length
- * @param string $pad
- * @return string
- */
- public static function padBoth($value, $length, $pad = ' ')
- {
- return str_pad($value, $length, $pad, STR_PAD_BOTH);
- }
-
- /**
- * Pad the left side of a string with another.
- *
- * @param string $value
- * @param int $length
- * @param string $pad
- * @return string
- */
- public static function padLeft($value, $length, $pad = ' ')
- {
- return str_pad($value, $length, $pad, STR_PAD_LEFT);
- }
-
- /**
- * Pad the right side of a string with another.
- *
- * @param string $value
- * @param int $length
- * @param string $pad
- * @return string
- */
- public static function padRight($value, $length, $pad = ' ')
- {
- return str_pad($value, $length, $pad, STR_PAD_RIGHT);
- }
-
- /**
- * Parse a Class[@]method style callback into class and method.
- *
- * @param string $callback
- * @param string|null $default
- * @return array
- */
- public static function parseCallback($callback, $default = null)
- {
- return static::contains($callback, '@') ? explode('@', $callback, 2) : [$callback, $default];
- }
-
- /**
- * Get the plural form of an English word.
- *
- * @param string $value
- * @param int $count
- * @return string
- */
- public static function plural($value, $count = 2)
- {
- return Pluralizer::plural($value, $count);
- }
-
- /**
- * Pluralize the last word of an English, studly caps case string.
- *
- * @param string $value
- * @param int $count
- * @return string
- */
- public static function pluralStudly($value, $count = 2)
- {
- $parts = preg_split('/(.)(?=[A-Z])/u', $value, -1, PREG_SPLIT_DELIM_CAPTURE);
-
- $lastWord = array_pop($parts);
-
- return implode('', $parts).self::plural($lastWord, $count);
- }
-
- /**
- * Generate a more truly "random" alpha-numeric string.
- *
- * @param int $length
- * @return string
- */
- public static function random($length = 16)
- {
- $string = '';
-
- while (($len = strlen($string)) < $length) {
- $size = $length - $len;
-
- $bytes = random_bytes($size);
-
- $string .= substr(str_replace(['/', '+', '='], '', base64_encode($bytes)), 0, $size);
- }
-
- return $string;
- }
-
- /**
- * Repeat the given string.
- *
- * @param string $string
- * @param int $times
- * @return string
- */
- public static function repeat(string $string, int $times)
- {
- return str_repeat($string, $times);
- }
-
- /**
- * Replace a given value in the string sequentially with an array.
- *
- * @param string $search
- * @param array $replace
- * @param string $subject
- * @return string
- */
- public static function replaceArray($search, array $replace, $subject)
- {
- $segments = explode($search, $subject);
-
- $result = array_shift($segments);
-
- foreach ($segments as $segment) {
- $result .= (array_shift($replace) ?? $search).$segment;
- }
-
- return $result;
- }
-
- /**
- * Replace the given value in the given string.
- *
- * @param string|string[] $search
- * @param string|string[] $replace
- * @param string|string[] $subject
- * @return string
- */
- public static function replace($search, $replace, $subject)
- {
- return str_replace($search, $replace, $subject);
- }
-
- /**
- * Replace the first occurrence of a given value in the string.
- *
- * @param string $search
- * @param string $replace
- * @param string $subject
- * @return string
- */
- public static function replaceFirst($search, $replace, $subject)
- {
- if ($search === '') {
- return $subject;
- }
-
- $position = strpos($subject, $search);
-
- if ($position !== false) {
- return substr_replace($subject, $replace, $position, strlen($search));
- }
-
- return $subject;
- }
-
- /**
- * Replace the last occurrence of a given value in the string.
- *
- * @param string $search
- * @param string $replace
- * @param string $subject
- * @return string
- */
- public static function replaceLast($search, $replace, $subject)
- {
- if ($search === '') {
- return $subject;
- }
-
- $position = strrpos($subject, $search);
-
- if ($position !== false) {
- return substr_replace($subject, $replace, $position, strlen($search));
- }
-
- return $subject;
- }
-
- /**
- * Remove any occurrence of the given string in the subject.
- *
- * @param string|array $search
- * @param string $subject
- * @param bool $caseSensitive
- * @return string
- */
- public static function remove($search, $subject, $caseSensitive = true)
- {
- $subject = $caseSensitive
- ? str_replace($search, '', $subject)
- : str_ireplace($search, '', $subject);
-
- return $subject;
- }
-
- /**
- * Begin a string with a single instance of a given value.
- *
- * @param string $value
- * @param string $prefix
- * @return string
- */
- public static function start($value, $prefix)
- {
- $quoted = preg_quote($prefix, '/');
-
- return $prefix.preg_replace('/^(?:'.$quoted.')+/u', '', $value);
- }
-
- /**
- * Convert the given string to upper-case.
- *
- * @param string $value
- * @return string
- */
- public static function upper($value)
- {
- return mb_strtoupper($value, 'UTF-8');
- }
-
- /**
- * Convert the given string to title case.
- *
- * @param string $value
- * @return string
- */
- public static function title($value)
- {
- return mb_convert_case($value, MB_CASE_TITLE, 'UTF-8');
- }
-
- /**
- * Convert the given string to title case for each word.
- *
- * @param string $value
- * @return string
- */
- public static function headline($value)
- {
- $parts = explode('_', static::replace(' ', '_', $value));
-
- if (count($parts) > 1) {
- $parts = array_map([static::class, 'title'], $parts);
- }
-
- $studly = static::studly(implode($parts));
-
- $words = preg_split('/(?=[A-Z])/', $studly, -1, PREG_SPLIT_NO_EMPTY);
-
- return implode(' ', $words);
- }
-
- /**
- * Get the singular form of an English word.
- *
- * @param string $value
- * @return string
- */
- public static function singular($value)
- {
- return Pluralizer::singular($value);
- }
-
- /**
- * Generate a URL friendly "slug" from a given string.
- *
- * @param string $title
- * @param string $separator
- * @param string|null $language
- * @return string
- */
- public static function slug($title, $separator = '-', $language = 'en')
- {
- $title = $language ? static::ascii($title, $language) : $title;
-
- // Convert all dashes/underscores into separator
- $flip = $separator === '-' ? '_' : '-';
-
- $title = preg_replace('!['.preg_quote($flip).']+!u', $separator, $title);
-
- // Replace @ with the word 'at'
- $title = str_replace('@', $separator.'at'.$separator, $title);
-
- // Remove all characters that are not the separator, letters, numbers, or whitespace.
- $title = preg_replace('![^'.preg_quote($separator).'\pL\pN\s]+!u', '', static::lower($title));
-
- // Replace all separator characters and whitespace by a single separator
- $title = preg_replace('!['.preg_quote($separator).'\s]+!u', $separator, $title);
-
- return trim($title, $separator);
- }
-
- /**
- * Convert a string to snake case.
- *
- * @param string $value
- * @param string $delimiter
- * @return string
- */
- public static function snake($value, $delimiter = '_')
- {
- $key = $value;
-
- if (isset(static::$snakeCache[$key][$delimiter])) {
- return static::$snakeCache[$key][$delimiter];
- }
-
- if (! ctype_lower($value)) {
- $value = preg_replace('/\s+/u', '', ucwords($value));
-
- $value = static::lower(preg_replace('/(.)(?=[A-Z])/u', '$1'.$delimiter, $value));
- }
-
- return static::$snakeCache[$key][$delimiter] = $value;
- }
-
- /**
- * Determine if a given string starts with a given substring.
- *
- * @param string $haystack
- * @param string|string[] $needles
- * @return bool
- */
- public static function startsWith($haystack, $needles)
- {
- foreach ((array) $needles as $needle) {
- if ((string) $needle !== '' && strncmp($haystack, $needle, strlen($needle)) === 0) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Convert a value to studly caps case.
- *
- * @param string $value
- * @return string
- */
- public static function studly($value)
- {
- $key = $value;
-
- if (isset(static::$studlyCache[$key])) {
- return static::$studlyCache[$key];
- }
-
- $value = ucwords(str_replace(['-', '_'], ' ', $value));
-
- return static::$studlyCache[$key] = str_replace(' ', '', $value);
- }
-
- /**
- * Returns the portion of the string specified by the start and length parameters.
- *
- * @param string $string
- * @param int $start
- * @param int|null $length
- * @return string
- */
- public static function substr($string, $start, $length = null)
- {
- return mb_substr($string, $start, $length, 'UTF-8');
- }
-
- /**
- * Returns the number of substring occurrences.
- *
- * @param string $haystack
- * @param string $needle
- * @param int $offset
- * @param int|null $length
- * @return int
- */
- public static function substrCount($haystack, $needle, $offset = 0, $length = null)
- {
- if (! is_null($length)) {
- return substr_count($haystack, $needle, $offset, $length);
- } else {
- return substr_count($haystack, $needle, $offset);
- }
- }
-
- /**
- * Make a string's first character uppercase.
- *
- * @param string $string
- * @return string
- */
- public static function ucfirst($string)
- {
- return static::upper(static::substr($string, 0, 1)).static::substr($string, 1);
- }
-
- /**
- * Get the number of words a string contains.
- *
- * @param string $string
- * @return int
- */
- public static function wordCount($string)
- {
- return str_word_count($string);
- }
-
- /**
- * Generate a UUID (version 4).
- *
- * @return \Ramsey\Uuid\UuidInterface
- */
- public static function uuid()
- {
- return static::$uuidFactory
- ? call_user_func(static::$uuidFactory)
- : Uuid::uuid4();
- }
-
- /**
- * Generate a time-ordered UUID (version 4).
- *
- * @return \Ramsey\Uuid\UuidInterface
- */
- public static function orderedUuid()
- {
- if (static::$uuidFactory) {
- return call_user_func(static::$uuidFactory);
- }
-
- $factory = new UuidFactory;
-
- $factory->setRandomGenerator(new CombGenerator(
- $factory->getRandomGenerator(),
- $factory->getNumberConverter()
- ));
-
- $factory->setCodec(new TimestampFirstCombCodec(
- $factory->getUuidBuilder()
- ));
-
- return $factory->uuid4();
- }
-
- /**
- * Set the callable that will be used to generate UUIDs.
- *
- * @param callable|null $factory
- * @return void
- */
- public static function createUuidsUsing(callable $factory = null)
- {
- static::$uuidFactory = $factory;
- }
-
- /**
- * Indicate that UUIDs should be created normally and not using a custom factory.
- *
- * @return void
- */
- public static function createUuidsNormally()
- {
- static::$uuidFactory = null;
- }
-}
diff --git a/vendor/illuminate/support/Stringable.php b/vendor/illuminate/support/Stringable.php
deleted file mode 100644
index a7d21b0e..00000000
--- a/vendor/illuminate/support/Stringable.php
+++ /dev/null
@@ -1,856 +0,0 @@
-value = (string) $value;
- }
-
- /**
- * Return the remainder of a string after the first occurrence of a given value.
- *
- * @param string $search
- * @return static
- */
- public function after($search)
- {
- return new static(Str::after($this->value, $search));
- }
-
- /**
- * Return the remainder of a string after the last occurrence of a given value.
- *
- * @param string $search
- * @return static
- */
- public function afterLast($search)
- {
- return new static(Str::afterLast($this->value, $search));
- }
-
- /**
- * Append the given values to the string.
- *
- * @param array $values
- * @return static
- */
- public function append(...$values)
- {
- return new static($this->value.implode('', $values));
- }
-
- /**
- * Transliterate a UTF-8 value to ASCII.
- *
- * @param string $language
- * @return static
- */
- public function ascii($language = 'en')
- {
- return new static(Str::ascii($this->value, $language));
- }
-
- /**
- * Get the trailing name component of the path.
- *
- * @param string $suffix
- * @return static
- */
- public function basename($suffix = '')
- {
- return new static(basename($this->value, $suffix));
- }
-
- /**
- * Get the basename of the class path.
- *
- * @return static
- */
- public function classBasename()
- {
- return new static(class_basename($this->value));
- }
-
- /**
- * Get the portion of a string before the first occurrence of a given value.
- *
- * @param string $search
- * @return static
- */
- public function before($search)
- {
- return new static(Str::before($this->value, $search));
- }
-
- /**
- * Get the portion of a string before the last occurrence of a given value.
- *
- * @param string $search
- * @return static
- */
- public function beforeLast($search)
- {
- return new static(Str::beforeLast($this->value, $search));
- }
-
- /**
- * Get the portion of a string between two given values.
- *
- * @param string $from
- * @param string $to
- * @return static
- */
- public function between($from, $to)
- {
- return new static(Str::between($this->value, $from, $to));
- }
-
- /**
- * Convert a value to camel case.
- *
- * @return static
- */
- public function camel()
- {
- return new static(Str::camel($this->value));
- }
-
- /**
- * Determine if a given string contains a given substring.
- *
- * @param string|array $needles
- * @return bool
- */
- public function contains($needles)
- {
- return Str::contains($this->value, $needles);
- }
-
- /**
- * Determine if a given string contains all array values.
- *
- * @param array $needles
- * @return bool
- */
- public function containsAll(array $needles)
- {
- return Str::containsAll($this->value, $needles);
- }
-
- /**
- * Get the parent directory's path.
- *
- * @param int $levels
- * @return static
- */
- public function dirname($levels = 1)
- {
- return new static(dirname($this->value, $levels));
- }
-
- /**
- * Determine if a given string ends with a given substring.
- *
- * @param string|array $needles
- * @return bool
- */
- public function endsWith($needles)
- {
- return Str::endsWith($this->value, $needles);
- }
-
- /**
- * Determine if the string is an exact match with the given value.
- *
- * @param string $value
- * @return bool
- */
- public function exactly($value)
- {
- return $this->value === $value;
- }
-
- /**
- * Explode the string into an array.
- *
- * @param string $delimiter
- * @param int $limit
- * @return \Illuminate\Support\Collection
- */
- public function explode($delimiter, $limit = PHP_INT_MAX)
- {
- return collect(explode($delimiter, $this->value, $limit));
- }
-
- /**
- * Split a string using a regular expression or by length.
- *
- * @param string|int $pattern
- * @param int $limit
- * @param int $flags
- * @return \Illuminate\Support\Collection
- */
- public function split($pattern, $limit = -1, $flags = 0)
- {
- if (filter_var($pattern, FILTER_VALIDATE_INT) !== false) {
- return collect(mb_str_split($this->value, $pattern));
- }
-
- $segments = preg_split($pattern, $this->value, $limit, $flags);
-
- return ! empty($segments) ? collect($segments) : collect();
- }
-
- /**
- * Cap a string with a single instance of a given value.
- *
- * @param string $cap
- * @return static
- */
- public function finish($cap)
- {
- return new static(Str::finish($this->value, $cap));
- }
-
- /**
- * Determine if a given string matches a given pattern.
- *
- * @param string|array $pattern
- * @return bool
- */
- public function is($pattern)
- {
- return Str::is($pattern, $this->value);
- }
-
- /**
- * Determine if a given string is 7 bit ASCII.
- *
- * @return bool
- */
- public function isAscii()
- {
- return Str::isAscii($this->value);
- }
-
- /**
- * Determine if a given string is a valid UUID.
- *
- * @return bool
- */
- public function isUuid()
- {
- return Str::isUuid($this->value);
- }
-
- /**
- * Determine if the given string is empty.
- *
- * @return bool
- */
- public function isEmpty()
- {
- return $this->value === '';
- }
-
- /**
- * Determine if the given string is not empty.
- *
- * @return bool
- */
- public function isNotEmpty()
- {
- return ! $this->isEmpty();
- }
-
- /**
- * Convert a string to kebab case.
- *
- * @return static
- */
- public function kebab()
- {
- return new static(Str::kebab($this->value));
- }
-
- /**
- * Return the length of the given string.
- *
- * @param string $encoding
- * @return int
- */
- public function length($encoding = null)
- {
- return Str::length($this->value, $encoding);
- }
-
- /**
- * Limit the number of characters in a string.
- *
- * @param int $limit
- * @param string $end
- * @return static
- */
- public function limit($limit = 100, $end = '...')
- {
- return new static(Str::limit($this->value, $limit, $end));
- }
-
- /**
- * Convert the given string to lower-case.
- *
- * @return static
- */
- public function lower()
- {
- return new static(Str::lower($this->value));
- }
-
- /**
- * Convert GitHub flavored Markdown into HTML.
- *
- * @param array $options
- * @return static
- */
- public function markdown(array $options = [])
- {
- return new static(Str::markdown($this->value, $options));
- }
-
- /**
- * Masks a portion of a string with a repeated character.
- *
- * @param string $character
- * @param int $index
- * @param int|null $length
- * @param string $encoding
- * @return static
- */
- public function mask($character, $index, $length = null, $encoding = 'UTF-8')
- {
- return new static(Str::mask($this->value, $character, $index, $length, $encoding));
- }
-
- /**
- * Get the string matching the given pattern.
- *
- * @param string $pattern
- * @return static
- */
- public function match($pattern)
- {
- return new static(Str::match($pattern, $this->value));
- }
-
- /**
- * Get the string matching the given pattern.
- *
- * @param string $pattern
- * @return \Illuminate\Support\Collection
- */
- public function matchAll($pattern)
- {
- return Str::matchAll($pattern, $this->value);
- }
-
- /**
- * Determine if the string matches the given pattern.
- *
- * @param string $pattern
- * @return bool
- */
- public function test($pattern)
- {
- return $this->match($pattern)->isNotEmpty();
- }
-
- /**
- * Pad both sides of the string with another.
- *
- * @param int $length
- * @param string $pad
- * @return static
- */
- public function padBoth($length, $pad = ' ')
- {
- return new static(Str::padBoth($this->value, $length, $pad));
- }
-
- /**
- * Pad the left side of the string with another.
- *
- * @param int $length
- * @param string $pad
- * @return static
- */
- public function padLeft($length, $pad = ' ')
- {
- return new static(Str::padLeft($this->value, $length, $pad));
- }
-
- /**
- * Pad the right side of the string with another.
- *
- * @param int $length
- * @param string $pad
- * @return static
- */
- public function padRight($length, $pad = ' ')
- {
- return new static(Str::padRight($this->value, $length, $pad));
- }
-
- /**
- * Parse a Class@method style callback into class and method.
- *
- * @param string|null $default
- * @return array
- */
- public function parseCallback($default = null)
- {
- return Str::parseCallback($this->value, $default);
- }
-
- /**
- * Call the given callback and return a new string.
- *
- * @param callable $callback
- * @return static
- */
- public function pipe(callable $callback)
- {
- return new static(call_user_func($callback, $this));
- }
-
- /**
- * Get the plural form of an English word.
- *
- * @param int $count
- * @return static
- */
- public function plural($count = 2)
- {
- return new static(Str::plural($this->value, $count));
- }
-
- /**
- * Pluralize the last word of an English, studly caps case string.
- *
- * @param int $count
- * @return static
- */
- public function pluralStudly($count = 2)
- {
- return new static(Str::pluralStudly($this->value, $count));
- }
-
- /**
- * Prepend the given values to the string.
- *
- * @param array $values
- * @return static
- */
- public function prepend(...$values)
- {
- return new static(implode('', $values).$this->value);
- }
-
- /**
- * Remove any occurrence of the given string in the subject.
- *
- * @param string|array $search
- * @param bool $caseSensitive
- * @return static
- */
- public function remove($search, $caseSensitive = true)
- {
- return new static(Str::remove($search, $this->value, $caseSensitive));
- }
-
- /**
- * Repeat the string.
- *
- * @param int $times
- * @return static
- */
- public function repeat(int $times)
- {
- return new static(Str::repeat($this->value, $times));
- }
-
- /**
- * Replace the given value in the given string.
- *
- * @param string|string[] $search
- * @param string|string[] $replace
- * @return static
- */
- public function replace($search, $replace)
- {
- return new static(Str::replace($search, $replace, $this->value));
- }
-
- /**
- * Replace a given value in the string sequentially with an array.
- *
- * @param string $search
- * @param array $replace
- * @return static
- */
- public function replaceArray($search, array $replace)
- {
- return new static(Str::replaceArray($search, $replace, $this->value));
- }
-
- /**
- * Replace the first occurrence of a given value in the string.
- *
- * @param string $search
- * @param string $replace
- * @return static
- */
- public function replaceFirst($search, $replace)
- {
- return new static(Str::replaceFirst($search, $replace, $this->value));
- }
-
- /**
- * Replace the last occurrence of a given value in the string.
- *
- * @param string $search
- * @param string $replace
- * @return static
- */
- public function replaceLast($search, $replace)
- {
- return new static(Str::replaceLast($search, $replace, $this->value));
- }
-
- /**
- * Replace the patterns matching the given regular expression.
- *
- * @param string $pattern
- * @param \Closure|string $replace
- * @param int $limit
- * @return static
- */
- public function replaceMatches($pattern, $replace, $limit = -1)
- {
- if ($replace instanceof Closure) {
- return new static(preg_replace_callback($pattern, $replace, $this->value, $limit));
- }
-
- return new static(preg_replace($pattern, $replace, $this->value, $limit));
- }
-
- /**
- * Begin a string with a single instance of a given value.
- *
- * @param string $prefix
- * @return static
- */
- public function start($prefix)
- {
- return new static(Str::start($this->value, $prefix));
- }
-
- /**
- * Strip HTML and PHP tags from the given string.
- *
- * @param string $allowedTags
- * @return static
- */
- public function stripTags($allowedTags = null)
- {
- return new static(strip_tags($this->value, $allowedTags));
- }
-
- /**
- * Convert the given string to upper-case.
- *
- * @return static
- */
- public function upper()
- {
- return new static(Str::upper($this->value));
- }
-
- /**
- * Convert the given string to title case.
- *
- * @return static
- */
- public function title()
- {
- return new static(Str::title($this->value));
- }
-
- /**
- * Convert the given string to title case for each word.
- *
- * @return static
- */
- public function headline()
- {
- return new static(Str::headline($this->value));
- }
-
- /**
- * Get the singular form of an English word.
- *
- * @return static
- */
- public function singular()
- {
- return new static(Str::singular($this->value));
- }
-
- /**
- * Generate a URL friendly "slug" from a given string.
- *
- * @param string $separator
- * @param string|null $language
- * @return static
- */
- public function slug($separator = '-', $language = 'en')
- {
- return new static(Str::slug($this->value, $separator, $language));
- }
-
- /**
- * Convert a string to snake case.
- *
- * @param string $delimiter
- * @return static
- */
- public function snake($delimiter = '_')
- {
- return new static(Str::snake($this->value, $delimiter));
- }
-
- /**
- * Determine if a given string starts with a given substring.
- *
- * @param string|array $needles
- * @return bool
- */
- public function startsWith($needles)
- {
- return Str::startsWith($this->value, $needles);
- }
-
- /**
- * Convert a value to studly caps case.
- *
- * @return static
- */
- public function studly()
- {
- return new static(Str::studly($this->value));
- }
-
- /**
- * Returns the portion of the string specified by the start and length parameters.
- *
- * @param int $start
- * @param int|null $length
- * @return static
- */
- public function substr($start, $length = null)
- {
- return new static(Str::substr($this->value, $start, $length));
- }
-
- /**
- * Returns the number of substring occurrences.
- *
- * @param string $needle
- * @param int|null $offset
- * @param int|null $length
- * @return int
- */
- public function substrCount($needle, $offset = null, $length = null)
- {
- return Str::substrCount($this->value, $needle, $offset ?? 0, $length);
- }
-
- /**
- * Trim the string of the given characters.
- *
- * @param string $characters
- * @return static
- */
- public function trim($characters = null)
- {
- return new static(trim(...array_merge([$this->value], func_get_args())));
- }
-
- /**
- * Left trim the string of the given characters.
- *
- * @param string $characters
- * @return static
- */
- public function ltrim($characters = null)
- {
- return new static(ltrim(...array_merge([$this->value], func_get_args())));
- }
-
- /**
- * Right trim the string of the given characters.
- *
- * @param string $characters
- * @return static
- */
- public function rtrim($characters = null)
- {
- return new static(rtrim(...array_merge([$this->value], func_get_args())));
- }
-
- /**
- * Make a string's first character uppercase.
- *
- * @return static
- */
- public function ucfirst()
- {
- return new static(Str::ucfirst($this->value));
- }
-
- /**
- * Execute the given callback if the string is empty.
- *
- * @param callable $callback
- * @return static
- */
- public function whenEmpty($callback)
- {
- if ($this->isEmpty()) {
- $result = $callback($this);
-
- return is_null($result) ? $this : $result;
- }
-
- return $this;
- }
-
- /**
- * Execute the given callback if the string is not empty.
- *
- * @param callable $callback
- * @return static
- */
- public function whenNotEmpty($callback)
- {
- if ($this->isNotEmpty()) {
- $result = $callback($this);
-
- return is_null($result) ? $this : $result;
- }
-
- return $this;
- }
-
- /**
- * Limit the number of words in a string.
- *
- * @param int $words
- * @param string $end
- * @return static
- */
- public function words($words = 100, $end = '...')
- {
- return new static(Str::words($this->value, $words, $end));
- }
-
- /**
- * Get the number of words a string contains.
- *
- * @return int
- */
- public function wordCount()
- {
- return str_word_count($this->value);
- }
-
- /**
- * Dump the string.
- *
- * @return $this
- */
- public function dump()
- {
- VarDumper::dump($this->value);
-
- return $this;
- }
-
- /**
- * Dump the string and end the script.
- *
- * @return never
- */
- public function dd()
- {
- $this->dump();
-
- exit(1);
- }
-
- /**
- * Convert the object to a string when JSON encoded.
- *
- * @return string
- */
- #[\ReturnTypeWillChange]
- public function jsonSerialize()
- {
- return $this->__toString();
- }
-
- /**
- * Proxy dynamic properties onto methods.
- *
- * @param string $key
- * @return mixed
- */
- public function __get($key)
- {
- return $this->{$key}();
- }
-
- /**
- * Get the raw string value.
- *
- * @return string
- */
- public function __toString()
- {
- return (string) $this->value;
- }
-}
diff --git a/vendor/illuminate/support/Testing/Fakes/BatchRepositoryFake.php b/vendor/illuminate/support/Testing/Fakes/BatchRepositoryFake.php
deleted file mode 100644
index d9661334..00000000
--- a/vendor/illuminate/support/Testing/Fakes/BatchRepositoryFake.php
+++ /dev/null
@@ -1,142 +0,0 @@
-name,
- count($batch->jobs),
- count($batch->jobs),
- 0,
- [],
- $batch->options,
- CarbonImmutable::now(),
- null,
- null
- );
- }
-
- /**
- * Increment the total number of jobs within the batch.
- *
- * @param string $batchId
- * @param int $amount
- * @return void
- */
- public function incrementTotalJobs(string $batchId, int $amount)
- {
- //
- }
-
- /**
- * Decrement the total number of pending jobs for the batch.
- *
- * @param string $batchId
- * @param string $jobId
- * @return \Illuminate\Bus\UpdatedBatchJobCounts
- */
- public function decrementPendingJobs(string $batchId, string $jobId)
- {
- return new UpdatedBatchJobCounts;
- }
-
- /**
- * Increment the total number of failed jobs for the batch.
- *
- * @param string $batchId
- * @param string $jobId
- * @return \Illuminate\Bus\UpdatedBatchJobCounts
- */
- public function incrementFailedJobs(string $batchId, string $jobId)
- {
- return new UpdatedBatchJobCounts;
- }
-
- /**
- * Mark the batch that has the given ID as finished.
- *
- * @param string $batchId
- * @return void
- */
- public function markAsFinished(string $batchId)
- {
- //
- }
-
- /**
- * Cancel the batch that has the given ID.
- *
- * @param string $batchId
- * @return void
- */
- public function cancel(string $batchId)
- {
- //
- }
-
- /**
- * Delete the batch that has the given ID.
- *
- * @param string $batchId
- * @return void
- */
- public function delete(string $batchId)
- {
- //
- }
-
- /**
- * Execute the given Closure within a storage specific transaction.
- *
- * @param \Closure $callback
- * @return mixed
- */
- public function transaction(Closure $callback)
- {
- return $callback();
- }
-}
diff --git a/vendor/illuminate/support/Testing/Fakes/BusFake.php b/vendor/illuminate/support/Testing/Fakes/BusFake.php
deleted file mode 100644
index 52a95306..00000000
--- a/vendor/illuminate/support/Testing/Fakes/BusFake.php
+++ /dev/null
@@ -1,726 +0,0 @@
-dispatcher = $dispatcher;
-
- $this->jobsToFake = Arr::wrap($jobsToFake);
- }
-
- /**
- * Assert if a job was dispatched based on a truth-test callback.
- *
- * @param string|\Closure $command
- * @param callable|int|null $callback
- * @return void
- */
- public function assertDispatched($command, $callback = null)
- {
- if ($command instanceof Closure) {
- [$command, $callback] = [$this->firstClosureParameterType($command), $command];
- }
-
- if (is_numeric($callback)) {
- return $this->assertDispatchedTimes($command, $callback);
- }
-
- PHPUnit::assertTrue(
- $this->dispatched($command, $callback)->count() > 0 ||
- $this->dispatchedAfterResponse($command, $callback)->count() > 0 ||
- $this->dispatchedSync($command, $callback)->count() > 0,
- "The expected [{$command}] job was not dispatched."
- );
- }
-
- /**
- * Assert if a job was pushed a number of times.
- *
- * @param string $command
- * @param int $times
- * @return void
- */
- public function assertDispatchedTimes($command, $times = 1)
- {
- $count = $this->dispatched($command)->count() +
- $this->dispatchedAfterResponse($command)->count() +
- $this->dispatchedSync($command)->count();
-
- PHPUnit::assertSame(
- $times, $count,
- "The expected [{$command}] job was pushed {$count} times instead of {$times} times."
- );
- }
-
- /**
- * Determine if a job was dispatched based on a truth-test callback.
- *
- * @param string|\Closure $command
- * @param callable|null $callback
- * @return void
- */
- public function assertNotDispatched($command, $callback = null)
- {
- if ($command instanceof Closure) {
- [$command, $callback] = [$this->firstClosureParameterType($command), $command];
- }
-
- PHPUnit::assertTrue(
- $this->dispatched($command, $callback)->count() === 0 &&
- $this->dispatchedAfterResponse($command, $callback)->count() === 0 &&
- $this->dispatchedSync($command, $callback)->count() === 0,
- "The unexpected [{$command}] job was dispatched."
- );
- }
-
- /**
- * Assert that no jobs were dispatched.
- *
- * @return void
- */
- public function assertNothingDispatched()
- {
- PHPUnit::assertEmpty($this->commands, 'Jobs were dispatched unexpectedly.');
- }
-
- /**
- * Assert if a job was explicitly dispatched synchronously based on a truth-test callback.
- *
- * @param string|\Closure $command
- * @param callable|int|null $callback
- * @return void
- */
- public function assertDispatchedSync($command, $callback = null)
- {
- if ($command instanceof Closure) {
- [$command, $callback] = [$this->firstClosureParameterType($command), $command];
- }
-
- if (is_numeric($callback)) {
- return $this->assertDispatchedSyncTimes($command, $callback);
- }
-
- PHPUnit::assertTrue(
- $this->dispatchedSync($command, $callback)->count() > 0,
- "The expected [{$command}] job was not dispatched synchronously."
- );
- }
-
- /**
- * Assert if a job was pushed synchronously a number of times.
- *
- * @param string $command
- * @param int $times
- * @return void
- */
- public function assertDispatchedSyncTimes($command, $times = 1)
- {
- $count = $this->dispatchedSync($command)->count();
-
- PHPUnit::assertSame(
- $times, $count,
- "The expected [{$command}] job was synchronously pushed {$count} times instead of {$times} times."
- );
- }
-
- /**
- * Determine if a job was dispatched based on a truth-test callback.
- *
- * @param string|\Closure $command
- * @param callable|null $callback
- * @return void
- */
- public function assertNotDispatchedSync($command, $callback = null)
- {
- if ($command instanceof Closure) {
- [$command, $callback] = [$this->firstClosureParameterType($command), $command];
- }
-
- PHPUnit::assertCount(
- 0, $this->dispatchedSync($command, $callback),
- "The unexpected [{$command}] job was dispatched synchronously."
- );
- }
-
- /**
- * Assert if a job was dispatched after the response was sent based on a truth-test callback.
- *
- * @param string|\Closure $command
- * @param callable|int|null $callback
- * @return void
- */
- public function assertDispatchedAfterResponse($command, $callback = null)
- {
- if ($command instanceof Closure) {
- [$command, $callback] = [$this->firstClosureParameterType($command), $command];
- }
-
- if (is_numeric($callback)) {
- return $this->assertDispatchedAfterResponseTimes($command, $callback);
- }
-
- PHPUnit::assertTrue(
- $this->dispatchedAfterResponse($command, $callback)->count() > 0,
- "The expected [{$command}] job was not dispatched for after sending the response."
- );
- }
-
- /**
- * Assert if a job was pushed after the response was sent a number of times.
- *
- * @param string $command
- * @param int $times
- * @return void
- */
- public function assertDispatchedAfterResponseTimes($command, $times = 1)
- {
- $count = $this->dispatchedAfterResponse($command)->count();
-
- PHPUnit::assertSame(
- $times, $count,
- "The expected [{$command}] job was pushed {$count} times instead of {$times} times."
- );
- }
-
- /**
- * Determine if a job was dispatched based on a truth-test callback.
- *
- * @param string|\Closure $command
- * @param callable|null $callback
- * @return void
- */
- public function assertNotDispatchedAfterResponse($command, $callback = null)
- {
- if ($command instanceof Closure) {
- [$command, $callback] = [$this->firstClosureParameterType($command), $command];
- }
-
- PHPUnit::assertCount(
- 0, $this->dispatchedAfterResponse($command, $callback),
- "The unexpected [{$command}] job was dispatched for after sending the response."
- );
- }
-
- /**
- * Assert if a chain of jobs was dispatched.
- *
- * @param array $expectedChain
- * @return void
- */
- public function assertChained(array $expectedChain)
- {
- $command = $expectedChain[0];
-
- $expectedChain = array_slice($expectedChain, 1);
-
- $callback = null;
-
- if ($command instanceof Closure) {
- [$command, $callback] = [$this->firstClosureParameterType($command), $command];
- } elseif (! is_string($command)) {
- $instance = $command;
-
- $command = get_class($instance);
-
- $callback = function ($job) use ($instance) {
- return serialize($this->resetChainPropertiesToDefaults($job)) === serialize($instance);
- };
- }
-
- PHPUnit::assertTrue(
- $this->dispatched($command, $callback)->isNotEmpty(),
- "The expected [{$command}] job was not dispatched."
- );
-
- PHPUnit::assertTrue(
- collect($expectedChain)->isNotEmpty(),
- 'The expected chain can not be empty.'
- );
-
- $this->isChainOfObjects($expectedChain)
- ? $this->assertDispatchedWithChainOfObjects($command, $expectedChain, $callback)
- : $this->assertDispatchedWithChainOfClasses($command, $expectedChain, $callback);
- }
-
- /**
- * Reset the chain properties to their default values on the job.
- *
- * @param mixed $job
- * @return mixed
- */
- protected function resetChainPropertiesToDefaults($job)
- {
- return tap(clone $job, function ($job) {
- $job->chainConnection = null;
- $job->chainQueue = null;
- $job->chainCatchCallbacks = null;
- $job->chained = [];
- });
- }
-
- /**
- * Assert if a job was dispatched with an empty chain based on a truth-test callback.
- *
- * @param string|\Closure $command
- * @param callable|null $callback
- * @return void
- */
- public function assertDispatchedWithoutChain($command, $callback = null)
- {
- if ($command instanceof Closure) {
- [$command, $callback] = [$this->firstClosureParameterType($command), $command];
- }
-
- PHPUnit::assertTrue(
- $this->dispatched($command, $callback)->isNotEmpty(),
- "The expected [{$command}] job was not dispatched."
- );
-
- $this->assertDispatchedWithChainOfClasses($command, [], $callback);
- }
-
- /**
- * Assert if a job was dispatched with chained jobs based on a truth-test callback.
- *
- * @param string $command
- * @param array $expectedChain
- * @param callable|null $callback
- * @return void
- */
- protected function assertDispatchedWithChainOfObjects($command, $expectedChain, $callback)
- {
- $chain = collect($expectedChain)->map(function ($job) {
- return serialize($job);
- })->all();
-
- PHPUnit::assertTrue(
- $this->dispatched($command, $callback)->filter(function ($job) use ($chain) {
- return $job->chained == $chain;
- })->isNotEmpty(),
- 'The expected chain was not dispatched.'
- );
- }
-
- /**
- * Assert if a job was dispatched with chained jobs based on a truth-test callback.
- *
- * @param string $command
- * @param array $expectedChain
- * @param callable|null $callback
- * @return void
- */
- protected function assertDispatchedWithChainOfClasses($command, $expectedChain, $callback)
- {
- $matching = $this->dispatched($command, $callback)->map->chained->map(function ($chain) {
- return collect($chain)->map(function ($job) {
- return get_class(unserialize($job));
- });
- })->filter(function ($chain) use ($expectedChain) {
- return $chain->all() === $expectedChain;
- });
-
- PHPUnit::assertTrue(
- $matching->isNotEmpty(), 'The expected chain was not dispatched.'
- );
- }
-
- /**
- * Determine if the given chain is entirely composed of objects.
- *
- * @param array $chain
- * @return bool
- */
- protected function isChainOfObjects($chain)
- {
- return ! collect($chain)->contains(function ($job) {
- return ! is_object($job);
- });
- }
-
- /**
- * Assert if a batch was dispatched based on a truth-test callback.
- *
- * @param callable $callback
- * @return void
- */
- public function assertBatched(callable $callback)
- {
- PHPUnit::assertTrue(
- $this->batched($callback)->count() > 0,
- 'The expected batch was not dispatched.'
- );
- }
-
- /**
- * Get all of the jobs matching a truth-test callback.
- *
- * @param string $command
- * @param callable|null $callback
- * @return \Illuminate\Support\Collection
- */
- public function dispatched($command, $callback = null)
- {
- if (! $this->hasDispatched($command)) {
- return collect();
- }
-
- $callback = $callback ?: function () {
- return true;
- };
-
- return collect($this->commands[$command])->filter(function ($command) use ($callback) {
- return $callback($command);
- });
- }
-
- /**
- * Get all of the jobs dispatched synchronously matching a truth-test callback.
- *
- * @param string $command
- * @param callable|null $callback
- * @return \Illuminate\Support\Collection
- */
- public function dispatchedSync(string $command, $callback = null)
- {
- if (! $this->hasDispatchedSync($command)) {
- return collect();
- }
-
- $callback = $callback ?: function () {
- return true;
- };
-
- return collect($this->commandsSync[$command])->filter(function ($command) use ($callback) {
- return $callback($command);
- });
- }
-
- /**
- * Get all of the jobs dispatched after the response was sent matching a truth-test callback.
- *
- * @param string $command
- * @param callable|null $callback
- * @return \Illuminate\Support\Collection
- */
- public function dispatchedAfterResponse(string $command, $callback = null)
- {
- if (! $this->hasDispatchedAfterResponse($command)) {
- return collect();
- }
-
- $callback = $callback ?: function () {
- return true;
- };
-
- return collect($this->commandsAfterResponse[$command])->filter(function ($command) use ($callback) {
- return $callback($command);
- });
- }
-
- /**
- * Get all of the pending batches matching a truth-test callback.
- *
- * @param callable $callback
- * @return \Illuminate\Support\Collection
- */
- public function batched(callable $callback)
- {
- if (empty($this->batches)) {
- return collect();
- }
-
- return collect($this->batches)->filter(function ($batch) use ($callback) {
- return $callback($batch);
- });
- }
-
- /**
- * Determine if there are any stored commands for a given class.
- *
- * @param string $command
- * @return bool
- */
- public function hasDispatched($command)
- {
- return isset($this->commands[$command]) && ! empty($this->commands[$command]);
- }
-
- /**
- * Determine if there are any stored commands for a given class.
- *
- * @param string $command
- * @return bool
- */
- public function hasDispatchedSync($command)
- {
- return isset($this->commandsSync[$command]) && ! empty($this->commandsSync[$command]);
- }
-
- /**
- * Determine if there are any stored commands for a given class.
- *
- * @param string $command
- * @return bool
- */
- public function hasDispatchedAfterResponse($command)
- {
- return isset($this->commandsAfterResponse[$command]) && ! empty($this->commandsAfterResponse[$command]);
- }
-
- /**
- * Dispatch a command to its appropriate handler.
- *
- * @param mixed $command
- * @return mixed
- */
- public function dispatch($command)
- {
- if ($this->shouldFakeJob($command)) {
- $this->commands[get_class($command)][] = $command;
- } else {
- return $this->dispatcher->dispatch($command);
- }
- }
-
- /**
- * Dispatch a command to its appropriate handler in the current process.
- *
- * Queueable jobs will be dispatched to the "sync" queue.
- *
- * @param mixed $command
- * @param mixed $handler
- * @return mixed
- */
- public function dispatchSync($command, $handler = null)
- {
- if ($this->shouldFakeJob($command)) {
- $this->commandsSync[get_class($command)][] = $command;
- } else {
- return $this->dispatcher->dispatchSync($command, $handler);
- }
- }
-
- /**
- * Dispatch a command to its appropriate handler in the current process.
- *
- * @param mixed $command
- * @param mixed $handler
- * @return mixed
- */
- public function dispatchNow($command, $handler = null)
- {
- if ($this->shouldFakeJob($command)) {
- $this->commands[get_class($command)][] = $command;
- } else {
- return $this->dispatcher->dispatchNow($command, $handler);
- }
- }
-
- /**
- * Dispatch a command to its appropriate handler behind a queue.
- *
- * @param mixed $command
- * @return mixed
- */
- public function dispatchToQueue($command)
- {
- if ($this->shouldFakeJob($command)) {
- $this->commands[get_class($command)][] = $command;
- } else {
- return $this->dispatcher->dispatchToQueue($command);
- }
- }
-
- /**
- * Dispatch a command to its appropriate handler.
- *
- * @param mixed $command
- * @return mixed
- */
- public function dispatchAfterResponse($command)
- {
- if ($this->shouldFakeJob($command)) {
- $this->commandsAfterResponse[get_class($command)][] = $command;
- } else {
- return $this->dispatcher->dispatch($command);
- }
- }
-
- /**
- * Create a new chain of queueable jobs.
- *
- * @param \Illuminate\Support\Collection|array $jobs
- * @return \Illuminate\Foundation\Bus\PendingChain
- */
- public function chain($jobs)
- {
- $jobs = Collection::wrap($jobs);
-
- return new PendingChainFake($this, $jobs->shift(), $jobs->toArray());
- }
-
- /**
- * Attempt to find the batch with the given ID.
- *
- * @param string $batchId
- * @return \Illuminate\Bus\Batch|null
- */
- public function findBatch(string $batchId)
- {
- //
- }
-
- /**
- * Create a new batch of queueable jobs.
- *
- * @param \Illuminate\Support\Collection|array $jobs
- * @return \Illuminate\Bus\PendingBatch
- */
- public function batch($jobs)
- {
- return new PendingBatchFake($this, Collection::wrap($jobs));
- }
-
- /**
- * Record the fake pending batch dispatch.
- *
- * @param \Illuminate\Bus\PendingBatch $pendingBatch
- * @return \Illuminate\Bus\Batch
- */
- public function recordPendingBatch(PendingBatch $pendingBatch)
- {
- $this->batches[] = $pendingBatch;
-
- return (new BatchRepositoryFake)->store($pendingBatch);
- }
-
- /**
- * Determine if a command should be faked or actually dispatched.
- *
- * @param mixed $command
- * @return bool
- */
- protected function shouldFakeJob($command)
- {
- if (empty($this->jobsToFake)) {
- return true;
- }
-
- return collect($this->jobsToFake)
- ->filter(function ($job) use ($command) {
- return $job instanceof Closure
- ? $job($command)
- : $job === get_class($command);
- })->isNotEmpty();
- }
-
- /**
- * Set the pipes commands should be piped through before dispatching.
- *
- * @param array $pipes
- * @return $this
- */
- public function pipeThrough(array $pipes)
- {
- $this->dispatcher->pipeThrough($pipes);
-
- return $this;
- }
-
- /**
- * Determine if the given command has a handler.
- *
- * @param mixed $command
- * @return bool
- */
- public function hasCommandHandler($command)
- {
- return $this->dispatcher->hasCommandHandler($command);
- }
-
- /**
- * Retrieve the handler for a command.
- *
- * @param mixed $command
- * @return mixed
- */
- public function getCommandHandler($command)
- {
- return $this->dispatcher->getCommandHandler($command);
- }
-
- /**
- * Map a command to a handler.
- *
- * @param array $map
- * @return $this
- */
- public function map(array $map)
- {
- $this->dispatcher->map($map);
-
- return $this;
- }
-}
diff --git a/vendor/illuminate/support/Testing/Fakes/EventFake.php b/vendor/illuminate/support/Testing/Fakes/EventFake.php
deleted file mode 100644
index ed5014f1..00000000
--- a/vendor/illuminate/support/Testing/Fakes/EventFake.php
+++ /dev/null
@@ -1,320 +0,0 @@
-dispatcher = $dispatcher;
-
- $this->eventsToFake = Arr::wrap($eventsToFake);
- }
-
- /**
- * Assert if an event has a listener attached to it.
- *
- * @param string $expectedEvent
- * @param string $expectedListener
- * @return void
- */
- public function assertListening($expectedEvent, $expectedListener)
- {
- foreach ($this->dispatcher->getListeners($expectedEvent) as $listenerClosure) {
- $actualListener = (new ReflectionFunction($listenerClosure))
- ->getStaticVariables()['listener'];
-
- if ($actualListener === $expectedListener ||
- ($actualListener instanceof Closure &&
- $expectedListener === Closure::class)) {
- PHPUnit::assertTrue(true);
-
- return;
- }
- }
-
- PHPUnit::assertTrue(
- false,
- sprintf(
- 'Event [%s] does not have the [%s] listener attached to it',
- $expectedEvent,
- print_r($expectedListener, true)
- )
- );
- }
-
- /**
- * Assert if an event was dispatched based on a truth-test callback.
- *
- * @param string|\Closure $event
- * @param callable|int|null $callback
- * @return void
- */
- public function assertDispatched($event, $callback = null)
- {
- if ($event instanceof Closure) {
- [$event, $callback] = [$this->firstClosureParameterType($event), $event];
- }
-
- if (is_int($callback)) {
- return $this->assertDispatchedTimes($event, $callback);
- }
-
- PHPUnit::assertTrue(
- $this->dispatched($event, $callback)->count() > 0,
- "The expected [{$event}] event was not dispatched."
- );
- }
-
- /**
- * Assert if an event was dispatched a number of times.
- *
- * @param string $event
- * @param int $times
- * @return void
- */
- public function assertDispatchedTimes($event, $times = 1)
- {
- $count = $this->dispatched($event)->count();
-
- PHPUnit::assertSame(
- $times, $count,
- "The expected [{$event}] event was dispatched {$count} times instead of {$times} times."
- );
- }
-
- /**
- * Determine if an event was dispatched based on a truth-test callback.
- *
- * @param string|\Closure $event
- * @param callable|null $callback
- * @return void
- */
- public function assertNotDispatched($event, $callback = null)
- {
- if ($event instanceof Closure) {
- [$event, $callback] = [$this->firstClosureParameterType($event), $event];
- }
-
- PHPUnit::assertCount(
- 0, $this->dispatched($event, $callback),
- "The unexpected [{$event}] event was dispatched."
- );
- }
-
- /**
- * Assert that no events were dispatched.
- *
- * @return void
- */
- public function assertNothingDispatched()
- {
- $count = count(Arr::flatten($this->events));
-
- PHPUnit::assertSame(
- 0, $count,
- "{$count} unexpected events were dispatched."
- );
- }
-
- /**
- * Get all of the events matching a truth-test callback.
- *
- * @param string $event
- * @param callable|null $callback
- * @return \Illuminate\Support\Collection
- */
- public function dispatched($event, $callback = null)
- {
- if (! $this->hasDispatched($event)) {
- return collect();
- }
-
- $callback = $callback ?: function () {
- return true;
- };
-
- return collect($this->events[$event])->filter(function ($arguments) use ($callback) {
- return $callback(...$arguments);
- });
- }
-
- /**
- * Determine if the given event has been dispatched.
- *
- * @param string $event
- * @return bool
- */
- public function hasDispatched($event)
- {
- return isset($this->events[$event]) && ! empty($this->events[$event]);
- }
-
- /**
- * Register an event listener with the dispatcher.
- *
- * @param \Closure|string|array $events
- * @param mixed $listener
- * @return void
- */
- public function listen($events, $listener = null)
- {
- $this->dispatcher->listen($events, $listener);
- }
-
- /**
- * Determine if a given event has listeners.
- *
- * @param string $eventName
- * @return bool
- */
- public function hasListeners($eventName)
- {
- return $this->dispatcher->hasListeners($eventName);
- }
-
- /**
- * Register an event and payload to be dispatched later.
- *
- * @param string $event
- * @param array $payload
- * @return void
- */
- public function push($event, $payload = [])
- {
- //
- }
-
- /**
- * Register an event subscriber with the dispatcher.
- *
- * @param object|string $subscriber
- * @return void
- */
- public function subscribe($subscriber)
- {
- $this->dispatcher->subscribe($subscriber);
- }
-
- /**
- * Flush a set of pushed events.
- *
- * @param string $event
- * @return void
- */
- public function flush($event)
- {
- //
- }
-
- /**
- * Fire an event and call the listeners.
- *
- * @param string|object $event
- * @param mixed $payload
- * @param bool $halt
- * @return array|null
- */
- public function dispatch($event, $payload = [], $halt = false)
- {
- $name = is_object($event) ? get_class($event) : (string) $event;
-
- if ($this->shouldFakeEvent($name, $payload)) {
- $this->events[$name][] = func_get_args();
- } else {
- return $this->dispatcher->dispatch($event, $payload, $halt);
- }
- }
-
- /**
- * Determine if an event should be faked or actually dispatched.
- *
- * @param string $eventName
- * @param mixed $payload
- * @return bool
- */
- protected function shouldFakeEvent($eventName, $payload)
- {
- if (empty($this->eventsToFake)) {
- return true;
- }
-
- return collect($this->eventsToFake)
- ->filter(function ($event) use ($eventName, $payload) {
- return $event instanceof Closure
- ? $event($eventName, $payload)
- : $event === $eventName;
- })
- ->isNotEmpty();
- }
-
- /**
- * Remove a set of listeners from the dispatcher.
- *
- * @param string $event
- * @return void
- */
- public function forget($event)
- {
- //
- }
-
- /**
- * Forget all of the queued listeners.
- *
- * @return void
- */
- public function forgetPushed()
- {
- //
- }
-
- /**
- * Dispatch an event and call the listeners.
- *
- * @param string|object $event
- * @param mixed $payload
- * @return array|null
- */
- public function until($event, $payload = [])
- {
- return $this->dispatch($event, $payload, true);
- }
-}
diff --git a/vendor/illuminate/support/Testing/Fakes/MailFake.php b/vendor/illuminate/support/Testing/Fakes/MailFake.php
deleted file mode 100644
index 103ffa73..00000000
--- a/vendor/illuminate/support/Testing/Fakes/MailFake.php
+++ /dev/null
@@ -1,433 +0,0 @@
-prepareMailableAndCallback($mailable, $callback);
-
- if (is_numeric($callback)) {
- return $this->assertSentTimes($mailable, $callback);
- }
-
- $message = "The expected [{$mailable}] mailable was not sent.";
-
- if (count($this->queuedMailables) > 0) {
- $message .= ' Did you mean to use assertQueued() instead?';
- }
-
- PHPUnit::assertTrue(
- $this->sent($mailable, $callback)->count() > 0,
- $message
- );
- }
-
- /**
- * Assert if a mailable was sent a number of times.
- *
- * @param string $mailable
- * @param int $times
- * @return void
- */
- protected function assertSentTimes($mailable, $times = 1)
- {
- $count = $this->sent($mailable)->count();
-
- PHPUnit::assertSame(
- $times, $count,
- "The expected [{$mailable}] mailable was sent {$count} times instead of {$times} times."
- );
- }
-
- /**
- * Determine if a mailable was not sent or queued to be sent based on a truth-test callback.
- *
- * @param string|\Closure $mailable
- * @param callable|null $callback
- * @return void
- */
- public function assertNotOutgoing($mailable, $callback = null)
- {
- $this->assertNotSent($mailable, $callback);
- $this->assertNotQueued($mailable, $callback);
- }
-
- /**
- * Determine if a mailable was not sent based on a truth-test callback.
- *
- * @param string|\Closure $mailable
- * @param callable|null $callback
- * @return void
- */
- public function assertNotSent($mailable, $callback = null)
- {
- [$mailable, $callback] = $this->prepareMailableAndCallback($mailable, $callback);
-
- PHPUnit::assertCount(
- 0, $this->sent($mailable, $callback),
- "The unexpected [{$mailable}] mailable was sent."
- );
- }
-
- /**
- * Assert that no mailables were sent or queued to be sent.
- *
- * @return void
- */
- public function assertNothingOutgoing()
- {
- $this->assertNothingSent();
- $this->assertNothingQueued();
- }
-
- /**
- * Assert that no mailables were sent.
- *
- * @return void
- */
- public function assertNothingSent()
- {
- $mailableNames = collect($this->mailables)->map(function ($mailable) {
- return get_class($mailable);
- })->join(', ');
-
- PHPUnit::assertEmpty($this->mailables, 'The following mailables were sent unexpectedly: '.$mailableNames);
- }
-
- /**
- * Assert if a mailable was queued based on a truth-test callback.
- *
- * @param string|\Closure $mailable
- * @param callable|int|null $callback
- * @return void
- */
- public function assertQueued($mailable, $callback = null)
- {
- [$mailable, $callback] = $this->prepareMailableAndCallback($mailable, $callback);
-
- if (is_numeric($callback)) {
- return $this->assertQueuedTimes($mailable, $callback);
- }
-
- PHPUnit::assertTrue(
- $this->queued($mailable, $callback)->count() > 0,
- "The expected [{$mailable}] mailable was not queued."
- );
- }
-
- /**
- * Assert if a mailable was queued a number of times.
- *
- * @param string $mailable
- * @param int $times
- * @return void
- */
- protected function assertQueuedTimes($mailable, $times = 1)
- {
- $count = $this->queued($mailable)->count();
-
- PHPUnit::assertSame(
- $times, $count,
- "The expected [{$mailable}] mailable was queued {$count} times instead of {$times} times."
- );
- }
-
- /**
- * Determine if a mailable was not queued based on a truth-test callback.
- *
- * @param string|\Closure $mailable
- * @param callable|null $callback
- * @return void
- */
- public function assertNotQueued($mailable, $callback = null)
- {
- [$mailable, $callback] = $this->prepareMailableAndCallback($mailable, $callback);
-
- PHPUnit::assertCount(
- 0, $this->queued($mailable, $callback),
- "The unexpected [{$mailable}] mailable was queued."
- );
- }
-
- /**
- * Assert that no mailables were queued.
- *
- * @return void
- */
- public function assertNothingQueued()
- {
- $mailableNames = collect($this->queuedMailables)->map(function ($mailable) {
- return get_class($mailable);
- })->join(', ');
-
- PHPUnit::assertEmpty($this->queuedMailables, 'The following mailables were queued unexpectedly: '.$mailableNames);
- }
-
- /**
- * Get all of the mailables matching a truth-test callback.
- *
- * @param string|\Closure $mailable
- * @param callable|null $callback
- * @return \Illuminate\Support\Collection
- */
- public function sent($mailable, $callback = null)
- {
- [$mailable, $callback] = $this->prepareMailableAndCallback($mailable, $callback);
-
- if (! $this->hasSent($mailable)) {
- return collect();
- }
-
- $callback = $callback ?: function () {
- return true;
- };
-
- return $this->mailablesOf($mailable)->filter(function ($mailable) use ($callback) {
- return $callback($mailable);
- });
- }
-
- /**
- * Determine if the given mailable has been sent.
- *
- * @param string $mailable
- * @return bool
- */
- public function hasSent($mailable)
- {
- return $this->mailablesOf($mailable)->count() > 0;
- }
-
- /**
- * Get all of the queued mailables matching a truth-test callback.
- *
- * @param string|\Closure $mailable
- * @param callable|null $callback
- * @return \Illuminate\Support\Collection
- */
- public function queued($mailable, $callback = null)
- {
- [$mailable, $callback] = $this->prepareMailableAndCallback($mailable, $callback);
-
- if (! $this->hasQueued($mailable)) {
- return collect();
- }
-
- $callback = $callback ?: function () {
- return true;
- };
-
- return $this->queuedMailablesOf($mailable)->filter(function ($mailable) use ($callback) {
- return $callback($mailable);
- });
- }
-
- /**
- * Determine if the given mailable has been queued.
- *
- * @param string $mailable
- * @return bool
- */
- public function hasQueued($mailable)
- {
- return $this->queuedMailablesOf($mailable)->count() > 0;
- }
-
- /**
- * Get all of the mailed mailables for a given type.
- *
- * @param string $type
- * @return \Illuminate\Support\Collection
- */
- protected function mailablesOf($type)
- {
- return collect($this->mailables)->filter(function ($mailable) use ($type) {
- return $mailable instanceof $type;
- });
- }
-
- /**
- * Get all of the mailed mailables for a given type.
- *
- * @param string $type
- * @return \Illuminate\Support\Collection
- */
- protected function queuedMailablesOf($type)
- {
- return collect($this->queuedMailables)->filter(function ($mailable) use ($type) {
- return $mailable instanceof $type;
- });
- }
-
- /**
- * Get a mailer instance by name.
- *
- * @param string|null $name
- * @return \Illuminate\Contracts\Mail\Mailer
- */
- public function mailer($name = null)
- {
- $this->currentMailer = $name;
-
- return $this;
- }
-
- /**
- * Begin the process of mailing a mailable class instance.
- *
- * @param mixed $users
- * @return \Illuminate\Mail\PendingMail
- */
- public function to($users)
- {
- return (new PendingMailFake($this))->to($users);
- }
-
- /**
- * Begin the process of mailing a mailable class instance.
- *
- * @param mixed $users
- * @return \Illuminate\Mail\PendingMail
- */
- public function bcc($users)
- {
- return (new PendingMailFake($this))->bcc($users);
- }
-
- /**
- * Send a new message with only a raw text part.
- *
- * @param string $text
- * @param \Closure|string $callback
- * @return void
- */
- public function raw($text, $callback)
- {
- //
- }
-
- /**
- * Send a new message using a view.
- *
- * @param \Illuminate\Contracts\Mail\Mailable|string|array $view
- * @param array $data
- * @param \Closure|string|null $callback
- * @return void
- */
- public function send($view, array $data = [], $callback = null)
- {
- if (! $view instanceof Mailable) {
- return;
- }
-
- $view->mailer($this->currentMailer);
-
- $this->currentMailer = null;
-
- if ($view instanceof ShouldQueue) {
- return $this->queue($view, $data);
- }
-
- $this->mailables[] = $view;
- }
-
- /**
- * Queue a new e-mail message for sending.
- *
- * @param \Illuminate\Contracts\Mail\Mailable|string|array $view
- * @param string|null $queue
- * @return mixed
- */
- public function queue($view, $queue = null)
- {
- if (! $view instanceof Mailable) {
- return;
- }
-
- $view->mailer($this->currentMailer);
-
- $this->currentMailer = null;
-
- $this->queuedMailables[] = $view;
- }
-
- /**
- * Queue a new e-mail message for sending after (n) seconds.
- *
- * @param \DateTimeInterface|\DateInterval|int $delay
- * @param \Illuminate\Contracts\Mail\Mailable|string|array $view
- * @param string|null $queue
- * @return mixed
- */
- public function later($delay, $view, $queue = null)
- {
- $this->queue($view, $queue);
- }
-
- /**
- * Get the array of failed recipients.
- *
- * @return array
- */
- public function failures()
- {
- return [];
- }
-
- /**
- * Infer mailable class using reflection if a typehinted closure is passed to assertion.
- *
- * @param string|\Closure $mailable
- * @param callable|null $callback
- * @return array
- */
- protected function prepareMailableAndCallback($mailable, $callback)
- {
- if ($mailable instanceof Closure) {
- return [$this->firstClosureParameterType($mailable), $mailable];
- }
-
- return [$mailable, $callback];
- }
-}
diff --git a/vendor/illuminate/support/Testing/Fakes/NotificationFake.php b/vendor/illuminate/support/Testing/Fakes/NotificationFake.php
deleted file mode 100644
index 214f99b9..00000000
--- a/vendor/illuminate/support/Testing/Fakes/NotificationFake.php
+++ /dev/null
@@ -1,313 +0,0 @@
-assertSentTo(new AnonymousNotifiable, $notification, $callback);
- }
-
- /**
- * Assert if a notification was sent based on a truth-test callback.
- *
- * @param mixed $notifiable
- * @param string|\Closure $notification
- * @param callable|null $callback
- * @return void
- *
- * @throws \Exception
- */
- public function assertSentTo($notifiable, $notification, $callback = null)
- {
- if (is_array($notifiable) || $notifiable instanceof Collection) {
- if (count($notifiable) === 0) {
- throw new Exception('No notifiable given.');
- }
-
- foreach ($notifiable as $singleNotifiable) {
- $this->assertSentTo($singleNotifiable, $notification, $callback);
- }
-
- return;
- }
-
- if ($notification instanceof Closure) {
- [$notification, $callback] = [$this->firstClosureParameterType($notification), $notification];
- }
-
- if (is_numeric($callback)) {
- return $this->assertSentToTimes($notifiable, $notification, $callback);
- }
-
- PHPUnit::assertTrue(
- $this->sent($notifiable, $notification, $callback)->count() > 0,
- "The expected [{$notification}] notification was not sent."
- );
- }
-
- /**
- * Assert if a notification was sent on-demand a number of times.
- *
- * @param string $notification
- * @param int $times
- * @return void
- */
- public function assertSentOnDemandTimes($notification, $times = 1)
- {
- return $this->assertSentToTimes(new AnonymousNotifiable, $notification, $times);
- }
-
- /**
- * Assert if a notification was sent a number of times.
- *
- * @param mixed $notifiable
- * @param string $notification
- * @param int $times
- * @return void
- */
- public function assertSentToTimes($notifiable, $notification, $times = 1)
- {
- $count = $this->sent($notifiable, $notification)->count();
-
- PHPUnit::assertSame(
- $times, $count,
- "Expected [{$notification}] to be sent {$times} times, but was sent {$count} times."
- );
- }
-
- /**
- * Determine if a notification was sent based on a truth-test callback.
- *
- * @param mixed $notifiable
- * @param string|\Closure $notification
- * @param callable|null $callback
- * @return void
- *
- * @throws \Exception
- */
- public function assertNotSentTo($notifiable, $notification, $callback = null)
- {
- if (is_array($notifiable) || $notifiable instanceof Collection) {
- if (count($notifiable) === 0) {
- throw new Exception('No notifiable given.');
- }
-
- foreach ($notifiable as $singleNotifiable) {
- $this->assertNotSentTo($singleNotifiable, $notification, $callback);
- }
-
- return;
- }
-
- if ($notification instanceof Closure) {
- [$notification, $callback] = [$this->firstClosureParameterType($notification), $notification];
- }
-
- PHPUnit::assertCount(
- 0, $this->sent($notifiable, $notification, $callback),
- "The unexpected [{$notification}] notification was sent."
- );
- }
-
- /**
- * Assert that no notifications were sent.
- *
- * @return void
- */
- public function assertNothingSent()
- {
- PHPUnit::assertEmpty($this->notifications, 'Notifications were sent unexpectedly.');
- }
-
- /**
- * Assert the total amount of times a notification was sent.
- *
- * @param int $expectedCount
- * @param string $notification
- * @return void
- */
- public function assertTimesSent($expectedCount, $notification)
- {
- $actualCount = collect($this->notifications)
- ->flatten(1)
- ->reduce(function ($count, $sent) use ($notification) {
- return $count + count($sent[$notification] ?? []);
- }, 0);
-
- PHPUnit::assertSame(
- $expectedCount, $actualCount,
- "Expected [{$notification}] to be sent {$expectedCount} times, but was sent {$actualCount} times."
- );
- }
-
- /**
- * Get all of the notifications matching a truth-test callback.
- *
- * @param mixed $notifiable
- * @param string $notification
- * @param callable|null $callback
- * @return \Illuminate\Support\Collection
- */
- public function sent($notifiable, $notification, $callback = null)
- {
- if (! $this->hasSent($notifiable, $notification)) {
- return collect();
- }
-
- $callback = $callback ?: function () {
- return true;
- };
-
- $notifications = collect($this->notificationsFor($notifiable, $notification));
-
- return $notifications->filter(function ($arguments) use ($callback) {
- return $callback(...array_values($arguments));
- })->pluck('notification');
- }
-
- /**
- * Determine if there are more notifications left to inspect.
- *
- * @param mixed $notifiable
- * @param string $notification
- * @return bool
- */
- public function hasSent($notifiable, $notification)
- {
- return ! empty($this->notificationsFor($notifiable, $notification));
- }
-
- /**
- * Get all of the notifications for a notifiable entity by type.
- *
- * @param mixed $notifiable
- * @param string $notification
- * @return array
- */
- protected function notificationsFor($notifiable, $notification)
- {
- return $this->notifications[get_class($notifiable)][$notifiable->getKey()][$notification] ?? [];
- }
-
- /**
- * Send the given notification to the given notifiable entities.
- *
- * @param \Illuminate\Support\Collection|array|mixed $notifiables
- * @param mixed $notification
- * @return void
- */
- public function send($notifiables, $notification)
- {
- $this->sendNow($notifiables, $notification);
- }
-
- /**
- * Send the given notification immediately.
- *
- * @param \Illuminate\Support\Collection|array|mixed $notifiables
- * @param mixed $notification
- * @param array|null $channels
- * @return void
- */
- public function sendNow($notifiables, $notification, array $channels = null)
- {
- if (! $notifiables instanceof Collection && ! is_array($notifiables)) {
- $notifiables = [$notifiables];
- }
-
- foreach ($notifiables as $notifiable) {
- if (! $notification->id) {
- $notification->id = Str::uuid()->toString();
- }
-
- $notifiableChannels = $channels ?: $notification->via($notifiable);
-
- if (method_exists($notification, 'shouldSend')) {
- $notifiableChannels = array_filter(
- $notifiableChannels,
- function ($channel) use ($notification, $notifiable) {
- return $notification->shouldSend($notifiable, $channel) !== false;
- }
- );
-
- if (empty($notifiableChannels)) {
- continue;
- }
- }
-
- $this->notifications[get_class($notifiable)][$notifiable->getKey()][get_class($notification)][] = [
- 'notification' => $notification,
- 'channels' => $notifiableChannels,
- 'notifiable' => $notifiable,
- 'locale' => $notification->locale ?? $this->locale ?? value(function () use ($notifiable) {
- if ($notifiable instanceof HasLocalePreference) {
- return $notifiable->preferredLocale();
- }
- }),
- ];
- }
- }
-
- /**
- * Get a channel instance by name.
- *
- * @param string|null $name
- * @return mixed
- */
- public function channel($name = null)
- {
- //
- }
-
- /**
- * Set the locale of notifications.
- *
- * @param string $locale
- * @return $this
- */
- public function locale($locale)
- {
- $this->locale = $locale;
-
- return $this;
- }
-}
diff --git a/vendor/illuminate/support/Testing/Fakes/PendingBatchFake.php b/vendor/illuminate/support/Testing/Fakes/PendingBatchFake.php
deleted file mode 100644
index c60b4b50..00000000
--- a/vendor/illuminate/support/Testing/Fakes/PendingBatchFake.php
+++ /dev/null
@@ -1,39 +0,0 @@
-bus = $bus;
- $this->jobs = $jobs;
- }
-
- /**
- * Dispatch the batch.
- *
- * @return \Illuminate\Bus\Batch
- */
- public function dispatch()
- {
- return $this->bus->recordPendingBatch($this);
- }
-}
diff --git a/vendor/illuminate/support/Testing/Fakes/PendingChainFake.php b/vendor/illuminate/support/Testing/Fakes/PendingChainFake.php
deleted file mode 100644
index 533c6498..00000000
--- a/vendor/illuminate/support/Testing/Fakes/PendingChainFake.php
+++ /dev/null
@@ -1,56 +0,0 @@
-bus = $bus;
- $this->job = $job;
- $this->chain = $chain;
- }
-
- /**
- * Dispatch the job with the given arguments.
- *
- * @return \Illuminate\Foundation\Bus\PendingDispatch
- */
- public function dispatch()
- {
- if (is_string($this->job)) {
- $firstJob = new $this->job(...func_get_args());
- } elseif ($this->job instanceof Closure) {
- $firstJob = CallQueuedClosure::create($this->job);
- } else {
- $firstJob = $this->job;
- }
-
- $firstJob->allOnConnection($this->connection);
- $firstJob->allOnQueue($this->queue);
- $firstJob->chain($this->chain);
- $firstJob->delay($this->delay);
- $firstJob->chainCatchCallbacks = $this->catchCallbacks();
-
- return $this->bus->dispatch($firstJob);
- }
-}
diff --git a/vendor/illuminate/support/Testing/Fakes/PendingMailFake.php b/vendor/illuminate/support/Testing/Fakes/PendingMailFake.php
deleted file mode 100644
index 52251301..00000000
--- a/vendor/illuminate/support/Testing/Fakes/PendingMailFake.php
+++ /dev/null
@@ -1,42 +0,0 @@
-mailer = $mailer;
- }
-
- /**
- * Send a new mailable message instance.
- *
- * @param \Illuminate\Contracts\Mail\Mailable $mailable
- * @return void
- */
- public function send(Mailable $mailable)
- {
- $this->mailer->send($this->fill($mailable));
- }
-
- /**
- * Push the given mailable onto the queue.
- *
- * @param \Illuminate\Contracts\Mail\Mailable $mailable
- * @return mixed
- */
- public function queue(Mailable $mailable)
- {
- return $this->mailer->queue($this->fill($mailable));
- }
-}
diff --git a/vendor/illuminate/support/Testing/Fakes/QueueFake.php b/vendor/illuminate/support/Testing/Fakes/QueueFake.php
deleted file mode 100644
index 64d6414f..00000000
--- a/vendor/illuminate/support/Testing/Fakes/QueueFake.php
+++ /dev/null
@@ -1,414 +0,0 @@
-firstClosureParameterType($job), $job];
- }
-
- if (is_numeric($callback)) {
- return $this->assertPushedTimes($job, $callback);
- }
-
- PHPUnit::assertTrue(
- $this->pushed($job, $callback)->count() > 0,
- "The expected [{$job}] job was not pushed."
- );
- }
-
- /**
- * Assert if a job was pushed a number of times.
- *
- * @param string $job
- * @param int $times
- * @return void
- */
- protected function assertPushedTimes($job, $times = 1)
- {
- $count = $this->pushed($job)->count();
-
- PHPUnit::assertSame(
- $times, $count,
- "The expected [{$job}] job was pushed {$count} times instead of {$times} times."
- );
- }
-
- /**
- * Assert if a job was pushed based on a truth-test callback.
- *
- * @param string $queue
- * @param string|\Closure $job
- * @param callable|null $callback
- * @return void
- */
- public function assertPushedOn($queue, $job, $callback = null)
- {
- if ($job instanceof Closure) {
- [$job, $callback] = [$this->firstClosureParameterType($job), $job];
- }
-
- $this->assertPushed($job, function ($job, $pushedQueue) use ($callback, $queue) {
- if ($pushedQueue !== $queue) {
- return false;
- }
-
- return $callback ? $callback(...func_get_args()) : true;
- });
- }
-
- /**
- * Assert if a job was pushed with chained jobs based on a truth-test callback.
- *
- * @param string $job
- * @param array $expectedChain
- * @param callable|null $callback
- * @return void
- */
- public function assertPushedWithChain($job, $expectedChain = [], $callback = null)
- {
- PHPUnit::assertTrue(
- $this->pushed($job, $callback)->isNotEmpty(),
- "The expected [{$job}] job was not pushed."
- );
-
- PHPUnit::assertTrue(
- collect($expectedChain)->isNotEmpty(),
- 'The expected chain can not be empty.'
- );
-
- $this->isChainOfObjects($expectedChain)
- ? $this->assertPushedWithChainOfObjects($job, $expectedChain, $callback)
- : $this->assertPushedWithChainOfClasses($job, $expectedChain, $callback);
- }
-
- /**
- * Assert if a job was pushed with an empty chain based on a truth-test callback.
- *
- * @param string $job
- * @param callable|null $callback
- * @return void
- */
- public function assertPushedWithoutChain($job, $callback = null)
- {
- PHPUnit::assertTrue(
- $this->pushed($job, $callback)->isNotEmpty(),
- "The expected [{$job}] job was not pushed."
- );
-
- $this->assertPushedWithChainOfClasses($job, [], $callback);
- }
-
- /**
- * Assert if a job was pushed with chained jobs based on a truth-test callback.
- *
- * @param string $job
- * @param array $expectedChain
- * @param callable|null $callback
- * @return void
- */
- protected function assertPushedWithChainOfObjects($job, $expectedChain, $callback)
- {
- $chain = collect($expectedChain)->map(function ($job) {
- return serialize($job);
- })->all();
-
- PHPUnit::assertTrue(
- $this->pushed($job, $callback)->filter(function ($job) use ($chain) {
- return $job->chained == $chain;
- })->isNotEmpty(),
- 'The expected chain was not pushed.'
- );
- }
-
- /**
- * Assert if a job was pushed with chained jobs based on a truth-test callback.
- *
- * @param string $job
- * @param array $expectedChain
- * @param callable|null $callback
- * @return void
- */
- protected function assertPushedWithChainOfClasses($job, $expectedChain, $callback)
- {
- $matching = $this->pushed($job, $callback)->map->chained->map(function ($chain) {
- return collect($chain)->map(function ($job) {
- return get_class(unserialize($job));
- });
- })->filter(function ($chain) use ($expectedChain) {
- return $chain->all() === $expectedChain;
- });
-
- PHPUnit::assertTrue(
- $matching->isNotEmpty(), 'The expected chain was not pushed.'
- );
- }
-
- /**
- * Determine if the given chain is entirely composed of objects.
- *
- * @param array $chain
- * @return bool
- */
- protected function isChainOfObjects($chain)
- {
- return ! collect($chain)->contains(function ($job) {
- return ! is_object($job);
- });
- }
-
- /**
- * Determine if a job was pushed based on a truth-test callback.
- *
- * @param string|\Closure $job
- * @param callable|null $callback
- * @return void
- */
- public function assertNotPushed($job, $callback = null)
- {
- if ($job instanceof Closure) {
- [$job, $callback] = [$this->firstClosureParameterType($job), $job];
- }
-
- PHPUnit::assertCount(
- 0, $this->pushed($job, $callback),
- "The unexpected [{$job}] job was pushed."
- );
- }
-
- /**
- * Assert that no jobs were pushed.
- *
- * @return void
- */
- public function assertNothingPushed()
- {
- PHPUnit::assertEmpty($this->jobs, 'Jobs were pushed unexpectedly.');
- }
-
- /**
- * Get all of the jobs matching a truth-test callback.
- *
- * @param string $job
- * @param callable|null $callback
- * @return \Illuminate\Support\Collection
- */
- public function pushed($job, $callback = null)
- {
- if (! $this->hasPushed($job)) {
- return collect();
- }
-
- $callback = $callback ?: function () {
- return true;
- };
-
- return collect($this->jobs[$job])->filter(function ($data) use ($callback) {
- return $callback($data['job'], $data['queue']);
- })->pluck('job');
- }
-
- /**
- * Determine if there are any stored jobs for a given class.
- *
- * @param string $job
- * @return bool
- */
- public function hasPushed($job)
- {
- return isset($this->jobs[$job]) && ! empty($this->jobs[$job]);
- }
-
- /**
- * Resolve a queue connection instance.
- *
- * @param mixed $value
- * @return \Illuminate\Contracts\Queue\Queue
- */
- public function connection($value = null)
- {
- return $this;
- }
-
- /**
- * Get the size of the queue.
- *
- * @param string|null $queue
- * @return int
- */
- public function size($queue = null)
- {
- return collect($this->jobs)->flatten(1)->filter(function ($job) use ($queue) {
- return $job['queue'] === $queue;
- })->count();
- }
-
- /**
- * Push a new job onto the queue.
- *
- * @param string $job
- * @param mixed $data
- * @param string|null $queue
- * @return mixed
- */
- public function push($job, $data = '', $queue = null)
- {
- $this->jobs[is_object($job) ? get_class($job) : $job][] = [
- 'job' => $job,
- 'queue' => $queue,
- ];
- }
-
- /**
- * Push a raw payload onto the queue.
- *
- * @param string $payload
- * @param string|null $queue
- * @param array $options
- * @return mixed
- */
- public function pushRaw($payload, $queue = null, array $options = [])
- {
- //
- }
-
- /**
- * Push a new job onto the queue after a delay.
- *
- * @param \DateTimeInterface|\DateInterval|int $delay
- * @param string $job
- * @param mixed $data
- * @param string|null $queue
- * @return mixed
- */
- public function later($delay, $job, $data = '', $queue = null)
- {
- return $this->push($job, $data, $queue);
- }
-
- /**
- * Push a new job onto the queue.
- *
- * @param string $queue
- * @param string $job
- * @param mixed $data
- * @return mixed
- */
- public function pushOn($queue, $job, $data = '')
- {
- return $this->push($job, $data, $queue);
- }
-
- /**
- * Push a new job onto the queue after a delay.
- *
- * @param string $queue
- * @param \DateTimeInterface|\DateInterval|int $delay
- * @param string $job
- * @param mixed $data
- * @return mixed
- */
- public function laterOn($queue, $delay, $job, $data = '')
- {
- return $this->push($job, $data, $queue);
- }
-
- /**
- * Pop the next job off of the queue.
- *
- * @param string|null $queue
- * @return \Illuminate\Contracts\Queue\Job|null
- */
- public function pop($queue = null)
- {
- //
- }
-
- /**
- * Push an array of jobs onto the queue.
- *
- * @param array $jobs
- * @param mixed $data
- * @param string|null $queue
- * @return mixed
- */
- public function bulk($jobs, $data = '', $queue = null)
- {
- foreach ($jobs as $job) {
- $this->push($job, $data, $queue);
- }
- }
-
- /**
- * Get the jobs that have been pushed.
- *
- * @return array
- */
- public function pushedJobs()
- {
- return $this->jobs;
- }
-
- /**
- * Get the connection name for the queue.
- *
- * @return string
- */
- public function getConnectionName()
- {
- //
- }
-
- /**
- * Set the connection name for the queue.
- *
- * @param string $name
- * @return $this
- */
- public function setConnectionName($name)
- {
- return $this;
- }
-
- /**
- * Override the QueueManager to prevent circular dependency.
- *
- * @param string $method
- * @param array $parameters
- * @return mixed
- *
- * @throws \BadMethodCallException
- */
- public function __call($method, $parameters)
- {
- throw new BadMethodCallException(sprintf(
- 'Call to undefined method %s::%s()', static::class, $method
- ));
- }
-}
diff --git a/vendor/illuminate/support/Traits/CapsuleManagerTrait.php b/vendor/illuminate/support/Traits/CapsuleManagerTrait.php
deleted file mode 100644
index 05327552..00000000
--- a/vendor/illuminate/support/Traits/CapsuleManagerTrait.php
+++ /dev/null
@@ -1,69 +0,0 @@
-container = $container;
-
- if (! $this->container->bound('config')) {
- $this->container->instance('config', new Fluent);
- }
- }
-
- /**
- * Make this capsule instance available globally.
- *
- * @return void
- */
- public function setAsGlobal()
- {
- static::$instance = $this;
- }
-
- /**
- * Get the IoC container instance.
- *
- * @return \Illuminate\Contracts\Container\Container
- */
- public function getContainer()
- {
- return $this->container;
- }
-
- /**
- * Set the IoC container instance.
- *
- * @param \Illuminate\Contracts\Container\Container $container
- * @return void
- */
- public function setContainer(Container $container)
- {
- $this->container = $container;
- }
-}
diff --git a/vendor/illuminate/support/Traits/Conditionable.php b/vendor/illuminate/support/Traits/Conditionable.php
deleted file mode 100644
index 79808279..00000000
--- a/vendor/illuminate/support/Traits/Conditionable.php
+++ /dev/null
@@ -1,44 +0,0 @@
-{$method}(...$parameters);
- } catch (Error|BadMethodCallException $e) {
- $pattern = '~^Call to undefined method (?P[^:]+)::(?P[^\(]+)\(\)$~';
-
- if (! preg_match($pattern, $e->getMessage(), $matches)) {
- throw $e;
- }
-
- if ($matches['class'] != get_class($object) ||
- $matches['method'] != $method) {
- throw $e;
- }
-
- static::throwBadMethodCallException($method);
- }
- }
-
- /**
- * Forward a method call to the given object, returning $this if the forwarded call returned itself.
- *
- * @param mixed $object
- * @param string $method
- * @param array $parameters
- * @return mixed
- *
- * @throws \BadMethodCallException
- */
- protected function forwardDecoratedCallTo($object, $method, $parameters)
- {
- $result = $this->forwardCallTo($object, $method, $parameters);
-
- if ($result === $object) {
- return $this;
- }
-
- return $result;
- }
-
- /**
- * Throw a bad method call exception for the given method.
- *
- * @param string $method
- * @return void
- *
- * @throws \BadMethodCallException
- */
- protected static function throwBadMethodCallException($method)
- {
- throw new BadMethodCallException(sprintf(
- 'Call to undefined method %s::%s()', static::class, $method
- ));
- }
-}
diff --git a/vendor/illuminate/support/Traits/Localizable.php b/vendor/illuminate/support/Traits/Localizable.php
deleted file mode 100644
index 1e9fa58c..00000000
--- a/vendor/illuminate/support/Traits/Localizable.php
+++ /dev/null
@@ -1,34 +0,0 @@
-getLocale();
-
- try {
- $app->setLocale($locale);
-
- return $callback();
- } finally {
- $app->setLocale($original);
- }
- }
-}
diff --git a/vendor/illuminate/support/Traits/ReflectsClosures.php b/vendor/illuminate/support/Traits/ReflectsClosures.php
deleted file mode 100644
index bf47d7ec..00000000
--- a/vendor/illuminate/support/Traits/ReflectsClosures.php
+++ /dev/null
@@ -1,88 +0,0 @@
-closureParameterTypes($closure));
-
- if (! $types) {
- throw new RuntimeException('The given Closure has no parameters.');
- }
-
- if ($types[0] === null) {
- throw new RuntimeException('The first parameter of the given Closure is missing a type hint.');
- }
-
- return $types[0];
- }
-
- /**
- * Get the class names of the first parameter of the given Closure, including union types.
- *
- * @param \Closure $closure
- * @return array
- *
- * @throws \ReflectionException
- * @throws \RuntimeException
- */
- protected function firstClosureParameterTypes(Closure $closure)
- {
- $reflection = new ReflectionFunction($closure);
-
- $types = collect($reflection->getParameters())->mapWithKeys(function ($parameter) {
- if ($parameter->isVariadic()) {
- return [$parameter->getName() => null];
- }
-
- return [$parameter->getName() => Reflector::getParameterClassNames($parameter)];
- })->filter()->values()->all();
-
- if (empty($types)) {
- throw new RuntimeException('The given Closure has no parameters.');
- }
-
- if (isset($types[0]) && empty($types[0])) {
- throw new RuntimeException('The first parameter of the given Closure is missing a type hint.');
- }
-
- return $types[0];
- }
-
- /**
- * Get the class names / types of the parameters of the given Closure.
- *
- * @param \Closure $closure
- * @return array
- *
- * @throws \ReflectionException
- */
- protected function closureParameterTypes(Closure $closure)
- {
- $reflection = new ReflectionFunction($closure);
-
- return collect($reflection->getParameters())->mapWithKeys(function ($parameter) {
- if ($parameter->isVariadic()) {
- return [$parameter->getName() => null];
- }
-
- return [$parameter->getName() => Reflector::getParameterClassName($parameter)];
- })->all();
- }
-}
diff --git a/vendor/illuminate/support/Traits/Tappable.php b/vendor/illuminate/support/Traits/Tappable.php
deleted file mode 100644
index e4a321cd..00000000
--- a/vendor/illuminate/support/Traits/Tappable.php
+++ /dev/null
@@ -1,17 +0,0 @@
-input = $input;
- }
-
- /**
- * Get a subset containing the provided keys with values from the input data.
- *
- * @param array|mixed $keys
- * @return array
- */
- public function only($keys)
- {
- $results = [];
-
- $input = $this->input;
-
- $placeholder = new stdClass;
-
- foreach (is_array($keys) ? $keys : func_get_args() as $key) {
- $value = data_get($input, $key, $placeholder);
-
- if ($value !== $placeholder) {
- Arr::set($results, $key, $value);
- }
- }
-
- return $results;
- }
-
- /**
- * Get all of the input except for a specified array of items.
- *
- * @param array|mixed $keys
- * @return array
- */
- public function except($keys)
- {
- $keys = is_array($keys) ? $keys : func_get_args();
-
- $results = $this->input;
-
- Arr::forget($results, $keys);
-
- return $results;
- }
-
- /**
- * Merge the validated input with the given array of additional data.
- *
- * @param array $items
- * @return static
- */
- public function merge(array $items)
- {
- return new static(array_merge($this->input, $items));
- }
-
- /**
- * Get the input as a collection.
- *
- * @return \Illuminate\Support\Collection
- */
- public function collect()
- {
- return new Collection($this->input);
- }
-
- /**
- * Get the raw, underlying input array.
- *
- * @return array
- */
- public function all()
- {
- return $this->input;
- }
-
- /**
- * Get the instance as an array.
- *
- * @return array
- */
- public function toArray()
- {
- return $this->all();
- }
-
- /**
- * Dynamically access input data.
- *
- * @param string $name
- * @return mixed
- */
- public function __get($name)
- {
- return $this->input[$name];
- }
-
- /**
- * Dynamically set input data.
- *
- * @param string $name
- * @param mixed $value
- * @return mixed
- */
- public function __set($name, $value)
- {
- $this->input[$name] = $value;
- }
-
- /**
- * Determine if an input key is set.
- *
- * @return bool
- */
- public function __isset($name)
- {
- return isset($this->input[$name]);
- }
-
- /**
- * Remove an input key.
- *
- * @param string $name
- * @return void
- */
- public function __unset($name)
- {
- unset($this->input[$name]);
- }
-
- /**
- * Determine if an item exists at an offset.
- *
- * @param mixed $key
- * @return bool
- */
- #[\ReturnTypeWillChange]
- public function offsetExists($key)
- {
- return isset($this->input[$key]);
- }
-
- /**
- * Get an item at a given offset.
- *
- * @param mixed $key
- * @return mixed
- */
- #[\ReturnTypeWillChange]
- public function offsetGet($key)
- {
- return $this->input[$key];
- }
-
- /**
- * Set the item at a given offset.
- *
- * @param mixed $key
- * @param mixed $value
- * @return void
- */
- #[\ReturnTypeWillChange]
- public function offsetSet($key, $value)
- {
- if (is_null($key)) {
- $this->input[] = $value;
- } else {
- $this->input[$key] = $value;
- }
- }
-
- /**
- * Unset the item at a given offset.
- *
- * @param string $key
- * @return void
- */
- #[\ReturnTypeWillChange]
- public function offsetUnset($key)
- {
- unset($this->input[$key]);
- }
-
- /**
- * Get an iterator for the input.
- *
- * @return \ArrayIterator
- */
- #[\ReturnTypeWillChange]
- public function getIterator()
- {
- return new ArrayIterator($this->input);
- }
-}
diff --git a/vendor/illuminate/support/ViewErrorBag.php b/vendor/illuminate/support/ViewErrorBag.php
deleted file mode 100644
index d51bb534..00000000
--- a/vendor/illuminate/support/ViewErrorBag.php
+++ /dev/null
@@ -1,131 +0,0 @@
-bags[$key]);
- }
-
- /**
- * Get a MessageBag instance from the bags.
- *
- * @param string $key
- * @return \Illuminate\Contracts\Support\MessageBag
- */
- public function getBag($key)
- {
- return Arr::get($this->bags, $key) ?: new MessageBag;
- }
-
- /**
- * Get all the bags.
- *
- * @return array
- */
- public function getBags()
- {
- return $this->bags;
- }
-
- /**
- * Add a new MessageBag instance to the bags.
- *
- * @param string $key
- * @param \Illuminate\Contracts\Support\MessageBag $bag
- * @return $this
- */
- public function put($key, MessageBagContract $bag)
- {
- $this->bags[$key] = $bag;
-
- return $this;
- }
-
- /**
- * Determine if the default message bag has any messages.
- *
- * @return bool
- */
- public function any()
- {
- return $this->count() > 0;
- }
-
- /**
- * Get the number of messages in the default bag.
- *
- * @return int
- */
- #[\ReturnTypeWillChange]
- public function count()
- {
- return $this->getBag('default')->count();
- }
-
- /**
- * Dynamically call methods on the default bag.
- *
- * @param string $method
- * @param array $parameters
- * @return mixed
- */
- public function __call($method, $parameters)
- {
- return $this->getBag('default')->$method(...$parameters);
- }
-
- /**
- * Dynamically access a view error bag.
- *
- * @param string $key
- * @return \Illuminate\Contracts\Support\MessageBag
- */
- public function __get($key)
- {
- return $this->getBag($key);
- }
-
- /**
- * Dynamically set a view error bag.
- *
- * @param string $key
- * @param \Illuminate\Contracts\Support\MessageBag $value
- * @return void
- */
- public function __set($key, $value)
- {
- $this->put($key, $value);
- }
-
- /**
- * Convert the default bag to its string representation.
- *
- * @return string
- */
- public function __toString()
- {
- return (string) $this->getBag('default');
- }
-}
diff --git a/vendor/illuminate/support/composer.json b/vendor/illuminate/support/composer.json
deleted file mode 100644
index 15dfe4a6..00000000
--- a/vendor/illuminate/support/composer.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "name": "illuminate/support",
- "description": "The Illuminate Support package.",
- "license": "MIT",
- "homepage": "https://laravel.com",
- "support": {
- "issues": "https://github.com/laravel/framework/issues",
- "source": "https://github.com/laravel/framework"
- },
- "authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- }
- ],
- "require": {
- "php": "^7.3|^8.0",
- "ext-json": "*",
- "ext-mbstring": "*",
- "doctrine/inflector": "^1.4|^2.0",
- "illuminate/collections": "^8.0",
- "illuminate/contracts": "^8.0",
- "illuminate/macroable": "^8.0",
- "nesbot/carbon": "^2.53.1",
- "voku/portable-ascii": "^1.4.8"
- },
- "conflict": {
- "tightenco/collect": "<5.5.33"
- },
- "autoload": {
- "psr-4": {
- "Illuminate\\Support\\": ""
- },
- "files": [
- "helpers.php"
- ]
- },
- "extra": {
- "branch-alias": {
- "dev-master": "8.x-dev"
- }
- },
- "suggest": {
- "illuminate/filesystem": "Required to use the composer class (^8.0).",
- "league/commonmark": "Required to use Str::markdown() and Stringable::markdown() (^1.3|^2.0.2).",
- "ramsey/uuid": "Required to use Str::uuid() (^4.2.2).",
- "symfony/process": "Required to use the composer class (^5.1.4).",
- "symfony/var-dumper": "Required to use the dd function (^5.1.4).",
- "vlucas/phpdotenv": "Required to use the Env class and env helper (^5.2)."
- },
- "config": {
- "sort-packages": true
- },
- "minimum-stability": "dev"
-}
diff --git a/vendor/illuminate/support/helpers.php b/vendor/illuminate/support/helpers.php
deleted file mode 100755
index 0b82fe76..00000000
--- a/vendor/illuminate/support/helpers.php
+++ /dev/null
@@ -1,379 +0,0 @@
- $value) {
- if (is_numeric($key)) {
- $start++;
-
- $array[$start] = Arr::pull($array, $key);
- }
- }
-
- return $array;
- }
-}
-
-if (! function_exists('blank')) {
- /**
- * Determine if the given value is "blank".
- *
- * @param mixed $value
- * @return bool
- */
- function blank($value)
- {
- if (is_null($value)) {
- return true;
- }
-
- if (is_string($value)) {
- return trim($value) === '';
- }
-
- if (is_numeric($value) || is_bool($value)) {
- return false;
- }
-
- if ($value instanceof Countable) {
- return count($value) === 0;
- }
-
- return empty($value);
- }
-}
-
-if (! function_exists('class_basename')) {
- /**
- * Get the class "basename" of the given object / class.
- *
- * @param string|object $class
- * @return string
- */
- function class_basename($class)
- {
- $class = is_object($class) ? get_class($class) : $class;
-
- return basename(str_replace('\\', '/', $class));
- }
-}
-
-if (! function_exists('class_uses_recursive')) {
- /**
- * Returns all traits used by a class, its parent classes and trait of their traits.
- *
- * @param object|string $class
- * @return array
- */
- function class_uses_recursive($class)
- {
- if (is_object($class)) {
- $class = get_class($class);
- }
-
- $results = [];
-
- foreach (array_reverse(class_parents($class)) + [$class => $class] as $class) {
- $results += trait_uses_recursive($class);
- }
-
- return array_unique($results);
- }
-}
-
-if (! function_exists('e')) {
- /**
- * Encode HTML special characters in a string.
- *
- * @param \Illuminate\Contracts\Support\DeferringDisplayableValue|\Illuminate\Contracts\Support\Htmlable|string|null $value
- * @param bool $doubleEncode
- * @return string
- */
- function e($value, $doubleEncode = true)
- {
- if ($value instanceof DeferringDisplayableValue) {
- $value = $value->resolveDisplayableValue();
- }
-
- if ($value instanceof Htmlable) {
- return $value->toHtml();
- }
-
- return htmlspecialchars($value ?? '', ENT_QUOTES, 'UTF-8', $doubleEncode);
- }
-}
-
-if (! function_exists('env')) {
- /**
- * Gets the value of an environment variable.
- *
- * @param string $key
- * @param mixed $default
- * @return mixed
- */
- function env($key, $default = null)
- {
- return Env::get($key, $default);
- }
-}
-
-if (! function_exists('filled')) {
- /**
- * Determine if a value is "filled".
- *
- * @param mixed $value
- * @return bool
- */
- function filled($value)
- {
- return ! blank($value);
- }
-}
-
-if (! function_exists('object_get')) {
- /**
- * Get an item from an object using "dot" notation.
- *
- * @param object $object
- * @param string|null $key
- * @param mixed $default
- * @return mixed
- */
- function object_get($object, $key, $default = null)
- {
- if (is_null($key) || trim($key) === '') {
- return $object;
- }
-
- foreach (explode('.', $key) as $segment) {
- if (! is_object($object) || ! isset($object->{$segment})) {
- return value($default);
- }
-
- $object = $object->{$segment};
- }
-
- return $object;
- }
-}
-
-if (! function_exists('optional')) {
- /**
- * Provide access to optional objects.
- *
- * @param mixed $value
- * @param callable|null $callback
- * @return mixed
- */
- function optional($value = null, callable $callback = null)
- {
- if (is_null($callback)) {
- return new Optional($value);
- } elseif (! is_null($value)) {
- return $callback($value);
- }
- }
-}
-
-if (! function_exists('preg_replace_array')) {
- /**
- * Replace a given pattern with each value in the array in sequentially.
- *
- * @param string $pattern
- * @param array $replacements
- * @param string $subject
- * @return string
- */
- function preg_replace_array($pattern, array $replacements, $subject)
- {
- return preg_replace_callback($pattern, function () use (&$replacements) {
- foreach ($replacements as $key => $value) {
- return array_shift($replacements);
- }
- }, $subject);
- }
-}
-
-if (! function_exists('retry')) {
- /**
- * Retry an operation a given number of times.
- *
- * @param int $times
- * @param callable $callback
- * @param int|\Closure $sleepMilliseconds
- * @param callable|null $when
- * @return mixed
- *
- * @throws \Exception
- */
- function retry($times, callable $callback, $sleepMilliseconds = 0, $when = null)
- {
- $attempts = 0;
-
- beginning:
- $attempts++;
- $times--;
-
- try {
- return $callback($attempts);
- } catch (Exception $e) {
- if ($times < 1 || ($when && ! $when($e))) {
- throw $e;
- }
-
- if ($sleepMilliseconds) {
- usleep(value($sleepMilliseconds, $attempts) * 1000);
- }
-
- goto beginning;
- }
- }
-}
-
-if (! function_exists('tap')) {
- /**
- * Call the given Closure with the given value then return the value.
- *
- * @param mixed $value
- * @param callable|null $callback
- * @return mixed
- */
- function tap($value, $callback = null)
- {
- if (is_null($callback)) {
- return new HigherOrderTapProxy($value);
- }
-
- $callback($value);
-
- return $value;
- }
-}
-
-if (! function_exists('throw_if')) {
- /**
- * Throw the given exception if the given condition is true.
- *
- * @param mixed $condition
- * @param \Throwable|string $exception
- * @param mixed ...$parameters
- * @return mixed
- *
- * @throws \Throwable
- */
- function throw_if($condition, $exception = 'RuntimeException', ...$parameters)
- {
- if ($condition) {
- if (is_string($exception) && class_exists($exception)) {
- $exception = new $exception(...$parameters);
- }
-
- throw is_string($exception) ? new RuntimeException($exception) : $exception;
- }
-
- return $condition;
- }
-}
-
-if (! function_exists('throw_unless')) {
- /**
- * Throw the given exception unless the given condition is true.
- *
- * @param mixed $condition
- * @param \Throwable|string $exception
- * @param mixed ...$parameters
- * @return mixed
- *
- * @throws \Throwable
- */
- function throw_unless($condition, $exception = 'RuntimeException', ...$parameters)
- {
- throw_if(! $condition, $exception, ...$parameters);
-
- return $condition;
- }
-}
-
-if (! function_exists('trait_uses_recursive')) {
- /**
- * Returns all traits used by a trait and its traits.
- *
- * @param string $trait
- * @return array
- */
- function trait_uses_recursive($trait)
- {
- $traits = class_uses($trait) ?: [];
-
- foreach ($traits as $trait) {
- $traits += trait_uses_recursive($trait);
- }
-
- return $traits;
- }
-}
-
-if (! function_exists('transform')) {
- /**
- * Transform the given value if it is present.
- *
- * @param mixed $value
- * @param callable $callback
- * @param mixed $default
- * @return mixed|null
- */
- function transform($value, callable $callback, $default = null)
- {
- if (filled($value)) {
- return $callback($value);
- }
-
- if (is_callable($default)) {
- return $default($value);
- }
-
- return $default;
- }
-}
-
-if (! function_exists('windows_os')) {
- /**
- * Determine whether the current environment is Windows based.
- *
- * @return bool
- */
- function windows_os()
- {
- return PHP_OS_FAMILY === 'Windows';
- }
-}
-
-if (! function_exists('with')) {
- /**
- * Return the given value, optionally passed through the given callback.
- *
- * @param mixed $value
- * @param callable|null $callback
- * @return mixed
- */
- function with($value, callable $callback = null)
- {
- return is_null($callback) ? $value : $callback($value);
- }
-}
diff --git a/vendor/league/plates/.github/workflows/docs.yml b/vendor/league/plates/.github/workflows/docs.yml
deleted file mode 100644
index b58513b2..00000000
--- a/vendor/league/plates/.github/workflows/docs.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-name: docs
-
-on:
- push:
- branches:
- - v3
-
-jobs:
- deploy:
- runs-on: ubuntu-18.04
- steps:
- - uses: actions/checkout@v2
-
- - name: Setup Hugo
- uses: peaceiris/actions-hugo@v2
- with:
- hugo-version: '0.79.1'
-
- - name: Build
- run: hugo --minify -s doc
-
- - name: Deploy
- uses: peaceiris/actions-gh-pages@v3
- with:
- github_token: ${{ secrets.GITHUB_TOKEN }}
- publish_dir: ./doc/public
\ No newline at end of file
diff --git a/vendor/league/plates/.github/workflows/php.yml b/vendor/league/plates/.github/workflows/php.yml
deleted file mode 100644
index 40288ee4..00000000
--- a/vendor/league/plates/.github/workflows/php.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-name: PHP
-
-on: [push]
-
-jobs:
- run:
- runs-on: 'ubuntu-latest'
- strategy:
- matrix:
- php-versions: ['7.3', '7.4', '8.0']
- phpunit-versions: ['9.5']
- steps:
- - name: Checkout
- uses: actions/checkout@v2
-
- - name: Setup PHP
- uses: shivammathur/setup-php@v2
- with:
- php-version: ${{ matrix.php-versions }}
- extensions: mbstring, intl
- ini-values: post_max_size=256M, max_execution_time=180
- coverage: xdebug
- tools: php-cs-fixer, phpunit:${{ matrix.phpunit-versions }}
-
- - name: Validate Composer
- run: composer validate
- - name: Install Composer Deps
- run: composer install
- - name: Run Tests
- run: phpunit --testdox --coverage-text --coverage-clover=coverage.clover
- - name: Upload Scrutinzer
- continue-on-error: true
- run: |
- wget https://scrutinizer-ci.com/ocular.phar
- php ocular.phar code-coverage:upload --format=php-clover coverage.clover
\ No newline at end of file
diff --git a/vendor/league/plates/CONTRIBUTING.md b/vendor/league/plates/CONTRIBUTING.md
deleted file mode 100644
index c2cc4f69..00000000
--- a/vendor/league/plates/CONTRIBUTING.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# Contributing
-
-Contributions are **welcome** and will be fully **credited**.
-
-We accept contributions via Pull Requests on [Github](https://github.com/thephpleague/plates).
-
-## Pull Requests
-
-- **[PSR-2 Coding Standard](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md)** - The easiest way to apply the conventions is to install [PHP Code Sniffer](http://pear.php.net/package/PHP_CodeSniffer).
-- **Add tests!** - Your patch won't be accepted if it doesn't have tests.
-- **Document any change in behaviour** - Make sure the README and any other relevant documentation are kept up-to-date.
-- **Consider our release cycle** - We try to follow semver. Randomly breaking public APIs is not an option.
-- **Create topic branches** - Don't ask us to pull from your master branch.
-- **One pull request per feature** - If you want to do more than one thing, send multiple pull requests.
-- **Send coherent history** - Make sure each individual commit in your pull request is meaningful. If you had to make multiple intermediate commits while developing, please squash them before submitting.
-
-## Running Tests
-
-``` bash
-$ phpunit
-```
-
-## Docs
-
-Docs are served with hugo running on version 0.79 or later.
-
-You can view the docs locally with `hugo -s doc server`
-
-**Happy coding**!
\ No newline at end of file
diff --git a/vendor/league/plates/LICENSE b/vendor/league/plates/LICENSE
deleted file mode 100644
index 26357d46..00000000
--- a/vendor/league/plates/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2013 The League of Extraordinary Packages
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
\ No newline at end of file
diff --git a/vendor/league/plates/README.md b/vendor/league/plates/README.md
deleted file mode 100644
index 1f76fd26..00000000
--- a/vendor/league/plates/README.md
+++ /dev/null
@@ -1,64 +0,0 @@
-Plates
-======
-
-[](https://twitter.com/ragboyjr)
-[](https://github.com/thephpleague/plates)
-[](https://github.com/thephpleague/plates/releases)
-[](LICENSE)
-[](https://github.com/thephpleague/plates/actions?query=workflow%3APHP+branch%3Av3)
-[](https://scrutinizer-ci.com/g/thephpleague/plates/code-structure)
-[](https://scrutinizer-ci.com/g/thephpleague/plates)
-[](https://packagist.org/packages/league/plates)
-
-Plates is a native PHP template system that's fast, easy to use and easy to extend. It's inspired by the excellent [Twig](http://twig.sensiolabs.org/) template engine and strives to bring modern template language functionality to native PHP templates. Plates is designed for developers who prefer to use native PHP templates over compiled template languages, such as Twig or Smarty.
-
-### Highlights
-
-- Native PHP templates, no new [syntax](https://platesphp.com/templates/syntax/) to learn
-- Plates is a template system, not a template language
-- Plates encourages the use of existing PHP functions
-- Increase code reuse with template [layouts](https://platesphp.com/templates/layouts/) and [inheritance](https://platesphp.com/templates/inheritance/)
-- Template [folders](https://platesphp.com/engine/folders/) for grouping templates into namespaces
-- [Data](https://platesphp.com/templates/data/#preassigned-and-shared-data) sharing across templates
-- Preassign [data](https://platesphp.com/templates/data/#preassigned-and-shared-data) to specific templates
-- Built-in [escaping](https://platesphp.com/templates/escaping/) helpers
-- Easy to extend using [functions](https://platesphp.com/engine/functions/) and [extensions](https://platesphp.com/engine/extensions/)
-- Framework-agnostic, will work with any project
-- Decoupled design makes templates easy to test
-- Composer ready and PSR-2 compliant
-
-## Installation
-
-Plates is available via Composer:
-
-```
-composer require league/plates
-```
-
-## Documentation
-
-Full documentation can be found at [platesphp.com](https://platesphp.com/).
-
-## Testing
-
-```bash
-phpunit
-```
-
-## Contributing
-
-Please see [CONTRIBUTING](https://github.com/thephpleague/plates/blob/master/CONTRIBUTING.md) for details.
-
-## Security
-
-If you discover any security related issues, please email ragboyjr@icloud.com instead of using the issue tracker.
-
-## Credits
-
-- [RJ Garcia](https://github.com/ragboyjr) (Current Maintainer)
-- [Jonathan Reinink](https://github.com/reinink) (Original Author)
-- [All Contributors](https://github.com/thephpleague/plates/contributors)
-
-## License
-
-The MIT License (MIT). Please see [License File](https://github.com/thephpleague/plates/blob/master/LICENSE) for more information.
diff --git a/vendor/league/plates/composer.json b/vendor/league/plates/composer.json
deleted file mode 100644
index de9f1f7d..00000000
--- a/vendor/league/plates/composer.json
+++ /dev/null
@@ -1,52 +0,0 @@
-{
- "name": "league/plates",
- "description": "Plates, the native PHP template system that's fast, easy to use and easy to extend.",
- "keywords": [
- "league",
- "package",
- "templating",
- "templates",
- "views"
- ],
- "homepage": "https://platesphp.com",
- "license": "MIT",
- "authors" : [
- {
- "name": "Jonathan Reinink",
- "email": "jonathan@reinink.ca",
- "role": "Developer"
- },
- {
- "name": "RJ Garcia",
- "email": "ragboyjr@icloud.com",
- "role": "Developer"
- }
- ],
- "require" : {
- "php": "^7.0|^8.0"
- },
- "require-dev": {
- "mikey179/vfsstream": "^1.6",
- "phpunit/phpunit": "^9.5",
- "squizlabs/php_codesniffer": "^3.5"
- },
- "autoload": {
- "psr-4": {
- "League\\Plates\\": "src"
- }
- },
- "autoload-dev": {
- "psr-4": {
- "League\\Plates\\Tests\\": "tests"
- }
- },
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "scripts": {
- "test": "phpunit --testdox",
- "docs": "hugo -s doc server"
- }
-}
diff --git a/vendor/league/plates/doc/config.toml b/vendor/league/plates/doc/config.toml
deleted file mode 100644
index 8b7c1074..00000000
--- a/vendor/league/plates/doc/config.toml
+++ /dev/null
@@ -1,15 +0,0 @@
-baseURL = "https://platesphp.com/"
-languageCode = "en-us"
-title = "Plates"
-
-pygmentsUseClasses = true
-
-googleAnalytics = "UA-46050814-2"
-
-[params]
- tagline = "Native PHP Templates"
- description = "Plates is a Twig inspired, native PHP template system that brings modern template language functionality to native PHP templates."
- [params.images]
- favicon = "favicon/favicon.ico"
- appleTouch = "favicon/apple-touch-icon-precomposed.png"
- logo = "images/logo.png"
\ No newline at end of file
diff --git a/vendor/league/plates/doc/content/_index.md b/vendor/league/plates/doc/content/_index.md
deleted file mode 100644
index b1324225..00000000
--- a/vendor/league/plates/doc/content/_index.md
+++ /dev/null
@@ -1,39 +0,0 @@
-+++
-title = "Introduction"
-[menu.main]
-parent = "getting-started"
-weight = 1
-+++
-
-[](https://twitter.com/reinink)
-[](https://github.com/thephpleague/plates)
-[](https://github.com/thephpleague/plates/releases)
-[](https://github.com/thephpleague/plates/blob/master/LICENSE)
-{{}} {{}}
-[](https://github.com/thephpleague/plates/actions?query=workflow%3APHP+branch%3Av3)
-[](https://scrutinizer-ci.com/g/thephpleague/plates/code-structure)
-[](https://scrutinizer-ci.com/g/thephpleague/plates)
-[](https://packagist.org/packages/league/plates)
-
-## About
-
-Plates is a native PHP template system that's fast, easy to use and easy to extend. It's inspired by the excellent [Twig](http://twig.sensiolabs.org/) template engine and strives to bring modern template language functionality to native PHP templates. Plates is designed for developers who prefer to use native PHP templates over compiled template languages, such as Twig or Smarty.
-
-## Highlights
-
-- Native PHP templates, no new [syntax]({{< relref "templates/syntax.md" >}}) to learn
-- Plates is a template system, not a template language
-- Plates encourages the use of existing PHP functions
-- Increase code reuse with template [layouts]({{< relref "templates/layouts.md" >}}) and [inheritance]({{< relref "templates/inheritance.md" >}})
-- Template [folders]({{< relref "engine/folders.md" >}}) for grouping templates into namespaces
-- [Data]({{< relref "templates/data.md#preassigned-and-shared-data" >}}) sharing across templates
-- Preassign [data]({{< relref "templates/data#preassigned-and-shared-data" >}}) to specific templates
-- Built-in [escaping]({{< relref "templates/escaping.md" >}}) helpers
-- Easy to extend using [functions]({{< relref "engine/functions.md" >}}) and [extensions]({{< relref "engine/extensions.md" >}})
-- Framework-agnostic, will work with any project
-- Decoupled design makes templates easy to test
-- Composer ready and PSR-2 compliant
-
-## Questions?
-
-Plates is maintained by [RJ Garcia](https://twitter.com/ragboyjr) and originally created by [Jonathan Reinink](https://twitter.com/reinink). Submit issues to [Github](https://github.com/thephpleague/plates/issues).
diff --git a/vendor/league/plates/doc/content/engine/_index.md b/vendor/league/plates/doc/content/engine/_index.md
deleted file mode 100644
index a6f8de99..00000000
--- a/vendor/league/plates/doc/content/engine/_index.md
+++ /dev/null
@@ -1,6 +0,0 @@
-+++
-title = "The Engine"
-[menu.main]
-identifier = "engine"
-weight = 2
-+++
\ No newline at end of file
diff --git a/vendor/league/plates/doc/content/engine/extensions.md b/vendor/league/plates/doc/content/engine/extensions.md
deleted file mode 100644
index 7d206713..00000000
--- a/vendor/league/plates/doc/content/engine/extensions.md
+++ /dev/null
@@ -1,119 +0,0 @@
-+++
-title = "Extensions"
-linkTitle = "Engine Extensions"
-[menu.main]
-parent = "engine"
-weight = 5
-+++
-
-Creating extensions couldn't be easier, and can really make Plates sing for your specific project. Start by creating a class that implements `\League\Plates\Extension\ExtensionInterface`. Next, register your template [functions]({{< relref "engine/functions.md" >}}) within a `register()` method.
-
-## Simple extensions example
-
-~~~ php
-use League\Plates\Engine;
-use League\Plates\Extension\ExtensionInterface;
-
-class ChangeCase implements ExtensionInterface
-{
- public function register(Engine $engine)
- {
- $engine->registerFunction('uppercase', [$this, 'uppercaseString']);
- $engine->registerFunction('lowercase', [$this, 'lowercaseString']);
- }
-
- public function uppercaseString($var)
- {
- return strtoupper($var);
- }
-
- public function lowercaseString($var)
- {
- return strtolower($var);
- }
-}
-~~~
-
-To use this extension in your template, simply call your new functions:
-
-~~~ php
-Hello, =$this->e($this->uppercase($name))?>
-~~~
-
-They can also be used in a [batch]({{< relref "templates/functions.md#batch-function-calls" >}}) compatible function:
-
-~~~ php
-Hello =$this->e($name, 'uppercase')
-~~~
-
-## Single method extensions
-
-Alternatively, you may choose to expose the entire extension object to the template using a single function. This can make your templates more legible and also reduce the chance of conflicts with other extensions.
-
-~~~ php
-use League\Plates\Engine;
-use League\Plates\Extension\ExtensionInterface;
-
-class ChangeCase implements ExtensionInterface
-{
- public function register(Engine $engine)
- {
- $engine->registerFunction('case', [$this, 'getObject']);
- }
-
- public function getObject()
- {
- return $this;
- }
-
- public function upper($var)
- {
- return strtoupper($var);
- }
-
- public function lower($var)
- {
- return strtolower($var);
- }
-}
-~~~
-
-To use this extension in your template, first call the primary function, then the secondary functions:
-
-~~~ php
-Hello, =$this->e($this->case()->upper($name))?>
-~~~
-
-## Loading extensions
-
-To enable an extension, load it into the [engine]({{< relref "engine/overview.md" >}}) object using the `loadExtension()` method.
-
-~~~ php
-$engine->loadExtension(new ChangeCase());
-~~~
-
-## Accessing the engine and template
-
-It may be desirable to access the `engine` or `template` objects from within your extension. Plates makes both of these objects available to you. The engine is automatically passed to the `register()` method, and the template is assigned as a parameter on each function call.
-
-~~~ php
-use League\Plates\Engine;
-use League\Plates\Extension\ExtensionInterface;
-
-class MyExtension implements ExtensionInterface
-{
- protected $engine;
- public $template; // must be public
-
- public function register(Engine $engine)
- {
- $this->engine = $engine;
-
- // Access template data:
- $data = $this->template->data();
-
- // Register functions
- // ...
- }
-}
-~~~
diff --git a/vendor/league/plates/doc/content/engine/file-extensions.md b/vendor/league/plates/doc/content/engine/file-extensions.md
deleted file mode 100644
index e58023b4..00000000
--- a/vendor/league/plates/doc/content/engine/file-extensions.md
+++ /dev/null
@@ -1,35 +0,0 @@
-+++
-title = "File Extensions"
-linkTitle = "Engine File Extensions"
-[menu.main]
-parent = "engine"
-weight = 2
-+++
-
-Plates does not enforce a specific template file extension. By default it assumes `.php`. This file extension is automatically appended to your template names when rendered. You are welcome to change the default extension using one of the following methods.
-
-## Constructor method
-
-~~~ php
-// Create new engine and set the default file extension to ".tpl"
-$template = new League\Plates\Engine('/path/to/templates', 'tpl');
-~~~
-
-## Setter method
-
-~~~ php
-// Sets the default file extension to ".tpl" after engine instantiation
-$template->setFileExtension('tpl');
-~~~
-
-## Manually assign
-
-If you prefer to manually set the file extension, simply set the default file extension to `null`.
-
-~~~ php
-// Disable automatic file extensions
-$template->setFileExtension(null);
-
-// Render template
-echo $templates->render('home.php');
-~~~
\ No newline at end of file
diff --git a/vendor/league/plates/doc/content/engine/folders.md b/vendor/league/plates/doc/content/engine/folders.md
deleted file mode 100644
index c90bfb0b..00000000
--- a/vendor/league/plates/doc/content/engine/folders.md
+++ /dev/null
@@ -1,49 +0,0 @@
-+++
-title = "Folders"
-linkTitle = "Engine Folders"
-[menu.main]
-parent = "engine"
-weight = 3
-+++
-
-Folders make it really easy to organize and access your templates. Folders allow you to group your templates under different namespaces, each of which having their own file system path.
-
-## Creating folders
-
-To create folders, use the `addFolder()` method:
-
-~~~ php
-// Create new Plates instance
-$templates = new League\Plates\Engine();
-
-// Add folders
-$templates->addFolder('admin', '/path/to/admin/templates');
-$templates->addFolder('emails', '/path/to/email/templates');
-~~~
-
-## Using folders
-
-To use the folders you created within your project simply append the folder name with two colons before the template name. For example, to render a welcome email:
-
-~~~ php
-$email = $templates->render('emails::welcome');
-~~~
-
-This works with template functions as well, such as layouts or nested templates. For example:
-
-~~~ php
-layout('shared::template') ?>
-~~~
-
-## Folder fallbacks
-
-When enabled, if a folder template is missing, Plates will automatically fallback and look for a template with the **same** name in the default folder. This can be helpful when using folders to manage themes. To enable fallbacks, simply pass `true` as the third parameter in the `addFolders()` method.
-
-~~~ php
-// Create new Plates engine
-$templates = new \League\Plates\Engine('/path/to/default/theme');
-
-// Add themes
-$templates->addFolder('theme1', '/path/to/theme/1', true);
-$templates->addFolder('theme2', '/path/to/theme/2', true);
-~~~
\ No newline at end of file
diff --git a/vendor/league/plates/doc/content/engine/functions.md b/vendor/league/plates/doc/content/engine/functions.md
deleted file mode 100644
index cb9941be..00000000
--- a/vendor/league/plates/doc/content/engine/functions.md
+++ /dev/null
@@ -1,33 +0,0 @@
-+++
-title = "Functions"
-linkTitle = "Engine Functions"
-[menu.main]
-parent = "engine"
-weight = 4
-+++
-
-While [extensions]({{< relref "engine/extensions.md" >}}) are awesome for adding additional reusable functionality to Plates, sometimes it's easier to just create a one-off function for a specific use case. Plates makes this easy to do.
-
-## Registering functions
-
-~~~ php
-// Create new Plates engine
-$templates = new \League\Plates\Engine('/path/to/templates');
-
-// Register a one-off function
-$templates->registerFunction('uppercase', function ($string) {
- return strtoupper($string);
-});
-~~~
-
-To use this function in a template, simply call it like any other function:
-
-~~~ php
-Hello =$this->e($this->uppercase($name))
-~~~
-
-It can also be used in a [batch]({{< relref "templates/functions#batch-function-calls">}}) compatible function:
-
-~~~ php
-Hello =$this->e($name, 'uppercase')
-~~~
diff --git a/vendor/league/plates/doc/content/engine/overview.md b/vendor/league/plates/doc/content/engine/overview.md
deleted file mode 100644
index b7db2ff3..00000000
--- a/vendor/league/plates/doc/content/engine/overview.md
+++ /dev/null
@@ -1,56 +0,0 @@
-+++
-title = "Overview"
-linkTitle = "Engine Overview"
-aliases = ["/engine"]
-[menu.main]
-parent = "engine"
-weight = 1
-+++
-
-Plates uses a central object called the `Engine`, which is used to store the environment configuration, functions and extensions. It helps decouple your templates from the file system and other dependencies. For example, if you want to change the folder where your templates are stored, you can do so by simply changing the path in one location.
-
-## Basic usage
-
-~~~ php
-// Create new Plates engine
-$templates = new League\Plates\Engine('/path/to/templates');
-
-// Add any additional folders
-$templates->addFolder('emails', '/path/to/emails');
-
-// Load any additional extensions
-$templates->loadExtension(new League\Plates\Extension\Asset('/path/to/public'));
-
-// Create a new template
-$template = $templates->make('emails::welcome');
-~~~
-
-## Dependency Injection
-
-Plates is designed to be easily passed around your application and easily injected in your controllers or other application objects. Simply pass an instance of the `Engine` to any consuming objects, and then use either the `make()` method to create a new template, or the `render()` method to render it immediately. For example:
-
-~~~ php
-class Controller
-{
- private $templates;
-
- public function __construct(League\Plates\Engine $templates)
- {
- $this->templates = $templates;
- }
-
- // Create a template object
- public function getIndex()
- {
- $template = $this->templates->make('home');
-
- return $template->render();
- }
-
- // Render a template directly
- public function getIndex()
- {
- return $this->templates->render('home');
- }
-}
-~~~
diff --git a/vendor/league/plates/doc/content/extensions/_index.md b/vendor/league/plates/doc/content/extensions/_index.md
deleted file mode 100644
index bfe10071..00000000
--- a/vendor/league/plates/doc/content/extensions/_index.md
+++ /dev/null
@@ -1,6 +0,0 @@
-+++
-title = "Extensions"
-[menu.main]
-identifier = "extensions"
-weight = 4
-+++
\ No newline at end of file
diff --git a/vendor/league/plates/doc/content/extensions/asset.md b/vendor/league/plates/doc/content/extensions/asset.md
deleted file mode 100644
index 9d7d05f7..00000000
--- a/vendor/league/plates/doc/content/extensions/asset.md
+++ /dev/null
@@ -1,57 +0,0 @@
-+++
-title = "Asset"
-[menu.main]
-parent = "extensions"
-weight = 1
-+++
-
-The asset extension can be used to quickly create "cache busted" asset URLs in your templates. This is particularly helpful for aggressively cached files that can potentially change in the future, such as CSS files, JavaScript files and images. It works by appending the timestamp of the file's last update to its URL. For example, `/css/all.css` becomes `/css/all.1373577602.css`. As long as the file does not change, the timestamp remains the same and caching occurs. However, if the file is changed, a new URL is automatically generated with a new timestamp, and visitors receive the new file.
-
-## Installing the asset extension
-
-The asset extension comes packaged with Plates but is not enabled by default, as it requires extra parameters passed to it at instantiation.
-
-~~~ php
-// Load asset extension
-$engine->loadExtension(new League\Plates\Extension\Asset('/path/to/public/assets/', true));
-~~~
-
-The first constructor parameter is the file system path of the assets directory. The second is an optional `boolean` parameter that if set to true uses the filename caching method (ie. `file.1373577602.css`) instead of the default query string method (ie. `file.css?v=1373577602`).
-
-## Filename caching
-
-To make filename caching work, some URL rewriting is required:
-
-### Apache example
-~~~ php
-
- RewriteCond %{REQUEST_FILENAME} !-f
- RewriteCond %{REQUEST_FILENAME} !-d
- RewriteRule ^(.+)\.(\d+)\.(js|css|png|jpg|gif)$ $1.$3 [L]
-
-~~~
-
-### Nginx example
-
-~~~ php
-location ~* (.+)\.(?:\d+)\.(js|css|png|jpg|jpeg|gif)$ {
- try_files $uri $1.$2;
-}
-~~~
-
-## Using the asset extension
-
-~~~ php
-
-
- Asset Extension Example
-
-
-
-
-
-
-
-
-
-~~~
\ No newline at end of file
diff --git a/vendor/league/plates/doc/content/extensions/community.md b/vendor/league/plates/doc/content/extensions/community.md
deleted file mode 100644
index 6282d3a4..00000000
--- a/vendor/league/plates/doc/content/extensions/community.md
+++ /dev/null
@@ -1,13 +0,0 @@
-+++
-title = "Community"
-[menu.main]
-parent = "extensions"
-weight = 3
-+++
-
-This is a list of all the known community extensions for the Plates library. Please feel free to submit a [Pull Request](https://github.com/thephpleague/plates) to add your extension to this list.
-
-- [Laravel Provider](https://github.com/franzliedke/laravel-plates)
-- [Attributes Rendering](https://github.com/RobinDev/platesAttributes) - Transforms arrays into html tag attributes.
-- [Includer](https://github.com/odahcam/plates-includer) - Include your assets in an expert way.
-- [Tapestry](https://github.com/tapestry-cloud/tapestry) - A blog aware, Plates based static site generator.
diff --git a/vendor/league/plates/doc/content/extensions/uri.md b/vendor/league/plates/doc/content/extensions/uri.md
deleted file mode 100644
index 1f3be1a2..00000000
--- a/vendor/league/plates/doc/content/extensions/uri.md
+++ /dev/null
@@ -1,81 +0,0 @@
-+++
-title = "URI"
-[menu.main]
-parent = "extensions"
-weight = 2
-+++
-
-The URI extension is designed to make URI checks within templates easier. The most common use is marking the current page in a menu as "selected". It only has one function, `uri()`, but can do a number of helpful tasks depending on the parameters passed to it.
-
-## Installing the URI extension
-
-The URI extension comes packaged with Plates but is not enabled by default, as it requires an extra parameter passed to it at instantiation.
-
-~~~ php
-// Load URI extension using global variable
-$engine->loadExtension(new League\Plates\Extension\URI($_SERVER['PATH_INFO']));
-
-// Load URI extension using a HttpFoundation's request object
-$engine->loadExtension(new League\Plates\Extension\URI($request->getPathInfo()));
-~~~
-
-## URI example
-
-~~~ php
-
- uri('/', 'class="selected"')?>>Home
- uri('/about', 'class="selected"')?>>About
- uri('/products', 'class="selected"')?>>Products
- uri('/contact', 'class="selected"')?>>Contact
-
-~~~
-
-## Using the URI extension
-
-Get the whole URI.
-
-~~~ php
-=$this->uri()?>
-~~~
-
-Get a specified segment of the URI.
-
-~~~ php
-=$this->uri(1)?>
-~~~
-
-Check if a specific segment of the URI (first parameter) equals a given string (second parameter). Returns `true` on success or `false` on failure.
-
-~~~ php
-uri(1, 'home')): ?>
-~~~
-
-Check if a specific segment of the URI (first parameter) equals a given string (second parameter). Returns string (third parameter) on success or `false` on failure.
-
-~~~ php
-=$this->uri(1, 'home', 'success')?>
-~~~
-
-Check if a specific segment of the URI (first parameter) equals a given string (second parameter). Returns string (third parameter) on success or string (fourth parameter) on failure.
-
-~~~ php
-=$this->uri(1, 'home', 'success', 'fail')?>
-~~~
-
-Check if a regular expression string matches the current URI. Returns `true` on success or `false` on failure.
-
-~~~ php
-uri('/home')): ?>
-~~~
-
-Check if a regular expression string (first parameter) matches the current URI. Returns string (second parameter) on success or `false` on failure.
-
-~~~ php
-=$this->uri('/home', 'success')?>
-~~~
-
-Check if a regular expression string (first parameter) matches the current URI. Returns string (second parameter) on success or string (third parameter) on failure.
-
-~~~ php
-=$this->uri('/home', 'success', 'fail')?>
-~~~
\ No newline at end of file
diff --git a/vendor/league/plates/doc/content/getting-started/_index.md b/vendor/league/plates/doc/content/getting-started/_index.md
deleted file mode 100644
index 19d0b831..00000000
--- a/vendor/league/plates/doc/content/getting-started/_index.md
+++ /dev/null
@@ -1,6 +0,0 @@
-+++
-title = "Getting Started"
-[menu.main]
-identifier = "getting-started"
-weight = 1
-+++
\ No newline at end of file
diff --git a/vendor/league/plates/doc/content/getting-started/installation.md b/vendor/league/plates/doc/content/getting-started/installation.md
deleted file mode 100644
index 0e7c9c68..00000000
--- a/vendor/league/plates/doc/content/getting-started/installation.md
+++ /dev/null
@@ -1,33 +0,0 @@
-+++
-title = "Installation"
-[menu.main]
-parent = "getting-started"
-weight = 3
-+++
-
-## Using Composer
-
-Plates is available on [Packagist](https://packagist.org/packages/league/plates) and can be installed using [Composer](https://getcomposer.org/). This can be done by running the following command or by updating your `composer.json` file.
-
-~~~ bash
-composer require league/plates
-~~~
-
-{{< code-filename composer.json >}}
-~~~ javascript
-{
- "require": {
- "league/plates": "3.*"
- }
-}
-~~~
-
-Be sure to also include your Composer autoload file in your project:
-
-~~~ php
-require 'vendor/autoload.php';
-~~~
-
-## Downloading .zip file
-
-This project is also available for download as a `.zip` file on GitHub. Visit the [releases page](https://github.com/thephpleague/plates/releases), select the version you want, and click the "Source code (zip)" download button.
\ No newline at end of file
diff --git a/vendor/league/plates/doc/content/getting-started/simple-example.md b/vendor/league/plates/doc/content/getting-started/simple-example.md
deleted file mode 100644
index 1f177997..00000000
--- a/vendor/league/plates/doc/content/getting-started/simple-example.md
+++ /dev/null
@@ -1,50 +0,0 @@
-+++
-title = "Simple Example"
-[menu.main]
-parent = "getting-started"
-weight = 2
-+++
-
-Here is a simple example of how to use Plates. We will assume the following directory stucture:
-
-~~~
-`-- path
- `-- to
- `-- templates
- |-- template.php
- |-- profile.php
-~~~
-
-## Within your controller
-
-~~~ php
-// Create new Plates instance
-$templates = new League\Plates\Engine('/path/to/templates');
-
-// Render a template
-echo $templates->render('profile', ['name' => 'Jonathan']);
-~~~
-
-## The page template
-
-{{< code-filename profile.php >}}
-~~~ php
-layout('template', ['title' => 'User Profile']) ?>
-
-User Profile
-Hello, =$this->e($name)?>
-~~~
-
-## The layout template
-
-{{< code-filename template.php >}}
-~~~ php
-
-
- =$this->e($title)?>
-
-
- =$this->section('content')?>
-
-
-~~~
\ No newline at end of file
diff --git a/vendor/league/plates/doc/content/templates/_index.md b/vendor/league/plates/doc/content/templates/_index.md
deleted file mode 100644
index 19f973fd..00000000
--- a/vendor/league/plates/doc/content/templates/_index.md
+++ /dev/null
@@ -1,6 +0,0 @@
-+++
-title = "Templates"
-[menu.main]
-identifier = "templates"
-weight = 3
-+++
\ No newline at end of file
diff --git a/vendor/league/plates/doc/content/templates/data.md b/vendor/league/plates/doc/content/templates/data.md
deleted file mode 100644
index 4330eed4..00000000
--- a/vendor/league/plates/doc/content/templates/data.md
+++ /dev/null
@@ -1,60 +0,0 @@
-+++
-title = "Data"
-linkTitle = "Templates Data"
-[menu.main]
-parent = "templates"
-weight = 2
-+++
-
-It's very common to share application data (variables) with a template. Data can be whatever you want: strings, arrays, objects, etc. Plates allows you set both template specific data as well as shared template data.
-
-## Assign data
-
-Assigning data is done from within your application code, such as a controller. There are a number of ways to assign the data, depending on how you structure your objects.
-
-~~~ php
-// Create new Plates instance
-$templates = new League\Plates\Engine('/path/to/templates');
-
-// Assign via the engine's render method
-echo $templates->render('profile', ['name' => 'Jonathan']);
-
-// Assign via the engine's make method
-$template = $templates->make('profile', ['name' => 'Jonathan']);
-
-// Assign directly to a template object
-$template = $templates->make('profile');
-$template->data(['name' => 'Jonathan']);
-~~~
-
-## Accessing data
-
-Template data is available as locally scoped variables at the time of rendering. Continuing with the example above, here is how you would [escape]({{< relref "templates/escaping.md" >}}) and output the "name" value in a template:
-
-~~~ php
-Hello =$this->e($name)?>
-~~~
-
-Prior to Plates 3.0, variables were accessed using the $this pseudo-variable. This is no longer possible. Use the locally scoped variables instead.
-
-## Preassigned and shared data
-
-If you have data that you want assigned to a specific template each time that template is rendered throughout your application, the `addData()` function can help organize that code in one place.
-
-~~~ php
-$templates->addData(['name' => 'Jonathan'], 'emails::welcome');
-~~~
-
-You can pressaign data to more than one template by passing an array of templates:
-
-~~~ php
-$templates->addData(['name' => 'Jonathan'], ['login', 'template']);
-~~~
-
-To assign data to ALL templates, simply omit the second parameter:
-
-~~~ php
-$templates->addData(['name' => 'Jonathan']);
-~~~
-
-Keep in mind that shared data is assigned to a template when it's first created, meaning any conflicting data assigned that's afterwards to a specific template will overwrite the shared data. This is generally desired behavior.
diff --git a/vendor/league/plates/doc/content/templates/escaping.md b/vendor/league/plates/doc/content/templates/escaping.md
deleted file mode 100644
index 8cb44b29..00000000
--- a/vendor/league/plates/doc/content/templates/escaping.md
+++ /dev/null
@@ -1,49 +0,0 @@
-+++
-title = "Escaping"
-linkTitle = "Templates Escaping"
-[menu.main]
-parent = "templates"
-weight = 8
-+++
-
-Escaping is a form of [data filtering](http://www.phptherightway.com/#data_filtering) which sanitizes unsafe, user supplied input prior to outputting it as HTML. Plates provides two shortcuts to the `htmlspecialchars()` function.
-
-## Escaping example
-
-~~~ php
-Hello, =$this->escape($name)?>
-
-
-Hello, =$this->e($name)?>
-~~~
-
-## Batch function calls
-
-The escape functions also support [batch]({{< relref "templates/functions.md#batch-function-calls" >}}) function calls, which allow you to apply multiple functions, including native PHP functions, to a variable at one time.
-
-~~~ php
-Welcome =$this->e($name, 'strip_tags|strtoupper')?>
-~~~
-
-## Escaping HTML attributes
-
-It's VERY important to always double quote HTML attributes that contain escaped variables, otherwise your template will still be open to injection attacks.
-
-Some [libraries](http://framework.zend.com/manual/2.1/en/modules/zend.escaper.escaping-html-attributes.html) go as far as having a special function for escaping HTML attributes. However, this is somewhat redundant considering that if a developer forgets to properly quote an HTML attribute, they will likely also forget to use this special function. Here is how you properly escape HTML attributes:
-
-~~~ php
-
-
-
-
-
-
-
- e($name)?>>
-~~~
-
-## Automatic escaping
-
-Probably the biggest drawbacks to native PHP templates is the inability to auto-escape variables properly. Template languages like Twig and Smarty can identify "echoed" variables during a parsing stage and automatically escape them. This cannot be done in native PHP as the language does not offer overloading functionality for it's output functions (ie. `print` and `echo`).
-
-Don't worry, escaping can still be done safely, it just means you are responsible for manually escaping each variable on output. Consider creating a snippet for one of the above, built-in escaping functions to make this process easier.
diff --git a/vendor/league/plates/doc/content/templates/functions.md b/vendor/league/plates/doc/content/templates/functions.md
deleted file mode 100644
index ba41bdb7..00000000
--- a/vendor/league/plates/doc/content/templates/functions.md
+++ /dev/null
@@ -1,46 +0,0 @@
-+++
-title = "Functions"
-linkTitle = "Templates Functions"
-[menu.main]
-parent = "templates"
-weight = 3
-+++
-
-Template functions in Plates are accessed using the `$this` pseudo-variable.
-
-~~~ php
-Hello, =$this->escape($name)?>
-~~~
-
-
-## Custom fuctions
-
-In addition to the functions included with Plates, it's also possible to add [one-off functions]({{< relref "engine/functions.md" >}}), or even groups of functions, known as [extensions]({{< relref "engine/extensions.md" >}}).
-
-## Batch function calls
-
-Sometimes you need to apply more than function to a variable in your templates. This can become somewhat illegible. The `batch()` function helps by allowing you to apply multiple functions, including native PHP functions, to a variable at one time.
-
-~~~ php
-
-Welcome =$this->escape(strtoupper(strip_tags($name)))?>
-
-
-Welcome =$this->batch($name, 'strip_tags|strtoupper|escape')?>
-~~~
-
-The [escape]({{< relref "templates/escaping.md" >}}) functions also support batch function calls.
-
-~~~ php
-Welcome =$this->e($name, 'strip_tags|strtoupper')?>
-~~~
-
-The batch functions works well for "piped" functions that accept one parameter, modify it, and then return it. It's important to note that they execute functions left to right and will favour extension functions over native PHP functions if there are conflicts.
-
-~~~ php
-
-=$this->batch('Jonathan', 'escape|strtolower|strtoupper')?>
-
-
-=$this->batch('Jonathan', 'escape|strtoupper|strtolower')?>
-~~~
diff --git a/vendor/league/plates/doc/content/templates/inheritance.md b/vendor/league/plates/doc/content/templates/inheritance.md
deleted file mode 100644
index d0676e81..00000000
--- a/vendor/league/plates/doc/content/templates/inheritance.md
+++ /dev/null
@@ -1,63 +0,0 @@
-+++
-title = "Inheritance"
-linkTitle = "Templates Inheritance"
-[menu.main]
-parent = "templates"
-weight = 7
-+++
-
-By combining [layouts]({{< relref "templates/layouts.md" >}}) and [sections]({{< relref "templates/sections.md" >}}), Plates allows you to "build up" your pages using predefined sections. This is best understand using an example:
-
-## Inheritance example
-
-The following example illustrates a pretty standard website. Start by creating a site template, which includes your header and footer as well as any predefined content [sections]({{< relref "templates/sections.md" >}}). Notice how Plates makes it possible to even set default section content, in the event that a page doesn't define it.
-
-{{< code-filename template.php >}}
-
-~~~ php
-
-
- =$this->e($title)?>
-
-
-
-
-
-
- =$this->section('page')?>
-
-
-
-
-
-
-~~~
-
-With the template defined, any page can now "implement" this [layout]({{< relref "templates/layouts.md" >}}). Notice how each section of content is defined between the `start()` and `end()` functions.
-
-{{< code-filename profile.php >}}
-
-~~~ php
-layout('template', ['title' => 'User Profile']) ?>
-
-start('page') ?>
- Welcome!
- Hello =$this->e($name)?>
-stop() ?>
-
-start('sidebar') ?>
-
-stop() ?>
-~~~
diff --git a/vendor/league/plates/doc/content/templates/layouts.md b/vendor/league/plates/doc/content/templates/layouts.md
deleted file mode 100644
index 88a2ad77..00000000
--- a/vendor/league/plates/doc/content/templates/layouts.md
+++ /dev/null
@@ -1,104 +0,0 @@
-+++
-title = "Layouts"
-linkTitle = "Templates Layouts"
-[menu.main]
-parent = "templates"
-weight = 5
-+++
-
-The `layout()` function allows you to define a layout template that a template will implement. It's like having separate header and footer templates in one file.
-
-## Define a layout
-
-The `layout()` function can be called anywhere in a template, since the layout template is actually rendered second. Typically it's placed at the top of the file.
-
-~~~ php
-layout('template') ?>
-
-User Profile
-Hello, =$this->e($name)?>
-~~~
-
-This function also works with [folders]({{< relref "engine/folders.md" >}}):
-
-~~~ php
-layout('shared::template') ?>
-~~~
-
-## Assign data
-
-To assign data (variables) to a layout template, pass them as an array to the `layout()` function. This data will then be available as locally scoped variables within the layout template.
-
-~~~ php
-layout('template', ['title' => 'User Profile']) ?>
-~~~
-
-## Accessing the content
-
-To access the rendered template content within the layout, use the `section()` function, passing `'content'` as the section name. This will return all outputted content from the template that hasn't been defined in a [section]({{< relref "templates/sections.md" >}}).
-
-~~~ php
-
-
- =$this->e($title)?>
-
-
-
-=$this->section('content')?>
-
-
-
-~~~
-
-## Stacked layouts
-
-Plates allows stacking of layouts, allowing even further simplification and organization of templates. Instead of just using one main layout, it's possible to break templates into more specific layouts, which themselves implement a main layout. Consider this example:
-
-### The main site layout
-
-{{< code-filename template.php >}}
-
-~~~ php
-
-
- =$this->e($title)?>
-
-
-
-=$this->section('content')?>
-
-
-
-~~~
-
-### The blog layout
-
-{{< code-filename blog.php >}}
-
-~~~ php
-layout('template', ['title' => $title]) ?>
-
-The Blog
-
-
-
- =$this->section('content')?>
-
-
- =$this->insert('blog/sidebar')?>
-
-
-~~~
-
-### A blog article
-
-{{< code-filename blog-article.php >}}
-
-~~~ php
-layout('blog', ['title' => $article->title]) ?>
-
-=$this->e($article->title)?>
-
- =$this->e($article->content)?>
-
-~~~
diff --git a/vendor/league/plates/doc/content/templates/nesting.md b/vendor/league/plates/doc/content/templates/nesting.md
deleted file mode 100644
index 6243a277..00000000
--- a/vendor/league/plates/doc/content/templates/nesting.md
+++ /dev/null
@@ -1,43 +0,0 @@
-+++
-title = "Nesting"
-linkTitle = "Templates Nesting"
-[menu.main]
-parent = "templates"
-weight = 4
-+++
-
-Including another template into the current template is done using the `insert()` function:
-
-~~~ php
-insert('partials/header') ?>
-
-Your content.
-
-insert('partials/footer') ?>
-~~~
-
-The `insert()` function also works with [folders]({{< relref "engine/folders.md" >}}):
-
-~~~ php
-insert('partials::header') ?>
-~~~
-
-## Alternative syntax
-
-The `insert()` function automatically outputs the rendered template. If you prefer to manually output the response, use the `fetch()` function instead:
-
-~~~ php
-=$this->fetch('partials/header')?>
-~~~
-
-## Assign data
-
-To assign data (variables) to a nested template, pass them as an array to the `insert()` or `fetch()` functions. This data will then be available as locally scoped variables within the nested template.
-
-~~~ php
-insert('partials/header', ['name' => 'Jonathan']) ?>
-
-Your content.
-
-insert('partials/footer') ?>
-~~~
diff --git a/vendor/league/plates/doc/content/templates/overview.md b/vendor/league/plates/doc/content/templates/overview.md
deleted file mode 100644
index e6c7c028..00000000
--- a/vendor/league/plates/doc/content/templates/overview.md
+++ /dev/null
@@ -1,72 +0,0 @@
-+++
-title = "Overview"
-linkTitle = "Templates Overview"
-[menu.main]
-parent = "templates"
-weight = 1
-+++
-
-Plates templates are very simple PHP objects. Generally you'll want to create these using the two factory methods, `make()` and `render()`, in the [engine]({{< relref "engine/overview.md" >}}). For example:
-
-~~~ php
-// Create new Plates instance
-$templates = new League\Plates\Engine('/path/to/templates');
-
-// Render a template in a subdirectory
-echo $templates->render('partials/header');
-
-// Render a template
-echo $templates->render('profile', ['name' => 'Jonathan']);
-~~~
-
-For more information about how Plates is designed to be easily added to your application, see the section on [dependency injection]({{< relref "engine/overview.md#dependency-injection" >}}).
-
-## Manually creating templates
-
-It's also possible to create templates manually. The only dependency they require is an instance of the [engine]({{< relref "engine/overview.md" >}}) object. For example:
-
-~~~ php
-// Create new Plates instance
-$templates = new League\Plates\Engine('/path/to/templates');
-
-// Create a new template
-$template = new League\Plates\Template\Template($templates, 'profile');
-
-// Render the template
-echo $template->render(['name' => 'Jonathan']);
-
-// You can also render the template using the toString() magic method
-echo $template;
-~~~
-
-## Check if a template exists
-
-When dynamically loading templates, you may need to check if they exist. This can be done using the engine's `exists()` method:
-
-~~~ php
-if ($templates->exists('articles::beginners_guide')) {
- // It exists!
-}
-~~~
-
-You can also run this check on an existing template:
-
-~~~ php
-if ($template->exists()) {
- // It exists!
-}
-~~~
-
-## Get a template path
-
-To get a template path from its name, use the engine's `path()` method:
-
-~~~ php
-$path = $templates->path('articles::beginners_guide');
-~~~
-
-You can also get the path from an existing template:
-
-~~~ php
-$path = $template->path();
-~~~
diff --git a/vendor/league/plates/doc/content/templates/sections.md b/vendor/league/plates/doc/content/templates/sections.md
deleted file mode 100644
index 06d4151b..00000000
--- a/vendor/league/plates/doc/content/templates/sections.md
+++ /dev/null
@@ -1,83 +0,0 @@
-+++
-title = "Sections"
-linkTitle = "Templates Sections"
-[menu.main]
-parent = "templates"
-weight = 6
-+++
-
-The `start()` and `stop` functions allow you to build sections (or blocks) of content within your template, and instead of them being rendered directly, they are saved for use elsewhere. For example, in your [layout]({{< relref "templates/layouts.md" >}}) template.
-
-## Creating sections
-
-You define the name of the section with the `start()` function. To end a section call the `stop()` function.
-
-~~~ php
-start('welcome') ?>
-
- Welcome!
- Hello =$this->e($name)?>
-
-stop() ?>
-~~~
-
-## Stacking section content
-
-By default, when you render a section its content will overwrite any existing content for that section. However, it's possible to append/prepend (or stack) the content instead using the `push()` or `unshift()` method respectively. This can be useful for specifying any JavaScript libraries or CSS files required by your child views.
-
-~~~ php
-push('scripts') ?>
-
-end() ?>
-
-unshift('styles') ?>
-
-end() ?>
-~~~
-
-The end() function is simply an alias of stop(). These functions can be used interchangeably.
-
-## Accessing section content
-
-Access rendered section content using the name you assigned in the `start()` method. This variable can be accessed from the current template and layout templates using the `section()` function.
-
-~~~ php
-=$this->section('welcome')?>
-~~~
-
-Prior to Plates 3.0, accessing template content was done using either the content() or child() functions. For consistency with sections, this is no longer possible.
-
-## Default section content
-
-In situations where a page doesn't implement a particular section, it's helpful to assign default content. There are a couple ways to do this:
-
-### Defining it inline
-
-If the default content can be defined in a single line of code, it's best to simply pass it as the second parameter of the `section()` function.
-
-~~~ php
-
-~~~
-
-### Use an if statement
-
-If the default content requires more than a single line of code, it's best to use a simple if statement to check if a section exists, and otherwise display the default.
-
-~~~ php
-
-~~~
-
diff --git a/vendor/league/plates/doc/content/templates/syntax.md b/vendor/league/plates/doc/content/templates/syntax.md
deleted file mode 100644
index 6edf8812..00000000
--- a/vendor/league/plates/doc/content/templates/syntax.md
+++ /dev/null
@@ -1,49 +0,0 @@
-+++
-title = "Syntax"
-linkTitle = "Templates Syntax"
-[menu.main]
-parent = "templates"
-weight = 9
-+++
-
-While the actual syntax you use in your templates is entirely your choice (it's just PHP after all), we suggest the following syntax guidelines to help keep templates clean and legible.
-
-## Guidelines
-
-- Always use HTML with inline PHP. Never use blocks of PHP.
-- Always escape potentially dangerous variables prior to outputting using the built-in escape functions. More on escaping [here]({{< relref "templates/escaping.md" >}}).
-- Always use the short echo syntax (`=`) when outputting variables. For all other inline PHP code, use full the `layout('template', ['title' => 'User Profile']) ?>
-
-Welcome!
-Hello =$this->e($name)?>
-
-Friends
-
-
-
- Invitations
- You have some friend invites!
-
-~~~
diff --git a/vendor/league/plates/doc/layouts/_default/baseof.html b/vendor/league/plates/doc/layouts/_default/baseof.html
deleted file mode 100644
index 23003f36..00000000
--- a/vendor/league/plates/doc/layouts/_default/baseof.html
+++ /dev/null
@@ -1,114 +0,0 @@
-
-
-
-
-
-
- {{ if .IsHome }}
- {{ .Site.Title }} - {{ .Site.Params.tagline }}
- {{ else }}
- {{ partial "title" . }} | {{ .Site.Title -}}
- {{ end }}
- {{ if .Site.Params.description }}
-
- {{ end }}
- {{ if .Site.Params.Images.favicon }}
-
- {{ else }}
-
- {{ end }}
- {{ if .Site.Params.Images.appleTouch }}
-
- {{ else }}
-
- {{ end }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Our Packages:
-
-
-
-
-
-
-
- ☰ Menu
- ☰ Hide Menu
-
-
-
-
- {{ $currentPage := . }}
- {{ range .Site.Menus.main }}
- {{ .Name }}
-
- {{ range .Children }}
-
- {{ end }}
-
- {{ end }}
-
-
- {{ template "main" . }}
-
-
-
-
-
-
-
-
-
-
-
-{{ if .Site.GoogleAnalytics }}
-
-{{ end }}
-
-
-
\ No newline at end of file
diff --git a/vendor/league/plates/doc/layouts/_default/list.html b/vendor/league/plates/doc/layouts/_default/list.html
deleted file mode 100644
index bcd5d0b5..00000000
--- a/vendor/league/plates/doc/layouts/_default/list.html
+++ /dev/null
@@ -1,4 +0,0 @@
-{{ define "main" }}
- {{ .Title }}
- {{ .Content }}
-{{ end }}
\ No newline at end of file
diff --git a/vendor/league/plates/doc/layouts/_default/single.html b/vendor/league/plates/doc/layouts/_default/single.html
deleted file mode 100644
index bcd5d0b5..00000000
--- a/vendor/league/plates/doc/layouts/_default/single.html
+++ /dev/null
@@ -1,4 +0,0 @@
-{{ define "main" }}
- {{ .Title }}
- {{ .Content }}
-{{ end }}
\ No newline at end of file
diff --git a/vendor/league/plates/doc/layouts/partials/title.html b/vendor/league/plates/doc/layouts/partials/title.html
deleted file mode 100644
index 7094d8d7..00000000
--- a/vendor/league/plates/doc/layouts/partials/title.html
+++ /dev/null
@@ -1,11 +0,0 @@
-{{ $title := "" }}
-
-{{ if .Title }}
- {{ $title = .Title }}
-{{ else if and .IsSection .File }}
- {{ $title = path.Base .File.Dir | humanize | title }}
-{{ else if and .IsPage .File }}
- {{ $title = .File.BaseFileName | humanize | title }}
-{{ end }}
-
-{{ return $title }}
\ No newline at end of file
diff --git a/vendor/league/plates/doc/layouts/shortcodes/code-filename.html b/vendor/league/plates/doc/layouts/shortcodes/code-filename.html
deleted file mode 100644
index 0c22bc08..00000000
--- a/vendor/league/plates/doc/layouts/shortcodes/code-filename.html
+++ /dev/null
@@ -1 +0,0 @@
-{{ index .Params 0 }}
\ No newline at end of file
diff --git a/vendor/league/plates/doc/layouts/shortcodes/html.html b/vendor/league/plates/doc/layouts/shortcodes/html.html
deleted file mode 100644
index 1b4165c5..00000000
--- a/vendor/league/plates/doc/layouts/shortcodes/html.html
+++ /dev/null
@@ -1,3 +0,0 @@
-{{/* ref: https://anaulin.org/blog/hugo-raw-html-shortcode/ */}}
-
-{{.Inner}}
\ No newline at end of file
diff --git a/vendor/league/plates/doc/static/CNAME b/vendor/league/plates/doc/static/CNAME
deleted file mode 100644
index 1e00c34f..00000000
--- a/vendor/league/plates/doc/static/CNAME
+++ /dev/null
@@ -1 +0,0 @@
-platesphp.com
\ No newline at end of file
diff --git a/vendor/league/plates/doc/static/css/custom.css b/vendor/league/plates/doc/static/css/custom.css
deleted file mode 100644
index a0d462fb..00000000
--- a/vendor/league/plates/doc/static/css/custom.css
+++ /dev/null
@@ -1,23 +0,0 @@
-.github {
- position: absolute;
- top: 0;
- right: 0;
- border: 0;
- z-index: 1000;
-}
-
-@media screen and (max-width: 1065px) {
- .github {
- display: none;
- }
-}
-
-*:focus {
- outline: none;
-}
-.select2-container {
- font-family: "Museo 300";
-}
-.version-select {
- margin: 8px 25px 0px 45px;
-}
diff --git a/vendor/league/plates/doc/static/favicon/apple-touch-icon-precomposed.png b/vendor/league/plates/doc/static/favicon/apple-touch-icon-precomposed.png
deleted file mode 100644
index 460a2ba1..00000000
Binary files a/vendor/league/plates/doc/static/favicon/apple-touch-icon-precomposed.png and /dev/null differ
diff --git a/vendor/league/plates/doc/static/favicon/favicon.ico b/vendor/league/plates/doc/static/favicon/favicon.ico
deleted file mode 100644
index 44d7f3ff..00000000
Binary files a/vendor/league/plates/doc/static/favicon/favicon.ico and /dev/null differ
diff --git a/vendor/league/plates/doc/static/images/logo.png b/vendor/league/plates/doc/static/images/logo.png
deleted file mode 100644
index 19cf68a7..00000000
Binary files a/vendor/league/plates/doc/static/images/logo.png and /dev/null differ
diff --git a/vendor/league/plates/example/example.php b/vendor/league/plates/example/example.php
deleted file mode 100644
index aaffe052..00000000
--- a/vendor/league/plates/example/example.php
+++ /dev/null
@@ -1,12 +0,0 @@
-addData(['company' => 'The Company Name'], 'layout');
-
-// Render a template
-echo $templates->render('profile', ['name' => 'Jonathan']);
diff --git a/vendor/league/plates/example/templates/layout.php b/vendor/league/plates/example/templates/layout.php
deleted file mode 100644
index 5b5847cf..00000000
--- a/vendor/league/plates/example/templates/layout.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
- =$this->e($title)?> | =$this->e($company)?>
-
-
-
-=$this->section('content')?>
-
-=$this->section('scripts')?>
-
-
-
\ No newline at end of file
diff --git a/vendor/league/plates/example/templates/profile.php b/vendor/league/plates/example/templates/profile.php
deleted file mode 100644
index 0797e463..00000000
--- a/vendor/league/plates/example/templates/profile.php
+++ /dev/null
@@ -1,12 +0,0 @@
-layout('layout', ['title' => 'User Profile']) ?>
-
-User Profile
-Hello, =$this->e($name)?>!
-
-insert('sidebar') ?>
-
-push('scripts') ?>
-
-end() ?>
\ No newline at end of file
diff --git a/vendor/league/plates/example/templates/sidebar.php b/vendor/league/plates/example/templates/sidebar.php
deleted file mode 100644
index 13d9ea83..00000000
--- a/vendor/league/plates/example/templates/sidebar.php
+++ /dev/null
@@ -1,6 +0,0 @@
-
\ No newline at end of file
diff --git a/vendor/league/plates/phpunit.xml.dist b/vendor/league/plates/phpunit.xml.dist
deleted file mode 100644
index 2184ac97..00000000
--- a/vendor/league/plates/phpunit.xml.dist
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-
- ./tests
-
-
-
-
-
- src
-
-
-
-
-
-
-
-
-
-
diff --git a/vendor/league/plates/src/Engine.php b/vendor/league/plates/src/Engine.php
deleted file mode 100644
index 6c89642b..00000000
--- a/vendor/league/plates/src/Engine.php
+++ /dev/null
@@ -1,279 +0,0 @@
-directory = new Directory($directory);
- $this->fileExtension = new FileExtension($fileExtension);
- $this->folders = new Folders();
- $this->functions = new Functions();
- $this->data = new Data();
- }
-
- /**
- * Set path to templates directory.
- * @param string|null $directory Pass null to disable the default directory.
- * @return Engine
- */
- public function setDirectory($directory)
- {
- $this->directory->set($directory);
-
- return $this;
- }
-
- /**
- * Get path to templates directory.
- * @return string
- */
- public function getDirectory()
- {
- return $this->directory->get();
- }
-
- /**
- * Set the template file extension.
- * @param string|null $fileExtension Pass null to manually set it.
- * @return Engine
- */
- public function setFileExtension($fileExtension)
- {
- $this->fileExtension->set($fileExtension);
-
- return $this;
- }
-
- /**
- * Get the template file extension.
- * @return string
- */
- public function getFileExtension()
- {
- return $this->fileExtension->get();
- }
-
- /**
- * Add a new template folder for grouping templates under different namespaces.
- * @param string $name
- * @param string $directory
- * @param boolean $fallback
- * @return Engine
- */
- public function addFolder($name, $directory, $fallback = false)
- {
- $this->folders->add($name, $directory, $fallback);
-
- return $this;
- }
-
- /**
- * Remove a template folder.
- * @param string $name
- * @return Engine
- */
- public function removeFolder($name)
- {
- $this->folders->remove($name);
-
- return $this;
- }
-
- /**
- * Get collection of all template folders.
- * @return Folders
- */
- public function getFolders()
- {
- return $this->folders;
- }
-
- /**
- * Add preassigned template data.
- * @param array $data;
- * @param null|string|array $templates;
- * @return Engine
- */
- public function addData(array $data, $templates = null)
- {
- $this->data->add($data, $templates);
-
- return $this;
- }
-
- /**
- * Get all preassigned template data.
- * @param null|string $template;
- * @return array
- */
- public function getData($template = null)
- {
- return $this->data->get($template);
- }
-
- /**
- * Register a new template function.
- * @param string $name;
- * @param callback $callback;
- * @return Engine
- */
- public function registerFunction($name, $callback)
- {
- $this->functions->add($name, $callback);
-
- return $this;
- }
-
- /**
- * Remove a template function.
- * @param string $name;
- * @return Engine
- */
- public function dropFunction($name)
- {
- $this->functions->remove($name);
-
- return $this;
- }
-
- /**
- * Get a template function.
- * @param string $name
- * @return Func
- */
- public function getFunction($name)
- {
- return $this->functions->get($name);
- }
-
- /**
- * Check if a template function exists.
- * @param string $name
- * @return boolean
- */
- public function doesFunctionExist($name)
- {
- return $this->functions->exists($name);
- }
-
- /**
- * Load an extension.
- * @param ExtensionInterface $extension
- * @return Engine
- */
- public function loadExtension(ExtensionInterface $extension)
- {
- $extension->register($this);
-
- return $this;
- }
-
- /**
- * Load multiple extensions.
- * @param array $extensions
- * @return Engine
- */
- public function loadExtensions(array $extensions = array())
- {
- foreach ($extensions as $extension) {
- $this->loadExtension($extension);
- }
-
- return $this;
- }
-
- /**
- * Get a template path.
- * @param string $name
- * @return string
- */
- public function path($name)
- {
- $name = new Name($this, $name);
-
- return $name->getPath();
- }
-
- /**
- * Check if a template exists.
- * @param string $name
- * @return boolean
- */
- public function exists($name)
- {
- $name = new Name($this, $name);
-
- return $name->doesPathExist();
- }
-
- /**
- * Create a new template.
- * @param string $name
- * @return Template
- */
- public function make($name)
- {
- return new Template($this, $name);
- }
-
- /**
- * Create a new template and render it.
- * @param string $name
- * @param array $data
- * @return string
- */
- public function render($name, array $data = array())
- {
- return $this->make($name)->render($data);
- }
-}
diff --git a/vendor/league/plates/src/Extension/Asset.php b/vendor/league/plates/src/Extension/Asset.php
deleted file mode 100644
index 1db53938..00000000
--- a/vendor/league/plates/src/Extension/Asset.php
+++ /dev/null
@@ -1,85 +0,0 @@
-path = rtrim($path, '/');
- $this->filenameMethod = $filenameMethod;
- }
-
- /**
- * Register extension function.
- * @param Engine $engine
- * @return null
- */
- public function register(Engine $engine)
- {
- $engine->registerFunction('asset', array($this, 'cachedAssetUrl'));
- }
-
- /**
- * Create "cache busted" asset URL.
- * @param string $url
- * @return string
- */
- public function cachedAssetUrl($url)
- {
- $filePath = $this->path . '/' . ltrim($url, '/');
-
- if (!file_exists($filePath)) {
- throw new LogicException(
- 'Unable to locate the asset "' . $url . '" in the "' . $this->path . '" directory.'
- );
- }
-
- $lastUpdated = filemtime($filePath);
- $pathInfo = pathinfo($url);
-
- if ($pathInfo['dirname'] === '.') {
- $directory = '';
- } elseif ($pathInfo['dirname'] === DIRECTORY_SEPARATOR) {
- $directory = '/';
- } else {
- $directory = $pathInfo['dirname'] . '/';
- }
-
- if ($this->filenameMethod) {
- return $directory . $pathInfo['filename'] . '.' . $lastUpdated . '.' . $pathInfo['extension'];
- }
-
- return $directory . $pathInfo['filename'] . '.' . $pathInfo['extension'] . '?v=' . $lastUpdated;
- }
-}
diff --git a/vendor/league/plates/src/Extension/ExtensionInterface.php b/vendor/league/plates/src/Extension/ExtensionInterface.php
deleted file mode 100644
index 0164d1ea..00000000
--- a/vendor/league/plates/src/Extension/ExtensionInterface.php
+++ /dev/null
@@ -1,13 +0,0 @@
-uri = $uri;
- $this->parts = explode('/', $this->uri);
- }
-
- /**
- * Register extension functions.
- * @param Engine $engine
- * @return null
- */
- public function register(Engine $engine)
- {
- $engine->registerFunction('uri', array($this, 'runUri'));
- }
-
- /**
- * Perform URI check.
- * @param null|integer|string $var1
- * @param mixed $var2
- * @param mixed $var3
- * @param mixed $var4
- * @return mixed
- */
- public function runUri($var1 = null, $var2 = null, $var3 = null, $var4 = null)
- {
- if (is_null($var1)) {
- return $this->uri;
- }
-
- if (is_numeric($var1) and is_null($var2)) {
- return array_key_exists($var1, $this->parts) ? $this->parts[$var1] : null;
- }
-
- if (is_numeric($var1) and is_string($var2)) {
- return $this->checkUriSegmentMatch($var1, $var2, $var3, $var4);
- }
-
- if (is_string($var1)) {
- return $this->checkUriRegexMatch($var1, $var2, $var3);
- }
-
- throw new LogicException('Invalid use of the uri function.');
- }
-
- /**
- * Perform a URI segment match.
- * @param integer $key
- * @param string $string
- * @param mixed $returnOnTrue
- * @param mixed $returnOnFalse
- * @return mixed
- */
- protected function checkUriSegmentMatch($key, $string, $returnOnTrue = null, $returnOnFalse = null)
- {
- if (array_key_exists($key, $this->parts) && $this->parts[$key] === $string) {
- return is_null($returnOnTrue) ? true : $returnOnTrue;
- }
-
- return is_null($returnOnFalse) ? false : $returnOnFalse;
- }
-
- /**
- * Perform a regular express match.
- * @param string $regex
- * @param mixed $returnOnTrue
- * @param mixed $returnOnFalse
- * @return mixed
- */
- protected function checkUriRegexMatch($regex, $returnOnTrue = null, $returnOnFalse = null)
- {
- if (preg_match('#^' . $regex . '$#', $this->uri) === 1) {
- return is_null($returnOnTrue) ? true : $returnOnTrue;
- }
-
- return is_null($returnOnFalse) ? false : $returnOnFalse;
- }
-}
diff --git a/vendor/league/plates/src/Template/Data.php b/vendor/league/plates/src/Template/Data.php
deleted file mode 100644
index aa4d1e1e..00000000
--- a/vendor/league/plates/src/Template/Data.php
+++ /dev/null
@@ -1,93 +0,0 @@
-shareWithAll($data);
- }
-
- if (is_array($templates)) {
- return $this->shareWithSome($data, $templates);
- }
-
- if (is_string($templates)) {
- return $this->shareWithSome($data, array($templates));
- }
-
- throw new LogicException(
- 'The templates variable must be null, an array or a string, ' . gettype($templates) . ' given.'
- );
- }
-
- /**
- * Add data shared with all templates.
- * @param array $data;
- * @return Data
- */
- public function shareWithAll($data)
- {
- $this->sharedVariables = array_merge($this->sharedVariables, $data);
-
- return $this;
- }
-
- /**
- * Add data shared with some templates.
- * @param array $data;
- * @param array $templates;
- * @return Data
- */
- public function shareWithSome($data, array $templates)
- {
- foreach ($templates as $template) {
- if (isset($this->templateVariables[$template])) {
- $this->templateVariables[$template] = array_merge($this->templateVariables[$template], $data);
- } else {
- $this->templateVariables[$template] = $data;
- }
- }
-
- return $this;
- }
-
- /**
- * Get template data.
- * @param null|string $template;
- * @return array
- */
- public function get($template = null)
- {
- if (isset($template, $this->templateVariables[$template])) {
- return array_merge($this->sharedVariables, $this->templateVariables[$template]);
- }
-
- return $this->sharedVariables;
- }
-}
diff --git a/vendor/league/plates/src/Template/Directory.php b/vendor/league/plates/src/Template/Directory.php
deleted file mode 100644
index f5de5374..00000000
--- a/vendor/league/plates/src/Template/Directory.php
+++ /dev/null
@@ -1,53 +0,0 @@
-set($path);
- }
-
- /**
- * Set path to templates directory.
- * @param string|null $path Pass null to disable the default directory.
- * @return Directory
- */
- public function set($path)
- {
- if (!is_null($path) and !is_dir($path)) {
- throw new LogicException(
- 'The specified path "' . $path . '" does not exist.'
- );
- }
-
- $this->path = $path;
-
- return $this;
- }
-
- /**
- * Get path to templates directory.
- * @return string
- */
- public function get()
- {
- return $this->path;
- }
-}
diff --git a/vendor/league/plates/src/Template/FileExtension.php b/vendor/league/plates/src/Template/FileExtension.php
deleted file mode 100644
index 57646bdd..00000000
--- a/vendor/league/plates/src/Template/FileExtension.php
+++ /dev/null
@@ -1,45 +0,0 @@
-set($fileExtension);
- }
-
- /**
- * Set the template file extension.
- * @param null|string $fileExtension
- * @return FileExtension
- */
- public function set($fileExtension)
- {
- $this->fileExtension = $fileExtension;
-
- return $this;
- }
-
- /**
- * Get the template file extension.
- * @return string
- */
- public function get()
- {
- return $this->fileExtension;
- }
-}
diff --git a/vendor/league/plates/src/Template/Folder.php b/vendor/league/plates/src/Template/Folder.php
deleted file mode 100644
index 01fcbdd2..00000000
--- a/vendor/league/plates/src/Template/Folder.php
+++ /dev/null
@@ -1,109 +0,0 @@
-setName($name);
- $this->setPath($path);
- $this->setFallback($fallback);
- }
-
- /**
- * Set the folder name.
- * @param string $name
- * @return Folder
- */
- public function setName($name)
- {
- $this->name = $name;
-
- return $this;
- }
-
- /**
- * Get the folder name.
- * @return string
- */
- public function getName()
- {
- return $this->name;
- }
-
- /**
- * Set the folder path.
- * @param string $path
- * @return Folder
- */
- public function setPath($path)
- {
- if (!is_dir($path)) {
- throw new LogicException('The specified directory path "' . $path . '" does not exist.');
- }
-
- $this->path = $path;
-
- return $this;
- }
-
- /**
- * Get the folder path.
- * @return string
- */
- public function getPath()
- {
- return $this->path;
- }
-
- /**
- * Set the folder fallback status.
- * @param boolean $fallback
- * @return Folder
- */
- public function setFallback($fallback)
- {
- $this->fallback = $fallback;
-
- return $this;
- }
-
- /**
- * Get the folder fallback status.
- * @return boolean
- */
- public function getFallback()
- {
- return $this->fallback;
- }
-}
diff --git a/vendor/league/plates/src/Template/Folders.php b/vendor/league/plates/src/Template/Folders.php
deleted file mode 100644
index 9bf266a7..00000000
--- a/vendor/league/plates/src/Template/Folders.php
+++ /dev/null
@@ -1,75 +0,0 @@
-exists($name)) {
- throw new LogicException('The template folder "' . $name . '" is already being used.');
- }
-
- $this->folders[$name] = new Folder($name, $path, $fallback);
-
- return $this;
- }
-
- /**
- * Remove a template folder.
- * @param string $name
- * @return Folders
- */
- public function remove($name)
- {
- if (!$this->exists($name)) {
- throw new LogicException('The template folder "' . $name . '" was not found.');
- }
-
- unset($this->folders[$name]);
-
- return $this;
- }
-
- /**
- * Get a template folder.
- * @param string $name
- * @return Folder
- */
- public function get($name)
- {
- if (!$this->exists($name)) {
- throw new LogicException('The template folder "' . $name . '" was not found.');
- }
-
- return $this->folders[$name];
- }
-
- /**
- * Check if a template folder exists.
- * @param string $name
- * @return boolean
- */
- public function exists($name)
- {
- return isset($this->folders[$name]);
- }
-}
diff --git a/vendor/league/plates/src/Template/Func.php b/vendor/league/plates/src/Template/Func.php
deleted file mode 100644
index 79141f46..00000000
--- a/vendor/league/plates/src/Template/Func.php
+++ /dev/null
@@ -1,107 +0,0 @@
-setName($name);
- $this->setCallback($callback);
- }
-
- /**
- * Set the function name.
- * @param string $name
- * @return Func
- */
- public function setName($name)
- {
- if (preg_match('/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$/', $name) !== 1) {
- throw new LogicException(
- 'Not a valid function name.'
- );
- }
-
- $this->name = $name;
-
- return $this;
- }
-
- /**
- * Get the function name.
- * @return string
- */
- public function getName()
- {
- return $this->name;
- }
-
- /**
- * Set the function callback
- * @param callable $callback
- * @return Func
- */
- public function setCallback($callback)
- {
- if (!is_callable($callback, true)) {
- throw new LogicException(
- 'Not a valid function callback.'
- );
- }
-
- $this->callback = $callback;
-
- return $this;
- }
-
- /**
- * Get the function callback.
- * @return callable
- */
- public function getCallback()
- {
- return $this->callback;
- }
-
- /**
- * Call the function.
- * @param Template $template
- * @param array $arguments
- * @return mixed
- */
- public function call(Template $template = null, $arguments = array())
- {
- if (is_array($this->callback) and
- isset($this->callback[0]) and
- $this->callback[0] instanceof ExtensionInterface
- ) {
- $this->callback[0]->template = $template;
- }
-
- return call_user_func_array($this->callback, $arguments);
- }
-}
diff --git a/vendor/league/plates/src/Template/Functions.php b/vendor/league/plates/src/Template/Functions.php
deleted file mode 100644
index e0e4c2c1..00000000
--- a/vendor/league/plates/src/Template/Functions.php
+++ /dev/null
@@ -1,78 +0,0 @@
-exists($name)) {
- throw new LogicException(
- 'The template function name "' . $name . '" is already registered.'
- );
- }
-
- $this->functions[$name] = new Func($name, $callback);
-
- return $this;
- }
-
- /**
- * Remove a template function.
- * @param string $name;
- * @return Functions
- */
- public function remove($name)
- {
- if (!$this->exists($name)) {
- throw new LogicException(
- 'The template function "' . $name . '" was not found.'
- );
- }
-
- unset($this->functions[$name]);
-
- return $this;
- }
-
- /**
- * Get a template function.
- * @param string $name
- * @return Func
- */
- public function get($name)
- {
- if (!$this->exists($name)) {
- throw new LogicException('The template function "' . $name . '" was not found.');
- }
-
- return $this->functions[$name];
- }
-
- /**
- * Check if a template function exists.
- * @param string $name
- * @return boolean
- */
- public function exists($name)
- {
- return isset($this->functions[$name]);
- }
-}
diff --git a/vendor/league/plates/src/Template/Name.php b/vendor/league/plates/src/Template/Name.php
deleted file mode 100644
index a866923d..00000000
--- a/vendor/league/plates/src/Template/Name.php
+++ /dev/null
@@ -1,206 +0,0 @@
-setEngine($engine);
- $this->setName($name);
- }
-
- /**
- * Set the engine.
- * @param Engine $engine
- * @return Name
- */
- public function setEngine(Engine $engine)
- {
- $this->engine = $engine;
-
- return $this;
- }
-
- /**
- * Get the engine.
- * @return Engine
- */
- public function getEngine()
- {
- return $this->engine;
- }
-
- /**
- * Set the original name and parse it.
- * @param string $name
- * @return Name
- */
- public function setName($name)
- {
- $this->name = $name;
-
- $parts = explode('::', $this->name);
-
- if (count($parts) === 1) {
- $this->setFile($parts[0]);
- } elseif (count($parts) === 2) {
- $this->setFolder($parts[0]);
- $this->setFile($parts[1]);
- } else {
- throw new LogicException(
- 'The template name "' . $this->name . '" is not valid. ' .
- 'Do not use the folder namespace separator "::" more than once.'
- );
- }
-
- return $this;
- }
-
- /**
- * Get the original name.
- * @return string
- */
- public function getName()
- {
- return $this->name;
- }
-
- /**
- * Set the parsed template folder.
- * @param string $folder
- * @return Name
- */
- public function setFolder($folder)
- {
- $this->folder = $this->engine->getFolders()->get($folder);
-
- return $this;
- }
-
- /**
- * Get the parsed template folder.
- * @return string
- */
- public function getFolder()
- {
- return $this->folder;
- }
-
- /**
- * Set the parsed template file.
- * @param string $file
- * @return Name
- */
- public function setFile($file)
- {
- if ($file === '') {
- throw new LogicException(
- 'The template name "' . $this->name . '" is not valid. ' .
- 'The template name cannot be empty.'
- );
- }
-
- $this->file = $file;
-
- if (!is_null($this->engine->getFileExtension())) {
- $this->file .= '.' . $this->engine->getFileExtension();
- }
-
- return $this;
- }
-
- /**
- * Get the parsed template file.
- * @return string
- */
- public function getFile()
- {
- return $this->file;
- }
-
- /**
- * Resolve template path.
- * @return string
- */
- public function getPath()
- {
- if (is_null($this->folder)) {
- return "{$this->getDefaultDirectory()}/{$this->file}";
- }
-
- $path = "{$this->folder->getPath()}/{$this->file}";
-
- if (
- !is_file($path)
- && $this->folder->getFallback()
- && is_file("{$this->getDefaultDirectory()}/{$this->file}")
- ) {
- $path = "{$this->getDefaultDirectory()}/{$this->file}";
- }
-
- return $path;
- }
-
- /**
- * Check if template path exists.
- * @return boolean
- */
- public function doesPathExist()
- {
- return is_file($this->getPath());
- }
-
- /**
- * Get the default templates directory.
- * @return string
- */
- protected function getDefaultDirectory()
- {
- $directory = $this->engine->getDirectory();
-
- if (is_null($directory)) {
- throw new LogicException(
- 'The template name "' . $this->name . '" is not valid. '.
- 'The default directory has not been defined.'
- );
- }
-
- return $directory;
- }
-}
diff --git a/vendor/league/plates/src/Template/Template.php b/vendor/league/plates/src/Template/Template.php
deleted file mode 100644
index 64ee4387..00000000
--- a/vendor/league/plates/src/Template/Template.php
+++ /dev/null
@@ -1,384 +0,0 @@
-engine = $engine;
- $this->name = new Name($engine, $name);
-
- $this->data($this->engine->getData($name));
- }
-
- /**
- * Magic method used to call extension functions.
- * @param string $name
- * @param array $arguments
- * @return mixed
- */
- public function __call($name, $arguments)
- {
- return $this->engine->getFunction($name)->call($this, $arguments);
- }
-
- /**
- * Alias for render() method.
- * @throws \Throwable
- * @throws \Exception
- * @return string
- */
- public function __toString()
- {
- return $this->render();
- }
-
- /**
- * Assign or get template data.
- * @param array $data
- * @return mixed
- */
- public function data(array $data = null)
- {
- if (is_null($data)) {
- return $this->data;
- }
-
- $this->data = array_merge($this->data, $data);
- }
-
- /**
- * Check if the template exists.
- * @return boolean
- */
- public function exists()
- {
- return $this->name->doesPathExist();
- }
-
- /**
- * Get the template path.
- * @return string
- */
- public function path()
- {
- return $this->name->getPath();
- }
-
- /**
- * Render the template and layout.
- * @param array $data
- * @throws \Throwable
- * @throws \Exception
- * @return string
- */
- public function render(array $data = array())
- {
- $this->data($data);
- unset($data);
- extract($this->data);
-
- if (!$this->exists()) {
- throw new LogicException(
- 'The template "' . $this->name->getName() . '" could not be found at "' . $this->path() . '".'
- );
- }
-
- try {
- $level = ob_get_level();
- ob_start();
-
- include $this->path();
-
- $content = ob_get_clean();
-
- if (isset($this->layoutName)) {
- $layout = $this->engine->make($this->layoutName);
- $layout->sections = array_merge($this->sections, array('content' => $content));
- $content = $layout->render($this->layoutData);
- }
-
- return $content;
- } catch (Throwable $e) {
- while (ob_get_level() > $level) {
- ob_end_clean();
- }
-
- throw $e;
- } catch (Exception $e) {
- while (ob_get_level() > $level) {
- ob_end_clean();
- }
-
- throw $e;
- }
- }
-
- /**
- * Set the template's layout.
- * @param string $name
- * @param array $data
- * @return null
- */
- public function layout($name, array $data = array())
- {
- $this->layoutName = $name;
- $this->layoutData = $data;
- }
-
- /**
- * Start a new section block.
- * @param string $name
- * @return null
- */
- public function start($name)
- {
- if ($name === 'content') {
- throw new LogicException(
- 'The section name "content" is reserved.'
- );
- }
-
- if ($this->sectionName) {
- throw new LogicException('You cannot nest sections within other sections.');
- }
-
- $this->sectionName = $name;
-
- ob_start();
- }
-
- /**
- * Start a new section block in APPEND mode.
- * @param string $name
- * @return null
- */
- public function push($name)
- {
- $this->appendSection = true; /* for backward compatibility */
- $this->sectionMode = self::SECTION_MODE_APPEND;
- $this->start($name);
- }
-
- /**
- * Start a new section block in PREPEND mode.
- * @param string $name
- * @return null
- */
- public function unshift($name)
- {
- $this->appendSection = false; /* for backward compatibility */
- $this->sectionMode = self::SECTION_MODE_PREPEND;
- $this->start($name);
- }
-
- /**
- * Stop the current section block.
- * @return null
- */
- public function stop()
- {
- if (is_null($this->sectionName)) {
- throw new LogicException(
- 'You must start a section before you can stop it.'
- );
- }
-
- if (!isset($this->sections[$this->sectionName])) {
- $this->sections[$this->sectionName] = '';
- }
-
- switch ($this->sectionMode) {
-
- case self::SECTION_MODE_REWRITE:
- $this->sections[$this->sectionName] = ob_get_clean();
- break;
-
- case self::SECTION_MODE_APPEND:
- $this->sections[$this->sectionName] .= ob_get_clean();
- break;
-
- case self::SECTION_MODE_PREPEND:
- $this->sections[$this->sectionName] = ob_get_clean().$this->sections[$this->sectionName];
- break;
-
- }
- $this->sectionName = null;
- $this->sectionMode = self::SECTION_MODE_REWRITE;
- $this->appendSection = false; /* for backward compatibility */
- }
-
- /**
- * Alias of stop().
- * @return null
- */
- public function end()
- {
- $this->stop();
- }
-
- /**
- * Returns the content for a section block.
- * @param string $name Section name
- * @param string $default Default section content
- * @return string|null
- */
- public function section($name, $default = null)
- {
- if (!isset($this->sections[$name])) {
- return $default;
- }
-
- return $this->sections[$name];
- }
-
- /**
- * Fetch a rendered template.
- * @param string $name
- * @param array $data
- * @return string
- */
- public function fetch($name, array $data = array())
- {
- return $this->engine->render($name, $data);
- }
-
- /**
- * Output a rendered template.
- * @param string $name
- * @param array $data
- * @return null
- */
- public function insert($name, array $data = array())
- {
- echo $this->engine->render($name, $data);
- }
-
- /**
- * Apply multiple functions to variable.
- * @param mixed $var
- * @param string $functions
- * @return mixed
- */
- public function batch($var, $functions)
- {
- foreach (explode('|', $functions) as $function) {
- if ($this->engine->doesFunctionExist($function)) {
- $var = call_user_func(array($this, $function), $var);
- } elseif (is_callable($function)) {
- $var = call_user_func($function, $var);
- } else {
- throw new LogicException(
- 'The batch function could not find the "' . $function . '" function.'
- );
- }
- }
-
- return $var;
- }
-
- /**
- * Escape string.
- * @param string $string
- * @param null|string $functions
- * @return string
- */
- public function escape($string, $functions = null)
- {
- static $flags;
-
- if (!isset($flags)) {
- $flags = ENT_QUOTES | (defined('ENT_SUBSTITUTE') ? ENT_SUBSTITUTE : 0);
- }
-
- if ($functions) {
- $string = $this->batch($string, $functions);
- }
-
- return htmlspecialchars($string, $flags, 'UTF-8');
- }
-
- /**
- * Alias to escape function.
- * @param string $string
- * @param null|string $functions
- * @return string
- */
- public function e($string, $functions = null)
- {
- return $this->escape($string, $functions);
- }
-}
diff --git a/vendor/microsoft/tolerant-php-parser/LICENSE.txt b/vendor/microsoft/tolerant-php-parser/LICENSE.txt
deleted file mode 100644
index 79918eb7..00000000
--- a/vendor/microsoft/tolerant-php-parser/LICENSE.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-Copyright (c) Microsoft Corporation
-
-All rights reserved.
-
-MIT License
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
-modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
-OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vendor/microsoft/tolerant-php-parser/ThirdPartyNotices.txt b/vendor/microsoft/tolerant-php-parser/ThirdPartyNotices.txt
deleted file mode 100644
index d712c991..00000000
--- a/vendor/microsoft/tolerant-php-parser/ThirdPartyNotices.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-Microsoft/tolerant-php-parser
-
-THIRD-PARTY SOFTWARE NOTICES AND INFORMATION
-Do Not Translate or Localize
-
-This project incorporates components from the projects listed below. The original copyright notices and the licenses under which Microsoft received such components are set forth below. Microsoft reserves all rights not expressly granted herein, whether by implication, estoppel or otherwise.
-
-1. php/php-langspec (https://github.com/php/php-langspec)
-
-
-%% php/php-langspec NOTICES AND INFORMATION BEGIN HERE
-=========================================
-Facebook has dedicated all copyright to this specification to the public
-domain worldwide under the CC0 Public Domain Dedication located at
- .
-
-The first draft of this specification was initially written in 2014 by
-Facebook, Inc.
-
-This specification is distributed without any warranty.
-=========================================
-END OF php/php-langspec NOTICES AND INFORMATION
diff --git a/vendor/microsoft/tolerant-php-parser/composer.json b/vendor/microsoft/tolerant-php-parser/composer.json
deleted file mode 100644
index 91df816a..00000000
--- a/vendor/microsoft/tolerant-php-parser/composer.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "name": "microsoft/tolerant-php-parser",
- "description": "Tolerant PHP-to-AST parser designed for IDE usage scenarios",
- "type": "library",
- "require": {
- "php": ">=7.2"
- },
- "require-dev": {
- "phpunit/phpunit": "^8.5.15"
- },
- "license": "MIT",
- "authors": [
- {
- "name": "Rob Lourens",
- "email": "roblou@microsoft.com"
- }
- ],
- "autoload": {
- "psr-4": { "Microsoft\\PhpParser\\": ["src/"] }
- }
-}
diff --git a/vendor/microsoft/tolerant-php-parser/phpstan.neon b/vendor/microsoft/tolerant-php-parser/phpstan.neon
deleted file mode 100644
index 3d24b87a..00000000
--- a/vendor/microsoft/tolerant-php-parser/phpstan.neon
+++ /dev/null
@@ -1,7 +0,0 @@
-parameters:
- level: 2
- paths:
- - src/
- ignoreErrors:
- # phpstan issue, see: https://github.com/phpstan/phpstan/issues/1306
- - "/Variable .unaryExpression might not be defined./"
diff --git a/vendor/microsoft/tolerant-php-parser/src/CharacterCodes.php b/vendor/microsoft/tolerant-php-parser/src/CharacterCodes.php
deleted file mode 100644
index c411ed60..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/CharacterCodes.php
+++ /dev/null
@@ -1,116 +0,0 @@
-
- const _hash = 0x23; // #
- const _lessThan = 0x3C; // <
- const _minus = 0x2D; // -
- const _openBrace = 0x7B; // {
- const _openBracket = 0x5B; // [
- const _openParen = 0x28; // (
- const _percent = 0x25; // %
- const _plus = 0x2B; // +
- const _question = 0x3F; // ?
- const _semicolon = 0x3B; // ;
- const _singleQuote = 0x27; // '
- const _slash = 0x2F; // /
- const _tilde = 0x7E; // ~
-
- const _backspace = 0x08; // \b
- const _formFeed = 0x0C; // \f
- const _byteOrderMark = 0xFEFF;
- const _space = 0x20;
- const _newline = 0x0A; // \n
- const _return = 0x0D; // \r
- const _tab = 0x09; // \t
- const _verticalTab = 0x0B; // \v
-}
diff --git a/vendor/microsoft/tolerant-php-parser/src/ClassLike.php b/vendor/microsoft/tolerant-php-parser/src/ClassLike.php
deleted file mode 100644
index 08b7fa8d..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/ClassLike.php
+++ /dev/null
@@ -1,12 +0,0 @@
-kind = $kind;
- $this->message = $message;
- $this->start = $start;
- $this->length = $length;
- }
-}
diff --git a/vendor/microsoft/tolerant-php-parser/src/DiagnosticKind.php b/vendor/microsoft/tolerant-php-parser/src/DiagnosticKind.php
deleted file mode 100644
index 012db9d0..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/DiagnosticKind.php
+++ /dev/null
@@ -1,12 +0,0 @@
-getDiagnosticForNode();
- }
- return null;
- }
-
- /**
- * @param Token $token
- * @return Diagnostic|null
- */
- private static function checkDiagnosticForUnexpectedToken($token) {
- if ($token instanceof SkippedToken) {
- // TODO - consider also attaching parse context information to skipped tokens
- // this would allow us to provide more helpful error messages that inform users what to do
- // about the problem rather than simply pointing out the mistake.
- return new Diagnostic(
- DiagnosticKind::Error,
- "Unexpected '" .
- (self::$tokenKindToText[$token->kind]
- ?? Token::getTokenKindNameFromValue($token->kind)) .
- "'",
- $token->start,
- $token->getEndPosition() - $token->start
- );
- } elseif ($token instanceof MissingToken) {
- return new Diagnostic(
- DiagnosticKind::Error,
- "'" .
- (self::$tokenKindToText[$token->kind]
- ?? Token::getTokenKindNameFromValue($token->kind)) .
- "' expected.",
- $token->start,
- $token->getEndPosition() - $token->start
- );
- }
- return null;
- }
-
- /**
- * Traverses AST to generate diagnostics.
- * @param \Microsoft\PhpParser\Node $n
- * @return Diagnostic[]
- */
- public static function getDiagnostics(Node $n) : array {
- $diagnostics = [];
-
- /**
- * @param \Microsoft\PhpParser\Node|\Microsoft\PhpParser\Token $node
- */
- $n->walkDescendantNodesAndTokens(function($node) use (&$diagnostics) {
- if (($diagnostic = self::checkDiagnostics($node)) !== null) {
- $diagnostics[] = $diagnostic;
- }
- });
-
- return $diagnostics;
- }
-}
-
-DiagnosticsProvider::initTokenKindToText();
diff --git a/vendor/microsoft/tolerant-php-parser/src/FilePositionMap.php b/vendor/microsoft/tolerant-php-parser/src/FilePositionMap.php
deleted file mode 100644
index c6c9f479..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/FilePositionMap.php
+++ /dev/null
@@ -1,115 +0,0 @@
-currentOffset (updated whenever currentOffset is updated) */
- private $lineForCurrentOffset;
-
- public function __construct(string $file_contents) {
- $this->fileContents = $file_contents;
- $this->fileContentsLength = \strlen($file_contents);
- $this->currentOffset = 0;
- $this->lineForCurrentOffset = 1;
- }
-
- /**
- * @param Node|Token $node
- */
- public function getStartLine($node) : int {
- return $this->getLineNumberForOffset($node->getStartPosition());
- }
-
- /**
- * @param Node|Token $node
- * Similar to getStartLine but includes the column
- */
- public function getStartLineCharacterPositionForOffset($node) : LineCharacterPosition {
- return $this->getLineCharacterPositionForOffset($node->getStartPosition());
- }
-
- /** @param Node|Token $node */
- public function getEndLine($node) : int {
- return $this->getLineNumberForOffset($node->getEndPosition());
- }
-
- /**
- * @param Node|Token $node
- * Similar to getStartLine but includes the column
- */
- public function getEndLineCharacterPosition($node) : LineCharacterPosition {
- return $this->getLineCharacterPositionForOffset($node->getEndPosition());
- }
-
- /**
- * @param int $offset
- * Similar to getStartLine but includes both the line and the column
- */
- public function getLineCharacterPositionForOffset(int $offset) : LineCharacterPosition {
- $line = $this->getLineNumberForOffset($offset);
- $character = $this->getColumnForOffset($offset);
- return new LineCharacterPosition($line, $character);
- }
-
- /**
- * @param int $offset - A 0-based byte offset
- * @return int - gets the 1-based line number for $offset
- */
- public function getLineNumberForOffset(int $offset) : int {
- if ($offset < 0) {
- $offset = 0;
- } elseif ($offset > $this->fileContentsLength) {
- $offset = $this->fileContentsLength;
- }
- $currentOffset = $this->currentOffset;
- if ($offset > $currentOffset) {
- $this->lineForCurrentOffset += \substr_count($this->fileContents, "\n", $currentOffset, $offset - $currentOffset);
- $this->currentOffset = $offset;
- } elseif ($offset < $currentOffset) {
- $this->lineForCurrentOffset -= \substr_count($this->fileContents, "\n", $offset, $currentOffset - $offset);
- $this->currentOffset = $offset;
- }
- return $this->lineForCurrentOffset;
- }
-
- /**
- * @param int $offset - A 0-based byte offset
- * @return int - gets the 1-based column number for $offset
- */
- public function getColumnForOffset(int $offset) : int {
- $length = $this->fileContentsLength;
- if ($offset <= 1) {
- return 1;
- } elseif ($offset > $length) {
- $offset = $length;
- }
- // Postcondition: offset >= 1, ($lastNewlinePos < $offset)
- // If there was no previous newline, lastNewlinePos = 0
-
- // Start strrpos check from the character before the current character,
- // in case the current character is a newline.
- $lastNewlinePos = \strrpos($this->fileContents, "\n", -$length + $offset - 1);
- return 1 + $offset - ($lastNewlinePos === false ? 0 : $lastNewlinePos + 1);
- }
-}
diff --git a/vendor/microsoft/tolerant-php-parser/src/FunctionLike.php b/vendor/microsoft/tolerant-php-parser/src/FunctionLike.php
deleted file mode 100644
index 5ef91b52..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/FunctionLike.php
+++ /dev/null
@@ -1,17 +0,0 @@
-line = $line;
- $this->character = $character;
- }
-}
diff --git a/vendor/microsoft/tolerant-php-parser/src/MissingToken.php b/vendor/microsoft/tolerant-php-parser/src/MissingToken.php
deleted file mode 100644
index 177b46be..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/MissingToken.php
+++ /dev/null
@@ -1,23 +0,0 @@
- $this->getTokenKindNameFromValue(TokenKind::MissingToken)],
- parent::jsonSerialize()
- );
- }
-}
diff --git a/vendor/microsoft/tolerant-php-parser/src/ModifiedTypeInterface.php b/vendor/microsoft/tolerant-php-parser/src/ModifiedTypeInterface.php
deleted file mode 100644
index f04ca238..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/ModifiedTypeInterface.php
+++ /dev/null
@@ -1,16 +0,0 @@
-modifiers === null) {
- return false;
- }
-
- foreach ($this->modifiers as $modifier) {
- if ($modifier->kind === $targetModifier) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Convenience method to check for the existence of the "public" modifier.
- * Does not necessarily need to be defined for that type.
- *
- * @return bool
- */
- public function isPublic(): bool {
- return $this->hasModifier(TokenKind::PublicKeyword);
- }
-
- /**
- * Convenience method to check for the existence of the "static" modifier.
- * Does not necessarily need to be defined for that type.
- *
- * @return bool
- */
- public function isStatic(): bool {
- return $this->hasModifier(TokenKind::StaticKeyword);
- }
-}
diff --git a/vendor/microsoft/tolerant-php-parser/src/NamespacedNameInterface.php b/vendor/microsoft/tolerant-php-parser/src/NamespacedNameInterface.php
deleted file mode 100644
index d4431d50..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/NamespacedNameInterface.php
+++ /dev/null
@@ -1,11 +0,0 @@
-getNamespaceDefinition();
- $content = $this->getFileContents();
- if ($namespaceDefinition === null) {
- // global namespace -> strip namespace\ prefix
- return ResolvedName::buildName($this->getNameParts(), $content);
- }
-
- if ($namespaceDefinition->name !== null) {
- $resolvedName = ResolvedName::buildName($namespaceDefinition->name->nameParts, $content);
- } else {
- $resolvedName = ResolvedName::buildName([], $content);
- }
- if (
- !($this instanceof QualifiedName && (
- ($this->parent instanceof NamespaceDefinition) ||
- ($this->parent instanceof NamespaceUseDeclaration) ||
- ($this->parent instanceof NamespaceUseClause) ||
- ($this->parent instanceof NamespaceUseGroupClause)))
- ) {
- $resolvedName->addNameParts($this->getNameParts(), $content);
- }
- return $resolvedName;
- }
-}
\ No newline at end of file
diff --git a/vendor/microsoft/tolerant-php-parser/src/Node.php b/vendor/microsoft/tolerant-php-parser/src/Node.php
deleted file mode 100644
index d1288876..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/Node.php
+++ /dev/null
@@ -1,686 +0,0 @@
-getChildNodesAndTokens()->current()->getStartPosition();
- }
-
- /**
- * Gets start position of Node, including leading comments and whitespace
- * @return int
- * @throws \Exception
- */
- public function getFullStartPosition() : int {
- foreach($this::CHILD_NAMES as $name) {
-
- if (($child = $this->$name) !== null) {
-
- if (\is_array($child)) {
- if(!isset($child[0])) {
- continue;
- }
- $child = $child[0];
- }
-
- return $child->getFullStartPosition();
- }
- };
-
- throw new \RuntimeException("Could not resolve full start position");
- }
-
- /**
- * Gets parent of current node (returns null if has no parent)
- * @return null|Node
- */
- public function getParent() {
- return $this->parent;
- }
-
- /**
- * Gets first ancestor that is an instance of one of the provided classes.
- * Returns null if there is no match.
- *
- * @param string ...$classNames
- * @return Node|null
- */
- public function getFirstAncestor(...$classNames) {
- $ancestor = $this;
- while (($ancestor = $ancestor->parent) !== null) {
- foreach ($classNames as $className) {
- if ($ancestor instanceof $className) {
- return $ancestor;
- }
- }
- }
- return null;
- }
-
- /**
- * Gets first child that is an instance of one of the provided classes.
- * Returns null if there is no match.
- *
- * @param array ...$classNames
- * @return Node|null
- */
- public function getFirstChildNode(...$classNames) {
- foreach ($this::CHILD_NAMES as $name) {
- $val = $this->$name;
- foreach ($classNames as $className) {
- if (\is_array($val)) {
- foreach ($val as $child) {
- if ($child instanceof $className) {
- return $child;
- }
- }
- continue;
- } elseif ($val instanceof $className) {
- return $val;
- }
- }
- }
- return null;
- }
-
- /**
- * Gets first descendant node that is an instance of one of the provided classes.
- * Returns null if there is no match.
- *
- * @param array ...$classNames
- * @return Node|null
- */
- public function getFirstDescendantNode(...$classNames) {
- foreach ($this->getDescendantNodes() as $descendant) {
- foreach ($classNames as $className) {
- if ($descendant instanceof $className) {
- return $descendant;
- }
- }
- }
- return null;
- }
-
- /**
- * Gets root of the syntax tree (returns self if has no parents)
- * @return SourceFileNode (expect root to be SourceFileNode unless the tree was manipulated)
- */
- public function getRoot() : Node {
- $node = $this;
- while ($node->parent !== null) {
- $node = $node->parent;
- }
- return $node;
- }
-
- /**
- * Gets generator containing all descendant Nodes and Tokens.
- *
- * @param callable|null $shouldDescendIntoChildrenFn
- * @return \Generator|Node[]|Token[]
- */
- public function getDescendantNodesAndTokens(callable $shouldDescendIntoChildrenFn = null) {
- // TODO - write unit tests to prove invariants
- // (concatenating all descendant Tokens should produce document, concatenating all Nodes should produce document)
- foreach ($this->getChildNodesAndTokens() as $child) {
- // Check possible types of $child, most frequent first
- if ($child instanceof Node) {
- yield $child;
- if ($shouldDescendIntoChildrenFn === null || $shouldDescendIntoChildrenFn($child)) {
- yield from $child->getDescendantNodesAndTokens($shouldDescendIntoChildrenFn);
- }
- } elseif ($child instanceof Token) {
- yield $child;
- }
- }
- }
-
- /**
- * Iterate over all descendant Nodes and Tokens, calling $callback.
- * This can often be faster than getDescendantNodesAndTokens
- * if you just need to call something and don't need a generator.
- *
- * @param callable $callback a callback that accepts Node|Token
- * @param callable|null $shouldDescendIntoChildrenFn
- * @return void
- */
- public function walkDescendantNodesAndTokens(callable $callback, callable $shouldDescendIntoChildrenFn = null) {
- // TODO - write unit tests to prove invariants
- // (concatenating all descendant Tokens should produce document, concatenating all Nodes should produce document)
- foreach (static::CHILD_NAMES as $name) {
- $child = $this->$name;
- // Check possible types of $child, most frequent first
- if ($child instanceof Token) {
- $callback($child);
- } elseif ($child instanceof Node) {
- $callback($child);
- if ($shouldDescendIntoChildrenFn === null || $shouldDescendIntoChildrenFn($child)) {
- $child->walkDescendantNodesAndTokens($callback, $shouldDescendIntoChildrenFn);
- }
- } elseif (\is_array($child)) {
- foreach ($child as $childElement) {
- if ($childElement instanceof Token) {
- $callback($childElement);
- } elseif ($childElement instanceof Node) {
- $callback($childElement);
- if ($shouldDescendIntoChildrenFn === null || $shouldDescendIntoChildrenFn($childElement)) {
- $childElement->walkDescendantNodesAndTokens($callback, $shouldDescendIntoChildrenFn);
- }
- }
- }
- }
- }
- }
-
- /**
- * Gets a generator containing all descendant Nodes.
- * @param callable|null $shouldDescendIntoChildrenFn
- * @return \Generator|Node[]
- */
- public function getDescendantNodes(callable $shouldDescendIntoChildrenFn = null) {
- foreach ($this->getChildNodes() as $child) {
- yield $child;
- if ($shouldDescendIntoChildrenFn === null || $shouldDescendIntoChildrenFn($child)) {
- yield from $child->getDescendantNodes($shouldDescendIntoChildrenFn);
- }
- }
- }
-
- /**
- * Gets generator containing all descendant Tokens.
- * @param callable|null $shouldDescendIntoChildrenFn
- * @return \Generator|Token[]
- */
- public function getDescendantTokens(callable $shouldDescendIntoChildrenFn = null) {
- foreach ($this->getChildNodesAndTokens() as $child) {
- if ($child instanceof Node) {
- if ($shouldDescendIntoChildrenFn == null || $shouldDescendIntoChildrenFn($child)) {
- yield from $child->getDescendantTokens($shouldDescendIntoChildrenFn);
- }
- } elseif ($child instanceof Token) {
- yield $child;
- }
- }
- }
-
- /**
- * Gets generator containing all child Nodes and Tokens (direct descendants).
- * Does not return null elements.
- *
- * @return \Generator|Token[]|Node[]
- */
- public function getChildNodesAndTokens() : \Generator {
- foreach ($this::CHILD_NAMES as $name) {
- $val = $this->$name;
-
- if (\is_array($val)) {
- foreach ($val as $child) {
- if ($child !== null) {
- yield $name => $child;
- }
- }
- continue;
- }
- if ($val !== null) {
- yield $name => $val;
- }
- }
- }
-
- /**
- * Gets generator containing all child Nodes (direct descendants)
- * @return \Generator|Node[]
- */
- public function getChildNodes() : \Generator {
- foreach ($this::CHILD_NAMES as $name) {
- $val = $this->$name;
- if (\is_array($val)) {
- foreach ($val as $child) {
- if ($child instanceof Node) {
- yield $child;
- }
- }
- continue;
- } elseif ($val instanceof Node) {
- yield $val;
- }
- }
- }
-
- /**
- * Gets generator containing all child Tokens (direct descendants)
- *
- * @return \Generator|Token[]
- */
- public function getChildTokens() {
- foreach ($this::CHILD_NAMES as $name) {
- $val = $this->$name;
- if (\is_array($val)) {
- foreach ($val as $child) {
- if ($child instanceof Token) {
- yield $child;
- }
- }
- continue;
- } elseif ($val instanceof Token) {
- yield $val;
- }
- }
- }
-
- /**
- * Gets array of declared child names (cached).
- *
- * This is used as an optimization when iterating over nodes: For direct iteration
- * PHP will create a properties hashtable on the object, thus doubling memory usage.
- * We avoid this by iterating over just the names instead.
- *
- * @return string[]
- */
- public function getChildNames() {
- return $this::CHILD_NAMES;
- }
-
- /**
- * Gets width of a Node (not including comment / whitespace trivia)
- *
- * @return int
- */
- public function getWidth() : int {
- $first = $this->getStartPosition();
- $last = $this->getEndPosition();
-
- return $last - $first;
- }
-
- /**
- * Gets width of a Node (including comment / whitespace trivia)
- *
- * @return int
- */
- public function getFullWidth() : int {
- $first = $this->getFullStartPosition();
- $last = $this->getEndPosition();
-
- return $last - $first;
- }
-
- /**
- * Gets string representing Node text (not including leading comment + whitespace trivia)
- * @return string
- */
- public function getText() : string {
- $start = $this->getStartPosition();
- $end = $this->getEndPosition();
-
- $fileContents = $this->getFileContents();
- return \substr($fileContents, $start, $end - $start);
- }
-
- /**
- * Gets full text of Node (including leading comment + whitespace trivia)
- * @return string
- */
- public function getFullText() : string {
- $start = $this->getFullStartPosition();
- $end = $this->getEndPosition();
-
- $fileContents = $this->getFileContents();
- return \substr($fileContents, $start, $end - $start);
-
- }
-
- /**
- * Gets string representing Node's leading comment and whitespace text.
- * @return string
- */
- public function getLeadingCommentAndWhitespaceText() : string {
- // TODO re-tokenize comments and whitespace
- $fileContents = $this->getFileContents();
- foreach ($this->getDescendantTokens() as $token) {
- return $token->getLeadingCommentsAndWhitespaceText($fileContents);
- }
- return '';
- }
-
- protected function getChildrenKvPairs() {
- $result = [];
- foreach ($this::CHILD_NAMES as $name) {
- $result[$name] = $this->$name;
- }
- return $result;
- }
-
- #[ReturnTypeWillChange]
- public function jsonSerialize() {
- $kindName = $this->getNodeKindName();
- return ["$kindName" => $this->getChildrenKvPairs()];
- }
-
- /**
- * Get the end index of a Node.
- * @return int
- * @throws \Exception
- */
- public function getEndPosition() {
- // TODO test invariant - start of next node is end of previous node
- for ($i = \count($childKeys = $this::CHILD_NAMES) - 1; $i >= 0; $i--) {
- $lastChildKey = $childKeys[$i];
- $lastChild = $this->$lastChildKey;
-
- if (\is_array($lastChild)) {
- $lastChild = \end($lastChild);
- }
-
- if ($lastChild instanceof Token) {
- return $lastChild->fullStart + $lastChild->length;
- } elseif ($lastChild instanceof Node) {
- return $lastChild->getEndPosition();
- }
- }
-
- throw new \Exception("Unhandled node type");
- }
-
- public function getFileContents() : string {
- // TODO consider renaming to getSourceText
- return $this->getRoot()->fileContents;
- }
-
- public function getUri() : string {
- return $this->getRoot()->uri;
- }
-
- public function getLastChild() {
- $a = iterator_to_array($this->getChildNodesAndTokens());
- return \end($a);
- }
-
- /**
- * Searches descendants to find a Node at the given position.
- *
- * @param int $pos
- * @return Node
- */
- public function getDescendantNodeAtPosition(int $pos) {
- foreach ($this->getChildNodes() as $child) {
- if ($child->containsPosition($pos)) {
- $node = $child->getDescendantNodeAtPosition($pos);
- if (!is_null($node)) {
- return $node;
- }
- }
- }
-
- return $this;
- }
-
- /**
- * Returns true if the given Node or Token contains the given position.
- * @param int $pos
- * @return bool
- */
- private function containsPosition(int $pos): bool {
- return $this->getStartPosition() <= $pos && $pos <= $this->getEndPosition();
- }
-
- /**
- * Gets leading PHP Doc Comment text corresponding to the current Node.
- * Returns last doc comment in leading comment / whitespace trivia,
- * and returns null if there is no preceding doc comment.
- *
- * @return string|null
- */
- public function getDocCommentText() {
- $leadingTriviaText = $this->getLeadingCommentAndWhitespaceText();
- $leadingTriviaTokens = PhpTokenizer::getTokensArrayFromContent(
- $leadingTriviaText, ParseContext::SourceElements, $this->getFullStartPosition(), false
- );
- for ($i = \count($leadingTriviaTokens) - 1; $i >= 0; $i--) {
- $token = $leadingTriviaTokens[$i];
- if ($token->kind === TokenKind::DocCommentToken) {
- return $token->getText($this->getFileContents());
- }
- }
- return null;
- }
-
- public function __toString() {
- return $this->getText();
- }
-
- /**
- * @return array|ResolvedName[][]
- * @throws \Exception
- */
- public function getImportTablesForCurrentScope() {
- $namespaceDefinition = $this->getNamespaceDefinition();
-
- // Use declarations can exist in either the global scope, or inside namespace declarations.
- // http://php.net/manual/en/language.namespaces.importing.php#language.namespaces.importing.scope
- //
- // The only code allowed before a namespace declaration is a declare statement, and sub-namespaces are
- // additionally unaffected by by import rules of higher-level namespaces. Therefore, we can make the assumption
- // that we need not travel up the spine any further once we've found the current namespace.
- // http://php.net/manual/en/language.namespaces.definition.php
- if ($namespaceDefinition instanceof NamespaceDefinition) {
- $topLevelNamespaceStatements = $namespaceDefinition->compoundStatementOrSemicolon instanceof Token
- ? $namespaceDefinition->parent->statementList // we need to start from the namespace definition.
- : $namespaceDefinition->compoundStatementOrSemicolon->statements;
- $namespaceFullStart = $namespaceDefinition->getFullStartPosition();
- } else {
- $topLevelNamespaceStatements = $this->getRoot()->statementList;
- $namespaceFullStart = 0;
- }
-
- $nodeFullStart = $this->getFullStartPosition();
-
- // TODO optimize performance
- // Currently we rebuild the import tables on every call (and therefore every name resolution operation)
- // It is likely that a consumer will attempt many consecutive name resolution requests within the same file.
- // Therefore, we can consider optimizing on the basis of the "most recently used" import table set.
- // The idea: Keep a single set of import tables cached based on a unique root node id, and invalidate
- // cache whenever we attempt to resolve a qualified name with a different root node.
- //
- // In order to make this work, it will probably make sense to change the way we parse namespace definitions.
- // https://github.com/Microsoft/tolerant-php-parser/issues/81
- //
- // Currently the namespace definition only includes a compound statement or semicolon token as one if it's children.
- // Instead, we should move to a model where we parse future statements as a child rather than as a separate
- // statement. This would enable us to retrieve all the information we would need to find the fully qualified
- // name by simply traveling up the spine to find the first ancestor of type NamespaceDefinition.
- $namespaceImportTable = $functionImportTable = $constImportTable = [];
- $contents = $this->getFileContents();
-
- foreach ($topLevelNamespaceStatements as $useDeclaration) {
- if ($useDeclaration->getFullStartPosition() <= $namespaceFullStart) {
- continue;
- }
- if ($useDeclaration->getFullStartPosition() > $nodeFullStart) {
- break;
- } elseif (!($useDeclaration instanceof NamespaceUseDeclaration)) {
- continue;
- }
-
- // TODO fix getValues
- foreach ((isset($useDeclaration->useClauses) ? $useDeclaration->useClauses->getValues() : []) as $useClause) {
- $namespaceNamePartsPrefix = $useClause->namespaceName !== null ? $useClause->namespaceName->nameParts : [];
-
- if ($useClause->groupClauses !== null && $useClause instanceof NamespaceUseClause) {
- // use A\B\C\{D\E}; namespace import: ["E" => [A,B,C,D,E]]
- // use A\B\C\{D\E as F}; namespace import: ["F" => [A,B,C,D,E]]
- // use function A\B\C\{A, B} function import: ["A" => [A,B,C,A], "B" => [A,B,C]]
- // use function A\B\C\{const A} const import: ["A" => [A,B,C,A]]
- foreach ($useClause->groupClauses->children as $groupClause) {
- if (!($groupClause instanceof NamespaceUseGroupClause)) {
- continue;
- }
- $namespaceNameParts = \array_merge($namespaceNamePartsPrefix, $groupClause->namespaceName->nameParts);
- $functionOrConst = $groupClause->functionOrConst ?? $useDeclaration->functionOrConst;
- $alias = $groupClause->namespaceAliasingClause === null
- ? $groupClause->namespaceName->getLastNamePart()->getText($contents)
- : $groupClause->namespaceAliasingClause->name->getText($contents);
-
- $this->addToImportTable(
- $alias, $functionOrConst, $namespaceNameParts, $contents,
- $namespaceImportTable, $functionImportTable, $constImportTable
- );
- }
- } else {
- // use A\B\C; namespace import: ["C" => [A,B,C]]
- // use A\B\C as D; namespace import: ["D" => [A,B,C]]
- // use function A\B\C as D function import: ["D" => [A,B,C]]
- // use A\B, C\D; namespace import: ["B" => [A,B], "D" => [C,D]]
- $alias = $useClause->namespaceAliasingClause === null
- ? $useClause->namespaceName->getLastNamePart()->getText($contents)
- : $useClause->namespaceAliasingClause->name->getText($contents);
- $functionOrConst = $useDeclaration->functionOrConst;
- $namespaceNameParts = $namespaceNamePartsPrefix;
-
- $this->addToImportTable(
- $alias, $functionOrConst, $namespaceNameParts, $contents,
- $namespaceImportTable, $functionImportTable, $constImportTable
- );
- }
- }
- }
-
- return [$namespaceImportTable, $functionImportTable, $constImportTable];
- }
-
- /**
- * Gets corresponding NamespaceDefinition for Node. Returns null if in global namespace.
- *
- * @return NamespaceDefinition|null
- */
- public function getNamespaceDefinition() {
- $namespaceDefinition = ($this instanceof NamespaceDefinition || $this instanceof SourceFileNode)
- ? $this
- : $this->getFirstAncestor(NamespaceDefinition::class, SourceFileNode::class);
-
- if ($namespaceDefinition instanceof NamespaceDefinition && !($namespaceDefinition->parent instanceof SourceFileNode)) {
- $namespaceDefinition = $namespaceDefinition->getFirstAncestor(SourceFileNode::class);
- }
-
- if ($namespaceDefinition === null) {
- // TODO provide a way to throw errors without crashing consumer
- throw new \Exception("Invalid tree - SourceFileNode must always exist at root of tree.");
- }
-
- $fullStart = $this->getFullStartPosition();
- $lastNamespaceDefinition = null;
- if ($namespaceDefinition instanceof SourceFileNode) {
- foreach ($namespaceDefinition->getChildNodes() as $childNode) {
- if ($childNode instanceof NamespaceDefinition && $childNode->getFullStartPosition() < $fullStart) {
- $lastNamespaceDefinition = $childNode;
- }
- }
- }
-
- if ($lastNamespaceDefinition !== null && $lastNamespaceDefinition->compoundStatementOrSemicolon instanceof Token) {
- $namespaceDefinition = $lastNamespaceDefinition;
- } elseif ($namespaceDefinition instanceof SourceFileNode) {
- $namespaceDefinition = null;
- }
-
- return $namespaceDefinition;
- }
-
- public function getPreviousSibling() {
- // TODO make more efficient
- $parent = $this->parent;
- if ($parent === null) {
- return null;
- }
-
- $prevSibling = null;
-
- foreach ($parent::CHILD_NAMES as $name) {
- $val = $parent->$name;
- if (\is_array($val)) {
- foreach ($val as $sibling) {
- if ($sibling === $this) {
- return $prevSibling;
- } elseif ($sibling instanceof Node) {
- $prevSibling = $sibling;
- }
- }
- continue;
- } elseif ($val instanceof Node) {
- if ($val === $this) {
- return $prevSibling;
- }
- $prevSibling = $val;
- }
- }
- return null;
- }
-
- /**
- * Add the alias and resolved name to the corresponding namespace, function, or const import table.
- * If the alias already exists, it will get replaced by the most recent using.
- *
- * TODO - worth throwing an error here instead?
- */
- private function addToImportTable($alias, $functionOrConst, $namespaceNameParts, $contents, & $namespaceImportTable, & $functionImportTable, & $constImportTable):array
- {
- if ($alias !== null) {
- if ($functionOrConst === null) {
- // namespaces are case-insensitive
-// $alias = \strtolower($alias);
- $namespaceImportTable[$alias] = ResolvedName::buildName($namespaceNameParts, $contents);
- return [$namespaceImportTable, $functionImportTable, $constImportTable];
- } elseif ($functionOrConst->kind === TokenKind::FunctionKeyword) {
- // functions are case-insensitive
-// $alias = \strtolower($alias);
- $functionImportTable[$alias] = ResolvedName::buildName($namespaceNameParts, $contents);
- return [$namespaceImportTable, $functionImportTable, $constImportTable];
- } elseif ($functionOrConst->kind === TokenKind::ConstKeyword) {
- // constants are case-sensitive
- $constImportTable[$alias] = ResolvedName::buildName($namespaceNameParts, $contents);
- return [$namespaceImportTable, $functionImportTable, $constImportTable];
- }
- return [$namespaceImportTable, $functionImportTable, $constImportTable];
- }
- return [$namespaceImportTable, $functionImportTable, $constImportTable];
- }
-
- /**
- * This is overridden in subclasses
- * @return Diagnostic|null - Callers should use DiagnosticsProvider::getDiagnostics instead
- * @internal
- */
- public function getDiagnosticForNode() {
- return null;
- }
-}
diff --git a/vendor/microsoft/tolerant-php-parser/src/Node/AnonymousFunctionUseClause.php b/vendor/microsoft/tolerant-php-parser/src/Node/AnonymousFunctionUseClause.php
deleted file mode 100644
index 26460ea6..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/Node/AnonymousFunctionUseClause.php
+++ /dev/null
@@ -1,33 +0,0 @@
-name];
- }
-
- public function getName() {
- return $this->name->getText($this->getFileContents());
- }
-}
diff --git a/vendor/microsoft/tolerant-php-parser/src/Node/DeclareDirective.php b/vendor/microsoft/tolerant-php-parser/src/Node/DeclareDirective.php
deleted file mode 100644
index 55e9af21..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/Node/DeclareDirective.php
+++ /dev/null
@@ -1,25 +0,0 @@
-children as $child) {
- if ($child instanceof Node) {
- yield $child;
- } elseif ($child instanceof Token && !\in_array($child->kind, self::DELIMITERS)) {
- yield $child;
- }
- }
- }
-
- public function getValues() {
- foreach ($this->children as $idx=>$value) {
- if ($idx % 2 == 0) {
- yield $value;
- }
- }
- }
-
- public function addElement($node) {
- if ($node === null) {
- return;
- }
- if ($this->children === null) {
- $this->children = [$node];
- return;
- }
- $this->children[] = $node;
- }
-}
diff --git a/vendor/microsoft/tolerant-php-parser/src/Node/DelimitedList/ArgumentExpressionList.php b/vendor/microsoft/tolerant-php-parser/src/Node/DelimitedList/ArgumentExpressionList.php
deleted file mode 100644
index 0815ee5f..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/Node/DelimitedList/ArgumentExpressionList.php
+++ /dev/null
@@ -1,12 +0,0 @@
-` */
- public $arrowToken;
-
- /** @var Node|Token */
- public $resultExpression;
-
- const CHILD_NAMES = [
- 'attributes',
- 'staticModifier',
-
- // FunctionHeader
- 'functionKeyword',
- 'byRefToken',
- 'name',
- 'openParen',
- 'parameters',
- 'closeParen',
-
- // FunctionReturnType
- 'colonToken',
- 'questionToken',
- 'returnTypeList',
-
- // body
- 'arrowToken',
- 'resultExpression',
- ];
-}
diff --git a/vendor/microsoft/tolerant-php-parser/src/Node/Expression/AssignmentExpression.php b/vendor/microsoft/tolerant-php-parser/src/Node/Expression/AssignmentExpression.php
deleted file mode 100644
index dc1683bc..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/Node/Expression/AssignmentExpression.php
+++ /dev/null
@@ -1,32 +0,0 @@
-name instanceof Token &&
- $name = ltrim($this->name->getText($this->getFileContents()), '$')
- ) {
- return $name;
- }
- return null;
- }
-}
diff --git a/vendor/microsoft/tolerant-php-parser/src/Node/Expression/YieldExpression.php b/vendor/microsoft/tolerant-php-parser/src/Node/Expression/YieldExpression.php
deleted file mode 100644
index 63da2956..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/Node/Expression/YieldExpression.php
+++ /dev/null
@@ -1,21 +0,0 @@
-name->getText($this->getFileContents());
- }
-
- /**
- * @return Diagnostic|null - Callers should use DiagnosticsProvider::getDiagnostics instead
- * @internal
- * @override
- */
- public function getDiagnosticForNode() {
- foreach ($this->modifiers as $modifier) {
- if ($modifier->kind === TokenKind::VarKeyword) {
- return new Diagnostic(
- DiagnosticKind::Error,
- "Unexpected modifier '" . DiagnosticsProvider::getTextForTokenKind($modifier->kind) . "'",
- $modifier->start,
- $modifier->length
- );
- }
- }
- return null;
- }
-
- /**
- * Returns the signature parts as an array. Use $this::getSignatureFormatted for a user-friendly string version.
- *
- * @return array
- */
- private function getSignatureParts(): array {
- $parts = [];
-
- foreach ($this->getChildNodesAndTokens() as $i => $child) {
- if ($i === "compoundStatementOrSemicolon") {
- return $parts;
- }
-
- $parts[] = $child instanceof Token
- ? $child->getText($this->getFileContents())
- : $child->getText();
- };
-
- return $parts;
- }
-
- /**
- * Returns the signature of the method as a formatted string.
- *
- * @return string
- */
- public function getSignatureFormatted(): string {
- $signature = implode(" ", $this->getSignatureParts());
- return $signature;
- }
-
- /**
- * Returns the description part of the doc string.
- *
- * @return string
- */
- public function getDescriptionFormatted(): string {
- $comment = trim($this->getLeadingCommentAndWhitespaceText(), "\r\n");
- $commentParts = explode("\n", $comment);
-
- $description = [];
-
- foreach ($commentParts as $i => $part) {
- $part = trim($part, "*\r\t /");
-
- if (strlen($part) <= 0) {
- continue;
- }
-
- if ($part[0] === "@") {
- break;
- }
-
- $description[] = $part;
- }
-
- $descriptionFormatted = implode(" ", $description);
- return $descriptionFormatted;
- }
-}
diff --git a/vendor/microsoft/tolerant-php-parser/src/Node/MissingDeclaration.php b/vendor/microsoft/tolerant-php-parser/src/Node/MissingDeclaration.php
deleted file mode 100644
index 82867e25..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/Node/MissingDeclaration.php
+++ /dev/null
@@ -1,23 +0,0 @@
-byRefToken !== null;
- }
-
- public function getName() {
- if (
- $this->variableName instanceof Token &&
- $name = substr($this->variableName->getText($this->getFileContents()), 1)
- ) {
- return $name;
- }
- return null;
- }
-}
diff --git a/vendor/microsoft/tolerant-php-parser/src/Node/PropertyDeclaration.php b/vendor/microsoft/tolerant-php-parser/src/Node/PropertyDeclaration.php
deleted file mode 100644
index 1995aed5..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/Node/PropertyDeclaration.php
+++ /dev/null
@@ -1,42 +0,0 @@
-globalSpecifier);
- }
-
- /**
- * Checks whether a QualifiedName begins with a "namespace" keyword
- * @return bool
- */
- public function isRelativeName() : bool {
- return isset($this->relativeSpecifier);
- }
-
- /**
- * Checks whether a Name includes at least one namespace separator (and is neither fully-qualified nor relative)
- * @return bool
- */
- public function isQualifiedName() : bool {
- return
- !$this->isFullyQualifiedName() &&
- !$this->isRelativeName() &&
- \count($this->nameParts) > 1; // at least one namespace separator
- }
-
- /**
- * Checks whether a name is does not include a namespace separator.
- * @return bool
- */
- public function isUnqualifiedName() : bool {
- return !($this->isFullyQualifiedName() || $this->isRelativeName() || $this->isQualifiedName());
- }
-
- /**
- * Gets resolved name based on name resolution rules defined in:
- * http://php.net/manual/en/language.namespaces.rules.php
- *
- * Returns null if one of the following conditions is met:
- * - name resolution is not valid for this element (e.g. part of the name in a namespace definition)
- * - name cannot be resolved (unqualified namespaced function/constant names that are not explicitly imported.)
- *
- * @return null|string|ResolvedName
- * @throws \Exception
- */
- public function getResolvedName($namespaceDefinition = null) {
- // Name resolution not applicable to constructs that define symbol names or aliases.
- if (($this->parent instanceof Node\Statement\NamespaceDefinition && $this->parent->name->getStartPosition() === $this->getStartPosition()) ||
- $this->parent instanceof Node\Statement\NamespaceUseDeclaration ||
- $this->parent instanceof Node\NamespaceUseClause ||
- $this->parent instanceof Node\NamespaceUseGroupClause ||
- $this->parent->parent instanceof Node\TraitUseClause ||
- $this->parent instanceof Node\TraitSelectOrAliasClause ||
- ($this->parent instanceof TraitSelectOrAliasClause &&
- ($this->parent->asOrInsteadOfKeyword == null || $this->parent->asOrInsteadOfKeyword->kind === TokenKind::AsKeyword))
- ) {
- return null;
- }
-
- if (in_array($lowerText = strtolower($this->getText()), ["self", "static", "parent"])) {
- return $lowerText;
- }
-
- // FULLY QUALIFIED NAMES
- // - resolve to the name without leading namespace separator.
- if ($this->isFullyQualifiedName()) {
- return ResolvedName::buildName($this->nameParts, $this->getFileContents());
- }
-
- // RELATIVE NAMES
- // - resolve to the name with namespace replaced by the current namespace.
- // - if current namespace is global, strip leading namespace\ prefix.
- if ($this->isRelativeName()) {
- return $this->getNamespacedName();
- }
-
- [$namespaceImportTable, $functionImportTable, $constImportTable] = $this->getImportTablesForCurrentScope();
-
- // QUALIFIED NAMES
- // - first segment of the name is translated according to the current class/namespace import table.
- // - If no import rule applies, the current namespace is prepended to the name.
- if ($this->isQualifiedName()) {
- return $this->tryResolveFromImportTable($namespaceImportTable) ?? $this->getNamespacedName();
- }
-
- // UNQUALIFIED NAMES
- // - translated according to the current import table for the respective symbol type.
- // (class-like => namespace import table, constant => const import table, function => function import table)
- // - if no import rule applies:
- // - all symbol types: if current namespace is global, resolve to global namespace.
- // - class-like symbols: resolve from current namespace.
- // - function or const: resolved at runtime (from current namespace, with fallback to global namespace).
- if ($this->isConstantName()) {
- $resolvedName = $this->tryResolveFromImportTable($constImportTable, /* case-sensitive */ true);
- $namespaceDefinition = $this->getNamespaceDefinition();
- if ($namespaceDefinition !== null && $namespaceDefinition->name === null) {
- $resolvedName = $resolvedName ?? ResolvedName::buildName($this->nameParts, $this->getFileContents());
- }
- return $resolvedName;
- } elseif ($this->parent instanceof CallExpression) {
- $resolvedName = $this->tryResolveFromImportTable($functionImportTable);
- if (($namespaceDefinition = $this->getNamespaceDefinition()) === null || $namespaceDefinition->name === null) {
- $resolvedName = $resolvedName ?? ResolvedName::buildName($this->nameParts, $this->getFileContents());
- }
- return $resolvedName;
- }
-
- return $this->tryResolveFromImportTable($namespaceImportTable) ?? $this->getNamespacedName();
- }
-
- public function getLastNamePart() {
- $parts = $this->nameParts;
- for ($i = \count($parts) - 1; $i >= 0; $i--) {
- // TODO - also handle reserved word tokens
- if ($parts[$i]->kind === TokenKind::Name) {
- return $parts[$i];
- }
- }
- return null;
- }
-
- /**
- * @param ResolvedName[] $importTable
- * @param bool $isCaseSensitive
- * @return string|null
- */
- private function tryResolveFromImportTable($importTable, bool $isCaseSensitive = false) {
- $content = $this->getFileContents();
- $index = $this->nameParts[0]->getText($content);
-// if (!$isCaseSensitive) {
-// $index = strtolower($index);
-// }
- if(isset($importTable[$index])) {
- $resolvedName = $importTable[$index];
- $resolvedName->addNameParts(\array_slice($this->nameParts, 1), $content);
- return $resolvedName;
- }
- return null;
- }
-
- private function isConstantName() : bool {
- return
- ($this->parent instanceof Node\Statement\ExpressionStatement || $this->parent instanceof Expression) &&
- !(
- $this->parent instanceof Node\Expression\MemberAccessExpression || $this->parent instanceof CallExpression ||
- $this->parent instanceof ObjectCreationExpression ||
- $this->parent instanceof Node\Expression\ScopedPropertyAccessExpression || $this->parent instanceof AnonymousFunctionCreationExpression ||
- $this->parent instanceof ArrowFunctionCreationExpression ||
- ($this->parent instanceof Node\Expression\BinaryExpression && $this->parent->operator->kind === TokenKind::InstanceOfKeyword)
- );
- }
-
- public function getNameParts() : array {
- return $this->nameParts;
- }
-}
diff --git a/vendor/microsoft/tolerant-php-parser/src/Node/RelativeSpecifier.php b/vendor/microsoft/tolerant-php-parser/src/Node/RelativeSpecifier.php
deleted file mode 100644
index 8c301edb..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/Node/RelativeSpecifier.php
+++ /dev/null
@@ -1,23 +0,0 @@
-breakoutLevel === null) {
- return null;
- }
-
- $breakoutLevel = $this->breakoutLevel;
- while ($breakoutLevel instanceof Node\Expression\ParenthesizedExpression) {
- $breakoutLevel = $breakoutLevel->expression;
- }
-
- if (
- $breakoutLevel instanceof Node\NumericLiteral
- && $breakoutLevel->children->kind === TokenKind::IntegerLiteralToken
- ) {
- $literalString = $breakoutLevel->getText();
- $firstTwoChars = \substr($literalString, 0, 2);
-
- if ($firstTwoChars === '0b' || $firstTwoChars === '0B') {
- if (\bindec(\substr($literalString, 2)) > 0) {
- return null;
- }
- }
- else if (\intval($literalString, 0) > 0) {
- return null;
- }
- }
-
- $start = $breakoutLevel->getStartPosition();
- $end = $breakoutLevel->getEndPosition();
-
- return new Diagnostic(
- DiagnosticKind::Error,
- "Positive integer literal expected.",
- $start,
- $end - $start
- );
- }
-}
diff --git a/vendor/microsoft/tolerant-php-parser/src/Node/Statement/ClassDeclaration.php b/vendor/microsoft/tolerant-php-parser/src/Node/Statement/ClassDeclaration.php
deleted file mode 100644
index 8a4e6df0..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/Node/Statement/ClassDeclaration.php
+++ /dev/null
@@ -1,56 +0,0 @@
-name];
- }
-}
diff --git a/vendor/microsoft/tolerant-php-parser/src/Node/Statement/CompoundStatementNode.php b/vendor/microsoft/tolerant-php-parser/src/Node/Statement/CompoundStatementNode.php
deleted file mode 100644
index 739e5b38..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/Node/Statement/CompoundStatementNode.php
+++ /dev/null
@@ -1,28 +0,0 @@
-name];
- }
-}
diff --git a/vendor/microsoft/tolerant-php-parser/src/Node/Statement/ExpressionStatement.php b/vendor/microsoft/tolerant-php-parser/src/Node/Statement/ExpressionStatement.php
deleted file mode 100644
index 96e7afef..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/Node/Statement/ExpressionStatement.php
+++ /dev/null
@@ -1,23 +0,0 @@
-name];
- }
-}
diff --git a/vendor/microsoft/tolerant-php-parser/src/Node/Statement/FunctionStaticDeclaration.php b/vendor/microsoft/tolerant-php-parser/src/Node/Statement/FunctionStaticDeclaration.php
deleted file mode 100644
index b96608de..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/Node/Statement/FunctionStaticDeclaration.php
+++ /dev/null
@@ -1,29 +0,0 @@
-name];
- }
-}
diff --git a/vendor/microsoft/tolerant-php-parser/src/Node/Statement/NamedLabelStatement.php b/vendor/microsoft/tolerant-php-parser/src/Node/Statement/NamedLabelStatement.php
deleted file mode 100644
index 29e66260..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/Node/Statement/NamedLabelStatement.php
+++ /dev/null
@@ -1,22 +0,0 @@
-useClauses != null
- && \count($this->useClauses->children) > 1
- ) {
- foreach ($this->useClauses->children as $useClause) {
- if($useClause instanceof Node\NamespaceUseClause && !is_null($useClause->openBrace)) {
- return new Diagnostic(
- DiagnosticKind::Error,
- "; expected.",
- $useClause->getEndPosition(),
- 1
- );
- }
- }
- }
- return null;
- }
-}
diff --git a/vendor/microsoft/tolerant-php-parser/src/Node/Statement/ReturnStatement.php b/vendor/microsoft/tolerant-php-parser/src/Node/Statement/ReturnStatement.php
deleted file mode 100644
index 50353c16..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/Node/Statement/ReturnStatement.php
+++ /dev/null
@@ -1,26 +0,0 @@
-name];
- }
-}
diff --git a/vendor/microsoft/tolerant-php-parser/src/Node/Statement/TryStatement.php b/vendor/microsoft/tolerant-php-parser/src/Node/Statement/TryStatement.php
deleted file mode 100644
index b0e503ca..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/Node/Statement/TryStatement.php
+++ /dev/null
@@ -1,30 +0,0 @@
-startQuote)) {
- foreach ($this->children as $child) {
- $contents = $this->getFileContents();
- $stringContents .= $child->getFullText($contents);
- }
- } else {
- // TODO ensure string consistency (all strings should have start / end quote)
- $stringContents = trim($this->children->getText($this->getFileContents()), '"\'');
- }
- return $stringContents;
- }
-}
diff --git a/vendor/microsoft/tolerant-php-parser/src/Node/TraitMembers.php b/vendor/microsoft/tolerant-php-parser/src/Node/TraitMembers.php
deleted file mode 100644
index 53c375c1..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/Node/TraitMembers.php
+++ /dev/null
@@ -1,27 +0,0 @@
-variableName instanceof Token &&
- $name = substr($this->variableName->getText($this->getFileContents()), 1)
- ) {
- return $name;
- }
- return null;
- }
-}
diff --git a/vendor/microsoft/tolerant-php-parser/src/ParseContext.php b/vendor/microsoft/tolerant-php-parser/src/ParseContext.php
deleted file mode 100644
index 33c73c46..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/ParseContext.php
+++ /dev/null
@@ -1,24 +0,0 @@
-reservedWordTokens = \array_values(TokenStringMaps::RESERVED_WORDS);
- $this->keywordTokens = \array_values(TokenStringMaps::KEYWORDS);
- $this->argumentStartTokensSet = \array_flip(TokenStringMaps::KEYWORDS);
- unset($this->argumentStartTokensSet[TokenKind::YieldFromKeyword]);
- $this->argumentStartTokensSet[TokenKind::DotDotDotToken] = '...';
- $this->nameOrKeywordOrReservedWordTokens = \array_merge([TokenKind::Name], $this->keywordTokens, $this->reservedWordTokens);
- $this->nameOrReservedWordTokens = \array_merge([TokenKind::Name], $this->reservedWordTokens);
- $this->nameOrStaticOrReservedWordTokens = \array_merge([TokenKind::Name, TokenKind::StaticKeyword], $this->reservedWordTokens);
- $this->parameterTypeDeclarationTokens =
- [TokenKind::ArrayKeyword, TokenKind::CallableKeyword, TokenKind::BoolReservedWord,
- TokenKind::FloatReservedWord, TokenKind::IntReservedWord, TokenKind::StringReservedWord,
- TokenKind::ObjectReservedWord, TokenKind::NullReservedWord, TokenKind::FalseReservedWord,
- TokenKind::IterableReservedWord, TokenKind::MixedReservedWord]; // TODO update spec
- $this->returnTypeDeclarationTokens = \array_merge([TokenKind::VoidReservedWord, TokenKind::NullReservedWord, TokenKind::FalseReservedWord, TokenKind::StaticKeyword], $this->parameterTypeDeclarationTokens);
- }
-
- /**
- * This method exists so that it can be overridden in subclasses.
- * Any subclass must return a token stream that is equivalent to the contents in $fileContents for this to work properly.
- *
- * Possible reasons for applications to override the lexer:
- *
- * - Imitate token stream of a newer/older PHP version (e.g. T_FN is only available in php 7.4)
- * - Reuse the result of token_get_all to create a Node again.
- * - Reuse the result of token_get_all in a different library.
- */
- protected function makeLexer(string $fileContents): TokenStreamProviderInterface
- {
- return TokenStreamProviderFactory::GetTokenStreamProvider($fileContents);
- }
-
- /**
- * Generates AST from source file contents. Returns an instance of SourceFileNode, which is always the top-most
- * Node-type of the tree.
- *
- * @param string $fileContents
- * @return SourceFileNode
- */
- public function parseSourceFile(string $fileContents, string $uri = null) : SourceFileNode {
- $this->lexer = $this->makeLexer($fileContents);
-
- $this->reset();
-
- $sourceFile = new SourceFileNode();
- $this->sourceFile = $sourceFile;
- $sourceFile->fileContents = $fileContents;
- $sourceFile->uri = $uri;
- $sourceFile->statementList = [];
- if ($this->getCurrentToken()->kind !== TokenKind::EndOfFileToken) {
- $inlineHTML = $this->parseInlineHtml($sourceFile);
- $sourceFile->statementList[] = $inlineHTML;
- if ($inlineHTML->echoStatement) {
- $sourceFile->statementList[] = $inlineHTML->echoStatement;
- $inlineHTML->echoStatement->parent = $sourceFile;
- $inlineHTML->echoStatement = null;
- }
- }
- $sourceFile->statementList =
- \array_merge($sourceFile->statementList, $this->parseList($sourceFile, ParseContext::SourceElements));
-
- $this->sourceFile->endOfFileToken = $this->eat1(TokenKind::EndOfFileToken);
- $this->advanceToken();
-
- $sourceFile->parent = null;
-
- return $sourceFile;
- }
-
- private function reset() {
- $this->advanceToken();
-
- // Stores the current parse context, which includes the current and enclosing lists.
- $this->currentParseContext = 0;
- }
-
- /**
- * Parse a list of elements for a given ParseContext until a list terminator associated
- * with that ParseContext is reached. Additionally abort parsing when an element is reached
- * that is invalid in the current context, but valid in an enclosing context. If an element
- * is invalid in both current and enclosing contexts, generate a SkippedToken, and continue.
- * @param Node $parentNode
- * @param int $listParseContext
- * @return array
- */
- private function parseList($parentNode, int $listParseContext) {
- $savedParseContext = $this->currentParseContext;
- $this->currentParseContext |= 1 << $listParseContext;
- $parseListElementFn = $this->getParseListElementFn($listParseContext);
-
- $nodeArray = [];
- while (!$this->isListTerminator($listParseContext)) {
- if ($this->isValidListElement($listParseContext, $this->getCurrentToken())) {
- $element = $parseListElementFn($parentNode);
- $nodeArray[] = $element;
- if ($element instanceof Node) {
- $element->parent = $parentNode;
- if ($element instanceof InlineHtml && $element->echoStatement) {
- $nodeArray[] = $element->echoStatement;
- $element->echoStatement->parent = $parentNode;
- $element->echoStatement = null;
- }
- }
- continue;
- }
-
- // Error handling logic:
- // The current parse context does not know how to handle the current token,
- // so check if the enclosing contexts know what to do. If so, we assume that
- // the list has completed parsing, and return to the enclosing context.
- //
- // Example:
- // class A {
- // function foo() {
- // return;
- // // } <- MissingToken (generated when we try to "eat" the closing brace)
- //
- // public function bar() {
- // }
- // }
- //
- // In the case above, the Method ParseContext doesn't know how to handle "public", but
- // the Class ParseContext will know what to do with it. So we abort the Method ParseContext,
- // and return to the Class ParseContext. This enables us to generate a tree with a single
- // class that contains two method nodes, even though there was an error present in the first method.
- if ($this->isCurrentTokenValidInEnclosingContexts()) {
- break;
- }
-
- // None of the enclosing contexts know how to handle the token. Generate a
- // SkippedToken, and continue parsing in the current context.
- // Example:
- // class A {
- // function foo() {
- // return;
- // & // <- SkippedToken
- // }
- // }
- $token = new SkippedToken($this->getCurrentToken());
- $nodeArray[] = $token;
- $this->advanceToken();
- }
-
- $this->currentParseContext = $savedParseContext;
-
- return $nodeArray;
- }
-
- private function isListTerminator(int $parseContext) {
- $tokenKind = $this->getCurrentToken()->kind;
- if ($tokenKind === TokenKind::EndOfFileToken) {
- // Being at the end of the file ends all lists.
- return true;
- }
-
- switch ($parseContext) {
- case ParseContext::SourceElements:
- return false;
-
- case ParseContext::InterfaceMembers:
- case ParseContext::ClassMembers:
- case ParseContext::BlockStatements:
- case ParseContext::TraitMembers:
- case ParseContext::EnumMembers:
- return $tokenKind === TokenKind::CloseBraceToken;
- case ParseContext::SwitchStatementElements:
- return $tokenKind === TokenKind::CloseBraceToken || $tokenKind === TokenKind::EndSwitchKeyword;
- case ParseContext::IfClause2Elements:
- return
- $tokenKind === TokenKind::ElseIfKeyword ||
- $tokenKind === TokenKind::ElseKeyword ||
- $tokenKind === TokenKind::EndIfKeyword;
-
- case ParseContext::WhileStatementElements:
- return $tokenKind === TokenKind::EndWhileKeyword;
-
- case ParseContext::CaseStatementElements:
- return
- $tokenKind === TokenKind::CaseKeyword ||
- $tokenKind === TokenKind::DefaultKeyword;
-
- case ParseContext::ForStatementElements:
- return
- $tokenKind === TokenKind::EndForKeyword;
-
- case ParseContext::ForeachStatementElements:
- return $tokenKind === TokenKind::EndForEachKeyword;
-
- case ParseContext::DeclareStatementElements:
- return $tokenKind === TokenKind::EndDeclareKeyword;
- }
- // TODO warn about unhandled parse context
- return false;
- }
-
- private function isValidListElement($context, Token $token) {
-
- // TODO
- switch ($context) {
- case ParseContext::SourceElements:
- case ParseContext::BlockStatements:
- case ParseContext::IfClause2Elements:
- case ParseContext::CaseStatementElements:
- case ParseContext::WhileStatementElements:
- case ParseContext::ForStatementElements:
- case ParseContext::ForeachStatementElements:
- case ParseContext::DeclareStatementElements:
- return $this->isStatementStart($token);
-
- case ParseContext::ClassMembers:
- return $this->isClassMemberDeclarationStart($token);
-
- case ParseContext::TraitMembers:
- return $this->isTraitMemberDeclarationStart($token);
-
- case ParseContext::EnumMembers:
- return $this->isEnumMemberDeclarationStart($token);
-
- case ParseContext::InterfaceMembers:
- return $this->isInterfaceMemberDeclarationStart($token);
-
- case ParseContext::SwitchStatementElements:
- return
- $token->kind === TokenKind::CaseKeyword ||
- $token->kind === TokenKind::DefaultKeyword;
- }
- return false;
- }
-
- private function getParseListElementFn($context) {
- switch ($context) {
- case ParseContext::SourceElements:
- case ParseContext::BlockStatements:
- case ParseContext::IfClause2Elements:
- case ParseContext::CaseStatementElements:
- case ParseContext::WhileStatementElements:
- case ParseContext::ForStatementElements:
- case ParseContext::ForeachStatementElements:
- case ParseContext::DeclareStatementElements:
- return $this->parseStatementFn();
- case ParseContext::ClassMembers:
- return $this->parseClassElementFn();
-
- case ParseContext::TraitMembers:
- return $this->parseTraitElementFn();
-
- case ParseContext::InterfaceMembers:
- return $this->parseInterfaceElementFn();
-
- case ParseContext::EnumMembers:
- return $this->parseEnumElementFn();
-
- case ParseContext::SwitchStatementElements:
- return $this->parseCaseOrDefaultStatement();
- default:
- throw new \Exception("Unrecognized parse context");
- }
- }
-
- /**
- * Aborts parsing list when one of the parent contexts understands something
- * @return bool
- */
- private function isCurrentTokenValidInEnclosingContexts() {
- for ($contextKind = 0; $contextKind < ParseContext::Count; $contextKind++) {
- if ($this->isInParseContext($contextKind)) {
- if ($this->isValidListElement($contextKind, $this->getCurrentToken()) || $this->isListTerminator($contextKind)) {
- return true;
- }
- }
- }
- return false;
- }
-
- private function isInParseContext($contextToCheck) {
- return ($this->currentParseContext & (1 << $contextToCheck));
- }
-
- /**
- * Retrieve the current token, and check that it's of the expected TokenKind.
- * If so, advance and return the token. Otherwise return a MissingToken for
- * the expected token.
- * @param int|int[] ...$kinds
- * @return Token
- */
- private function eat(...$kinds) {
- $token = $this->token;
- if (\is_array($kinds[0])) {
- $kinds = $kinds[0];
- }
- foreach ($kinds as $kind) {
- if ($token->kind === $kind) {
- $this->token = $this->lexer->scanNextToken();
- return $token;
- }
- }
- // TODO include optional grouping for token kinds
- return new MissingToken($kinds[0], $token->fullStart);
- }
-
- /**
- * Retrieve the current token, and check that it's of the kind $kind.
- * If so, advance and return the token. Otherwise return a MissingToken for
- * the expected token.
- *
- * This is faster than calling eat() if there is a single token.
- *
- * @param int $kind
- * @return Token
- */
- private function eat1($kind) {
- $token = $this->token;
- if ($token->kind === $kind) {
- $this->token = $this->lexer->scanNextToken();
- return $token;
- }
- // TODO include optional grouping for token kinds
- return new MissingToken($kind, $token->fullStart);
- }
-
- /**
- * @param int|int[] ...$kinds (Can provide a single value with a list of kinds, or multiple kinds)
- * @return Token|null
- */
- private function eatOptional(...$kinds) {
- $token = $this->token;
- if (\is_array($kinds[0])) {
- $kinds = $kinds[0];
- }
- if (\in_array($token->kind, $kinds)) {
- $this->token = $this->lexer->scanNextToken();
- return $token;
- }
- return null;
- }
-
- /**
- * @param int $kind a single kind
- * @return Token|null
- */
- private function eatOptional1($kind) {
- $token = $this->token;
- if ($token->kind === $kind) {
- $this->token = $this->lexer->scanNextToken();
- return $token;
- }
- return null;
- }
-
- private $token;
-
- private function getCurrentToken() : Token {
- return $this->token;
- }
-
- private function advanceToken() {
- $this->token = $this->lexer->scanNextToken();
- }
-
- private function parseStatement($parentNode) {
- return ($this->parseStatementFn())($parentNode);
- }
-
- private function parseStatementFn() {
- return function ($parentNode) {
- $token = $this->getCurrentToken();
- switch ($token->kind) {
- // compound-statement
- case TokenKind::OpenBraceToken:
- return $this->parseCompoundStatement($parentNode);
-
- // labeled-statement
- case TokenKind::Name:
- if ($this->lookahead(TokenKind::ColonToken)) {
- return $this->parseNamedLabelStatement($parentNode);
- }
- break;
-
- // selection-statement
- case TokenKind::IfKeyword:
- return $this->parseIfStatement($parentNode);
- case TokenKind::SwitchKeyword:
- return $this->parseSwitchStatement($parentNode);
-
- // iteration-statement
- case TokenKind::WhileKeyword: // while-statement
- return $this->parseWhileStatement($parentNode);
- case TokenKind::DoKeyword: // do-statement
- return $this->parseDoStatement($parentNode);
- case TokenKind::ForKeyword: // for-statement
- return $this->parseForStatement($parentNode);
- case TokenKind::ForeachKeyword: // foreach-statement
- return $this->parseForeachStatement($parentNode);
-
- // jump-statement
- case TokenKind::GotoKeyword: // goto-statement
- return $this->parseGotoStatement($parentNode);
- case TokenKind::ContinueKeyword: // continue-statement
- case TokenKind::BreakKeyword: // break-statement
- return $this->parseBreakOrContinueStatement($parentNode);
- case TokenKind::ReturnKeyword: // return-statement
- return $this->parseReturnStatement($parentNode);
-
- // try-statement
- case TokenKind::TryKeyword:
- return $this->parseTryStatement($parentNode);
-
- // declare-statement
- case TokenKind::DeclareKeyword:
- return $this->parseDeclareStatement($parentNode);
-
- // attribute before statement or anonymous function
- case TokenKind::AttributeToken:
- return $this->parseAttributeStatement($parentNode);
-
- // function-declaration
- case TokenKind::FunctionKeyword:
- // Check that this is not an anonymous-function-creation-expression
- if ($this->lookahead($this->nameOrKeywordOrReservedWordTokens) || $this->lookahead(TokenKind::AmpersandToken, $this->nameOrKeywordOrReservedWordTokens)) {
- return $this->parseFunctionDeclaration($parentNode);
- }
- break;
-
- // class-declaration
- case TokenKind::FinalKeyword:
- case TokenKind::AbstractKeyword:
- if (!$this->lookahead(TokenKind::ClassKeyword)) {
- $this->advanceToken();
- return new SkippedToken($token);
- }
- case TokenKind::ClassKeyword:
- return $this->parseClassDeclaration($parentNode);
-
- // interface-declaration
- case TokenKind::InterfaceKeyword:
- return $this->parseInterfaceDeclaration($parentNode);
-
- // namespace-definition
- case TokenKind::NamespaceKeyword:
- if (!$this->lookahead(TokenKind::BackslashToken)) {
- // TODO add error handling for the case where a namespace definition does not occur in the outer-most scope
- return $this->parseNamespaceDefinition($parentNode);
- }
- break;
-
- // namespace-use-declaration
- case TokenKind::UseKeyword:
- return $this->parseNamespaceUseDeclaration($parentNode);
-
- case TokenKind::SemicolonToken:
- return $this->parseEmptyStatement($parentNode);
-
- case TokenKind::EchoKeyword:
- return $this->parseEchoStatement($parentNode);
-
- // trait-declaration
- case TokenKind::TraitKeyword:
- return $this->parseTraitDeclaration($parentNode);
-
- case TokenKind::EnumKeyword:
- return $this->parseEnumDeclaration($parentNode);
-
- // global-declaration
- case TokenKind::GlobalKeyword:
- return $this->parseGlobalDeclaration($parentNode);
-
- // const-declaration
- case TokenKind::ConstKeyword:
- return $this->parseConstDeclaration($parentNode);
-
- // function-static-declaration
- case TokenKind::StaticKeyword:
- // Check that this is not an anonymous-function-creation-expression
- if (!$this->lookahead([TokenKind::FunctionKeyword, TokenKind::FnKeyword, TokenKind::OpenParenToken, TokenKind::ColonColonToken])) {
- return $this->parseFunctionStaticDeclaration($parentNode);
- }
- break;
-
- case TokenKind::ScriptSectionEndTag:
- return $this->parseInlineHtml($parentNode);
-
- case TokenKind::UnsetKeyword:
- return $this->parseUnsetStatement($parentNode);
- }
-
- $expressionStatement = new ExpressionStatement();
- $expressionStatement->parent = $parentNode;
- $expressionStatement->expression = $this->parseExpression($expressionStatement, true);
- $expressionStatement->semicolon = $this->eatSemicolonOrAbortStatement();
- return $expressionStatement;
- };
- }
-
- private function parseClassElementFn() {
- return function ($parentNode) {
- $modifiers = $this->parseModifiers();
-
- $token = $this->getCurrentToken();
- switch ($token->kind) {
- case TokenKind::ConstKeyword:
- return $this->parseClassConstDeclaration($parentNode, $modifiers);
-
- case TokenKind::FunctionKeyword:
- return $this->parseMethodDeclaration($parentNode, $modifiers);
-
- case TokenKind::QuestionToken:
- return $this->parseRemainingPropertyDeclarationOrMissingMemberDeclaration(
- $parentNode,
- $modifiers,
- $this->eat1(TokenKind::QuestionToken)
- );
- case TokenKind::VariableName:
- return $this->parsePropertyDeclaration($parentNode, $modifiers);
-
- case TokenKind::UseKeyword:
- return $this->parseTraitUseClause($parentNode);
-
- case TokenKind::AttributeToken:
- return $this->parseAttributeStatement($parentNode);
-
- default:
- return $this->parseRemainingPropertyDeclarationOrMissingMemberDeclaration($parentNode, $modifiers);
- }
- };
- }
-
- private function parseClassDeclaration($parentNode) : Node {
- $classNode = new ClassDeclaration(); // TODO verify not nested
- $classNode->parent = $parentNode;
- $classNode->abstractOrFinalModifier = $this->eatOptional(TokenKind::AbstractKeyword, TokenKind::FinalKeyword);
- $classNode->classKeyword = $this->eat1(TokenKind::ClassKeyword);
- $classNode->name = $this->eat($this->nameOrReservedWordTokens); // TODO should be any
- $classNode->name->kind = TokenKind::Name;
- $classNode->classBaseClause = $this->parseClassBaseClause($classNode);
- $classNode->classInterfaceClause = $this->parseClassInterfaceClause($classNode);
- $classNode->classMembers = $this->parseClassMembers($classNode);
- return $classNode;
- }
-
- private function parseClassMembers($parentNode) : Node {
- $classMembers = new ClassMembersNode();
- $classMembers->openBrace = $this->eat1(TokenKind::OpenBraceToken);
- $classMembers->classMemberDeclarations = $this->parseList($classMembers, ParseContext::ClassMembers);
- $classMembers->closeBrace = $this->eat1(TokenKind::CloseBraceToken);
- $classMembers->parent = $parentNode;
- return $classMembers;
- }
-
- private function parseFunctionDeclaration($parentNode) {
- $functionNode = new FunctionDeclaration();
- $this->parseFunctionType($functionNode);
- $functionNode->parent = $parentNode;
- return $functionNode;
- }
-
- /**
- * @return Node
- */
- private function parseAttributeExpression($parentNode) {
- $attributeGroups = $this->parseAttributeGroups(null);
- // Warn about invalid syntax for attributed declarations
- // Lookahead for static, function, or fn for the only type of expressions that can have attributes (anonymous functions)
- if (in_array($this->token->kind, [TokenKind::FunctionKeyword, TokenKind::FnKeyword], true) ||
- $this->token->kind === TokenKind::StaticKeyword && $this->lookahead([TokenKind::FunctionKeyword, TokenKind::FnKeyword])) {
- $expression = $this->parsePrimaryExpression($parentNode);
- } else {
- // Create a MissingToken so that diagnostics indicate that the attributes did not match up with an expression/declaration.
- $expression = new MissingDeclaration();
- $expression->parent = $parentNode;
- $expression->declaration = new MissingToken(TokenKind::Expression, $this->token->fullStart);
- }
- if ($expression instanceof AnonymousFunctionCreationExpression ||
- $expression instanceof ArrowFunctionCreationExpression ||
- $expression instanceof MissingDeclaration) {
- $expression->attributes = $attributeGroups;
- foreach ($attributeGroups as $attributeGroup) {
- $attributeGroup->parent = $expression;
- }
- }
- return $expression;
- }
-
- /**
- * Precondition: The next token is an AttributeToken
- * @return Node
- */
- private function parseAttributeStatement($parentNode) {
- $attributeGroups = $this->parseAttributeGroups(null);
- if ($parentNode instanceof ClassMembersNode) {
- // Create a class element or a MissingMemberDeclaration
- $statement = $this->parseClassElementFn()($parentNode);
- } elseif ($parentNode instanceof TraitMembers) {
- // Create a trait element or a MissingMemberDeclaration
- $statement = $this->parseTraitElementFn()($parentNode);
- } elseif ($parentNode instanceof EnumMembers) {
- // Create a enum element or a MissingMemberDeclaration
- $statement = $this->parseEnumElementFn()($parentNode);
- } elseif ($parentNode instanceof InterfaceMembers) {
- // Create an interface element or a MissingMemberDeclaration
- $statement = $this->parseInterfaceElementFn()($parentNode);
- } else {
- // Classlikes, anonymous functions, global functions, and arrow functions can have attributes. Global constants cannot.
- if (in_array($this->token->kind, [TokenKind::ClassKeyword, TokenKind::TraitKeyword, TokenKind::InterfaceKeyword, TokenKind::AbstractKeyword, TokenKind::FinalKeyword, TokenKind::FunctionKeyword, TokenKind::FnKeyword, TokenKind::EnumKeyword], true) ||
- $this->token->kind === TokenKind::StaticKeyword && $this->lookahead([TokenKind::FunctionKeyword, TokenKind::FnKeyword])) {
- $statement = $this->parseStatement($parentNode);
- } else {
- // Create a MissingToken so that diagnostics indicate that the attributes did not match up with an expression/declaration.
- $statement = new MissingDeclaration();
- $statement->parent = $parentNode;
- $statement->declaration = new MissingToken(TokenKind::Expression, $this->token->fullStart);
- }
- }
-
- if ($statement instanceof FunctionLike ||
- $statement instanceof ClassDeclaration ||
- $statement instanceof TraitDeclaration ||
- $statement instanceof EnumDeclaration ||
- $statement instanceof EnumCaseDeclaration ||
- $statement instanceof InterfaceDeclaration ||
- $statement instanceof ClassConstDeclaration ||
- $statement instanceof PropertyDeclaration ||
- $statement instanceof MissingDeclaration ||
- $statement instanceof MissingMemberDeclaration) {
-
- $statement->attributes = $attributeGroups;
- foreach ($attributeGroups as $attributeGroup) {
- $attributeGroup->parent = $statement;
- }
- }
- return $statement;
- }
-
- /**
- * @param Node|null $parentNode
- * @return AttributeGroup[]
- */
- private function parseAttributeGroups($parentNode): array
- {
- $attributeGroups = [];
- while ($attributeToken = $this->eatOptional1(TokenKind::AttributeToken)) {
- $attributeGroup = new AttributeGroup();
- $attributeGroup->startToken = $attributeToken;
- $attributeGroup->attributes = $this->parseAttributeElementList($attributeGroup)
- ?: (new MissingToken(TokenKind::Name, $this->token->fullStart));
- $attributeGroup->endToken = $this->eat1(TokenKind::CloseBracketToken);
- $attributeGroup->parent = $parentNode;
- $attributeGroups[] = $attributeGroup;
- }
- return $attributeGroups;
- }
-
- /**
- * @return DelimitedList\AttributeElementList
- */
- private function parseAttributeElementList(AttributeGroup $parentNode) {
- return $this->parseDelimitedList(
- DelimitedList\AttributeElementList::class,
- TokenKind::CommaToken,
- $this->isQualifiedNameStartFn(),
- $this->parseAttributeFn(),
- $parentNode,
- false);
- }
-
- private function parseAttributeFn()
- {
- return function ($parentNode): Attribute {
- $attribute = new Attribute();
- $attribute->parent = $parentNode;
- $attribute->name = $this->parseQualifiedName($attribute);
- $attribute->openParen = $this->eatOptional1(TokenKind::OpenParenToken);
- if ($attribute->openParen) {
- $attribute->argumentExpressionList = $this->parseArgumentExpressionList($attribute);
- $attribute->closeParen = $this->eat1(TokenKind::CloseParenToken);
- }
- return $attribute;
- };
- }
-
- private function parseMethodDeclaration($parentNode, $modifiers) {
- $methodDeclaration = new MethodDeclaration();
- $methodDeclaration->modifiers = $modifiers;
- $this->parseFunctionType($methodDeclaration, true);
- $methodDeclaration->parent = $parentNode;
- return $methodDeclaration;
- }
-
- private function parseParameterFn() {
- return function ($parentNode) {
- $parameter = new Parameter();
- $parameter->parent = $parentNode;
- if ($this->token->kind === TokenKind::AttributeToken) {
- $parameter->attributes = $this->parseAttributeGroups($parameter);
- }
- // Note that parameter modifiers are allowed to be repeated by the parser in php 8.1 (it is a compiler error)
- //
- // TODO: Remove the visibilityToken in a future backwards incompatible release
- $parameter->visibilityToken = $this->eatOptional([TokenKind::PublicKeyword, TokenKind::ProtectedKeyword, TokenKind::PrivateKeyword]);
- $parameter->modifiers = $this->parseParameterModifiers() ?: null;
-
- $parameter->questionToken = $this->eatOptional1(TokenKind::QuestionToken);
- $parameter->typeDeclarationList = $this->tryParseParameterTypeDeclarationList($parameter);
- if ($parameter->typeDeclarationList) {
- $children = $parameter->typeDeclarationList->children;
- if (end($children) instanceof MissingToken && ($children[\count($children) - 2]->kind ?? null) === TokenKind::AmpersandToken) {
- array_pop($parameter->typeDeclarationList->children);
- $parameter->byRefToken = array_pop($parameter->typeDeclarationList->children);
- if (!$parameter->typeDeclarationList->children) {
- unset($parameter->typeDeclarationList);
- }
- }
- } elseif ($parameter->questionToken) {
- // TODO ParameterType?
- $parameter->typeDeclarationList = new MissingToken(TokenKind::PropertyType, $this->token->fullStart);
- }
- if (!$parameter->byRefToken) {
- $parameter->byRefToken = $this->eatOptional1(TokenKind::AmpersandToken);
- }
- // TODO add post-parse rule that prevents assignment
- // TODO add post-parse rule that requires only last parameter be variadic
- $parameter->dotDotDotToken = $this->eatOptional1(TokenKind::DotDotDotToken);
- $parameter->variableName = $this->eat1(TokenKind::VariableName);
- $parameter->equalsToken = $this->eatOptional1(TokenKind::EqualsToken);
- if ($parameter->equalsToken !== null) {
- // TODO add post-parse rule that checks for invalid assignments
- $parameter->default = $this->parseExpression($parameter);
- }
- return $parameter;
- };
- }
-
- /**
- * @param ArrowFunctionCreationExpression|AnonymousFunctionCreationExpression|FunctionDeclaration|MethodDeclaration $parentNode a node with FunctionReturnType trait
- */
- private function parseAndSetReturnTypeDeclarationList($parentNode) {
- $returnTypeList = $this->parseReturnTypeDeclarationList($parentNode);
- if (!$returnTypeList) {
- $parentNode->returnTypeList = new MissingToken(TokenKind::ReturnType, $this->token->fullStart);
- return;
- }
- $parentNode->returnTypeList = $returnTypeList;
- }
-
- const TYPE_DELIMITER_TOKENS = [
- TokenKind::BarToken,
- TokenKind::AmpersandToken,
- ];
-
- /**
- * Attempt to parse the return type after the `:` and optional `?` token.
- *
- * @return DelimitedList\QualifiedNameList|null
- */
- private function parseReturnTypeDeclarationList($parentNode) {
- $result = $this->parseDelimitedList(
- DelimitedList\QualifiedNameList::class,
- self::TYPE_DELIMITER_TOKENS,
- function ($token) {
- return \in_array($token->kind, $this->returnTypeDeclarationTokens, true) || $this->isQualifiedNameStart($token);
- },
- function ($parentNode) {
- return $this->parseReturnTypeDeclaration($parentNode);
- },
- $parentNode,
- false);
-
- // Add a MissingToken so that this will warn about `function () : T| {}`
- // TODO: Make this a reusable abstraction?
- if ($result && in_array(end($result->children)->kind ?? null, self::TYPE_DELIMITER_TOKENS)) {
- $result->children[] = new MissingToken(TokenKind::ReturnType, $this->token->fullStart);
- }
- return $result;
- }
-
- private function parseReturnTypeDeclaration($parentNode) {
- return $this->eatOptional($this->returnTypeDeclarationTokens)
- ?? $this->parseQualifiedName($parentNode);
- }
-
- private function tryParseParameterTypeDeclaration($parentNode) {
- $parameterTypeDeclaration =
- $this->eatOptional($this->parameterTypeDeclarationTokens) ?? $this->parseQualifiedName($parentNode);
- return $parameterTypeDeclaration;
- }
-
- /**
- * @param Node $parentNode
- * @return DelimitedList\QualifiedNameList|null
- */
- private function tryParseParameterTypeDeclarationList($parentNode) {
- $result = $this->parseDelimitedList(
- DelimitedList\QualifiedNameList::class,
- self::TYPE_DELIMITER_TOKENS,
- function ($token) {
- return \in_array($token->kind, $this->parameterTypeDeclarationTokens, true) || $this->isQualifiedNameStart($token);
- },
- function ($parentNode) {
- return $this->tryParseParameterTypeDeclaration($parentNode);
- },
- $parentNode,
- true);
-
- // Add a MissingToken so that this will Warn about `function (T| $x) {}`
- // TODO: Make this a reusable abstraction?
- if ($result && in_array(end($result->children)->kind ?? null, self::TYPE_DELIMITER_TOKENS)) {
- $result->children[] = new MissingToken(TokenKind::Name, $this->token->fullStart);
- }
- return $result;
- }
-
- private function parseCompoundStatement($parentNode) {
- $compoundStatement = new CompoundStatementNode();
- $compoundStatement->openBrace = $this->eat1(TokenKind::OpenBraceToken);
- $compoundStatement->statements = $this->parseList($compoundStatement, ParseContext::BlockStatements);
- $compoundStatement->closeBrace = $this->eat1(TokenKind::CloseBraceToken);
- $compoundStatement->parent = $parentNode;
- return $compoundStatement;
- }
-
- private function array_push_list(& $array, $list) {
- foreach ($list as $item) {
- $array[] = $item;
- }
- }
-
- private function isClassMemberDeclarationStart(Token $token) {
- switch ($token->kind) {
- // const-modifier
- case TokenKind::ConstKeyword:
-
- // visibility-modifier
- case TokenKind::PublicKeyword:
- case TokenKind::ProtectedKeyword:
- case TokenKind::PrivateKeyword:
-
- // static-modifier
- case TokenKind::StaticKeyword:
-
- // readonly-modifier
- case TokenKind::ReadonlyKeyword:
-
- // class-modifier
- case TokenKind::AbstractKeyword:
- case TokenKind::FinalKeyword:
-
- case TokenKind::VarKeyword:
-
- case TokenKind::FunctionKeyword:
-
- case TokenKind::UseKeyword:
-
- // attributes
- case TokenKind::AttributeToken:
- return true;
-
- }
-
- return false;
- }
-
- private function isStatementStart(Token $token) {
- // https://github.com/php/php-langspec/blob/master/spec/19-grammar.md#statements
- switch ($token->kind) {
- // Compound Statements
- case TokenKind::OpenBraceToken:
-
- // Labeled Statements
- case TokenKind::Name:
-// case TokenKind::CaseKeyword: // TODO update spec
-// case TokenKind::DefaultKeyword:
-
- // Expression Statements
- case TokenKind::SemicolonToken:
- case TokenKind::IfKeyword:
- case TokenKind::SwitchKeyword:
-
- // Iteration Statements
- case TokenKind::WhileKeyword:
- case TokenKind::DoKeyword:
- case TokenKind::ForKeyword:
- case TokenKind::ForeachKeyword:
-
- // Jump Statements
- case TokenKind::GotoKeyword:
- case TokenKind::ContinueKeyword:
- case TokenKind::BreakKeyword:
- case TokenKind::ReturnKeyword:
- case TokenKind::ThrowKeyword:
-
- // The try Statement
- case TokenKind::TryKeyword:
-
- // The declare Statement
- case TokenKind::DeclareKeyword:
-
- // const-declaration
- case TokenKind::ConstKeyword:
-
- // function-definition
- case TokenKind::FunctionKeyword:
-
- // class-declaration
- case TokenKind::ClassKeyword:
- case TokenKind::AbstractKeyword:
- case TokenKind::FinalKeyword:
-
- // interface-declaration
- case TokenKind::InterfaceKeyword:
-
- // trait-declaration
- case TokenKind::TraitKeyword:
-
- // enum-declaration
- case TokenKind::EnumKeyword:
-
- // namespace-definition
- case TokenKind::NamespaceKeyword:
-
- // namespace-use-declaration
- case TokenKind::UseKeyword:
-
- // global-declaration
- case TokenKind::GlobalKeyword:
-
- // function-static-declaration
- case TokenKind::StaticKeyword:
-
- case TokenKind::ScriptSectionEndTag:
-
- // attributes
- case TokenKind::AttributeToken:
- return true;
-
- default:
- return $this->isExpressionStart($token);
- }
- }
-
- private function isExpressionStart($token) {
- return ($this->isExpressionStartFn())($token);
- }
-
- private function isExpressionStartFn() {
- return function ($token) {
- switch ($token->kind) {
- // Script Inclusion Expression
- case TokenKind::RequireKeyword:
- case TokenKind::RequireOnceKeyword:
- case TokenKind::IncludeKeyword:
- case TokenKind::IncludeOnceKeyword:
-
- // yield-expression
- case TokenKind::YieldKeyword:
- case TokenKind::YieldFromKeyword:
-
- // object-creation-expression
- case TokenKind::NewKeyword:
- case TokenKind::CloneKeyword:
- return true;
-
- // unary-op-expression
- case TokenKind::PlusToken:
- case TokenKind::MinusToken:
- case TokenKind::ExclamationToken:
- case TokenKind::TildeToken:
-
- // error-control-expression
- case TokenKind::AtSymbolToken:
-
- // prefix-increment-expression
- case TokenKind::PlusPlusToken:
- // prefix-decrement-expression
- case TokenKind::MinusMinusToken:
- return true;
-
- // variable-name
- case TokenKind::VariableName:
- case TokenKind::DollarToken:
- return true;
-
- // qualified-name
- case TokenKind::Name:
- case TokenKind::BackslashToken:
- return true;
- case TokenKind::NamespaceKeyword:
- // TODO currently only supports qualified-names, but eventually parse namespace declarations
- return $this->isNamespaceKeywordStartOfExpression($token);
-
- // literal
- case TokenKind::DecimalLiteralToken: // TODO merge dec, oct, hex, bin, float -> NumericLiteral
- case TokenKind::OctalLiteralToken:
- case TokenKind::HexadecimalLiteralToken:
- case TokenKind::BinaryLiteralToken:
- case TokenKind::FloatingLiteralToken:
- case TokenKind::InvalidOctalLiteralToken:
- case TokenKind::InvalidHexadecimalLiteral:
- case TokenKind::InvalidBinaryLiteral:
- case TokenKind::IntegerLiteralToken:
-
- case TokenKind::StringLiteralToken:
-
- case TokenKind::SingleQuoteToken:
- case TokenKind::DoubleQuoteToken:
- case TokenKind::HeredocStart:
- case TokenKind::BacktickToken:
-
- // array-creation-expression
- case TokenKind::ArrayKeyword:
- case TokenKind::OpenBracketToken:
-
- // intrinsic-construct
- case TokenKind::EchoKeyword:
- case TokenKind::ListKeyword:
- case TokenKind::UnsetKeyword:
-
- // intrinsic-operator
- case TokenKind::EmptyKeyword:
- case TokenKind::EvalKeyword:
- case TokenKind::ExitKeyword:
- case TokenKind::DieKeyword:
- case TokenKind::IsSetKeyword:
- case TokenKind::PrintKeyword:
-
- // ( expression )
- case TokenKind::OpenParenToken:
- case TokenKind::ArrayCastToken:
- case TokenKind::BoolCastToken:
- case TokenKind::DoubleCastToken:
- case TokenKind::IntCastToken:
- case TokenKind::ObjectCastToken:
- case TokenKind::StringCastToken:
- case TokenKind::UnsetCastToken:
- case TokenKind::MatchKeyword:
-
- // anonymous-function-creation-expression
- case TokenKind::StaticKeyword:
- case TokenKind::FunctionKeyword:
- case TokenKind::FnKeyword:
- case TokenKind::AttributeToken:
- return true;
- }
- return \in_array($token->kind, $this->reservedWordTokens, true);
- };
- }
-
- /**
- * Handles the fact that $token may either be getCurrentToken or the token immediately before it in isExpressionStartFn().
- * An expression can be namespace\CONST, namespace\fn(), or namespace\ClassName
- */
- private function isNamespaceKeywordStartOfExpression(Token $token) : bool {
- $nextToken = $this->getCurrentToken();
- if ($nextToken->kind === TokenKind::BackslashToken) {
- return true;
- }
- if ($nextToken !== $token) {
- return false;
- }
- $oldPosition = $this->lexer->getCurrentPosition();
- $nextToken = $this->lexer->scanNextToken();
- $this->lexer->setCurrentPosition($oldPosition);
- return $nextToken->kind === TokenKind::BackslashToken;
- }
-
- /**
- * @param Node $parentNode
- * @return Token|MissingToken|Node
- */
- private function parsePrimaryExpression($parentNode) {
- $token = $this->getCurrentToken();
- switch ($token->kind) {
- // variable-name
- case TokenKind::VariableName: // TODO special case $this
- case TokenKind::DollarToken:
- return $this->parseSimpleVariable($parentNode);
-
- // qualified-name
- case TokenKind::Name: // TODO Qualified name
- case TokenKind::BackslashToken:
- case TokenKind::NamespaceKeyword:
- return $this->parseQualifiedName($parentNode);
-
- case TokenKind::DecimalLiteralToken: // TODO merge dec, oct, hex, bin, float -> NumericLiteral
- case TokenKind::OctalLiteralToken:
- case TokenKind::HexadecimalLiteralToken:
- case TokenKind::BinaryLiteralToken:
- case TokenKind::FloatingLiteralToken:
- case TokenKind::InvalidOctalLiteralToken:
- case TokenKind::InvalidHexadecimalLiteral:
- case TokenKind::InvalidBinaryLiteral:
- case TokenKind::IntegerLiteralToken:
- return $this->parseNumericLiteralExpression($parentNode);
-
- case TokenKind::StringLiteralToken:
- return $this->parseStringLiteralExpression($parentNode);
-
- case TokenKind::DoubleQuoteToken:
- case TokenKind::SingleQuoteToken:
- case TokenKind::HeredocStart:
- case TokenKind::BacktickToken:
- return $this->parseStringLiteralExpression2($parentNode);
-
- // TODO constant-expression
-
- // array-creation-expression
- case TokenKind::ArrayKeyword:
- case TokenKind::OpenBracketToken:
- return $this->parseArrayCreationExpression($parentNode);
-
- // intrinsic-construct
- case TokenKind::ListKeyword:
- return $this->parseListIntrinsicExpression($parentNode);
-
- // intrinsic-operator
- case TokenKind::EmptyKeyword:
- return $this->parseEmptyIntrinsicExpression($parentNode);
- case TokenKind::EvalKeyword:
- return $this->parseEvalIntrinsicExpression($parentNode);
-
- case TokenKind::ExitKeyword:
- case TokenKind::DieKeyword:
- return $this->parseExitIntrinsicExpression($parentNode);
-
- case TokenKind::IsSetKeyword:
- return $this->parseIssetIntrinsicExpression($parentNode);
-
- case TokenKind::PrintKeyword:
- return $this->parsePrintIntrinsicExpression($parentNode);
-
- // ( expression )
- case TokenKind::OpenParenToken:
- return $this->parseParenthesizedExpression($parentNode);
-
- // anonymous-function-creation-expression
- case TokenKind::AttributeToken:
- return $this->parseAttributeExpression($parentNode);
-
- case TokenKind::StaticKeyword:
- // handle `static::`, `static(`, `new static;`, `instanceof static`
- if (!$this->lookahead([TokenKind::FunctionKeyword, TokenKind::FnKeyword])) {
- // TODO: Should this check the parent type to reject `$x = static;`, `$x = static();`, etc.
- return $this->parseStaticQualifiedName($parentNode);
- }
- // Could be `static function` anonymous function creation expression, so flow through
- case TokenKind::FunctionKeyword:
- case TokenKind::FnKeyword:
- return $this->parseAnonymousFunctionCreationExpression($parentNode);
-
- case TokenKind::TrueReservedWord:
- case TokenKind::FalseReservedWord:
- case TokenKind::NullReservedWord:
- // handle `true::`, `true(`, `true\`
- if ($this->lookahead([TokenKind::BackslashToken, TokenKind::ColonColonToken, TokenKind::OpenParenToken])) {
- return $this->parseQualifiedName($parentNode);
- }
- return $this->parseReservedWordExpression($parentNode);
- case TokenKind::MatchKeyword:
- return $this->parseMatchExpression($parentNode);
- }
- if (\in_array($token->kind, TokenStringMaps::RESERVED_WORDS)) {
- return $this->parseQualifiedName($parentNode);
- }
-
- return new MissingToken(TokenKind::Expression, $token->fullStart);
- }
-
- private function parseEmptyStatement($parentNode) {
- $emptyStatement = new EmptyStatement();
- $emptyStatement->parent = $parentNode;
- $emptyStatement->semicolon = $this->eat1(TokenKind::SemicolonToken);
- return $emptyStatement;
- }
-
- private function parseStringLiteralExpression($parentNode) {
- // TODO validate input token
- $expression = new StringLiteral();
- $expression->parent = $parentNode;
- $expression->children = $this->getCurrentToken(); // TODO - merge string types
- $this->advanceToken();
- return $expression;
- }
-
- private function parseStringLiteralExpression2($parentNode) {
- // TODO validate input token
- $expression = new StringLiteral();
- $expression->parent = $parentNode;
- $expression->startQuote = $this->eat(TokenKind::SingleQuoteToken, TokenKind::DoubleQuoteToken, TokenKind::HeredocStart, TokenKind::BacktickToken);
- $expression->children = [];
-
- while (true) {
- switch ($this->getCurrentToken()->kind) {
- case TokenKind::DollarOpenBraceToken:
- case TokenKind::OpenBraceDollarToken:
- $expression->children[] = $this->eat(TokenKind::DollarOpenBraceToken, TokenKind::OpenBraceDollarToken);
- // TODO: Reject ${var->prop} and ${(var->prop)} without rejecting ${var+otherVar}
- // Currently, this fails to reject ${var->prop} (because `var` has TokenKind::Name instead of StringVarname)
- if ($this->getCurrentToken()->kind === TokenKind::StringVarname) {
- $expression->children[] = $this->parseComplexDollarTemplateStringExpression($expression);
- } else {
- $expression->children[] = $this->parseExpression($expression);
- }
- $expression->children[] = $this->eat1(TokenKind::CloseBraceToken);
- break;
- case $startQuoteKind = $expression->startQuote->kind:
- case TokenKind::EndOfFileToken:
- case TokenKind::HeredocEnd:
- $expression->endQuote = $this->eat($startQuoteKind, TokenKind::HeredocEnd);
- return $expression;
- case TokenKind::VariableName:
- $expression->children[] = $this->parseTemplateStringExpression($expression);
- break;
- default:
- $expression->children[] = $this->getCurrentToken();
- $this->advanceToken();
- break;
- }
- }
- }
-
- /**
- * This is used to parse the contents of `"${...}"` expressions.
- *
- * Supported: x, x[0], x[$y]
- * Not supported: $x->p1, x[0][1], etc.
- * @see parseTemplateStringExpression
- *
- * Precondition: getCurrentToken()->kind === TokenKind::StringVarname
- */
- private function parseComplexDollarTemplateStringExpression($parentNode) {
- $var = $this->parseSimpleVariable($parentNode);
- $token = $this->getCurrentToken();
- if ($token->kind === TokenKind::OpenBracketToken) {
- return $this->parseTemplateStringSubscriptExpression($var);
- }
- return $var;
- }
-
- /**
- * Double-quoted and heredoc strings support a basic set of expression types, described in http://php.net/manual/en/language.types.string.php#language.types.string.parsing
- * Supported: $x, $x->p, $x[0], $x[$y]
- * Not supported: $x->p1->p2, $x[0][1], etc.
- * Since there is a relatively small finite set of allowed forms, I implement it here rather than trying to reuse the general expression parsing code.
- */
- private function parseTemplateStringExpression($parentNode) {
- $token = $this->getCurrentToken();
- if ($token->kind === TokenKind::VariableName) {
- $var = $this->parseSimpleVariable($parentNode);
- $token = $this->getCurrentToken();
- if ($token->kind === TokenKind::OpenBracketToken) {
- return $this->parseTemplateStringSubscriptExpression($var);
- } else if ($token->kind === TokenKind::ArrowToken || $token->kind === TokenKind::QuestionArrowToken) {
- return $this->parseTemplateStringMemberAccessExpression($var);
- } else {
- return $var;
- }
- }
-
- return null;
- }
-
- private function parseTemplateStringSubscriptExpression($postfixExpression) : SubscriptExpression {
- $subscriptExpression = new SubscriptExpression();
- $subscriptExpression->parent = $postfixExpression->parent;
- $postfixExpression->parent = $subscriptExpression;
-
- $subscriptExpression->postfixExpression = $postfixExpression;
- $subscriptExpression->openBracketOrBrace = $this->eat1(TokenKind::OpenBracketToken); // Only [] syntax is supported, not {}
- $token = $this->getCurrentToken();
- if ($token->kind === TokenKind::VariableName) {
- $subscriptExpression->accessExpression = $this->parseSimpleVariable($subscriptExpression);
- } elseif ($token->kind === TokenKind::IntegerLiteralToken) {
- $subscriptExpression->accessExpression = $this->parseNumericLiteralExpression($subscriptExpression);
- } elseif ($token->kind === TokenKind::StringLiteralToken) {
- // TODO: investigate if this should add other uncommon types of tokens for strings/numbers mentioned in parsePrimaryExpression()
- $subscriptExpression->accessExpression = $this->parseStringLiteralExpression($subscriptExpression);
- } elseif ($token->kind === TokenKind::Name) {
- $subscriptExpression->accessExpression = $this->parseTemplateStringSubscriptStringLiteral($subscriptExpression);
- } else {
- $subscriptExpression->accessExpression = new MissingToken(TokenKind::Expression, $token->fullStart);
- }
-
- $subscriptExpression->closeBracketOrBrace = $this->eat1(TokenKind::CloseBracketToken);
-
- return $subscriptExpression;
- }
-
- private function parseTemplateStringSubscriptStringLiteral($parentNode) : StringLiteral {
- $expression = new StringLiteral();
- $expression->parent = $parentNode;
- $expression->children = $this->eat1(TokenKind::Name);
- return $expression;
- }
-
- private function parseTemplateStringMemberAccessExpression($expression) : MemberAccessExpression {
- $memberAccessExpression = new MemberAccessExpression();
- $memberAccessExpression->parent = $expression->parent;
- $expression->parent = $memberAccessExpression;
-
- $memberAccessExpression->dereferencableExpression = $expression;
- $memberAccessExpression->arrowToken = $this->eat(TokenKind::ArrowToken, TokenKind::QuestionArrowToken);
- $memberAccessExpression->memberName = $this->eat1(TokenKind::Name);
-
- return $memberAccessExpression;
- }
-
- private function parseNumericLiteralExpression($parentNode) {
- $numericLiteral = new NumericLiteral();
- $numericLiteral->parent = $parentNode;
- $numericLiteral->children = $this->getCurrentToken();
- $this->advanceToken();
- return $numericLiteral;
- }
-
- private function parseReservedWordExpression($parentNode) {
- $reservedWord = new ReservedWord();
- $reservedWord->parent = $parentNode;
- $reservedWord->children = $this->getCurrentToken();
- $this->advanceToken();
- return $reservedWord;
- }
-
- private function isModifier($token): bool {
- switch ($token->kind) {
- // class-modifier
- case TokenKind::AbstractKeyword:
- case TokenKind::FinalKeyword:
-
- // visibility-modifier
- case TokenKind::PublicKeyword:
- case TokenKind::ProtectedKeyword:
- case TokenKind::PrivateKeyword:
-
- // static-modifier
- case TokenKind::StaticKeyword:
-
- // readonly-modifier
- case TokenKind::ReadonlyKeyword:
-
- // var
- case TokenKind::VarKeyword:
- return true;
- }
- return false;
- }
-
- private function isParameterModifier($token): bool {
- switch ($token->kind) {
- // visibility-modifier
- case TokenKind::PublicKeyword:
- case TokenKind::ProtectedKeyword:
- case TokenKind::PrivateKeyword:
-
- // readonly-modifier
- case TokenKind::ReadonlyKeyword:
-
- return true;
- }
- return false;
- }
-
- /** @return Token[] */
- private function parseParameterModifiers(): array {
- $modifiers = [];
- $token = $this->getCurrentToken();
- while ($this->isParameterModifier($token)) {
- $modifiers[] = $token;
- $this->advanceToken();
- $token = $this->getCurrentToken();
- }
- return $modifiers;
- }
-
- /** @return Token[] */
- private function parseModifiers(): array {
- $modifiers = [];
- $token = $this->getCurrentToken();
- while ($this->isModifier($token)) {
- $modifiers[] = $token;
- $this->advanceToken();
- $token = $this->getCurrentToken();
- }
- return $modifiers;
- }
-
- private function isParameterStartFn() {
- return function ($token) {
- switch ($token->kind) {
- case TokenKind::DotDotDotToken:
-
- // qualified-name
- case TokenKind::Name: // http://php.net/manual/en/language.namespaces.rules.php
- case TokenKind::BackslashToken:
- case TokenKind::NamespaceKeyword:
-
- case TokenKind::AmpersandToken:
-
- case TokenKind::VariableName:
-
- // nullable-type
- case TokenKind::QuestionToken:
-
- // parameter promotion
- case TokenKind::PublicKeyword:
- case TokenKind::ProtectedKeyword:
- case TokenKind::PrivateKeyword:
- case TokenKind::AttributeToken:
- return true;
- }
-
- // scalar-type
- return \in_array($token->kind, $this->parameterTypeDeclarationTokens, true);
- };
- }
-
- /**
- * @param string $className (name of subclass of DelimitedList)
- * @param int $delimiter
- * @param callable $isElementStartFn
- * @param callable $parseElementFn
- * @param Node $parentNode
- * @param bool $allowEmptyElements
- * @return DelimitedList|null instance of $className
- */
- private function parseDelimitedList($className, $delimiter, $isElementStartFn, $parseElementFn, $parentNode, $allowEmptyElements = false) {
- // TODO consider allowing empty delimiter to be more tolerant
- $node = new $className();
- $token = $this->getCurrentToken();
- do {
- if ($isElementStartFn($token)) {
- $node->addElement($parseElementFn($node));
- } elseif (!$allowEmptyElements || ($allowEmptyElements && !$this->checkToken($delimiter))) {
- break;
- }
-
- $delimiterToken = $this->eatOptional($delimiter);
- if ($delimiterToken !== null) {
- $node->addElement($delimiterToken);
- }
- $token = $this->getCurrentToken();
- // TODO ERROR CASE - no delimiter, but a param follows
- } while ($delimiterToken !== null);
-
-
- $node->parent = $parentNode;
- if ($node->children === null) {
- return null;
- }
- return $node;
- }
-
- /**
- * @internal
- */
- const QUALIFIED_NAME_START_TOKENS = [
- TokenKind::BackslashToken,
- TokenKind::NamespaceKeyword,
- TokenKind::Name,
- ];
-
- private function isQualifiedNameStart($token) {
- return \in_array($token->kind, self::QUALIFIED_NAME_START_TOKENS, true);
- }
-
- private function isQualifiedNameStartFn() {
- return function ($token) {
- return \in_array($token->kind, self::QUALIFIED_NAME_START_TOKENS, true);
- };
- }
-
- private function isQualifiedNameStartForCatchFn() {
- return function ($token) {
- // Unfortunately, catch(int $x) is *syntactically valid* php which `php --syntax-check` would accept.
- // (tolerant-php-parser is concerned with syntax, not semantics)
- return \in_array($token->kind, self::QUALIFIED_NAME_START_TOKENS, true) ||
- \in_array($token->kind, $this->reservedWordTokens, true);
- };
- }
-
- /**
- * @return QualifiedName
- */
- private function parseStaticQualifiedName($parentNode) {
- $node = new QualifiedName();
- $token = $this->eat(TokenKind::StaticKeyword);
- $token->kind = TokenKind::Name;
- $node->parent = $parentNode;
- $node->nameParts = [$token];
- return $node;
- }
-
- /**
- * @return QualifiedName|null - returns null for invalid qualified names such as `static\` (use parseStaticQualifiedName for that)
- */
- private function parseQualifiedName($parentNode) {
- return ($this->parseQualifiedNameFn())($parentNode);
- }
-
- private function parseQualifiedNameFn() {
- return function ($parentNode) {
- $node = new QualifiedName();
- $node->parent = $parentNode;
- $node->relativeSpecifier = $this->parseRelativeSpecifier($node);
- if (!isset($node->relativeSpecifier)) {
- $node->globalSpecifier = $this->eatOptional1(TokenKind::BackslashToken);
- }
-
- $nameParts =
- $this->parseDelimitedList(
- DelimitedList\QualifiedNameParts::class,
- TokenKind::BackslashToken,
- function ($token) {
- // a\static() <- INVALID (but not checked for right now)
- // new a\static() <- INVALID
- // new static() <- VALID
- // a\static\b <- INVALID
- // a\function <- INVALID
- // a\true\b <-VALID
- // a\b\true <-VALID
- // a\static::b <-VALID
- // TODO more tests
- return $this->lookahead(TokenKind::BackslashToken)
- ? in_array($token->kind, $this->nameOrReservedWordTokens)
- : in_array($token->kind, $this->nameOrStaticOrReservedWordTokens);
- },
- function ($parentNode) {
- $name = $this->lookahead(TokenKind::BackslashToken)
- ? $this->eat($this->nameOrReservedWordTokens)
- : $this->eat($this->nameOrStaticOrReservedWordTokens); // TODO support keyword name
- $name->kind = TokenKind::Name; // bool/true/null/static should not be treated as keywords in this case
- return $name;
- }, $node);
- if ($nameParts === null && $node->globalSpecifier === null && $node->relativeSpecifier === null) {
- return null;
- }
-
- $node->nameParts = $nameParts ? $nameParts->children : [];
-
- return $node;
- };
- }
-
- private function parseRelativeSpecifier($parentNode) {
- $node = new RelativeSpecifier();
- $node->parent = $parentNode;
- $node->namespaceKeyword = $this->eatOptional1(TokenKind::NamespaceKeyword);
- if ($node->namespaceKeyword !== null) {
- $node->backslash = $this->eat1(TokenKind::BackslashToken);
- }
- if (isset($node->backslash)) {
- return $node;
- }
- return null;
- }
-
- /**
- * @param MethodDeclaration|FunctionDeclaration|AnonymousFunctionCreationExpression $functionDeclaration
- */
- private function parseFunctionType(Node $functionDeclaration, $canBeAbstract = false, $isAnonymous = false) {
-
- $functionDeclaration->functionKeyword = $this->eat1(TokenKind::FunctionKeyword);
- $functionDeclaration->byRefToken = $this->eatOptional1(TokenKind::AmpersandToken);
- $functionDeclaration->name = $isAnonymous
- ? $this->eatOptional($this->nameOrKeywordOrReservedWordTokens)
- : $this->eat($this->nameOrKeywordOrReservedWordTokens);
-
- if (isset($functionDeclaration->name)) {
- $functionDeclaration->name->kind = TokenKind::Name;
- }
-
- if ($isAnonymous && isset($functionDeclaration->name)) {
- // Anonymous functions should not have names
- $functionDeclaration->name = new SkippedToken($functionDeclaration->name); // TODO instead handle this during post-walk
- }
-
- $functionDeclaration->openParen = $this->eat1(TokenKind::OpenParenToken);
- $functionDeclaration->parameters = $this->parseDelimitedList(
- DelimitedList\ParameterDeclarationList::class,
- TokenKind::CommaToken,
- $this->isParameterStartFn(),
- $this->parseParameterFn(),
- $functionDeclaration);
- $functionDeclaration->closeParen = $this->eat1(TokenKind::CloseParenToken);
- if ($isAnonymous) {
- $functionDeclaration->anonymousFunctionUseClause = $this->parseAnonymousFunctionUseClause($functionDeclaration);
- }
-
- if ($this->checkToken(TokenKind::ColonToken)) {
- $functionDeclaration->colonToken = $this->eat1(TokenKind::ColonToken);
- $functionDeclaration->questionToken = $this->eatOptional1(TokenKind::QuestionToken);
- $this->parseAndSetReturnTypeDeclarationList($functionDeclaration);
- }
-
- if ($canBeAbstract) {
- $functionDeclaration->compoundStatementOrSemicolon = $this->eatOptional1(TokenKind::SemicolonToken);
- }
-
- if (!isset($functionDeclaration->compoundStatementOrSemicolon)) {
- $functionDeclaration->compoundStatementOrSemicolon = $this->parseCompoundStatement($functionDeclaration);
- }
- }
-
- private function parseNamedLabelStatement($parentNode) {
- $namedLabelStatement = new NamedLabelStatement();
- $namedLabelStatement->parent = $parentNode;
- $namedLabelStatement->name = $this->eat1(TokenKind::Name);
- $namedLabelStatement->colon = $this->eat1(TokenKind::ColonToken);
- // A named label is a statement on its own. E.g. `while (false) label: echo "test";`
- // is parsed as `while (false) { label: } echo "test";
- return $namedLabelStatement;
- }
-
- /**
- * @param int|int[] ...$expectedKinds an array of one or more kinds/sets of allowed kinds in each position
- */
- private function lookahead(...$expectedKinds) : bool {
- $startPos = $this->lexer->getCurrentPosition();
- $startToken = $this->token;
- $succeeded = true;
- foreach ($expectedKinds as $kind) {
- $token = $this->lexer->scanNextToken();
- $currentPosition = $this->lexer->getCurrentPosition();
- $endOfFilePosition = $this->lexer->getEndOfFilePosition();
- if (\is_array($kind)) {
- $succeeded = false;
- foreach ($kind as $kindOption) {
- if ($currentPosition <= $endOfFilePosition && $token->kind === $kindOption) {
- $succeeded = true;
- break;
- }
- }
- } else {
- if ($currentPosition > $endOfFilePosition || $token->kind !== $kind) {
- $succeeded = false;
- break;
- }
- }
- }
- $this->lexer->setCurrentPosition($startPos);
- $this->token = $startToken;
- return $succeeded;
- }
-
- private function checkToken($expectedKind) : bool {
- return $this->getCurrentToken()->kind === $expectedKind;
- }
-
- private function parseIfStatement($parentNode) {
- $ifStatement = new IfStatementNode();
- $ifStatement->parent = $parentNode;
- $ifStatement->ifKeyword = $this->eat1(TokenKind::IfKeyword);
- $ifStatement->openParen = $this->eat1(TokenKind::OpenParenToken);
- $ifStatement->expression = $this->parseExpression($ifStatement);
- $ifStatement->closeParen = $this->eat1(TokenKind::CloseParenToken);
- $curTokenKind = $this->getCurrentToken()->kind;
- if ($curTokenKind === TokenKind::ColonToken) {
- $ifStatement->colon = $this->eat1(TokenKind::ColonToken);
- $ifStatement->statements = $this->parseList($ifStatement, ParseContext::IfClause2Elements);
- } else if ($curTokenKind !== TokenKind::ScriptSectionEndTag) {
- // Fix #246 : properly parse `if (false) ?\>echoed text\statements = $this->parseStatement($ifStatement);
- }
- $ifStatement->elseIfClauses = []; // TODO - should be some standard for empty arrays vs. null?
- while ($this->checkToken(TokenKind::ElseIfKeyword)) {
- $ifStatement->elseIfClauses[] = $this->parseElseIfClause($ifStatement);
- }
-
- if ($this->checkToken(TokenKind::ElseKeyword)) {
- $ifStatement->elseClause = $this->parseElseClause($ifStatement);
- }
-
- $ifStatement->endifKeyword = $this->eatOptional1(TokenKind::EndIfKeyword);
- if ($ifStatement->endifKeyword) {
- $ifStatement->semicolon = $this->eatSemicolonOrAbortStatement();
- }
-
- return $ifStatement;
- }
-
- private function parseElseIfClause($parentNode) {
- $elseIfClause = new ElseIfClauseNode();
- $elseIfClause->parent = $parentNode;
- $elseIfClause->elseIfKeyword = $this->eat1(TokenKind::ElseIfKeyword);
- $elseIfClause->openParen = $this->eat1(TokenKind::OpenParenToken);
- $elseIfClause->expression = $this->parseExpression($elseIfClause);
- $elseIfClause->closeParen = $this->eat1(TokenKind::CloseParenToken);
- $curTokenKind = $this->getCurrentToken()->kind;
- if ($curTokenKind === TokenKind::ColonToken) {
- $elseIfClause->colon = $this->eat1(TokenKind::ColonToken);
- $elseIfClause->statements = $this->parseList($elseIfClause, ParseContext::IfClause2Elements);
- } elseif ($curTokenKind !== TokenKind::ScriptSectionEndTag) {
- $elseIfClause->statements = $this->parseStatement($elseIfClause);
- }
- return $elseIfClause;
- }
-
- private function parseElseClause($parentNode) {
- $elseClause = new ElseClauseNode();
- $elseClause->parent = $parentNode;
- $elseClause->elseKeyword = $this->eat1(TokenKind::ElseKeyword);
- $curTokenKind = $this->getCurrentToken()->kind;
- if ($curTokenKind === TokenKind::ColonToken) {
- $elseClause->colon = $this->eat1(TokenKind::ColonToken);
- $elseClause->statements = $this->parseList($elseClause, ParseContext::IfClause2Elements);
- } elseif ($curTokenKind !== TokenKind::ScriptSectionEndTag) {
- $elseClause->statements = $this->parseStatement($elseClause);
- }
- return $elseClause;
- }
-
- private function parseSwitchStatement($parentNode) {
- $switchStatement = new SwitchStatementNode();
- $switchStatement->parent = $parentNode;
- $switchStatement->switchKeyword = $this->eat1(TokenKind::SwitchKeyword);
- $switchStatement->openParen = $this->eat1(TokenKind::OpenParenToken);
- $switchStatement->expression = $this->parseExpression($switchStatement);
- $switchStatement->closeParen = $this->eat1(TokenKind::CloseParenToken);
- $switchStatement->openBrace = $this->eatOptional1(TokenKind::OpenBraceToken);
- $switchStatement->colon = $this->eatOptional1(TokenKind::ColonToken);
- $switchStatement->caseStatements = $this->parseList($switchStatement, ParseContext::SwitchStatementElements);
- if ($switchStatement->colon !== null) {
- $switchStatement->endswitch = $this->eat1(TokenKind::EndSwitchKeyword);
- $switchStatement->semicolon = $this->eatSemicolonOrAbortStatement();
- } else {
- $switchStatement->closeBrace = $this->eat1(TokenKind::CloseBraceToken);
- }
-
- return $switchStatement;
- }
-
- private function parseCaseOrDefaultStatement() {
- return function ($parentNode) {
- $caseStatement = new CaseStatementNode();
- $caseStatement->parent = $parentNode;
- // TODO add error checking
- $caseStatement->caseKeyword = $this->eat(TokenKind::CaseKeyword, TokenKind::DefaultKeyword);
- if ($caseStatement->caseKeyword->kind === TokenKind::CaseKeyword) {
- $caseStatement->expression = $this->parseExpression($caseStatement);
- }
- $caseStatement->defaultLabelTerminator = $this->eat(TokenKind::ColonToken, TokenKind::SemicolonToken);
- $caseStatement->statementList = $this->parseList($caseStatement, ParseContext::CaseStatementElements);
- return $caseStatement;
- };
- }
-
- private function parseWhileStatement($parentNode) {
- $whileStatement = new WhileStatement();
- $whileStatement->parent = $parentNode;
- $whileStatement->whileToken = $this->eat1(TokenKind::WhileKeyword);
- $whileStatement->openParen = $this->eat1(TokenKind::OpenParenToken);
- $whileStatement->expression = $this->parseExpression($whileStatement);
- $whileStatement->closeParen = $this->eat1(TokenKind::CloseParenToken);
- $whileStatement->colon = $this->eatOptional1(TokenKind::ColonToken);
- if ($whileStatement->colon !== null) {
- $whileStatement->statements = $this->parseList($whileStatement, ParseContext::WhileStatementElements);
- $whileStatement->endWhile = $this->eat1(TokenKind::EndWhileKeyword);
- $whileStatement->semicolon = $this->eatSemicolonOrAbortStatement();
- } elseif (!$this->checkToken(TokenKind::ScriptSectionEndTag)) {
- $whileStatement->statements = $this->parseStatement($whileStatement);
- }
- return $whileStatement;
- }
-
- /**
- * @param Node $parentNode
- * @param bool $force
- * @return Node|MissingToken|array - The expression, or a missing token, or (if $force) an array containing a missed and skipped token
- */
- private function parseExpression($parentNode, $force = false) {
- $token = $this->getCurrentToken();
- if ($token->kind === TokenKind::EndOfFileToken) {
- return new MissingToken(TokenKind::Expression, $token->fullStart);
- }
-
- // Equivalent to (parseExpressionFn())($parentNode)
- $expression = $this->parseBinaryExpressionOrHigher(0, $parentNode);
- if ($force && $expression instanceof MissingToken) {
- $expression = [$expression, new SkippedToken($token)];
- $this->advanceToken();
- }
-
- return $expression;
- }
-
- private function parseExpressionFn() {
- return function ($parentNode) {
- return $this->parseBinaryExpressionOrHigher(0, $parentNode);
- };
- }
-
- /**
- * @param Node $parentNode
- * @return Expression
- */
- private function parseUnaryExpressionOrHigher($parentNode) {
- $token = $this->getCurrentToken();
- switch ($token->kind) {
- // unary-op-expression
- case TokenKind::PlusToken:
- case TokenKind::MinusToken:
- case TokenKind::ExclamationToken:
- case TokenKind::TildeToken:
- return $this->parseUnaryOpExpression($parentNode);
-
- // error-control-expression
- case TokenKind::AtSymbolToken:
- return $this->parseErrorControlExpression($parentNode);
-
- // prefix-increment-expression
- case TokenKind::PlusPlusToken:
- // prefix-decrement-expression
- case TokenKind::MinusMinusToken:
- return $this->parsePrefixUpdateExpression($parentNode);
-
- case TokenKind::ArrayCastToken:
- case TokenKind::BoolCastToken:
- case TokenKind::DoubleCastToken:
- case TokenKind::IntCastToken:
- case TokenKind::ObjectCastToken:
- case TokenKind::StringCastToken:
- case TokenKind::UnsetCastToken:
- return $this->parseCastExpression($parentNode);
-
- case TokenKind::OpenParenToken:
- // TODO remove duplication
- if ($this->lookahead(
- [TokenKind::ArrayKeyword,
- TokenKind::BinaryReservedWord,
- TokenKind::BoolReservedWord,
- TokenKind::BooleanReservedWord,
- TokenKind::DoubleReservedWord,
- TokenKind::IntReservedWord,
- TokenKind::IntegerReservedWord,
- TokenKind::FloatReservedWord,
- TokenKind::ObjectReservedWord,
- TokenKind::RealReservedWord,
- TokenKind::StringReservedWord,
- TokenKind::UnsetKeyword], TokenKind::CloseParenToken)) {
- return $this->parseCastExpressionGranular($parentNode);
- }
- break;
-
-/*
-
- case TokenKind::BacktickToken:
- return $this->parseShellCommandExpression($parentNode);
-
- case TokenKind::OpenParenToken:
- // TODO
-// return $this->parseCastExpressionGranular($parentNode);
- break;*/
-
- // object-creation-expression (postfix-expression)
- case TokenKind::NewKeyword:
- return $this->parseObjectCreationExpression($parentNode);
-
- // clone-expression (postfix-expression)
- case TokenKind::CloneKeyword:
- return $this->parseCloneExpression($parentNode);
-
- case TokenKind::YieldKeyword:
- case TokenKind::YieldFromKeyword:
- return $this->parseYieldExpression($parentNode);
-
- // include-expression
- // include-once-expression
- // require-expression
- // require-once-expression
- case TokenKind::IncludeKeyword:
- case TokenKind::IncludeOnceKeyword:
- case TokenKind::RequireKeyword:
- case TokenKind::RequireOnceKeyword:
- return $this->parseScriptInclusionExpression($parentNode);
- case TokenKind::ThrowKeyword: // throw-statement will become an expression in php 8.0
- return $this->parseThrowExpression($parentNode);
- }
-
- $expression = $this->parsePrimaryExpression($parentNode);
- return $this->parsePostfixExpressionRest($expression);
- }
-
- /**
- * @param int $precedence
- * @param Node $parentNode
- * @return Expression
- */
- private function parseBinaryExpressionOrHigher($precedence, $parentNode) {
- $leftOperand = $this->parseUnaryExpressionOrHigher($parentNode);
-
- [$prevNewPrecedence, $prevAssociativity] = self::UNKNOWN_PRECEDENCE_AND_ASSOCIATIVITY;
-
- while (true) {
- $token = $this->getCurrentToken();
-
- [$newPrecedence, $associativity] = $this->getBinaryOperatorPrecedenceAndAssociativity($token);
-
- // Expressions using operators w/o associativity (equality, relational, instanceof)
- // cannot reference identical expression types within one of their operands.
- //
- // Example:
- // $a < $b < $c // CASE 1: INVALID
- // $a < $b === $c < $d // CASE 2: VALID
- //
- // In CASE 1, it is expected that we stop parsing the expression after the $b token.
- if ($prevAssociativity === Associativity::None && $prevNewPrecedence === $newPrecedence) {
- break;
- }
-
- // Precedence and associativity properties determine whether we recurse, and continue
- // building up the current operand, or whether we pop out.
- //
- // Example:
- // $a + $b + $c // CASE 1: additive-expression (left-associative)
- // $a = $b = $c // CASE 2: equality-expression (right-associative)
- //
- // CASE 1:
- // The additive-expression is left-associative, which means we expect the grouping to be:
- // ($a + $b) + $c
- //
- // Because both + operators have the same precedence, and the + operator is left associative,
- // we expect the second + operator NOT to be consumed because $newPrecedence > $precedence => FALSE
- //
- // CASE 2:
- // The equality-expression is right-associative, which means we expect the grouping to be:
- // $a = ($b = $c)
- //
- // Because both = operators have the same precedence, and the = operator is right-associative,
- // we expect the second = operator to be consumed because $newPrecedence >= $precedence => TRUE
- $shouldConsumeCurrentOperator =
- $associativity === Associativity::Right ?
- $newPrecedence >= $precedence:
- $newPrecedence > $precedence;
-
- if (!$shouldConsumeCurrentOperator) {
- break;
- }
-
- // Unlike every other binary expression, exponentiation operators take precedence over unary operators.
- //
- // Example:
- // -3**2 => -9
- //
- // In these cases, we strip the UnaryExpression operator, and reassign $leftOperand to
- // $unaryExpression->operand.
- //
- // After we finish building the BinaryExpression, we rebuild the UnaryExpression so that it includes
- // the original operator, and the newly constructed exponentiation-expression as the operand.
- $shouldOperatorTakePrecedenceOverUnary = false;
- switch ($token->kind) {
- case TokenKind::AsteriskAsteriskToken:
- $shouldOperatorTakePrecedenceOverUnary = $leftOperand instanceof UnaryExpression;
- break;
- case TokenKind::EqualsToken:
- case TokenKind::AsteriskAsteriskEqualsToken:
- case TokenKind::AsteriskEqualsToken:
- case TokenKind::SlashEqualsToken:
- case TokenKind::PercentEqualsToken:
- case TokenKind::PlusEqualsToken:
- case TokenKind::MinusEqualsToken:
- case TokenKind::DotEqualsToken:
- case TokenKind::LessThanLessThanEqualsToken:
- case TokenKind::GreaterThanGreaterThanEqualsToken:
- case TokenKind::AmpersandEqualsToken:
- case TokenKind::CaretEqualsToken:
- case TokenKind::BarEqualsToken:
- case TokenKind::QuestionQuestionEqualsToken:
- // Workarounds for https://github.com/Microsoft/tolerant-php-parser/issues/19#issue-201714377
- // Parse `!$a = $b` as `!($a = $b)` - PHP constrains the Left Hand Side of an assignment to a variable. A unary operator (`@`, `!`, etc.) is not a variable.
- // Instanceof has similar constraints for the LHS.
- // So does `!$a += $b`
- // TODO: Any other operators?
- if ($leftOperand instanceof UnaryOpExpression) {
- $shouldOperatorTakePrecedenceOverUnary = true;
- }
- break;
- case TokenKind::InstanceOfKeyword:
- // Unlike assignment, the instanceof operator doesn't have restrictions on what can go in the left hand side.
- // `!` is the only unary operator with lower precedence than instanceof.
- if ($leftOperand instanceof UnaryOpExpression) {
- if ($leftOperand->operator->kind === TokenKind::ExclamationToken) {
- $shouldOperatorTakePrecedenceOverUnary = true;
- }
- }
- break;
- case TokenKind::QuestionToken:
- if ($parentNode instanceof TernaryExpression) {
- // Workaround to parse "a ? b : c ? d : e" as "(a ? b : c) ? d : e"
- break 2;
- }
- break;
- }
-
- if ($shouldOperatorTakePrecedenceOverUnary) {
- $unaryExpression = $leftOperand;
- $leftOperand = $unaryExpression->operand;
- }
-
- $this->advanceToken();
-
- if ($token->kind === TokenKind::EqualsToken) {
- $byRefToken = $this->eatOptional1(TokenKind::AmpersandToken);
- }
-
- $leftOperand = $token->kind === TokenKind::QuestionToken ?
- $this->parseTernaryExpression($leftOperand, $token, $parentNode) :
- $this->makeBinaryExpression(
- $leftOperand,
- $token,
- $byRefToken ?? null,
- $this->parseBinaryExpressionOrHigher($newPrecedence, null),
- $parentNode);
-
- // Rebuild the unary expression if we deconstructed it earlier.
- if ($shouldOperatorTakePrecedenceOverUnary) {
- $leftOperand->parent = $unaryExpression;
- $unaryExpression->operand = $leftOperand;
- $leftOperand = $unaryExpression;
- }
-
- // Hold onto these values, so we know whether we've hit duplicate non-associative operators,
- // and need to terminate early.
- $prevNewPrecedence = $newPrecedence;
- $prevAssociativity = $associativity;
- }
- return $leftOperand;
- }
-
- const OPERATOR_PRECEDENCE_AND_ASSOCIATIVITY =
- [
- // logical-inc-OR-expression-2 (L)
- TokenKind::OrKeyword => [6, Associativity::Left],
-
- // logical-exc-OR-expression-2 (L)
- TokenKind::XorKeyword=> [7, Associativity::Left],
-
- // logical-AND-expression-2 (L)
- TokenKind::AndKeyword=> [8, Associativity::Left],
-
- // simple-assignment-expression (R)
- // TODO byref-assignment-expression
- TokenKind::EqualsToken => [9, Associativity::Right],
-
- // compound-assignment-expression (R)
- TokenKind::AsteriskAsteriskEqualsToken => [9, Associativity::Right],
- TokenKind::AsteriskEqualsToken => [9, Associativity::Right],
- TokenKind::SlashEqualsToken => [9, Associativity::Right],
- TokenKind::PercentEqualsToken => [9, Associativity::Right],
- TokenKind::PlusEqualsToken => [9, Associativity::Right],
- TokenKind::MinusEqualsToken => [9, Associativity::Right],
- TokenKind::DotEqualsToken => [9, Associativity::Right],
- TokenKind::LessThanLessThanEqualsToken => [9, Associativity::Right],
- TokenKind::GreaterThanGreaterThanEqualsToken => [9, Associativity::Right],
- TokenKind::AmpersandEqualsToken => [9, Associativity::Right],
- TokenKind::CaretEqualsToken => [9, Associativity::Right],
- TokenKind::BarEqualsToken => [9, Associativity::Right],
- TokenKind::QuestionQuestionEqualsToken => [9, Associativity::Right],
-
- // TODO conditional-expression (L)
- TokenKind::QuestionToken => [10, Associativity::Left],
-// TokenKind::ColonToken => [9, Associativity::Left],
-
- // TODO coalesce-expression (R)
- TokenKind::QuestionQuestionToken => [9, Associativity::Right],
-
- //logical-inc-OR-expression-1 (L)
- TokenKind::BarBarToken => [12, Associativity::Left],
-
- // logical-AND-expression-1 (L)
- TokenKind::AmpersandAmpersandToken => [13, Associativity::Left],
-
- // bitwise-inc-OR-expression (L)
- TokenKind::BarToken => [14, Associativity::Left],
-
- // bitwise-exc-OR-expression (L)
- TokenKind::CaretToken => [15, Associativity::Left],
-
- // bitwise-AND-expression (L)
- TokenKind::AmpersandToken => [16, Associativity::Left],
-
- // equality-expression (X)
- TokenKind::EqualsEqualsToken => [17, Associativity::None],
- TokenKind::ExclamationEqualsToken => [17, Associativity::None],
- TokenKind::LessThanGreaterThanToken => [17, Associativity::None],
- TokenKind::EqualsEqualsEqualsToken => [17, Associativity::None],
- TokenKind::ExclamationEqualsEqualsToken => [17, Associativity::None],
- TokenKind::LessThanEqualsGreaterThanToken => [17, Associativity::None],
-
- // relational-expression (X)
- TokenKind::LessThanToken => [18, Associativity::None],
- TokenKind::GreaterThanToken => [18, Associativity::None],
- TokenKind::LessThanEqualsToken => [18, Associativity::None],
- TokenKind::GreaterThanEqualsToken => [18, Associativity::None],
-
- // shift-expression (L)
- TokenKind::LessThanLessThanToken => [19, Associativity::Left],
- TokenKind::GreaterThanGreaterThanToken => [19, Associativity::Left],
-
- // additive-expression (L)
- TokenKind::PlusToken => [20, Associativity::Left],
- TokenKind::MinusToken => [20, Associativity::Left],
- TokenKind::DotToken =>[20, Associativity::Left],
-
- // multiplicative-expression (L)
- TokenKind::AsteriskToken => [21, Associativity::Left],
- TokenKind::SlashToken => [21, Associativity::Left],
- TokenKind::PercentToken => [21, Associativity::Left],
-
- // instanceof-expression (X)
- TokenKind::InstanceOfKeyword => [22, Associativity::None],
-
- // exponentiation-expression (R)
- TokenKind::AsteriskAsteriskToken => [23, Associativity::Right]
- ];
-
- const UNKNOWN_PRECEDENCE_AND_ASSOCIATIVITY = [-1, -1];
-
- private function getBinaryOperatorPrecedenceAndAssociativity($token) {
- return self::OPERATOR_PRECEDENCE_AND_ASSOCIATIVITY[$token->kind] ?? self::UNKNOWN_PRECEDENCE_AND_ASSOCIATIVITY;
- }
-
- /**
- * @internal Do not use outside this class, this may be changed or removed.
- */
- const KNOWN_ASSIGNMENT_TOKEN_SET = [
- TokenKind::AsteriskAsteriskEqualsToken => true,
- TokenKind::AsteriskEqualsToken => true,
- TokenKind::SlashEqualsToken => true,
- TokenKind::PercentEqualsToken => true,
- TokenKind::PlusEqualsToken => true,
- TokenKind::MinusEqualsToken => true,
- TokenKind::DotEqualsToken => true,
- TokenKind::LessThanLessThanEqualsToken => true,
- TokenKind::GreaterThanGreaterThanEqualsToken => true,
- TokenKind::AmpersandEqualsToken => true,
- TokenKind::CaretEqualsToken => true,
- TokenKind::BarEqualsToken => true,
- TokenKind::QuestionQuestionEqualsToken => true,
- // InstanceOf has other remaining issues, but this heuristic is an improvement for many common cases such as `$x && $y = $z`
- ];
-
- private function makeBinaryExpression($leftOperand, $operatorToken, $byRefToken, $rightOperand, $parentNode) {
- $assignmentExpression = $operatorToken->kind === TokenKind::EqualsToken;
- if ($assignmentExpression || \array_key_exists($operatorToken->kind, self::KNOWN_ASSIGNMENT_TOKEN_SET)) {
- if ($leftOperand instanceof BinaryExpression) {
- if (!\array_key_exists($leftOperand->operator->kind, self::KNOWN_ASSIGNMENT_TOKEN_SET)) {
- // Handle cases without parenthesis, such as $x ** $y === $z, as $x ** ($y === $z)
- return $this->shiftBinaryOperands($leftOperand, $operatorToken, $byRefToken, $rightOperand, $parentNode);
- }
- } elseif ($leftOperand instanceof UnaryOpExpression || $leftOperand instanceof ErrorControlExpression) {
- return $this->shiftUnaryOperands($leftOperand, $operatorToken, $byRefToken, $rightOperand, $parentNode);
- }
- }
- $binaryExpression = $assignmentExpression ? new AssignmentExpression() : new BinaryExpression();
- $binaryExpression->parent = $parentNode;
- $leftOperand->parent = $binaryExpression;
- $rightOperand->parent = $binaryExpression;
- $binaryExpression->leftOperand = $leftOperand;
- $binaryExpression->operator = $operatorToken;
- if ($binaryExpression instanceof AssignmentExpression && isset($byRefToken)) {
- $binaryExpression->byRef = $byRefToken;
- }
- $binaryExpression->rightOperand = $rightOperand;
- return $binaryExpression;
- }
-
- /**
- * @param ErrorControlExpression|UnaryOpExpression $leftOperand
- */
- private function shiftUnaryOperands(UnaryExpression $leftOperand, $operatorToken, $byRefToken, $rightOperand, $parentNode) {
- $outerUnaryOpExpression = clone($leftOperand);
- $inner = $this->makeBinaryExpression(
- $leftOperand->operand,
- $operatorToken,
- $byRefToken,
- $rightOperand,
- $outerUnaryOpExpression
- );
- // Either ErrorControlExpression or a UnaryOpExpression
- $outerUnaryOpExpression->parent = $parentNode;
- // TODO should this binaryExpression be wrapped in a UnaryExpression?
- $outerUnaryOpExpression->operand = $inner;
-
- return $outerUnaryOpExpression;
- }
-
- private function shiftBinaryOperands(BinaryExpression $leftOperand, $operatorToken, $byRefToken, $rightOperand, $parentNode) {
- $inner = $this->makeBinaryExpression(
- $leftOperand->rightOperand,
- $operatorToken,
- $byRefToken,
- $rightOperand,
- $parentNode
- );
- $outer = $this->makeBinaryExpression(
- $leftOperand->leftOperand,
- $leftOperand->operator,
- null,
- $inner,
- $parentNode
- );
- $inner->parent = $outer;
- return $outer;
- }
-
- private function parseDoStatement($parentNode) {
- $doStatement = new DoStatement();
- $doStatement->parent = $parentNode;
- $doStatement->do = $this->eat1(TokenKind::DoKeyword);
- $doStatement->statement = $this->parseStatement($doStatement);
- $doStatement->whileToken = $this->eat1(TokenKind::WhileKeyword);
- $doStatement->openParen = $this->eat1(TokenKind::OpenParenToken);
- $doStatement->expression = $this->parseExpression($doStatement);
- $doStatement->closeParen = $this->eat1(TokenKind::CloseParenToken);
- $doStatement->semicolon = $this->eatSemicolonOrAbortStatement();
- return $doStatement;
- }
-
- private function parseForStatement($parentNode) {
- $forStatement = new ForStatement();
- $forStatement->parent = $parentNode;
- $forStatement->for = $this->eat1(TokenKind::ForKeyword);
- $forStatement->openParen = $this->eat1(TokenKind::OpenParenToken);
- $forStatement->forInitializer = $this->parseExpressionList($forStatement); // TODO spec is redundant
- $forStatement->exprGroupSemicolon1 = $this->eat1(TokenKind::SemicolonToken);
- $forStatement->forControl = $this->parseExpressionList($forStatement);
- $forStatement->exprGroupSemicolon2 = $this->eat1(TokenKind::SemicolonToken);
- $forStatement->forEndOfLoop = $this->parseExpressionList($forStatement);
- $forStatement->closeParen = $this->eat1(TokenKind::CloseParenToken);
- $forStatement->colon = $this->eatOptional1(TokenKind::ColonToken);
- if ($forStatement->colon !== null) {
- $forStatement->statements = $this->parseList($forStatement, ParseContext::ForStatementElements);
- $forStatement->endFor = $this->eat1(TokenKind::EndForKeyword);
- $forStatement->endForSemicolon = $this->eatSemicolonOrAbortStatement();
- } elseif (!$this->checkToken(TokenKind::ScriptSectionEndTag)) {
- $forStatement->statements = $this->parseStatement($forStatement);
- }
- return $forStatement;
- }
-
- private function parseForeachStatement($parentNode) {
- $foreachStatement = new ForeachStatement();
- $foreachStatement->parent = $parentNode;
- $foreachStatement->foreach = $this->eat1(TokenKind::ForeachKeyword);
- $foreachStatement->openParen = $this->eat1(TokenKind::OpenParenToken);
- $foreachStatement->forEachCollectionName = $this->parseExpression($foreachStatement);
- $foreachStatement->asKeyword = $this->eat1(TokenKind::AsKeyword);
- $foreachStatement->foreachKey = $this->tryParseForeachKey($foreachStatement);
- $foreachStatement->foreachValue = $this->parseForeachValue($foreachStatement);
- $foreachStatement->closeParen = $this->eat1(TokenKind::CloseParenToken);
- $foreachStatement->colon = $this->eatOptional1(TokenKind::ColonToken);
- if ($foreachStatement->colon !== null) {
- $foreachStatement->statements = $this->parseList($foreachStatement, ParseContext::ForeachStatementElements);
- $foreachStatement->endForeach = $this->eat1(TokenKind::EndForEachKeyword);
- $foreachStatement->endForeachSemicolon = $this->eatSemicolonOrAbortStatement();
- } elseif (!$this->checkToken(TokenKind::ScriptSectionEndTag)) {
- $foreachStatement->statements = $this->parseStatement($foreachStatement);
- }
- return $foreachStatement;
- }
-
- private function tryParseForeachKey($parentNode) {
- if (!$this->isExpressionStart($this->getCurrentToken())) {
- return null;
- }
-
- $startPos = $this->lexer->getCurrentPosition();
- $startToken = $this->getCurrentToken();
- $foreachKey = new ForeachKey();
- $foreachKey->parent = $parentNode;
- $foreachKey->expression = $this->parseExpression($foreachKey);
-
- if (!$this->checkToken(TokenKind::DoubleArrowToken)) {
- $this->lexer->setCurrentPosition($startPos);
- $this->token = $startToken;
- return null;
- }
-
- $foreachKey->arrow = $this->eat1(TokenKind::DoubleArrowToken);
- return $foreachKey;
- }
-
- private function parseForeachValue($parentNode) {
- $foreachValue = new ForeachValue();
- $foreachValue->parent = $parentNode;
- $foreachValue->ampersand = $this->eatOptional1(TokenKind::AmpersandToken);
- $foreachValue->expression = $this->parseExpression($foreachValue);
- return $foreachValue;
- }
-
- private function parseGotoStatement($parentNode) {
- $gotoStatement = new GotoStatement();
- $gotoStatement->parent = $parentNode;
- $gotoStatement->goto = $this->eat1(TokenKind::GotoKeyword);
- $gotoStatement->name = $this->eat1(TokenKind::Name);
- $gotoStatement->semicolon = $this->eatSemicolonOrAbortStatement();
- return $gotoStatement;
- }
-
- private function parseBreakOrContinueStatement($parentNode) {
- // TODO should be error checking if on top level
- $continueStatement = new BreakOrContinueStatement();
- $continueStatement->parent = $parentNode;
- $continueStatement->breakOrContinueKeyword = $this->eat(TokenKind::ContinueKeyword, TokenKind::BreakKeyword);
-
- if ($this->isExpressionStart($this->getCurrentToken())) {
- $continueStatement->breakoutLevel = $this->parseExpression($continueStatement);
- }
-
- $continueStatement->semicolon = $this->eatSemicolonOrAbortStatement();
-
- return $continueStatement;
- }
-
- private function parseReturnStatement($parentNode) {
- $returnStatement = new ReturnStatement();
- $returnStatement->parent = $parentNode;
- $returnStatement->returnKeyword = $this->eat1(TokenKind::ReturnKeyword);
- if ($this->isExpressionStart($this->getCurrentToken())) {
- $returnStatement->expression = $this->parseExpression($returnStatement);
- }
- $returnStatement->semicolon = $this->eatSemicolonOrAbortStatement();
-
- return $returnStatement;
- }
-
- /** @return ThrowExpression */
- private function parseThrowExpression($parentNode) {
- $throwExpression = new ThrowExpression();
- $throwExpression->parent = $parentNode;
- $throwExpression->throwKeyword = $this->eat1(TokenKind::ThrowKeyword);
- // TODO error for failures to parse expressions when not optional
- $throwExpression->expression = $this->parseExpression($throwExpression);
-
- return $throwExpression;
- }
-
- private function parseTryStatement($parentNode) {
- $tryStatement = new TryStatement();
- $tryStatement->parent = $parentNode;
- $tryStatement->tryKeyword = $this->eat1(TokenKind::TryKeyword);
- $tryStatement->compoundStatement = $this->parseCompoundStatement($tryStatement); // TODO verifiy this is only compound
-
- $tryStatement->catchClauses = []; // TODO - should be some standard for empty arrays vs. null?
- while ($this->checkToken(TokenKind::CatchKeyword)) {
- $tryStatement->catchClauses[] = $this->parseCatchClause($tryStatement);
- }
-
- if ($this->checkToken(TokenKind::FinallyKeyword)) {
- $tryStatement->finallyClause = $this->parseFinallyClause($tryStatement);
- }
-
- return $tryStatement;
- }
-
- private function parseCatchClause($parentNode) {
- $catchClause = new CatchClause();
- $catchClause->parent = $parentNode;
- $catchClause->catch = $this->eat1(TokenKind::CatchKeyword);
- $catchClause->openParen = $this->eat1(TokenKind::OpenParenToken);
- $catchClause->qualifiedNameList = $this->parseQualifiedNameCatchList($catchClause) ?? new MissingToken(TokenKind::QualifiedName, $this->token->fullStart); // TODO generate missing token or error if null
- $catchClause->variableName = $this->eatOptional1(TokenKind::VariableName);
- $catchClause->closeParen = $this->eat1(TokenKind::CloseParenToken);
- $catchClause->compoundStatement = $this->parseCompoundStatement($catchClause);
-
- return $catchClause;
- }
-
- private function parseFinallyClause($parentNode) {
- $finallyClause = new FinallyClause();
- $finallyClause->parent = $parentNode;
- $finallyClause->finallyToken = $this->eat1(TokenKind::FinallyKeyword);
- $finallyClause->compoundStatement = $this->parseCompoundStatement($finallyClause);
-
- return $finallyClause;
- }
-
- private function parseDeclareStatement($parentNode) {
- $declareStatement = new DeclareStatement();
- $declareStatement->parent = $parentNode;
- $declareStatement->declareKeyword = $this->eat1(TokenKind::DeclareKeyword);
- $declareStatement->openParen = $this->eat1(TokenKind::OpenParenToken);
- $this->parseAndSetDeclareDirectiveList($declareStatement);
- $declareStatement->closeParen = $this->eat1(TokenKind::CloseParenToken);
-
- if ($this->checkToken(TokenKind::SemicolonToken)) {
- $declareStatement->semicolon = $this->eatSemicolonOrAbortStatement();
- } elseif ($this->checkToken(TokenKind::ColonToken)) {
- $declareStatement->colon = $this->eat1(TokenKind::ColonToken);
- $declareStatement->statements = $this->parseList($declareStatement, ParseContext::DeclareStatementElements);
- $declareStatement->enddeclareKeyword = $this->eat1(TokenKind::EndDeclareKeyword);
- $declareStatement->semicolon = $this->eatSemicolonOrAbortStatement();
- } else {
- $declareStatement->statements = $this->parseStatement($declareStatement);
- }
-
- return $declareStatement;
- }
-
- /**
- * @param DeclareStatement $parentNode
- */
- private function parseAndSetDeclareDirectiveList($parentNode) {
- $declareDirectiveList = $this->parseDeclareDirectiveList($parentNode);
-
- $parentNode->declareDirectiveList = $declareDirectiveList ?? new MissingToken(TokenKind::Name, $this->token->fullStart);
- }
-
- /**
- * @param DeclareStatement $parentNode
- * @return DelimitedList\DeclareDirectiveList|null
- */
- private function parseDeclareDirectiveList($parentNode) {
- $declareDirectiveList = $this->parseDelimitedList(
- DelimitedList\DeclareDirectiveList::class,
- TokenKind::CommaToken,
- function ($token) {
- return $token->kind === TokenKind::Name;
- },
- $this->parseDeclareDirectiveFn(),
- $parentNode,
- false
- );
-
- return $declareDirectiveList;
- }
-
- private function parseDeclareDirectiveFn() {
- return function ($parentNode) {
- $declareDirective = new DeclareDirective();
- $declareDirective->parent = $parentNode;
- $declareDirective->name = $this->eat1(TokenKind::Name);
- $declareDirective->equals = $this->eat1(TokenKind::EqualsToken);
- $declareDirective->literal =
- $this->eat(
- TokenKind::FloatingLiteralToken,
- TokenKind::IntegerLiteralToken,
- TokenKind::DecimalLiteralToken,
- TokenKind::OctalLiteralToken,
- TokenKind::HexadecimalLiteralToken,
- TokenKind::BinaryLiteralToken,
- TokenKind::InvalidOctalLiteralToken,
- TokenKind::InvalidHexadecimalLiteral,
- TokenKind::InvalidBinaryLiteral,
- TokenKind::StringLiteralToken
- ); // TODO simplify
-
- return $declareDirective;
- };
- }
-
- private function parseSimpleVariable($parentNode) {
- return ($this->parseSimpleVariableFn())($parentNode);
- }
-
- private function parseSimpleVariableFn() {
- return function ($parentNode) {
- $token = $this->getCurrentToken();
- $variable = new Variable();
- $variable->parent = $parentNode;
-
- if ($token->kind === TokenKind::DollarToken) {
- $variable->dollar = $this->eat1(TokenKind::DollarToken);
- $token = $this->getCurrentToken();
-
- switch ($token->kind) {
- case TokenKind::OpenBraceToken:
- $variable->name = $this->parseBracedExpression($variable);
- break;
- case TokenKind::VariableName:
- case TokenKind::StringVarname:
- case TokenKind::DollarToken:
- $variable->name = $this->parseSimpleVariable($variable);
- break;
- default:
- $variable->name = new MissingToken(TokenKind::VariableName, $token->fullStart);
- break;
- }
- } elseif ($token->kind === TokenKind::VariableName || $token->kind === TokenKind::StringVarname) {
- // TODO consider splitting into dollar and name.
- // StringVarname is the variable name without $, used in a template string e.g. `"${foo}"`
- $variable->name = $this->eat(TokenKind::VariableName, TokenKind::StringVarname);
- } else {
- $variable->name = new MissingToken(TokenKind::VariableName, $token->fullStart);
- }
-
- return $variable;
- };
- }
-
- private function parseYieldExpression($parentNode) {
- $yieldExpression = new YieldExpression();
- $yieldExpression->parent = $parentNode;
- $yieldExpression->yieldOrYieldFromKeyword = $this->eat(
- TokenKind::YieldFromKeyword,
- TokenKind::YieldKeyword
- );
- if ($yieldExpression->yieldOrYieldFromKeyword->kind === TokenKind::YieldFromKeyword) {
- // Don't use parseArrayElement. E.g. `yield from &$varName` or `yield from $key => $varName` are both syntax errors
- $arrayElement = new ArrayElement();
- $arrayElement->parent = $yieldExpression;
- $arrayElement->elementValue = $this->parseExpression($arrayElement);
- $yieldExpression->arrayElement = $arrayElement;
- } else {
- // This is always an ArrayElement for backwards compatibilitiy.
- // TODO: Can this be changed to a non-ArrayElement in a future release?
- if ($this->isExpressionStart($this->getCurrentToken())) {
- // Both `yield expr;` and `yield;` are possible.
- $yieldExpression->arrayElement = $this->parseArrayElement($yieldExpression);
- } else {
- $yieldExpression->arrayElement = null;
- }
- }
-
- return $yieldExpression;
- }
-
- private function parseScriptInclusionExpression($parentNode) {
- $scriptInclusionExpression = new ScriptInclusionExpression();
- $scriptInclusionExpression->parent = $parentNode;
- $scriptInclusionExpression->requireOrIncludeKeyword =
- $this->eat(
- TokenKind::RequireKeyword, TokenKind::RequireOnceKeyword,
- TokenKind::IncludeKeyword, TokenKind::IncludeOnceKeyword
- );
- $scriptInclusionExpression->expression = $this->parseExpression($scriptInclusionExpression);
- return $scriptInclusionExpression;
- }
-
- /** @return EchoStatement */
- private function parseEchoStatement($parentNode) {
- $echoStatement = new EchoStatement();
- $echoStatement->parent = $parentNode;
- $echoStatement->echoKeyword = $this->eat1(TokenKind::EchoKeyword);
- $echoStatement->expressions =
- $this->parseExpressionList($echoStatement);
- $echoStatement->semicolon = $this->eatSemicolonOrAbortStatement();
- return $echoStatement;
- }
-
- private function parseListIntrinsicExpression($parentNode) {
- $listExpression = new ListIntrinsicExpression();
- $listExpression->parent = $parentNode;
- $listExpression->listKeyword = $this->eat1(TokenKind::ListKeyword);
- $listExpression->openParen = $this->eat1(TokenKind::OpenParenToken);
- // TODO - parse loosely as ArrayElementList, and validate parse tree later
- $listExpression->listElements =
- $this->parseArrayElementList($listExpression, DelimitedList\ListExpressionList::class);
- $listExpression->closeParen = $this->eat1(TokenKind::CloseParenToken);
-
- return $listExpression;
- }
-
- private function isArrayElementStart($token) {
- return ($this->isArrayElementStartFn())($token);
- }
-
- private function isArrayElementStartFn() {
- return function ($token) {
- return $token->kind === TokenKind::AmpersandToken || $token->kind === TokenKind::DotDotDotToken || $this->isExpressionStart($token);
- };
- }
-
- private function parseArrayElement($parentNode) {
- return ($this->parseArrayElementFn())($parentNode);
- }
-
- private function parseArrayElementFn() {
- return function ($parentNode) {
- $arrayElement = new ArrayElement();
- $arrayElement->parent = $parentNode;
-
- if ($this->checkToken(TokenKind::AmpersandToken)) {
- $arrayElement->byRef = $this->eat1(TokenKind::AmpersandToken);
- $arrayElement->elementValue = $this->parseExpression($arrayElement);
- } elseif ($this->checkToken(TokenKind::DotDotDotToken)) {
- $arrayElement->dotDotDot = $this->eat1(TokenKind::DotDotDotToken);
- $arrayElement->elementValue = $this->parseExpression($arrayElement);
- } else {
- $expression = $this->parseExpression($arrayElement);
- if ($this->checkToken(TokenKind::DoubleArrowToken)) {
- $arrayElement->elementKey = $expression;
- $arrayElement->arrowToken = $this->eat1(TokenKind::DoubleArrowToken);
- $arrayElement->byRef = $this->eatOptional1(TokenKind::AmpersandToken); // TODO not okay for list expressions
- $arrayElement->elementValue = $this->parseExpression($arrayElement);
- } else {
- $arrayElement->elementValue = $expression;
- }
- }
-
- return $arrayElement;
- };
- }
-
- private function parseExpressionList($parentExpression) {
- return $this->parseDelimitedList(
- DelimitedList\ExpressionList::class,
- TokenKind::CommaToken,
- $this->isExpressionStartFn(),
- $this->parseExpressionFn(),
- $parentExpression
- );
- }
-
- private function parseUnsetStatement($parentNode) {
- $unsetStatement = new UnsetStatement();
- $unsetStatement->parent = $parentNode;
-
- $unsetStatement->unsetKeyword = $this->eat1(TokenKind::UnsetKeyword);
- $unsetStatement->openParen = $this->eat1(TokenKind::OpenParenToken);
- $unsetStatement->expressions = $this->parseExpressionList($unsetStatement);
- $unsetStatement->closeParen = $this->eat1(TokenKind::CloseParenToken);
- $unsetStatement->semicolon = $this->eatSemicolonOrAbortStatement();
- return $unsetStatement;
- }
-
- private function parseArrayCreationExpression($parentNode) {
- $arrayExpression = new ArrayCreationExpression();
- $arrayExpression->parent = $parentNode;
-
- $arrayExpression->arrayKeyword = $this->eatOptional1(TokenKind::ArrayKeyword);
-
- $arrayExpression->openParenOrBracket = $arrayExpression->arrayKeyword !== null
- ? $this->eat1(TokenKind::OpenParenToken)
- : $this->eat1(TokenKind::OpenBracketToken);
-
- $arrayExpression->arrayElements = $this->parseArrayElementList($arrayExpression, DelimitedList\ArrayElementList::class);
-
- $arrayExpression->closeParenOrBracket = $arrayExpression->arrayKeyword !== null
- ? $this->eat1(TokenKind::CloseParenToken)
- : $this->eat1(TokenKind::CloseBracketToken);
-
- return $arrayExpression;
- }
-
- private function parseArrayElementList($listExpression, $className) {
- return $this->parseDelimitedList(
- $className,
- TokenKind::CommaToken,
- $this->isArrayElementStartFn(),
- $this->parseArrayElementFn(),
- $listExpression,
- true
- );
- }
-
- private function parseEmptyIntrinsicExpression($parentNode) {
- $emptyExpression = new EmptyIntrinsicExpression();
- $emptyExpression->parent = $parentNode;
-
- $emptyExpression->emptyKeyword = $this->eat1(TokenKind::EmptyKeyword);
- $emptyExpression->openParen = $this->eat1(TokenKind::OpenParenToken);
- $emptyExpression->expression = $this->parseExpression($emptyExpression);
- $emptyExpression->closeParen = $this->eat1(TokenKind::CloseParenToken);
-
- return $emptyExpression;
- }
-
- private function parseEvalIntrinsicExpression($parentNode) {
- $evalExpression = new EvalIntrinsicExpression();
- $evalExpression->parent = $parentNode;
-
- $evalExpression->evalKeyword = $this->eat1(TokenKind::EvalKeyword);
- $evalExpression->openParen = $this->eat1(TokenKind::OpenParenToken);
- $evalExpression->expression = $this->parseExpression($evalExpression);
- $evalExpression->closeParen = $this->eat1(TokenKind::CloseParenToken);
-
- return $evalExpression;
- }
-
- private function parseParenthesizedExpression($parentNode) {
- $parenthesizedExpression = new ParenthesizedExpression();
- $parenthesizedExpression->parent = $parentNode;
-
- $parenthesizedExpression->openParen = $this->eat1(TokenKind::OpenParenToken);
- $parenthesizedExpression->expression = $this->parseExpression($parenthesizedExpression);
- $parenthesizedExpression->closeParen = $this->eat1(TokenKind::CloseParenToken);
-
- return $parenthesizedExpression;
- }
-
- private function parseExitIntrinsicExpression($parentNode) {
- $exitExpression = new ExitIntrinsicExpression();
- $exitExpression->parent = $parentNode;
-
- $exitExpression->exitOrDieKeyword = $this->eat(TokenKind::ExitKeyword, TokenKind::DieKeyword);
- $exitExpression->openParen = $this->eatOptional1(TokenKind::OpenParenToken);
- if ($exitExpression->openParen !== null) {
- if ($this->isExpressionStart($this->getCurrentToken())) {
- $exitExpression->expression = $this->parseExpression($exitExpression);
- }
- $exitExpression->closeParen = $this->eat1(TokenKind::CloseParenToken);
- }
-
- return $exitExpression;
- }
-
- private function parsePrintIntrinsicExpression($parentNode) {
- $printExpression = new PrintIntrinsicExpression();
- $printExpression->parent = $parentNode;
-
- $printExpression->printKeyword = $this->eat1(TokenKind::PrintKeyword);
- $printExpression->expression = $this->parseExpression($printExpression);
-
- return $printExpression;
- }
-
- private function parseIssetIntrinsicExpression($parentNode) {
- $issetExpression = new IssetIntrinsicExpression();
- $issetExpression->parent = $parentNode;
-
- $issetExpression->issetKeyword = $this->eat1(TokenKind::IsSetKeyword);
- $issetExpression->openParen = $this->eat1(TokenKind::OpenParenToken);
- $issetExpression->expressions = $this->parseExpressionList($issetExpression);
- $issetExpression->closeParen = $this->eat1(TokenKind::CloseParenToken);
-
- return $issetExpression;
- }
-
- private function parseUnaryOpExpression($parentNode) {
- $unaryOpExpression = new UnaryOpExpression();
- $unaryOpExpression->parent = $parentNode;
- $unaryOpExpression->operator =
- $this->eat(TokenKind::PlusToken, TokenKind::MinusToken, TokenKind::ExclamationToken, TokenKind::TildeToken);
- $unaryOpExpression->operand = $this->parseUnaryExpressionOrHigher($unaryOpExpression);
-
- return $unaryOpExpression;
- }
-
- private function parseErrorControlExpression($parentNode) {
- $errorControlExpression = new ErrorControlExpression();
- $errorControlExpression->parent = $parentNode;
-
- $errorControlExpression->operator = $this->eat1(TokenKind::AtSymbolToken);
- $errorControlExpression->operand = $this->parseUnaryExpressionOrHigher($errorControlExpression);
-
- return $errorControlExpression;
- }
-
- private function parsePrefixUpdateExpression($parentNode) {
- $prefixUpdateExpression = new PrefixUpdateExpression();
- $prefixUpdateExpression->parent = $parentNode;
-
- $prefixUpdateExpression->incrementOrDecrementOperator = $this->eat(TokenKind::PlusPlusToken, TokenKind::MinusMinusToken);
-
- $prefixUpdateExpression->operand = $this->parsePrimaryExpression($prefixUpdateExpression);
-
- if (!($prefixUpdateExpression->operand instanceof MissingToken)) {
- $prefixUpdateExpression->operand = $this->parsePostfixExpressionRest($prefixUpdateExpression->operand, false);
- }
-
- // TODO also check operand expression validity
- return $prefixUpdateExpression;
- }
-
- private function parsePostfixExpressionRest($expression, $allowUpdateExpression = true) {
- $tokenKind = $this->getCurrentToken()->kind;
-
- // `--$a++` is invalid
- if ($allowUpdateExpression &&
- ($tokenKind === TokenKind::PlusPlusToken ||
- $tokenKind === TokenKind::MinusMinusToken)) {
- return $this->parseParsePostfixUpdateExpression($expression);
- }
-
- // TODO write tons of tests
- if (!($expression instanceof Variable ||
- $expression instanceof ParenthesizedExpression ||
- $expression instanceof QualifiedName ||
- $expression instanceof CallExpression ||
- $expression instanceof MemberAccessExpression ||
- $expression instanceof SubscriptExpression ||
- $expression instanceof ScopedPropertyAccessExpression ||
- $expression instanceof StringLiteral ||
- $expression instanceof ArrayCreationExpression
- )) {
- return $expression;
- }
- if ($tokenKind === TokenKind::ColonColonToken) {
- $expression = $this->parseScopedPropertyAccessExpression($expression, null);
- return $this->parsePostfixExpressionRest($expression);
- }
-
- $tokenKind = $this->getCurrentToken()->kind;
-
- if ($tokenKind === TokenKind::OpenBraceToken ||
- $tokenKind === TokenKind::OpenBracketToken) {
- $expression = $this->parseSubscriptExpression($expression);
- return $this->parsePostfixExpressionRest($expression);
- }
-
- if ($expression instanceof ArrayCreationExpression) {
- // Remaining postfix expressions are invalid, so abort
- return $expression;
- }
-
- if ($tokenKind === TokenKind::ArrowToken || $tokenKind === TokenKind::QuestionArrowToken) {
- $expression = $this->parseMemberAccessExpression($expression);
- return $this->parsePostfixExpressionRest($expression);
- }
-
- if ($tokenKind === TokenKind::OpenParenToken && !$this->isParsingUnparenthesizedObjectCreationExpression($expression)) {
- $expression = $this->parseCallExpressionRest($expression);
-
- if (!$this->checkToken(TokenKind::OpenParenToken)) {
- return $this->parsePostfixExpressionRest($expression);
- }
- if (
- $expression instanceof ParenthesizedExpression ||
- $expression instanceof CallExpression ||
- $expression instanceof SubscriptExpression) {
- // Continue parsing the remaining brackets for expressions
- // such as `(new Foo())()`, `foo()()`, `foo()['index']()`
- return $this->parsePostfixExpressionRest($expression);
- }
- return $expression;
- }
-
- // Reached the end of the postfix-expression, so return
- return $expression;
- }
-
- private function parseMemberName($parentNode) {
- $token = $this->getCurrentToken();
- switch ($token->kind) {
- case TokenKind::Name:
- $this->advanceToken(); // TODO all names should be Nodes
- return $token;
- case TokenKind::VariableName:
- case TokenKind::DollarToken:
- return $this->parseSimpleVariable($parentNode); // TODO should be simple-variable
- case TokenKind::OpenBraceToken:
- return $this->parseBracedExpression($parentNode);
-
- default:
- if (\in_array($token->kind, $this->nameOrKeywordOrReservedWordTokens)) {
- $this->advanceToken();
- $token->kind = TokenKind::Name;
- return $token;
- }
- }
- return new MissingToken(TokenKind::MemberName, $token->fullStart);
- }
-
- private function isArgumentExpressionStartFn() {
- return function ($token) {
- return
- isset($this->argumentStartTokensSet[$token->kind]) || $this->isExpressionStart($token);
- };
- }
-
- private function parseArgumentExpressionFn() {
- return function ($parentNode) {
- $argumentExpression = new ArgumentExpression();
- $argumentExpression->parent = $parentNode;
-
- $nextToken = $this->lexer->getTokensArray()[$this->lexer->getCurrentPosition()] ?? null;
- if ($nextToken && $nextToken->kind === TokenKind::ColonToken) {
- $name = $this->token;
- $this->advanceToken();
- if ($name->kind === TokenKind::YieldFromKeyword || !\in_array($name->kind, $this->nameOrKeywordOrReservedWordTokens)) {
- $name = new SkippedToken($name);
- } else {
- $name->kind = TokenKind::Name;
- }
- $argumentExpression->name = $name;
- $argumentExpression->colonToken = $this->eat1(TokenKind::ColonToken);
- } else {
- $argumentExpression->dotDotDotToken = $this->eatOptional1(TokenKind::DotDotDotToken);
- }
- $argumentExpression->expression = $this->parseExpression($argumentExpression);
- return $argumentExpression;
- };
- }
-
- private function parseCallExpressionRest($expression) {
- $callExpression = new CallExpression();
- $callExpression->parent = $expression->parent;
- $expression->parent = $callExpression;
- $callExpression->callableExpression = $expression;
- $callExpression->openParen = $this->eat1(TokenKind::OpenParenToken);
- $callExpression->argumentExpressionList =
- $this->parseArgumentExpressionList($callExpression);
- $callExpression->closeParen = $this->eat1(TokenKind::CloseParenToken);
- return $callExpression;
- }
-
- private function parseParsePostfixUpdateExpression($prefixExpression) {
- $postfixUpdateExpression = new PostfixUpdateExpression();
- $postfixUpdateExpression->operand = $prefixExpression;
- $postfixUpdateExpression->parent = $prefixExpression->parent;
- $prefixExpression->parent = $postfixUpdateExpression;
- $postfixUpdateExpression->incrementOrDecrementOperator =
- $this->eat(TokenKind::PlusPlusToken, TokenKind::MinusMinusToken);
- return $postfixUpdateExpression;
- }
-
- private function parseBracedExpression($parentNode) {
- $bracedExpression = new BracedExpression();
- $bracedExpression->parent = $parentNode;
-
- $bracedExpression->openBrace = $this->eat1(TokenKind::OpenBraceToken);
- $bracedExpression->expression = $this->parseExpression($bracedExpression);
- $bracedExpression->closeBrace = $this->eat1(TokenKind::CloseBraceToken);
-
- return $bracedExpression;
- }
-
- private function parseSubscriptExpression($expression) : SubscriptExpression {
- $subscriptExpression = new SubscriptExpression();
- $subscriptExpression->parent = $expression->parent;
- $expression->parent = $subscriptExpression;
-
- $subscriptExpression->postfixExpression = $expression;
- $subscriptExpression->openBracketOrBrace = $this->eat(TokenKind::OpenBracketToken, TokenKind::OpenBraceToken);
- $subscriptExpression->accessExpression = $this->isExpressionStart($this->getCurrentToken())
- ? $this->parseExpression($subscriptExpression)
- : null; // TODO error if used in a getter
-
- if ($subscriptExpression->openBracketOrBrace->kind === TokenKind::OpenBraceToken) {
- $subscriptExpression->closeBracketOrBrace = $this->eat1(TokenKind::CloseBraceToken);
- } else {
- $subscriptExpression->closeBracketOrBrace = $this->eat1(TokenKind::CloseBracketToken);
- }
-
- return $subscriptExpression;
- }
-
- private function parseMemberAccessExpression($expression):MemberAccessExpression {
- $memberAccessExpression = new MemberAccessExpression();
- $memberAccessExpression->parent = $expression->parent;
- $expression->parent = $memberAccessExpression;
-
- $memberAccessExpression->dereferencableExpression = $expression;
- $memberAccessExpression->arrowToken = $this->eat(TokenKind::ArrowToken, TokenKind::QuestionArrowToken);
- $memberAccessExpression->memberName = $this->parseMemberName($memberAccessExpression);
-
- return $memberAccessExpression;
- }
-
- /**
- * @param Node|null $expression
- * @param Node|null $fallbackParentNode (Workaround for the invalid AST `use TraitName::foo as ::x`)
- */
- private function parseScopedPropertyAccessExpression($expression, $fallbackParentNode): ScopedPropertyAccessExpression {
- $scopedPropertyAccessExpression = new ScopedPropertyAccessExpression();
- $scopedPropertyAccessExpression->parent = $expression->parent ?? $fallbackParentNode;
- if ($expression instanceof Node) {
- $expression->parent = $scopedPropertyAccessExpression;
- $scopedPropertyAccessExpression->scopeResolutionQualifier = $expression; // TODO ensure always a Node
- }
-
- $scopedPropertyAccessExpression->doubleColon = $this->eat1(TokenKind::ColonColonToken);
- $scopedPropertyAccessExpression->memberName = $this->parseMemberName($scopedPropertyAccessExpression);
-
- return $scopedPropertyAccessExpression;
- }
-
- public function isParsingUnparenthesizedObjectCreationExpression($expression) {
- if (!$this->isParsingObjectCreationExpression) {
- return false;
- }
- if ($expression instanceof Token) {
- return true;
- }
- while ($expression->parent) {
- $expression = $expression->parent;
- if ($expression instanceof ObjectCreationExpression) {
- return true;
- } elseif ($expression instanceof ParenthesizedExpression) {
- return false;
- }
- }
- }
-
- private $isParsingObjectCreationExpression = false;
-
- private function parseObjectCreationExpression($parentNode) {
- $objectCreationExpression = new ObjectCreationExpression();
- $objectCreationExpression->parent = $parentNode;
- $objectCreationExpression->newKeword = $this->eat1(TokenKind::NewKeyword);
- // TODO - add tests for this scenario
- $oldIsParsingObjectCreationExpression = $this->isParsingObjectCreationExpression;
- $this->isParsingObjectCreationExpression = true;
-
- if ($this->getCurrentToken()->kind === TokenKind::AttributeToken) {
- // Attributes such as `new #[MyAttr] class` can only be used with anonymous class declarations.
- // But handle this like $objectCreationExpression->classMembers and leave it up to the applications to detect the invalid combination.
- $objectCreationExpression->attributes = $this->parseAttributeGroups($objectCreationExpression);
- }
- $objectCreationExpression->classTypeDesignator =
- $this->eatOptional1(TokenKind::ClassKeyword) ??
- $this->parseExpression($objectCreationExpression);
-
- $this->isParsingObjectCreationExpression = $oldIsParsingObjectCreationExpression;
-
- $objectCreationExpression->openParen = $this->eatOptional1(TokenKind::OpenParenToken);
- if ($objectCreationExpression->openParen !== null) {
- $objectCreationExpression->argumentExpressionList = $this->parseArgumentExpressionList($objectCreationExpression);
- $objectCreationExpression->closeParen = $this->eat1(TokenKind::CloseParenToken);
- }
-
- $objectCreationExpression->classBaseClause = $this->parseClassBaseClause($objectCreationExpression);
- $objectCreationExpression->classInterfaceClause = $this->parseClassInterfaceClause($objectCreationExpression);
-
- if ($this->getCurrentToken()->kind === TokenKind::OpenBraceToken) {
- $objectCreationExpression->classMembers = $this->parseClassMembers($objectCreationExpression);
- }
-
- return $objectCreationExpression;
- }
-
- /**
- * @return DelimitedList\ArgumentExpressionList|null
- */
- private function parseArgumentExpressionList($parentNode) {
- $list = $this->parseDelimitedList(
- DelimitedList\ArgumentExpressionList::class,
- TokenKind::CommaToken,
- $this->isArgumentExpressionStartFn(),
- $this->parseArgumentExpressionFn(),
- $parentNode
- );
- $children = $list->children ?? null;
- if (is_array($children) && \count($children) === 1) {
- $arg = $children[0];
- if ($arg instanceof ArgumentExpression) {
- if ($arg->dotDotDotToken && $arg->expression instanceof MissingToken && !$arg->colonToken && !$arg->name) {
- $arg->expression = null;
- }
- }
- }
- return $list;
- }
-
- /**
- * @param Node|Token $leftOperand (should only be a token for invalid ASTs)
- * @param Token $questionToken
- * @param Node $fallbackParentNode
- */
- private function parseTernaryExpression($leftOperand, $questionToken, $fallbackParentNode):TernaryExpression {
- $ternaryExpression = new TernaryExpression();
- if ($leftOperand instanceof Node) {
- $ternaryExpression->parent = $leftOperand->parent;
- $leftOperand->parent = $ternaryExpression;
- } else {
- $ternaryExpression->parent = $fallbackParentNode;
- }
- $ternaryExpression->condition = $leftOperand;
- $ternaryExpression->questionToken = $questionToken;
- $ternaryExpression->ifExpression = $this->isExpressionStart($this->getCurrentToken()) ? $this->parseExpression($ternaryExpression) : null;
- $ternaryExpression->colonToken = $this->eat1(TokenKind::ColonToken);
- $ternaryExpression->elseExpression = $this->parseBinaryExpressionOrHigher(9, $ternaryExpression);
- $leftOperand = $ternaryExpression;
- return $leftOperand;
- }
-
- private function parseClassInterfaceClause($parentNode) {
- $classInterfaceClause = new ClassInterfaceClause();
- $classInterfaceClause->parent = $parentNode;
- $classInterfaceClause->implementsKeyword = $this->eatOptional1(TokenKind::ImplementsKeyword);
-
- if ($classInterfaceClause->implementsKeyword === null) {
- return null;
- }
-
- $classInterfaceClause->interfaceNameList =
- $this->parseQualifiedNameList($classInterfaceClause);
- return $classInterfaceClause;
- }
-
- private function parseClassBaseClause($parentNode) {
- $classBaseClause = new ClassBaseClause();
- $classBaseClause->parent = $parentNode;
-
- $classBaseClause->extendsKeyword = $this->eatOptional1(TokenKind::ExtendsKeyword);
- if ($classBaseClause->extendsKeyword === null) {
- return null;
- }
- $classBaseClause->baseClass = $this->parseQualifiedName($classBaseClause);
-
- return $classBaseClause;
- }
-
- private function parseClassConstDeclaration($parentNode, $modifiers) {
- $classConstDeclaration = new ClassConstDeclaration();
- $classConstDeclaration->parent = $parentNode;
-
- $classConstDeclaration->modifiers = $modifiers;
- $classConstDeclaration->constKeyword = $this->eat1(TokenKind::ConstKeyword);
- $classConstDeclaration->constElements = $this->parseConstElements($classConstDeclaration);
- $classConstDeclaration->semicolon = $this->eat1(TokenKind::SemicolonToken);
-
- return $classConstDeclaration;
- }
-
- private function parseEnumCaseDeclaration($parentNode) {
- $classConstDeclaration = new EnumCaseDeclaration();
- $classConstDeclaration->parent = $parentNode;
- $classConstDeclaration->caseKeyword = $this->eat1(TokenKind::CaseKeyword);
- $classConstDeclaration->name = $this->eat($this->nameOrKeywordOrReservedWordTokens);
- $classConstDeclaration->equalsToken = $this->eatOptional1(TokenKind::EqualsToken);
- if ($classConstDeclaration->equalsToken !== null) {
- // TODO add post-parse rule that checks for invalid assignments
- $classConstDeclaration->assignment = $this->parseExpression($classConstDeclaration);
- }
- $classConstDeclaration->semicolon = $this->eat1(TokenKind::SemicolonToken);
-
- return $classConstDeclaration;
- }
-
- /**
- * @param Node $parentNode
- * @param Token[] $modifiers
- * @param Token|null $questionToken
- */
- private function parseRemainingPropertyDeclarationOrMissingMemberDeclaration($parentNode, $modifiers, $questionToken = null)
- {
- $typeDeclarationList = $this->tryParseParameterTypeDeclarationList(null);
- if ($this->getCurrentToken()->kind !== TokenKind::VariableName) {
- return $this->makeMissingMemberDeclaration($parentNode, $modifiers, $questionToken, $typeDeclarationList);
- }
- return $this->parsePropertyDeclaration($parentNode, $modifiers, $questionToken, $typeDeclarationList);
- }
-
- /**
- * @param Node $parentNode
- * @param Token[] $modifiers
- * @param Token|null $questionToken
- * @param DelimitedList\QualifiedNameList|null $typeDeclarationList
- */
- private function parsePropertyDeclaration($parentNode, $modifiers, $questionToken = null, $typeDeclarationList = null) {
- $propertyDeclaration = new PropertyDeclaration();
- $propertyDeclaration->parent = $parentNode;
-
- $propertyDeclaration->modifiers = $modifiers;
- $propertyDeclaration->questionToken = $questionToken;
- if ($typeDeclarationList) {
- $propertyDeclaration->typeDeclarationList = $typeDeclarationList;
- $typeDeclarationList->parent = $propertyDeclaration;
- } elseif ($questionToken) {
- $propertyDeclaration->typeDeclarationList = new MissingToken(TokenKind::PropertyType, $this->token->fullStart);
- }
- $propertyDeclaration->propertyElements = $this->parseExpressionList($propertyDeclaration);
- $propertyDeclaration->semicolon = $this->eat1(TokenKind::SemicolonToken);
-
- return $propertyDeclaration;
- }
-
- /**
- * @param Node $parentNode
- * @return DelimitedList\QualifiedNameList
- */
- private function parseQualifiedNameList($parentNode) {
- return $this->parseDelimitedList(
- DelimitedList\QualifiedNameList::class,
- TokenKind::CommaToken,
- $this->isQualifiedNameStartFn(),
- $this->parseQualifiedNameFn(),
- $parentNode);
- }
-
- private function parseQualifiedNameCatchList($parentNode) {
- $result = $this->parseDelimitedList(
- DelimitedList\QualifiedNameList::class,
- TokenKind::BarToken,
- $this->isQualifiedNameStartForCatchFn(),
- $this->parseQualifiedNameFn(),
- $parentNode);
-
- // Add a MissingToken so that this will Warn about `catch (T| $x) {}`
- // TODO: Make this a reusable abstraction?
- if ($result && (end($result->children)->kind ?? null) === TokenKind::BarToken) {
- $result->children[] = new MissingToken(TokenKind::Name, $this->token->fullStart);
- }
- return $result;
- }
-
- private function parseInterfaceDeclaration($parentNode) {
- $interfaceDeclaration = new InterfaceDeclaration(); // TODO verify not nested
- $interfaceDeclaration->parent = $parentNode;
- $interfaceDeclaration->interfaceKeyword = $this->eat1(TokenKind::InterfaceKeyword);
- $interfaceDeclaration->name = $this->eat1(TokenKind::Name);
- $interfaceDeclaration->interfaceBaseClause = $this->parseInterfaceBaseClause($interfaceDeclaration);
- $interfaceDeclaration->interfaceMembers = $this->parseInterfaceMembers($interfaceDeclaration);
- return $interfaceDeclaration;
- }
-
- private function parseInterfaceMembers($parentNode) : Node {
- $interfaceMembers = new InterfaceMembers();
- $interfaceMembers->openBrace = $this->eat1(TokenKind::OpenBraceToken);
- $interfaceMembers->interfaceMemberDeclarations = $this->parseList($interfaceMembers, ParseContext::InterfaceMembers);
- $interfaceMembers->closeBrace = $this->eat1(TokenKind::CloseBraceToken);
- $interfaceMembers->parent = $parentNode;
- return $interfaceMembers;
- }
-
- private function isInterfaceMemberDeclarationStart(Token $token) {
- switch ($token->kind) {
- // visibility-modifier
- case TokenKind::PublicKeyword:
- case TokenKind::ProtectedKeyword:
- case TokenKind::PrivateKeyword:
-
- // static-modifier
- case TokenKind::StaticKeyword:
-
- // readonly-modifier
- case TokenKind::ReadonlyKeyword:
-
- // class-modifier
- case TokenKind::AbstractKeyword:
- case TokenKind::FinalKeyword:
-
- case TokenKind::ConstKeyword:
-
- case TokenKind::FunctionKeyword:
-
- case TokenKind::AttributeToken:
- return true;
- }
- return false;
- }
-
- private function parseInterfaceElementFn() {
- return function ($parentNode) {
- $modifiers = $this->parseModifiers();
-
- $token = $this->getCurrentToken();
- switch ($token->kind) {
- case TokenKind::ConstKeyword:
- return $this->parseClassConstDeclaration($parentNode, $modifiers);
-
- case TokenKind::FunctionKeyword:
- return $this->parseMethodDeclaration($parentNode, $modifiers);
-
- case TokenKind::AttributeToken:
- return $this->parseAttributeStatement($parentNode);
-
- default:
- $missingInterfaceMemberDeclaration = new MissingMemberDeclaration();
- $missingInterfaceMemberDeclaration->parent = $parentNode;
- $missingInterfaceMemberDeclaration->modifiers = $modifiers;
- return $missingInterfaceMemberDeclaration;
- }
- };
- }
-
- private function parseInterfaceBaseClause($parentNode) {
- $interfaceBaseClause = new InterfaceBaseClause();
- $interfaceBaseClause->parent = $parentNode;
-
- $interfaceBaseClause->extendsKeyword = $this->eatOptional1(TokenKind::ExtendsKeyword);
- if (isset($interfaceBaseClause->extendsKeyword)) {
- $interfaceBaseClause->interfaceNameList = $this->parseQualifiedNameList($interfaceBaseClause);
- } else {
- return null;
- }
-
- return $interfaceBaseClause;
- }
-
- private function parseNamespaceDefinition($parentNode) {
- $namespaceDefinition = new NamespaceDefinition();
- $namespaceDefinition->parent = $parentNode;
-
- $namespaceDefinition->namespaceKeyword = $this->eat1(TokenKind::NamespaceKeyword);
-
- if (!$this->checkToken(TokenKind::NamespaceKeyword)) {
- $namespaceDefinition->name = $this->parseQualifiedName($namespaceDefinition); // TODO only optional with compound statement block
- }
-
- $namespaceDefinition->compoundStatementOrSemicolon =
- $this->checkToken(TokenKind::OpenBraceToken) ?
- $this->parseCompoundStatement($namespaceDefinition) : $this->eatSemicolonOrAbortStatement();
-
- return $namespaceDefinition;
- }
-
- private function parseNamespaceUseDeclaration($parentNode) {
- $namespaceUseDeclaration = new NamespaceUseDeclaration();
- $namespaceUseDeclaration->parent = $parentNode;
- $namespaceUseDeclaration->useKeyword = $this->eat1(TokenKind::UseKeyword);
- $namespaceUseDeclaration->functionOrConst = $this->eatOptional(TokenKind::FunctionKeyword, TokenKind::ConstKeyword);
- $namespaceUseDeclaration->useClauses = $this->parseNamespaceUseClauseList($namespaceUseDeclaration);
- $namespaceUseDeclaration->semicolon = $this->eatSemicolonOrAbortStatement();
- return $namespaceUseDeclaration;
- }
-
- private function parseNamespaceUseClauseList($parentNode) {
- return $this->parseDelimitedList(
- DelimitedList\NamespaceUseClauseList::class,
- TokenKind::CommaToken,
- function ($token) {
- return $this->isQualifiedNameStart($token) || $token->kind === TokenKind::FunctionKeyword || $token->kind === TokenKind::ConstKeyword;
- },
- function ($parentNode) {
- $namespaceUseClause = new NamespaceUseClause();
- $namespaceUseClause->parent = $parentNode;
- $namespaceUseClause->namespaceName = $this->parseQualifiedName($namespaceUseClause);
- if ($this->checkToken(TokenKind::AsKeyword)) {
- $namespaceUseClause->namespaceAliasingClause = $this->parseNamespaceAliasingClause($namespaceUseClause);
- }
- elseif ($this->checkToken(TokenKind::OpenBraceToken)) {
- $namespaceUseClause->openBrace = $this->eat1(TokenKind::OpenBraceToken);
- $namespaceUseClause->groupClauses = $this->parseNamespaceUseGroupClauseList($namespaceUseClause);
- $namespaceUseClause->closeBrace = $this->eat1(TokenKind::CloseBraceToken);
- }
-
- return $namespaceUseClause;
- },
- $parentNode
- );
- }
-
- private function parseNamespaceUseGroupClauseList($parentNode) {
- return $this->parseDelimitedList(
- DelimitedList\NamespaceUseGroupClauseList::class,
- TokenKind::CommaToken,
- function ($token) {
- return $this->isQualifiedNameStart($token) || $token->kind === TokenKind::FunctionKeyword || $token->kind === TokenKind::ConstKeyword;
- },
- function ($parentNode) {
- $namespaceUseGroupClause = new NamespaceUseGroupClause();
- $namespaceUseGroupClause->parent = $parentNode;
-
- $namespaceUseGroupClause->functionOrConst = $this->eatOptional(TokenKind::FunctionKeyword, TokenKind::ConstKeyword);
- $namespaceUseGroupClause->namespaceName = $this->parseQualifiedName($namespaceUseGroupClause);
- if ($this->checkToken(TokenKind::AsKeyword)) {
- $namespaceUseGroupClause->namespaceAliasingClause = $this->parseNamespaceAliasingClause($namespaceUseGroupClause);
- }
-
- return $namespaceUseGroupClause;
- },
- $parentNode
- );
- }
-
- private function parseNamespaceAliasingClause($parentNode) {
- $namespaceAliasingClause = new NamespaceAliasingClause();
- $namespaceAliasingClause->parent = $parentNode;
- $namespaceAliasingClause->asKeyword = $this->eat1(TokenKind::AsKeyword);
- $namespaceAliasingClause->name = $this->eat1(TokenKind::Name);
- return $namespaceAliasingClause;
- }
-
- private function parseTraitDeclaration($parentNode) {
- $traitDeclaration = new TraitDeclaration();
- $traitDeclaration->parent = $parentNode;
-
- $traitDeclaration->traitKeyword = $this->eat1(TokenKind::TraitKeyword);
- $traitDeclaration->name = $this->eat1(TokenKind::Name);
-
- $traitDeclaration->traitMembers = $this->parseTraitMembers($traitDeclaration);
-
- return $traitDeclaration;
- }
-
- private function parseTraitMembers($parentNode) {
- $traitMembers = new TraitMembers();
- $traitMembers->parent = $parentNode;
-
- $traitMembers->openBrace = $this->eat1(TokenKind::OpenBraceToken);
-
- $traitMembers->traitMemberDeclarations = $this->parseList($traitMembers, ParseContext::TraitMembers);
-
- $traitMembers->closeBrace = $this->eat1(TokenKind::CloseBraceToken);
-
- return $traitMembers;
- }
-
- private function isTraitMemberDeclarationStart($token) {
- switch ($token->kind) {
- // property-declaration
- case TokenKind::VariableName:
-
- // modifiers
- case TokenKind::PublicKeyword:
- case TokenKind::ProtectedKeyword:
- case TokenKind::PrivateKeyword:
- case TokenKind::VarKeyword:
- case TokenKind::StaticKeyword:
- case TokenKind::AbstractKeyword:
- case TokenKind::FinalKeyword:
- case TokenKind::ReadonlyKeyword:
-
- // method-declaration
- case TokenKind::FunctionKeyword:
-
- // trait-use-clauses
- case TokenKind::UseKeyword:
-
- // attributes
- case TokenKind::AttributeToken:
- return true;
- }
- return false;
- }
-
- private function parseTraitElementFn() {
- return function ($parentNode) {
- $modifiers = $this->parseModifiers();
-
- $token = $this->getCurrentToken();
- switch ($token->kind) {
- case TokenKind::FunctionKeyword:
- return $this->parseMethodDeclaration($parentNode, $modifiers);
-
- case TokenKind::QuestionToken:
- return $this->parseRemainingPropertyDeclarationOrMissingMemberDeclaration(
- $parentNode,
- $modifiers,
- $this->eat1(TokenKind::QuestionToken)
- );
- case TokenKind::VariableName:
- return $this->parsePropertyDeclaration($parentNode, $modifiers);
-
- case TokenKind::UseKeyword:
- return $this->parseTraitUseClause($parentNode);
-
- case TokenKind::AttributeToken:
- return $this->parseAttributeStatement($parentNode);
-
- default:
- return $this->parseRemainingPropertyDeclarationOrMissingMemberDeclaration($parentNode, $modifiers);
- }
- };
- }
-
- private function parseEnumDeclaration($parentNode) {
- $enumDeclaration = new EnumDeclaration();
- $enumDeclaration->parent = $parentNode;
-
- $enumDeclaration->enumKeyword = $this->eat1(TokenKind::EnumKeyword);
- $enumDeclaration->name = $this->eat1(TokenKind::Name);
- $enumDeclaration->colonToken = $this->eatOptional1(TokenKind::ColonToken);
- if ($enumDeclaration->colonToken !== null) {
- $enumDeclaration->enumType = $this->tryParseParameterTypeDeclaration($enumDeclaration)
- ?: new MissingToken(TokenKind::EnumType, $this->token->fullStart);
- }
-
- $enumDeclaration->enumMembers = $this->parseEnumMembers($enumDeclaration);
-
- return $enumDeclaration;
- }
-
- private function parseEnumMembers($parentNode) {
- $enumMembers = new EnumMembers();
- $enumMembers->parent = $parentNode;
-
- $enumMembers->openBrace = $this->eat1(TokenKind::OpenBraceToken);
-
- $enumMembers->enumMemberDeclarations = $this->parseList($enumMembers, ParseContext::EnumMembers);
-
- $enumMembers->closeBrace = $this->eat1(TokenKind::CloseBraceToken);
-
- return $enumMembers;
- }
-
- private function isEnumMemberDeclarationStart($token) {
- switch ($token->kind) {
- // modifiers
- case TokenKind::PublicKeyword:
- case TokenKind::ProtectedKeyword:
- case TokenKind::PrivateKeyword:
- case TokenKind::StaticKeyword:
- case TokenKind::AbstractKeyword:
- case TokenKind::FinalKeyword:
-
- // method-declaration
- case TokenKind::FunctionKeyword:
-
- // trait-use-clauses (enums can use traits)
- case TokenKind::UseKeyword:
-
- // cases and constants
- case TokenKind::CaseKeyword:
- case TokenKind::ConstKeyword:
-
- // attributes
- case TokenKind::AttributeToken:
- return true;
- }
- return false;
- }
-
- private function parseEnumElementFn() {
- return function ($parentNode) {
- $modifiers = $this->parseModifiers();
-
- $token = $this->getCurrentToken();
- switch ($token->kind) {
- // TODO: CaseKeyword
- case TokenKind::CaseKeyword:
- return $this->parseEnumCaseDeclaration($parentNode);
-
- case TokenKind::ConstKeyword:
- return $this->parseClassConstDeclaration($parentNode, $modifiers);
-
- case TokenKind::FunctionKeyword:
- return $this->parseMethodDeclaration($parentNode, $modifiers);
-
- case TokenKind::QuestionToken:
- return $this->parseRemainingPropertyDeclarationOrMissingMemberDeclaration(
- $parentNode,
- $modifiers,
- $this->eat1(TokenKind::QuestionToken)
- );
- case TokenKind::VariableName:
- return $this->parsePropertyDeclaration($parentNode, $modifiers);
-
- case TokenKind::UseKeyword:
- return $this->parseTraitUseClause($parentNode);
-
- case TokenKind::AttributeToken:
- return $this->parseAttributeStatement($parentNode);
-
- default:
- return $this->parseRemainingPropertyDeclarationOrMissingMemberDeclaration($parentNode, $modifiers);
- }
- };
- }
-
-
- /**
- * @param Node $parentNode
- * @param Token[] $modifiers
- * @param Token $questionToken
- * @param DelimitedList\QualifiedNameList|null $typeDeclarationList
- */
- private function makeMissingMemberDeclaration($parentNode, $modifiers, $questionToken = null, $typeDeclarationList = null) {
- $missingTraitMemberDeclaration = new MissingMemberDeclaration();
- $missingTraitMemberDeclaration->parent = $parentNode;
- $missingTraitMemberDeclaration->modifiers = $modifiers;
- $missingTraitMemberDeclaration->questionToken = $questionToken;
- if ($typeDeclarationList) {
- $missingTraitMemberDeclaration->typeDeclarationList = $typeDeclarationList;
- $missingTraitMemberDeclaration->typeDeclarationList->parent = $missingTraitMemberDeclaration;
- } elseif ($questionToken) {
- $missingTraitMemberDeclaration->typeDeclarationList = new MissingToken(TokenKind::PropertyType, $this->token->fullStart);
- }
- return $missingTraitMemberDeclaration;
- }
-
- private function parseTraitUseClause($parentNode) {
- $traitUseClause = new TraitUseClause();
- $traitUseClause->parent = $parentNode;
-
- $traitUseClause->useKeyword = $this->eat1(TokenKind::UseKeyword);
- $traitUseClause->traitNameList = $this->parseQualifiedNameList($traitUseClause);
-
- $traitUseClause->semicolonOrOpenBrace = $this->eat(TokenKind::OpenBraceToken, TokenKind::SemicolonToken);
- if ($traitUseClause->semicolonOrOpenBrace->kind === TokenKind::OpenBraceToken) {
- $traitUseClause->traitSelectAndAliasClauses = $this->parseTraitSelectAndAliasClauseList($traitUseClause);
- $traitUseClause->closeBrace = $this->eat1(TokenKind::CloseBraceToken);
- }
-
- return $traitUseClause;
- }
-
- private function parseTraitSelectAndAliasClauseList($parentNode) {
- return $this->parseDelimitedList(
- DelimitedList\TraitSelectOrAliasClauseList::class,
- TokenKind::SemicolonToken,
- $this->isQualifiedNameStartFn(),
- $this->parseTraitSelectOrAliasClauseFn(),
- $parentNode
- );
- }
-
- private function parseTraitSelectOrAliasClauseFn() {
- return function ($parentNode) {
- $traitSelectAndAliasClause = new TraitSelectOrAliasClause();
- $traitSelectAndAliasClause->parent = $parentNode;
- $traitSelectAndAliasClause->name = // TODO update spec
- $this->parseQualifiedNameOrScopedPropertyAccessExpression($traitSelectAndAliasClause);
-
- $traitSelectAndAliasClause->asOrInsteadOfKeyword = $this->eat(TokenKind::AsKeyword, TokenKind::InsteadOfKeyword);
- $traitSelectAndAliasClause->modifiers = $this->parseModifiers(); // TODO accept all modifiers, verify later
-
- if ($traitSelectAndAliasClause->asOrInsteadOfKeyword->kind === TokenKind::InsteadOfKeyword) {
- $traitSelectAndAliasClause->targetNameList = $this->parseQualifiedNameList($traitSelectAndAliasClause);
- } else {
- $traitSelectAndAliasClause->targetNameList =
- $this->parseQualifiedNameOrScopedPropertyAccessExpression($traitSelectAndAliasClause);
- }
-
- // TODO errors for insteadof/as
- return $traitSelectAndAliasClause;
- };
- }
-
- private function parseQualifiedNameOrScopedPropertyAccessExpression($parentNode) {
- $qualifiedNameOrScopedProperty = $this->parseQualifiedName($parentNode);
- if ($this->getCurrentToken()->kind === TokenKind::ColonColonToken) {
- $qualifiedNameOrScopedProperty = $this->parseScopedPropertyAccessExpression($qualifiedNameOrScopedProperty, $parentNode);
- }
- return $qualifiedNameOrScopedProperty;
- }
-
- private function parseGlobalDeclaration($parentNode) {
- $globalDeclaration = new GlobalDeclaration();
- $globalDeclaration->parent = $parentNode;
-
- $globalDeclaration->globalKeyword = $this->eat1(TokenKind::GlobalKeyword);
- $globalDeclaration->variableNameList = $this->parseDelimitedList(
- DelimitedList\VariableNameList::class,
- TokenKind::CommaToken,
- $this->isVariableNameStartFn(),
- $this->parseSimpleVariableFn(),
- $globalDeclaration
- );
-
- $globalDeclaration->semicolon = $this->eatSemicolonOrAbortStatement();
-
- return $globalDeclaration;
- }
-
- private function parseFunctionStaticDeclaration($parentNode) {
- $functionStaticDeclaration = new FunctionStaticDeclaration();
- $functionStaticDeclaration->parent = $parentNode;
-
- $functionStaticDeclaration->staticKeyword = $this->eat1(TokenKind::StaticKeyword);
- $functionStaticDeclaration->staticVariableNameList = $this->parseDelimitedList(
- DelimitedList\StaticVariableNameList::class,
- TokenKind::CommaToken,
- function ($token) {
- return $token->kind === TokenKind::VariableName;
- },
- $this->parseStaticVariableDeclarationFn(),
- $functionStaticDeclaration
- );
- $functionStaticDeclaration->semicolon = $this->eatSemicolonOrAbortStatement();
-
- return $functionStaticDeclaration;
- }
-
- private function isVariableNameStartFn() {
- return function ($token) {
- return $token->kind === TokenKind::VariableName || $token->kind === TokenKind::DollarToken;
- };
- }
-
- private function parseStaticVariableDeclarationFn() {
- return function ($parentNode) {
- $staticVariableDeclaration = new StaticVariableDeclaration();
- $staticVariableDeclaration->parent = $parentNode;
- $staticVariableDeclaration->variableName = $this->eat1(TokenKind::VariableName);
- $staticVariableDeclaration->equalsToken = $this->eatOptional1(TokenKind::EqualsToken);
- if ($staticVariableDeclaration->equalsToken !== null) {
- // TODO add post-parse rule that checks for invalid assignments
- $staticVariableDeclaration->assignment = $this->parseExpression($staticVariableDeclaration);
- }
- return $staticVariableDeclaration;
- };
- }
-
- private function parseConstDeclaration($parentNode) {
- $constDeclaration = new ConstDeclaration();
- $constDeclaration->parent = $parentNode;
-
- $constDeclaration->constKeyword = $this->eat1(TokenKind::ConstKeyword);
- $constDeclaration->constElements = $this->parseConstElements($constDeclaration);
- $constDeclaration->semicolon = $this->eatSemicolonOrAbortStatement();
-
- return $constDeclaration;
- }
-
- private function parseConstElements($parentNode) {
- return $this->parseDelimitedList(
- DelimitedList\ConstElementList::class,
- TokenKind::CommaToken,
- function ($token) {
- return \in_array($token->kind, $this->nameOrKeywordOrReservedWordTokens);
- },
- $this->parseConstElementFn(),
- $parentNode
- );
- }
-
- private function parseConstElementFn() {
- return function ($parentNode) {
- $constElement = new ConstElement();
- $constElement->parent = $parentNode;
- $constElement->name = $this->getCurrentToken();
- $this->advanceToken();
- $constElement->name->kind = TokenKind::Name; // to support keyword names
- $constElement->equalsToken = $this->eat1(TokenKind::EqualsToken);
- // TODO add post-parse rule that checks for invalid assignments
- $constElement->assignment = $this->parseExpression($constElement);
- return $constElement;
- };
- }
-
- private function parseCastExpression($parentNode) {
- $castExpression = new CastExpression();
- $castExpression->parent = $parentNode;
- $castExpression->castType = $this->eat(
- TokenKind::ArrayCastToken,
- TokenKind::BoolCastToken,
- TokenKind::DoubleCastToken,
- TokenKind::IntCastToken,
- TokenKind::ObjectCastToken,
- TokenKind::StringCastToken,
- TokenKind::UnsetCastToken
- );
-
- $castExpression->operand = $this->parseUnaryExpressionOrHigher($castExpression);
-
- return $castExpression;
- }
-
- private function parseCastExpressionGranular($parentNode) {
- $castExpression = new CastExpression();
- $castExpression->parent = $parentNode;
-
- $castExpression->openParen = $this->eat1(TokenKind::OpenParenToken);
- $castExpression->castType = $this->eat(
- TokenKind::ArrayKeyword,
- TokenKind::BinaryReservedWord,
- TokenKind::BoolReservedWord,
- TokenKind::BooleanReservedWord,
- TokenKind::DoubleReservedWord,
- TokenKind::IntReservedWord,
- TokenKind::IntegerReservedWord,
- TokenKind::FloatReservedWord,
- TokenKind::ObjectReservedWord,
- TokenKind::RealReservedWord,
- TokenKind::StringReservedWord,
- TokenKind::UnsetKeyword
- );
- $castExpression->closeParen = $this->eat1(TokenKind::CloseParenToken);
- $castExpression->operand = $this->parseUnaryExpressionOrHigher($castExpression);
-
- return $castExpression;
- }
-
- private function parseAnonymousFunctionCreationExpression($parentNode) {
- $staticModifier = $this->eatOptional1(TokenKind::StaticKeyword);
- if ($this->getCurrentToken()->kind === TokenKind::FnKeyword) {
- return $this->parseArrowFunctionCreationExpression($parentNode, $staticModifier);
- }
- $anonymousFunctionCreationExpression = new AnonymousFunctionCreationExpression();
- $anonymousFunctionCreationExpression->parent = $parentNode;
-
- $anonymousFunctionCreationExpression->staticModifier = $staticModifier;
- $this->parseFunctionType($anonymousFunctionCreationExpression, false, true);
-
- return $anonymousFunctionCreationExpression;
- }
-
- private function parseArrowFunctionCreationExpression($parentNode, $staticModifier) : ArrowFunctionCreationExpression {
- $arrowFunction = new ArrowFunctionCreationExpression();
- $arrowFunction->parent = $parentNode;
- $arrowFunction->staticModifier = $staticModifier;
-
- $arrowFunction->functionKeyword = $this->eat1(TokenKind::FnKeyword);
- $arrowFunction->byRefToken = $this->eatOptional1(TokenKind::AmpersandToken);
- $arrowFunction->name = $this->eatOptional($this->nameOrKeywordOrReservedWordTokens);
-
- if (isset($arrowFunction->name)) {
- // Anonymous functions should not have names.
- // This is based on the code for AnonymousFunctionCreationExpression.
- $arrowFunction->name->kind = TokenKind::Name;
- $arrowFunction->name = new SkippedToken($arrowFunction->name); // TODO instead handle this during post-walk
- }
-
- $arrowFunction->openParen = $this->eat1(TokenKind::OpenParenToken);
- $arrowFunction->parameters = $this->parseDelimitedList(
- DelimitedList\ParameterDeclarationList::class,
- TokenKind::CommaToken,
- $this->isParameterStartFn(),
- $this->parseParameterFn(),
- $arrowFunction);
- $arrowFunction->closeParen = $this->eat1(TokenKind::CloseParenToken);
-
- if ($this->checkToken(TokenKind::ColonToken)) {
- $arrowFunction->colonToken = $this->eat1(TokenKind::ColonToken);
- $arrowFunction->questionToken = $this->eatOptional1(TokenKind::QuestionToken);
- $this->parseAndSetReturnTypeDeclarationList($arrowFunction);
- }
-
- $arrowFunction->arrowToken = $this->eat1(TokenKind::DoubleArrowToken);
- $arrowFunction->resultExpression = $this->parseExpression($arrowFunction);
-
- return $arrowFunction;
- }
-
- private function parseAnonymousFunctionUseClause($parentNode) {
- $anonymousFunctionUseClause = new AnonymousFunctionUseClause();
- $anonymousFunctionUseClause->parent = $parentNode;
-
- $anonymousFunctionUseClause->useKeyword = $this->eatOptional1(TokenKind::UseKeyword);
- if ($anonymousFunctionUseClause->useKeyword === null) {
- return null;
- }
- $anonymousFunctionUseClause->openParen = $this->eat1(TokenKind::OpenParenToken);
- $anonymousFunctionUseClause->useVariableNameList = $this->parseDelimitedList(
- DelimitedList\UseVariableNameList::class,
- TokenKind::CommaToken,
- function ($token) {
- return $token->kind === TokenKind::AmpersandToken || $token->kind === TokenKind::VariableName;
- },
- function ($parentNode) {
- $useVariableName = new UseVariableName();
- $useVariableName->parent = $parentNode;
- $useVariableName->byRef = $this->eatOptional1(TokenKind::AmpersandToken);
- $useVariableName->variableName = $this->eat1(TokenKind::VariableName);
- return $useVariableName;
- },
- $anonymousFunctionUseClause
- ) ?: (new MissingToken(TokenKind::VariableName, $this->token->fullStart));
- $anonymousFunctionUseClause->closeParen = $this->eat1(TokenKind::CloseParenToken);
-
- return $anonymousFunctionUseClause;
- }
-
- private function parseMatchExpression($parentNode) {
- $matchExpression = new MatchExpression();
- $matchExpression->parent = $parentNode;
- $matchExpression->matchToken = $this->eat1(TokenKind::MatchKeyword);
- $matchExpression->openParen = $this->eat1(TokenKind::OpenParenToken);
- $matchExpression->expression = $this->parseExpression($matchExpression);
- $matchExpression->closeParen = $this->eat1(TokenKind::CloseParenToken);
- $matchExpression->openBrace = $this->eat1(TokenKind::OpenBraceToken);
- $matchExpression->arms = $this->parseDelimitedList(
- DelimitedList\MatchExpressionArmList::class,
- TokenKind::CommaToken,
- $this->isMatchConditionStartFn(),
- $this->parseMatchArmFn(),
- $matchExpression);
- $matchExpression->closeBrace = $this->eat1(TokenKind::CloseBraceToken);
- return $matchExpression;
- }
-
- private function isMatchConditionStartFn() {
- return function ($token) {
- return $token->kind === TokenKind::DefaultKeyword ||
- $this->isExpressionStart($token);
- };
- }
-
- private function parseMatchArmFn() {
- return function ($parentNode) {
- $matchArm = new MatchArm();
- $matchArm->parent = $parentNode;
- $matchArmConditionList = $this->parseDelimitedList(
- DelimitedList\MatchArmConditionList::class,
- TokenKind::CommaToken,
- $this->isMatchConditionStartFn(),
- $this->parseMatchConditionFn(),
- $matchArm
- );
- $matchArmConditionList->parent = $matchArm;
- $matchArm->conditionList = $matchArmConditionList;
- $matchArm->arrowToken = $this->eat1(TokenKind::DoubleArrowToken);
- $matchArm->body = $this->parseExpression($matchArm);
- return $matchArm;
- };
- }
-
- private function parseMatchConditionFn() {
- return function ($parentNode) {
- if ($this->token->kind === TokenKind::DefaultKeyword) {
- return $this->eat1(TokenKind::DefaultKeyword);
- }
- return $this->parseExpression($parentNode);
- };
- }
-
- private function parseCloneExpression($parentNode) {
- $cloneExpression = new CloneExpression();
- $cloneExpression->parent = $parentNode;
-
- $cloneExpression->cloneKeyword = $this->eat1(TokenKind::CloneKeyword);
- $cloneExpression->expression = $this->parseUnaryExpressionOrHigher($cloneExpression);
-
- return $cloneExpression;
- }
-
- private function eatSemicolonOrAbortStatement() {
- if ($this->getCurrentToken()->kind !== TokenKind::ScriptSectionEndTag) {
- return $this->eat1(TokenKind::SemicolonToken);
- }
- return null;
- }
-
- private function parseInlineHtml($parentNode) {
- $inlineHtml = new InlineHtml();
- $inlineHtml->parent = $parentNode;
- $inlineHtml->scriptSectionEndTag = $this->eatOptional1(TokenKind::ScriptSectionEndTag);
- $inlineHtml->text = $this->eatOptional1(TokenKind::InlineHtml);
- $inlineHtml->scriptSectionStartTag = $this->eatOptional(TokenKind::ScriptSectionStartTag, TokenKind::ScriptSectionStartWithEchoTag);
-
- // This is the easiest way to represent `= "expr", "other" `
- if (($inlineHtml->scriptSectionStartTag->kind ?? null) === TokenKind::ScriptSectionStartWithEchoTag) {
- $echoStatement = new EchoStatement();
- $expressionList = $this->parseExpressionList($echoStatement) ?? (new MissingToken(TokenKind::Expression, $this->token->fullStart));
- $echoStatement->expressions = $expressionList;
-
- $echoStatement->semicolon = $this->eatSemicolonOrAbortStatement();
- $echoStatement->parent = $inlineHtml;
- // Deliberately leave echoKeyword as null instead of MissingToken
-
- $inlineHtml->echoStatement = $echoStatement;
- }
-
- return $inlineHtml;
- }
-}
-
-class Associativity {
- const None = 0;
- const Left = 1;
- const Right = 2;
-}
diff --git a/vendor/microsoft/tolerant-php-parser/src/PhpTokenizer.php b/vendor/microsoft/tolerant-php-parser/src/PhpTokenizer.php
deleted file mode 100644
index be8cd711..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/PhpTokenizer.php
+++ /dev/null
@@ -1,413 +0,0 @@
-tokensArray = $this->getTokensArrayFromContent($content);
- $this->endOfFilePos = \count($this->tokensArray) - 1;
- $this->pos = 0;
- }
-
- public function scanNextToken() : Token {
- return $this->pos >= $this->endOfFilePos
- ? $this->tokensArray[$this->endOfFilePos]
- : $this->tokensArray[$this->pos++];
- }
-
- public function getCurrentPosition() : int {
- return $this->pos;
- }
-
- public function setCurrentPosition(int $pos) {
- $this->pos = $pos;
- }
-
- public function getEndOfFilePosition() : int {
- return $this->endOfFilePos;
- }
-
- public function getTokensArray() : array {
- return $this->tokensArray;
- }
-
- /**
- * Return an array of Token object instances created from $content.
- *
- * This method is optimized heavily - this processes every single token being created.
- *
- * @param string $content the raw php code
- * @param ?int $parseContext can be SourceElements when extracting doc comments
- * @param int $initialPos
- * @param bool $treatCommentsAsTrivia
- * @return Token[]
- */
- public static function getTokensArrayFromContent(
- $content, $parseContext = null, $initialPos = 0, $treatCommentsAsTrivia = true
- ) : array {
- if ($parseContext !== null) {
- // If needed, add a prefix so that token_get_all will tokenize the remaining $contents
- $prefix = self::PARSE_CONTEXT_TO_PREFIX[$parseContext];
- $content = $prefix . $content;
- }
-
- $tokens = static::tokenGetAll($content, $parseContext);
-
- $arr = [];
- $fullStart = $start = $pos = $initialPos;
- if ($parseContext !== null) {
- // If needed, skip over the prefix we added for token_get_all and remove those tokens.
- // This was moved out of the below main loop as an optimization.
- // (the common case of parsing an entire file uses a null parseContext)
- foreach ($tokens as $i => $token) {
- unset($tokens[$i]);
- if (\is_array($token)) {
- $pos += \strlen($token[1]);
- } else {
- $pos += \strlen($token);
- }
- if (\strlen($prefix) < $pos) {
- $fullStart = $start = $pos = $initialPos;
- break;
- }
- }
- }
-
- // Convert tokens from token_get_all to Token instances,
- // skipping whitespace and (usually, when parseContext is null) comments.
- foreach ($tokens as $token) {
- if (\is_array($token)) {
- $tokenKind = $token[0];
- $strlen = \strlen($token[1]);
- } else {
- $pos += \strlen($token);
- $newTokenKind = self::TOKEN_MAP[$token] ?? TokenKind::Unknown;
- $arr[] = new Token($newTokenKind, $fullStart, $start, $pos - $fullStart);
- $start = $fullStart = $pos;
- continue;
- }
-
- $pos += $strlen;
-
- // Optimization note: In PHP < 7.2, the switch statement would check case by case,
- // so putting the most common cases first is slightly faster
- switch ($tokenKind) {
- case \T_WHITESPACE:
- $start += $strlen;
- break;
- case \T_STRING:
- $name = \strtolower($token[1]);
- $newTokenKind = TokenStringMaps::RESERVED_WORDS[$name] ?? TokenKind::Name;
- $arr[] = new Token($newTokenKind, $fullStart, $start, $pos - $fullStart);
- $start = $fullStart = $pos;
- break;
- case \T_OPEN_TAG:
- $arr[] = new Token(TokenKind::ScriptSectionStartTag, $fullStart, $start, $pos-$fullStart);
- $start = $fullStart = $pos;
- break;
- case \PHP_VERSION_ID >= 80000 ? \T_NAME_QUALIFIED : -1000:
- case \PHP_VERSION_ID >= 80000 ? \T_NAME_FULLY_QUALIFIED : -1001:
- // NOTE: This switch is called on every token of every file being parsed, so this traded performance for readability.
- //
- // PHP's Opcache is able to optimize switches that are exclusively known longs,
- // but not switches that mix strings and longs or have unknown longs.
- // Longs are only known if they're declared within the same *class* or an internal constant (tokenizer).
- //
- // For some reason, the SWITCH_LONG opcode was not generated when the expression was part of a class constant.
- // (seen with php -d opcache.opt_debug_level=0x20000)
- //
- // Use negative values because that's not expected to overlap with token kinds that token_get_all() will return.
- //
- // T_NAME_* was added in php 8.0 to forbid whitespace between parts of names.
- // Here, emulate the tokenization of php 7 by splitting it up into 1 or more tokens.
- foreach (\explode('\\', $token[1]) as $i => $name) {
- if ($i) {
- $arr[] = new Token(TokenKind::BackslashToken, $fullStart, $start, 1 + $start - $fullStart);
- $start++;
- $fullStart = $start;
- }
- if ($name === '') {
- continue;
- }
- // TODO: TokenStringMaps::RESERVED_WORDS[$name] ?? TokenKind::Name for compatibility?
- $len = \strlen($name);
- $arr[] = new Token(TokenKind::Name, $fullStart, $start, $len + $start - $fullStart);
- $start += $len;
- $fullStart = $start;
- }
- break;
- case \PHP_VERSION_ID >= 80000 ? \T_NAME_RELATIVE : -1002:
- // This is a namespace-relative name: namespace\...
- foreach (\explode('\\', $token[1]) as $i => $name) {
- $len = \strlen($name);
- if (!$i) {
- $arr[] = new Token(TokenKind::NamespaceKeyword, $fullStart, $start, $len + $start - $fullStart);
- $start += $len;
- $fullStart = $start;
- continue;
- }
- $arr[] = new Token(TokenKind::BackslashToken, $fullStart, $start, 1);
- $start++;
-
- // TODO: TokenStringMaps::RESERVED_WORDS[$name] ?? TokenKind::Name for compatibility?
- $arr[] = new Token(TokenKind::Name, $start, $start, $len);
-
- $start += $len;
- $fullStart = $start;
- }
- break;
- case \T_COMMENT:
- case \T_DOC_COMMENT:
- if ($treatCommentsAsTrivia) {
- $start += $strlen;
- break;
- }
- // fall through
- default:
- $newTokenKind = self::TOKEN_MAP[$tokenKind] ?? TokenKind::Unknown;
- $arr[] = new Token($newTokenKind, $fullStart, $start, $pos - $fullStart);
- $start = $fullStart = $pos;
- break;
- }
- }
-
- $arr[] = new Token(TokenKind::EndOfFileToken, $fullStart, $start, $pos - $fullStart);
- return $arr;
- }
-
- /**
- * @param string $content the raw php code
- * @param ?int $parseContext can be SourceElements when extracting doc comments.
- * Having this available may be useful for subclasses to decide whether or not to post-process results, cache results, etc.
- * @return array[]|string[] an array of tokens. When concatenated, these tokens must equal $content.
- *
- * This exists so that it can be overridden in subclasses, e.g. to cache the result of tokenizing entire files.
- * Applications using tolerant-php-parser may often end up needing to use the token stream for other reasons that are hard to do in the resulting AST,
- * such as iterating over T_COMMENTS, checking for inline html,
- * looking up all tokens (including skipped tokens) on a given line, etc.
- */
- protected static function tokenGetAll(string $content, $parseContext): array
- {
- return @\token_get_all($content);
- }
-
- const TOKEN_MAP = [
- T_CLASS_C => TokenKind::Name,
- T_DIR => TokenKind::Name,
- T_FILE => TokenKind::Name,
- T_FUNC_C => TokenKind::Name,
- T_HALT_COMPILER => TokenKind::Name,
- T_METHOD_C => TokenKind::Name,
- T_NS_C => TokenKind::Name,
- T_TRAIT_C => TokenKind::Name,
- T_LINE => TokenKind::Name,
-
- T_STRING => TokenKind::Name,
- T_VARIABLE => TokenKind::VariableName,
-
- T_ABSTRACT => TokenKind::AbstractKeyword,
- T_LOGICAL_AND => TokenKind::AndKeyword,
- T_ARRAY => TokenKind::ArrayKeyword,
- T_AS => TokenKind::AsKeyword,
- T_BREAK => TokenKind::BreakKeyword,
- T_CALLABLE => TokenKind::CallableKeyword,
- T_CASE => TokenKind::CaseKeyword,
- T_CATCH => TokenKind::CatchKeyword,
- T_CLASS => TokenKind::ClassKeyword,
- T_CLONE => TokenKind::CloneKeyword,
- T_CONST => TokenKind::ConstKeyword,
- T_CONTINUE => TokenKind::ContinueKeyword,
- T_DECLARE => TokenKind::DeclareKeyword,
- T_DEFAULT => TokenKind::DefaultKeyword,
- T_DO => TokenKind::DoKeyword,
- T_ECHO => TokenKind::EchoKeyword,
- T_ELSE => TokenKind::ElseKeyword,
- T_ELSEIF => TokenKind::ElseIfKeyword,
- T_EMPTY => TokenKind::EmptyKeyword,
- T_ENDDECLARE => TokenKind::EndDeclareKeyword,
- T_ENDFOR => TokenKind::EndForKeyword,
- T_ENDFOREACH => TokenKind::EndForEachKeyword,
- T_ENDIF => TokenKind::EndIfKeyword,
- T_ENDSWITCH => TokenKind::EndSwitchKeyword,
- T_ENDWHILE => TokenKind::EndWhileKeyword,
- T_ENUM => TokenKind::EnumKeyword,
- T_EVAL => TokenKind::EvalKeyword,
- T_EXIT => TokenKind::ExitKeyword,
- T_EXTENDS => TokenKind::ExtendsKeyword,
- T_FINAL => TokenKind::FinalKeyword,
- T_FINALLY => TokenKind::FinallyKeyword,
- T_FOR => TokenKind::ForKeyword,
- T_FOREACH => TokenKind::ForeachKeyword,
- T_FN => TokenKind::FnKeyword,
- T_FUNCTION => TokenKind::FunctionKeyword,
- T_GLOBAL => TokenKind::GlobalKeyword,
- T_GOTO => TokenKind::GotoKeyword,
- T_IF => TokenKind::IfKeyword,
- T_IMPLEMENTS => TokenKind::ImplementsKeyword,
- T_INCLUDE => TokenKind::IncludeKeyword,
- T_INCLUDE_ONCE => TokenKind::IncludeOnceKeyword,
- T_INSTANCEOF => TokenKind::InstanceOfKeyword,
- T_INSTEADOF => TokenKind::InsteadOfKeyword,
- T_INTERFACE => TokenKind::InterfaceKeyword,
- T_ISSET => TokenKind::IsSetKeyword,
- T_LIST => TokenKind::ListKeyword,
- T_MATCH => TokenKind::MatchKeyword,
- T_NAMESPACE => TokenKind::NamespaceKeyword,
- T_NEW => TokenKind::NewKeyword,
- T_LOGICAL_OR => TokenKind::OrKeyword,
- T_PRINT => TokenKind::PrintKeyword,
- T_PRIVATE => TokenKind::PrivateKeyword,
- T_PROTECTED => TokenKind::ProtectedKeyword,
- T_PUBLIC => TokenKind::PublicKeyword,
- T_READONLY => TokenKind::ReadonlyKeyword,
- T_REQUIRE => TokenKind::RequireKeyword,
- T_REQUIRE_ONCE => TokenKind::RequireOnceKeyword,
- T_RETURN => TokenKind::ReturnKeyword,
- T_STATIC => TokenKind::StaticKeyword,
- T_SWITCH => TokenKind::SwitchKeyword,
- T_THROW => TokenKind::ThrowKeyword,
- T_TRAIT => TokenKind::TraitKeyword,
- T_TRY => TokenKind::TryKeyword,
- T_UNSET => TokenKind::UnsetKeyword,
- T_USE => TokenKind::UseKeyword,
- T_VAR => TokenKind::VarKeyword,
- T_WHILE => TokenKind::WhileKeyword,
- T_LOGICAL_XOR => TokenKind::XorKeyword,
- T_YIELD => TokenKind::YieldKeyword,
- T_YIELD_FROM => TokenKind::YieldFromKeyword,
-
- "[" => TokenKind::OpenBracketToken,
- "]" => TokenKind::CloseBracketToken,
- "(" => TokenKind::OpenParenToken,
- ")" => TokenKind::CloseParenToken,
- "{" => TokenKind::OpenBraceToken,
- "}" => TokenKind::CloseBraceToken,
- "." => TokenKind::DotToken,
- T_OBJECT_OPERATOR => TokenKind::ArrowToken,
- T_NULLSAFE_OBJECT_OPERATOR => TokenKind::QuestionArrowToken,
- T_ATTRIBUTE => TokenKind::AttributeToken,
- T_INC => TokenKind::PlusPlusToken,
- T_DEC => TokenKind::MinusMinusToken,
- T_POW => TokenKind::AsteriskAsteriskToken,
- "*" => TokenKind::AsteriskToken,
- "+" => TokenKind::PlusToken,
- "-" => TokenKind::MinusToken,
- "~" => TokenKind::TildeToken,
- "!" => TokenKind::ExclamationToken,
- "$" => TokenKind::DollarToken,
- "/" => TokenKind::SlashToken,
- "%" => TokenKind::PercentToken,
- T_SL => TokenKind::LessThanLessThanToken,
- T_SR => TokenKind::GreaterThanGreaterThanToken,
- "<" => TokenKind::LessThanToken,
- ">" => TokenKind::GreaterThanToken,
- T_IS_SMALLER_OR_EQUAL => TokenKind::LessThanEqualsToken,
- T_IS_GREATER_OR_EQUAL => TokenKind::GreaterThanEqualsToken,
- T_IS_EQUAL => TokenKind::EqualsEqualsToken,
- T_IS_IDENTICAL => TokenKind::EqualsEqualsEqualsToken,
- T_IS_NOT_EQUAL => TokenKind::ExclamationEqualsToken,
- T_IS_NOT_IDENTICAL => TokenKind::ExclamationEqualsEqualsToken,
- "^" => TokenKind::CaretToken,
- "|" => TokenKind::BarToken,
- "&" => TokenKind::AmpersandToken,
- T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG => TokenKind::AmpersandToken,
- T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG => TokenKind::AmpersandToken,
- T_BOOLEAN_AND => TokenKind::AmpersandAmpersandToken,
- T_BOOLEAN_OR => TokenKind::BarBarToken,
- ":" => TokenKind::ColonToken,
- ";" => TokenKind::SemicolonToken,
- "=" => TokenKind::EqualsToken,
- T_POW_EQUAL => TokenKind::AsteriskAsteriskEqualsToken,
- T_MUL_EQUAL => TokenKind::AsteriskEqualsToken,
- T_DIV_EQUAL => TokenKind::SlashEqualsToken,
- T_MOD_EQUAL => TokenKind::PercentEqualsToken,
- T_PLUS_EQUAL => TokenKind::PlusEqualsToken,
- T_MINUS_EQUAL => TokenKind::MinusEqualsToken,
- T_CONCAT_EQUAL => TokenKind::DotEqualsToken,
- T_SL_EQUAL => TokenKind::LessThanLessThanEqualsToken,
- T_SR_EQUAL => TokenKind::GreaterThanGreaterThanEqualsToken,
- T_AND_EQUAL => TokenKind::AmpersandEqualsToken,
- T_XOR_EQUAL => TokenKind::CaretEqualsToken,
- T_OR_EQUAL => TokenKind::BarEqualsToken,
- "," => TokenKind::CommaToken,
- namespace\T_COALESCE_EQUAL => TokenKind::QuestionQuestionEqualsToken,
- T_COALESCE => TokenKind::QuestionQuestionToken,
- T_SPACESHIP => TokenKind::LessThanEqualsGreaterThanToken,
- T_ELLIPSIS => TokenKind::DotDotDotToken,
- T_NS_SEPARATOR => TokenKind::BackslashToken,
- T_PAAMAYIM_NEKUDOTAYIM => TokenKind::ColonColonToken,
- T_DOUBLE_ARROW => TokenKind::DoubleArrowToken, // TODO missing from spec
-
- "@" => TokenKind::AtSymbolToken,
- "`" => TokenKind::BacktickToken,
- "?" => TokenKind::QuestionToken,
-
- T_LNUMBER => TokenKind::IntegerLiteralToken,
-
- T_DNUMBER => TokenKind::FloatingLiteralToken,
-
- T_OPEN_TAG => TokenKind::ScriptSectionStartTag,
- T_OPEN_TAG_WITH_ECHO => TokenKind::ScriptSectionStartWithEchoTag,
- T_CLOSE_TAG => TokenKind::ScriptSectionEndTag,
-
- T_INLINE_HTML => TokenKind::InlineHtml,
-
- "\"" => TokenKind::DoubleQuoteToken,
- "'" => TokenKind::SingleQuoteToken,
- T_ENCAPSED_AND_WHITESPACE => TokenKind::EncapsedAndWhitespace,
- T_DOLLAR_OPEN_CURLY_BRACES => TokenKind::DollarOpenBraceToken,
- T_CURLY_OPEN => TokenKind::OpenBraceDollarToken,
- T_CONSTANT_ENCAPSED_STRING => TokenKind::StringLiteralToken,
-
- T_ARRAY_CAST => TokenKind::ArrayCastToken,
- T_BOOL_CAST => TokenKind::BoolCastToken,
- T_DOUBLE_CAST => TokenKind::DoubleCastToken,
- T_INT_CAST => TokenKind::IntCastToken,
- T_OBJECT_CAST => TokenKind::ObjectCastToken,
- T_STRING_CAST => TokenKind::StringCastToken,
- T_UNSET_CAST => TokenKind::UnsetCastToken,
-
- T_START_HEREDOC => TokenKind::HeredocStart,
- T_END_HEREDOC => TokenKind::HeredocEnd,
- T_STRING_VARNAME => TokenKind::StringVarname,
- T_COMMENT => TokenKind::CommentToken,
- T_DOC_COMMENT => TokenKind::DocCommentToken,
- T_NUM_STRING => TokenKind::IntegerLiteralToken
- ];
-
- const PARSE_CONTEXT_TO_PREFIX = [
- ParseContext::SourceElements => "= $textLength) {
- $pos = $textLength;
- } elseif ($pos < 0) {
- $pos = 0;
- }
-
- // Start strrpos check from the character before the current character,
- // in case the current character is a newline
- $startAt = max(-($textLength - $pos) - 1, -$textLength);
- $lastNewlinePos = \strrpos($text, "\n", $startAt);
- $char = $pos - ($lastNewlinePos === false ? 0 : $lastNewlinePos + 1);
- $line = $pos > 0 ? \substr_count($text, "\n", 0, $pos) : 0;
- return new LineCharacterPosition($line, $char);
- }
-}
diff --git a/vendor/microsoft/tolerant-php-parser/src/Range.php b/vendor/microsoft/tolerant-php-parser/src/Range.php
deleted file mode 100644
index 36acf40c..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/Range.php
+++ /dev/null
@@ -1,17 +0,0 @@
-start = $start;
- $this->end = $end;
- }
-}
diff --git a/vendor/microsoft/tolerant-php-parser/src/ResolvedName.php b/vendor/microsoft/tolerant-php-parser/src/ResolvedName.php
deleted file mode 100644
index 34acf4ff..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/ResolvedName.php
+++ /dev/null
@@ -1,44 +0,0 @@
-kind === TokenKind::Name) {
- $name->parts[] = $token->getText($content);
- }
- }
- return $name;
- }
-
- public function addNameParts(array $parts, $content) {
- foreach ($parts as $part) {
- if ($part->kind === TokenKind::Name && !($part instanceof MissingToken)) {
- $this->parts[] = $part->getText($content);
- }
- }
- }
-
- public function getNameParts() {
- return $this->parts;
- }
-
- public function getFullyQualifiedNameText() : string {
- return join("\\", $this->parts);
- }
-
- public function __toString() {
- return $this->getFullyQualifiedNameText();
- }
-}
\ No newline at end of file
diff --git a/vendor/microsoft/tolerant-php-parser/src/SkippedToken.php b/vendor/microsoft/tolerant-php-parser/src/SkippedToken.php
deleted file mode 100644
index 34594db4..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/SkippedToken.php
+++ /dev/null
@@ -1,23 +0,0 @@
-kind, $token->fullStart, $token->start, $token->length);
- }
-
- #[ReturnTypeWillChange]
- public function jsonSerialize() {
- return array_merge(
- ["error" => $this->getTokenKindNameFromValue(TokenKind::SkippedToken)],
- parent::jsonSerialize()
- );
- }
-}
diff --git a/vendor/microsoft/tolerant-php-parser/src/TextEdit.php b/vendor/microsoft/tolerant-php-parser/src/TextEdit.php
deleted file mode 100644
index a967b381..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/TextEdit.php
+++ /dev/null
@@ -1,53 +0,0 @@
-start = $start;
- $this->length = $length;
- $this->content = $content;
- }
-
- /**
- * Applies array of edits to the document, and returns the resulting text.
- * Supplied $edits must not overlap, and be ordered by increasing start position.
- *
- * Note that after applying edits, the original AST should be invalidated.
- *
- * @param TextEdit[] $edits
- * @param string $text
- * @return string
- */
- public static function applyEdits(array $edits, string $text) : string {
- $prevEditStart = PHP_INT_MAX;
- for ($i = \count($edits) - 1; $i >= 0; $i--) {
- $edit = $edits[$i];
- \assert(
- $prevEditStart > $edit->start && $prevEditStart > $edit->start + $edit->length,
- "Supplied TextEdit[] must not overlap, and be in increasing start position order."
- );
- if ($edit->start < 0 || $edit->length < 0 || $edit->start + $edit->length > \strlen($text)) {
- throw new \OutOfBoundsException("Applied TextEdit range out of bounds.");
- }
- $prevEditStart = $edit->start;
- $head = \substr($text, 0, $edit->start);
- $tail = \substr($text, $edit->start + $edit->length);
- $text = $head . $edit->content . $tail;
- }
- return $text;
- }
-}
diff --git a/vendor/microsoft/tolerant-php-parser/src/Token.php b/vendor/microsoft/tolerant-php-parser/src/Token.php
deleted file mode 100644
index 6c9daf74..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/Token.php
+++ /dev/null
@@ -1,137 +0,0 @@
-kind = $kind;
- $this->fullStart = $fullStart;
- $this->start = $start;
- $this->length = $length;
- }
-
- public function getLeadingCommentsAndWhitespaceText(string $document) : string {
- return substr($document, $this->fullStart, $this->start - $this->fullStart);
- }
-
- /**
- * @param string|null $document
- * @return bool|null|string
- */
- public function getText(string $document = null) {
- if ($document === null) {
- return null;
- }
- return substr($document, $this->start, $this->length - ($this->start - $this->fullStart));
- }
-
- public function getFullText(string $document) : string {
- return substr($document, $this->fullStart, $this->length);
- }
-
- /**
- * @return int
- */
- public function getStartPosition() {
- return $this->start;
- }
-
- /**
- * @return int
- */
- public function getFullStartPosition() {
- return $this->fullStart;
- }
-
- /**
- * @return int
- */
- public function getWidth() {
- return $this->length + $this->fullStart - $this->start;
- }
-
- /**
- * @return int
- */
- public function getFullWidth() {
- return $this->length;
- }
-
- /**
- * @return int
- */
- public function getEndPosition() {
- return $this->fullStart + $this->length;
- }
-
- /**
- * @return string[] - A hash map of the format [int $tokenKind => string $tokenName]
- */
- private static function getTokenKindNameFromValueMap() {
- static $mapToKindName;
- if ($mapToKindName === null) {
- $constants = (new \ReflectionClass("Microsoft\\PhpParser\\TokenKind"))->getConstants();
- $mapToKindName = \array_flip($constants);
- }
- return $mapToKindName;
- }
-
- /**
- * Returns the token kind name as a string, or the token number if the name
- * was not found.
- *
- * @param int $kind
- * @return int|string
- */
- public static function getTokenKindNameFromValue($kind) {
- $mapToKindName = self::getTokenKindNameFromValueMap();
- return $mapToKindName[$kind] ?? $kind;
- }
-
- #[ReturnTypeWillChange]
- public function jsonSerialize() {
- $kindName = $this->getTokenKindNameFromValue($this->kind);
-
- if (!isset($GLOBALS["SHORT_TOKEN_SERIALIZE"])) {
- $GLOBALS["SHORT_TOKEN_SERIALIZE"] = false;
- }
-
- if ($GLOBALS["SHORT_TOKEN_SERIALIZE"]) {
- return [
- "kind" => $kindName,
- "textLength" => $this->length - ($this->start - $this->fullStart)
- ];
- } else {
- return [
- "kind" => $kindName,
- "fullStart" => $this->fullStart,
- "start" => $this->start,
- "length" => $this->length
- ];
- }
- }
-}
diff --git a/vendor/microsoft/tolerant-php-parser/src/TokenKind.php b/vendor/microsoft/tolerant-php-parser/src/TokenKind.php
deleted file mode 100644
index 29058057..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/TokenKind.php
+++ /dev/null
@@ -1,224 +0,0 @@
- TokenKind::AbstractKeyword,
- "and" => TokenKind::AndKeyword,
- "array" => TokenKind::ArrayKeyword,
- "as" => TokenKind::AsKeyword,
- "break" => TokenKind::BreakKeyword,
- "callable" => TokenKind::CallableKeyword,
- "case" => TokenKind::CaseKeyword,
- "catch" => TokenKind::CatchKeyword,
- "class" => TokenKind::ClassKeyword,
- "clone" => TokenKind::CloneKeyword,
- "const" => TokenKind::ConstKeyword,
- "continue" => TokenKind::ContinueKeyword,
- "declare" => TokenKind::DeclareKeyword,
- "default" => TokenKind::DefaultKeyword,
- "die" => TokenKind::DieKeyword,
- "do" => TokenKind::DoKeyword,
- "echo" => TokenKind::EchoKeyword,
- "else" => TokenKind::ElseKeyword,
- "elseif" => TokenKind::ElseIfKeyword,
- "empty" => TokenKind::EmptyKeyword,
- "enddeclare" => TokenKind::EndDeclareKeyword,
- "endfor" => TokenKind::EndForKeyword,
- "endforeach" => TokenKind::EndForEachKeyword,
- "endif" => TokenKind::EndIfKeyword,
- "endswitch" => TokenKind::EndSwitchKeyword,
- "endwhile" => TokenKind::EndWhileKeyword,
- "enum" => TokenKind::EnumKeyword,
- "eval" => TokenKind::EvalKeyword,
- "exit" => TokenKind::ExitKeyword,
- "extends" => TokenKind::ExtendsKeyword,
- "final" => TokenKind::FinalKeyword,
- "finally" => TokenKind::FinallyKeyword,
- "for" => TokenKind::ForKeyword,
- "foreach" => TokenKind::ForeachKeyword,
- "fn" => TokenKind::FnKeyword,
- "function" => TokenKind::FunctionKeyword,
- "global" => TokenKind::GlobalKeyword,
- "goto" => TokenKind::GotoKeyword,
- "if" => TokenKind::IfKeyword,
- "implements" => TokenKind::ImplementsKeyword,
- "include" => TokenKind::IncludeKeyword,
- "include_once" => TokenKind::IncludeOnceKeyword,
- "instanceof" => TokenKind::InstanceOfKeyword,
- "insteadof" => TokenKind::InsteadOfKeyword,
- "interface" => TokenKind::InterfaceKeyword,
- "isset" => TokenKind::IsSetKeyword,
- "list" => TokenKind::ListKeyword,
- "namespace" => TokenKind::NamespaceKeyword,
- "new" => TokenKind::NewKeyword,
- "or" => TokenKind::OrKeyword,
- "print" => TokenKind::PrintKeyword,
- "private" => TokenKind::PrivateKeyword,
- "protected" => TokenKind::ProtectedKeyword,
- "public" => TokenKind::PublicKeyword,
- "readonly" => TokenKind::ReadonlyKeyword,
- "require" => TokenKind::RequireKeyword,
- "require_once" => TokenKind::RequireOnceKeyword,
- "return" => TokenKind::ReturnKeyword,
- "static" => TokenKind::StaticKeyword,
- "switch" => TokenKind::SwitchKeyword,
- "throw" => TokenKind::ThrowKeyword,
- "trait" => TokenKind::TraitKeyword,
- "try" => TokenKind::TryKeyword,
- "unset" => TokenKind::UnsetKeyword,
- "use" => TokenKind::UseKeyword,
- "var" => TokenKind::VarKeyword,
- "while" => TokenKind::WhileKeyword,
- "xor" => TokenKind::XorKeyword,
- "yield" => TokenKind::YieldKeyword,
- "yield from" => TokenKind::YieldFromKeyword,
-
-
- // TODO soft reserved words?
- ];
-
- const RESERVED_WORDS = [
- // http://php.net/manual/en/reserved.constants.php
- // TRUE, FALSE, NULL are special predefined constants
- // TODO - also consider adding other constants
- "true" => TokenKind::TrueReservedWord,
- "false" => TokenKind::FalseReservedWord,
- "null" => TokenKind::NullReservedWord,
-
- // RESERVED WORDS:
- // http://php.net/manual/en/reserved.other-reserved-words.php
- "int" => TokenKind::IntReservedWord,
- "float" => TokenKind::FloatReservedWord,
- "bool" => TokenKind::BoolReservedWord,
- "string" => TokenKind::StringReservedWord,
- "binary" => TokenKind::BinaryReservedWord,
- "boolean" => TokenKind::BooleanReservedWord,
- "double" => TokenKind::DoubleReservedWord,
- "integer" => TokenKind::IntegerReservedWord,
- "object" => TokenKind::ObjectReservedWord,
- "real" => TokenKind::RealReservedWord,
- "void" => TokenKind::VoidReservedWord,
- "iterable" => TokenKind::IterableReservedWord,
- "mixed" => TokenKind::MixedReservedWord,
- ];
-
- const OPERATORS_AND_PUNCTUATORS = [
- "[" => TokenKind::OpenBracketToken,
- "]" => TokenKind::CloseBracketToken,
- "(" => TokenKind::OpenParenToken,
- ")" => TokenKind::CloseParenToken,
- "{" => TokenKind::OpenBraceToken,
- "}" => TokenKind::CloseBraceToken,
- "." => TokenKind::DotToken,
- "->" => TokenKind::ArrowToken,
- "=>" => TokenKind::DoubleArrowToken,
- "++" => TokenKind::PlusPlusToken,
- "--" => TokenKind::MinusMinusToken,
- "**" => TokenKind::AsteriskAsteriskToken,
- "*" => TokenKind::AsteriskToken,
- "+" => TokenKind::PlusToken,
- "-" => TokenKind::MinusToken,
- "~" => TokenKind::TildeToken,
- "!" => TokenKind::ExclamationToken,
- "$" => TokenKind::DollarToken,
- "/" => TokenKind::SlashToken,
- "%" => TokenKind::PercentToken,
- "<<" => TokenKind::LessThanLessThanToken,
- ">>" => TokenKind::GreaterThanGreaterThanToken,
- "<" => TokenKind::LessThanToken,
- ">" => TokenKind::GreaterThanToken,
- "<=" => TokenKind::LessThanEqualsToken,
- ">=" => TokenKind::GreaterThanEqualsToken,
- "==" => TokenKind::EqualsEqualsToken,
- "===" => TokenKind::EqualsEqualsEqualsToken,
- "!=" => TokenKind::ExclamationEqualsToken,
- "!==" => TokenKind::ExclamationEqualsEqualsToken,
- "^" => TokenKind::CaretToken,
- "|" => TokenKind::BarToken,
- "&" => TokenKind::AmpersandToken,
- "&&" => TokenKind::AmpersandAmpersandToken,
- "||" => TokenKind::BarBarToken,
- "?" => TokenKind::QuestionToken,
- ":" => TokenKind::ColonToken,
- "::" => TokenKind::ColonColonToken,
- ";" => TokenKind::SemicolonToken,
- "=" => TokenKind::EqualsToken,
- "**=" => TokenKind::AsteriskAsteriskEqualsToken,
- "*=" => TokenKind::AsteriskEqualsToken,
- "/=" => TokenKind::SlashEqualsToken,
- "%=" => TokenKind::PercentEqualsToken,
- "+=" => TokenKind::PlusEqualsToken,
- "-=" => TokenKind::MinusEqualsToken,
- ".=" => TokenKind::DotEqualsToken,
- "<<=" => TokenKind::LessThanLessThanEqualsToken,
- ">>=" => TokenKind::GreaterThanGreaterThanEqualsToken,
- "&=" => TokenKind::AmpersandEqualsToken,
- "^=" => TokenKind::CaretEqualsToken,
- "|=" => TokenKind::BarEqualsToken,
- "," => TokenKind::CommaToken,
- "?->" => TokenKind::QuestionArrowToken,
- "??" => TokenKind::QuestionQuestionToken,
- "??=" => TokenKind::QuestionQuestionEqualsToken,
- "<=>" => TokenKind::LessThanEqualsGreaterThanToken,
- "<>" => TokenKind::LessThanGreaterThanToken,
- "..." => TokenKind::DotDotDotToken,
- "\\" => TokenKind::BackslashToken,
- "=" => TokenKind::ScriptSectionStartWithEchoTag, // TODO, technically not an operator
- " TokenKind::ScriptSectionStartTag, // TODO, technically not an operator
- " TokenKind::ScriptSectionStartTag, // TODO add tests
- " TokenKind::ScriptSectionStartTag,
- " TokenKind::ScriptSectionStartTag,
- " TokenKind::ScriptSectionStartTag,
- "?>" => TokenKind::ScriptSectionEndTag, // TODO, technically not an operator
- "?>\n" => TokenKind::ScriptSectionEndTag, // TODO, technically not an operator
- "?>\r\n" => TokenKind::ScriptSectionEndTag, // TODO, technically not an operator
- "?>\r" => TokenKind::ScriptSectionEndTag, // TODO, technically not an operator
- "@" => TokenKind::AtSymbolToken, // TODO not in spec
- "`" => TokenKind::BacktickToken
- ];
-
-// TODO add new tokens
-}
diff --git a/vendor/microsoft/tolerant-php-parser/src/bootstrap.php b/vendor/microsoft/tolerant-php-parser/src/bootstrap.php
deleted file mode 100644
index 821c5444..00000000
--- a/vendor/microsoft/tolerant-php-parser/src/bootstrap.php
+++ /dev/null
@@ -1,12 +0,0 @@
-useMicrosecondTimestamps(false)`, disabling it gets you a bit of performance boost but reduces the precision to the second instead of microsecond
- * Added possibility to skip some extra stack frames in IntrospectionProcessor if you have some library wrapping Monolog that is always adding frames
- * Added `Logger->withName` to clone a logger (keeping all handlers) with a new name
- * Added FluentdFormatter for the Fluentd unix socket protocol
- * Added HandlerWrapper base class to ease the creation of handler wrappers, just extend it and override as needed
- * Added support for replacing context sub-keys using `%context.*%` in LineFormatter
- * Added support for `payload` context value in RollbarHandler
- * Added setRelease to RavenHandler to describe the application version, sent with every log
- * Added support for `fingerprint` context value in RavenHandler
- * Fixed JSON encoding errors that would gobble up the whole log record, we now handle those more gracefully by dropping chars as needed
- * Fixed write timeouts in SocketHandler and derivatives, set to 10sec by default, lower it with `setWritingTimeout()`
- * Fixed PHP7 compatibility with regard to Exception/Throwable handling in a few places
-
-### 1.17.2 (2015-10-14)
-
- * Fixed ErrorHandler compatibility with non-Monolog PSR-3 loggers
- * Fixed SlackHandler handling to use slack functionalities better
- * Fixed SwiftMailerHandler bug when sending multiple emails they all had the same id
- * Fixed 5.3 compatibility regression
-
-### 1.17.1 (2015-08-31)
-
- * Fixed RollbarHandler triggering PHP notices
-
-### 1.17.0 (2015-08-30)
-
- * Added support for `checksum` and `release` context/extra values in RavenHandler
- * Added better support for exceptions in RollbarHandler
- * Added UidProcessor::getUid
- * Added support for showing the resource type in NormalizedFormatter
- * Fixed IntrospectionProcessor triggering PHP notices
-
-### 1.16.0 (2015-08-09)
-
- * Added IFTTTHandler to notify ifttt.com triggers
- * Added Logger::setHandlers() to allow setting/replacing all handlers
- * Added $capSize in RedisHandler to cap the log size
- * Fixed StreamHandler creation of directory to only trigger when the first log write happens
- * Fixed bug in the handling of curl failures
- * Fixed duplicate logging of fatal errors when both error and fatal error handlers are registered in monolog's ErrorHandler
- * Fixed missing fatal errors records with handlers that need to be closed to flush log records
- * Fixed TagProcessor::addTags support for associative arrays
-
-### 1.15.0 (2015-07-12)
-
- * Added addTags and setTags methods to change a TagProcessor
- * Added automatic creation of directories if they are missing for a StreamHandler to open a log file
- * Added retry functionality to Loggly, Cube and Mandrill handlers so they retry up to 5 times in case of network failure
- * Fixed process exit code being incorrectly reset to 0 if ErrorHandler::registerExceptionHandler was used
- * Fixed HTML/JS escaping in BrowserConsoleHandler
- * Fixed JSON encoding errors being silently suppressed (PHP 5.5+ only)
-
-### 1.14.0 (2015-06-19)
-
- * Added PHPConsoleHandler to send record to Chrome's PHP Console extension and library
- * Added support for objects implementing __toString in the NormalizerFormatter
- * Added support for HipChat's v2 API in HipChatHandler
- * Added Logger::setTimezone() to initialize the timezone monolog should use in case date.timezone isn't correct for your app
- * Added an option to send formatted message instead of the raw record on PushoverHandler via ->useFormattedMessage(true)
- * Fixed curl errors being silently suppressed
-
-### 1.13.1 (2015-03-09)
-
- * Fixed regression in HipChat requiring a new token to be created
-
-### 1.13.0 (2015-03-05)
-
- * Added Registry::hasLogger to check for the presence of a logger instance
- * Added context.user support to RavenHandler
- * Added HipChat API v2 support in the HipChatHandler
- * Added NativeMailerHandler::addParameter to pass params to the mail() process
- * Added context data to SlackHandler when $includeContextAndExtra is true
- * Added ability to customize the Swift_Message per-email in SwiftMailerHandler
- * Fixed SwiftMailerHandler to lazily create message instances if a callback is provided
- * Fixed serialization of INF and NaN values in Normalizer and LineFormatter
-
-### 1.12.0 (2014-12-29)
-
- * Break: HandlerInterface::isHandling now receives a partial record containing only a level key. This was always the intent and does not break any Monolog handler but is strictly speaking a BC break and you should check if you relied on any other field in your own handlers.
- * Added PsrHandler to forward records to another PSR-3 logger
- * Added SamplingHandler to wrap around a handler and include only every Nth record
- * Added MongoDBFormatter to support better storage with MongoDBHandler (it must be enabled manually for now)
- * Added exception codes in the output of most formatters
- * Added LineFormatter::includeStacktraces to enable exception stack traces in logs (uses more than one line)
- * Added $useShortAttachment to SlackHandler to minify attachment size and $includeExtra to append extra data
- * Added $host to HipChatHandler for users of private instances
- * Added $transactionName to NewRelicHandler and support for a transaction_name context value
- * Fixed MandrillHandler to avoid outputing API call responses
- * Fixed some non-standard behaviors in SyslogUdpHandler
-
-### 1.11.0 (2014-09-30)
-
- * Break: The NewRelicHandler extra and context data are now prefixed with extra_ and context_ to avoid clashes. Watch out if you have scripts reading those from the API and rely on names
- * Added WhatFailureGroupHandler to suppress any exception coming from the wrapped handlers and avoid chain failures if a logging service fails
- * Added MandrillHandler to send emails via the Mandrillapp.com API
- * Added SlackHandler to log records to a Slack.com account
- * Added FleepHookHandler to log records to a Fleep.io account
- * Added LogglyHandler::addTag to allow adding tags to an existing handler
- * Added $ignoreEmptyContextAndExtra to LineFormatter to avoid empty [] at the end
- * Added $useLocking to StreamHandler and RotatingFileHandler to enable flock() while writing
- * Added support for PhpAmqpLib in the AmqpHandler
- * Added FingersCrossedHandler::clear and BufferHandler::clear to reset them between batches in long running jobs
- * Added support for adding extra fields from $_SERVER in the WebProcessor
- * Fixed support for non-string values in PrsLogMessageProcessor
- * Fixed SwiftMailer messages being sent with the wrong date in long running scripts
- * Fixed minor PHP 5.6 compatibility issues
- * Fixed BufferHandler::close being called twice
-
-### 1.10.0 (2014-06-04)
-
- * Added Logger::getHandlers() and Logger::getProcessors() methods
- * Added $passthruLevel argument to FingersCrossedHandler to let it always pass some records through even if the trigger level is not reached
- * Added support for extra data in NewRelicHandler
- * Added $expandNewlines flag to the ErrorLogHandler to create multiple log entries when a message has multiple lines
-
-### 1.9.1 (2014-04-24)
-
- * Fixed regression in RotatingFileHandler file permissions
- * Fixed initialization of the BufferHandler to make sure it gets flushed after receiving records
- * Fixed ChromePHPHandler and FirePHPHandler's activation strategies to be more conservative
-
-### 1.9.0 (2014-04-20)
-
- * Added LogEntriesHandler to send logs to a LogEntries account
- * Added $filePermissions to tweak file mode on StreamHandler and RotatingFileHandler
- * Added $useFormatting flag to MemoryProcessor to make it send raw data in bytes
- * Added support for table formatting in FirePHPHandler via the table context key
- * Added a TagProcessor to add tags to records, and support for tags in RavenHandler
- * Added $appendNewline flag to the JsonFormatter to enable using it when logging to files
- * Added sound support to the PushoverHandler
- * Fixed multi-threading support in StreamHandler
- * Fixed empty headers issue when ChromePHPHandler received no records
- * Fixed default format of the ErrorLogHandler
-
-### 1.8.0 (2014-03-23)
-
- * Break: the LineFormatter now strips newlines by default because this was a bug, set $allowInlineLineBreaks to true if you need them
- * Added BrowserConsoleHandler to send logs to any browser's console via console.log() injection in the output
- * Added FilterHandler to filter records and only allow those of a given list of levels through to the wrapped handler
- * Added FlowdockHandler to send logs to a Flowdock account
- * Added RollbarHandler to send logs to a Rollbar account
- * Added HtmlFormatter to send prettier log emails with colors for each log level
- * Added GitProcessor to add the current branch/commit to extra record data
- * Added a Monolog\Registry class to allow easier global access to pre-configured loggers
- * Added support for the new official graylog2/gelf-php lib for GelfHandler, upgrade if you can by replacing the mlehner/gelf-php requirement
- * Added support for HHVM
- * Added support for Loggly batch uploads
- * Added support for tweaking the content type and encoding in NativeMailerHandler
- * Added $skipClassesPartials to tweak the ignored classes in the IntrospectionProcessor
- * Fixed batch request support in GelfHandler
-
-### 1.7.0 (2013-11-14)
-
- * Added ElasticSearchHandler to send logs to an Elastic Search server
- * Added DynamoDbHandler and ScalarFormatter to send logs to Amazon's Dynamo DB
- * Added SyslogUdpHandler to send logs to a remote syslogd server
- * Added LogglyHandler to send logs to a Loggly account
- * Added $level to IntrospectionProcessor so it only adds backtraces when needed
- * Added $version to LogstashFormatter to allow using the new v1 Logstash format
- * Added $appName to NewRelicHandler
- * Added configuration of Pushover notification retries/expiry
- * Added $maxColumnWidth to NativeMailerHandler to change the 70 chars default
- * Added chainability to most setters for all handlers
- * Fixed RavenHandler batch processing so it takes the message from the record with highest priority
- * Fixed HipChatHandler batch processing so it sends all messages at once
- * Fixed issues with eAccelerator
- * Fixed and improved many small things
-
-### 1.6.0 (2013-07-29)
-
- * Added HipChatHandler to send logs to a HipChat chat room
- * Added ErrorLogHandler to send logs to PHP's error_log function
- * Added NewRelicHandler to send logs to NewRelic's service
- * Added Monolog\ErrorHandler helper class to register a Logger as exception/error/fatal handler
- * Added ChannelLevelActivationStrategy for the FingersCrossedHandler to customize levels by channel
- * Added stack traces output when normalizing exceptions (json output & co)
- * Added Monolog\Logger::API constant (currently 1)
- * Added support for ChromePHP's v4.0 extension
- * Added support for message priorities in PushoverHandler, see $highPriorityLevel and $emergencyLevel
- * Added support for sending messages to multiple users at once with the PushoverHandler
- * Fixed RavenHandler's support for batch sending of messages (when behind a Buffer or FingersCrossedHandler)
- * Fixed normalization of Traversables with very large data sets, only the first 1000 items are shown now
- * Fixed issue in RotatingFileHandler when an open_basedir restriction is active
- * Fixed minor issues in RavenHandler and bumped the API to Raven 0.5.0
- * Fixed SyslogHandler issue when many were used concurrently with different facilities
-
-### 1.5.0 (2013-04-23)
-
- * Added ProcessIdProcessor to inject the PID in log records
- * Added UidProcessor to inject a unique identifier to all log records of one request/run
- * Added support for previous exceptions in the LineFormatter exception serialization
- * Added Monolog\Logger::getLevels() to get all available levels
- * Fixed ChromePHPHandler so it avoids sending headers larger than Chrome can handle
-
-### 1.4.1 (2013-04-01)
-
- * Fixed exception formatting in the LineFormatter to be more minimalistic
- * Fixed RavenHandler's handling of context/extra data, requires Raven client >0.1.0
- * Fixed log rotation in RotatingFileHandler to work with long running scripts spanning multiple days
- * Fixed WebProcessor array access so it checks for data presence
- * Fixed Buffer, Group and FingersCrossed handlers to make use of their processors
-
-### 1.4.0 (2013-02-13)
-
- * Added RedisHandler to log to Redis via the Predis library or the phpredis extension
- * Added ZendMonitorHandler to log to the Zend Server monitor
- * Added the possibility to pass arrays of handlers and processors directly in the Logger constructor
- * Added `$useSSL` option to the PushoverHandler which is enabled by default
- * Fixed ChromePHPHandler and FirePHPHandler issue when multiple instances are used simultaneously
- * Fixed header injection capability in the NativeMailHandler
-
-### 1.3.1 (2013-01-11)
-
- * Fixed LogstashFormatter to be usable with stream handlers
- * Fixed GelfMessageFormatter levels on Windows
-
-### 1.3.0 (2013-01-08)
-
- * Added PSR-3 compliance, the `Monolog\Logger` class is now an instance of `Psr\Log\LoggerInterface`
- * Added PsrLogMessageProcessor that you can selectively enable for full PSR-3 compliance
- * Added LogstashFormatter (combine with SocketHandler or StreamHandler to send logs to Logstash)
- * Added PushoverHandler to send mobile notifications
- * Added CouchDBHandler and DoctrineCouchDBHandler
- * Added RavenHandler to send data to Sentry servers
- * Added support for the new MongoClient class in MongoDBHandler
- * Added microsecond precision to log records' timestamps
- * Added `$flushOnOverflow` param to BufferHandler to flush by batches instead of losing
- the oldest entries
- * Fixed normalization of objects with cyclic references
-
-### 1.2.1 (2012-08-29)
-
- * Added new $logopts arg to SyslogHandler to provide custom openlog options
- * Fixed fatal error in SyslogHandler
-
-### 1.2.0 (2012-08-18)
-
- * Added AmqpHandler (for use with AMQP servers)
- * Added CubeHandler
- * Added NativeMailerHandler::addHeader() to send custom headers in mails
- * Added the possibility to specify more than one recipient in NativeMailerHandler
- * Added the possibility to specify float timeouts in SocketHandler
- * Added NOTICE and EMERGENCY levels to conform with RFC 5424
- * Fixed the log records to use the php default timezone instead of UTC
- * Fixed BufferHandler not being flushed properly on PHP fatal errors
- * Fixed normalization of exotic resource types
- * Fixed the default format of the SyslogHandler to avoid duplicating datetimes in syslog
-
-### 1.1.0 (2012-04-23)
-
- * Added Monolog\Logger::isHandling() to check if a handler will
- handle the given log level
- * Added ChromePHPHandler
- * Added MongoDBHandler
- * Added GelfHandler (for use with Graylog2 servers)
- * Added SocketHandler (for use with syslog-ng for example)
- * Added NormalizerFormatter
- * Added the possibility to change the activation strategy of the FingersCrossedHandler
- * Added possibility to show microseconds in logs
- * Added `server` and `referer` to WebProcessor output
-
-### 1.0.2 (2011-10-24)
-
- * Fixed bug in IE with large response headers and FirePHPHandler
-
-### 1.0.1 (2011-08-25)
-
- * Added MemoryPeakUsageProcessor and MemoryUsageProcessor
- * Added Monolog\Logger::getName() to get a logger's channel name
-
-### 1.0.0 (2011-07-06)
-
- * Added IntrospectionProcessor to get info from where the logger was called
- * Fixed WebProcessor in CLI
-
-### 1.0.0-RC1 (2011-07-01)
-
- * Initial release
diff --git a/vendor/monolog/monolog/LICENSE b/vendor/monolog/monolog/LICENSE
deleted file mode 100644
index 16473219..00000000
--- a/vendor/monolog/monolog/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2011-2016 Jordi Boggiano
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/monolog/monolog/README.md b/vendor/monolog/monolog/README.md
deleted file mode 100644
index a578eb22..00000000
--- a/vendor/monolog/monolog/README.md
+++ /dev/null
@@ -1,94 +0,0 @@
-# Monolog - Logging for PHP [](https://travis-ci.org/Seldaek/monolog)
-
-[](https://packagist.org/packages/monolog/monolog)
-[](https://packagist.org/packages/monolog/monolog)
-
-
-Monolog sends your logs to files, sockets, inboxes, databases and various
-web services. See the complete list of handlers below. Special handlers
-allow you to build advanced logging strategies.
-
-This library implements the [PSR-3](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md)
-interface that you can type-hint against in your own libraries to keep
-a maximum of interoperability. You can also use it in your applications to
-make sure you can always use another compatible logger at a later time.
-As of 1.11.0 Monolog public APIs will also accept PSR-3 log levels.
-Internally Monolog still uses its own level scheme since it predates PSR-3.
-
-## Installation
-
-Install the latest version with
-
-```bash
-$ composer require monolog/monolog
-```
-
-## Basic Usage
-
-```php
-pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING));
-
-// add records to the log
-$log->addWarning('Foo');
-$log->addError('Bar');
-```
-
-## Documentation
-
-- [Usage Instructions](doc/01-usage.md)
-- [Handlers, Formatters and Processors](doc/02-handlers-formatters-processors.md)
-- [Utility classes](doc/03-utilities.md)
-- [Extending Monolog](doc/04-extending.md)
-
-## Third Party Packages
-
-Third party handlers, formatters and processors are
-[listed in the wiki](https://github.com/Seldaek/monolog/wiki/Third-Party-Packages). You
-can also add your own there if you publish one.
-
-## About
-
-### Requirements
-
-- Monolog works with PHP 5.3 or above, and is also tested to work with HHVM.
-
-### Submitting bugs and feature requests
-
-Bugs and feature request are tracked on [GitHub](https://github.com/Seldaek/monolog/issues)
-
-### Framework Integrations
-
-- Frameworks and libraries using [PSR-3](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md)
- can be used very easily with Monolog since it implements the interface.
-- [Symfony2](http://symfony.com) comes out of the box with Monolog.
-- [Silex](http://silex.sensiolabs.org/) comes out of the box with Monolog.
-- [Laravel 4 & 5](http://laravel.com/) come out of the box with Monolog.
-- [Lumen](http://lumen.laravel.com/) comes out of the box with Monolog.
-- [PPI](http://www.ppi.io/) comes out of the box with Monolog.
-- [CakePHP](http://cakephp.org/) is usable with Monolog via the [cakephp-monolog](https://github.com/jadb/cakephp-monolog) plugin.
-- [Slim](http://www.slimframework.com/) is usable with Monolog via the [Slim-Monolog](https://github.com/Flynsarmy/Slim-Monolog) log writer.
-- [XOOPS 2.6](http://xoops.org/) comes out of the box with Monolog.
-- [Aura.Web_Project](https://github.com/auraphp/Aura.Web_Project) comes out of the box with Monolog.
-- [Nette Framework](http://nette.org/en/) can be used with Monolog via [Kdyby/Monolog](https://github.com/Kdyby/Monolog) extension.
-- [Proton Micro Framework](https://github.com/alexbilbie/Proton) comes out of the box with Monolog.
-
-### Author
-
-Jordi Boggiano - -
-See also the list of [contributors](https://github.com/Seldaek/monolog/contributors) which participated in this project.
-
-### License
-
-Monolog is licensed under the MIT License - see the `LICENSE` file for details
-
-### Acknowledgements
-
-This library is heavily inspired by Python's [Logbook](https://logbook.readthedocs.io/en/stable/)
-library, although most concepts have been adjusted to fit to the PHP world.
diff --git a/vendor/monolog/monolog/composer.json b/vendor/monolog/monolog/composer.json
deleted file mode 100644
index d2deab7b..00000000
--- a/vendor/monolog/monolog/composer.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "monolog/monolog",
- "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
- "keywords": ["log", "logging", "psr-3"],
- "homepage": "http://github.com/Seldaek/monolog",
- "type": "library",
- "license": "MIT",
- "authors": [
- {
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be",
- "homepage": "http://seld.be"
- }
- ],
- "require": {
- "php": ">=5.3.0",
- "psr/log": "~1.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.5",
- "graylog2/gelf-php": "~1.0",
- "sentry/sentry": "^0.13",
- "ruflin/elastica": ">=0.90 <3.0",
- "doctrine/couchdb": "~1.0@dev",
- "aws/aws-sdk-php": "^2.4.9 || ^3.0",
- "php-amqplib/php-amqplib": "~2.4",
- "swiftmailer/swiftmailer": "^5.3|^6.0",
- "php-console/php-console": "^3.1.3",
- "phpstan/phpstan": "^0.12.59"
- },
- "suggest": {
- "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
- "sentry/sentry": "Allow sending log messages to a Sentry server",
- "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
- "ruflin/elastica": "Allow sending log messages to an Elastic Search server",
- "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
- "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
- "ext-mongo": "Allow sending log messages to a MongoDB server",
- "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver",
- "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
- "rollbar/rollbar": "Allow sending log messages to Rollbar",
- "php-console/php-console": "Allow sending log messages to Google Chrome"
- },
- "autoload": {
- "psr-4": {"Monolog\\": "src/Monolog"}
- },
- "autoload-dev": {
- "psr-4": {"Monolog\\": "tests/Monolog"}
- },
- "provide": {
- "psr/log-implementation": "1.0.0"
- },
- "scripts": {
- "test": "vendor/bin/phpunit",
- "phpstan": "vendor/bin/phpstan analyse"
- },
- "lock": false
-}
diff --git a/vendor/monolog/monolog/phpstan.neon.dist b/vendor/monolog/monolog/phpstan.neon.dist
deleted file mode 100644
index 1fe45df7..00000000
--- a/vendor/monolog/monolog/phpstan.neon.dist
+++ /dev/null
@@ -1,16 +0,0 @@
-parameters:
- level: 3
-
- paths:
- - src/
-# - tests/
-
-
- ignoreErrors:
- - '#zend_monitor_|ZEND_MONITOR_#'
- - '#RollbarNotifier#'
- - '#Predis\\Client#'
- - '#^Cannot call method ltrim\(\) on int\|false.$#'
- - '#^Access to an undefined property Raven_Client::\$context.$#'
- - '#MongoDB\\(Client|Collection)#'
- - '#Gelf\\IMessagePublisher#'
diff --git a/vendor/monolog/monolog/src/Monolog/ErrorHandler.php b/vendor/monolog/monolog/src/Monolog/ErrorHandler.php
deleted file mode 100644
index 5121c2cd..00000000
--- a/vendor/monolog/monolog/src/Monolog/ErrorHandler.php
+++ /dev/null
@@ -1,239 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog;
-
-use Psr\Log\LoggerInterface;
-use Psr\Log\LogLevel;
-use Monolog\Handler\AbstractHandler;
-
-/**
- * Monolog error handler
- *
- * A facility to enable logging of runtime errors, exceptions and fatal errors.
- *
- * Quick setup: ErrorHandler::register($logger);
- *
- * @author Jordi Boggiano
- */
-class ErrorHandler
-{
- private $logger;
-
- private $previousExceptionHandler;
- private $uncaughtExceptionLevel;
-
- private $previousErrorHandler;
- private $errorLevelMap;
- private $handleOnlyReportedErrors;
-
- private $hasFatalErrorHandler;
- private $fatalLevel;
- private $reservedMemory;
- private $lastFatalTrace;
- private static $fatalErrors = array(E_ERROR, E_PARSE, E_CORE_ERROR, E_COMPILE_ERROR, E_USER_ERROR);
-
- public function __construct(LoggerInterface $logger)
- {
- $this->logger = $logger;
- }
-
- /**
- * Registers a new ErrorHandler for a given Logger
- *
- * By default it will handle errors, exceptions and fatal errors
- *
- * @param LoggerInterface $logger
- * @param array|false $errorLevelMap an array of E_* constant to LogLevel::* constant mapping, or false to disable error handling
- * @param int|false $exceptionLevel a LogLevel::* constant, or false to disable exception handling
- * @param int|false $fatalLevel a LogLevel::* constant, or false to disable fatal error handling
- * @return ErrorHandler
- */
- public static function register(LoggerInterface $logger, $errorLevelMap = array(), $exceptionLevel = null, $fatalLevel = null)
- {
- //Forces the autoloader to run for LogLevel. Fixes an autoload issue at compile-time on PHP5.3. See https://github.com/Seldaek/monolog/pull/929
- class_exists('\\Psr\\Log\\LogLevel', true);
-
- /** @phpstan-ignore-next-line */
- $handler = new static($logger);
- if ($errorLevelMap !== false) {
- $handler->registerErrorHandler($errorLevelMap);
- }
- if ($exceptionLevel !== false) {
- $handler->registerExceptionHandler($exceptionLevel);
- }
- if ($fatalLevel !== false) {
- $handler->registerFatalHandler($fatalLevel);
- }
-
- return $handler;
- }
-
- public function registerExceptionHandler($level = null, $callPrevious = true)
- {
- $prev = set_exception_handler(array($this, 'handleException'));
- $this->uncaughtExceptionLevel = $level;
- if ($callPrevious && $prev) {
- $this->previousExceptionHandler = $prev;
- }
- }
-
- public function registerErrorHandler(array $levelMap = array(), $callPrevious = true, $errorTypes = -1, $handleOnlyReportedErrors = true)
- {
- $prev = set_error_handler(array($this, 'handleError'), $errorTypes);
- $this->errorLevelMap = array_replace($this->defaultErrorLevelMap(), $levelMap);
- if ($callPrevious) {
- $this->previousErrorHandler = $prev ?: true;
- }
-
- $this->handleOnlyReportedErrors = $handleOnlyReportedErrors;
- }
-
- public function registerFatalHandler($level = null, $reservedMemorySize = 20)
- {
- register_shutdown_function(array($this, 'handleFatalError'));
-
- $this->reservedMemory = str_repeat(' ', 1024 * $reservedMemorySize);
- $this->fatalLevel = $level;
- $this->hasFatalErrorHandler = true;
- }
-
- protected function defaultErrorLevelMap()
- {
- return array(
- E_ERROR => LogLevel::CRITICAL,
- E_WARNING => LogLevel::WARNING,
- E_PARSE => LogLevel::ALERT,
- E_NOTICE => LogLevel::NOTICE,
- E_CORE_ERROR => LogLevel::CRITICAL,
- E_CORE_WARNING => LogLevel::WARNING,
- E_COMPILE_ERROR => LogLevel::ALERT,
- E_COMPILE_WARNING => LogLevel::WARNING,
- E_USER_ERROR => LogLevel::ERROR,
- E_USER_WARNING => LogLevel::WARNING,
- E_USER_NOTICE => LogLevel::NOTICE,
- E_STRICT => LogLevel::NOTICE,
- E_RECOVERABLE_ERROR => LogLevel::ERROR,
- E_DEPRECATED => LogLevel::NOTICE,
- E_USER_DEPRECATED => LogLevel::NOTICE,
- );
- }
-
- /**
- * @private
- */
- public function handleException($e)
- {
- $this->logger->log(
- $this->uncaughtExceptionLevel === null ? LogLevel::ERROR : $this->uncaughtExceptionLevel,
- sprintf('Uncaught Exception %s: "%s" at %s line %s', Utils::getClass($e), $e->getMessage(), $e->getFile(), $e->getLine()),
- array('exception' => $e)
- );
-
- if ($this->previousExceptionHandler) {
- call_user_func($this->previousExceptionHandler, $e);
- }
-
- exit(255);
- }
-
- /**
- * @private
- */
- public function handleError($code, $message, $file = '', $line = 0, $context = array())
- {
- if ($this->handleOnlyReportedErrors && !(error_reporting() & $code)) {
- return;
- }
-
- // fatal error codes are ignored if a fatal error handler is present as well to avoid duplicate log entries
- if (!$this->hasFatalErrorHandler || !in_array($code, self::$fatalErrors, true)) {
- $level = isset($this->errorLevelMap[$code]) ? $this->errorLevelMap[$code] : LogLevel::CRITICAL;
- $this->logger->log($level, self::codeToString($code).': '.$message, array('code' => $code, 'message' => $message, 'file' => $file, 'line' => $line));
- } else {
- // http://php.net/manual/en/function.debug-backtrace.php
- // As of 5.3.6, DEBUG_BACKTRACE_IGNORE_ARGS option was added.
- // Any version less than 5.3.6 must use the DEBUG_BACKTRACE_IGNORE_ARGS constant value '2'.
- $trace = debug_backtrace((PHP_VERSION_ID < 50306) ? 2 : DEBUG_BACKTRACE_IGNORE_ARGS);
- array_shift($trace); // Exclude handleError from trace
- $this->lastFatalTrace = $trace;
- }
-
- if ($this->previousErrorHandler === true) {
- return false;
- } elseif ($this->previousErrorHandler) {
- return call_user_func($this->previousErrorHandler, $code, $message, $file, $line, $context);
- }
- }
-
- /**
- * @private
- */
- public function handleFatalError()
- {
- $this->reservedMemory = null;
-
- $lastError = error_get_last();
- if ($lastError && in_array($lastError['type'], self::$fatalErrors, true)) {
- $this->logger->log(
- $this->fatalLevel === null ? LogLevel::ALERT : $this->fatalLevel,
- 'Fatal Error ('.self::codeToString($lastError['type']).'): '.$lastError['message'],
- array('code' => $lastError['type'], 'message' => $lastError['message'], 'file' => $lastError['file'], 'line' => $lastError['line'], 'trace' => $this->lastFatalTrace)
- );
-
- if ($this->logger instanceof Logger) {
- foreach ($this->logger->getHandlers() as $handler) {
- if ($handler instanceof AbstractHandler) {
- $handler->close();
- }
- }
- }
- }
- }
-
- private static function codeToString($code)
- {
- switch ($code) {
- case E_ERROR:
- return 'E_ERROR';
- case E_WARNING:
- return 'E_WARNING';
- case E_PARSE:
- return 'E_PARSE';
- case E_NOTICE:
- return 'E_NOTICE';
- case E_CORE_ERROR:
- return 'E_CORE_ERROR';
- case E_CORE_WARNING:
- return 'E_CORE_WARNING';
- case E_COMPILE_ERROR:
- return 'E_COMPILE_ERROR';
- case E_COMPILE_WARNING:
- return 'E_COMPILE_WARNING';
- case E_USER_ERROR:
- return 'E_USER_ERROR';
- case E_USER_WARNING:
- return 'E_USER_WARNING';
- case E_USER_NOTICE:
- return 'E_USER_NOTICE';
- case E_STRICT:
- return 'E_STRICT';
- case E_RECOVERABLE_ERROR:
- return 'E_RECOVERABLE_ERROR';
- case E_DEPRECATED:
- return 'E_DEPRECATED';
- case E_USER_DEPRECATED:
- return 'E_USER_DEPRECATED';
- }
-
- return 'Unknown PHP error';
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php
deleted file mode 100644
index 9beda1e7..00000000
--- a/vendor/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php
+++ /dev/null
@@ -1,78 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Formatter;
-
-use Monolog\Logger;
-
-/**
- * Formats a log message according to the ChromePHP array format
- *
- * @author Christophe Coevoet
- */
-class ChromePHPFormatter implements FormatterInterface
-{
- /**
- * Translates Monolog log levels to Wildfire levels.
- */
- private $logLevels = array(
- Logger::DEBUG => 'log',
- Logger::INFO => 'info',
- Logger::NOTICE => 'info',
- Logger::WARNING => 'warn',
- Logger::ERROR => 'error',
- Logger::CRITICAL => 'error',
- Logger::ALERT => 'error',
- Logger::EMERGENCY => 'error',
- );
-
- /**
- * {@inheritdoc}
- */
- public function format(array $record)
- {
- // Retrieve the line and file if set and remove them from the formatted extra
- $backtrace = 'unknown';
- if (isset($record['extra']['file'], $record['extra']['line'])) {
- $backtrace = $record['extra']['file'].' : '.$record['extra']['line'];
- unset($record['extra']['file'], $record['extra']['line']);
- }
-
- $message = array('message' => $record['message']);
- if ($record['context']) {
- $message['context'] = $record['context'];
- }
- if ($record['extra']) {
- $message['extra'] = $record['extra'];
- }
- if (count($message) === 1) {
- $message = reset($message);
- }
-
- return array(
- $record['channel'],
- $message,
- $backtrace,
- $this->logLevels[$record['level']],
- );
- }
-
- public function formatBatch(array $records)
- {
- $formatted = array();
-
- foreach ($records as $record) {
- $formatted[] = $this->format($record);
- }
-
- return $formatted;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php
deleted file mode 100644
index 4c556cf1..00000000
--- a/vendor/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php
+++ /dev/null
@@ -1,89 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Formatter;
-
-use Elastica\Document;
-
-/**
- * Format a log message into an Elastica Document
- *
- * @author Jelle Vink
- */
-class ElasticaFormatter extends NormalizerFormatter
-{
- /**
- * @var string Elastic search index name
- */
- protected $index;
-
- /**
- * @var string Elastic search document type
- */
- protected $type;
-
- /**
- * @param string $index Elastic Search index name
- * @param string $type Elastic Search document type
- */
- public function __construct($index, $type)
- {
- // elasticsearch requires a ISO 8601 format date with optional millisecond precision.
- parent::__construct('Y-m-d\TH:i:s.uP');
-
- $this->index = $index;
- $this->type = $type;
- }
-
- /**
- * {@inheritdoc}
- */
- public function format(array $record)
- {
- $record = parent::format($record);
-
- return $this->getDocument($record);
- }
-
- /**
- * Getter index
- * @return string
- */
- public function getIndex()
- {
- return $this->index;
- }
-
- /**
- * Getter type
- * @return string
- */
- public function getType()
- {
- return $this->type;
- }
-
- /**
- * Convert a log message into an Elastica Document
- *
- * @param array $record Log message
- * @return Document
- */
- protected function getDocument($record)
- {
- $document = new Document();
- $document->setData($record);
- $document->setType($this->type);
- $document->setIndex($this->index);
-
- return $document;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php
deleted file mode 100644
index 5094af3c..00000000
--- a/vendor/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php
+++ /dev/null
@@ -1,116 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Formatter;
-
-/**
- * formats the record to be used in the FlowdockHandler
- *
- * @author Dominik Liebler
- */
-class FlowdockFormatter implements FormatterInterface
-{
- /**
- * @var string
- */
- private $source;
-
- /**
- * @var string
- */
- private $sourceEmail;
-
- /**
- * @param string $source
- * @param string $sourceEmail
- */
- public function __construct($source, $sourceEmail)
- {
- $this->source = $source;
- $this->sourceEmail = $sourceEmail;
- }
-
- /**
- * {@inheritdoc}
- */
- public function format(array $record)
- {
- $tags = array(
- '#logs',
- '#' . strtolower($record['level_name']),
- '#' . $record['channel'],
- );
-
- foreach ($record['extra'] as $value) {
- $tags[] = '#' . $value;
- }
-
- $subject = sprintf(
- 'in %s: %s - %s',
- $this->source,
- $record['level_name'],
- $this->getShortMessage($record['message'])
- );
-
- $record['flowdock'] = array(
- 'source' => $this->source,
- 'from_address' => $this->sourceEmail,
- 'subject' => $subject,
- 'content' => $record['message'],
- 'tags' => $tags,
- 'project' => $this->source,
- );
-
- return $record;
- }
-
- /**
- * {@inheritdoc}
- */
- public function formatBatch(array $records)
- {
- $formatted = array();
-
- foreach ($records as $record) {
- $formatted[] = $this->format($record);
- }
-
- return $formatted;
- }
-
- /**
- * @param string $message
- *
- * @return string
- */
- public function getShortMessage($message)
- {
- static $hasMbString;
-
- if (null === $hasMbString) {
- $hasMbString = function_exists('mb_strlen');
- }
-
- $maxLength = 45;
-
- if ($hasMbString) {
- if (mb_strlen($message, 'UTF-8') > $maxLength) {
- $message = mb_substr($message, 0, $maxLength - 4, 'UTF-8') . ' ...';
- }
- } else {
- if (strlen($message) > $maxLength) {
- $message = substr($message, 0, $maxLength - 4) . ' ...';
- }
- }
-
- return $message;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php
deleted file mode 100644
index f8ead475..00000000
--- a/vendor/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php
+++ /dev/null
@@ -1,88 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Formatter;
-
-use Monolog\Utils;
-
-/**
- * Class FluentdFormatter
- *
- * Serializes a log message to Fluentd unix socket protocol
- *
- * Fluentd config:
- *
- *
- * type unix
- * path /var/run/td-agent/td-agent.sock
- *
- *
- * Monolog setup:
- *
- * $logger = new Monolog\Logger('fluent.tag');
- * $fluentHandler = new Monolog\Handler\SocketHandler('unix:///var/run/td-agent/td-agent.sock');
- * $fluentHandler->setFormatter(new Monolog\Formatter\FluentdFormatter());
- * $logger->pushHandler($fluentHandler);
- *
- * @author Andrius Putna
- */
-class FluentdFormatter implements FormatterInterface
-{
- /**
- * @var bool $levelTag should message level be a part of the fluentd tag
- */
- protected $levelTag = false;
-
- public function __construct($levelTag = false)
- {
- if (!function_exists('json_encode')) {
- throw new \RuntimeException('PHP\'s json extension is required to use Monolog\'s FluentdUnixFormatter');
- }
-
- $this->levelTag = (bool) $levelTag;
- }
-
- public function isUsingLevelsInTag()
- {
- return $this->levelTag;
- }
-
- public function format(array $record)
- {
- $tag = $record['channel'];
- if ($this->levelTag) {
- $tag .= '.' . strtolower($record['level_name']);
- }
-
- $message = array(
- 'message' => $record['message'],
- 'context' => $record['context'],
- 'extra' => $record['extra'],
- );
-
- if (!$this->levelTag) {
- $message['level'] = $record['level'];
- $message['level_name'] = $record['level_name'];
- }
-
- return Utils::jsonEncode(array($tag, $record['datetime']->getTimestamp(), $message));
- }
-
- public function formatBatch(array $records)
- {
- $message = '';
- foreach ($records as $record) {
- $message .= $this->format($record);
- }
-
- return $message;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php b/vendor/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php
deleted file mode 100644
index b5de7511..00000000
--- a/vendor/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php
+++ /dev/null
@@ -1,36 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Formatter;
-
-/**
- * Interface for formatters
- *
- * @author Jordi Boggiano
- */
-interface FormatterInterface
-{
- /**
- * Formats a log record.
- *
- * @param array $record A record to format
- * @return mixed The formatted record
- */
- public function format(array $record);
-
- /**
- * Formats a set of log records.
- *
- * @param array $records A set of records to format
- * @return mixed The formatted set of records
- */
- public function formatBatch(array $records);
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php
deleted file mode 100644
index 2c1b0e86..00000000
--- a/vendor/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php
+++ /dev/null
@@ -1,138 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Formatter;
-
-use Monolog\Logger;
-use Gelf\Message;
-
-/**
- * Serializes a log message to GELF
- * @see http://www.graylog2.org/about/gelf
- *
- * @author Matt Lehner
- */
-class GelfMessageFormatter extends NormalizerFormatter
-{
- const DEFAULT_MAX_LENGTH = 32766;
-
- /**
- * @var string the name of the system for the Gelf log message
- */
- protected $systemName;
-
- /**
- * @var string a prefix for 'extra' fields from the Monolog record (optional)
- */
- protected $extraPrefix;
-
- /**
- * @var string a prefix for 'context' fields from the Monolog record (optional)
- */
- protected $contextPrefix;
-
- /**
- * @var int max length per field
- */
- protected $maxLength;
-
- /**
- * Translates Monolog log levels to Graylog2 log priorities.
- */
- private $logLevels = array(
- Logger::DEBUG => 7,
- Logger::INFO => 6,
- Logger::NOTICE => 5,
- Logger::WARNING => 4,
- Logger::ERROR => 3,
- Logger::CRITICAL => 2,
- Logger::ALERT => 1,
- Logger::EMERGENCY => 0,
- );
-
- public function __construct($systemName = null, $extraPrefix = null, $contextPrefix = 'ctxt_', $maxLength = null)
- {
- parent::__construct('U.u');
-
- $this->systemName = $systemName ?: gethostname();
-
- $this->extraPrefix = $extraPrefix;
- $this->contextPrefix = $contextPrefix;
- $this->maxLength = is_null($maxLength) ? self::DEFAULT_MAX_LENGTH : $maxLength;
- }
-
- /**
- * {@inheritdoc}
- */
- public function format(array $record)
- {
- $record = parent::format($record);
-
- if (!isset($record['datetime'], $record['message'], $record['level'])) {
- throw new \InvalidArgumentException('The record should at least contain datetime, message and level keys, '.var_export($record, true).' given');
- }
-
- $message = new Message();
- $message
- ->setTimestamp($record['datetime'])
- ->setShortMessage((string) $record['message'])
- ->setHost($this->systemName)
- ->setLevel($this->logLevels[$record['level']]);
-
- // message length + system name length + 200 for padding / metadata
- $len = 200 + strlen((string) $record['message']) + strlen($this->systemName);
-
- if ($len > $this->maxLength) {
- $message->setShortMessage(substr($record['message'], 0, $this->maxLength));
- }
-
- if (isset($record['channel'])) {
- $message->setFacility($record['channel']);
- }
- if (isset($record['extra']['line'])) {
- $message->setLine($record['extra']['line']);
- unset($record['extra']['line']);
- }
- if (isset($record['extra']['file'])) {
- $message->setFile($record['extra']['file']);
- unset($record['extra']['file']);
- }
-
- foreach ($record['extra'] as $key => $val) {
- $val = is_scalar($val) || null === $val ? $val : $this->toJson($val);
- $len = strlen($this->extraPrefix . $key . $val);
- if ($len > $this->maxLength) {
- $message->setAdditional($this->extraPrefix . $key, substr($val, 0, $this->maxLength));
- break;
- }
- $message->setAdditional($this->extraPrefix . $key, $val);
- }
-
- foreach ($record['context'] as $key => $val) {
- $val = is_scalar($val) || null === $val ? $val : $this->toJson($val);
- $len = strlen($this->contextPrefix . $key . $val);
- if ($len > $this->maxLength) {
- $message->setAdditional($this->contextPrefix . $key, substr($val, 0, $this->maxLength));
- break;
- }
- $message->setAdditional($this->contextPrefix . $key, $val);
- }
-
- if (null === $message->getFile() && isset($record['context']['exception']['file'])) {
- if (preg_match("/^(.+):([0-9]+)$/", $record['context']['exception']['file'], $matches)) {
- $message->setFile($matches[1]);
- $message->setLine($matches[2]);
- }
- }
-
- return $message;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php
deleted file mode 100644
index 9e8d2d01..00000000
--- a/vendor/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php
+++ /dev/null
@@ -1,142 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Formatter;
-
-use Monolog\Logger;
-use Monolog\Utils;
-
-/**
- * Formats incoming records into an HTML table
- *
- * This is especially useful for html email logging
- *
- * @author Tiago Brito
- */
-class HtmlFormatter extends NormalizerFormatter
-{
- /**
- * Translates Monolog log levels to html color priorities.
- */
- protected $logLevels = array(
- Logger::DEBUG => '#cccccc',
- Logger::INFO => '#468847',
- Logger::NOTICE => '#3a87ad',
- Logger::WARNING => '#c09853',
- Logger::ERROR => '#f0ad4e',
- Logger::CRITICAL => '#FF7708',
- Logger::ALERT => '#C12A19',
- Logger::EMERGENCY => '#000000',
- );
-
- /**
- * @param string $dateFormat The format of the timestamp: one supported by DateTime::format
- */
- public function __construct($dateFormat = null)
- {
- parent::__construct($dateFormat);
- }
-
- /**
- * Creates an HTML table row
- *
- * @param string $th Row header content
- * @param string $td Row standard cell content
- * @param bool $escapeTd false if td content must not be html escaped
- * @return string
- */
- protected function addRow($th, $td = ' ', $escapeTd = true)
- {
- $th = htmlspecialchars($th, ENT_NOQUOTES, 'UTF-8');
- if ($escapeTd) {
- $td = ''.htmlspecialchars($td, ENT_NOQUOTES, 'UTF-8').' ';
- }
-
- return "\n$th: \n".$td." \n ";
- }
-
- /**
- * Create a HTML h1 tag
- *
- * @param string $title Text to be in the h1
- * @param int $level Error level
- * @return string
- */
- protected function addTitle($title, $level)
- {
- $title = htmlspecialchars($title, ENT_NOQUOTES, 'UTF-8');
-
- return ''.$title.' ';
- }
-
- /**
- * Formats a log record.
- *
- * @param array $record A record to format
- * @return mixed The formatted record
- */
- public function format(array $record)
- {
- $output = $this->addTitle($record['level_name'], $record['level']);
- $output .= '';
-
- $output .= $this->addRow('Message', (string) $record['message']);
- $output .= $this->addRow('Time', $record['datetime']->format($this->dateFormat));
- $output .= $this->addRow('Channel', $record['channel']);
- if ($record['context']) {
- $embeddedTable = '';
- foreach ($record['context'] as $key => $value) {
- $embeddedTable .= $this->addRow($key, $this->convertToString($value));
- }
- $embeddedTable .= '
';
- $output .= $this->addRow('Context', $embeddedTable, false);
- }
- if ($record['extra']) {
- $embeddedTable = '';
- foreach ($record['extra'] as $key => $value) {
- $embeddedTable .= $this->addRow($key, $this->convertToString($value));
- }
- $embeddedTable .= '
';
- $output .= $this->addRow('Extra', $embeddedTable, false);
- }
-
- return $output.'
';
- }
-
- /**
- * Formats a set of log records.
- *
- * @param array $records A set of records to format
- * @return mixed The formatted set of records
- */
- public function formatBatch(array $records)
- {
- $message = '';
- foreach ($records as $record) {
- $message .= $this->format($record);
- }
-
- return $message;
- }
-
- protected function convertToString($data)
- {
- if (null === $data || is_scalar($data)) {
- return (string) $data;
- }
-
- $data = $this->normalize($data);
- if (version_compare(PHP_VERSION, '5.4.0', '>=')) {
- return Utils::jsonEncode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE, true);
- }
-
- return str_replace('\\/', '/', Utils::jsonEncode($data, null, true));
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php
deleted file mode 100644
index 86966b07..00000000
--- a/vendor/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php
+++ /dev/null
@@ -1,212 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Formatter;
-
-use Exception;
-use Monolog\Utils;
-use Throwable;
-
-/**
- * Encodes whatever record data is passed to it as json
- *
- * This can be useful to log to databases or remote APIs
- *
- * @author Jordi Boggiano
- */
-class JsonFormatter extends NormalizerFormatter
-{
- const BATCH_MODE_JSON = 1;
- const BATCH_MODE_NEWLINES = 2;
-
- protected $batchMode;
- protected $appendNewline;
-
- /**
- * @var bool
- */
- protected $includeStacktraces = false;
-
- /**
- * @param int $batchMode
- * @param bool $appendNewline
- */
- public function __construct($batchMode = self::BATCH_MODE_JSON, $appendNewline = true)
- {
- $this->batchMode = $batchMode;
- $this->appendNewline = $appendNewline;
- }
-
- /**
- * The batch mode option configures the formatting style for
- * multiple records. By default, multiple records will be
- * formatted as a JSON-encoded array. However, for
- * compatibility with some API endpoints, alternative styles
- * are available.
- *
- * @return int
- */
- public function getBatchMode()
- {
- return $this->batchMode;
- }
-
- /**
- * True if newlines are appended to every formatted record
- *
- * @return bool
- */
- public function isAppendingNewlines()
- {
- return $this->appendNewline;
- }
-
- /**
- * {@inheritdoc}
- */
- public function format(array $record)
- {
- return $this->toJson($this->normalize($record), true) . ($this->appendNewline ? "\n" : '');
- }
-
- /**
- * {@inheritdoc}
- */
- public function formatBatch(array $records)
- {
- switch ($this->batchMode) {
- case static::BATCH_MODE_NEWLINES:
- return $this->formatBatchNewlines($records);
-
- case static::BATCH_MODE_JSON:
- default:
- return $this->formatBatchJson($records);
- }
- }
-
- /**
- * @param bool $include
- */
- public function includeStacktraces($include = true)
- {
- $this->includeStacktraces = $include;
- }
-
- /**
- * Return a JSON-encoded array of records.
- *
- * @param array $records
- * @return string
- */
- protected function formatBatchJson(array $records)
- {
- return $this->toJson($this->normalize($records), true);
- }
-
- /**
- * Use new lines to separate records instead of a
- * JSON-encoded array.
- *
- * @param array $records
- * @return string
- */
- protected function formatBatchNewlines(array $records)
- {
- $instance = $this;
-
- $oldNewline = $this->appendNewline;
- $this->appendNewline = false;
- array_walk($records, function (&$value, $key) use ($instance) {
- $value = $instance->format($value);
- });
- $this->appendNewline = $oldNewline;
-
- return implode("\n", $records);
- }
-
- /**
- * Normalizes given $data.
- *
- * @param mixed $data
- *
- * @return mixed
- */
- protected function normalize($data, $depth = 0)
- {
- if ($depth > 9) {
- return 'Over 9 levels deep, aborting normalization';
- }
-
- if (is_array($data)) {
- $normalized = array();
-
- $count = 1;
- foreach ($data as $key => $value) {
- if ($count++ > 1000) {
- $normalized['...'] = 'Over 1000 items ('.count($data).' total), aborting normalization';
- break;
- }
-
- $normalized[$key] = $this->normalize($value, $depth+1);
- }
-
- return $normalized;
- }
-
- if ($data instanceof Exception || $data instanceof Throwable) {
- return $this->normalizeException($data);
- }
-
- if (is_resource($data)) {
- return parent::normalize($data);
- }
-
- return $data;
- }
-
- /**
- * Normalizes given exception with or without its own stack trace based on
- * `includeStacktraces` property.
- *
- * @param Exception|Throwable $e
- *
- * @return array
- */
- protected function normalizeException($e)
- {
- // TODO 2.0 only check for Throwable
- if (!$e instanceof Exception && !$e instanceof Throwable) {
- throw new \InvalidArgumentException('Exception/Throwable expected, got '.gettype($e).' / '.Utils::getClass($e));
- }
-
- $data = array(
- 'class' => Utils::getClass($e),
- 'message' => $e->getMessage(),
- 'code' => (int) $e->getCode(),
- 'file' => $e->getFile().':'.$e->getLine(),
- );
-
- if ($this->includeStacktraces) {
- $trace = $e->getTrace();
- foreach ($trace as $frame) {
- if (isset($frame['file'])) {
- $data['trace'][] = $frame['file'].':'.$frame['line'];
- }
- }
- }
-
- if ($previous = $e->getPrevious()) {
- $data['previous'] = $this->normalizeException($previous);
- }
-
- return $data;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php
deleted file mode 100644
index acc1fd38..00000000
--- a/vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php
+++ /dev/null
@@ -1,181 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Formatter;
-
-use Monolog\Utils;
-
-/**
- * Formats incoming records into a one-line string
- *
- * This is especially useful for logging to files
- *
- * @author Jordi Boggiano
- * @author Christophe Coevoet
- */
-class LineFormatter extends NormalizerFormatter
-{
- const SIMPLE_FORMAT = "[%datetime%] %channel%.%level_name%: %message% %context% %extra%\n";
-
- protected $format;
- protected $allowInlineLineBreaks;
- protected $ignoreEmptyContextAndExtra;
- protected $includeStacktraces;
-
- /**
- * @param string $format The format of the message
- * @param string $dateFormat The format of the timestamp: one supported by DateTime::format
- * @param bool $allowInlineLineBreaks Whether to allow inline line breaks in log entries
- * @param bool $ignoreEmptyContextAndExtra
- */
- public function __construct($format = null, $dateFormat = null, $allowInlineLineBreaks = false, $ignoreEmptyContextAndExtra = false)
- {
- $this->format = $format ?: static::SIMPLE_FORMAT;
- $this->allowInlineLineBreaks = $allowInlineLineBreaks;
- $this->ignoreEmptyContextAndExtra = $ignoreEmptyContextAndExtra;
- parent::__construct($dateFormat);
- }
-
- public function includeStacktraces($include = true)
- {
- $this->includeStacktraces = $include;
- if ($this->includeStacktraces) {
- $this->allowInlineLineBreaks = true;
- }
- }
-
- public function allowInlineLineBreaks($allow = true)
- {
- $this->allowInlineLineBreaks = $allow;
- }
-
- public function ignoreEmptyContextAndExtra($ignore = true)
- {
- $this->ignoreEmptyContextAndExtra = $ignore;
- }
-
- /**
- * {@inheritdoc}
- */
- public function format(array $record)
- {
- $vars = parent::format($record);
-
- $output = $this->format;
-
- foreach ($vars['extra'] as $var => $val) {
- if (false !== strpos($output, '%extra.'.$var.'%')) {
- $output = str_replace('%extra.'.$var.'%', $this->stringify($val), $output);
- unset($vars['extra'][$var]);
- }
- }
-
-
- foreach ($vars['context'] as $var => $val) {
- if (false !== strpos($output, '%context.'.$var.'%')) {
- $output = str_replace('%context.'.$var.'%', $this->stringify($val), $output);
- unset($vars['context'][$var]);
- }
- }
-
- if ($this->ignoreEmptyContextAndExtra) {
- if (empty($vars['context'])) {
- unset($vars['context']);
- $output = str_replace('%context%', '', $output);
- }
-
- if (empty($vars['extra'])) {
- unset($vars['extra']);
- $output = str_replace('%extra%', '', $output);
- }
- }
-
- foreach ($vars as $var => $val) {
- if (false !== strpos($output, '%'.$var.'%')) {
- $output = str_replace('%'.$var.'%', $this->stringify($val), $output);
- }
- }
-
- // remove leftover %extra.xxx% and %context.xxx% if any
- if (false !== strpos($output, '%')) {
- $output = preg_replace('/%(?:extra|context)\..+?%/', '', $output);
- }
-
- return $output;
- }
-
- public function formatBatch(array $records)
- {
- $message = '';
- foreach ($records as $record) {
- $message .= $this->format($record);
- }
-
- return $message;
- }
-
- public function stringify($value)
- {
- return $this->replaceNewlines($this->convertToString($value));
- }
-
- protected function normalizeException($e)
- {
- // TODO 2.0 only check for Throwable
- if (!$e instanceof \Exception && !$e instanceof \Throwable) {
- throw new \InvalidArgumentException('Exception/Throwable expected, got '.gettype($e).' / '.Utils::getClass($e));
- }
-
- $previousText = '';
- if ($previous = $e->getPrevious()) {
- do {
- $previousText .= ', '.Utils::getClass($previous).'(code: '.$previous->getCode().'): '.$previous->getMessage().' at '.$previous->getFile().':'.$previous->getLine();
- } while ($previous = $previous->getPrevious());
- }
-
- $str = '[object] ('.Utils::getClass($e).'(code: '.$e->getCode().'): '.$e->getMessage().' at '.$e->getFile().':'.$e->getLine().$previousText.')';
- if ($this->includeStacktraces) {
- $str .= "\n[stacktrace]\n".$e->getTraceAsString()."\n";
- }
-
- return $str;
- }
-
- protected function convertToString($data)
- {
- if (null === $data || is_bool($data)) {
- return var_export($data, true);
- }
-
- if (is_scalar($data)) {
- return (string) $data;
- }
-
- if (version_compare(PHP_VERSION, '5.4.0', '>=')) {
- return $this->toJson($data, true);
- }
-
- return str_replace('\\/', '/', $this->toJson($data, true));
- }
-
- protected function replaceNewlines($str)
- {
- if ($this->allowInlineLineBreaks) {
- if (0 === strpos($str, '{')) {
- return str_replace(array('\r', '\n'), array("\r", "\n"), $str);
- }
-
- return $str;
- }
-
- return str_replace(array("\r\n", "\r", "\n"), ' ', $str);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php
deleted file mode 100644
index 401859bb..00000000
--- a/vendor/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php
+++ /dev/null
@@ -1,47 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Formatter;
-
-/**
- * Encodes message information into JSON in a format compatible with Loggly.
- *
- * @author Adam Pancutt
- */
-class LogglyFormatter extends JsonFormatter
-{
- /**
- * Overrides the default batch mode to new lines for compatibility with the
- * Loggly bulk API.
- *
- * @param int $batchMode
- */
- public function __construct($batchMode = self::BATCH_MODE_NEWLINES, $appendNewline = false)
- {
- parent::__construct($batchMode, $appendNewline);
- }
-
- /**
- * Appends the 'timestamp' parameter for indexing by Loggly.
- *
- * @see https://www.loggly.com/docs/automated-parsing/#json
- * @see \Monolog\Formatter\JsonFormatter::format()
- */
- public function format(array $record)
- {
- if (isset($record["datetime"]) && ($record["datetime"] instanceof \DateTime)) {
- $record["timestamp"] = $record["datetime"]->format("Y-m-d\TH:i:s.uO");
- // TODO 2.0 unset the 'datetime' parameter, retained for BC
- }
-
- return parent::format($record);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php
deleted file mode 100644
index 8f83bec0..00000000
--- a/vendor/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php
+++ /dev/null
@@ -1,166 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Formatter;
-
-/**
- * Serializes a log message to Logstash Event Format
- *
- * @see http://logstash.net/
- * @see https://github.com/logstash/logstash/blob/master/lib/logstash/event.rb
- *
- * @author Tim Mower
- */
-class LogstashFormatter extends NormalizerFormatter
-{
- const V0 = 0;
- const V1 = 1;
-
- /**
- * @var string the name of the system for the Logstash log message, used to fill the @source field
- */
- protected $systemName;
-
- /**
- * @var string an application name for the Logstash log message, used to fill the @type field
- */
- protected $applicationName;
-
- /**
- * @var string a prefix for 'extra' fields from the Monolog record (optional)
- */
- protected $extraPrefix;
-
- /**
- * @var string a prefix for 'context' fields from the Monolog record (optional)
- */
- protected $contextPrefix;
-
- /**
- * @var int logstash format version to use
- */
- protected $version;
-
- /**
- * @param string $applicationName the application that sends the data, used as the "type" field of logstash
- * @param string $systemName the system/machine name, used as the "source" field of logstash, defaults to the hostname of the machine
- * @param string $extraPrefix prefix for extra keys inside logstash "fields"
- * @param string $contextPrefix prefix for context keys inside logstash "fields", defaults to ctxt_
- * @param int $version the logstash format version to use, defaults to 0
- */
- public function __construct($applicationName, $systemName = null, $extraPrefix = null, $contextPrefix = 'ctxt_', $version = self::V0)
- {
- // logstash requires a ISO 8601 format date with optional millisecond precision.
- parent::__construct('Y-m-d\TH:i:s.uP');
-
- $this->systemName = $systemName ?: gethostname();
- $this->applicationName = $applicationName;
- $this->extraPrefix = $extraPrefix;
- $this->contextPrefix = $contextPrefix;
- $this->version = $version;
- }
-
- /**
- * {@inheritdoc}
- */
- public function format(array $record)
- {
- $record = parent::format($record);
-
- if ($this->version === self::V1) {
- $message = $this->formatV1($record);
- } else {
- $message = $this->formatV0($record);
- }
-
- return $this->toJson($message) . "\n";
- }
-
- protected function formatV0(array $record)
- {
- if (empty($record['datetime'])) {
- $record['datetime'] = gmdate('c');
- }
- $message = array(
- '@timestamp' => $record['datetime'],
- '@source' => $this->systemName,
- '@fields' => array(),
- );
- if (isset($record['message'])) {
- $message['@message'] = $record['message'];
- }
- if (isset($record['channel'])) {
- $message['@tags'] = array($record['channel']);
- $message['@fields']['channel'] = $record['channel'];
- }
- if (isset($record['level'])) {
- $message['@fields']['level'] = $record['level'];
- }
- if ($this->applicationName) {
- $message['@type'] = $this->applicationName;
- }
- if (isset($record['extra']['server'])) {
- $message['@source_host'] = $record['extra']['server'];
- }
- if (isset($record['extra']['url'])) {
- $message['@source_path'] = $record['extra']['url'];
- }
- if (!empty($record['extra'])) {
- foreach ($record['extra'] as $key => $val) {
- $message['@fields'][$this->extraPrefix . $key] = $val;
- }
- }
- if (!empty($record['context'])) {
- foreach ($record['context'] as $key => $val) {
- $message['@fields'][$this->contextPrefix . $key] = $val;
- }
- }
-
- return $message;
- }
-
- protected function formatV1(array $record)
- {
- if (empty($record['datetime'])) {
- $record['datetime'] = gmdate('c');
- }
- $message = array(
- '@timestamp' => $record['datetime'],
- '@version' => 1,
- 'host' => $this->systemName,
- );
- if (isset($record['message'])) {
- $message['message'] = $record['message'];
- }
- if (isset($record['channel'])) {
- $message['type'] = $record['channel'];
- $message['channel'] = $record['channel'];
- }
- if (isset($record['level_name'])) {
- $message['level'] = $record['level_name'];
- }
- if ($this->applicationName) {
- $message['type'] = $this->applicationName;
- }
- if (!empty($record['extra'])) {
- foreach ($record['extra'] as $key => $val) {
- $message[$this->extraPrefix . $key] = $val;
- }
- }
- if (!empty($record['context'])) {
- foreach ($record['context'] as $key => $val) {
- $message[$this->contextPrefix . $key] = $val;
- }
- }
-
- return $message;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php
deleted file mode 100644
index bd9e4c02..00000000
--- a/vendor/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php
+++ /dev/null
@@ -1,107 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Formatter;
-
-use Monolog\Utils;
-
-/**
- * Formats a record for use with the MongoDBHandler.
- *
- * @author Florian Plattner
- */
-class MongoDBFormatter implements FormatterInterface
-{
- private $exceptionTraceAsString;
- private $maxNestingLevel;
-
- /**
- * @param int $maxNestingLevel 0 means infinite nesting, the $record itself is level 1, $record['context'] is 2
- * @param bool $exceptionTraceAsString set to false to log exception traces as a sub documents instead of strings
- */
- public function __construct($maxNestingLevel = 3, $exceptionTraceAsString = true)
- {
- $this->maxNestingLevel = max($maxNestingLevel, 0);
- $this->exceptionTraceAsString = (bool) $exceptionTraceAsString;
- }
-
- /**
- * {@inheritDoc}
- */
- public function format(array $record)
- {
- return $this->formatArray($record);
- }
-
- /**
- * {@inheritDoc}
- */
- public function formatBatch(array $records)
- {
- foreach ($records as $key => $record) {
- $records[$key] = $this->format($record);
- }
-
- return $records;
- }
-
- protected function formatArray(array $record, $nestingLevel = 0)
- {
- if ($this->maxNestingLevel == 0 || $nestingLevel <= $this->maxNestingLevel) {
- foreach ($record as $name => $value) {
- if ($value instanceof \DateTime) {
- $record[$name] = $this->formatDate($value, $nestingLevel + 1);
- } elseif ($value instanceof \Exception) {
- $record[$name] = $this->formatException($value, $nestingLevel + 1);
- } elseif (is_array($value)) {
- $record[$name] = $this->formatArray($value, $nestingLevel + 1);
- } elseif (is_object($value)) {
- $record[$name] = $this->formatObject($value, $nestingLevel + 1);
- }
- }
- } else {
- $record = '[...]';
- }
-
- return $record;
- }
-
- protected function formatObject($value, $nestingLevel)
- {
- $objectVars = get_object_vars($value);
- $objectVars['class'] = Utils::getClass($value);
-
- return $this->formatArray($objectVars, $nestingLevel);
- }
-
- protected function formatException(\Exception $exception, $nestingLevel)
- {
- $formattedException = array(
- 'class' => Utils::getClass($exception),
- 'message' => $exception->getMessage(),
- 'code' => (int) $exception->getCode(),
- 'file' => $exception->getFile() . ':' . $exception->getLine(),
- );
-
- if ($this->exceptionTraceAsString === true) {
- $formattedException['trace'] = $exception->getTraceAsString();
- } else {
- $formattedException['trace'] = $exception->getTrace();
- }
-
- return $this->formatArray($formattedException, $nestingLevel);
- }
-
- protected function formatDate(\DateTime $value, $nestingLevel)
- {
- return new \MongoDate($value->getTimestamp());
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php
deleted file mode 100644
index 3a01f2ce..00000000
--- a/vendor/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php
+++ /dev/null
@@ -1,180 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Formatter;
-
-use Exception;
-use Monolog\Utils;
-
-/**
- * Normalizes incoming records to remove objects/resources so it's easier to dump to various targets
- *
- * @author Jordi Boggiano
- */
-class NormalizerFormatter implements FormatterInterface
-{
- const SIMPLE_DATE = "Y-m-d H:i:s";
-
- protected $dateFormat;
-
- /**
- * @param string $dateFormat The format of the timestamp: one supported by DateTime::format
- */
- public function __construct($dateFormat = null)
- {
- $this->dateFormat = $dateFormat ?: static::SIMPLE_DATE;
- if (!function_exists('json_encode')) {
- throw new \RuntimeException('PHP\'s json extension is required to use Monolog\'s NormalizerFormatter');
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function format(array $record)
- {
- return $this->normalize($record);
- }
-
- /**
- * {@inheritdoc}
- */
- public function formatBatch(array $records)
- {
- foreach ($records as $key => $record) {
- $records[$key] = $this->format($record);
- }
-
- return $records;
- }
-
- protected function normalize($data, $depth = 0)
- {
- if ($depth > 9) {
- return 'Over 9 levels deep, aborting normalization';
- }
-
- if (null === $data || is_scalar($data)) {
- if (is_float($data)) {
- if (is_infinite($data)) {
- return ($data > 0 ? '' : '-') . 'INF';
- }
- if (is_nan($data)) {
- return 'NaN';
- }
- }
-
- return $data;
- }
-
- if (is_array($data)) {
- $normalized = array();
-
- $count = 1;
- foreach ($data as $key => $value) {
- if ($count++ > 1000) {
- $normalized['...'] = 'Over 1000 items ('.count($data).' total), aborting normalization';
- break;
- }
-
- $normalized[$key] = $this->normalize($value, $depth+1);
- }
-
- return $normalized;
- }
-
- if ($data instanceof \DateTime) {
- return $data->format($this->dateFormat);
- }
-
- if (is_object($data)) {
- // TODO 2.0 only check for Throwable
- if ($data instanceof Exception || (PHP_VERSION_ID > 70000 && $data instanceof \Throwable)) {
- return $this->normalizeException($data);
- }
-
- // non-serializable objects that implement __toString stringified
- if (method_exists($data, '__toString') && !$data instanceof \JsonSerializable) {
- $value = $data->__toString();
- } else {
- // the rest is json-serialized in some way
- $value = $this->toJson($data, true);
- }
-
- return sprintf("[object] (%s: %s)", Utils::getClass($data), $value);
- }
-
- if (is_resource($data)) {
- return sprintf('[resource] (%s)', get_resource_type($data));
- }
-
- return '[unknown('.gettype($data).')]';
- }
-
- protected function normalizeException($e)
- {
- // TODO 2.0 only check for Throwable
- if (!$e instanceof Exception && !$e instanceof \Throwable) {
- throw new \InvalidArgumentException('Exception/Throwable expected, got '.gettype($e).' / '.Utils::getClass($e));
- }
-
- $data = array(
- 'class' => Utils::getClass($e),
- 'message' => $e->getMessage(),
- 'code' => (int) $e->getCode(),
- 'file' => $e->getFile().':'.$e->getLine(),
- );
-
- if ($e instanceof \SoapFault) {
- if (isset($e->faultcode)) {
- $data['faultcode'] = $e->faultcode;
- }
-
- if (isset($e->faultactor)) {
- $data['faultactor'] = $e->faultactor;
- }
-
- if (isset($e->detail)) {
- if (is_string($e->detail)) {
- $data['detail'] = $e->detail;
- } elseif (is_object($e->detail) || is_array($e->detail)) {
- $data['detail'] = $this->toJson($e->detail, true);
- }
- }
- }
-
- $trace = $e->getTrace();
- foreach ($trace as $frame) {
- if (isset($frame['file'])) {
- $data['trace'][] = $frame['file'].':'.$frame['line'];
- }
- }
-
- if ($previous = $e->getPrevious()) {
- $data['previous'] = $this->normalizeException($previous);
- }
-
- return $data;
- }
-
- /**
- * Return the JSON representation of a value
- *
- * @param mixed $data
- * @param bool $ignoreErrors
- * @throws \RuntimeException if encoding fails and errors are not ignored
- * @return string
- */
- protected function toJson($data, $ignoreErrors = false)
- {
- return Utils::jsonEncode($data, null, $ignoreErrors);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php
deleted file mode 100644
index 5d345d53..00000000
--- a/vendor/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php
+++ /dev/null
@@ -1,48 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Formatter;
-
-/**
- * Formats data into an associative array of scalar values.
- * Objects and arrays will be JSON encoded.
- *
- * @author Andrew Lawson
- */
-class ScalarFormatter extends NormalizerFormatter
-{
- /**
- * {@inheritdoc}
- */
- public function format(array $record)
- {
- foreach ($record as $key => $value) {
- $record[$key] = $this->normalizeValue($value);
- }
-
- return $record;
- }
-
- /**
- * @param mixed $value
- * @return mixed
- */
- protected function normalizeValue($value)
- {
- $normalized = $this->normalize($value);
-
- if (is_array($normalized) || is_object($normalized)) {
- return $this->toJson($normalized, true);
- }
-
- return $normalized;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php
deleted file mode 100644
index 65dba99c..00000000
--- a/vendor/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php
+++ /dev/null
@@ -1,113 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Formatter;
-
-use Monolog\Logger;
-
-/**
- * Serializes a log message according to Wildfire's header requirements
- *
- * @author Eric Clemmons (@ericclemmons)
- * @author Christophe Coevoet
- * @author Kirill chEbba Chebunin
- */
-class WildfireFormatter extends NormalizerFormatter
-{
- const TABLE = 'table';
-
- /**
- * Translates Monolog log levels to Wildfire levels.
- */
- private $logLevels = array(
- Logger::DEBUG => 'LOG',
- Logger::INFO => 'INFO',
- Logger::NOTICE => 'INFO',
- Logger::WARNING => 'WARN',
- Logger::ERROR => 'ERROR',
- Logger::CRITICAL => 'ERROR',
- Logger::ALERT => 'ERROR',
- Logger::EMERGENCY => 'ERROR',
- );
-
- /**
- * {@inheritdoc}
- */
- public function format(array $record)
- {
- // Retrieve the line and file if set and remove them from the formatted extra
- $file = $line = '';
- if (isset($record['extra']['file'])) {
- $file = $record['extra']['file'];
- unset($record['extra']['file']);
- }
- if (isset($record['extra']['line'])) {
- $line = $record['extra']['line'];
- unset($record['extra']['line']);
- }
-
- $record = $this->normalize($record);
- $message = array('message' => $record['message']);
- $handleError = false;
- if ($record['context']) {
- $message['context'] = $record['context'];
- $handleError = true;
- }
- if ($record['extra']) {
- $message['extra'] = $record['extra'];
- $handleError = true;
- }
- if (count($message) === 1) {
- $message = reset($message);
- }
-
- if (isset($record['context'][self::TABLE])) {
- $type = 'TABLE';
- $label = $record['channel'] .': '. $record['message'];
- $message = $record['context'][self::TABLE];
- } else {
- $type = $this->logLevels[$record['level']];
- $label = $record['channel'];
- }
-
- // Create JSON object describing the appearance of the message in the console
- $json = $this->toJson(array(
- array(
- 'Type' => $type,
- 'File' => $file,
- 'Line' => $line,
- 'Label' => $label,
- ),
- $message,
- ), $handleError);
-
- // The message itself is a serialization of the above JSON object + it's length
- return sprintf(
- '%s|%s|',
- strlen($json),
- $json
- );
- }
-
- public function formatBatch(array $records)
- {
- throw new \BadMethodCallException('Batch formatting does not make sense for the WildfireFormatter');
- }
-
- protected function normalize($data, $depth = 0)
- {
- if (is_object($data) && !$data instanceof \DateTime) {
- return $data;
- }
-
- return parent::normalize($data, $depth);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php
deleted file mode 100644
index cdd9f7d4..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php
+++ /dev/null
@@ -1,196 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Formatter\FormatterInterface;
-use Monolog\Formatter\LineFormatter;
-use Monolog\Logger;
-use Monolog\ResettableInterface;
-
-/**
- * Base Handler class providing the Handler structure
- *
- * @author Jordi Boggiano
- */
-abstract class AbstractHandler implements HandlerInterface, ResettableInterface
-{
- protected $level = Logger::DEBUG;
- protected $bubble = true;
-
- /**
- * @var FormatterInterface
- */
- protected $formatter;
- protected $processors = array();
-
- /**
- * @param int|string $level The minimum logging level at which this handler will be triggered
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- */
- public function __construct($level = Logger::DEBUG, $bubble = true)
- {
- $this->setLevel($level);
- $this->bubble = $bubble;
- }
-
- /**
- * {@inheritdoc}
- */
- public function isHandling(array $record)
- {
- return $record['level'] >= $this->level;
- }
-
- /**
- * {@inheritdoc}
- */
- public function handleBatch(array $records)
- {
- foreach ($records as $record) {
- $this->handle($record);
- }
- }
-
- /**
- * Closes the handler.
- *
- * This will be called automatically when the object is destroyed
- */
- public function close()
- {
- }
-
- /**
- * {@inheritdoc}
- */
- public function pushProcessor($callback)
- {
- if (!is_callable($callback)) {
- throw new \InvalidArgumentException('Processors must be valid callables (callback or object with an __invoke method), '.var_export($callback, true).' given');
- }
- array_unshift($this->processors, $callback);
-
- return $this;
- }
-
- /**
- * {@inheritdoc}
- */
- public function popProcessor()
- {
- if (!$this->processors) {
- throw new \LogicException('You tried to pop from an empty processor stack.');
- }
-
- return array_shift($this->processors);
- }
-
- /**
- * {@inheritdoc}
- */
- public function setFormatter(FormatterInterface $formatter)
- {
- $this->formatter = $formatter;
-
- return $this;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getFormatter()
- {
- if (!$this->formatter) {
- $this->formatter = $this->getDefaultFormatter();
- }
-
- return $this->formatter;
- }
-
- /**
- * Sets minimum logging level at which this handler will be triggered.
- *
- * @param int|string $level Level or level name
- * @return self
- */
- public function setLevel($level)
- {
- $this->level = Logger::toMonologLevel($level);
-
- return $this;
- }
-
- /**
- * Gets minimum logging level at which this handler will be triggered.
- *
- * @return int
- */
- public function getLevel()
- {
- return $this->level;
- }
-
- /**
- * Sets the bubbling behavior.
- *
- * @param bool $bubble true means that this handler allows bubbling.
- * false means that bubbling is not permitted.
- * @return self
- */
- public function setBubble($bubble)
- {
- $this->bubble = $bubble;
-
- return $this;
- }
-
- /**
- * Gets the bubbling behavior.
- *
- * @return bool true means that this handler allows bubbling.
- * false means that bubbling is not permitted.
- */
- public function getBubble()
- {
- return $this->bubble;
- }
-
- public function __destruct()
- {
- try {
- $this->close();
- } catch (\Exception $e) {
- // do nothing
- } catch (\Throwable $e) {
- // do nothing
- }
- }
-
- public function reset()
- {
- foreach ($this->processors as $processor) {
- if ($processor instanceof ResettableInterface) {
- $processor->reset();
- }
- }
- }
-
- /**
- * Gets the default formatter.
- *
- * @return FormatterInterface
- */
- protected function getDefaultFormatter()
- {
- return new LineFormatter();
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php
deleted file mode 100644
index e1e89530..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php
+++ /dev/null
@@ -1,68 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\ResettableInterface;
-
-/**
- * Base Handler class providing the Handler structure
- *
- * Classes extending it should (in most cases) only implement write($record)
- *
- * @author Jordi Boggiano
- * @author Christophe Coevoet
- */
-abstract class AbstractProcessingHandler extends AbstractHandler
-{
- /**
- * {@inheritdoc}
- */
- public function handle(array $record)
- {
- if (!$this->isHandling($record)) {
- return false;
- }
-
- $record = $this->processRecord($record);
-
- $record['formatted'] = $this->getFormatter()->format($record);
-
- $this->write($record);
-
- return false === $this->bubble;
- }
-
- /**
- * Writes the record down to the log of the implementing handler
- *
- * @param array $record
- * @return void
- */
- abstract protected function write(array $record);
-
- /**
- * Processes a record.
- *
- * @param array $record
- * @return array
- */
- protected function processRecord(array $record)
- {
- if ($this->processors) {
- foreach ($this->processors as $processor) {
- $record = call_user_func($processor, $record);
- }
- }
-
- return $record;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php
deleted file mode 100644
index 8c76aca0..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php
+++ /dev/null
@@ -1,101 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Logger;
-use Monolog\Formatter\LineFormatter;
-
-/**
- * Common syslog functionality
- */
-abstract class AbstractSyslogHandler extends AbstractProcessingHandler
-{
- protected $facility;
-
- /**
- * Translates Monolog log levels to syslog log priorities.
- */
- protected $logLevels = array(
- Logger::DEBUG => LOG_DEBUG,
- Logger::INFO => LOG_INFO,
- Logger::NOTICE => LOG_NOTICE,
- Logger::WARNING => LOG_WARNING,
- Logger::ERROR => LOG_ERR,
- Logger::CRITICAL => LOG_CRIT,
- Logger::ALERT => LOG_ALERT,
- Logger::EMERGENCY => LOG_EMERG,
- );
-
- /**
- * List of valid log facility names.
- */
- protected $facilities = array(
- 'auth' => LOG_AUTH,
- 'authpriv' => LOG_AUTHPRIV,
- 'cron' => LOG_CRON,
- 'daemon' => LOG_DAEMON,
- 'kern' => LOG_KERN,
- 'lpr' => LOG_LPR,
- 'mail' => LOG_MAIL,
- 'news' => LOG_NEWS,
- 'syslog' => LOG_SYSLOG,
- 'user' => LOG_USER,
- 'uucp' => LOG_UUCP,
- );
-
- /**
- * @param mixed $facility
- * @param int $level The minimum logging level at which this handler will be triggered
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- */
- public function __construct($facility = LOG_USER, $level = Logger::DEBUG, $bubble = true)
- {
- parent::__construct($level, $bubble);
-
- if (!defined('PHP_WINDOWS_VERSION_BUILD')) {
- $this->facilities['local0'] = LOG_LOCAL0;
- $this->facilities['local1'] = LOG_LOCAL1;
- $this->facilities['local2'] = LOG_LOCAL2;
- $this->facilities['local3'] = LOG_LOCAL3;
- $this->facilities['local4'] = LOG_LOCAL4;
- $this->facilities['local5'] = LOG_LOCAL5;
- $this->facilities['local6'] = LOG_LOCAL6;
- $this->facilities['local7'] = LOG_LOCAL7;
- } else {
- $this->facilities['local0'] = 128; // LOG_LOCAL0
- $this->facilities['local1'] = 136; // LOG_LOCAL1
- $this->facilities['local2'] = 144; // LOG_LOCAL2
- $this->facilities['local3'] = 152; // LOG_LOCAL3
- $this->facilities['local4'] = 160; // LOG_LOCAL4
- $this->facilities['local5'] = 168; // LOG_LOCAL5
- $this->facilities['local6'] = 176; // LOG_LOCAL6
- $this->facilities['local7'] = 184; // LOG_LOCAL7
- }
-
- // convert textual description of facility to syslog constant
- if (array_key_exists(strtolower($facility), $this->facilities)) {
- $facility = $this->facilities[strtolower($facility)];
- } elseif (!in_array($facility, array_values($this->facilities), true)) {
- throw new \UnexpectedValueException('Unknown facility value "'.$facility.'" given');
- }
-
- $this->facility = $facility;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getDefaultFormatter()
- {
- return new LineFormatter('%channel%.%level_name%: %message% %context% %extra%');
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/AmqpHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/AmqpHandler.php
deleted file mode 100644
index e5a46bc0..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/AmqpHandler.php
+++ /dev/null
@@ -1,148 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Logger;
-use Monolog\Formatter\JsonFormatter;
-use PhpAmqpLib\Message\AMQPMessage;
-use PhpAmqpLib\Channel\AMQPChannel;
-use AMQPExchange;
-
-class AmqpHandler extends AbstractProcessingHandler
-{
- /**
- * @var AMQPExchange|AMQPChannel $exchange
- */
- protected $exchange;
-
- /**
- * @var string
- */
- protected $exchangeName;
-
- /**
- * @param AMQPExchange|AMQPChannel $exchange AMQPExchange (php AMQP ext) or PHP AMQP lib channel, ready for use
- * @param string $exchangeName
- * @param int $level
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- */
- public function __construct($exchange, $exchangeName = 'log', $level = Logger::DEBUG, $bubble = true)
- {
- if ($exchange instanceof AMQPExchange) {
- $exchange->setName($exchangeName);
- } elseif ($exchange instanceof AMQPChannel) {
- $this->exchangeName = $exchangeName;
- } else {
- throw new \InvalidArgumentException('PhpAmqpLib\Channel\AMQPChannel or AMQPExchange instance required');
- }
- $this->exchange = $exchange;
-
- parent::__construct($level, $bubble);
- }
-
- /**
- * {@inheritDoc}
- */
- protected function write(array $record)
- {
- $data = $record["formatted"];
- $routingKey = $this->getRoutingKey($record);
-
- if ($this->exchange instanceof AMQPExchange) {
- $this->exchange->publish(
- $data,
- $routingKey,
- 0,
- array(
- 'delivery_mode' => 2,
- 'content_type' => 'application/json',
- )
- );
- } else {
- $this->exchange->basic_publish(
- $this->createAmqpMessage($data),
- $this->exchangeName,
- $routingKey
- );
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public function handleBatch(array $records)
- {
- if ($this->exchange instanceof AMQPExchange) {
- parent::handleBatch($records);
-
- return;
- }
-
- foreach ($records as $record) {
- if (!$this->isHandling($record)) {
- continue;
- }
-
- $record = $this->processRecord($record);
- $data = $this->getFormatter()->format($record);
-
- $this->exchange->batch_basic_publish(
- $this->createAmqpMessage($data),
- $this->exchangeName,
- $this->getRoutingKey($record)
- );
- }
-
- $this->exchange->publish_batch();
- }
-
- /**
- * Gets the routing key for the AMQP exchange
- *
- * @param array $record
- * @return string
- */
- protected function getRoutingKey(array $record)
- {
- $routingKey = sprintf(
- '%s.%s',
- // TODO 2.0 remove substr call
- substr($record['level_name'], 0, 4),
- $record['channel']
- );
-
- return strtolower($routingKey);
- }
-
- /**
- * @param string $data
- * @return AMQPMessage
- */
- private function createAmqpMessage($data)
- {
- return new AMQPMessage(
- (string) $data,
- array(
- 'delivery_mode' => 2,
- 'content_type' => 'application/json',
- )
- );
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getDefaultFormatter()
- {
- return new JsonFormatter(JsonFormatter::BATCH_MODE_JSON, false);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php
deleted file mode 100644
index 68feb480..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php
+++ /dev/null
@@ -1,241 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Formatter\LineFormatter;
-
-/**
- * Handler sending logs to browser's javascript console with no browser extension required
- *
- * @author Olivier Poitrey
- */
-class BrowserConsoleHandler extends AbstractProcessingHandler
-{
- protected static $initialized = false;
- protected static $records = array();
-
- /**
- * {@inheritDoc}
- *
- * Formatted output may contain some formatting markers to be transferred to `console.log` using the %c format.
- *
- * Example of formatted string:
- *
- * You can do [[blue text]]{color: blue} or [[green background]]{background-color: green; color: white}
- */
- protected function getDefaultFormatter()
- {
- return new LineFormatter('[[%channel%]]{macro: autolabel} [[%level_name%]]{font-weight: bold} %message%');
- }
-
- /**
- * {@inheritDoc}
- */
- protected function write(array $record)
- {
- // Accumulate records
- static::$records[] = $record;
-
- // Register shutdown handler if not already done
- if (!static::$initialized) {
- static::$initialized = true;
- $this->registerShutdownFunction();
- }
- }
-
- /**
- * Convert records to javascript console commands and send it to the browser.
- * This method is automatically called on PHP shutdown if output is HTML or Javascript.
- */
- public static function send()
- {
- $format = static::getResponseFormat();
- if ($format === 'unknown') {
- return;
- }
-
- if (count(static::$records)) {
- if ($format === 'html') {
- static::writeOutput('');
- } elseif ($format === 'js') {
- static::writeOutput(static::generateScript());
- }
- static::resetStatic();
- }
- }
-
- public function close()
- {
- self::resetStatic();
- }
-
- public function reset()
- {
- self::resetStatic();
- }
-
- /**
- * Forget all logged records
- */
- public static function resetStatic()
- {
- static::$records = array();
- }
-
- /**
- * Wrapper for register_shutdown_function to allow overriding
- */
- protected function registerShutdownFunction()
- {
- if (PHP_SAPI !== 'cli') {
- register_shutdown_function(array('Monolog\Handler\BrowserConsoleHandler', 'send'));
- }
- }
-
- /**
- * Wrapper for echo to allow overriding
- *
- * @param string $str
- */
- protected static function writeOutput($str)
- {
- echo $str;
- }
-
- /**
- * Checks the format of the response
- *
- * If Content-Type is set to application/javascript or text/javascript -> js
- * If Content-Type is set to text/html, or is unset -> html
- * If Content-Type is anything else -> unknown
- *
- * @return string One of 'js', 'html' or 'unknown'
- */
- protected static function getResponseFormat()
- {
- // Check content type
- foreach (headers_list() as $header) {
- if (stripos($header, 'content-type:') === 0) {
- // This handler only works with HTML and javascript outputs
- // text/javascript is obsolete in favour of application/javascript, but still used
- if (stripos($header, 'application/javascript') !== false || stripos($header, 'text/javascript') !== false) {
- return 'js';
- }
- if (stripos($header, 'text/html') === false) {
- return 'unknown';
- }
- break;
- }
- }
-
- return 'html';
- }
-
- private static function generateScript()
- {
- $script = array();
- foreach (static::$records as $record) {
- $context = static::dump('Context', $record['context']);
- $extra = static::dump('Extra', $record['extra']);
-
- if (empty($context) && empty($extra)) {
- $script[] = static::call_array('log', static::handleStyles($record['formatted']));
- } else {
- $script = array_merge($script,
- array(static::call_array('groupCollapsed', static::handleStyles($record['formatted']))),
- $context,
- $extra,
- array(static::call('groupEnd'))
- );
- }
- }
-
- return "(function (c) {if (c && c.groupCollapsed) {\n" . implode("\n", $script) . "\n}})(console);";
- }
-
- private static function handleStyles($formatted)
- {
- $args = array();
- $format = '%c' . $formatted;
- preg_match_all('/\[\[(.*?)\]\]\{([^}]*)\}/s', $format, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER);
-
- foreach (array_reverse($matches) as $match) {
- $args[] = '"font-weight: normal"';
- $args[] = static::quote(static::handleCustomStyles($match[2][0], $match[1][0]));
-
- $pos = $match[0][1];
- $format = substr($format, 0, $pos) . '%c' . $match[1][0] . '%c' . substr($format, $pos + strlen($match[0][0]));
- }
-
- $args[] = static::quote('font-weight: normal');
- $args[] = static::quote($format);
-
- return array_reverse($args);
- }
-
- private static function handleCustomStyles($style, $string)
- {
- static $colors = array('blue', 'green', 'red', 'magenta', 'orange', 'black', 'grey');
- static $labels = array();
-
- return preg_replace_callback('/macro\s*:(.*?)(?:;|$)/', function ($m) use ($string, &$colors, &$labels) {
- if (trim($m[1]) === 'autolabel') {
- // Format the string as a label with consistent auto assigned background color
- if (!isset($labels[$string])) {
- $labels[$string] = $colors[count($labels) % count($colors)];
- }
- $color = $labels[$string];
-
- return "background-color: $color; color: white; border-radius: 3px; padding: 0 2px 0 2px";
- }
-
- return $m[1];
- }, $style);
- }
-
- private static function dump($title, array $dict)
- {
- $script = array();
- $dict = array_filter($dict);
- if (empty($dict)) {
- return $script;
- }
- $script[] = static::call('log', static::quote('%c%s'), static::quote('font-weight: bold'), static::quote($title));
- foreach ($dict as $key => $value) {
- $value = json_encode($value);
- if (empty($value)) {
- $value = static::quote('');
- }
- $script[] = static::call('log', static::quote('%s: %o'), static::quote($key), $value);
- }
-
- return $script;
- }
-
- private static function quote($arg)
- {
- return '"' . addcslashes($arg, "\"\n\\") . '"';
- }
-
- private static function call()
- {
- $args = func_get_args();
- $method = array_shift($args);
-
- return static::call_array($method, $args);
- }
-
- private static function call_array($method, array $args)
- {
- return 'c.' . $method . '(' . implode(', ', $args) . ');';
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/BufferHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/BufferHandler.php
deleted file mode 100644
index 0957e558..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/BufferHandler.php
+++ /dev/null
@@ -1,148 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Logger;
-use Monolog\ResettableInterface;
-use Monolog\Formatter\FormatterInterface;
-
-/**
- * Buffers all records until closing the handler and then pass them as batch.
- *
- * This is useful for a MailHandler to send only one mail per request instead of
- * sending one per log message.
- *
- * @author Christophe Coevoet
- */
-class BufferHandler extends AbstractHandler
-{
- protected $handler;
- protected $bufferSize = 0;
- protected $bufferLimit;
- protected $flushOnOverflow;
- protected $buffer = array();
- protected $initialized = false;
-
- /**
- * @param HandlerInterface $handler Handler.
- * @param int $bufferLimit How many entries should be buffered at most, beyond that the oldest items are removed from the buffer.
- * @param int $level The minimum logging level at which this handler will be triggered
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- * @param bool $flushOnOverflow If true, the buffer is flushed when the max size has been reached, by default oldest entries are discarded
- */
- public function __construct(HandlerInterface $handler, $bufferLimit = 0, $level = Logger::DEBUG, $bubble = true, $flushOnOverflow = false)
- {
- parent::__construct($level, $bubble);
- $this->handler = $handler;
- $this->bufferLimit = (int) $bufferLimit;
- $this->flushOnOverflow = $flushOnOverflow;
- }
-
- /**
- * {@inheritdoc}
- */
- public function handle(array $record)
- {
- if ($record['level'] < $this->level) {
- return false;
- }
-
- if (!$this->initialized) {
- // __destructor() doesn't get called on Fatal errors
- register_shutdown_function(array($this, 'close'));
- $this->initialized = true;
- }
-
- if ($this->bufferLimit > 0 && $this->bufferSize === $this->bufferLimit) {
- if ($this->flushOnOverflow) {
- $this->flush();
- } else {
- array_shift($this->buffer);
- $this->bufferSize--;
- }
- }
-
- if ($this->processors) {
- foreach ($this->processors as $processor) {
- $record = call_user_func($processor, $record);
- }
- }
-
- $this->buffer[] = $record;
- $this->bufferSize++;
-
- return false === $this->bubble;
- }
-
- public function flush()
- {
- if ($this->bufferSize === 0) {
- return;
- }
-
- $this->handler->handleBatch($this->buffer);
- $this->clear();
- }
-
- public function __destruct()
- {
- // suppress the parent behavior since we already have register_shutdown_function()
- // to call close(), and the reference contained there will prevent this from being
- // GC'd until the end of the request
- }
-
- /**
- * {@inheritdoc}
- */
- public function close()
- {
- $this->flush();
- }
-
- /**
- * Clears the buffer without flushing any messages down to the wrapped handler.
- */
- public function clear()
- {
- $this->bufferSize = 0;
- $this->buffer = array();
- }
-
- public function reset()
- {
- $this->flush();
-
- parent::reset();
-
- if ($this->handler instanceof ResettableInterface) {
- $this->handler->reset();
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function setFormatter(FormatterInterface $formatter)
- {
- $this->handler->setFormatter($formatter);
-
- return $this;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getFormatter()
- {
- return $this->handler->getFormatter();
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php
deleted file mode 100644
index 47120e54..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php
+++ /dev/null
@@ -1,212 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Formatter\ChromePHPFormatter;
-use Monolog\Logger;
-use Monolog\Utils;
-
-/**
- * Handler sending logs to the ChromePHP extension (http://www.chromephp.com/)
- *
- * This also works out of the box with Firefox 43+
- *
- * @author Christophe Coevoet
- */
-class ChromePHPHandler extends AbstractProcessingHandler
-{
- /**
- * Version of the extension
- */
- const VERSION = '4.0';
-
- /**
- * Header name
- */
- const HEADER_NAME = 'X-ChromeLogger-Data';
-
- /**
- * Regular expression to detect supported browsers (matches any Chrome, or Firefox 43+)
- */
- const USER_AGENT_REGEX = '{\b(?:Chrome/\d+(?:\.\d+)*|HeadlessChrome|Firefox/(?:4[3-9]|[5-9]\d|\d{3,})(?:\.\d)*)\b}';
-
- protected static $initialized = false;
-
- /**
- * Tracks whether we sent too much data
- *
- * Chrome limits the headers to 4KB, so when we sent 3KB we stop sending
- *
- * @var bool
- */
- protected static $overflowed = false;
-
- protected static $json = array(
- 'version' => self::VERSION,
- 'columns' => array('label', 'log', 'backtrace', 'type'),
- 'rows' => array(),
- );
-
- protected static $sendHeaders = true;
-
- /**
- * @param int $level The minimum logging level at which this handler will be triggered
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- */
- public function __construct($level = Logger::DEBUG, $bubble = true)
- {
- parent::__construct($level, $bubble);
- if (!function_exists('json_encode')) {
- throw new \RuntimeException('PHP\'s json extension is required to use Monolog\'s ChromePHPHandler');
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function handleBatch(array $records)
- {
- $messages = array();
-
- foreach ($records as $record) {
- if ($record['level'] < $this->level) {
- continue;
- }
- $messages[] = $this->processRecord($record);
- }
-
- if (!empty($messages)) {
- $messages = $this->getFormatter()->formatBatch($messages);
- self::$json['rows'] = array_merge(self::$json['rows'], $messages);
- $this->send();
- }
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getDefaultFormatter()
- {
- return new ChromePHPFormatter();
- }
-
- /**
- * Creates & sends header for a record
- *
- * @see sendHeader()
- * @see send()
- * @param array $record
- */
- protected function write(array $record)
- {
- self::$json['rows'][] = $record['formatted'];
-
- $this->send();
- }
-
- /**
- * Sends the log header
- *
- * @see sendHeader()
- */
- protected function send()
- {
- if (self::$overflowed || !self::$sendHeaders) {
- return;
- }
-
- if (!self::$initialized) {
- self::$initialized = true;
-
- self::$sendHeaders = $this->headersAccepted();
- if (!self::$sendHeaders) {
- return;
- }
-
- self::$json['request_uri'] = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';
- }
-
- $json = Utils::jsonEncode(self::$json, null, true);
- $data = base64_encode(utf8_encode($json));
- if (strlen($data) > 3 * 1024) {
- self::$overflowed = true;
-
- $record = array(
- 'message' => 'Incomplete logs, chrome header size limit reached',
- 'context' => array(),
- 'level' => Logger::WARNING,
- 'level_name' => Logger::getLevelName(Logger::WARNING),
- 'channel' => 'monolog',
- 'datetime' => new \DateTime(),
- 'extra' => array(),
- );
- self::$json['rows'][count(self::$json['rows']) - 1] = $this->getFormatter()->format($record);
- $json = Utils::jsonEncode(self::$json, null, true);
- $data = base64_encode(utf8_encode($json));
- }
-
- if (trim($data) !== '') {
- $this->sendHeader(self::HEADER_NAME, $data);
- }
- }
-
- /**
- * Send header string to the client
- *
- * @param string $header
- * @param string $content
- */
- protected function sendHeader($header, $content)
- {
- if (!headers_sent() && self::$sendHeaders) {
- header(sprintf('%s: %s', $header, $content));
- }
- }
-
- /**
- * Verifies if the headers are accepted by the current user agent
- *
- * @return bool
- */
- protected function headersAccepted()
- {
- if (empty($_SERVER['HTTP_USER_AGENT'])) {
- return false;
- }
-
- return preg_match(self::USER_AGENT_REGEX, $_SERVER['HTTP_USER_AGENT']);
- }
-
- /**
- * BC getter for the sendHeaders property that has been made static
- */
- public function __get($property)
- {
- if ('sendHeaders' !== $property) {
- throw new \InvalidArgumentException('Undefined property '.$property);
- }
-
- return static::$sendHeaders;
- }
-
- /**
- * BC setter for the sendHeaders property that has been made static
- */
- public function __set($property, $value)
- {
- if ('sendHeaders' !== $property) {
- throw new \InvalidArgumentException('Undefined property '.$property);
- }
-
- static::$sendHeaders = $value;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php
deleted file mode 100644
index cc986971..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php
+++ /dev/null
@@ -1,72 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Formatter\JsonFormatter;
-use Monolog\Logger;
-
-/**
- * CouchDB handler
- *
- * @author Markus Bachmann
- */
-class CouchDBHandler extends AbstractProcessingHandler
-{
- private $options;
-
- public function __construct(array $options = array(), $level = Logger::DEBUG, $bubble = true)
- {
- $this->options = array_merge(array(
- 'host' => 'localhost',
- 'port' => 5984,
- 'dbname' => 'logger',
- 'username' => null,
- 'password' => null,
- ), $options);
-
- parent::__construct($level, $bubble);
- }
-
- /**
- * {@inheritDoc}
- */
- protected function write(array $record)
- {
- $basicAuth = null;
- if ($this->options['username']) {
- $basicAuth = sprintf('%s:%s@', $this->options['username'], $this->options['password']);
- }
-
- $url = 'http://'.$basicAuth.$this->options['host'].':'.$this->options['port'].'/'.$this->options['dbname'];
- $context = stream_context_create(array(
- 'http' => array(
- 'method' => 'POST',
- 'content' => $record['formatted'],
- 'ignore_errors' => true,
- 'max_redirects' => 0,
- 'header' => 'Content-type: application/json',
- ),
- ));
-
- if (false === @file_get_contents($url, null, $context)) {
- throw new \RuntimeException(sprintf('Could not connect to %s', $url));
- }
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getDefaultFormatter()
- {
- return new JsonFormatter(JsonFormatter::BATCH_MODE_JSON, false);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/CubeHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/CubeHandler.php
deleted file mode 100644
index 44928efb..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/CubeHandler.php
+++ /dev/null
@@ -1,152 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Logger;
-use Monolog\Utils;
-
-/**
- * Logs to Cube.
- *
- * @link http://square.github.com/cube/
- * @author Wan Chen
- */
-class CubeHandler extends AbstractProcessingHandler
-{
- private $udpConnection;
- private $httpConnection;
- private $scheme;
- private $host;
- private $port;
- private $acceptedSchemes = array('http', 'udp');
-
- /**
- * Create a Cube handler
- *
- * @throws \UnexpectedValueException when given url is not a valid url.
- * A valid url must consist of three parts : protocol://host:port
- * Only valid protocols used by Cube are http and udp
- */
- public function __construct($url, $level = Logger::DEBUG, $bubble = true)
- {
- $urlInfo = parse_url($url);
-
- if (!isset($urlInfo['scheme'], $urlInfo['host'], $urlInfo['port'])) {
- throw new \UnexpectedValueException('URL "'.$url.'" is not valid');
- }
-
- if (!in_array($urlInfo['scheme'], $this->acceptedSchemes)) {
- throw new \UnexpectedValueException(
- 'Invalid protocol (' . $urlInfo['scheme'] . ').'
- . ' Valid options are ' . implode(', ', $this->acceptedSchemes));
- }
-
- $this->scheme = $urlInfo['scheme'];
- $this->host = $urlInfo['host'];
- $this->port = $urlInfo['port'];
-
- parent::__construct($level, $bubble);
- }
-
- /**
- * Establish a connection to an UDP socket
- *
- * @throws \LogicException when unable to connect to the socket
- * @throws MissingExtensionException when there is no socket extension
- */
- protected function connectUdp()
- {
- if (!extension_loaded('sockets')) {
- throw new MissingExtensionException('The sockets extension is required to use udp URLs with the CubeHandler');
- }
-
- $this->udpConnection = socket_create(AF_INET, SOCK_DGRAM, 0);
- if (!$this->udpConnection) {
- throw new \LogicException('Unable to create a socket');
- }
-
- if (!socket_connect($this->udpConnection, $this->host, $this->port)) {
- throw new \LogicException('Unable to connect to the socket at ' . $this->host . ':' . $this->port);
- }
- }
-
- /**
- * Establish a connection to a http server
- * @throws \LogicException when no curl extension
- */
- protected function connectHttp()
- {
- if (!extension_loaded('curl')) {
- throw new \LogicException('The curl extension is needed to use http URLs with the CubeHandler');
- }
-
- $this->httpConnection = curl_init('http://'.$this->host.':'.$this->port.'/1.0/event/put');
-
- if (!$this->httpConnection) {
- throw new \LogicException('Unable to connect to ' . $this->host . ':' . $this->port);
- }
-
- curl_setopt($this->httpConnection, CURLOPT_CUSTOMREQUEST, "POST");
- curl_setopt($this->httpConnection, CURLOPT_RETURNTRANSFER, true);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function write(array $record)
- {
- $date = $record['datetime'];
-
- $data = array('time' => $date->format('Y-m-d\TH:i:s.uO'));
- unset($record['datetime']);
-
- if (isset($record['context']['type'])) {
- $data['type'] = $record['context']['type'];
- unset($record['context']['type']);
- } else {
- $data['type'] = $record['channel'];
- }
-
- $data['data'] = $record['context'];
- $data['data']['level'] = $record['level'];
-
- if ($this->scheme === 'http') {
- $this->writeHttp(Utils::jsonEncode($data));
- } else {
- $this->writeUdp(Utils::jsonEncode($data));
- }
- }
-
- private function writeUdp($data)
- {
- if (!$this->udpConnection) {
- $this->connectUdp();
- }
-
- socket_send($this->udpConnection, $data, strlen($data), 0);
- }
-
- private function writeHttp($data)
- {
- if (!$this->httpConnection) {
- $this->connectHttp();
- }
-
- curl_setopt($this->httpConnection, CURLOPT_POSTFIELDS, '['.$data.']');
- curl_setopt($this->httpConnection, CURLOPT_HTTPHEADER, array(
- 'Content-Type: application/json',
- 'Content-Length: ' . strlen('['.$data.']'),
- ));
-
- Curl\Util::execute($this->httpConnection, 5, false);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/Curl/Util.php b/vendor/monolog/monolog/src/Monolog/Handler/Curl/Util.php
deleted file mode 100644
index 48d30b35..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/Curl/Util.php
+++ /dev/null
@@ -1,57 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler\Curl;
-
-class Util
-{
- private static $retriableErrorCodes = array(
- CURLE_COULDNT_RESOLVE_HOST,
- CURLE_COULDNT_CONNECT,
- CURLE_HTTP_NOT_FOUND,
- CURLE_READ_ERROR,
- CURLE_OPERATION_TIMEOUTED,
- CURLE_HTTP_POST_ERROR,
- CURLE_SSL_CONNECT_ERROR,
- );
-
- /**
- * Executes a CURL request with optional retries and exception on failure
- *
- * @param resource $ch curl handler
- * @throws \RuntimeException
- */
- public static function execute($ch, $retries = 5, $closeAfterDone = true)
- {
- while ($retries--) {
- if (curl_exec($ch) === false) {
- $curlErrno = curl_errno($ch);
-
- if (false === in_array($curlErrno, self::$retriableErrorCodes, true) || !$retries) {
- $curlError = curl_error($ch);
-
- if ($closeAfterDone) {
- curl_close($ch);
- }
-
- throw new \RuntimeException(sprintf('Curl error (code %s): %s', $curlErrno, $curlError));
- }
-
- continue;
- }
-
- if ($closeAfterDone) {
- curl_close($ch);
- }
- break;
- }
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php
deleted file mode 100644
index 35b55cb4..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php
+++ /dev/null
@@ -1,169 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Logger;
-
-/**
- * Simple handler wrapper that deduplicates log records across multiple requests
- *
- * It also includes the BufferHandler functionality and will buffer
- * all messages until the end of the request or flush() is called.
- *
- * This works by storing all log records' messages above $deduplicationLevel
- * to the file specified by $deduplicationStore. When further logs come in at the end of the
- * request (or when flush() is called), all those above $deduplicationLevel are checked
- * against the existing stored logs. If they match and the timestamps in the stored log is
- * not older than $time seconds, the new log record is discarded. If no log record is new, the
- * whole data set is discarded.
- *
- * This is mainly useful in combination with Mail handlers or things like Slack or HipChat handlers
- * that send messages to people, to avoid spamming with the same message over and over in case of
- * a major component failure like a database server being down which makes all requests fail in the
- * same way.
- *
- * @author Jordi Boggiano
- */
-class DeduplicationHandler extends BufferHandler
-{
- /**
- * @var string
- */
- protected $deduplicationStore;
-
- /**
- * @var int
- */
- protected $deduplicationLevel;
-
- /**
- * @var int
- */
- protected $time;
-
- /**
- * @var bool
- */
- private $gc = false;
-
- /**
- * @param HandlerInterface $handler Handler.
- * @param string $deduplicationStore The file/path where the deduplication log should be kept
- * @param int $deduplicationLevel The minimum logging level for log records to be looked at for deduplication purposes
- * @param int $time The period (in seconds) during which duplicate entries should be suppressed after a given log is sent through
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- */
- public function __construct(HandlerInterface $handler, $deduplicationStore = null, $deduplicationLevel = Logger::ERROR, $time = 60, $bubble = true)
- {
- parent::__construct($handler, 0, Logger::DEBUG, $bubble, false);
-
- $this->deduplicationStore = $deduplicationStore === null ? sys_get_temp_dir() . '/monolog-dedup-' . substr(md5(__FILE__), 0, 20) .'.log' : $deduplicationStore;
- $this->deduplicationLevel = Logger::toMonologLevel($deduplicationLevel);
- $this->time = $time;
- }
-
- public function flush()
- {
- if ($this->bufferSize === 0) {
- return;
- }
-
- $passthru = null;
-
- foreach ($this->buffer as $record) {
- if ($record['level'] >= $this->deduplicationLevel) {
-
- $passthru = $passthru || !$this->isDuplicate($record);
- if ($passthru) {
- $this->appendRecord($record);
- }
- }
- }
-
- // default of null is valid as well as if no record matches duplicationLevel we just pass through
- if ($passthru === true || $passthru === null) {
- $this->handler->handleBatch($this->buffer);
- }
-
- $this->clear();
-
- if ($this->gc) {
- $this->collectLogs();
- }
- }
-
- private function isDuplicate(array $record)
- {
- if (!file_exists($this->deduplicationStore)) {
- return false;
- }
-
- $store = file($this->deduplicationStore, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
- if (!is_array($store)) {
- return false;
- }
-
- $yesterday = time() - 86400;
- $timestampValidity = $record['datetime']->getTimestamp() - $this->time;
- $expectedMessage = preg_replace('{[\r\n].*}', '', $record['message']);
-
- for ($i = count($store) - 1; $i >= 0; $i--) {
- list($timestamp, $level, $message) = explode(':', $store[$i], 3);
-
- if ($level === $record['level_name'] && $message === $expectedMessage && $timestamp > $timestampValidity) {
- return true;
- }
-
- if ($timestamp < $yesterday) {
- $this->gc = true;
- }
- }
-
- return false;
- }
-
- private function collectLogs()
- {
- if (!file_exists($this->deduplicationStore)) {
- return false;
- }
-
- $handle = fopen($this->deduplicationStore, 'rw+');
- flock($handle, LOCK_EX);
- $validLogs = array();
-
- $timestampValidity = time() - $this->time;
-
- while (!feof($handle)) {
- $log = fgets($handle);
- if (substr($log, 0, 10) >= $timestampValidity) {
- $validLogs[] = $log;
- }
- }
-
- ftruncate($handle, 0);
- rewind($handle);
- foreach ($validLogs as $log) {
- fwrite($handle, $log);
- }
-
- flock($handle, LOCK_UN);
- fclose($handle);
-
- $this->gc = false;
- }
-
- private function appendRecord(array $record)
- {
- file_put_contents($this->deduplicationStore, $record['datetime']->getTimestamp() . ':' . $record['level_name'] . ':' . preg_replace('{[\r\n].*}', '', $record['message']) . "\n", FILE_APPEND);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php
deleted file mode 100644
index b91ffec9..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php
+++ /dev/null
@@ -1,45 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Logger;
-use Monolog\Formatter\NormalizerFormatter;
-use Doctrine\CouchDB\CouchDBClient;
-
-/**
- * CouchDB handler for Doctrine CouchDB ODM
- *
- * @author Markus Bachmann
- */
-class DoctrineCouchDBHandler extends AbstractProcessingHandler
-{
- private $client;
-
- public function __construct(CouchDBClient $client, $level = Logger::DEBUG, $bubble = true)
- {
- $this->client = $client;
- parent::__construct($level, $bubble);
- }
-
- /**
- * {@inheritDoc}
- */
- protected function write(array $record)
- {
- $this->client->postDocument($record['formatted']);
- }
-
- protected function getDefaultFormatter()
- {
- return new NormalizerFormatter;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php
deleted file mode 100644
index 8846e0a0..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php
+++ /dev/null
@@ -1,108 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Aws\Sdk;
-use Aws\DynamoDb\DynamoDbClient;
-use Aws\DynamoDb\Marshaler;
-use Monolog\Formatter\ScalarFormatter;
-use Monolog\Logger;
-
-/**
- * Amazon DynamoDB handler (http://aws.amazon.com/dynamodb/)
- *
- * @link https://github.com/aws/aws-sdk-php/
- * @author Andrew Lawson
- */
-class DynamoDbHandler extends AbstractProcessingHandler
-{
- const DATE_FORMAT = 'Y-m-d\TH:i:s.uO';
-
- /**
- * @var DynamoDbClient
- */
- protected $client;
-
- /**
- * @var string
- */
- protected $table;
-
- /**
- * @var int
- */
- protected $version;
-
- /**
- * @var Marshaler
- */
- protected $marshaler;
-
- /**
- * @param DynamoDbClient $client
- * @param string $table
- * @param int $level
- * @param bool $bubble
- */
- public function __construct(DynamoDbClient $client, $table, $level = Logger::DEBUG, $bubble = true)
- {
- if (defined('Aws\Sdk::VERSION') && version_compare(Sdk::VERSION, '3.0', '>=')) {
- $this->version = 3;
- $this->marshaler = new Marshaler;
- } else {
- $this->version = 2;
- }
-
- $this->client = $client;
- $this->table = $table;
-
- parent::__construct($level, $bubble);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function write(array $record)
- {
- $filtered = $this->filterEmptyFields($record['formatted']);
- if ($this->version === 3) {
- $formatted = $this->marshaler->marshalItem($filtered);
- } else {
- /** @phpstan-ignore-next-line */
- $formatted = $this->client->formatAttributes($filtered);
- }
-
- $this->client->putItem(array(
- 'TableName' => $this->table,
- 'Item' => $formatted,
- ));
- }
-
- /**
- * @param array $record
- * @return array
- */
- protected function filterEmptyFields(array $record)
- {
- return array_filter($record, function ($value) {
- return !empty($value) || false === $value || 0 === $value;
- });
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getDefaultFormatter()
- {
- return new ScalarFormatter(self::DATE_FORMAT);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/ElasticSearchHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/ElasticSearchHandler.php
deleted file mode 100644
index bb0f83eb..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/ElasticSearchHandler.php
+++ /dev/null
@@ -1,128 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Formatter\FormatterInterface;
-use Monolog\Formatter\ElasticaFormatter;
-use Monolog\Logger;
-use Elastica\Client;
-use Elastica\Exception\ExceptionInterface;
-
-/**
- * Elastic Search handler
- *
- * Usage example:
- *
- * $client = new \Elastica\Client();
- * $options = array(
- * 'index' => 'elastic_index_name',
- * 'type' => 'elastic_doc_type',
- * );
- * $handler = new ElasticSearchHandler($client, $options);
- * $log = new Logger('application');
- * $log->pushHandler($handler);
- *
- * @author Jelle Vink
- */
-class ElasticSearchHandler extends AbstractProcessingHandler
-{
- /**
- * @var Client
- */
- protected $client;
-
- /**
- * @var array Handler config options
- */
- protected $options = array();
-
- /**
- * @param Client $client Elastica Client object
- * @param array $options Handler configuration
- * @param int $level The minimum logging level at which this handler will be triggered
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- */
- public function __construct(Client $client, array $options = array(), $level = Logger::DEBUG, $bubble = true)
- {
- parent::__construct($level, $bubble);
- $this->client = $client;
- $this->options = array_merge(
- array(
- 'index' => 'monolog', // Elastic index name
- 'type' => 'record', // Elastic document type
- 'ignore_error' => false, // Suppress Elastica exceptions
- ),
- $options
- );
- }
-
- /**
- * {@inheritDoc}
- */
- protected function write(array $record)
- {
- $this->bulkSend(array($record['formatted']));
- }
-
- /**
- * {@inheritdoc}
- */
- public function setFormatter(FormatterInterface $formatter)
- {
- if ($formatter instanceof ElasticaFormatter) {
- return parent::setFormatter($formatter);
- }
- throw new \InvalidArgumentException('ElasticSearchHandler is only compatible with ElasticaFormatter');
- }
-
- /**
- * Getter options
- * @return array
- */
- public function getOptions()
- {
- return $this->options;
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getDefaultFormatter()
- {
- return new ElasticaFormatter($this->options['index'], $this->options['type']);
- }
-
- /**
- * {@inheritdoc}
- */
- public function handleBatch(array $records)
- {
- $documents = $this->getFormatter()->formatBatch($records);
- $this->bulkSend($documents);
- }
-
- /**
- * Use Elasticsearch bulk API to send list of documents
- * @param array $documents
- * @throws \RuntimeException
- */
- protected function bulkSend(array $documents)
- {
- try {
- $this->client->addDocuments($documents);
- } catch (ExceptionInterface $e) {
- if (!$this->options['ignore_error']) {
- throw new \RuntimeException("Error sending messages to Elasticsearch", 0, $e);
- }
- }
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php
deleted file mode 100644
index b2986b0f..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php
+++ /dev/null
@@ -1,82 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Formatter\LineFormatter;
-use Monolog\Logger;
-
-/**
- * Stores to PHP error_log() handler.
- *
- * @author Elan Ruusamäe
- */
-class ErrorLogHandler extends AbstractProcessingHandler
-{
- const OPERATING_SYSTEM = 0;
- const SAPI = 4;
-
- protected $messageType;
- protected $expandNewlines;
-
- /**
- * @param int $messageType Says where the error should go.
- * @param int $level The minimum logging level at which this handler will be triggered
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- * @param bool $expandNewlines If set to true, newlines in the message will be expanded to be take multiple log entries
- */
- public function __construct($messageType = self::OPERATING_SYSTEM, $level = Logger::DEBUG, $bubble = true, $expandNewlines = false)
- {
- parent::__construct($level, $bubble);
-
- if (false === in_array($messageType, self::getAvailableTypes())) {
- $message = sprintf('The given message type "%s" is not supported', print_r($messageType, true));
- throw new \InvalidArgumentException($message);
- }
-
- $this->messageType = $messageType;
- $this->expandNewlines = $expandNewlines;
- }
-
- /**
- * @return array With all available types
- */
- public static function getAvailableTypes()
- {
- return array(
- self::OPERATING_SYSTEM,
- self::SAPI,
- );
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getDefaultFormatter()
- {
- return new LineFormatter('[%datetime%] %channel%.%level_name%: %message% %context% %extra%');
- }
-
- /**
- * {@inheritdoc}
- */
- protected function write(array $record)
- {
- if ($this->expandNewlines) {
- $lines = preg_split('{[\r\n]+}', (string) $record['formatted']);
- foreach ($lines as $line) {
- error_log($line, $this->messageType);
- }
- } else {
- error_log((string) $record['formatted'], $this->messageType);
- }
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php
deleted file mode 100644
index 949f2271..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php
+++ /dev/null
@@ -1,172 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Logger;
-use Monolog\Formatter\FormatterInterface;
-
-/**
- * Simple handler wrapper that filters records based on a list of levels
- *
- * It can be configured with an exact list of levels to allow, or a min/max level.
- *
- * @author Hennadiy Verkh
- * @author Jordi Boggiano
- */
-class FilterHandler extends AbstractHandler
-{
- /**
- * Handler or factory callable($record, $this)
- *
- * @var callable|\Monolog\Handler\HandlerInterface
- */
- protected $handler;
-
- /**
- * Minimum level for logs that are passed to handler
- *
- * @var int[]
- */
- protected $acceptedLevels;
-
- /**
- * Whether the messages that are handled can bubble up the stack or not
- *
- * @var bool
- */
- protected $bubble;
-
- /**
- * @param callable|HandlerInterface $handler Handler or factory callable($record|null, $filterHandler).
- * @param int|array $minLevelOrList A list of levels to accept or a minimum level if maxLevel is provided
- * @param int $maxLevel Maximum level to accept, only used if $minLevelOrList is not an array
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- */
- public function __construct($handler, $minLevelOrList = Logger::DEBUG, $maxLevel = Logger::EMERGENCY, $bubble = true)
- {
- $this->handler = $handler;
- $this->bubble = $bubble;
- $this->setAcceptedLevels($minLevelOrList, $maxLevel);
-
- if (!$this->handler instanceof HandlerInterface && !is_callable($this->handler)) {
- throw new \RuntimeException("The given handler (".json_encode($this->handler).") is not a callable nor a Monolog\Handler\HandlerInterface object");
- }
- }
-
- /**
- * @return array
- */
- public function getAcceptedLevels()
- {
- return array_flip($this->acceptedLevels);
- }
-
- /**
- * @param int|string|array $minLevelOrList A list of levels to accept or a minimum level or level name if maxLevel is provided
- * @param int|string $maxLevel Maximum level or level name to accept, only used if $minLevelOrList is not an array
- */
- public function setAcceptedLevels($minLevelOrList = Logger::DEBUG, $maxLevel = Logger::EMERGENCY)
- {
- if (is_array($minLevelOrList)) {
- $acceptedLevels = array_map('Monolog\Logger::toMonologLevel', $minLevelOrList);
- } else {
- $minLevelOrList = Logger::toMonologLevel($minLevelOrList);
- $maxLevel = Logger::toMonologLevel($maxLevel);
- $acceptedLevels = array_values(array_filter(Logger::getLevels(), function ($level) use ($minLevelOrList, $maxLevel) {
- return $level >= $minLevelOrList && $level <= $maxLevel;
- }));
- }
- $this->acceptedLevels = array_flip($acceptedLevels);
- }
-
- /**
- * {@inheritdoc}
- */
- public function isHandling(array $record)
- {
- return isset($this->acceptedLevels[$record['level']]);
- }
-
- /**
- * {@inheritdoc}
- */
- public function handle(array $record)
- {
- if (!$this->isHandling($record)) {
- return false;
- }
-
- if ($this->processors) {
- foreach ($this->processors as $processor) {
- $record = call_user_func($processor, $record);
- }
- }
-
- $this->getHandler($record)->handle($record);
-
- return false === $this->bubble;
- }
-
- /**
- * {@inheritdoc}
- */
- public function handleBatch(array $records)
- {
- $filtered = array();
- foreach ($records as $record) {
- if ($this->isHandling($record)) {
- $filtered[] = $record;
- }
- }
-
- if (count($filtered) > 0) {
- $this->getHandler($filtered[count($filtered) - 1])->handleBatch($filtered);
- }
- }
-
- /**
- * Return the nested handler
- *
- * If the handler was provided as a factory callable, this will trigger the handler's instantiation.
- *
- * @return HandlerInterface
- */
- public function getHandler(array $record = null)
- {
- if (!$this->handler instanceof HandlerInterface) {
- $this->handler = call_user_func($this->handler, $record, $this);
- if (!$this->handler instanceof HandlerInterface) {
- throw new \RuntimeException("The factory callable should return a HandlerInterface");
- }
- }
-
- return $this->handler;
- }
-
- /**
- * {@inheritdoc}
- */
- public function setFormatter(FormatterInterface $formatter)
- {
- $this->getHandler()->setFormatter($formatter);
-
- return $this;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getFormatter()
- {
- return $this->getHandler()->getFormatter();
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php b/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php
deleted file mode 100644
index aaca12cc..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler\FingersCrossed;
-
-/**
- * Interface for activation strategies for the FingersCrossedHandler.
- *
- * @author Johannes M. Schmitt
- */
-interface ActivationStrategyInterface
-{
- /**
- * Returns whether the given record activates the handler.
- *
- * @param array $record
- * @return bool
- */
- public function isHandlerActivated(array $record);
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php b/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php
deleted file mode 100644
index 2a2a64d9..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php
+++ /dev/null
@@ -1,59 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler\FingersCrossed;
-
-use Monolog\Logger;
-
-/**
- * Channel and Error level based monolog activation strategy. Allows to trigger activation
- * based on level per channel. e.g. trigger activation on level 'ERROR' by default, except
- * for records of the 'sql' channel; those should trigger activation on level 'WARN'.
- *
- * Example:
- *
- *
- * $activationStrategy = new ChannelLevelActivationStrategy(
- * Logger::CRITICAL,
- * array(
- * 'request' => Logger::ALERT,
- * 'sensitive' => Logger::ERROR,
- * )
- * );
- * $handler = new FingersCrossedHandler(new StreamHandler('php://stderr'), $activationStrategy);
- *
- *
- * @author Mike Meessen
- */
-class ChannelLevelActivationStrategy implements ActivationStrategyInterface
-{
- private $defaultActionLevel;
- private $channelToActionLevel;
-
- /**
- * @param int $defaultActionLevel The default action level to be used if the record's category doesn't match any
- * @param array $channelToActionLevel An array that maps channel names to action levels.
- */
- public function __construct($defaultActionLevel, $channelToActionLevel = array())
- {
- $this->defaultActionLevel = Logger::toMonologLevel($defaultActionLevel);
- $this->channelToActionLevel = array_map('Monolog\Logger::toMonologLevel', $channelToActionLevel);
- }
-
- public function isHandlerActivated(array $record)
- {
- if (isset($this->channelToActionLevel[$record['channel']])) {
- return $record['level'] >= $this->channelToActionLevel[$record['channel']];
- }
-
- return $record['level'] >= $this->defaultActionLevel;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php b/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php
deleted file mode 100644
index 6e630852..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php
+++ /dev/null
@@ -1,34 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler\FingersCrossed;
-
-use Monolog\Logger;
-
-/**
- * Error level based activation strategy.
- *
- * @author Johannes M. Schmitt
- */
-class ErrorLevelActivationStrategy implements ActivationStrategyInterface
-{
- private $actionLevel;
-
- public function __construct($actionLevel)
- {
- $this->actionLevel = Logger::toMonologLevel($actionLevel);
- }
-
- public function isHandlerActivated(array $record)
- {
- return $record['level'] >= $this->actionLevel;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php
deleted file mode 100644
index cdabc445..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php
+++ /dev/null
@@ -1,207 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy;
-use Monolog\Handler\FingersCrossed\ActivationStrategyInterface;
-use Monolog\Logger;
-use Monolog\ResettableInterface;
-use Monolog\Formatter\FormatterInterface;
-
-/**
- * Buffers all records until a certain level is reached
- *
- * The advantage of this approach is that you don't get any clutter in your log files.
- * Only requests which actually trigger an error (or whatever your actionLevel is) will be
- * in the logs, but they will contain all records, not only those above the level threshold.
- *
- * You can find the various activation strategies in the
- * Monolog\Handler\FingersCrossed\ namespace.
- *
- * @author Jordi Boggiano
- */
-class FingersCrossedHandler extends AbstractHandler
-{
- protected $handler;
- protected $activationStrategy;
- protected $buffering = true;
- protected $bufferSize;
- protected $buffer = array();
- protected $stopBuffering;
- protected $passthruLevel;
-
- /**
- * @param callable|HandlerInterface $handler Handler or factory callable($record|null, $fingersCrossedHandler).
- * @param int|ActivationStrategyInterface $activationStrategy Strategy which determines when this handler takes action
- * @param int $bufferSize How many entries should be buffered at most, beyond that the oldest items are removed from the buffer.
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- * @param bool $stopBuffering Whether the handler should stop buffering after being triggered (default true)
- * @param int $passthruLevel Minimum level to always flush to handler on close, even if strategy not triggered
- */
- public function __construct($handler, $activationStrategy = null, $bufferSize = 0, $bubble = true, $stopBuffering = true, $passthruLevel = null)
- {
- if (null === $activationStrategy) {
- $activationStrategy = new ErrorLevelActivationStrategy(Logger::WARNING);
- }
-
- // convert simple int activationStrategy to an object
- if (!$activationStrategy instanceof ActivationStrategyInterface) {
- $activationStrategy = new ErrorLevelActivationStrategy($activationStrategy);
- }
-
- $this->handler = $handler;
- $this->activationStrategy = $activationStrategy;
- $this->bufferSize = $bufferSize;
- $this->bubble = $bubble;
- $this->stopBuffering = $stopBuffering;
-
- if ($passthruLevel !== null) {
- $this->passthruLevel = Logger::toMonologLevel($passthruLevel);
- }
-
- if (!$this->handler instanceof HandlerInterface && !is_callable($this->handler)) {
- throw new \RuntimeException("The given handler (".json_encode($this->handler).") is not a callable nor a Monolog\Handler\HandlerInterface object");
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function isHandling(array $record)
- {
- return true;
- }
-
- /**
- * Manually activate this logger regardless of the activation strategy
- */
- public function activate()
- {
- if ($this->stopBuffering) {
- $this->buffering = false;
- }
- $this->getHandler(end($this->buffer) ?: null)->handleBatch($this->buffer);
- $this->buffer = array();
- }
-
- /**
- * {@inheritdoc}
- */
- public function handle(array $record)
- {
- if ($this->processors) {
- foreach ($this->processors as $processor) {
- $record = call_user_func($processor, $record);
- }
- }
-
- if ($this->buffering) {
- $this->buffer[] = $record;
- if ($this->bufferSize > 0 && count($this->buffer) > $this->bufferSize) {
- array_shift($this->buffer);
- }
- if ($this->activationStrategy->isHandlerActivated($record)) {
- $this->activate();
- }
- } else {
- $this->getHandler($record)->handle($record);
- }
-
- return false === $this->bubble;
- }
-
- /**
- * {@inheritdoc}
- */
- public function close()
- {
- $this->flushBuffer();
- }
-
- public function reset()
- {
- $this->flushBuffer();
-
- parent::reset();
-
- if ($this->getHandler() instanceof ResettableInterface) {
- $this->getHandler()->reset();
- }
- }
-
- /**
- * Clears the buffer without flushing any messages down to the wrapped handler.
- *
- * It also resets the handler to its initial buffering state.
- */
- public function clear()
- {
- $this->buffer = array();
- $this->reset();
- }
-
- /**
- * Resets the state of the handler. Stops forwarding records to the wrapped handler.
- */
- private function flushBuffer()
- {
- if (null !== $this->passthruLevel) {
- $level = $this->passthruLevel;
- $this->buffer = array_filter($this->buffer, function ($record) use ($level) {
- return $record['level'] >= $level;
- });
- if (count($this->buffer) > 0) {
- $this->getHandler(end($this->buffer) ?: null)->handleBatch($this->buffer);
- }
- }
-
- $this->buffer = array();
- $this->buffering = true;
- }
-
- /**
- * Return the nested handler
- *
- * If the handler was provided as a factory callable, this will trigger the handler's instantiation.
- *
- * @return HandlerInterface
- */
- public function getHandler(array $record = null)
- {
- if (!$this->handler instanceof HandlerInterface) {
- $this->handler = call_user_func($this->handler, $record, $this);
- if (!$this->handler instanceof HandlerInterface) {
- throw new \RuntimeException("The factory callable should return a HandlerInterface");
- }
- }
-
- return $this->handler;
- }
-
- /**
- * {@inheritdoc}
- */
- public function setFormatter(FormatterInterface $formatter)
- {
- $this->getHandler()->setFormatter($formatter);
-
- return $this;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getFormatter()
- {
- return $this->getHandler()->getFormatter();
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php
deleted file mode 100644
index 2a171bd8..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php
+++ /dev/null
@@ -1,195 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Formatter\WildfireFormatter;
-
-/**
- * Simple FirePHP Handler (http://www.firephp.org/), which uses the Wildfire protocol.
- *
- * @author Eric Clemmons (@ericclemmons)
- */
-class FirePHPHandler extends AbstractProcessingHandler
-{
- /**
- * WildFire JSON header message format
- */
- const PROTOCOL_URI = 'http://meta.wildfirehq.org/Protocol/JsonStream/0.2';
-
- /**
- * FirePHP structure for parsing messages & their presentation
- */
- const STRUCTURE_URI = 'http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1';
-
- /**
- * Must reference a "known" plugin, otherwise headers won't display in FirePHP
- */
- const PLUGIN_URI = 'http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/0.3';
-
- /**
- * Header prefix for Wildfire to recognize & parse headers
- */
- const HEADER_PREFIX = 'X-Wf';
-
- /**
- * Whether or not Wildfire vendor-specific headers have been generated & sent yet
- */
- protected static $initialized = false;
-
- /**
- * Shared static message index between potentially multiple handlers
- * @var int
- */
- protected static $messageIndex = 1;
-
- protected static $sendHeaders = true;
-
- /**
- * Base header creation function used by init headers & record headers
- *
- * @param array $meta Wildfire Plugin, Protocol & Structure Indexes
- * @param string $message Log message
- * @return array Complete header string ready for the client as key and message as value
- */
- protected function createHeader(array $meta, $message)
- {
- $header = sprintf('%s-%s', self::HEADER_PREFIX, join('-', $meta));
-
- return array($header => $message);
- }
-
- /**
- * Creates message header from record
- *
- * @see createHeader()
- * @param array $record
- * @return array
- */
- protected function createRecordHeader(array $record)
- {
- // Wildfire is extensible to support multiple protocols & plugins in a single request,
- // but we're not taking advantage of that (yet), so we're using "1" for simplicity's sake.
- return $this->createHeader(
- array(1, 1, 1, self::$messageIndex++),
- $record['formatted']
- );
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getDefaultFormatter()
- {
- return new WildfireFormatter();
- }
-
- /**
- * Wildfire initialization headers to enable message parsing
- *
- * @see createHeader()
- * @see sendHeader()
- * @return array
- */
- protected function getInitHeaders()
- {
- // Initial payload consists of required headers for Wildfire
- return array_merge(
- $this->createHeader(array('Protocol', 1), self::PROTOCOL_URI),
- $this->createHeader(array(1, 'Structure', 1), self::STRUCTURE_URI),
- $this->createHeader(array(1, 'Plugin', 1), self::PLUGIN_URI)
- );
- }
-
- /**
- * Send header string to the client
- *
- * @param string $header
- * @param string $content
- */
- protected function sendHeader($header, $content)
- {
- if (!headers_sent() && self::$sendHeaders) {
- header(sprintf('%s: %s', $header, $content));
- }
- }
-
- /**
- * Creates & sends header for a record, ensuring init headers have been sent prior
- *
- * @see sendHeader()
- * @see sendInitHeaders()
- * @param array $record
- */
- protected function write(array $record)
- {
- if (!self::$sendHeaders) {
- return;
- }
-
- // WildFire-specific headers must be sent prior to any messages
- if (!self::$initialized) {
- self::$initialized = true;
-
- self::$sendHeaders = $this->headersAccepted();
- if (!self::$sendHeaders) {
- return;
- }
-
- foreach ($this->getInitHeaders() as $header => $content) {
- $this->sendHeader($header, $content);
- }
- }
-
- $header = $this->createRecordHeader($record);
- if (trim(current($header)) !== '') {
- $this->sendHeader(key($header), current($header));
- }
- }
-
- /**
- * Verifies if the headers are accepted by the current user agent
- *
- * @return bool
- */
- protected function headersAccepted()
- {
- if (!empty($_SERVER['HTTP_USER_AGENT']) && preg_match('{\bFirePHP/\d+\.\d+\b}', $_SERVER['HTTP_USER_AGENT'])) {
- return true;
- }
-
- return isset($_SERVER['HTTP_X_FIREPHP_VERSION']);
- }
-
- /**
- * BC getter for the sendHeaders property that has been made static
- */
- public function __get($property)
- {
- if ('sendHeaders' !== $property) {
- throw new \InvalidArgumentException('Undefined property '.$property);
- }
-
- return static::$sendHeaders;
- }
-
- /**
- * BC setter for the sendHeaders property that has been made static
- */
- public function __set($property, $value)
- {
- if ('sendHeaders' !== $property) {
- throw new \InvalidArgumentException('Undefined property '.$property);
- }
-
- static::$sendHeaders = $value;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php
deleted file mode 100644
index c43c0134..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php
+++ /dev/null
@@ -1,126 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Formatter\LineFormatter;
-use Monolog\Logger;
-
-/**
- * Sends logs to Fleep.io using Webhook integrations
- *
- * You'll need a Fleep.io account to use this handler.
- *
- * @see https://fleep.io/integrations/webhooks/ Fleep Webhooks Documentation
- * @author Ando Roots
- */
-class FleepHookHandler extends SocketHandler
-{
- const FLEEP_HOST = 'fleep.io';
-
- const FLEEP_HOOK_URI = '/hook/';
-
- /**
- * @var string Webhook token (specifies the conversation where logs are sent)
- */
- protected $token;
-
- /**
- * Construct a new Fleep.io Handler.
- *
- * For instructions on how to create a new web hook in your conversations
- * see https://fleep.io/integrations/webhooks/
- *
- * @param string $token Webhook token
- * @param bool|int $level The minimum logging level at which this handler will be triggered
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- * @throws MissingExtensionException
- */
- public function __construct($token, $level = Logger::DEBUG, $bubble = true)
- {
- if (!extension_loaded('openssl')) {
- throw new MissingExtensionException('The OpenSSL PHP extension is required to use the FleepHookHandler');
- }
-
- $this->token = $token;
-
- $connectionString = 'ssl://' . self::FLEEP_HOST . ':443';
- parent::__construct($connectionString, $level, $bubble);
- }
-
- /**
- * Returns the default formatter to use with this handler
- *
- * Overloaded to remove empty context and extra arrays from the end of the log message.
- *
- * @return LineFormatter
- */
- protected function getDefaultFormatter()
- {
- return new LineFormatter(null, null, true, true);
- }
-
- /**
- * Handles a log record
- *
- * @param array $record
- */
- public function write(array $record)
- {
- parent::write($record);
- $this->closeSocket();
- }
-
- /**
- * {@inheritdoc}
- *
- * @param array $record
- * @return string
- */
- protected function generateDataStream($record)
- {
- $content = $this->buildContent($record);
-
- return $this->buildHeader($content) . $content;
- }
-
- /**
- * Builds the header of the API Call
- *
- * @param string $content
- * @return string
- */
- private function buildHeader($content)
- {
- $header = "POST " . self::FLEEP_HOOK_URI . $this->token . " HTTP/1.1\r\n";
- $header .= "Host: " . self::FLEEP_HOST . "\r\n";
- $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
- $header .= "Content-Length: " . strlen($content) . "\r\n";
- $header .= "\r\n";
-
- return $header;
- }
-
- /**
- * Builds the body of API call
- *
- * @param array $record
- * @return string
- */
- private function buildContent($record)
- {
- $dataArray = array(
- 'message' => $record['formatted'],
- );
-
- return http_build_query($dataArray);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php
deleted file mode 100644
index f0f010cb..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php
+++ /dev/null
@@ -1,128 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Logger;
-use Monolog\Utils;
-use Monolog\Formatter\FlowdockFormatter;
-use Monolog\Formatter\FormatterInterface;
-
-/**
- * Sends notifications through the Flowdock push API
- *
- * This must be configured with a FlowdockFormatter instance via setFormatter()
- *
- * Notes:
- * API token - Flowdock API token
- *
- * @author Dominik Liebler
- * @see https://www.flowdock.com/api/push
- */
-class FlowdockHandler extends SocketHandler
-{
- /**
- * @var string
- */
- protected $apiToken;
-
- /**
- * @param string $apiToken
- * @param bool|int $level The minimum logging level at which this handler will be triggered
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- *
- * @throws MissingExtensionException if OpenSSL is missing
- */
- public function __construct($apiToken, $level = Logger::DEBUG, $bubble = true)
- {
- if (!extension_loaded('openssl')) {
- throw new MissingExtensionException('The OpenSSL PHP extension is required to use the FlowdockHandler');
- }
-
- parent::__construct('ssl://api.flowdock.com:443', $level, $bubble);
- $this->apiToken = $apiToken;
- }
-
- /**
- * {@inheritdoc}
- */
- public function setFormatter(FormatterInterface $formatter)
- {
- if (!$formatter instanceof FlowdockFormatter) {
- throw new \InvalidArgumentException('The FlowdockHandler requires an instance of Monolog\Formatter\FlowdockFormatter to function correctly');
- }
-
- return parent::setFormatter($formatter);
- }
-
- /**
- * Gets the default formatter.
- *
- * @return FormatterInterface
- */
- protected function getDefaultFormatter()
- {
- throw new \InvalidArgumentException('The FlowdockHandler must be configured (via setFormatter) with an instance of Monolog\Formatter\FlowdockFormatter to function correctly');
- }
-
- /**
- * {@inheritdoc}
- *
- * @param array $record
- */
- protected function write(array $record)
- {
- parent::write($record);
-
- $this->closeSocket();
- }
-
- /**
- * {@inheritdoc}
- *
- * @param array $record
- * @return string
- */
- protected function generateDataStream($record)
- {
- $content = $this->buildContent($record);
-
- return $this->buildHeader($content) . $content;
- }
-
- /**
- * Builds the body of API call
- *
- * @param array $record
- * @return string
- */
- private function buildContent($record)
- {
- return Utils::jsonEncode($record['formatted']['flowdock']);
- }
-
- /**
- * Builds the header of the API Call
- *
- * @param string $content
- * @return string
- */
- private function buildHeader($content)
- {
- $header = "POST /v1/messages/team_inbox/" . $this->apiToken . " HTTP/1.1\r\n";
- $header .= "Host: api.flowdock.com\r\n";
- $header .= "Content-Type: application/json\r\n";
- $header .= "Content-Length: " . strlen($content) . "\r\n";
- $header .= "\r\n";
-
- return $header;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/FormattableHandlerInterface.php b/vendor/monolog/monolog/src/Monolog/Handler/FormattableHandlerInterface.php
deleted file mode 100644
index 3e2f1b28..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/FormattableHandlerInterface.php
+++ /dev/null
@@ -1,39 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Formatter\FormatterInterface;
-
-/**
- * Interface to describe loggers that have a formatter
- *
- * This interface is present in monolog 1.x to ease forward compatibility.
- *
- * @author Jordi Boggiano
- */
-interface FormattableHandlerInterface
-{
- /**
- * Sets the formatter.
- *
- * @param FormatterInterface $formatter
- * @return HandlerInterface self
- */
- public function setFormatter(FormatterInterface $formatter): HandlerInterface;
-
- /**
- * Gets the formatter.
- *
- * @return FormatterInterface
- */
- public function getFormatter(): FormatterInterface;
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/FormattableHandlerTrait.php b/vendor/monolog/monolog/src/Monolog/Handler/FormattableHandlerTrait.php
deleted file mode 100644
index e9ec5e77..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/FormattableHandlerTrait.php
+++ /dev/null
@@ -1,63 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Formatter\FormatterInterface;
-use Monolog\Formatter\LineFormatter;
-
-/**
- * Helper trait for implementing FormattableInterface
- *
- * This trait is present in monolog 1.x to ease forward compatibility.
- *
- * @author Jordi Boggiano
- */
-trait FormattableHandlerTrait
-{
- /**
- * @var FormatterInterface
- */
- protected $formatter;
-
- /**
- * {@inheritdoc}
- * @suppress PhanTypeMismatchReturn
- */
- public function setFormatter(FormatterInterface $formatter): HandlerInterface
- {
- $this->formatter = $formatter;
-
- return $this;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getFormatter(): FormatterInterface
- {
- if (!$this->formatter) {
- $this->formatter = $this->getDefaultFormatter();
- }
-
- return $this->formatter;
- }
-
- /**
- * Gets the default formatter.
- *
- * Overwrite this if the LineFormatter is not a good default for your handler.
- */
- protected function getDefaultFormatter(): FormatterInterface
- {
- return new LineFormatter();
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/GelfHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/GelfHandler.php
deleted file mode 100644
index b6cde7c6..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/GelfHandler.php
+++ /dev/null
@@ -1,65 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Gelf\IMessagePublisher;
-use Gelf\PublisherInterface;
-use Gelf\Publisher;
-use InvalidArgumentException;
-use Monolog\Logger;
-use Monolog\Formatter\GelfMessageFormatter;
-
-/**
- * Handler to send messages to a Graylog2 (http://www.graylog2.org) server
- *
- * @author Matt Lehner
- * @author Benjamin Zikarsky
- */
-class GelfHandler extends AbstractProcessingHandler
-{
- /**
- * @var Publisher|PublisherInterface|IMessagePublisher the publisher object that sends the message to the server
- */
- protected $publisher;
-
- /**
- * @param PublisherInterface|IMessagePublisher|Publisher $publisher a publisher object
- * @param int $level The minimum logging level at which this handler will be triggered
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- */
- public function __construct($publisher, $level = Logger::DEBUG, $bubble = true)
- {
- parent::__construct($level, $bubble);
-
- if (!$publisher instanceof Publisher && !$publisher instanceof IMessagePublisher && !$publisher instanceof PublisherInterface) {
- throw new InvalidArgumentException('Invalid publisher, expected a Gelf\Publisher, Gelf\IMessagePublisher or Gelf\PublisherInterface instance');
- }
-
- $this->publisher = $publisher;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function write(array $record)
- {
- $this->publisher->publish($record['formatted']);
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getDefaultFormatter()
- {
- return new GelfMessageFormatter();
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/GroupHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/GroupHandler.php
deleted file mode 100644
index 0d461f9c..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/GroupHandler.php
+++ /dev/null
@@ -1,117 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Formatter\FormatterInterface;
-use Monolog\ResettableInterface;
-
-/**
- * Forwards records to multiple handlers
- *
- * @author Lenar Lõhmus
- */
-class GroupHandler extends AbstractHandler
-{
- protected $handlers;
-
- /**
- * @param array $handlers Array of Handlers.
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- */
- public function __construct(array $handlers, $bubble = true)
- {
- foreach ($handlers as $handler) {
- if (!$handler instanceof HandlerInterface) {
- throw new \InvalidArgumentException('The first argument of the GroupHandler must be an array of HandlerInterface instances.');
- }
- }
-
- $this->handlers = $handlers;
- $this->bubble = $bubble;
- }
-
- /**
- * {@inheritdoc}
- */
- public function isHandling(array $record)
- {
- foreach ($this->handlers as $handler) {
- if ($handler->isHandling($record)) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * {@inheritdoc}
- */
- public function handle(array $record)
- {
- if ($this->processors) {
- foreach ($this->processors as $processor) {
- $record = call_user_func($processor, $record);
- }
- }
-
- foreach ($this->handlers as $handler) {
- $handler->handle($record);
- }
-
- return false === $this->bubble;
- }
-
- /**
- * {@inheritdoc}
- */
- public function handleBatch(array $records)
- {
- if ($this->processors) {
- $processed = array();
- foreach ($records as $record) {
- foreach ($this->processors as $processor) {
- $record = call_user_func($processor, $record);
- }
- $processed[] = $record;
- }
- $records = $processed;
- }
-
- foreach ($this->handlers as $handler) {
- $handler->handleBatch($records);
- }
- }
-
- public function reset()
- {
- parent::reset();
-
- foreach ($this->handlers as $handler) {
- if ($handler instanceof ResettableInterface) {
- $handler->reset();
- }
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function setFormatter(FormatterInterface $formatter)
- {
- foreach ($this->handlers as $handler) {
- $handler->setFormatter($formatter);
- }
-
- return $this;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/HandlerInterface.php b/vendor/monolog/monolog/src/Monolog/Handler/HandlerInterface.php
deleted file mode 100644
index 8d5a4a09..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/HandlerInterface.php
+++ /dev/null
@@ -1,90 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Formatter\FormatterInterface;
-
-/**
- * Interface that all Monolog Handlers must implement
- *
- * @author Jordi Boggiano
- */
-interface HandlerInterface
-{
- /**
- * Checks whether the given record will be handled by this handler.
- *
- * This is mostly done for performance reasons, to avoid calling processors for nothing.
- *
- * Handlers should still check the record levels within handle(), returning false in isHandling()
- * is no guarantee that handle() will not be called, and isHandling() might not be called
- * for a given record.
- *
- * @param array $record Partial log record containing only a level key
- *
- * @return bool
- */
- public function isHandling(array $record);
-
- /**
- * Handles a record.
- *
- * All records may be passed to this method, and the handler should discard
- * those that it does not want to handle.
- *
- * The return value of this function controls the bubbling process of the handler stack.
- * Unless the bubbling is interrupted (by returning true), the Logger class will keep on
- * calling further handlers in the stack with a given log record.
- *
- * @param array $record The record to handle
- * @return bool true means that this handler handled the record, and that bubbling is not permitted.
- * false means the record was either not processed or that this handler allows bubbling.
- */
- public function handle(array $record);
-
- /**
- * Handles a set of records at once.
- *
- * @param array $records The records to handle (an array of record arrays)
- */
- public function handleBatch(array $records);
-
- /**
- * Adds a processor in the stack.
- *
- * @param callable $callback
- * @return self
- */
- public function pushProcessor($callback);
-
- /**
- * Removes the processor on top of the stack and returns it.
- *
- * @return callable
- */
- public function popProcessor();
-
- /**
- * Sets the formatter.
- *
- * @param FormatterInterface $formatter
- * @return self
- */
- public function setFormatter(FormatterInterface $formatter);
-
- /**
- * Gets the formatter.
- *
- * @return FormatterInterface
- */
- public function getFormatter();
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php b/vendor/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php
deleted file mode 100644
index 55e64986..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php
+++ /dev/null
@@ -1,116 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\ResettableInterface;
-use Monolog\Formatter\FormatterInterface;
-
-/**
- * This simple wrapper class can be used to extend handlers functionality.
- *
- * Example: A custom filtering that can be applied to any handler.
- *
- * Inherit from this class and override handle() like this:
- *
- * public function handle(array $record)
- * {
- * if ($record meets certain conditions) {
- * return false;
- * }
- * return $this->handler->handle($record);
- * }
- *
- * @author Alexey Karapetov
- */
-class HandlerWrapper implements HandlerInterface, ResettableInterface
-{
- /**
- * @var HandlerInterface
- */
- protected $handler;
-
- /**
- * HandlerWrapper constructor.
- * @param HandlerInterface $handler
- */
- public function __construct(HandlerInterface $handler)
- {
- $this->handler = $handler;
- }
-
- /**
- * {@inheritdoc}
- */
- public function isHandling(array $record)
- {
- return $this->handler->isHandling($record);
- }
-
- /**
- * {@inheritdoc}
- */
- public function handle(array $record)
- {
- return $this->handler->handle($record);
- }
-
- /**
- * {@inheritdoc}
- */
- public function handleBatch(array $records)
- {
- return $this->handler->handleBatch($records);
- }
-
- /**
- * {@inheritdoc}
- */
- public function pushProcessor($callback)
- {
- $this->handler->pushProcessor($callback);
-
- return $this;
- }
-
- /**
- * {@inheritdoc}
- */
- public function popProcessor()
- {
- return $this->handler->popProcessor();
- }
-
- /**
- * {@inheritdoc}
- */
- public function setFormatter(FormatterInterface $formatter)
- {
- $this->handler->setFormatter($formatter);
-
- return $this;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getFormatter()
- {
- return $this->handler->getFormatter();
- }
-
- public function reset()
- {
- if ($this->handler instanceof ResettableInterface) {
- return $this->handler->reset();
- }
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/HipChatHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/HipChatHandler.php
deleted file mode 100644
index 30258e36..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/HipChatHandler.php
+++ /dev/null
@@ -1,367 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Logger;
-
-/**
- * Sends notifications through the hipchat api to a hipchat room
- *
- * Notes:
- * API token - HipChat API token
- * Room - HipChat Room Id or name, where messages are sent
- * Name - Name used to send the message (from)
- * notify - Should the message trigger a notification in the clients
- * version - The API version to use (HipChatHandler::API_V1 | HipChatHandler::API_V2)
- *
- * @author Rafael Dohms
- * @see https://www.hipchat.com/docs/api
- */
-class HipChatHandler extends SocketHandler
-{
- /**
- * Use API version 1
- */
- const API_V1 = 'v1';
-
- /**
- * Use API version v2
- */
- const API_V2 = 'v2';
-
- /**
- * The maximum allowed length for the name used in the "from" field.
- */
- const MAXIMUM_NAME_LENGTH = 15;
-
- /**
- * The maximum allowed length for the message.
- */
- const MAXIMUM_MESSAGE_LENGTH = 9500;
-
- /**
- * @var string
- */
- private $token;
-
- /**
- * @var string
- */
- private $room;
-
- /**
- * @var string
- */
- private $name;
-
- /**
- * @var bool
- */
- private $notify;
-
- /**
- * @var string
- */
- private $format;
-
- /**
- * @var string
- */
- private $host;
-
- /**
- * @var string
- */
- private $version;
-
- /**
- * @param string $token HipChat API Token
- * @param string $room The room that should be alerted of the message (Id or Name)
- * @param string $name Name used in the "from" field.
- * @param bool $notify Trigger a notification in clients or not
- * @param int $level The minimum logging level at which this handler will be triggered
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- * @param bool $useSSL Whether to connect via SSL.
- * @param string $format The format of the messages (default to text, can be set to html if you have html in the messages)
- * @param string $host The HipChat server hostname.
- * @param string $version The HipChat API version (default HipChatHandler::API_V1)
- */
- public function __construct($token, $room, $name = 'Monolog', $notify = false, $level = Logger::CRITICAL, $bubble = true, $useSSL = true, $format = 'text', $host = 'api.hipchat.com', $version = self::API_V1)
- {
- @trigger_error('The Monolog\Handler\HipChatHandler class is deprecated. You should migrate to Slack and the SlackWebhookHandler / SlackbotHandler, see https://www.atlassian.com/partnerships/slack', E_USER_DEPRECATED);
-
- if ($version == self::API_V1 && !$this->validateStringLength($name, static::MAXIMUM_NAME_LENGTH)) {
- throw new \InvalidArgumentException('The supplied name is too long. HipChat\'s v1 API supports names up to 15 UTF-8 characters.');
- }
-
- $connectionString = $useSSL ? 'ssl://'.$host.':443' : $host.':80';
- parent::__construct($connectionString, $level, $bubble);
-
- $this->token = $token;
- $this->name = $name;
- $this->notify = $notify;
- $this->room = $room;
- $this->format = $format;
- $this->host = $host;
- $this->version = $version;
- }
-
- /**
- * {@inheritdoc}
- *
- * @param array $record
- * @return string
- */
- protected function generateDataStream($record)
- {
- $content = $this->buildContent($record);
-
- return $this->buildHeader($content) . $content;
- }
-
- /**
- * Builds the body of API call
- *
- * @param array $record
- * @return string
- */
- private function buildContent($record)
- {
- $dataArray = array(
- 'notify' => $this->version == self::API_V1 ?
- ($this->notify ? 1 : 0) :
- ($this->notify ? 'true' : 'false'),
- 'message' => $record['formatted'],
- 'message_format' => $this->format,
- 'color' => $this->getAlertColor($record['level']),
- );
-
- if (!$this->validateStringLength($dataArray['message'], static::MAXIMUM_MESSAGE_LENGTH)) {
- if (function_exists('mb_substr')) {
- $dataArray['message'] = mb_substr($dataArray['message'], 0, static::MAXIMUM_MESSAGE_LENGTH).' [truncated]';
- } else {
- $dataArray['message'] = substr($dataArray['message'], 0, static::MAXIMUM_MESSAGE_LENGTH).' [truncated]';
- }
- }
-
- // if we are using the legacy API then we need to send some additional information
- if ($this->version == self::API_V1) {
- $dataArray['room_id'] = $this->room;
- }
-
- // append the sender name if it is set
- // always append it if we use the v1 api (it is required in v1)
- if ($this->version == self::API_V1 || $this->name !== null) {
- $dataArray['from'] = (string) $this->name;
- }
-
- return http_build_query($dataArray);
- }
-
- /**
- * Builds the header of the API Call
- *
- * @param string $content
- * @return string
- */
- private function buildHeader($content)
- {
- if ($this->version == self::API_V1) {
- $header = "POST /v1/rooms/message?format=json&auth_token={$this->token} HTTP/1.1\r\n";
- } else {
- // needed for rooms with special (spaces, etc) characters in the name
- $room = rawurlencode($this->room);
- $header = "POST /v2/room/{$room}/notification?auth_token={$this->token} HTTP/1.1\r\n";
- }
-
- $header .= "Host: {$this->host}\r\n";
- $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
- $header .= "Content-Length: " . strlen($content) . "\r\n";
- $header .= "\r\n";
-
- return $header;
- }
-
- /**
- * Assigns a color to each level of log records.
- *
- * @param int $level
- * @return string
- */
- protected function getAlertColor($level)
- {
- switch (true) {
- case $level >= Logger::ERROR:
- return 'red';
- case $level >= Logger::WARNING:
- return 'yellow';
- case $level >= Logger::INFO:
- return 'green';
- case $level == Logger::DEBUG:
- return 'gray';
- default:
- return 'yellow';
- }
- }
-
- /**
- * {@inheritdoc}
- *
- * @param array $record
- */
- protected function write(array $record)
- {
- parent::write($record);
- $this->finalizeWrite();
- }
-
- /**
- * Finalizes the request by reading some bytes and then closing the socket
- *
- * If we do not read some but close the socket too early, hipchat sometimes
- * drops the request entirely.
- */
- protected function finalizeWrite()
- {
- $res = $this->getResource();
- if (is_resource($res)) {
- @fread($res, 2048);
- }
- $this->closeSocket();
- }
-
- /**
- * {@inheritdoc}
- */
- public function handleBatch(array $records)
- {
- if (count($records) == 0) {
- return true;
- }
-
- $batchRecords = $this->combineRecords($records);
-
- $handled = false;
- foreach ($batchRecords as $batchRecord) {
- if ($this->isHandling($batchRecord)) {
- $this->write($batchRecord);
- $handled = true;
- }
- }
-
- if (!$handled) {
- return false;
- }
-
- return false === $this->bubble;
- }
-
- /**
- * Combines multiple records into one. Error level of the combined record
- * will be the highest level from the given records. Datetime will be taken
- * from the first record.
- *
- * @param array $records
- * @return array
- */
- private function combineRecords(array $records)
- {
- $batchRecord = null;
- $batchRecords = array();
- $messages = array();
- $formattedMessages = array();
- $level = 0;
- $levelName = null;
- $datetime = null;
-
- foreach ($records as $record) {
- $record = $this->processRecord($record);
-
- if ($record['level'] > $level) {
- $level = $record['level'];
- $levelName = $record['level_name'];
- }
-
- if (null === $datetime) {
- $datetime = $record['datetime'];
- }
-
- $messages[] = $record['message'];
- $messageStr = implode(PHP_EOL, $messages);
- $formattedMessages[] = $this->getFormatter()->format($record);
- $formattedMessageStr = implode('', $formattedMessages);
-
- $batchRecord = array(
- 'message' => $messageStr,
- 'formatted' => $formattedMessageStr,
- 'context' => array(),
- 'extra' => array(),
- );
-
- if (!$this->validateStringLength($batchRecord['formatted'], static::MAXIMUM_MESSAGE_LENGTH)) {
- // Pop the last message and implode the remaining messages
- $lastMessage = array_pop($messages);
- $lastFormattedMessage = array_pop($formattedMessages);
- $batchRecord['message'] = implode(PHP_EOL, $messages);
- $batchRecord['formatted'] = implode('', $formattedMessages);
-
- $batchRecords[] = $batchRecord;
- $messages = array($lastMessage);
- $formattedMessages = array($lastFormattedMessage);
-
- $batchRecord = null;
- }
- }
-
- if (null !== $batchRecord) {
- $batchRecords[] = $batchRecord;
- }
-
- // Set the max level and datetime for all records
- foreach ($batchRecords as &$batchRecord) {
- $batchRecord = array_merge(
- $batchRecord,
- array(
- 'level' => $level,
- 'level_name' => $levelName,
- 'datetime' => $datetime,
- )
- );
- }
-
- return $batchRecords;
- }
-
- /**
- * Validates the length of a string.
- *
- * If the `mb_strlen()` function is available, it will use that, as HipChat
- * allows UTF-8 characters. Otherwise, it will fall back to `strlen()`.
- *
- * Note that this might cause false failures in the specific case of using
- * a valid name with less than 16 characters, but 16 or more bytes, on a
- * system where `mb_strlen()` is unavailable.
- *
- * @param string $str
- * @param int $length
- *
- * @return bool
- */
- private function validateStringLength($str, $length)
- {
- if (function_exists('mb_strlen')) {
- return (mb_strlen($str) <= $length);
- }
-
- return (strlen($str) <= $length);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php
deleted file mode 100644
index f4d3b97e..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php
+++ /dev/null
@@ -1,70 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Logger;
-use Monolog\Utils;
-
-/**
- * IFTTTHandler uses cURL to trigger IFTTT Maker actions
- *
- * Register a secret key and trigger/event name at https://ifttt.com/maker
- *
- * value1 will be the channel from monolog's Logger constructor,
- * value2 will be the level name (ERROR, WARNING, ..)
- * value3 will be the log record's message
- *
- * @author Nehal Patel
- */
-class IFTTTHandler extends AbstractProcessingHandler
-{
- private $eventName;
- private $secretKey;
-
- /**
- * @param string $eventName The name of the IFTTT Maker event that should be triggered
- * @param string $secretKey A valid IFTTT secret key
- * @param int $level The minimum logging level at which this handler will be triggered
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- */
- public function __construct($eventName, $secretKey, $level = Logger::ERROR, $bubble = true)
- {
- $this->eventName = $eventName;
- $this->secretKey = $secretKey;
-
- parent::__construct($level, $bubble);
- }
-
- /**
- * {@inheritdoc}
- */
- public function write(array $record)
- {
- $postData = array(
- "value1" => $record["channel"],
- "value2" => $record["level_name"],
- "value3" => $record["message"],
- );
- $postString = Utils::jsonEncode($postData);
-
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, "https://maker.ifttt.com/trigger/" . $this->eventName . "/with/key/" . $this->secretKey);
- curl_setopt($ch, CURLOPT_POST, true);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $postString);
- curl_setopt($ch, CURLOPT_HTTPHEADER, array(
- "Content-Type: application/json",
- ));
-
- Curl\Util::execute($ch);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php
deleted file mode 100644
index 8f683dce..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php
+++ /dev/null
@@ -1,62 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
- namespace Monolog\Handler;
-
- use Monolog\Logger;
-
-/**
- * Inspired on LogEntriesHandler.
- *
- * @author Robert Kaufmann III
- * @author Gabriel Machado
- */
-class InsightOpsHandler extends SocketHandler
-{
- /**
- * @var string
- */
- protected $logToken;
-
- /**
- * @param string $token Log token supplied by InsightOps
- * @param string $region Region where InsightOps account is hosted. Could be 'us' or 'eu'.
- * @param bool $useSSL Whether or not SSL encryption should be used
- * @param int $level The minimum logging level to trigger this handler
- * @param bool $bubble Whether or not messages that are handled should bubble up the stack.
- *
- * @throws MissingExtensionException If SSL encryption is set to true and OpenSSL is missing
- */
- public function __construct($token, $region = 'us', $useSSL = true, $level = Logger::DEBUG, $bubble = true)
- {
- if ($useSSL && !extension_loaded('openssl')) {
- throw new MissingExtensionException('The OpenSSL PHP plugin is required to use SSL encrypted connection for InsightOpsHandler');
- }
-
- $endpoint = $useSSL
- ? 'ssl://' . $region . '.data.logs.insight.rapid7.com:443'
- : $region . '.data.logs.insight.rapid7.com:80';
-
- parent::__construct($endpoint, $level, $bubble);
- $this->logToken = $token;
- }
-
- /**
- * {@inheritdoc}
- *
- * @param array $record
- * @return string
- */
- protected function generateDataStream($record)
- {
- return $this->logToken . ' ' . $record['formatted'];
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php
deleted file mode 100644
index ea89fb3e..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Logger;
-
-/**
- * @author Robert Kaufmann III
- */
-class LogEntriesHandler extends SocketHandler
-{
- /**
- * @var string
- */
- protected $logToken;
-
- /**
- * @param string $token Log token supplied by LogEntries
- * @param bool $useSSL Whether or not SSL encryption should be used.
- * @param int $level The minimum logging level to trigger this handler
- * @param bool $bubble Whether or not messages that are handled should bubble up the stack.
- *
- * @throws MissingExtensionException If SSL encryption is set to true and OpenSSL is missing
- */
- public function __construct($token, $useSSL = true, $level = Logger::DEBUG, $bubble = true, $host = 'data.logentries.com')
- {
- if ($useSSL && !extension_loaded('openssl')) {
- throw new MissingExtensionException('The OpenSSL PHP plugin is required to use SSL encrypted connection for LogEntriesHandler');
- }
-
- $endpoint = $useSSL ? 'ssl://' . $host . ':443' : $host . ':80';
- parent::__construct($endpoint, $level, $bubble);
- $this->logToken = $token;
- }
-
- /**
- * {@inheritdoc}
- *
- * @param array $record
- * @return string
- */
- protected function generateDataStream($record)
- {
- return $this->logToken . ' ' . $record['formatted'];
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/LogglyHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/LogglyHandler.php
deleted file mode 100644
index bcd62e1c..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/LogglyHandler.php
+++ /dev/null
@@ -1,102 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Logger;
-use Monolog\Formatter\LogglyFormatter;
-
-/**
- * Sends errors to Loggly.
- *
- * @author Przemek Sobstel
- * @author Adam Pancutt
- * @author Gregory Barchard
- */
-class LogglyHandler extends AbstractProcessingHandler
-{
- const HOST = 'logs-01.loggly.com';
- const ENDPOINT_SINGLE = 'inputs';
- const ENDPOINT_BATCH = 'bulk';
-
- protected $token;
-
- protected $tag = array();
-
- public function __construct($token, $level = Logger::DEBUG, $bubble = true)
- {
- if (!extension_loaded('curl')) {
- throw new \LogicException('The curl extension is needed to use the LogglyHandler');
- }
-
- $this->token = $token;
-
- parent::__construct($level, $bubble);
- }
-
- public function setTag($tag)
- {
- $tag = !empty($tag) ? $tag : array();
- $this->tag = is_array($tag) ? $tag : array($tag);
- }
-
- public function addTag($tag)
- {
- if (!empty($tag)) {
- $tag = is_array($tag) ? $tag : array($tag);
- $this->tag = array_unique(array_merge($this->tag, $tag));
- }
- }
-
- protected function write(array $record)
- {
- $this->send($record["formatted"], self::ENDPOINT_SINGLE);
- }
-
- public function handleBatch(array $records)
- {
- $level = $this->level;
-
- $records = array_filter($records, function ($record) use ($level) {
- return ($record['level'] >= $level);
- });
-
- if ($records) {
- $this->send($this->getFormatter()->formatBatch($records), self::ENDPOINT_BATCH);
- }
- }
-
- protected function send($data, $endpoint)
- {
- $url = sprintf("https://%s/%s/%s/", self::HOST, $endpoint, $this->token);
-
- $headers = array('Content-Type: application/json');
-
- if (!empty($this->tag)) {
- $headers[] = 'X-LOGGLY-TAG: '.implode(',', $this->tag);
- }
-
- $ch = curl_init();
-
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_POST, true);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
- curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
-
- Curl\Util::execute($ch);
- }
-
- protected function getDefaultFormatter()
- {
- return new LogglyFormatter();
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/MailHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/MailHandler.php
deleted file mode 100644
index 9e232838..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/MailHandler.php
+++ /dev/null
@@ -1,67 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-/**
- * Base class for all mail handlers
- *
- * @author Gyula Sallai
- */
-abstract class MailHandler extends AbstractProcessingHandler
-{
- /**
- * {@inheritdoc}
- */
- public function handleBatch(array $records)
- {
- $messages = array();
-
- foreach ($records as $record) {
- if ($record['level'] < $this->level) {
- continue;
- }
- $messages[] = $this->processRecord($record);
- }
-
- if (!empty($messages)) {
- $this->send((string) $this->getFormatter()->formatBatch($messages), $messages);
- }
- }
-
- /**
- * Send a mail with the given content
- *
- * @param string $content formatted email body to be sent
- * @param array $records the array of log records that formed this content
- */
- abstract protected function send($content, array $records);
-
- /**
- * {@inheritdoc}
- */
- protected function write(array $record)
- {
- $this->send((string) $record['formatted'], array($record));
- }
-
- protected function getHighestRecord(array $records)
- {
- $highestRecord = null;
- foreach ($records as $record) {
- if ($highestRecord === null || $highestRecord['level'] < $record['level']) {
- $highestRecord = $record;
- }
- }
-
- return $highestRecord;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/MandrillHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/MandrillHandler.php
deleted file mode 100644
index 3f0956a9..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/MandrillHandler.php
+++ /dev/null
@@ -1,68 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Logger;
-
-/**
- * MandrillHandler uses cURL to send the emails to the Mandrill API
- *
- * @author Adam Nicholson
- */
-class MandrillHandler extends MailHandler
-{
- protected $message;
- protected $apiKey;
-
- /**
- * @param string $apiKey A valid Mandrill API key
- * @param callable|\Swift_Message $message An example message for real messages, only the body will be replaced
- * @param int $level The minimum logging level at which this handler will be triggered
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- */
- public function __construct($apiKey, $message, $level = Logger::ERROR, $bubble = true)
- {
- parent::__construct($level, $bubble);
-
- if (!$message instanceof \Swift_Message && is_callable($message)) {
- $message = call_user_func($message);
- }
- if (!$message instanceof \Swift_Message) {
- throw new \InvalidArgumentException('You must provide either a Swift_Message instance or a callable returning it');
- }
- $this->message = $message;
- $this->apiKey = $apiKey;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function send($content, array $records)
- {
- $message = clone $this->message;
- $message->setBody($content);
- $message->setDate(time());
-
- $ch = curl_init();
-
- curl_setopt($ch, CURLOPT_URL, 'https://mandrillapp.com/api/1.0/messages/send-raw.json');
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array(
- 'key' => $this->apiKey,
- 'raw_message' => (string) $message,
- 'async' => false,
- )));
-
- Curl\Util::execute($ch);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php b/vendor/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php
deleted file mode 100644
index 4724a7e2..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-/**
- * Exception can be thrown if an extension for an handler is missing
- *
- * @author Christian Bergau
- */
-class MissingExtensionException extends \Exception
-{
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php
deleted file mode 100644
index 56fe755b..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php
+++ /dev/null
@@ -1,59 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Logger;
-use Monolog\Formatter\NormalizerFormatter;
-
-/**
- * Logs to a MongoDB database.
- *
- * usage example:
- *
- * $log = new Logger('application');
- * $mongodb = new MongoDBHandler(new \Mongo("mongodb://localhost:27017"), "logs", "prod");
- * $log->pushHandler($mongodb);
- *
- * @author Thomas Tourlourat
- */
-class MongoDBHandler extends AbstractProcessingHandler
-{
- protected $mongoCollection;
-
- public function __construct($mongo, $database, $collection, $level = Logger::DEBUG, $bubble = true)
- {
- if (!($mongo instanceof \MongoClient || $mongo instanceof \Mongo || $mongo instanceof \MongoDB\Client)) {
- throw new \InvalidArgumentException('MongoClient, Mongo or MongoDB\Client instance required');
- }
-
- $this->mongoCollection = $mongo->selectCollection($database, $collection);
-
- parent::__construct($level, $bubble);
- }
-
- protected function write(array $record)
- {
- if ($this->mongoCollection instanceof \MongoDB\Collection) {
- $this->mongoCollection->insertOne($record["formatted"]);
- } else {
- $this->mongoCollection->save($record["formatted"]);
- }
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getDefaultFormatter()
- {
- return new NormalizerFormatter();
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php
deleted file mode 100644
index d7807fd1..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php
+++ /dev/null
@@ -1,185 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Logger;
-use Monolog\Formatter\LineFormatter;
-
-/**
- * NativeMailerHandler uses the mail() function to send the emails
- *
- * @author Christophe Coevoet
- * @author Mark Garrett
- */
-class NativeMailerHandler extends MailHandler
-{
- /**
- * The email addresses to which the message will be sent
- * @var array
- */
- protected $to;
-
- /**
- * The subject of the email
- * @var string
- */
- protected $subject;
-
- /**
- * Optional headers for the message
- * @var array
- */
- protected $headers = array();
-
- /**
- * Optional parameters for the message
- * @var array
- */
- protected $parameters = array();
-
- /**
- * The wordwrap length for the message
- * @var int
- */
- protected $maxColumnWidth;
-
- /**
- * The Content-type for the message
- * @var string
- */
- protected $contentType = 'text/plain';
-
- /**
- * The encoding for the message
- * @var string
- */
- protected $encoding = 'utf-8';
-
- /**
- * @param string|array $to The receiver of the mail
- * @param string $subject The subject of the mail
- * @param string $from The sender of the mail
- * @param int $level The minimum logging level at which this handler will be triggered
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- * @param int $maxColumnWidth The maximum column width that the message lines will have
- */
- public function __construct($to, $subject, $from, $level = Logger::ERROR, $bubble = true, $maxColumnWidth = 70)
- {
- parent::__construct($level, $bubble);
- $this->to = is_array($to) ? $to : array($to);
- $this->subject = $subject;
- $this->addHeader(sprintf('From: %s', $from));
- $this->maxColumnWidth = $maxColumnWidth;
- }
-
- /**
- * Add headers to the message
- *
- * @param string|array $headers Custom added headers
- * @return self
- */
- public function addHeader($headers)
- {
- foreach ((array) $headers as $header) {
- if (strpos($header, "\n") !== false || strpos($header, "\r") !== false) {
- throw new \InvalidArgumentException('Headers can not contain newline characters for security reasons');
- }
- $this->headers[] = $header;
- }
-
- return $this;
- }
-
- /**
- * Add parameters to the message
- *
- * @param string|array $parameters Custom added parameters
- * @return self
- */
- public function addParameter($parameters)
- {
- $this->parameters = array_merge($this->parameters, (array) $parameters);
-
- return $this;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function send($content, array $records)
- {
- $content = wordwrap($content, $this->maxColumnWidth);
- $headers = ltrim(implode("\r\n", $this->headers) . "\r\n", "\r\n");
- $headers .= 'Content-type: ' . $this->getContentType() . '; charset=' . $this->getEncoding() . "\r\n";
- if ($this->getContentType() == 'text/html' && false === strpos($headers, 'MIME-Version:')) {
- $headers .= 'MIME-Version: 1.0' . "\r\n";
- }
-
- $subject = $this->subject;
- if ($records) {
- $subjectFormatter = new LineFormatter($this->subject);
- $subject = $subjectFormatter->format($this->getHighestRecord($records));
- }
-
- $parameters = implode(' ', $this->parameters);
- foreach ($this->to as $to) {
- mail($to, $subject, $content, $headers, $parameters);
- }
- }
-
- /**
- * @return string $contentType
- */
- public function getContentType()
- {
- return $this->contentType;
- }
-
- /**
- * @return string $encoding
- */
- public function getEncoding()
- {
- return $this->encoding;
- }
-
- /**
- * @param string $contentType The content type of the email - Defaults to text/plain. Use text/html for HTML
- * messages.
- * @return self
- */
- public function setContentType($contentType)
- {
- if (strpos($contentType, "\n") !== false || strpos($contentType, "\r") !== false) {
- throw new \InvalidArgumentException('The content type can not contain newline characters to prevent email header injection');
- }
-
- $this->contentType = $contentType;
-
- return $this;
- }
-
- /**
- * @param string $encoding
- * @return self
- */
- public function setEncoding($encoding)
- {
- if (strpos($encoding, "\n") !== false || strpos($encoding, "\r") !== false) {
- throw new \InvalidArgumentException('The encoding can not contain newline characters to prevent email header injection');
- }
-
- $this->encoding = $encoding;
-
- return $this;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php
deleted file mode 100644
index 64dc1381..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php
+++ /dev/null
@@ -1,205 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Logger;
-use Monolog\Utils;
-use Monolog\Formatter\NormalizerFormatter;
-
-/**
- * Class to record a log on a NewRelic application.
- * Enabling New Relic High Security mode may prevent capture of useful information.
- *
- * This handler requires a NormalizerFormatter to function and expects an array in $record['formatted']
- *
- * @see https://docs.newrelic.com/docs/agents/php-agent
- * @see https://docs.newrelic.com/docs/accounts-partnerships/accounts/security/high-security
- */
-class NewRelicHandler extends AbstractProcessingHandler
-{
- /**
- * Name of the New Relic application that will receive logs from this handler.
- *
- * @var string
- */
- protected $appName;
-
- /**
- * Name of the current transaction
- *
- * @var string
- */
- protected $transactionName;
-
- /**
- * Some context and extra data is passed into the handler as arrays of values. Do we send them as is
- * (useful if we are using the API), or explode them for display on the NewRelic RPM website?
- *
- * @var bool
- */
- protected $explodeArrays;
-
- /**
- * {@inheritDoc}
- *
- * @param string $appName
- * @param bool $explodeArrays
- * @param string $transactionName
- */
- public function __construct(
- $level = Logger::ERROR,
- $bubble = true,
- $appName = null,
- $explodeArrays = false,
- $transactionName = null
- ) {
- parent::__construct($level, $bubble);
-
- $this->appName = $appName;
- $this->explodeArrays = $explodeArrays;
- $this->transactionName = $transactionName;
- }
-
- /**
- * {@inheritDoc}
- */
- protected function write(array $record)
- {
- if (!$this->isNewRelicEnabled()) {
- throw new MissingExtensionException('The newrelic PHP extension is required to use the NewRelicHandler');
- }
-
- if ($appName = $this->getAppName($record['context'])) {
- $this->setNewRelicAppName($appName);
- }
-
- if ($transactionName = $this->getTransactionName($record['context'])) {
- $this->setNewRelicTransactionName($transactionName);
- unset($record['formatted']['context']['transaction_name']);
- }
-
- if (isset($record['context']['exception']) && ($record['context']['exception'] instanceof \Exception || (PHP_VERSION_ID >= 70000 && $record['context']['exception'] instanceof \Throwable))) {
- newrelic_notice_error($record['message'], $record['context']['exception']);
- unset($record['formatted']['context']['exception']);
- } else {
- newrelic_notice_error($record['message']);
- }
-
- if (isset($record['formatted']['context']) && is_array($record['formatted']['context'])) {
- foreach ($record['formatted']['context'] as $key => $parameter) {
- if (is_array($parameter) && $this->explodeArrays) {
- foreach ($parameter as $paramKey => $paramValue) {
- $this->setNewRelicParameter('context_' . $key . '_' . $paramKey, $paramValue);
- }
- } else {
- $this->setNewRelicParameter('context_' . $key, $parameter);
- }
- }
- }
-
- if (isset($record['formatted']['extra']) && is_array($record['formatted']['extra'])) {
- foreach ($record['formatted']['extra'] as $key => $parameter) {
- if (is_array($parameter) && $this->explodeArrays) {
- foreach ($parameter as $paramKey => $paramValue) {
- $this->setNewRelicParameter('extra_' . $key . '_' . $paramKey, $paramValue);
- }
- } else {
- $this->setNewRelicParameter('extra_' . $key, $parameter);
- }
- }
- }
- }
-
- /**
- * Checks whether the NewRelic extension is enabled in the system.
- *
- * @return bool
- */
- protected function isNewRelicEnabled()
- {
- return extension_loaded('newrelic');
- }
-
- /**
- * Returns the appname where this log should be sent. Each log can override the default appname, set in this
- * handler's constructor, by providing the appname in it's context.
- *
- * @param array $context
- * @return null|string
- */
- protected function getAppName(array $context)
- {
- if (isset($context['appname'])) {
- return $context['appname'];
- }
-
- return $this->appName;
- }
-
- /**
- * Returns the name of the current transaction. Each log can override the default transaction name, set in this
- * handler's constructor, by providing the transaction_name in it's context
- *
- * @param array $context
- *
- * @return null|string
- */
- protected function getTransactionName(array $context)
- {
- if (isset($context['transaction_name'])) {
- return $context['transaction_name'];
- }
-
- return $this->transactionName;
- }
-
- /**
- * Sets the NewRelic application that should receive this log.
- *
- * @param string $appName
- */
- protected function setNewRelicAppName($appName)
- {
- newrelic_set_appname($appName);
- }
-
- /**
- * Overwrites the name of the current transaction
- *
- * @param string $transactionName
- */
- protected function setNewRelicTransactionName($transactionName)
- {
- newrelic_name_transaction($transactionName);
- }
-
- /**
- * @param string $key
- * @param mixed $value
- */
- protected function setNewRelicParameter($key, $value)
- {
- if (null === $value || is_scalar($value)) {
- newrelic_add_custom_parameter($key, $value);
- } else {
- newrelic_add_custom_parameter($key, Utils::jsonEncode($value, null, true));
- }
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getDefaultFormatter()
- {
- return new NormalizerFormatter();
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/NullHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/NullHandler.php
deleted file mode 100644
index 4b845883..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/NullHandler.php
+++ /dev/null
@@ -1,45 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Logger;
-
-/**
- * Blackhole
- *
- * Any record it can handle will be thrown away. This can be used
- * to put on top of an existing stack to override it temporarily.
- *
- * @author Jordi Boggiano
- */
-class NullHandler extends AbstractHandler
-{
- /**
- * @param int $level The minimum logging level at which this handler will be triggered
- */
- public function __construct($level = Logger::DEBUG)
- {
- parent::__construct($level, false);
- }
-
- /**
- * {@inheritdoc}
- */
- public function handle(array $record)
- {
- if ($record['level'] < $this->level) {
- return false;
- }
-
- return true;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php
deleted file mode 100644
index d0a8b43e..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php
+++ /dev/null
@@ -1,243 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Exception;
-use Monolog\Formatter\LineFormatter;
-use Monolog\Logger;
-use Monolog\Utils;
-use PhpConsole\Connector;
-use PhpConsole\Handler;
-use PhpConsole\Helper;
-
-/**
- * Monolog handler for Google Chrome extension "PHP Console"
- *
- * Display PHP error/debug log messages in Google Chrome console and notification popups, executes PHP code remotely
- *
- * Usage:
- * 1. Install Google Chrome extension https://chrome.google.com/webstore/detail/php-console/nfhmhhlpfleoednkpnnnkolmclajemef
- * 2. See overview https://github.com/barbushin/php-console#overview
- * 3. Install PHP Console library https://github.com/barbushin/php-console#installation
- * 4. Example (result will looks like http://i.hizliresim.com/vg3Pz4.png)
- *
- * $logger = new \Monolog\Logger('all', array(new \Monolog\Handler\PHPConsoleHandler()));
- * \Monolog\ErrorHandler::register($logger);
- * echo $undefinedVar;
- * $logger->addDebug('SELECT * FROM users', array('db', 'time' => 0.012));
- * PC::debug($_SERVER); // PHP Console debugger for any type of vars
- *
- * @author Sergey Barbushin https://www.linkedin.com/in/barbushin
- */
-class PHPConsoleHandler extends AbstractProcessingHandler
-{
- private $options = array(
- 'enabled' => true, // bool Is PHP Console server enabled
- 'classesPartialsTraceIgnore' => array('Monolog\\'), // array Hide calls of classes started with...
- 'debugTagsKeysInContext' => array(0, 'tag'), // bool Is PHP Console server enabled
- 'useOwnErrorsHandler' => false, // bool Enable errors handling
- 'useOwnExceptionsHandler' => false, // bool Enable exceptions handling
- 'sourcesBasePath' => null, // string Base path of all project sources to strip in errors source paths
- 'registerHelper' => true, // bool Register PhpConsole\Helper that allows short debug calls like PC::debug($var, 'ta.g.s')
- 'serverEncoding' => null, // string|null Server internal encoding
- 'headersLimit' => null, // int|null Set headers size limit for your web-server
- 'password' => null, // string|null Protect PHP Console connection by password
- 'enableSslOnlyMode' => false, // bool Force connection by SSL for clients with PHP Console installed
- 'ipMasks' => array(), // array Set IP masks of clients that will be allowed to connect to PHP Console: array('192.168.*.*', '127.0.0.1')
- 'enableEvalListener' => false, // bool Enable eval request to be handled by eval dispatcher(if enabled, 'password' option is also required)
- 'dumperDetectCallbacks' => false, // bool Convert callback items in dumper vars to (callback SomeClass::someMethod) strings
- 'dumperLevelLimit' => 5, // int Maximum dumped vars array or object nested dump level
- 'dumperItemsCountLimit' => 100, // int Maximum dumped var same level array items or object properties number
- 'dumperItemSizeLimit' => 5000, // int Maximum length of any string or dumped array item
- 'dumperDumpSizeLimit' => 500000, // int Maximum approximate size of dumped vars result formatted in JSON
- 'detectDumpTraceAndSource' => false, // bool Autodetect and append trace data to debug
- 'dataStorage' => null, // PhpConsole\Storage|null Fixes problem with custom $_SESSION handler(see http://goo.gl/Ne8juJ)
- );
-
- /** @var Connector */
- private $connector;
-
- /**
- * @param array $options See \Monolog\Handler\PHPConsoleHandler::$options for more details
- * @param Connector|null $connector Instance of \PhpConsole\Connector class (optional)
- * @param int $level
- * @param bool $bubble
- * @throws Exception
- */
- public function __construct(array $options = array(), Connector $connector = null, $level = Logger::DEBUG, $bubble = true)
- {
- if (!class_exists('PhpConsole\Connector')) {
- throw new Exception('PHP Console library not found. See https://github.com/barbushin/php-console#installation');
- }
- parent::__construct($level, $bubble);
- $this->options = $this->initOptions($options);
- $this->connector = $this->initConnector($connector);
- }
-
- private function initOptions(array $options)
- {
- $wrongOptions = array_diff(array_keys($options), array_keys($this->options));
- if ($wrongOptions) {
- throw new Exception('Unknown options: ' . implode(', ', $wrongOptions));
- }
-
- return array_replace($this->options, $options);
- }
-
- private function initConnector(Connector $connector = null)
- {
- if (!$connector) {
- if ($this->options['dataStorage']) {
- Connector::setPostponeStorage($this->options['dataStorage']);
- }
- $connector = Connector::getInstance();
- }
-
- if ($this->options['registerHelper'] && !Helper::isRegistered()) {
- Helper::register();
- }
-
- if ($this->options['enabled'] && $connector->isActiveClient()) {
- if ($this->options['useOwnErrorsHandler'] || $this->options['useOwnExceptionsHandler']) {
- $handler = Handler::getInstance();
- $handler->setHandleErrors($this->options['useOwnErrorsHandler']);
- $handler->setHandleExceptions($this->options['useOwnExceptionsHandler']);
- $handler->start();
- }
- if ($this->options['sourcesBasePath']) {
- $connector->setSourcesBasePath($this->options['sourcesBasePath']);
- }
- if ($this->options['serverEncoding']) {
- $connector->setServerEncoding($this->options['serverEncoding']);
- }
- if ($this->options['password']) {
- $connector->setPassword($this->options['password']);
- }
- if ($this->options['enableSslOnlyMode']) {
- $connector->enableSslOnlyMode();
- }
- if ($this->options['ipMasks']) {
- $connector->setAllowedIpMasks($this->options['ipMasks']);
- }
- if ($this->options['headersLimit']) {
- $connector->setHeadersLimit($this->options['headersLimit']);
- }
- if ($this->options['detectDumpTraceAndSource']) {
- $connector->getDebugDispatcher()->detectTraceAndSource = true;
- }
- $dumper = $connector->getDumper();
- $dumper->levelLimit = $this->options['dumperLevelLimit'];
- $dumper->itemsCountLimit = $this->options['dumperItemsCountLimit'];
- $dumper->itemSizeLimit = $this->options['dumperItemSizeLimit'];
- $dumper->dumpSizeLimit = $this->options['dumperDumpSizeLimit'];
- $dumper->detectCallbacks = $this->options['dumperDetectCallbacks'];
- if ($this->options['enableEvalListener']) {
- $connector->startEvalRequestsListener();
- }
- }
-
- return $connector;
- }
-
- public function getConnector()
- {
- return $this->connector;
- }
-
- public function getOptions()
- {
- return $this->options;
- }
-
- public function handle(array $record)
- {
- if ($this->options['enabled'] && $this->connector->isActiveClient()) {
- return parent::handle($record);
- }
-
- return !$this->bubble;
- }
-
- /**
- * Writes the record down to the log of the implementing handler
- *
- * @param array $record
- * @return void
- */
- protected function write(array $record)
- {
- if ($record['level'] < Logger::NOTICE) {
- $this->handleDebugRecord($record);
- } elseif (isset($record['context']['exception']) && $record['context']['exception'] instanceof Exception) {
- $this->handleExceptionRecord($record);
- } else {
- $this->handleErrorRecord($record);
- }
- }
-
- private function handleDebugRecord(array $record)
- {
- $tags = $this->getRecordTags($record);
- $message = $record['message'];
- if ($record['context']) {
- $message .= ' ' . Utils::jsonEncode($this->connector->getDumper()->dump(array_filter($record['context'])), null, true);
- }
- $this->connector->getDebugDispatcher()->dispatchDebug($message, $tags, $this->options['classesPartialsTraceIgnore']);
- }
-
- private function handleExceptionRecord(array $record)
- {
- $this->connector->getErrorsDispatcher()->dispatchException($record['context']['exception']);
- }
-
- private function handleErrorRecord(array $record)
- {
- $context = $record['context'];
-
- $this->connector->getErrorsDispatcher()->dispatchError(
- isset($context['code']) ? $context['code'] : null,
- isset($context['message']) ? $context['message'] : $record['message'],
- isset($context['file']) ? $context['file'] : null,
- isset($context['line']) ? $context['line'] : null,
- $this->options['classesPartialsTraceIgnore']
- );
- }
-
- private function getRecordTags(array &$record)
- {
- $tags = null;
- if (!empty($record['context'])) {
- $context = & $record['context'];
- foreach ($this->options['debugTagsKeysInContext'] as $key) {
- if (!empty($context[$key])) {
- $tags = $context[$key];
- if ($key === 0) {
- array_shift($context);
- } else {
- unset($context[$key]);
- }
- break;
- }
- }
- }
-
- return $tags ?: strtolower($record['level_name']);
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getDefaultFormatter()
- {
- return new LineFormatter('%message%');
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/ProcessableHandlerInterface.php b/vendor/monolog/monolog/src/Monolog/Handler/ProcessableHandlerInterface.php
deleted file mode 100644
index 66a3d83a..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/ProcessableHandlerInterface.php
+++ /dev/null
@@ -1,40 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Processor\ProcessorInterface;
-
-/**
- * Interface to describe loggers that have processors
- *
- * This interface is present in monolog 1.x to ease forward compatibility.
- *
- * @author Jordi Boggiano
- */
-interface ProcessableHandlerInterface
-{
- /**
- * Adds a processor in the stack.
- *
- * @param ProcessorInterface|callable $callback
- * @return HandlerInterface self
- */
- public function pushProcessor($callback): HandlerInterface;
-
- /**
- * Removes the processor on top of the stack and returns it.
- *
- * @throws \LogicException In case the processor stack is empty
- * @return callable
- */
- public function popProcessor(): callable;
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/ProcessableHandlerTrait.php b/vendor/monolog/monolog/src/Monolog/Handler/ProcessableHandlerTrait.php
deleted file mode 100644
index 09f32a12..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/ProcessableHandlerTrait.php
+++ /dev/null
@@ -1,73 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\ResettableInterface;
-
-/**
- * Helper trait for implementing ProcessableInterface
- *
- * This trait is present in monolog 1.x to ease forward compatibility.
- *
- * @author Jordi Boggiano
- */
-trait ProcessableHandlerTrait
-{
- /**
- * @var callable[]
- */
- protected $processors = [];
-
- /**
- * {@inheritdoc}
- * @suppress PhanTypeMismatchReturn
- */
- public function pushProcessor($callback): HandlerInterface
- {
- array_unshift($this->processors, $callback);
-
- return $this;
- }
-
- /**
- * {@inheritdoc}
- */
- public function popProcessor(): callable
- {
- if (!$this->processors) {
- throw new \LogicException('You tried to pop from an empty processor stack.');
- }
-
- return array_shift($this->processors);
- }
-
- /**
- * Processes a record.
- */
- protected function processRecord(array $record): array
- {
- foreach ($this->processors as $processor) {
- $record = $processor($record);
- }
-
- return $record;
- }
-
- protected function resetProcessors(): void
- {
- foreach ($this->processors as $processor) {
- if ($processor instanceof ResettableInterface) {
- $processor->reset();
- }
- }
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/PsrHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/PsrHandler.php
deleted file mode 100644
index a99e6ab7..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/PsrHandler.php
+++ /dev/null
@@ -1,56 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Logger;
-use Psr\Log\LoggerInterface;
-
-/**
- * Proxies log messages to an existing PSR-3 compliant logger.
- *
- * @author Michael Moussa
- */
-class PsrHandler extends AbstractHandler
-{
- /**
- * PSR-3 compliant logger
- *
- * @var LoggerInterface
- */
- protected $logger;
-
- /**
- * @param LoggerInterface $logger The underlying PSR-3 compliant logger to which messages will be proxied
- * @param int $level The minimum logging level at which this handler will be triggered
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- */
- public function __construct(LoggerInterface $logger, $level = Logger::DEBUG, $bubble = true)
- {
- parent::__construct($level, $bubble);
-
- $this->logger = $logger;
- }
-
- /**
- * {@inheritDoc}
- */
- public function handle(array $record)
- {
- if (!$this->isHandling($record)) {
- return false;
- }
-
- $this->logger->log(strtolower($record['level_name']), $record['message'], $record['context']);
-
- return false === $this->bubble;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/PushoverHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/PushoverHandler.php
deleted file mode 100644
index f27bb3da..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/PushoverHandler.php
+++ /dev/null
@@ -1,185 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Logger;
-
-/**
- * Sends notifications through the pushover api to mobile phones
- *
- * @author Sebastian Göttschkes
- * @see https://www.pushover.net/api
- */
-class PushoverHandler extends SocketHandler
-{
- private $token;
- private $users;
- private $title;
- private $user;
- private $retry;
- private $expire;
-
- private $highPriorityLevel;
- private $emergencyLevel;
- private $useFormattedMessage = false;
-
- /**
- * All parameters that can be sent to Pushover
- * @see https://pushover.net/api
- * @var array
- */
- private $parameterNames = array(
- 'token' => true,
- 'user' => true,
- 'message' => true,
- 'device' => true,
- 'title' => true,
- 'url' => true,
- 'url_title' => true,
- 'priority' => true,
- 'timestamp' => true,
- 'sound' => true,
- 'retry' => true,
- 'expire' => true,
- 'callback' => true,
- );
-
- /**
- * Sounds the api supports by default
- * @see https://pushover.net/api#sounds
- * @var array
- */
- private $sounds = array(
- 'pushover', 'bike', 'bugle', 'cashregister', 'classical', 'cosmic', 'falling', 'gamelan', 'incoming',
- 'intermission', 'magic', 'mechanical', 'pianobar', 'siren', 'spacealarm', 'tugboat', 'alien', 'climb',
- 'persistent', 'echo', 'updown', 'none',
- );
-
- /**
- * @param string $token Pushover api token
- * @param string|array $users Pushover user id or array of ids the message will be sent to
- * @param string $title Title sent to the Pushover API
- * @param int $level The minimum logging level at which this handler will be triggered
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- * @param bool $useSSL Whether to connect via SSL. Required when pushing messages to users that are not
- * the pushover.net app owner. OpenSSL is required for this option.
- * @param int $highPriorityLevel The minimum logging level at which this handler will start
- * sending "high priority" requests to the Pushover API
- * @param int $emergencyLevel The minimum logging level at which this handler will start
- * sending "emergency" requests to the Pushover API
- * @param int $retry The retry parameter specifies how often (in seconds) the Pushover servers will send the same notification to the user.
- * @param int $expire The expire parameter specifies how many seconds your notification will continue to be retried for (every retry seconds).
- */
- public function __construct($token, $users, $title = null, $level = Logger::CRITICAL, $bubble = true, $useSSL = true, $highPriorityLevel = Logger::CRITICAL, $emergencyLevel = Logger::EMERGENCY, $retry = 30, $expire = 25200)
- {
- $connectionString = $useSSL ? 'ssl://api.pushover.net:443' : 'api.pushover.net:80';
- parent::__construct($connectionString, $level, $bubble);
-
- $this->token = $token;
- $this->users = (array) $users;
- $this->title = $title ?: gethostname();
- $this->highPriorityLevel = Logger::toMonologLevel($highPriorityLevel);
- $this->emergencyLevel = Logger::toMonologLevel($emergencyLevel);
- $this->retry = $retry;
- $this->expire = $expire;
- }
-
- protected function generateDataStream($record)
- {
- $content = $this->buildContent($record);
-
- return $this->buildHeader($content) . $content;
- }
-
- private function buildContent($record)
- {
- // Pushover has a limit of 512 characters on title and message combined.
- $maxMessageLength = 512 - strlen($this->title);
-
- $message = ($this->useFormattedMessage) ? $record['formatted'] : $record['message'];
- $message = substr($message, 0, $maxMessageLength);
-
- $timestamp = $record['datetime']->getTimestamp();
-
- $dataArray = array(
- 'token' => $this->token,
- 'user' => $this->user,
- 'message' => $message,
- 'title' => $this->title,
- 'timestamp' => $timestamp,
- );
-
- if (isset($record['level']) && $record['level'] >= $this->emergencyLevel) {
- $dataArray['priority'] = 2;
- $dataArray['retry'] = $this->retry;
- $dataArray['expire'] = $this->expire;
- } elseif (isset($record['level']) && $record['level'] >= $this->highPriorityLevel) {
- $dataArray['priority'] = 1;
- }
-
- // First determine the available parameters
- $context = array_intersect_key($record['context'], $this->parameterNames);
- $extra = array_intersect_key($record['extra'], $this->parameterNames);
-
- // Least important info should be merged with subsequent info
- $dataArray = array_merge($extra, $context, $dataArray);
-
- // Only pass sounds that are supported by the API
- if (isset($dataArray['sound']) && !in_array($dataArray['sound'], $this->sounds)) {
- unset($dataArray['sound']);
- }
-
- return http_build_query($dataArray);
- }
-
- private function buildHeader($content)
- {
- $header = "POST /1/messages.json HTTP/1.1\r\n";
- $header .= "Host: api.pushover.net\r\n";
- $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
- $header .= "Content-Length: " . strlen($content) . "\r\n";
- $header .= "\r\n";
-
- return $header;
- }
-
- protected function write(array $record)
- {
- foreach ($this->users as $user) {
- $this->user = $user;
-
- parent::write($record);
- $this->closeSocket();
- }
-
- $this->user = null;
- }
-
- public function setHighPriorityLevel($value)
- {
- $this->highPriorityLevel = $value;
- }
-
- public function setEmergencyLevel($value)
- {
- $this->emergencyLevel = $value;
- }
-
- /**
- * Use the formatted message?
- * @param bool $value
- */
- public function useFormattedMessage($value)
- {
- $this->useFormattedMessage = (bool) $value;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/RavenHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/RavenHandler.php
deleted file mode 100644
index b0298fa6..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/RavenHandler.php
+++ /dev/null
@@ -1,234 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Formatter\LineFormatter;
-use Monolog\Formatter\FormatterInterface;
-use Monolog\Logger;
-use Raven_Client;
-
-/**
- * Handler to send messages to a Sentry (https://github.com/getsentry/sentry) server
- * using sentry-php (https://github.com/getsentry/sentry-php)
- *
- * @author Marc Abramowitz
- */
-class RavenHandler extends AbstractProcessingHandler
-{
- /**
- * Translates Monolog log levels to Raven log levels.
- */
- protected $logLevels = array(
- Logger::DEBUG => Raven_Client::DEBUG,
- Logger::INFO => Raven_Client::INFO,
- Logger::NOTICE => Raven_Client::INFO,
- Logger::WARNING => Raven_Client::WARNING,
- Logger::ERROR => Raven_Client::ERROR,
- Logger::CRITICAL => Raven_Client::FATAL,
- Logger::ALERT => Raven_Client::FATAL,
- Logger::EMERGENCY => Raven_Client::FATAL,
- );
-
- /**
- * @var string should represent the current version of the calling
- * software. Can be any string (git commit, version number)
- */
- protected $release;
-
- /**
- * @var Raven_Client the client object that sends the message to the server
- */
- protected $ravenClient;
-
- /**
- * @var FormatterInterface The formatter to use for the logs generated via handleBatch()
- */
- protected $batchFormatter;
-
- /**
- * @param Raven_Client $ravenClient
- * @param int $level The minimum logging level at which this handler will be triggered
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- */
- public function __construct(Raven_Client $ravenClient, $level = Logger::DEBUG, $bubble = true)
- {
- @trigger_error('The Monolog\Handler\RavenHandler class is deprecated. You should rather upgrade to the sentry/sentry 2.x and use Sentry\Monolog\Handler, see https://github.com/getsentry/sentry-php/blob/master/src/Monolog/Handler.php', E_USER_DEPRECATED);
-
- parent::__construct($level, $bubble);
-
- $this->ravenClient = $ravenClient;
- }
-
- /**
- * {@inheritdoc}
- */
- public function handleBatch(array $records)
- {
- $level = $this->level;
-
- // filter records based on their level
- $records = array_filter($records, function ($record) use ($level) {
- return $record['level'] >= $level;
- });
-
- if (!$records) {
- return;
- }
-
- // the record with the highest severity is the "main" one
- $record = array_reduce($records, function ($highest, $record) {
- if (null === $highest || $record['level'] > $highest['level']) {
- return $record;
- }
-
- return $highest;
- });
-
- // the other ones are added as a context item
- $logs = array();
- foreach ($records as $r) {
- $logs[] = $this->processRecord($r);
- }
-
- if ($logs) {
- $record['context']['logs'] = (string) $this->getBatchFormatter()->formatBatch($logs);
- }
-
- $this->handle($record);
- }
-
- /**
- * Sets the formatter for the logs generated by handleBatch().
- *
- * @param FormatterInterface $formatter
- */
- public function setBatchFormatter(FormatterInterface $formatter)
- {
- $this->batchFormatter = $formatter;
- }
-
- /**
- * Gets the formatter for the logs generated by handleBatch().
- *
- * @return FormatterInterface
- */
- public function getBatchFormatter()
- {
- if (!$this->batchFormatter) {
- $this->batchFormatter = $this->getDefaultBatchFormatter();
- }
-
- return $this->batchFormatter;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function write(array $record)
- {
- $previousUserContext = false;
- $options = array();
- $options['level'] = $this->logLevels[$record['level']];
- $options['tags'] = array();
- if (!empty($record['extra']['tags'])) {
- $options['tags'] = array_merge($options['tags'], $record['extra']['tags']);
- unset($record['extra']['tags']);
- }
- if (!empty($record['context']['tags'])) {
- $options['tags'] = array_merge($options['tags'], $record['context']['tags']);
- unset($record['context']['tags']);
- }
- if (!empty($record['context']['fingerprint'])) {
- $options['fingerprint'] = $record['context']['fingerprint'];
- unset($record['context']['fingerprint']);
- }
- if (!empty($record['context']['logger'])) {
- $options['logger'] = $record['context']['logger'];
- unset($record['context']['logger']);
- } else {
- $options['logger'] = $record['channel'];
- }
- foreach ($this->getExtraParameters() as $key) {
- foreach (array('extra', 'context') as $source) {
- if (!empty($record[$source][$key])) {
- $options[$key] = $record[$source][$key];
- unset($record[$source][$key]);
- }
- }
- }
- if (!empty($record['context'])) {
- $options['extra']['context'] = $record['context'];
- if (!empty($record['context']['user'])) {
- $previousUserContext = $this->ravenClient->context->user;
- $this->ravenClient->user_context($record['context']['user']);
- unset($options['extra']['context']['user']);
- }
- }
- if (!empty($record['extra'])) {
- $options['extra']['extra'] = $record['extra'];
- }
-
- if (!empty($this->release) && !isset($options['release'])) {
- $options['release'] = $this->release;
- }
-
- if (isset($record['context']['exception']) && ($record['context']['exception'] instanceof \Exception || (PHP_VERSION_ID >= 70000 && $record['context']['exception'] instanceof \Throwable))) {
- $options['message'] = $record['formatted'];
- $this->ravenClient->captureException($record['context']['exception'], $options);
- } else {
- $this->ravenClient->captureMessage($record['formatted'], array(), $options);
- }
-
- if ($previousUserContext !== false) {
- $this->ravenClient->user_context($previousUserContext);
- }
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getDefaultFormatter()
- {
- return new LineFormatter('[%channel%] %message%');
- }
-
- /**
- * Gets the default formatter for the logs generated by handleBatch().
- *
- * @return FormatterInterface
- */
- protected function getDefaultBatchFormatter()
- {
- return new LineFormatter();
- }
-
- /**
- * Gets extra parameters supported by Raven that can be found in "extra" and "context"
- *
- * @return array
- */
- protected function getExtraParameters()
- {
- return array('contexts', 'checksum', 'release', 'event_id');
- }
-
- /**
- * @param string $value
- * @return self
- */
- public function setRelease($value)
- {
- $this->release = $value;
-
- return $this;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/RedisHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/RedisHandler.php
deleted file mode 100644
index 3725db24..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/RedisHandler.php
+++ /dev/null
@@ -1,98 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Formatter\LineFormatter;
-use Monolog\Logger;
-
-/**
- * Logs to a Redis key using rpush
- *
- * usage example:
- *
- * $log = new Logger('application');
- * $redis = new RedisHandler(new Predis\Client("tcp://localhost:6379"), "logs", "prod");
- * $log->pushHandler($redis);
- *
- * @author Thomas Tourlourat
- */
-class RedisHandler extends AbstractProcessingHandler
-{
- private $redisClient;
- private $redisKey;
- protected $capSize;
-
- /**
- * @param \Predis\Client|\Redis $redis The redis instance
- * @param string $key The key name to push records to
- * @param int $level The minimum logging level at which this handler will be triggered
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- * @param int|false $capSize Number of entries to limit list size to
- */
- public function __construct($redis, $key, $level = Logger::DEBUG, $bubble = true, $capSize = false)
- {
- if (!(($redis instanceof \Predis\Client) || ($redis instanceof \Redis))) {
- throw new \InvalidArgumentException('Predis\Client or Redis instance required');
- }
-
- $this->redisClient = $redis;
- $this->redisKey = $key;
- $this->capSize = $capSize;
-
- parent::__construct($level, $bubble);
- }
-
- /**
- * {@inheritDoc}
- */
- protected function write(array $record)
- {
- if ($this->capSize) {
- $this->writeCapped($record);
- } else {
- $this->redisClient->rpush($this->redisKey, $record["formatted"]);
- }
- }
-
- /**
- * Write and cap the collection
- * Writes the record to the redis list and caps its
- *
- * @param array $record associative record array
- * @return void
- */
- protected function writeCapped(array $record)
- {
- if ($this->redisClient instanceof \Redis) {
- $mode = defined('\Redis::MULTI') ? \Redis::MULTI : 1;
- $this->redisClient->multi($mode)
- ->rpush($this->redisKey, $record["formatted"])
- ->ltrim($this->redisKey, -$this->capSize, -1)
- ->exec();
- } else {
- $redisKey = $this->redisKey;
- $capSize = $this->capSize;
- $this->redisClient->transaction(function ($tx) use ($record, $redisKey, $capSize) {
- $tx->rpush($redisKey, $record["formatted"]);
- $tx->ltrim($redisKey, -$capSize, -1);
- });
- }
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getDefaultFormatter()
- {
- return new LineFormatter();
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/RollbarHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/RollbarHandler.php
deleted file mode 100644
index 65073ffe..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/RollbarHandler.php
+++ /dev/null
@@ -1,144 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use RollbarNotifier;
-use Exception;
-use Monolog\Logger;
-
-/**
- * Sends errors to Rollbar
- *
- * If the context data contains a `payload` key, that is used as an array
- * of payload options to RollbarNotifier's report_message/report_exception methods.
- *
- * Rollbar's context info will contain the context + extra keys from the log record
- * merged, and then on top of that a few keys:
- *
- * - level (rollbar level name)
- * - monolog_level (monolog level name, raw level, as rollbar only has 5 but monolog 8)
- * - channel
- * - datetime (unix timestamp)
- *
- * @author Paul Statezny
- */
-class RollbarHandler extends AbstractProcessingHandler
-{
- /**
- * Rollbar notifier
- *
- * @var RollbarNotifier
- */
- protected $rollbarNotifier;
-
- protected $levelMap = array(
- Logger::DEBUG => 'debug',
- Logger::INFO => 'info',
- Logger::NOTICE => 'info',
- Logger::WARNING => 'warning',
- Logger::ERROR => 'error',
- Logger::CRITICAL => 'critical',
- Logger::ALERT => 'critical',
- Logger::EMERGENCY => 'critical',
- );
-
- /**
- * Records whether any log records have been added since the last flush of the rollbar notifier
- *
- * @var bool
- */
- private $hasRecords = false;
-
- protected $initialized = false;
-
- /**
- * @param RollbarNotifier $rollbarNotifier RollbarNotifier object constructed with valid token
- * @param int $level The minimum logging level at which this handler will be triggered
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- */
- public function __construct(RollbarNotifier $rollbarNotifier, $level = Logger::ERROR, $bubble = true)
- {
- $this->rollbarNotifier = $rollbarNotifier;
-
- parent::__construct($level, $bubble);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function write(array $record)
- {
- if (!$this->initialized) {
- // __destructor() doesn't get called on Fatal errors
- register_shutdown_function(array($this, 'close'));
- $this->initialized = true;
- }
-
- $context = $record['context'];
- $payload = array();
- if (isset($context['payload'])) {
- $payload = $context['payload'];
- unset($context['payload']);
- }
- $context = array_merge($context, $record['extra'], array(
- 'level' => $this->levelMap[$record['level']],
- 'monolog_level' => $record['level_name'],
- 'channel' => $record['channel'],
- 'datetime' => $record['datetime']->format('U'),
- ));
-
- if (isset($context['exception']) && $context['exception'] instanceof Exception) {
- $payload['level'] = $context['level'];
- $exception = $context['exception'];
- unset($context['exception']);
-
- $this->rollbarNotifier->report_exception($exception, $context, $payload);
- } else {
- $this->rollbarNotifier->report_message(
- $record['message'],
- $context['level'],
- $context,
- $payload
- );
- }
-
- $this->hasRecords = true;
- }
-
- public function flush()
- {
- if ($this->hasRecords) {
- $this->rollbarNotifier->flush();
- $this->hasRecords = false;
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function close()
- {
- $this->flush();
- }
-
- /**
- * {@inheritdoc}
- */
- public function reset()
- {
- $this->flush();
-
- parent::reset();
- }
-
-
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php
deleted file mode 100644
index b8253ba0..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php
+++ /dev/null
@@ -1,191 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Logger;
-use Monolog\Utils;
-
-/**
- * Stores logs to files that are rotated every day and a limited number of files are kept.
- *
- * This rotation is only intended to be used as a workaround. Using logrotate to
- * handle the rotation is strongly encouraged when you can use it.
- *
- * @author Christophe Coevoet
- * @author Jordi Boggiano
- */
-class RotatingFileHandler extends StreamHandler
-{
- const FILE_PER_DAY = 'Y-m-d';
- const FILE_PER_MONTH = 'Y-m';
- const FILE_PER_YEAR = 'Y';
-
- protected $filename;
- protected $maxFiles;
- protected $mustRotate;
- protected $nextRotation;
- protected $filenameFormat;
- protected $dateFormat;
-
- /**
- * @param string $filename
- * @param int $maxFiles The maximal amount of files to keep (0 means unlimited)
- * @param int $level The minimum logging level at which this handler will be triggered
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- * @param int|null $filePermission Optional file permissions (default (0644) are only for owner read/write)
- * @param bool $useLocking Try to lock log file before doing any writes
- */
- public function __construct($filename, $maxFiles = 0, $level = Logger::DEBUG, $bubble = true, $filePermission = null, $useLocking = false)
- {
- $this->filename = Utils::canonicalizePath($filename);
- $this->maxFiles = (int) $maxFiles;
- $this->nextRotation = new \DateTime('tomorrow');
- $this->filenameFormat = '{filename}-{date}';
- $this->dateFormat = 'Y-m-d';
-
- parent::__construct($this->getTimedFilename(), $level, $bubble, $filePermission, $useLocking);
- }
-
- /**
- * {@inheritdoc}
- */
- public function close()
- {
- parent::close();
-
- if (true === $this->mustRotate) {
- $this->rotate();
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function reset()
- {
- parent::reset();
-
- if (true === $this->mustRotate) {
- $this->rotate();
- }
- }
-
- public function setFilenameFormat($filenameFormat, $dateFormat)
- {
- if (!preg_match('{^Y(([/_.-]?m)([/_.-]?d)?)?$}', $dateFormat)) {
- trigger_error(
- 'Invalid date format - format must be one of '.
- 'RotatingFileHandler::FILE_PER_DAY ("Y-m-d"), RotatingFileHandler::FILE_PER_MONTH ("Y-m") '.
- 'or RotatingFileHandler::FILE_PER_YEAR ("Y"), or you can set one of the '.
- 'date formats using slashes, underscores and/or dots instead of dashes.',
- E_USER_DEPRECATED
- );
- }
- if (substr_count($filenameFormat, '{date}') === 0) {
- trigger_error(
- 'Invalid filename format - format should contain at least `{date}`, because otherwise rotating is impossible.',
- E_USER_DEPRECATED
- );
- }
- $this->filenameFormat = $filenameFormat;
- $this->dateFormat = $dateFormat;
- $this->url = $this->getTimedFilename();
- $this->close();
- }
-
- /**
- * {@inheritdoc}
- */
- protected function write(array $record)
- {
- // on the first record written, if the log is new, we should rotate (once per day)
- if (null === $this->mustRotate) {
- $this->mustRotate = !file_exists($this->url);
- }
-
- if ($this->nextRotation < $record['datetime']) {
- $this->mustRotate = true;
- $this->close();
- }
-
- parent::write($record);
- }
-
- /**
- * Rotates the files.
- */
- protected function rotate()
- {
- // update filename
- $this->url = $this->getTimedFilename();
- $this->nextRotation = new \DateTime('tomorrow');
-
- // skip GC of old logs if files are unlimited
- if (0 === $this->maxFiles) {
- return;
- }
-
- $logFiles = glob($this->getGlobPattern());
- if ($this->maxFiles >= count($logFiles)) {
- // no files to remove
- return;
- }
-
- // Sorting the files by name to remove the older ones
- usort($logFiles, function ($a, $b) {
- return strcmp($b, $a);
- });
-
- foreach (array_slice($logFiles, $this->maxFiles) as $file) {
- if (is_writable($file)) {
- // suppress errors here as unlink() might fail if two processes
- // are cleaning up/rotating at the same time
- set_error_handler(function ($errno, $errstr, $errfile, $errline) {});
- unlink($file);
- restore_error_handler();
- }
- }
-
- $this->mustRotate = false;
- }
-
- protected function getTimedFilename()
- {
- $fileInfo = pathinfo($this->filename);
- $timedFilename = str_replace(
- array('{filename}', '{date}'),
- array($fileInfo['filename'], date($this->dateFormat)),
- $fileInfo['dirname'] . '/' . $this->filenameFormat
- );
-
- if (!empty($fileInfo['extension'])) {
- $timedFilename .= '.'.$fileInfo['extension'];
- }
-
- return $timedFilename;
- }
-
- protected function getGlobPattern()
- {
- $fileInfo = pathinfo($this->filename);
- $glob = str_replace(
- array('{filename}', '{date}'),
- array($fileInfo['filename'], '[0-9][0-9][0-9][0-9]*'),
- $fileInfo['dirname'] . '/' . $this->filenameFormat
- );
- if (!empty($fileInfo['extension'])) {
- $glob .= '.'.$fileInfo['extension'];
- }
-
- return $glob;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/SamplingHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/SamplingHandler.php
deleted file mode 100644
index b547ed7d..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/SamplingHandler.php
+++ /dev/null
@@ -1,113 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Formatter\FormatterInterface;
-
-/**
- * Sampling handler
- *
- * A sampled event stream can be useful for logging high frequency events in
- * a production environment where you only need an idea of what is happening
- * and are not concerned with capturing every occurrence. Since the decision to
- * handle or not handle a particular event is determined randomly, the
- * resulting sampled log is not guaranteed to contain 1/N of the events that
- * occurred in the application, but based on the Law of large numbers, it will
- * tend to be close to this ratio with a large number of attempts.
- *
- * @author Bryan Davis
- * @author Kunal Mehta
- */
-class SamplingHandler extends AbstractHandler
-{
- /**
- * @var callable|HandlerInterface $handler
- */
- protected $handler;
-
- /**
- * @var int $factor
- */
- protected $factor;
-
- /**
- * @param callable|HandlerInterface $handler Handler or factory callable($record|null, $samplingHandler).
- * @param int $factor Sample factor
- */
- public function __construct($handler, $factor)
- {
- parent::__construct();
- $this->handler = $handler;
- $this->factor = $factor;
-
- if (!$this->handler instanceof HandlerInterface && !is_callable($this->handler)) {
- throw new \RuntimeException("The given handler (".json_encode($this->handler).") is not a callable nor a Monolog\Handler\HandlerInterface object");
- }
- }
-
- public function isHandling(array $record)
- {
- return $this->getHandler($record)->isHandling($record);
- }
-
- public function handle(array $record)
- {
- if ($this->isHandling($record) && mt_rand(1, $this->factor) === 1) {
- if ($this->processors) {
- foreach ($this->processors as $processor) {
- $record = call_user_func($processor, $record);
- }
- }
-
- $this->getHandler($record)->handle($record);
- }
-
- return false === $this->bubble;
- }
-
- /**
- * Return the nested handler
- *
- * If the handler was provided as a factory callable, this will trigger the handler's instantiation.
- *
- * @return HandlerInterface
- */
- public function getHandler(array $record = null)
- {
- if (!$this->handler instanceof HandlerInterface) {
- $this->handler = call_user_func($this->handler, $record, $this);
- if (!$this->handler instanceof HandlerInterface) {
- throw new \RuntimeException("The factory callable should return a HandlerInterface");
- }
- }
-
- return $this->handler;
- }
-
- /**
- * {@inheritdoc}
- */
- public function setFormatter(FormatterInterface $formatter)
- {
- $this->getHandler()->setFormatter($formatter);
-
- return $this;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getFormatter()
- {
- return $this->getHandler()->getFormatter();
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php b/vendor/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php
deleted file mode 100644
index 39455501..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php
+++ /dev/null
@@ -1,299 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler\Slack;
-
-use Monolog\Logger;
-use Monolog\Utils;
-use Monolog\Formatter\NormalizerFormatter;
-use Monolog\Formatter\FormatterInterface;
-
-/**
- * Slack record utility helping to log to Slack webhooks or API.
- *
- * @author Greg Kedzierski
- * @author Haralan Dobrev
- * @see https://api.slack.com/incoming-webhooks
- * @see https://api.slack.com/docs/message-attachments
- */
-class SlackRecord
-{
- const COLOR_DANGER = 'danger';
-
- const COLOR_WARNING = 'warning';
-
- const COLOR_GOOD = 'good';
-
- const COLOR_DEFAULT = '#e3e4e6';
-
- /**
- * Slack channel (encoded ID or name)
- * @var string|null
- */
- private $channel;
-
- /**
- * Name of a bot
- * @var string|null
- */
- private $username;
-
- /**
- * User icon e.g. 'ghost', 'http://example.com/user.png'
- * @var string
- */
- private $userIcon;
-
- /**
- * Whether the message should be added to Slack as attachment (plain text otherwise)
- * @var bool
- */
- private $useAttachment;
-
- /**
- * Whether the the context/extra messages added to Slack as attachments are in a short style
- * @var bool
- */
- private $useShortAttachment;
-
- /**
- * Whether the attachment should include context and extra data
- * @var bool
- */
- private $includeContextAndExtra;
-
- /**
- * Dot separated list of fields to exclude from slack message. E.g. ['context.field1', 'extra.field2']
- * @var array
- */
- private $excludeFields;
-
- /**
- * @var FormatterInterface
- */
- private $formatter;
-
- /**
- * @var NormalizerFormatter
- */
- private $normalizerFormatter;
-
- public function __construct($channel = null, $username = null, $useAttachment = true, $userIcon = null, $useShortAttachment = false, $includeContextAndExtra = false, array $excludeFields = array(), FormatterInterface $formatter = null)
- {
- $this->channel = $channel;
- $this->username = $username;
- $this->userIcon = trim($userIcon, ':');
- $this->useAttachment = $useAttachment;
- $this->useShortAttachment = $useShortAttachment;
- $this->includeContextAndExtra = $includeContextAndExtra;
- $this->excludeFields = $excludeFields;
- $this->formatter = $formatter;
-
- if ($this->includeContextAndExtra) {
- $this->normalizerFormatter = new NormalizerFormatter();
- }
- }
-
- public function getSlackData(array $record)
- {
- $dataArray = array();
- $record = $this->excludeFields($record);
-
- if ($this->username) {
- $dataArray['username'] = $this->username;
- }
-
- if ($this->channel) {
- $dataArray['channel'] = $this->channel;
- }
-
- if ($this->formatter && !$this->useAttachment) {
- $message = $this->formatter->format($record);
- } else {
- $message = $record['message'];
- }
-
- if ($this->useAttachment) {
- $attachment = array(
- 'fallback' => $message,
- 'text' => $message,
- 'color' => $this->getAttachmentColor($record['level']),
- 'fields' => array(),
- 'mrkdwn_in' => array('fields'),
- 'ts' => $record['datetime']->getTimestamp()
- );
-
- if ($this->useShortAttachment) {
- $attachment['title'] = $record['level_name'];
- } else {
- $attachment['title'] = 'Message';
- $attachment['fields'][] = $this->generateAttachmentField('Level', $record['level_name']);
- }
-
-
- if ($this->includeContextAndExtra) {
- foreach (array('extra', 'context') as $key) {
- if (empty($record[$key])) {
- continue;
- }
-
- if ($this->useShortAttachment) {
- $attachment['fields'][] = $this->generateAttachmentField(
- $key,
- $record[$key]
- );
- } else {
- // Add all extra fields as individual fields in attachment
- $attachment['fields'] = array_merge(
- $attachment['fields'],
- $this->generateAttachmentFields($record[$key])
- );
- }
- }
- }
-
- $dataArray['attachments'] = array($attachment);
- } else {
- $dataArray['text'] = $message;
- }
-
- if ($this->userIcon) {
- if (filter_var($this->userIcon, FILTER_VALIDATE_URL)) {
- $dataArray['icon_url'] = $this->userIcon;
- } else {
- $dataArray['icon_emoji'] = ":{$this->userIcon}:";
- }
- }
-
- return $dataArray;
- }
-
- /**
- * Returned a Slack message attachment color associated with
- * provided level.
- *
- * @param int $level
- * @return string
- */
- public function getAttachmentColor($level)
- {
- switch (true) {
- case $level >= Logger::ERROR:
- return self::COLOR_DANGER;
- case $level >= Logger::WARNING:
- return self::COLOR_WARNING;
- case $level >= Logger::INFO:
- return self::COLOR_GOOD;
- default:
- return self::COLOR_DEFAULT;
- }
- }
-
- /**
- * Stringifies an array of key/value pairs to be used in attachment fields
- *
- * @param array $fields
- *
- * @return string
- */
- public function stringify($fields)
- {
- $normalized = $this->normalizerFormatter->format($fields);
- $prettyPrintFlag = defined('JSON_PRETTY_PRINT') ? JSON_PRETTY_PRINT : 128;
- $flags = 0;
- if (PHP_VERSION_ID >= 50400) {
- $flags = JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE;
- }
-
- $hasSecondDimension = count(array_filter($normalized, 'is_array'));
- $hasNonNumericKeys = !count(array_filter(array_keys($normalized), 'is_numeric'));
-
- return $hasSecondDimension || $hasNonNumericKeys
- ? Utils::jsonEncode($normalized, $prettyPrintFlag | $flags)
- : Utils::jsonEncode($normalized, $flags);
- }
-
- /**
- * Sets the formatter
- *
- * @param FormatterInterface $formatter
- */
- public function setFormatter(FormatterInterface $formatter)
- {
- $this->formatter = $formatter;
- }
-
- /**
- * Generates attachment field
- *
- * @param string $title
- * @param string|array $value
- *
- * @return array
- */
- private function generateAttachmentField($title, $value)
- {
- $value = is_array($value)
- ? sprintf('```%s```', $this->stringify($value))
- : $value;
-
- return array(
- 'title' => ucfirst($title),
- 'value' => $value,
- 'short' => false
- );
- }
-
- /**
- * Generates a collection of attachment fields from array
- *
- * @param array $data
- *
- * @return array
- */
- private function generateAttachmentFields(array $data)
- {
- $fields = array();
- foreach ($this->normalizerFormatter->format($data) as $key => $value) {
- $fields[] = $this->generateAttachmentField($key, $value);
- }
-
- return $fields;
- }
-
- /**
- * Get a copy of record with fields excluded according to $this->excludeFields
- *
- * @param array $record
- *
- * @return array
- */
- private function excludeFields(array $record)
- {
- foreach ($this->excludeFields as $field) {
- $keys = explode('.', $field);
- $node = &$record;
- $lastKey = end($keys);
- foreach ($keys as $key) {
- if (!isset($node[$key])) {
- break;
- }
- if ($lastKey === $key) {
- unset($node[$key]);
- break;
- }
- $node = &$node[$key];
- }
- }
-
- return $record;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/SlackHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/SlackHandler.php
deleted file mode 100644
index 88c4c4d0..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/SlackHandler.php
+++ /dev/null
@@ -1,221 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Formatter\FormatterInterface;
-use Monolog\Logger;
-use Monolog\Utils;
-use Monolog\Handler\Slack\SlackRecord;
-
-/**
- * Sends notifications through Slack API
- *
- * @author Greg Kedzierski
- * @see https://api.slack.com/
- */
-class SlackHandler extends SocketHandler
-{
- /**
- * Slack API token
- * @var string
- */
- private $token;
-
- /**
- * Instance of the SlackRecord util class preparing data for Slack API.
- * @var SlackRecord
- */
- private $slackRecord;
-
- /**
- * @param string $token Slack API token
- * @param string $channel Slack channel (encoded ID or name)
- * @param string|null $username Name of a bot
- * @param bool $useAttachment Whether the message should be added to Slack as attachment (plain text otherwise)
- * @param string|null $iconEmoji The emoji name to use (or null)
- * @param int $level The minimum logging level at which this handler will be triggered
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- * @param bool $useShortAttachment Whether the the context/extra messages added to Slack as attachments are in a short style
- * @param bool $includeContextAndExtra Whether the attachment should include context and extra data
- * @param array $excludeFields Dot separated list of fields to exclude from slack message. E.g. ['context.field1', 'extra.field2']
- * @throws MissingExtensionException If no OpenSSL PHP extension configured
- */
- public function __construct($token, $channel, $username = null, $useAttachment = true, $iconEmoji = null, $level = Logger::CRITICAL, $bubble = true, $useShortAttachment = false, $includeContextAndExtra = false, array $excludeFields = array())
- {
- if (!extension_loaded('openssl')) {
- throw new MissingExtensionException('The OpenSSL PHP extension is required to use the SlackHandler');
- }
-
- parent::__construct('ssl://slack.com:443', $level, $bubble);
-
- $this->slackRecord = new SlackRecord(
- $channel,
- $username,
- $useAttachment,
- $iconEmoji,
- $useShortAttachment,
- $includeContextAndExtra,
- $excludeFields,
- $this->formatter
- );
-
- $this->token = $token;
- }
-
- public function getSlackRecord()
- {
- return $this->slackRecord;
- }
-
- public function getToken()
- {
- return $this->token;
- }
-
- /**
- * {@inheritdoc}
- *
- * @param array $record
- * @return string
- */
- protected function generateDataStream($record)
- {
- $content = $this->buildContent($record);
-
- return $this->buildHeader($content) . $content;
- }
-
- /**
- * Builds the body of API call
- *
- * @param array $record
- * @return string
- */
- private function buildContent($record)
- {
- $dataArray = $this->prepareContentData($record);
-
- return http_build_query($dataArray);
- }
-
- /**
- * Prepares content data
- *
- * @param array $record
- * @return array
- */
- protected function prepareContentData($record)
- {
- $dataArray = $this->slackRecord->getSlackData($record);
- $dataArray['token'] = $this->token;
-
- if (!empty($dataArray['attachments'])) {
- $dataArray['attachments'] = Utils::jsonEncode($dataArray['attachments']);
- }
-
- return $dataArray;
- }
-
- /**
- * Builds the header of the API Call
- *
- * @param string $content
- * @return string
- */
- private function buildHeader($content)
- {
- $header = "POST /api/chat.postMessage HTTP/1.1\r\n";
- $header .= "Host: slack.com\r\n";
- $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
- $header .= "Content-Length: " . strlen($content) . "\r\n";
- $header .= "\r\n";
-
- return $header;
- }
-
- /**
- * {@inheritdoc}
- *
- * @param array $record
- */
- protected function write(array $record)
- {
- parent::write($record);
- $this->finalizeWrite();
- }
-
- /**
- * Finalizes the request by reading some bytes and then closing the socket
- *
- * If we do not read some but close the socket too early, slack sometimes
- * drops the request entirely.
- */
- protected function finalizeWrite()
- {
- $res = $this->getResource();
- if (is_resource($res)) {
- @fread($res, 2048);
- }
- $this->closeSocket();
- }
-
- /**
- * Returned a Slack message attachment color associated with
- * provided level.
- *
- * @param int $level
- * @return string
- * @deprecated Use underlying SlackRecord instead
- */
- protected function getAttachmentColor($level)
- {
- trigger_error(
- 'SlackHandler::getAttachmentColor() is deprecated. Use underlying SlackRecord instead.',
- E_USER_DEPRECATED
- );
-
- return $this->slackRecord->getAttachmentColor($level);
- }
-
- /**
- * Stringifies an array of key/value pairs to be used in attachment fields
- *
- * @param array $fields
- * @return string
- * @deprecated Use underlying SlackRecord instead
- */
- protected function stringify($fields)
- {
- trigger_error(
- 'SlackHandler::stringify() is deprecated. Use underlying SlackRecord instead.',
- E_USER_DEPRECATED
- );
-
- return $this->slackRecord->stringify($fields);
- }
-
- public function setFormatter(FormatterInterface $formatter)
- {
- parent::setFormatter($formatter);
- $this->slackRecord->setFormatter($formatter);
-
- return $this;
- }
-
- public function getFormatter()
- {
- $formatter = parent::getFormatter();
- $this->slackRecord->setFormatter($formatter);
-
- return $formatter;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php
deleted file mode 100644
index b87be99a..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php
+++ /dev/null
@@ -1,121 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Formatter\FormatterInterface;
-use Monolog\Logger;
-use Monolog\Utils;
-use Monolog\Handler\Slack\SlackRecord;
-
-/**
- * Sends notifications through Slack Webhooks
- *
- * @author Haralan Dobrev
- * @see https://api.slack.com/incoming-webhooks
- */
-class SlackWebhookHandler extends AbstractProcessingHandler
-{
- /**
- * Slack Webhook token
- * @var string
- */
- private $webhookUrl;
-
- /**
- * Instance of the SlackRecord util class preparing data for Slack API.
- * @var SlackRecord
- */
- private $slackRecord;
-
- /**
- * @param string $webhookUrl Slack Webhook URL
- * @param string|null $channel Slack channel (encoded ID or name)
- * @param string|null $username Name of a bot
- * @param bool $useAttachment Whether the message should be added to Slack as attachment (plain text otherwise)
- * @param string|null $iconEmoji The emoji name to use (or null)
- * @param bool $useShortAttachment Whether the the context/extra messages added to Slack as attachments are in a short style
- * @param bool $includeContextAndExtra Whether the attachment should include context and extra data
- * @param int $level The minimum logging level at which this handler will be triggered
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- * @param array $excludeFields Dot separated list of fields to exclude from slack message. E.g. ['context.field1', 'extra.field2']
- */
- public function __construct($webhookUrl, $channel = null, $username = null, $useAttachment = true, $iconEmoji = null, $useShortAttachment = false, $includeContextAndExtra = false, $level = Logger::CRITICAL, $bubble = true, array $excludeFields = array())
- {
- parent::__construct($level, $bubble);
-
- $this->webhookUrl = $webhookUrl;
-
- $this->slackRecord = new SlackRecord(
- $channel,
- $username,
- $useAttachment,
- $iconEmoji,
- $useShortAttachment,
- $includeContextAndExtra,
- $excludeFields,
- $this->formatter
- );
- }
-
- public function getSlackRecord()
- {
- return $this->slackRecord;
- }
-
- public function getWebhookUrl()
- {
- return $this->webhookUrl;
- }
-
- /**
- * {@inheritdoc}
- *
- * @param array $record
- */
- protected function write(array $record)
- {
- $postData = $this->slackRecord->getSlackData($record);
- $postString = Utils::jsonEncode($postData);
-
- $ch = curl_init();
- $options = array(
- CURLOPT_URL => $this->webhookUrl,
- CURLOPT_POST => true,
- CURLOPT_RETURNTRANSFER => true,
- CURLOPT_HTTPHEADER => array('Content-type: application/json'),
- CURLOPT_POSTFIELDS => $postString
- );
- if (defined('CURLOPT_SAFE_UPLOAD')) {
- $options[CURLOPT_SAFE_UPLOAD] = true;
- }
-
- curl_setopt_array($ch, $options);
-
- Curl\Util::execute($ch);
- }
-
- public function setFormatter(FormatterInterface $formatter)
- {
- parent::setFormatter($formatter);
- $this->slackRecord->setFormatter($formatter);
-
- return $this;
- }
-
- public function getFormatter()
- {
- $formatter = parent::getFormatter();
- $this->slackRecord->setFormatter($formatter);
-
- return $formatter;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/SlackbotHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/SlackbotHandler.php
deleted file mode 100644
index d3352ea0..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/SlackbotHandler.php
+++ /dev/null
@@ -1,84 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Logger;
-
-/**
- * Sends notifications through Slack's Slackbot
- *
- * @author Haralan Dobrev
- * @see https://slack.com/apps/A0F81R8ET-slackbot
- * @deprecated According to Slack the API used on this handler it is deprecated.
- * Therefore this handler will be removed on 2.x
- * Slack suggests to use webhooks instead. Please contact slack for more information.
- */
-class SlackbotHandler extends AbstractProcessingHandler
-{
- /**
- * The slug of the Slack team
- * @var string
- */
- private $slackTeam;
-
- /**
- * Slackbot token
- * @var string
- */
- private $token;
-
- /**
- * Slack channel name
- * @var string
- */
- private $channel;
-
- /**
- * @param string $slackTeam Slack team slug
- * @param string $token Slackbot token
- * @param string $channel Slack channel (encoded ID or name)
- * @param int $level The minimum logging level at which this handler will be triggered
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- */
- public function __construct($slackTeam, $token, $channel, $level = Logger::CRITICAL, $bubble = true)
- {
- @trigger_error('SlackbotHandler is deprecated and will be removed on 2.x', E_USER_DEPRECATED);
- parent::__construct($level, $bubble);
-
- $this->slackTeam = $slackTeam;
- $this->token = $token;
- $this->channel = $channel;
- }
-
- /**
- * {@inheritdoc}
- *
- * @param array $record
- */
- protected function write(array $record)
- {
- $slackbotUrl = sprintf(
- 'https://%s.slack.com/services/hooks/slackbot?token=%s&channel=%s',
- $this->slackTeam,
- $this->token,
- $this->channel
- );
-
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $slackbotUrl);
- curl_setopt($ch, CURLOPT_POST, true);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $record['message']);
-
- Curl\Util::execute($ch);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/SocketHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/SocketHandler.php
deleted file mode 100644
index db50d97f..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/SocketHandler.php
+++ /dev/null
@@ -1,385 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Logger;
-
-/**
- * Stores to any socket - uses fsockopen() or pfsockopen().
- *
- * @author Pablo de Leon Belloc
- * @see http://php.net/manual/en/function.fsockopen.php
- */
-class SocketHandler extends AbstractProcessingHandler
-{
- private $connectionString;
- private $connectionTimeout;
- private $resource;
- private $timeout = 0;
- private $writingTimeout = 10;
- private $lastSentBytes = null;
- private $chunkSize = null;
- private $persistent = false;
- private $errno;
- private $errstr;
- private $lastWritingAt;
-
- /**
- * @param string $connectionString Socket connection string
- * @param int $level The minimum logging level at which this handler will be triggered
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- */
- public function __construct($connectionString, $level = Logger::DEBUG, $bubble = true)
- {
- parent::__construct($level, $bubble);
- $this->connectionString = $connectionString;
- $this->connectionTimeout = (float) ini_get('default_socket_timeout');
- }
-
- /**
- * Connect (if necessary) and write to the socket
- *
- * @param array $record
- *
- * @throws \UnexpectedValueException
- * @throws \RuntimeException
- */
- protected function write(array $record)
- {
- $this->connectIfNotConnected();
- $data = $this->generateDataStream($record);
- $this->writeToSocket($data);
- }
-
- /**
- * We will not close a PersistentSocket instance so it can be reused in other requests.
- */
- public function close()
- {
- if (!$this->isPersistent()) {
- $this->closeSocket();
- }
- }
-
- /**
- * Close socket, if open
- */
- public function closeSocket()
- {
- if (is_resource($this->resource)) {
- fclose($this->resource);
- $this->resource = null;
- }
- }
-
- /**
- * Set socket connection to nbe persistent. It only has effect before the connection is initiated.
- *
- * @param bool $persistent
- */
- public function setPersistent($persistent)
- {
- $this->persistent = (bool) $persistent;
- }
-
- /**
- * Set connection timeout. Only has effect before we connect.
- *
- * @param float $seconds
- *
- * @see http://php.net/manual/en/function.fsockopen.php
- */
- public function setConnectionTimeout($seconds)
- {
- $this->validateTimeout($seconds);
- $this->connectionTimeout = (float) $seconds;
- }
-
- /**
- * Set write timeout. Only has effect before we connect.
- *
- * @param float $seconds
- *
- * @see http://php.net/manual/en/function.stream-set-timeout.php
- */
- public function setTimeout($seconds)
- {
- $this->validateTimeout($seconds);
- $this->timeout = (float) $seconds;
- }
-
- /**
- * Set writing timeout. Only has effect during connection in the writing cycle.
- *
- * @param float $seconds 0 for no timeout
- */
- public function setWritingTimeout($seconds)
- {
- $this->validateTimeout($seconds);
- $this->writingTimeout = (float) $seconds;
- }
-
- /**
- * Set chunk size. Only has effect during connection in the writing cycle.
- *
- * @param float $bytes
- */
- public function setChunkSize($bytes)
- {
- $this->chunkSize = $bytes;
- }
-
- /**
- * Get current connection string
- *
- * @return string
- */
- public function getConnectionString()
- {
- return $this->connectionString;
- }
-
- /**
- * Get persistent setting
- *
- * @return bool
- */
- public function isPersistent()
- {
- return $this->persistent;
- }
-
- /**
- * Get current connection timeout setting
- *
- * @return float
- */
- public function getConnectionTimeout()
- {
- return $this->connectionTimeout;
- }
-
- /**
- * Get current in-transfer timeout
- *
- * @return float
- */
- public function getTimeout()
- {
- return $this->timeout;
- }
-
- /**
- * Get current local writing timeout
- *
- * @return float
- */
- public function getWritingTimeout()
- {
- return $this->writingTimeout;
- }
-
- /**
- * Get current chunk size
- *
- * @return float
- */
- public function getChunkSize()
- {
- return $this->chunkSize;
- }
-
- /**
- * Check to see if the socket is currently available.
- *
- * UDP might appear to be connected but might fail when writing. See http://php.net/fsockopen for details.
- *
- * @return bool
- */
- public function isConnected()
- {
- return is_resource($this->resource)
- && !feof($this->resource); // on TCP - other party can close connection.
- }
-
- /**
- * Wrapper to allow mocking
- */
- protected function pfsockopen()
- {
- return @pfsockopen($this->connectionString, -1, $this->errno, $this->errstr, $this->connectionTimeout);
- }
-
- /**
- * Wrapper to allow mocking
- */
- protected function fsockopen()
- {
- return @fsockopen($this->connectionString, -1, $this->errno, $this->errstr, $this->connectionTimeout);
- }
-
- /**
- * Wrapper to allow mocking
- *
- * @see http://php.net/manual/en/function.stream-set-timeout.php
- */
- protected function streamSetTimeout()
- {
- $seconds = floor($this->timeout);
- $microseconds = round(($this->timeout - $seconds) * 1e6);
-
- return stream_set_timeout($this->resource, $seconds, $microseconds);
- }
-
- /**
- * Wrapper to allow mocking
- *
- * @see http://php.net/manual/en/function.stream-set-chunk-size.php
- */
- protected function streamSetChunkSize()
- {
- return stream_set_chunk_size($this->resource, $this->chunkSize);
- }
-
- /**
- * Wrapper to allow mocking
- */
- protected function fwrite($data)
- {
- return @fwrite($this->resource, $data);
- }
-
- /**
- * Wrapper to allow mocking
- */
- protected function streamGetMetadata()
- {
- return stream_get_meta_data($this->resource);
- }
-
- private function validateTimeout($value)
- {
- $ok = filter_var($value, FILTER_VALIDATE_FLOAT);
- if ($ok === false || $value < 0) {
- throw new \InvalidArgumentException("Timeout must be 0 or a positive float (got $value)");
- }
- }
-
- private function connectIfNotConnected()
- {
- if ($this->isConnected()) {
- return;
- }
- $this->connect();
- }
-
- protected function generateDataStream($record)
- {
- return (string) $record['formatted'];
- }
-
- /**
- * @return resource|null
- */
- protected function getResource()
- {
- return $this->resource;
- }
-
- private function connect()
- {
- $this->createSocketResource();
- $this->setSocketTimeout();
- $this->setStreamChunkSize();
- }
-
- private function createSocketResource()
- {
- if ($this->isPersistent()) {
- $resource = $this->pfsockopen();
- } else {
- $resource = $this->fsockopen();
- }
- if (!$resource) {
- throw new \UnexpectedValueException("Failed connecting to $this->connectionString ($this->errno: $this->errstr)");
- }
- $this->resource = $resource;
- }
-
- private function setSocketTimeout()
- {
- if (!$this->streamSetTimeout()) {
- throw new \UnexpectedValueException("Failed setting timeout with stream_set_timeout()");
- }
- }
-
- private function setStreamChunkSize()
- {
- if ($this->chunkSize && !$this->streamSetChunkSize()) {
- throw new \UnexpectedValueException("Failed setting chunk size with stream_set_chunk_size()");
- }
- }
-
- private function writeToSocket($data)
- {
- $length = strlen($data);
- $sent = 0;
- $this->lastSentBytes = $sent;
- while ($this->isConnected() && $sent < $length) {
- if (0 == $sent) {
- $chunk = $this->fwrite($data);
- } else {
- $chunk = $this->fwrite(substr($data, $sent));
- }
- if ($chunk === false) {
- throw new \RuntimeException("Could not write to socket");
- }
- $sent += $chunk;
- $socketInfo = $this->streamGetMetadata();
- if ($socketInfo['timed_out']) {
- throw new \RuntimeException("Write timed-out");
- }
-
- if ($this->writingIsTimedOut($sent)) {
- throw new \RuntimeException("Write timed-out, no data sent for `{$this->writingTimeout}` seconds, probably we got disconnected (sent $sent of $length)");
- }
- }
- if (!$this->isConnected() && $sent < $length) {
- throw new \RuntimeException("End-of-file reached, probably we got disconnected (sent $sent of $length)");
- }
- }
-
- private function writingIsTimedOut($sent)
- {
- $writingTimeout = (int) floor($this->writingTimeout);
- if (0 === $writingTimeout) {
- return false;
- }
-
- if ($sent !== $this->lastSentBytes) {
- $this->lastWritingAt = time();
- $this->lastSentBytes = $sent;
-
- return false;
- } else {
- usleep(100);
- }
-
- if ((time() - $this->lastWritingAt) >= $writingTimeout) {
- $this->closeSocket();
-
- return true;
- }
-
- return false;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php
deleted file mode 100644
index ad6960cb..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php
+++ /dev/null
@@ -1,179 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Logger;
-use Monolog\Utils;
-
-/**
- * Stores to any stream resource
- *
- * Can be used to store into php://stderr, remote and local files, etc.
- *
- * @author Jordi Boggiano
- */
-class StreamHandler extends AbstractProcessingHandler
-{
- protected $stream;
- protected $url;
- private $errorMessage;
- protected $filePermission;
- protected $useLocking;
- private $dirCreated;
-
- /**
- * @param resource|string $stream
- * @param int $level The minimum logging level at which this handler will be triggered
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- * @param int|null $filePermission Optional file permissions (default (0644) are only for owner read/write)
- * @param bool $useLocking Try to lock log file before doing any writes
- *
- * @throws \Exception If a missing directory is not buildable
- * @throws \InvalidArgumentException If stream is not a resource or string
- */
- public function __construct($stream, $level = Logger::DEBUG, $bubble = true, $filePermission = null, $useLocking = false)
- {
- parent::__construct($level, $bubble);
- if (is_resource($stream)) {
- $this->stream = $stream;
- } elseif (is_string($stream)) {
- $this->url = Utils::canonicalizePath($stream);
- } else {
- throw new \InvalidArgumentException('A stream must either be a resource or a string.');
- }
-
- $this->filePermission = $filePermission;
- $this->useLocking = $useLocking;
- }
-
- /**
- * {@inheritdoc}
- */
- public function close()
- {
- if ($this->url && is_resource($this->stream)) {
- fclose($this->stream);
- }
- $this->stream = null;
- $this->dirCreated = null;
- }
-
- /**
- * Return the currently active stream if it is open
- *
- * @return resource|null
- */
- public function getStream()
- {
- return $this->stream;
- }
-
- /**
- * Return the stream URL if it was configured with a URL and not an active resource
- *
- * @return string|null
- */
- public function getUrl()
- {
- return $this->url;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function write(array $record)
- {
- if (!is_resource($this->stream)) {
- if (null === $this->url || '' === $this->url) {
- throw new \LogicException('Missing stream url, the stream can not be opened. This may be caused by a premature call to close().');
- }
- $this->createDir();
- $this->errorMessage = null;
- set_error_handler(array($this, 'customErrorHandler'));
- $this->stream = fopen($this->url, 'a');
- if ($this->filePermission !== null) {
- @chmod($this->url, $this->filePermission);
- }
- restore_error_handler();
- if (!is_resource($this->stream)) {
- $this->stream = null;
-
- throw new \UnexpectedValueException(sprintf('The stream or file "%s" could not be opened in append mode: '.$this->errorMessage, $this->url));
- }
- }
-
- if ($this->useLocking) {
- // ignoring errors here, there's not much we can do about them
- flock($this->stream, LOCK_EX);
- }
-
- $this->streamWrite($this->stream, $record);
-
- if ($this->useLocking) {
- flock($this->stream, LOCK_UN);
- }
- }
-
- /**
- * Write to stream
- * @param resource $stream
- * @param array $record
- */
- protected function streamWrite($stream, array $record)
- {
- fwrite($stream, (string) $record['formatted']);
- }
-
- private function customErrorHandler($code, $msg)
- {
- $this->errorMessage = preg_replace('{^(fopen|mkdir)\(.*?\): }', '', $msg);
- }
-
- /**
- * @param string $stream
- *
- * @return null|string
- */
- private function getDirFromStream($stream)
- {
- $pos = strpos($stream, '://');
- if ($pos === false) {
- return dirname($stream);
- }
-
- if ('file://' === substr($stream, 0, 7)) {
- return dirname(substr($stream, 7));
- }
-
- return null;
- }
-
- private function createDir()
- {
- // Do not try to create dir if it has already been tried.
- if ($this->dirCreated) {
- return;
- }
-
- $dir = $this->getDirFromStream($this->url);
- if (null !== $dir && !is_dir($dir)) {
- $this->errorMessage = null;
- set_error_handler(array($this, 'customErrorHandler'));
- $status = mkdir($dir, 0777, true);
- restore_error_handler();
- if (false === $status && !is_dir($dir)) {
- throw new \UnexpectedValueException(sprintf('There is no existing directory at "%s" and its not buildable: '.$this->errorMessage, $dir));
- }
- }
- $this->dirCreated = true;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php
deleted file mode 100644
index ac7b16ff..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php
+++ /dev/null
@@ -1,111 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Logger;
-use Monolog\Formatter\FormatterInterface;
-use Monolog\Formatter\LineFormatter;
-use Swift;
-
-/**
- * SwiftMailerHandler uses Swift_Mailer to send the emails
- *
- * @author Gyula Sallai
- */
-class SwiftMailerHandler extends MailHandler
-{
- protected $mailer;
- private $messageTemplate;
-
- /**
- * @param \Swift_Mailer $mailer The mailer to use
- * @param callable|\Swift_Message $message An example message for real messages, only the body will be replaced
- * @param int $level The minimum logging level at which this handler will be triggered
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- */
- public function __construct(\Swift_Mailer $mailer, $message, $level = Logger::ERROR, $bubble = true)
- {
- parent::__construct($level, $bubble);
-
- $this->mailer = $mailer;
- $this->messageTemplate = $message;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function send($content, array $records)
- {
- $this->mailer->send($this->buildMessage($content, $records));
- }
-
- /**
- * Gets the formatter for the Swift_Message subject.
- *
- * @param string $format The format of the subject
- * @return FormatterInterface
- */
- protected function getSubjectFormatter($format)
- {
- return new LineFormatter($format);
- }
-
- /**
- * Creates instance of Swift_Message to be sent
- *
- * @param string $content formatted email body to be sent
- * @param array $records Log records that formed the content
- * @return \Swift_Message
- */
- protected function buildMessage($content, array $records)
- {
- $message = null;
- if ($this->messageTemplate instanceof \Swift_Message) {
- $message = clone $this->messageTemplate;
- $message->generateId();
- } elseif (is_callable($this->messageTemplate)) {
- $message = call_user_func($this->messageTemplate, $content, $records);
- }
-
- if (!$message instanceof \Swift_Message) {
- throw new \InvalidArgumentException('Could not resolve message as instance of Swift_Message or a callable returning it');
- }
-
- if ($records) {
- $subjectFormatter = $this->getSubjectFormatter($message->getSubject());
- $message->setSubject($subjectFormatter->format($this->getHighestRecord($records)));
- }
-
- $message->setBody($content);
- if (version_compare(Swift::VERSION, '6.0.0', '>=')) {
- $message->setDate(new \DateTimeImmutable());
- } else {
- $message->setDate(time());
- }
-
- return $message;
- }
-
- /**
- * BC getter, to be removed in 2.0
- */
- public function __get($name)
- {
- if ($name === 'message') {
- trigger_error('SwiftMailerHandler->message is deprecated, use ->buildMessage() instead to retrieve the message', E_USER_DEPRECATED);
-
- return $this->buildMessage(null, array());
- }
-
- throw new \InvalidArgumentException('Invalid property '.$name);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/SyslogHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/SyslogHandler.php
deleted file mode 100644
index f770c802..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/SyslogHandler.php
+++ /dev/null
@@ -1,67 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Logger;
-
-/**
- * Logs to syslog service.
- *
- * usage example:
- *
- * $log = new Logger('application');
- * $syslog = new SyslogHandler('myfacility', 'local6');
- * $formatter = new LineFormatter("%channel%.%level_name%: %message% %extra%");
- * $syslog->setFormatter($formatter);
- * $log->pushHandler($syslog);
- *
- * @author Sven Paulus
- */
-class SyslogHandler extends AbstractSyslogHandler
-{
- protected $ident;
- protected $logopts;
-
- /**
- * @param string $ident
- * @param mixed $facility
- * @param int $level The minimum logging level at which this handler will be triggered
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- * @param int $logopts Option flags for the openlog() call, defaults to LOG_PID
- */
- public function __construct($ident, $facility = LOG_USER, $level = Logger::DEBUG, $bubble = true, $logopts = LOG_PID)
- {
- parent::__construct($facility, $level, $bubble);
-
- $this->ident = $ident;
- $this->logopts = $logopts;
- }
-
- /**
- * {@inheritdoc}
- */
- public function close()
- {
- closelog();
- }
-
- /**
- * {@inheritdoc}
- */
- protected function write(array $record)
- {
- if (!openlog($this->ident, $this->logopts, $this->facility)) {
- throw new \LogicException('Can\'t open syslog for ident "'.$this->ident.'" and facility "'.$this->facility.'"');
- }
- syslog($this->logLevels[$record['level']], (string) $record['formatted']);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php b/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php
deleted file mode 100644
index 3bff085b..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php
+++ /dev/null
@@ -1,56 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler\SyslogUdp;
-
-class UdpSocket
-{
- const DATAGRAM_MAX_LENGTH = 65023;
-
- protected $ip;
- protected $port;
- protected $socket;
-
- public function __construct($ip, $port = 514)
- {
- $this->ip = $ip;
- $this->port = $port;
- $this->socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
- }
-
- public function write($line, $header = "")
- {
- $this->send($this->assembleMessage($line, $header));
- }
-
- public function close()
- {
- if (is_resource($this->socket)) {
- socket_close($this->socket);
- $this->socket = null;
- }
- }
-
- protected function send($chunk)
- {
- if (!is_resource($this->socket)) {
- throw new \LogicException('The UdpSocket to '.$this->ip.':'.$this->port.' has been closed and can not be written to anymore');
- }
- socket_sendto($this->socket, $chunk, strlen($chunk), $flags = 0, $this->ip, $this->port);
- }
-
- protected function assembleMessage($line, $header)
- {
- $chunkSize = self::DATAGRAM_MAX_LENGTH - strlen($header);
-
- return $header . substr($line, 0, $chunkSize);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php
deleted file mode 100644
index 4dfd5f5e..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php
+++ /dev/null
@@ -1,124 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Logger;
-use Monolog\Handler\SyslogUdp\UdpSocket;
-
-/**
- * A Handler for logging to a remote syslogd server.
- *
- * @author Jesper Skovgaard Nielsen
- * @author Dominik Kukacka
- */
-class SyslogUdpHandler extends AbstractSyslogHandler
-{
- const RFC3164 = 0;
- const RFC5424 = 1;
-
- private $dateFormats = array(
- self::RFC3164 => 'M d H:i:s',
- self::RFC5424 => \DateTime::RFC3339,
- );
-
- protected $socket;
- protected $ident;
- protected $rfc;
-
- /**
- * @param string $host
- * @param int $port
- * @param mixed $facility
- * @param int $level The minimum logging level at which this handler will be triggered
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- * @param string $ident Program name or tag for each log message.
- * @param int $rfc RFC to format the message for.
- */
- public function __construct($host, $port = 514, $facility = LOG_USER, $level = Logger::DEBUG, $bubble = true, $ident = 'php', $rfc = self::RFC5424)
- {
- parent::__construct($facility, $level, $bubble);
-
- $this->ident = $ident;
- $this->rfc = $rfc;
-
- $this->socket = new UdpSocket($host, $port ?: 514);
- }
-
- protected function write(array $record)
- {
- $lines = $this->splitMessageIntoLines($record['formatted']);
-
- $header = $this->makeCommonSyslogHeader($this->logLevels[$record['level']]);
-
- foreach ($lines as $line) {
- $this->socket->write($line, $header);
- }
- }
-
- public function close()
- {
- $this->socket->close();
- }
-
- private function splitMessageIntoLines($message)
- {
- if (is_array($message)) {
- $message = implode("\n", $message);
- }
-
- return preg_split('/$\R?^/m', $message, -1, PREG_SPLIT_NO_EMPTY);
- }
-
- /**
- * Make common syslog header (see rfc5424 or rfc3164)
- */
- protected function makeCommonSyslogHeader($severity)
- {
- $priority = $severity + $this->facility;
-
- if (!$pid = getmypid()) {
- $pid = '-';
- }
-
- if (!$hostname = gethostname()) {
- $hostname = '-';
- }
-
- $date = $this->getDateTime();
-
- if ($this->rfc === self::RFC3164) {
- return "<$priority>" .
- $date . " " .
- $hostname . " " .
- $this->ident . "[" . $pid . "]: ";
- } else {
- return "<$priority>1 " .
- $date . " " .
- $hostname . " " .
- $this->ident . " " .
- $pid . " - - ";
- }
- }
-
- protected function getDateTime()
- {
- return date($this->dateFormats[$this->rfc]);
- }
-
- /**
- * Inject your own socket, mainly used for testing
- */
- public function setSocket($socket)
- {
- $this->socket = $socket;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/TestHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/TestHandler.php
deleted file mode 100644
index 478db0ac..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/TestHandler.php
+++ /dev/null
@@ -1,177 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-/**
- * Used for testing purposes.
- *
- * It records all records and gives you access to them for verification.
- *
- * @author Jordi Boggiano
- *
- * @method bool hasEmergency($record)
- * @method bool hasAlert($record)
- * @method bool hasCritical($record)
- * @method bool hasError($record)
- * @method bool hasWarning($record)
- * @method bool hasNotice($record)
- * @method bool hasInfo($record)
- * @method bool hasDebug($record)
- *
- * @method bool hasEmergencyRecords()
- * @method bool hasAlertRecords()
- * @method bool hasCriticalRecords()
- * @method bool hasErrorRecords()
- * @method bool hasWarningRecords()
- * @method bool hasNoticeRecords()
- * @method bool hasInfoRecords()
- * @method bool hasDebugRecords()
- *
- * @method bool hasEmergencyThatContains($message)
- * @method bool hasAlertThatContains($message)
- * @method bool hasCriticalThatContains($message)
- * @method bool hasErrorThatContains($message)
- * @method bool hasWarningThatContains($message)
- * @method bool hasNoticeThatContains($message)
- * @method bool hasInfoThatContains($message)
- * @method bool hasDebugThatContains($message)
- *
- * @method bool hasEmergencyThatMatches($message)
- * @method bool hasAlertThatMatches($message)
- * @method bool hasCriticalThatMatches($message)
- * @method bool hasErrorThatMatches($message)
- * @method bool hasWarningThatMatches($message)
- * @method bool hasNoticeThatMatches($message)
- * @method bool hasInfoThatMatches($message)
- * @method bool hasDebugThatMatches($message)
- *
- * @method bool hasEmergencyThatPasses($message)
- * @method bool hasAlertThatPasses($message)
- * @method bool hasCriticalThatPasses($message)
- * @method bool hasErrorThatPasses($message)
- * @method bool hasWarningThatPasses($message)
- * @method bool hasNoticeThatPasses($message)
- * @method bool hasInfoThatPasses($message)
- * @method bool hasDebugThatPasses($message)
- */
-class TestHandler extends AbstractProcessingHandler
-{
- protected $records = array();
- protected $recordsByLevel = array();
- private $skipReset = false;
-
- public function getRecords()
- {
- return $this->records;
- }
-
- public function clear()
- {
- $this->records = array();
- $this->recordsByLevel = array();
- }
-
- public function reset()
- {
- if (!$this->skipReset) {
- $this->clear();
- }
- }
-
- public function setSkipReset($skipReset)
- {
- $this->skipReset = $skipReset;
- }
-
- public function hasRecords($level)
- {
- return isset($this->recordsByLevel[$level]);
- }
-
- /**
- * @param string|array $record Either a message string or an array containing message and optionally context keys that will be checked against all records
- * @param int $level Logger::LEVEL constant value
- */
- public function hasRecord($record, $level)
- {
- if (is_string($record)) {
- $record = array('message' => $record);
- }
-
- return $this->hasRecordThatPasses(function ($rec) use ($record) {
- if ($rec['message'] !== $record['message']) {
- return false;
- }
- if (isset($record['context']) && $rec['context'] !== $record['context']) {
- return false;
- }
- return true;
- }, $level);
- }
-
- public function hasRecordThatContains($message, $level)
- {
- return $this->hasRecordThatPasses(function ($rec) use ($message) {
- return strpos($rec['message'], $message) !== false;
- }, $level);
- }
-
- public function hasRecordThatMatches($regex, $level)
- {
- return $this->hasRecordThatPasses(function ($rec) use ($regex) {
- return preg_match($regex, $rec['message']) > 0;
- }, $level);
- }
-
- public function hasRecordThatPasses($predicate, $level)
- {
- if (!is_callable($predicate)) {
- throw new \InvalidArgumentException("Expected a callable for hasRecordThatSucceeds");
- }
-
- if (!isset($this->recordsByLevel[$level])) {
- return false;
- }
-
- foreach ($this->recordsByLevel[$level] as $i => $rec) {
- if (call_user_func($predicate, $rec, $i)) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function write(array $record)
- {
- $this->recordsByLevel[$record['level']][] = $record;
- $this->records[] = $record;
- }
-
- public function __call($method, $args)
- {
- if (preg_match('/(.*)(Debug|Info|Notice|Warning|Error|Critical|Alert|Emergency)(.*)/', $method, $matches) > 0) {
- $genericMethod = $matches[1] . ('Records' !== $matches[3] ? 'Record' : '') . $matches[3];
- $level = constant('Monolog\Logger::' . strtoupper($matches[2]));
- if (method_exists($this, $genericMethod)) {
- $args[] = $level;
-
- return call_user_func_array(array($this, $genericMethod), $args);
- }
- }
-
- throw new \BadMethodCallException('Call to undefined method ' . get_class($this) . '::' . $method . '()');
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php
deleted file mode 100644
index 7d7622a3..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php
+++ /dev/null
@@ -1,72 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-/**
- * Forwards records to multiple handlers suppressing failures of each handler
- * and continuing through to give every handler a chance to succeed.
- *
- * @author Craig D'Amelio
- */
-class WhatFailureGroupHandler extends GroupHandler
-{
- /**
- * {@inheritdoc}
- */
- public function handle(array $record)
- {
- if ($this->processors) {
- foreach ($this->processors as $processor) {
- $record = call_user_func($processor, $record);
- }
- }
-
- foreach ($this->handlers as $handler) {
- try {
- $handler->handle($record);
- } catch (\Exception $e) {
- // What failure?
- } catch (\Throwable $e) {
- // What failure?
- }
- }
-
- return false === $this->bubble;
- }
-
- /**
- * {@inheritdoc}
- */
- public function handleBatch(array $records)
- {
- if ($this->processors) {
- $processed = array();
- foreach ($records as $record) {
- foreach ($this->processors as $processor) {
- $record = call_user_func($processor, $record);
- }
- $processed[] = $record;
- }
- $records = $processed;
- }
-
- foreach ($this->handlers as $handler) {
- try {
- $handler->handleBatch($records);
- } catch (\Exception $e) {
- // What failure?
- } catch (\Throwable $e) {
- // What failure?
- }
- }
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php
deleted file mode 100644
index a20aeae0..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php
+++ /dev/null
@@ -1,101 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Formatter\NormalizerFormatter;
-use Monolog\Logger;
-
-/**
- * Handler sending logs to Zend Monitor
- *
- * @author Christian Bergau
- * @author Jason Davis
- */
-class ZendMonitorHandler extends AbstractProcessingHandler
-{
- /**
- * Monolog level / ZendMonitor Custom Event priority map
- *
- * @var array
- */
- protected $levelMap = array();
-
- /**
- * Construct
- *
- * @param int $level
- * @param bool $bubble
- * @throws MissingExtensionException
- */
- public function __construct($level = Logger::DEBUG, $bubble = true)
- {
- if (!function_exists('zend_monitor_custom_event')) {
- throw new MissingExtensionException(
- 'You must have Zend Server installed with Zend Monitor enabled in order to use this handler'
- );
- }
- //zend monitor constants are not defined if zend monitor is not enabled.
- $this->levelMap = array(
- Logger::DEBUG => \ZEND_MONITOR_EVENT_SEVERITY_INFO,
- Logger::INFO => \ZEND_MONITOR_EVENT_SEVERITY_INFO,
- Logger::NOTICE => \ZEND_MONITOR_EVENT_SEVERITY_INFO,
- Logger::WARNING => \ZEND_MONITOR_EVENT_SEVERITY_WARNING,
- Logger::ERROR => \ZEND_MONITOR_EVENT_SEVERITY_ERROR,
- Logger::CRITICAL => \ZEND_MONITOR_EVENT_SEVERITY_ERROR,
- Logger::ALERT => \ZEND_MONITOR_EVENT_SEVERITY_ERROR,
- Logger::EMERGENCY => \ZEND_MONITOR_EVENT_SEVERITY_ERROR,
- );
- parent::__construct($level, $bubble);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function write(array $record)
- {
- $this->writeZendMonitorCustomEvent(
- Logger::getLevelName($record['level']),
- $record['message'],
- $record['formatted'],
- $this->levelMap[$record['level']]
- );
- }
-
- /**
- * Write to Zend Monitor Events
- * @param string $type Text displayed in "Class Name (custom)" field
- * @param string $message Text displayed in "Error String"
- * @param mixed $formatted Displayed in Custom Variables tab
- * @param int $severity Set the event severity level (-1,0,1)
- */
- protected function writeZendMonitorCustomEvent($type, $message, $formatted, $severity)
- {
- zend_monitor_custom_event($type, $message, $formatted, $severity);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDefaultFormatter()
- {
- return new NormalizerFormatter();
- }
-
- /**
- * Get the level map
- *
- * @return array
- */
- public function getLevelMap()
- {
- return $this->levelMap;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Logger.php b/vendor/monolog/monolog/src/Monolog/Logger.php
deleted file mode 100644
index 7d26b291..00000000
--- a/vendor/monolog/monolog/src/Monolog/Logger.php
+++ /dev/null
@@ -1,796 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog;
-
-use Monolog\Handler\HandlerInterface;
-use Monolog\Handler\StreamHandler;
-use Psr\Log\LoggerInterface;
-use Psr\Log\InvalidArgumentException;
-use Exception;
-
-/**
- * Monolog log channel
- *
- * It contains a stack of Handlers and a stack of Processors,
- * and uses them to store records that are added to it.
- *
- * @author Jordi Boggiano
- */
-class Logger implements LoggerInterface, ResettableInterface
-{
- /**
- * Detailed debug information
- */
- const DEBUG = 100;
-
- /**
- * Interesting events
- *
- * Examples: User logs in, SQL logs.
- */
- const INFO = 200;
-
- /**
- * Uncommon events
- */
- const NOTICE = 250;
-
- /**
- * Exceptional occurrences that are not errors
- *
- * Examples: Use of deprecated APIs, poor use of an API,
- * undesirable things that are not necessarily wrong.
- */
- const WARNING = 300;
-
- /**
- * Runtime errors
- */
- const ERROR = 400;
-
- /**
- * Critical conditions
- *
- * Example: Application component unavailable, unexpected exception.
- */
- const CRITICAL = 500;
-
- /**
- * Action must be taken immediately
- *
- * Example: Entire website down, database unavailable, etc.
- * This should trigger the SMS alerts and wake you up.
- */
- const ALERT = 550;
-
- /**
- * Urgent alert.
- */
- const EMERGENCY = 600;
-
- /**
- * Monolog API version
- *
- * This is only bumped when API breaks are done and should
- * follow the major version of the library
- *
- * @var int
- */
- const API = 1;
-
- /**
- * Logging levels from syslog protocol defined in RFC 5424
- *
- * @var array $levels Logging levels
- */
- protected static $levels = array(
- self::DEBUG => 'DEBUG',
- self::INFO => 'INFO',
- self::NOTICE => 'NOTICE',
- self::WARNING => 'WARNING',
- self::ERROR => 'ERROR',
- self::CRITICAL => 'CRITICAL',
- self::ALERT => 'ALERT',
- self::EMERGENCY => 'EMERGENCY',
- );
-
- /**
- * @var \DateTimeZone
- */
- protected static $timezone;
-
- /**
- * @var string
- */
- protected $name;
-
- /**
- * The handler stack
- *
- * @var HandlerInterface[]
- */
- protected $handlers;
-
- /**
- * Processors that will process all log records
- *
- * To process records of a single handler instead, add the processor on that specific handler
- *
- * @var callable[]
- */
- protected $processors;
-
- /**
- * @var bool
- */
- protected $microsecondTimestamps = true;
-
- /**
- * @var callable
- */
- protected $exceptionHandler;
-
- /**
- * @param string $name The logging channel
- * @param HandlerInterface[] $handlers Optional stack of handlers, the first one in the array is called first, etc.
- * @param callable[] $processors Optional array of processors
- */
- public function __construct($name, array $handlers = array(), array $processors = array())
- {
- $this->name = $name;
- $this->setHandlers($handlers);
- $this->processors = $processors;
- }
-
- /**
- * @return string
- */
- public function getName()
- {
- return $this->name;
- }
-
- /**
- * Return a new cloned instance with the name changed
- *
- * @return static
- */
- public function withName($name)
- {
- $new = clone $this;
- $new->name = $name;
-
- return $new;
- }
-
- /**
- * Pushes a handler on to the stack.
- *
- * @param HandlerInterface $handler
- * @return $this
- */
- public function pushHandler(HandlerInterface $handler)
- {
- array_unshift($this->handlers, $handler);
-
- return $this;
- }
-
- /**
- * Pops a handler from the stack
- *
- * @return HandlerInterface
- */
- public function popHandler()
- {
- if (!$this->handlers) {
- throw new \LogicException('You tried to pop from an empty handler stack.');
- }
-
- return array_shift($this->handlers);
- }
-
- /**
- * Set handlers, replacing all existing ones.
- *
- * If a map is passed, keys will be ignored.
- *
- * @param HandlerInterface[] $handlers
- * @return $this
- */
- public function setHandlers(array $handlers)
- {
- $this->handlers = array();
- foreach (array_reverse($handlers) as $handler) {
- $this->pushHandler($handler);
- }
-
- return $this;
- }
-
- /**
- * @return HandlerInterface[]
- */
- public function getHandlers()
- {
- return $this->handlers;
- }
-
- /**
- * Adds a processor on to the stack.
- *
- * @param callable $callback
- * @return $this
- */
- public function pushProcessor($callback)
- {
- if (!is_callable($callback)) {
- throw new \InvalidArgumentException('Processors must be valid callables (callback or object with an __invoke method), '.var_export($callback, true).' given');
- }
- array_unshift($this->processors, $callback);
-
- return $this;
- }
-
- /**
- * Removes the processor on top of the stack and returns it.
- *
- * @return callable
- */
- public function popProcessor()
- {
- if (!$this->processors) {
- throw new \LogicException('You tried to pop from an empty processor stack.');
- }
-
- return array_shift($this->processors);
- }
-
- /**
- * @return callable[]
- */
- public function getProcessors()
- {
- return $this->processors;
- }
-
- /**
- * Control the use of microsecond resolution timestamps in the 'datetime'
- * member of new records.
- *
- * Generating microsecond resolution timestamps by calling
- * microtime(true), formatting the result via sprintf() and then parsing
- * the resulting string via \DateTime::createFromFormat() can incur
- * a measurable runtime overhead vs simple usage of DateTime to capture
- * a second resolution timestamp in systems which generate a large number
- * of log events.
- *
- * @param bool $micro True to use microtime() to create timestamps
- */
- public function useMicrosecondTimestamps($micro)
- {
- $this->microsecondTimestamps = (bool) $micro;
- }
-
- /**
- * Adds a log record.
- *
- * @param int $level The logging level
- * @param string $message The log message
- * @param array $context The log context
- * @return bool Whether the record has been processed
- */
- public function addRecord($level, $message, array $context = array())
- {
- if (!$this->handlers) {
- $this->pushHandler(new StreamHandler('php://stderr', static::DEBUG));
- }
-
- $levelName = static::getLevelName($level);
-
- // check if any handler will handle this message so we can return early and save cycles
- $handlerKey = null;
- reset($this->handlers);
- while ($handler = current($this->handlers)) {
- if ($handler->isHandling(array('level' => $level))) {
- $handlerKey = key($this->handlers);
- break;
- }
-
- next($this->handlers);
- }
-
- if (null === $handlerKey) {
- return false;
- }
-
- if (!static::$timezone) {
- static::$timezone = new \DateTimeZone(date_default_timezone_get() ?: 'UTC');
- }
-
- // php7.1+ always has microseconds enabled, so we do not need this hack
- if ($this->microsecondTimestamps && PHP_VERSION_ID < 70100) {
- $ts = \DateTime::createFromFormat('U.u', sprintf('%.6F', microtime(true)), static::$timezone);
- } else {
- $ts = new \DateTime('now', static::$timezone);
- }
- $ts->setTimezone(static::$timezone);
-
- $record = array(
- 'message' => (string) $message,
- 'context' => $context,
- 'level' => $level,
- 'level_name' => $levelName,
- 'channel' => $this->name,
- 'datetime' => $ts,
- 'extra' => array(),
- );
-
- try {
- foreach ($this->processors as $processor) {
- $record = call_user_func($processor, $record);
- }
-
- while ($handler = current($this->handlers)) {
- if (true === $handler->handle($record)) {
- break;
- }
-
- next($this->handlers);
- }
- } catch (Exception $e) {
- $this->handleException($e, $record);
- }
-
- return true;
- }
-
- /**
- * Ends a log cycle and frees all resources used by handlers.
- *
- * Closing a Handler means flushing all buffers and freeing any open resources/handles.
- * Handlers that have been closed should be able to accept log records again and re-open
- * themselves on demand, but this may not always be possible depending on implementation.
- *
- * This is useful at the end of a request and will be called automatically on every handler
- * when they get destructed.
- */
- public function close()
- {
- foreach ($this->handlers as $handler) {
- if (method_exists($handler, 'close')) {
- $handler->close();
- }
- }
- }
-
- /**
- * Ends a log cycle and resets all handlers and processors to their initial state.
- *
- * Resetting a Handler or a Processor means flushing/cleaning all buffers, resetting internal
- * state, and getting it back to a state in which it can receive log records again.
- *
- * This is useful in case you want to avoid logs leaking between two requests or jobs when you
- * have a long running process like a worker or an application server serving multiple requests
- * in one process.
- */
- public function reset()
- {
- foreach ($this->handlers as $handler) {
- if ($handler instanceof ResettableInterface) {
- $handler->reset();
- }
- }
-
- foreach ($this->processors as $processor) {
- if ($processor instanceof ResettableInterface) {
- $processor->reset();
- }
- }
- }
-
- /**
- * Adds a log record at the DEBUG level.
- *
- * @param string $message The log message
- * @param array $context The log context
- * @return bool Whether the record has been processed
- */
- public function addDebug($message, array $context = array())
- {
- return $this->addRecord(static::DEBUG, $message, $context);
- }
-
- /**
- * Adds a log record at the INFO level.
- *
- * @param string $message The log message
- * @param array $context The log context
- * @return bool Whether the record has been processed
- */
- public function addInfo($message, array $context = array())
- {
- return $this->addRecord(static::INFO, $message, $context);
- }
-
- /**
- * Adds a log record at the NOTICE level.
- *
- * @param string $message The log message
- * @param array $context The log context
- * @return bool Whether the record has been processed
- */
- public function addNotice($message, array $context = array())
- {
- return $this->addRecord(static::NOTICE, $message, $context);
- }
-
- /**
- * Adds a log record at the WARNING level.
- *
- * @param string $message The log message
- * @param array $context The log context
- * @return bool Whether the record has been processed
- */
- public function addWarning($message, array $context = array())
- {
- return $this->addRecord(static::WARNING, $message, $context);
- }
-
- /**
- * Adds a log record at the ERROR level.
- *
- * @param string $message The log message
- * @param array $context The log context
- * @return bool Whether the record has been processed
- */
- public function addError($message, array $context = array())
- {
- return $this->addRecord(static::ERROR, $message, $context);
- }
-
- /**
- * Adds a log record at the CRITICAL level.
- *
- * @param string $message The log message
- * @param array $context The log context
- * @return bool Whether the record has been processed
- */
- public function addCritical($message, array $context = array())
- {
- return $this->addRecord(static::CRITICAL, $message, $context);
- }
-
- /**
- * Adds a log record at the ALERT level.
- *
- * @param string $message The log message
- * @param array $context The log context
- * @return bool Whether the record has been processed
- */
- public function addAlert($message, array $context = array())
- {
- return $this->addRecord(static::ALERT, $message, $context);
- }
-
- /**
- * Adds a log record at the EMERGENCY level.
- *
- * @param string $message The log message
- * @param array $context The log context
- * @return bool Whether the record has been processed
- */
- public function addEmergency($message, array $context = array())
- {
- return $this->addRecord(static::EMERGENCY, $message, $context);
- }
-
- /**
- * Gets all supported logging levels.
- *
- * @return array Assoc array with human-readable level names => level codes.
- */
- public static function getLevels()
- {
- return array_flip(static::$levels);
- }
-
- /**
- * Gets the name of the logging level.
- *
- * @param int $level
- * @return string
- */
- public static function getLevelName($level)
- {
- if (!isset(static::$levels[$level])) {
- throw new InvalidArgumentException('Level "'.$level.'" is not defined, use one of: '.implode(', ', array_keys(static::$levels)));
- }
-
- return static::$levels[$level];
- }
-
- /**
- * Converts PSR-3 levels to Monolog ones if necessary
- *
- * @param string|int $level Level number (monolog) or name (PSR-3)
- * @return int
- */
- public static function toMonologLevel($level)
- {
- if (is_string($level)) {
- // Contains chars of all log levels and avoids using strtoupper() which may have
- // strange results depending on locale (for example, "i" will become "İ")
- $upper = strtr($level, 'abcdefgilmnortuwy', 'ABCDEFGILMNORTUWY');
- if (defined(__CLASS__.'::'.$upper)) {
- return constant(__CLASS__ . '::' . $upper);
- }
- }
-
- return $level;
- }
-
- /**
- * Checks whether the Logger has a handler that listens on the given level
- *
- * @param int $level
- * @return bool
- */
- public function isHandling($level)
- {
- $record = array(
- 'level' => $level,
- );
-
- foreach ($this->handlers as $handler) {
- if ($handler->isHandling($record)) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Set a custom exception handler
- *
- * @param callable $callback
- * @return $this
- */
- public function setExceptionHandler($callback)
- {
- if (!is_callable($callback)) {
- throw new \InvalidArgumentException('Exception handler must be valid callable (callback or object with an __invoke method), '.var_export($callback, true).' given');
- }
- $this->exceptionHandler = $callback;
-
- return $this;
- }
-
- /**
- * @return callable
- */
- public function getExceptionHandler()
- {
- return $this->exceptionHandler;
- }
-
- /**
- * Delegates exception management to the custom exception handler,
- * or throws the exception if no custom handler is set.
- */
- protected function handleException(Exception $e, array $record)
- {
- if (!$this->exceptionHandler) {
- throw $e;
- }
-
- call_user_func($this->exceptionHandler, $e, $record);
- }
-
- /**
- * Adds a log record at an arbitrary level.
- *
- * This method allows for compatibility with common interfaces.
- *
- * @param mixed $level The log level
- * @param string $message The log message
- * @param array $context The log context
- * @return bool Whether the record has been processed
- */
- public function log($level, $message, array $context = array())
- {
- $level = static::toMonologLevel($level);
-
- return $this->addRecord($level, $message, $context);
- }
-
- /**
- * Adds a log record at the DEBUG level.
- *
- * This method allows for compatibility with common interfaces.
- *
- * @param string $message The log message
- * @param array $context The log context
- * @return bool Whether the record has been processed
- */
- public function debug($message, array $context = array())
- {
- return $this->addRecord(static::DEBUG, $message, $context);
- }
-
- /**
- * Adds a log record at the INFO level.
- *
- * This method allows for compatibility with common interfaces.
- *
- * @param string $message The log message
- * @param array $context The log context
- * @return bool Whether the record has been processed
- */
- public function info($message, array $context = array())
- {
- return $this->addRecord(static::INFO, $message, $context);
- }
-
- /**
- * Adds a log record at the NOTICE level.
- *
- * This method allows for compatibility with common interfaces.
- *
- * @param string $message The log message
- * @param array $context The log context
- * @return bool Whether the record has been processed
- */
- public function notice($message, array $context = array())
- {
- return $this->addRecord(static::NOTICE, $message, $context);
- }
-
- /**
- * Adds a log record at the WARNING level.
- *
- * This method allows for compatibility with common interfaces.
- *
- * @param string $message The log message
- * @param array $context The log context
- * @return bool Whether the record has been processed
- */
- public function warn($message, array $context = array())
- {
- return $this->addRecord(static::WARNING, $message, $context);
- }
-
- /**
- * Adds a log record at the WARNING level.
- *
- * This method allows for compatibility with common interfaces.
- *
- * @param string $message The log message
- * @param array $context The log context
- * @return bool Whether the record has been processed
- */
- public function warning($message, array $context = array())
- {
- return $this->addRecord(static::WARNING, $message, $context);
- }
-
- /**
- * Adds a log record at the ERROR level.
- *
- * This method allows for compatibility with common interfaces.
- *
- * @param string $message The log message
- * @param array $context The log context
- * @return bool Whether the record has been processed
- */
- public function err($message, array $context = array())
- {
- return $this->addRecord(static::ERROR, $message, $context);
- }
-
- /**
- * Adds a log record at the ERROR level.
- *
- * This method allows for compatibility with common interfaces.
- *
- * @param string $message The log message
- * @param array $context The log context
- * @return bool Whether the record has been processed
- */
- public function error($message, array $context = array())
- {
- return $this->addRecord(static::ERROR, $message, $context);
- }
-
- /**
- * Adds a log record at the CRITICAL level.
- *
- * This method allows for compatibility with common interfaces.
- *
- * @param string $message The log message
- * @param array $context The log context
- * @return bool Whether the record has been processed
- */
- public function crit($message, array $context = array())
- {
- return $this->addRecord(static::CRITICAL, $message, $context);
- }
-
- /**
- * Adds a log record at the CRITICAL level.
- *
- * This method allows for compatibility with common interfaces.
- *
- * @param string $message The log message
- * @param array $context The log context
- * @return bool Whether the record has been processed
- */
- public function critical($message, array $context = array())
- {
- return $this->addRecord(static::CRITICAL, $message, $context);
- }
-
- /**
- * Adds a log record at the ALERT level.
- *
- * This method allows for compatibility with common interfaces.
- *
- * @param string $message The log message
- * @param array $context The log context
- * @return bool Whether the record has been processed
- */
- public function alert($message, array $context = array())
- {
- return $this->addRecord(static::ALERT, $message, $context);
- }
-
- /**
- * Adds a log record at the EMERGENCY level.
- *
- * This method allows for compatibility with common interfaces.
- *
- * @param string $message The log message
- * @param array $context The log context
- * @return bool Whether the record has been processed
- */
- public function emerg($message, array $context = array())
- {
- return $this->addRecord(static::EMERGENCY, $message, $context);
- }
-
- /**
- * Adds a log record at the EMERGENCY level.
- *
- * This method allows for compatibility with common interfaces.
- *
- * @param string $message The log message
- * @param array $context The log context
- * @return bool Whether the record has been processed
- */
- public function emergency($message, array $context = array())
- {
- return $this->addRecord(static::EMERGENCY, $message, $context);
- }
-
- /**
- * Set the timezone to be used for the timestamp of log records.
- *
- * This is stored globally for all Logger instances
- *
- * @param \DateTimeZone $tz Timezone object
- */
- public static function setTimezone(\DateTimeZone $tz)
- {
- self::$timezone = $tz;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Processor/GitProcessor.php b/vendor/monolog/monolog/src/Monolog/Processor/GitProcessor.php
deleted file mode 100644
index cdf5ec73..00000000
--- a/vendor/monolog/monolog/src/Monolog/Processor/GitProcessor.php
+++ /dev/null
@@ -1,64 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Processor;
-
-use Monolog\Logger;
-
-/**
- * Injects Git branch and Git commit SHA in all records
- *
- * @author Nick Otter
- * @author Jordi Boggiano
- */
-class GitProcessor implements ProcessorInterface
-{
- private $level;
- private static $cache;
-
- public function __construct($level = Logger::DEBUG)
- {
- $this->level = Logger::toMonologLevel($level);
- }
-
- /**
- * @param array $record
- * @return array
- */
- public function __invoke(array $record)
- {
- // return if the level is not high enough
- if ($record['level'] < $this->level) {
- return $record;
- }
-
- $record['extra']['git'] = self::getGitInfo();
-
- return $record;
- }
-
- private static function getGitInfo()
- {
- if (self::$cache) {
- return self::$cache;
- }
-
- $branches = `git branch -v --no-abbrev`;
- if ($branches && preg_match('{^\* (.+?)\s+([a-f0-9]{40})(?:\s|$)}m', $branches, $matches)) {
- return self::$cache = array(
- 'branch' => $matches[1],
- 'commit' => $matches[2],
- );
- }
-
- return self::$cache = array();
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php b/vendor/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php
deleted file mode 100644
index 6ae192a2..00000000
--- a/vendor/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php
+++ /dev/null
@@ -1,112 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Processor;
-
-use Monolog\Logger;
-
-/**
- * Injects line/file:class/function where the log message came from
- *
- * Warning: This only works if the handler processes the logs directly.
- * If you put the processor on a handler that is behind a FingersCrossedHandler
- * for example, the processor will only be called once the trigger level is reached,
- * and all the log records will have the same file/line/.. data from the call that
- * triggered the FingersCrossedHandler.
- *
- * @author Jordi Boggiano
- */
-class IntrospectionProcessor implements ProcessorInterface
-{
- private $level;
-
- private $skipClassesPartials;
-
- private $skipStackFramesCount;
-
- private $skipFunctions = array(
- 'call_user_func',
- 'call_user_func_array',
- );
-
- public function __construct($level = Logger::DEBUG, array $skipClassesPartials = array(), $skipStackFramesCount = 0)
- {
- $this->level = Logger::toMonologLevel($level);
- $this->skipClassesPartials = array_merge(array('Monolog\\'), $skipClassesPartials);
- $this->skipStackFramesCount = $skipStackFramesCount;
- }
-
- /**
- * @param array $record
- * @return array
- */
- public function __invoke(array $record)
- {
- // return if the level is not high enough
- if ($record['level'] < $this->level) {
- return $record;
- }
-
- /*
- * http://php.net/manual/en/function.debug-backtrace.php
- * As of 5.3.6, DEBUG_BACKTRACE_IGNORE_ARGS option was added.
- * Any version less than 5.3.6 must use the DEBUG_BACKTRACE_IGNORE_ARGS constant value '2'.
- */
- $trace = debug_backtrace((PHP_VERSION_ID < 50306) ? 2 : DEBUG_BACKTRACE_IGNORE_ARGS);
-
- // skip first since it's always the current method
- array_shift($trace);
- // the call_user_func call is also skipped
- array_shift($trace);
-
- $i = 0;
-
- while ($this->isTraceClassOrSkippedFunction($trace, $i)) {
- if (isset($trace[$i]['class'])) {
- foreach ($this->skipClassesPartials as $part) {
- if (strpos($trace[$i]['class'], $part) !== false) {
- $i++;
- continue 2;
- }
- }
- } elseif (in_array($trace[$i]['function'], $this->skipFunctions)) {
- $i++;
- continue;
- }
-
- break;
- }
-
- $i += $this->skipStackFramesCount;
-
- // we should have the call source now
- $record['extra'] = array_merge(
- $record['extra'],
- array(
- 'file' => isset($trace[$i - 1]['file']) ? $trace[$i - 1]['file'] : null,
- 'line' => isset($trace[$i - 1]['line']) ? $trace[$i - 1]['line'] : null,
- 'class' => isset($trace[$i]['class']) ? $trace[$i]['class'] : null,
- 'function' => isset($trace[$i]['function']) ? $trace[$i]['function'] : null,
- )
- );
-
- return $record;
- }
-
- private function isTraceClassOrSkippedFunction(array $trace, $index)
- {
- if (!isset($trace[$index])) {
- return false;
- }
-
- return isset($trace[$index]['class']) || in_array($trace[$index]['function'], $this->skipFunctions);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php b/vendor/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php
deleted file mode 100644
index 0543e929..00000000
--- a/vendor/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php
+++ /dev/null
@@ -1,35 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Processor;
-
-/**
- * Injects memory_get_peak_usage in all records
- *
- * @see Monolog\Processor\MemoryProcessor::__construct() for options
- * @author Rob Jensen
- */
-class MemoryPeakUsageProcessor extends MemoryProcessor
-{
- /**
- * @param array $record
- * @return array
- */
- public function __invoke(array $record)
- {
- $bytes = memory_get_peak_usage($this->realUsage);
- $formatted = $this->formatBytes($bytes);
-
- $record['extra']['memory_peak_usage'] = $formatted;
-
- return $record;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php b/vendor/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php
deleted file mode 100644
index 2a379a30..00000000
--- a/vendor/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php
+++ /dev/null
@@ -1,63 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Processor;
-
-/**
- * Some methods that are common for all memory processors
- *
- * @author Rob Jensen
- */
-abstract class MemoryProcessor implements ProcessorInterface
-{
- /**
- * @var bool If true, get the real size of memory allocated from system. Else, only the memory used by emalloc() is reported.
- */
- protected $realUsage;
-
- /**
- * @var bool If true, then format memory size to human readable string (MB, KB, B depending on size)
- */
- protected $useFormatting;
-
- /**
- * @param bool $realUsage Set this to true to get the real size of memory allocated from system.
- * @param bool $useFormatting If true, then format memory size to human readable string (MB, KB, B depending on size)
- */
- public function __construct($realUsage = true, $useFormatting = true)
- {
- $this->realUsage = (bool) $realUsage;
- $this->useFormatting = (bool) $useFormatting;
- }
-
- /**
- * Formats bytes into a human readable string if $this->useFormatting is true, otherwise return $bytes as is
- *
- * @param int $bytes
- * @return string|int Formatted string if $this->useFormatting is true, otherwise return $bytes as is
- */
- protected function formatBytes($bytes)
- {
- $bytes = (int) $bytes;
-
- if (!$this->useFormatting) {
- return $bytes;
- }
-
- if ($bytes > 1024 * 1024) {
- return round($bytes / 1024 / 1024, 2).' MB';
- } elseif ($bytes > 1024) {
- return round($bytes / 1024, 2).' KB';
- }
-
- return $bytes . ' B';
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php b/vendor/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php
deleted file mode 100644
index 2783d656..00000000
--- a/vendor/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php
+++ /dev/null
@@ -1,35 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Processor;
-
-/**
- * Injects memory_get_usage in all records
- *
- * @see Monolog\Processor\MemoryProcessor::__construct() for options
- * @author Rob Jensen
- */
-class MemoryUsageProcessor extends MemoryProcessor
-{
- /**
- * @param array $record
- * @return array
- */
- public function __invoke(array $record)
- {
- $bytes = memory_get_usage($this->realUsage);
- $formatted = $this->formatBytes($bytes);
-
- $record['extra']['memory_usage'] = $formatted;
-
- return $record;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php b/vendor/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php
deleted file mode 100644
index 2f5b3265..00000000
--- a/vendor/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php
+++ /dev/null
@@ -1,63 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Processor;
-
-use Monolog\Logger;
-
-/**
- * Injects Hg branch and Hg revision number in all records
- *
- * @author Jonathan A. Schweder
- */
-class MercurialProcessor implements ProcessorInterface
-{
- private $level;
- private static $cache;
-
- public function __construct($level = Logger::DEBUG)
- {
- $this->level = Logger::toMonologLevel($level);
- }
-
- /**
- * @param array $record
- * @return array
- */
- public function __invoke(array $record)
- {
- // return if the level is not high enough
- if ($record['level'] < $this->level) {
- return $record;
- }
-
- $record['extra']['hg'] = self::getMercurialInfo();
-
- return $record;
- }
-
- private static function getMercurialInfo()
- {
- if (self::$cache) {
- return self::$cache;
- }
-
- $result = explode(' ', trim(`hg id -nb`));
- if (count($result) >= 3) {
- return self::$cache = array(
- 'branch' => $result[1],
- 'revision' => $result[2],
- );
- }
-
- return self::$cache = array();
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php b/vendor/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php
deleted file mode 100644
index 66b80fbb..00000000
--- a/vendor/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php
+++ /dev/null
@@ -1,31 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Processor;
-
-/**
- * Adds value of getmypid into records
- *
- * @author Andreas Hörnicke
- */
-class ProcessIdProcessor implements ProcessorInterface
-{
- /**
- * @param array $record
- * @return array
- */
- public function __invoke(array $record)
- {
- $record['extra']['process_id'] = getmypid();
-
- return $record;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php b/vendor/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php
deleted file mode 100644
index 7e64d4df..00000000
--- a/vendor/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php
+++ /dev/null
@@ -1,25 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Processor;
-
-/**
- * An optional interface to allow labelling Monolog processors.
- *
- * @author Nicolas Grekas
- */
-interface ProcessorInterface
-{
- /**
- * @return array The processed records
- */
- public function __invoke(array $records);
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php b/vendor/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php
deleted file mode 100644
index a318af7e..00000000
--- a/vendor/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php
+++ /dev/null
@@ -1,81 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Processor;
-
-use Monolog\Utils;
-
-/**
- * Processes a record's message according to PSR-3 rules
- *
- * It replaces {foo} with the value from $context['foo']
- *
- * @author Jordi Boggiano
- */
-class PsrLogMessageProcessor implements ProcessorInterface
-{
- const SIMPLE_DATE = "Y-m-d\TH:i:s.uP";
-
- /** @var string|null */
- private $dateFormat;
-
- /** @var bool */
- private $removeUsedContextFields;
-
- /**
- * @param string|null $dateFormat The format of the timestamp: one supported by DateTime::format
- * @param bool $removeUsedContextFields If set to true the fields interpolated into message gets unset
- */
- public function __construct($dateFormat = null, $removeUsedContextFields = false)
- {
- $this->dateFormat = $dateFormat;
- $this->removeUsedContextFields = $removeUsedContextFields;
- }
-
- /**
- * @param array $record
- * @return array
- */
- public function __invoke(array $record)
- {
- if (false === strpos($record['message'], '{')) {
- return $record;
- }
-
- $replacements = array();
- foreach ($record['context'] as $key => $val) {
- $placeholder = '{' . $key . '}';
- if (strpos($record['message'], $placeholder) === false) {
- continue;
- }
-
- if (is_null($val) || is_scalar($val) || (is_object($val) && method_exists($val, "__toString"))) {
- $replacements[$placeholder] = $val;
- } elseif ($val instanceof \DateTime) {
- $replacements[$placeholder] = $val->format($this->dateFormat ?: static::SIMPLE_DATE);
- } elseif (is_object($val)) {
- $replacements[$placeholder] = '[object '.Utils::getClass($val).']';
- } elseif (is_array($val)) {
- $replacements[$placeholder] = 'array'.Utils::jsonEncode($val, null, true);
- } else {
- $replacements[$placeholder] = '['.gettype($val).']';
- }
-
- if ($this->removeUsedContextFields) {
- unset($record['context'][$key]);
- }
- }
-
- $record['message'] = strtr($record['message'], $replacements);
-
- return $record;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Processor/TagProcessor.php b/vendor/monolog/monolog/src/Monolog/Processor/TagProcessor.php
deleted file mode 100644
index 615a4d99..00000000
--- a/vendor/monolog/monolog/src/Monolog/Processor/TagProcessor.php
+++ /dev/null
@@ -1,44 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Processor;
-
-/**
- * Adds a tags array into record
- *
- * @author Martijn Riemers
- */
-class TagProcessor implements ProcessorInterface
-{
- private $tags;
-
- public function __construct(array $tags = array())
- {
- $this->setTags($tags);
- }
-
- public function addTags(array $tags = array())
- {
- $this->tags = array_merge($this->tags, $tags);
- }
-
- public function setTags(array $tags = array())
- {
- $this->tags = $tags;
- }
-
- public function __invoke(array $record)
- {
- $record['extra']['tags'] = $this->tags;
-
- return $record;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Processor/UidProcessor.php b/vendor/monolog/monolog/src/Monolog/Processor/UidProcessor.php
deleted file mode 100644
index d1f708cf..00000000
--- a/vendor/monolog/monolog/src/Monolog/Processor/UidProcessor.php
+++ /dev/null
@@ -1,59 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Processor;
-
-use Monolog\ResettableInterface;
-
-/**
- * Adds a unique identifier into records
- *
- * @author Simon Mönch
- */
-class UidProcessor implements ProcessorInterface, ResettableInterface
-{
- private $uid;
-
- public function __construct($length = 7)
- {
- if (!is_int($length) || $length > 32 || $length < 1) {
- throw new \InvalidArgumentException('The uid length must be an integer between 1 and 32');
- }
-
-
- $this->uid = $this->generateUid($length);
- }
-
- public function __invoke(array $record)
- {
- $record['extra']['uid'] = $this->uid;
-
- return $record;
- }
-
- /**
- * @return string
- */
- public function getUid()
- {
- return $this->uid;
- }
-
- public function reset()
- {
- $this->uid = $this->generateUid(strlen($this->uid));
- }
-
- private function generateUid($length)
- {
- return substr(hash('md5', uniqid('', true)), 0, $length);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Processor/WebProcessor.php b/vendor/monolog/monolog/src/Monolog/Processor/WebProcessor.php
deleted file mode 100644
index 2e8dfae1..00000000
--- a/vendor/monolog/monolog/src/Monolog/Processor/WebProcessor.php
+++ /dev/null
@@ -1,113 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Processor;
-
-/**
- * Injects url/method and remote IP of the current web request in all records
- *
- * @author Jordi Boggiano
- */
-class WebProcessor implements ProcessorInterface
-{
- /**
- * @var array|\ArrayAccess
- */
- protected $serverData;
-
- /**
- * Default fields
- *
- * Array is structured as [key in record.extra => key in $serverData]
- *
- * @var array
- */
- protected $extraFields = array(
- 'url' => 'REQUEST_URI',
- 'ip' => 'REMOTE_ADDR',
- 'http_method' => 'REQUEST_METHOD',
- 'server' => 'SERVER_NAME',
- 'referrer' => 'HTTP_REFERER',
- );
-
- /**
- * @param array|\ArrayAccess $serverData Array or object w/ ArrayAccess that provides access to the $_SERVER data
- * @param array|null $extraFields Field names and the related key inside $serverData to be added. If not provided it defaults to: url, ip, http_method, server, referrer
- */
- public function __construct($serverData = null, array $extraFields = null)
- {
- if (null === $serverData) {
- $this->serverData = &$_SERVER;
- } elseif (is_array($serverData) || $serverData instanceof \ArrayAccess) {
- $this->serverData = $serverData;
- } else {
- throw new \UnexpectedValueException('$serverData must be an array or object implementing ArrayAccess.');
- }
-
- if (isset($this->serverData['UNIQUE_ID'])) {
- $this->extraFields['unique_id'] = 'UNIQUE_ID';
- }
-
- if (null !== $extraFields) {
- if (isset($extraFields[0])) {
- foreach (array_keys($this->extraFields) as $fieldName) {
- if (!in_array($fieldName, $extraFields)) {
- unset($this->extraFields[$fieldName]);
- }
- }
- } else {
- $this->extraFields = $extraFields;
- }
- }
- }
-
- /**
- * @param array $record
- * @return array
- */
- public function __invoke(array $record)
- {
- // skip processing if for some reason request data
- // is not present (CLI or wonky SAPIs)
- if (!isset($this->serverData['REQUEST_URI'])) {
- return $record;
- }
-
- $record['extra'] = $this->appendExtraFields($record['extra']);
-
- return $record;
- }
-
- /**
- * @param string $extraName
- * @param string $serverName
- * @return $this
- */
- public function addExtraField($extraName, $serverName)
- {
- $this->extraFields[$extraName] = $serverName;
-
- return $this;
- }
-
- /**
- * @param array $extra
- * @return array
- */
- private function appendExtraFields(array $extra)
- {
- foreach ($this->extraFields as $extraName => $serverName) {
- $extra[$extraName] = isset($this->serverData[$serverName]) ? $this->serverData[$serverName] : null;
- }
-
- return $extra;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Registry.php b/vendor/monolog/monolog/src/Monolog/Registry.php
deleted file mode 100644
index 159b751c..00000000
--- a/vendor/monolog/monolog/src/Monolog/Registry.php
+++ /dev/null
@@ -1,134 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog;
-
-use InvalidArgumentException;
-
-/**
- * Monolog log registry
- *
- * Allows to get `Logger` instances in the global scope
- * via static method calls on this class.
- *
- *
- * $application = new Monolog\Logger('application');
- * $api = new Monolog\Logger('api');
- *
- * Monolog\Registry::addLogger($application);
- * Monolog\Registry::addLogger($api);
- *
- * function testLogger()
- * {
- * Monolog\Registry::api()->addError('Sent to $api Logger instance');
- * Monolog\Registry::application()->addError('Sent to $application Logger instance');
- * }
- *
- *
- * @author Tomas Tatarko
- */
-class Registry
-{
- /**
- * List of all loggers in the registry (by named indexes)
- *
- * @var Logger[]
- */
- private static $loggers = array();
-
- /**
- * Adds new logging channel to the registry
- *
- * @param Logger $logger Instance of the logging channel
- * @param string|null $name Name of the logging channel ($logger->getName() by default)
- * @param bool $overwrite Overwrite instance in the registry if the given name already exists?
- * @throws \InvalidArgumentException If $overwrite set to false and named Logger instance already exists
- */
- public static function addLogger(Logger $logger, $name = null, $overwrite = false)
- {
- $name = $name ?: $logger->getName();
-
- if (isset(self::$loggers[$name]) && !$overwrite) {
- throw new InvalidArgumentException('Logger with the given name already exists');
- }
-
- self::$loggers[$name] = $logger;
- }
-
- /**
- * Checks if such logging channel exists by name or instance
- *
- * @param string|Logger $logger Name or logger instance
- */
- public static function hasLogger($logger)
- {
- if ($logger instanceof Logger) {
- $index = array_search($logger, self::$loggers, true);
-
- return false !== $index;
- } else {
- return isset(self::$loggers[$logger]);
- }
- }
-
- /**
- * Removes instance from registry by name or instance
- *
- * @param string|Logger $logger Name or logger instance
- */
- public static function removeLogger($logger)
- {
- if ($logger instanceof Logger) {
- if (false !== ($idx = array_search($logger, self::$loggers, true))) {
- unset(self::$loggers[$idx]);
- }
- } else {
- unset(self::$loggers[$logger]);
- }
- }
-
- /**
- * Clears the registry
- */
- public static function clear()
- {
- self::$loggers = array();
- }
-
- /**
- * Gets Logger instance from the registry
- *
- * @param string $name Name of the requested Logger instance
- * @throws \InvalidArgumentException If named Logger instance is not in the registry
- * @return Logger Requested instance of Logger
- */
- public static function getInstance($name)
- {
- if (!isset(self::$loggers[$name])) {
- throw new InvalidArgumentException(sprintf('Requested "%s" logger instance is not in the registry', $name));
- }
-
- return self::$loggers[$name];
- }
-
- /**
- * Gets Logger instance from the registry via static method call
- *
- * @param string $name Name of the requested Logger instance
- * @param array $arguments Arguments passed to static method call
- * @throws \InvalidArgumentException If named Logger instance is not in the registry
- * @return Logger Requested instance of Logger
- */
- public static function __callStatic($name, $arguments)
- {
- return self::getInstance($name);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/ResettableInterface.php b/vendor/monolog/monolog/src/Monolog/ResettableInterface.php
deleted file mode 100644
index 635bc77d..00000000
--- a/vendor/monolog/monolog/src/Monolog/ResettableInterface.php
+++ /dev/null
@@ -1,31 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog;
-
-/**
- * Handler or Processor implementing this interface will be reset when Logger::reset() is called.
- *
- * Resetting ends a log cycle gets them back to their initial state.
- *
- * Resetting a Handler or a Processor means flushing/cleaning all buffers, resetting internal
- * state, and getting it back to a state in which it can receive log records again.
- *
- * This is useful in case you want to avoid logs leaking between two requests or jobs when you
- * have a long running process like a worker or an application server serving multiple requests
- * in one process.
- *
- * @author Grégoire Pineau
- */
-interface ResettableInterface
-{
- public function reset();
-}
diff --git a/vendor/monolog/monolog/src/Monolog/SignalHandler.php b/vendor/monolog/monolog/src/Monolog/SignalHandler.php
deleted file mode 100644
index d87018fe..00000000
--- a/vendor/monolog/monolog/src/Monolog/SignalHandler.php
+++ /dev/null
@@ -1,115 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog;
-
-use Psr\Log\LoggerInterface;
-use Psr\Log\LogLevel;
-use ReflectionExtension;
-
-/**
- * Monolog POSIX signal handler
- *
- * @author Robert Gust-Bardon
- */
-class SignalHandler
-{
- private $logger;
-
- private $previousSignalHandler = array();
- private $signalLevelMap = array();
- private $signalRestartSyscalls = array();
-
- public function __construct(LoggerInterface $logger)
- {
- $this->logger = $logger;
- }
-
- public function registerSignalHandler($signo, $level = LogLevel::CRITICAL, $callPrevious = true, $restartSyscalls = true, $async = true)
- {
- if (!extension_loaded('pcntl') || !function_exists('pcntl_signal')) {
- return $this;
- }
-
- if ($callPrevious) {
- if (function_exists('pcntl_signal_get_handler')) {
- $handler = pcntl_signal_get_handler($signo);
- if ($handler === false) {
- return $this;
- }
- $this->previousSignalHandler[$signo] = $handler;
- } else {
- $this->previousSignalHandler[$signo] = true;
- }
- } else {
- unset($this->previousSignalHandler[$signo]);
- }
- $this->signalLevelMap[$signo] = $level;
- $this->signalRestartSyscalls[$signo] = $restartSyscalls;
-
- if (function_exists('pcntl_async_signals') && $async !== null) {
- pcntl_async_signals($async);
- }
-
- pcntl_signal($signo, array($this, 'handleSignal'), $restartSyscalls);
-
- return $this;
- }
-
- public function handleSignal($signo, array $siginfo = null)
- {
- static $signals = array();
-
- if (!$signals && extension_loaded('pcntl')) {
- $pcntl = new ReflectionExtension('pcntl');
- $constants = $pcntl->getConstants();
- if (!$constants) {
- // HHVM 3.24.2 returns an empty array.
- $constants = get_defined_constants(true);
- $constants = $constants['Core'];
- }
- foreach ($constants as $name => $value) {
- if (substr($name, 0, 3) === 'SIG' && $name[3] !== '_' && is_int($value)) {
- $signals[$value] = $name;
- }
- }
- unset($constants);
- }
-
- $level = isset($this->signalLevelMap[$signo]) ? $this->signalLevelMap[$signo] : LogLevel::CRITICAL;
- $signal = isset($signals[$signo]) ? $signals[$signo] : $signo;
- $context = isset($siginfo) ? $siginfo : array();
- $this->logger->log($level, sprintf('Program received signal %s', $signal), $context);
-
- if (!isset($this->previousSignalHandler[$signo])) {
- return;
- }
-
- if ($this->previousSignalHandler[$signo] === true || $this->previousSignalHandler[$signo] === SIG_DFL) {
- if (extension_loaded('pcntl') && function_exists('pcntl_signal') && function_exists('pcntl_sigprocmask') && function_exists('pcntl_signal_dispatch')
- && extension_loaded('posix') && function_exists('posix_getpid') && function_exists('posix_kill')) {
- $restartSyscalls = isset($this->signalRestartSyscalls[$signo]) ? $this->signalRestartSyscalls[$signo] : true;
- pcntl_signal($signo, SIG_DFL, $restartSyscalls);
- pcntl_sigprocmask(SIG_UNBLOCK, array($signo), $oldset);
- posix_kill(posix_getpid(), $signo);
- pcntl_signal_dispatch();
- pcntl_sigprocmask(SIG_SETMASK, $oldset);
- pcntl_signal($signo, array($this, 'handleSignal'), $restartSyscalls);
- }
- } elseif (is_callable($this->previousSignalHandler[$signo])) {
- if (PHP_VERSION_ID >= 70100) {
- $this->previousSignalHandler[$signo]($signo, $siginfo);
- } else {
- $this->previousSignalHandler[$signo]($signo);
- }
- }
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Utils.php b/vendor/monolog/monolog/src/Monolog/Utils.php
deleted file mode 100644
index 7f1ba129..00000000
--- a/vendor/monolog/monolog/src/Monolog/Utils.php
+++ /dev/null
@@ -1,189 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog;
-
-class Utils
-{
- /**
- * @internal
- */
- public static function getClass($object)
- {
- $class = \get_class($object);
-
- return 'c' === $class[0] && 0 === strpos($class, "class@anonymous\0") ? get_parent_class($class).'@anonymous' : $class;
- }
-
- /**
- * Makes sure if a relative path is passed in it is turned into an absolute path
- *
- * @param string $streamUrl stream URL or path without protocol
- *
- * @return string
- */
- public static function canonicalizePath($streamUrl)
- {
- $prefix = '';
- if ('file://' === substr($streamUrl, 0, 7)) {
- $streamUrl = substr($streamUrl, 7);
- $prefix = 'file://';
- }
-
- // other type of stream, not supported
- if (false !== strpos($streamUrl, '://')) {
- return $streamUrl;
- }
-
- // already absolute
- if (substr($streamUrl, 0, 1) === '/' || substr($streamUrl, 1, 1) === ':' || substr($streamUrl, 0, 2) === '\\\\') {
- return $prefix.$streamUrl;
- }
-
- $streamUrl = getcwd() . '/' . $streamUrl;
-
- return $prefix.$streamUrl;
- }
-
- /**
- * Return the JSON representation of a value
- *
- * @param mixed $data
- * @param int $encodeFlags flags to pass to json encode, defaults to JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE
- * @param bool $ignoreErrors whether to ignore encoding errors or to throw on error, when ignored and the encoding fails, "null" is returned which is valid json for null
- * @throws \RuntimeException if encoding fails and errors are not ignored
- * @return string
- */
- public static function jsonEncode($data, $encodeFlags = null, $ignoreErrors = false)
- {
- if (null === $encodeFlags && version_compare(PHP_VERSION, '5.4.0', '>=')) {
- $encodeFlags = JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE;
- }
-
- if ($ignoreErrors) {
- $json = @json_encode($data, $encodeFlags);
- if (false === $json) {
- return 'null';
- }
-
- return $json;
- }
-
- $json = json_encode($data, $encodeFlags);
- if (false === $json) {
- $json = self::handleJsonError(json_last_error(), $data);
- }
-
- return $json;
- }
-
- /**
- * Handle a json_encode failure.
- *
- * If the failure is due to invalid string encoding, try to clean the
- * input and encode again. If the second encoding attempt fails, the
- * inital error is not encoding related or the input can't be cleaned then
- * raise a descriptive exception.
- *
- * @param int $code return code of json_last_error function
- * @param mixed $data data that was meant to be encoded
- * @param int $encodeFlags flags to pass to json encode, defaults to JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE
- * @throws \RuntimeException if failure can't be corrected
- * @return string JSON encoded data after error correction
- */
- public static function handleJsonError($code, $data, $encodeFlags = null)
- {
- if ($code !== JSON_ERROR_UTF8) {
- self::throwEncodeError($code, $data);
- }
-
- if (is_string($data)) {
- self::detectAndCleanUtf8($data);
- } elseif (is_array($data)) {
- array_walk_recursive($data, array('Monolog\Utils', 'detectAndCleanUtf8'));
- } else {
- self::throwEncodeError($code, $data);
- }
-
- if (null === $encodeFlags && version_compare(PHP_VERSION, '5.4.0', '>=')) {
- $encodeFlags = JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE;
- }
-
- $json = json_encode($data, $encodeFlags);
-
- if ($json === false) {
- self::throwEncodeError(json_last_error(), $data);
- }
-
- return $json;
- }
-
- /**
- * Throws an exception according to a given code with a customized message
- *
- * @param int $code return code of json_last_error function
- * @param mixed $data data that was meant to be encoded
- * @throws \RuntimeException
- */
- private static function throwEncodeError($code, $data)
- {
- switch ($code) {
- case JSON_ERROR_DEPTH:
- $msg = 'Maximum stack depth exceeded';
- break;
- case JSON_ERROR_STATE_MISMATCH:
- $msg = 'Underflow or the modes mismatch';
- break;
- case JSON_ERROR_CTRL_CHAR:
- $msg = 'Unexpected control character found';
- break;
- case JSON_ERROR_UTF8:
- $msg = 'Malformed UTF-8 characters, possibly incorrectly encoded';
- break;
- default:
- $msg = 'Unknown error';
- }
-
- throw new \RuntimeException('JSON encoding failed: '.$msg.'. Encoding: '.var_export($data, true));
- }
-
- /**
- * Detect invalid UTF-8 string characters and convert to valid UTF-8.
- *
- * Valid UTF-8 input will be left unmodified, but strings containing
- * invalid UTF-8 codepoints will be reencoded as UTF-8 with an assumed
- * original encoding of ISO-8859-15. This conversion may result in
- * incorrect output if the actual encoding was not ISO-8859-15, but it
- * will be clean UTF-8 output and will not rely on expensive and fragile
- * detection algorithms.
- *
- * Function converts the input in place in the passed variable so that it
- * can be used as a callback for array_walk_recursive.
- *
- * @param mixed $data Input to check and convert if needed, passed by ref
- * @private
- */
- public static function detectAndCleanUtf8(&$data)
- {
- if (is_string($data) && !preg_match('//u', $data)) {
- $data = preg_replace_callback(
- '/[\x80-\xFF]+/',
- function ($m) { return utf8_encode($m[0]); },
- $data
- );
- $data = str_replace(
- array('¤', '¦', '¨', '´', '¸', '¼', '½', '¾'),
- array('€', 'Š', 'š', 'Ž', 'ž', 'Œ', 'œ', 'Ÿ'),
- $data
- );
- }
- }
-}
diff --git a/vendor/myclabs/deep-copy/.github/FUNDING.yml b/vendor/myclabs/deep-copy/.github/FUNDING.yml
deleted file mode 100644
index b8da664d..00000000
--- a/vendor/myclabs/deep-copy/.github/FUNDING.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-# These are supported funding model platforms
-
-github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
-patreon: # Replace with a single Patreon username
-open_collective: # Replace with a single Open Collective username
-ko_fi: # Replace with a single Ko-fi username
-tidelift: "packagist/myclabs/deep-copy"
-community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
-liberapay: # Replace with a single Liberapay username
-issuehunt: # Replace with a single IssueHunt username
-otechie: # Replace with a single Otechie username
-custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
diff --git a/vendor/myclabs/deep-copy/LICENSE b/vendor/myclabs/deep-copy/LICENSE
deleted file mode 100644
index c3e83500..00000000
--- a/vendor/myclabs/deep-copy/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2013 My C-Sense
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vendor/myclabs/deep-copy/README.md b/vendor/myclabs/deep-copy/README.md
deleted file mode 100644
index 007ad5bb..00000000
--- a/vendor/myclabs/deep-copy/README.md
+++ /dev/null
@@ -1,375 +0,0 @@
-# DeepCopy
-
-DeepCopy helps you create deep copies (clones) of your objects. It is designed to handle cycles in the association graph.
-
-[](https://travis-ci.org/myclabs/DeepCopy)
-[](https://coveralls.io/r/myclabs/DeepCopy?branch=1.x)
-[](https://scrutinizer-ci.com/g/myclabs/DeepCopy/)
-[](https://packagist.org/packages/myclabs/deep-copy)
-
-## Table of Contents
-
-1. [How](#how)
-1. [Why](#why)
- 1. [Using simply `clone`](#using-simply-clone)
- 1. [Overridding `__clone()`](#overridding-__clone)
- 1. [With `DeepCopy`](#with-deepcopy)
-1. [How it works](#how-it-works)
-1. [Going further](#going-further)
- 1. [Matchers](#matchers)
- 1. [Property name](#property-name)
- 1. [Specific property](#specific-property)
- 1. [Type](#type)
- 1. [Filters](#filters)
- 1. [`SetNullFilter`](#setnullfilter-filter)
- 1. [`KeepFilter`](#keepfilter-filter)
- 1. [`DoctrineCollectionFilter`](#doctrinecollectionfilter-filter)
- 1. [`DoctrineEmptyCollectionFilter`](#doctrineemptycollectionfilter-filter)
- 1. [`DoctrineProxyFilter`](#doctrineproxyfilter-filter)
- 1. [`ReplaceFilter`](#replacefilter-type-filter)
- 1. [`ShallowCopyFilter`](#shallowcopyfilter-type-filter)
-1. [Edge cases](#edge-cases)
-1. [Contributing](#contributing)
- 1. [Tests](#tests)
-
-
-## How?
-
-Install with Composer:
-
-```json
-composer require myclabs/deep-copy
-```
-
-Use simply:
-
-```php
-use DeepCopy\DeepCopy;
-
-$copier = new DeepCopy();
-$myCopy = $copier->copy($myObject);
-```
-
-
-## Why?
-
-- How do you create copies of your objects?
-
-```php
-$myCopy = clone $myObject;
-```
-
-- How do you create **deep** copies of your objects (i.e. copying also all the objects referenced in the properties)?
-
-You use [`__clone()`](http://www.php.net/manual/en/language.oop5.cloning.php#object.clone) and implement the behavior
-yourself.
-
-- But how do you handle **cycles** in the association graph?
-
-Now you're in for a big mess :(
-
-
-
-
-### Using simply `clone`
-
-
-
-
-### Overridding `__clone()`
-
-
-
-
-### With `DeepCopy`
-
-
-
-
-## How it works
-
-DeepCopy recursively traverses all the object's properties and clones them. To avoid cloning the same object twice it
-keeps a hash map of all instances and thus preserves the object graph.
-
-To use it:
-
-```php
-use function DeepCopy\deep_copy;
-
-$copy = deep_copy($var);
-```
-
-Alternatively, you can create your own `DeepCopy` instance to configure it differently for example:
-
-```php
-use DeepCopy\DeepCopy;
-
-$copier = new DeepCopy(true);
-
-$copy = $copier->copy($var);
-```
-
-You may want to roll your own deep copy function:
-
-```php
-namespace Acme;
-
-use DeepCopy\DeepCopy;
-
-function deep_copy($var)
-{
- static $copier = null;
-
- if (null === $copier) {
- $copier = new DeepCopy(true);
- }
-
- return $copier->copy($var);
-}
-```
-
-
-## Going further
-
-You can add filters to customize the copy process.
-
-The method to add a filter is `DeepCopy\DeepCopy::addFilter($filter, $matcher)`,
-with `$filter` implementing `DeepCopy\Filter\Filter`
-and `$matcher` implementing `DeepCopy\Matcher\Matcher`.
-
-We provide some generic filters and matchers.
-
-
-### Matchers
-
- - `DeepCopy\Matcher` applies on a object attribute.
- - `DeepCopy\TypeMatcher` applies on any element found in graph, including array elements.
-
-
-#### Property name
-
-The `PropertyNameMatcher` will match a property by its name:
-
-```php
-use DeepCopy\Matcher\PropertyNameMatcher;
-
-// Will apply a filter to any property of any objects named "id"
-$matcher = new PropertyNameMatcher('id');
-```
-
-
-#### Specific property
-
-The `PropertyMatcher` will match a specific property of a specific class:
-
-```php
-use DeepCopy\Matcher\PropertyMatcher;
-
-// Will apply a filter to the property "id" of any objects of the class "MyClass"
-$matcher = new PropertyMatcher('MyClass', 'id');
-```
-
-
-#### Type
-
-The `TypeMatcher` will match any element by its type (instance of a class or any value that could be parameter of
-[gettype()](http://php.net/manual/en/function.gettype.php) function):
-
-```php
-use DeepCopy\TypeMatcher\TypeMatcher;
-
-// Will apply a filter to any object that is an instance of Doctrine\Common\Collections\Collection
-$matcher = new TypeMatcher('Doctrine\Common\Collections\Collection');
-```
-
-
-### Filters
-
-- `DeepCopy\Filter` applies a transformation to the object attribute matched by `DeepCopy\Matcher`
-- `DeepCopy\TypeFilter` applies a transformation to any element matched by `DeepCopy\TypeMatcher`
-
-
-#### `SetNullFilter` (filter)
-
-Let's say for example that you are copying a database record (or a Doctrine entity), so you want the copy not to have
-any ID:
-
-```php
-use DeepCopy\DeepCopy;
-use DeepCopy\Filter\SetNullFilter;
-use DeepCopy\Matcher\PropertyNameMatcher;
-
-$object = MyClass::load(123);
-echo $object->id; // 123
-
-$copier = new DeepCopy();
-$copier->addFilter(new SetNullFilter(), new PropertyNameMatcher('id'));
-
-$copy = $copier->copy($object);
-
-echo $copy->id; // null
-```
-
-
-#### `KeepFilter` (filter)
-
-If you want a property to remain untouched (for example, an association to an object):
-
-```php
-use DeepCopy\DeepCopy;
-use DeepCopy\Filter\KeepFilter;
-use DeepCopy\Matcher\PropertyMatcher;
-
-$copier = new DeepCopy();
-$copier->addFilter(new KeepFilter(), new PropertyMatcher('MyClass', 'category'));
-
-$copy = $copier->copy($object);
-// $copy->category has not been touched
-```
-
-
-#### `DoctrineCollectionFilter` (filter)
-
-If you use Doctrine and want to copy an entity, you will need to use the `DoctrineCollectionFilter`:
-
-```php
-use DeepCopy\DeepCopy;
-use DeepCopy\Filter\Doctrine\DoctrineCollectionFilter;
-use DeepCopy\Matcher\PropertyTypeMatcher;
-
-$copier = new DeepCopy();
-$copier->addFilter(new DoctrineCollectionFilter(), new PropertyTypeMatcher('Doctrine\Common\Collections\Collection'));
-
-$copy = $copier->copy($object);
-```
-
-
-#### `DoctrineEmptyCollectionFilter` (filter)
-
-If you use Doctrine and want to copy an entity who contains a `Collection` that you want to be reset, you can use the
-`DoctrineEmptyCollectionFilter`
-
-```php
-use DeepCopy\DeepCopy;
-use DeepCopy\Filter\Doctrine\DoctrineEmptyCollectionFilter;
-use DeepCopy\Matcher\PropertyMatcher;
-
-$copier = new DeepCopy();
-$copier->addFilter(new DoctrineEmptyCollectionFilter(), new PropertyMatcher('MyClass', 'myProperty'));
-
-$copy = $copier->copy($object);
-
-// $copy->myProperty will return an empty collection
-```
-
-
-#### `DoctrineProxyFilter` (filter)
-
-If you use Doctrine and use cloning on lazy loaded entities, you might encounter errors mentioning missing fields on a
-Doctrine proxy class (...\\\_\_CG\_\_\Proxy).
-You can use the `DoctrineProxyFilter` to load the actual entity behind the Doctrine proxy class.
-**Make sure, though, to put this as one of your very first filters in the filter chain so that the entity is loaded
-before other filters are applied!**
-
-```php
-use DeepCopy\DeepCopy;
-use DeepCopy\Filter\Doctrine\DoctrineProxyFilter;
-use DeepCopy\Matcher\Doctrine\DoctrineProxyMatcher;
-
-$copier = new DeepCopy();
-$copier->addFilter(new DoctrineProxyFilter(), new DoctrineProxyMatcher());
-
-$copy = $copier->copy($object);
-
-// $copy should now contain a clone of all entities, including those that were not yet fully loaded.
-```
-
-
-#### `ReplaceFilter` (type filter)
-
-1. If you want to replace the value of a property:
-
-```php
-use DeepCopy\DeepCopy;
-use DeepCopy\Filter\ReplaceFilter;
-use DeepCopy\Matcher\PropertyMatcher;
-
-$copier = new DeepCopy();
-$callback = function ($currentValue) {
- return $currentValue . ' (copy)'
-};
-$copier->addFilter(new ReplaceFilter($callback), new PropertyMatcher('MyClass', 'title'));
-
-$copy = $copier->copy($object);
-
-// $copy->title will contain the data returned by the callback, e.g. 'The title (copy)'
-```
-
-2. If you want to replace whole element:
-
-```php
-use DeepCopy\DeepCopy;
-use DeepCopy\TypeFilter\ReplaceFilter;
-use DeepCopy\TypeMatcher\TypeMatcher;
-
-$copier = new DeepCopy();
-$callback = function (MyClass $myClass) {
- return get_class($myClass);
-};
-$copier->addTypeFilter(new ReplaceFilter($callback), new TypeMatcher('MyClass'));
-
-$copy = $copier->copy([new MyClass, 'some string', new MyClass]);
-
-// $copy will contain ['MyClass', 'some string', 'MyClass']
-```
-
-
-The `$callback` parameter of the `ReplaceFilter` constructor accepts any PHP callable.
-
-
-#### `ShallowCopyFilter` (type filter)
-
-Stop *DeepCopy* from recursively copying element, using standard `clone` instead:
-
-```php
-use DeepCopy\DeepCopy;
-use DeepCopy\TypeFilter\ShallowCopyFilter;
-use DeepCopy\TypeMatcher\TypeMatcher;
-use Mockery as m;
-
-$this->deepCopy = new DeepCopy();
-$this->deepCopy->addTypeFilter(
- new ShallowCopyFilter,
- new TypeMatcher(m\MockInterface::class)
-);
-
-$myServiceWithMocks = new MyService(m::mock(MyDependency1::class), m::mock(MyDependency2::class));
-// All mocks will be just cloned, not deep copied
-```
-
-
-## Edge cases
-
-The following structures cannot be deep-copied with PHP Reflection. As a result they are shallow cloned and filters are
-not applied. There is two ways for you to handle them:
-
-- Implement your own `__clone()` method
-- Use a filter with a type matcher
-
-
-## Contributing
-
-DeepCopy is distributed under the MIT license.
-
-
-### Tests
-
-Running the tests is simple:
-
-```php
-vendor/bin/phpunit
-```
-
-### Support
-
-Get professional support via [the Tidelift Subscription](https://tidelift.com/subscription/pkg/packagist-myclabs-deep-copy?utm_source=packagist-myclabs-deep-copy&utm_medium=referral&utm_campaign=readme).
diff --git a/vendor/myclabs/deep-copy/composer.json b/vendor/myclabs/deep-copy/composer.json
deleted file mode 100644
index 45656c91..00000000
--- a/vendor/myclabs/deep-copy/composer.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "name": "myclabs/deep-copy",
- "type": "library",
- "description": "Create deep copies (clones) of your objects",
- "keywords": ["clone", "copy", "duplicate", "object", "object graph"],
- "license": "MIT",
-
- "autoload": {
- "psr-4": {
- "DeepCopy\\": "src/DeepCopy/"
- },
- "files": [
- "src/DeepCopy/deep_copy.php"
- ]
- },
- "autoload-dev": {
- "psr-4": {
- "DeepCopy\\": "fixtures/",
- "DeepCopyTest\\": "tests/DeepCopyTest/"
- }
- },
-
- "require": {
- "php": "^7.1 || ^8.0"
- },
- "require-dev": {
- "doctrine/collections": "^1.0",
- "doctrine/common": "^2.6",
- "phpunit/phpunit": "^7.1"
- },
- "replace": {
- "myclabs/deep-copy": "self.version"
- },
-
- "config": {
- "sort-packages": true
- }
-}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/DeepCopy.php b/vendor/myclabs/deep-copy/src/DeepCopy/DeepCopy.php
deleted file mode 100644
index 15e5c689..00000000
--- a/vendor/myclabs/deep-copy/src/DeepCopy/DeepCopy.php
+++ /dev/null
@@ -1,298 +0,0 @@
- Filter, 'matcher' => Matcher] pairs.
- */
- private $filters = [];
-
- /**
- * Type Filters to apply.
- *
- * @var array Array of ['filter' => Filter, 'matcher' => Matcher] pairs.
- */
- private $typeFilters = [];
-
- /**
- * @var bool
- */
- private $skipUncloneable = false;
-
- /**
- * @var bool
- */
- private $useCloneMethod;
-
- /**
- * @param bool $useCloneMethod If set to true, when an object implements the __clone() function, it will be used
- * instead of the regular deep cloning.
- */
- public function __construct($useCloneMethod = false)
- {
- $this->useCloneMethod = $useCloneMethod;
-
- $this->addTypeFilter(new ArrayObjectFilter($this), new TypeMatcher(ArrayObject::class));
- $this->addTypeFilter(new DateIntervalFilter(), new TypeMatcher(DateInterval::class));
- $this->addTypeFilter(new SplDoublyLinkedListFilter($this), new TypeMatcher(SplDoublyLinkedList::class));
- }
-
- /**
- * If enabled, will not throw an exception when coming across an uncloneable property.
- *
- * @param $skipUncloneable
- *
- * @return $this
- */
- public function skipUncloneable($skipUncloneable = true)
- {
- $this->skipUncloneable = $skipUncloneable;
-
- return $this;
- }
-
- /**
- * Deep copies the given object.
- *
- * @param mixed $object
- *
- * @return mixed
- */
- public function copy($object)
- {
- $this->hashMap = [];
-
- return $this->recursiveCopy($object);
- }
-
- public function addFilter(Filter $filter, Matcher $matcher)
- {
- $this->filters[] = [
- 'matcher' => $matcher,
- 'filter' => $filter,
- ];
- }
-
- public function prependFilter(Filter $filter, Matcher $matcher)
- {
- array_unshift($this->filters, [
- 'matcher' => $matcher,
- 'filter' => $filter,
- ]);
- }
-
- public function addTypeFilter(TypeFilter $filter, TypeMatcher $matcher)
- {
- $this->typeFilters[] = [
- 'matcher' => $matcher,
- 'filter' => $filter,
- ];
- }
-
- private function recursiveCopy($var)
- {
- // Matches Type Filter
- if ($filter = $this->getFirstMatchedTypeFilter($this->typeFilters, $var)) {
- return $filter->apply($var);
- }
-
- // Resource
- if (is_resource($var)) {
- return $var;
- }
-
- // Array
- if (is_array($var)) {
- return $this->copyArray($var);
- }
-
- // Scalar
- if (! is_object($var)) {
- return $var;
- }
-
- // Object
- return $this->copyObject($var);
- }
-
- /**
- * Copy an array
- * @param array $array
- * @return array
- */
- private function copyArray(array $array)
- {
- foreach ($array as $key => $value) {
- $array[$key] = $this->recursiveCopy($value);
- }
-
- return $array;
- }
-
- /**
- * Copies an object.
- *
- * @param object $object
- *
- * @throws CloneException
- *
- * @return object
- */
- private function copyObject($object)
- {
- $objectHash = spl_object_hash($object);
-
- if (isset($this->hashMap[$objectHash])) {
- return $this->hashMap[$objectHash];
- }
-
- $reflectedObject = new ReflectionObject($object);
- $isCloneable = $reflectedObject->isCloneable();
-
- if (false === $isCloneable) {
- if ($this->skipUncloneable) {
- $this->hashMap[$objectHash] = $object;
-
- return $object;
- }
-
- throw new CloneException(
- sprintf(
- 'The class "%s" is not cloneable.',
- $reflectedObject->getName()
- )
- );
- }
-
- $newObject = clone $object;
- $this->hashMap[$objectHash] = $newObject;
-
- if ($this->useCloneMethod && $reflectedObject->hasMethod('__clone')) {
- return $newObject;
- }
-
- if ($newObject instanceof DateTimeInterface || $newObject instanceof DateTimeZone) {
- return $newObject;
- }
-
- foreach (ReflectionHelper::getProperties($reflectedObject) as $property) {
- $this->copyObjectProperty($newObject, $property);
- }
-
- return $newObject;
- }
-
- private function copyObjectProperty($object, ReflectionProperty $property)
- {
- // Ignore static properties
- if ($property->isStatic()) {
- return;
- }
-
- // Apply the filters
- foreach ($this->filters as $item) {
- /** @var Matcher $matcher */
- $matcher = $item['matcher'];
- /** @var Filter $filter */
- $filter = $item['filter'];
-
- if ($matcher->matches($object, $property->getName())) {
- $filter->apply(
- $object,
- $property->getName(),
- function ($object) {
- return $this->recursiveCopy($object);
- }
- );
-
- // If a filter matches, we stop processing this property
- return;
- }
- }
-
- $property->setAccessible(true);
-
- // Ignore uninitialized properties (for PHP >7.4)
- if (method_exists($property, 'isInitialized') && !$property->isInitialized($object)) {
- return;
- }
-
- $propertyValue = $property->getValue($object);
-
- // Copy the property
- $property->setValue($object, $this->recursiveCopy($propertyValue));
- }
-
- /**
- * Returns first filter that matches variable, `null` if no such filter found.
- *
- * @param array $filterRecords Associative array with 2 members: 'filter' with value of type {@see TypeFilter} and
- * 'matcher' with value of type {@see TypeMatcher}
- * @param mixed $var
- *
- * @return TypeFilter|null
- */
- private function getFirstMatchedTypeFilter(array $filterRecords, $var)
- {
- $matched = $this->first(
- $filterRecords,
- function (array $record) use ($var) {
- /* @var TypeMatcher $matcher */
- $matcher = $record['matcher'];
-
- return $matcher->matches($var);
- }
- );
-
- return isset($matched) ? $matched['filter'] : null;
- }
-
- /**
- * Returns first element that matches predicate, `null` if no such element found.
- *
- * @param array $elements Array of ['filter' => Filter, 'matcher' => Matcher] pairs.
- * @param callable $predicate Predicate arguments are: element.
- *
- * @return array|null Associative array with 2 members: 'filter' with value of type {@see TypeFilter} and 'matcher'
- * with value of type {@see TypeMatcher} or `null`.
- */
- private function first(array $elements, callable $predicate)
- {
- foreach ($elements as $element) {
- if (call_user_func($predicate, $element)) {
- return $element;
- }
- }
-
- return null;
- }
-}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php b/vendor/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php
deleted file mode 100644
index c046706a..00000000
--- a/vendor/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php
+++ /dev/null
@@ -1,9 +0,0 @@
-setAccessible(true);
- $oldCollection = $reflectionProperty->getValue($object);
-
- $newCollection = $oldCollection->map(
- function ($item) use ($objectCopier) {
- return $objectCopier($item);
- }
- );
-
- $reflectionProperty->setValue($object, $newCollection);
- }
-}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php
deleted file mode 100644
index 7b33fd54..00000000
--- a/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php
+++ /dev/null
@@ -1,28 +0,0 @@
-setAccessible(true);
-
- $reflectionProperty->setValue($object, new ArrayCollection());
- }
-}
\ No newline at end of file
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php
deleted file mode 100644
index 8bee8f76..00000000
--- a/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php
+++ /dev/null
@@ -1,22 +0,0 @@
-__load();
- }
-}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php
deleted file mode 100644
index 85ba18ce..00000000
--- a/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php
+++ /dev/null
@@ -1,18 +0,0 @@
-callback = $callable;
- }
-
- /**
- * Replaces the object property by the result of the callback called with the object property.
- *
- * {@inheritdoc}
- */
- public function apply($object, $property, $objectCopier)
- {
- $reflectionProperty = ReflectionHelper::getProperty($object, $property);
- $reflectionProperty->setAccessible(true);
-
- $value = call_user_func($this->callback, $reflectionProperty->getValue($object));
-
- $reflectionProperty->setValue($object, $value);
- }
-}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php
deleted file mode 100644
index bea86b88..00000000
--- a/vendor/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php
+++ /dev/null
@@ -1,24 +0,0 @@
-setAccessible(true);
- $reflectionProperty->setValue($object, null);
- }
-}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php b/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php
deleted file mode 100644
index ec8856f5..00000000
--- a/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php
+++ /dev/null
@@ -1,22 +0,0 @@
-class = $class;
- $this->property = $property;
- }
-
- /**
- * Matches a specific property of a specific class.
- *
- * {@inheritdoc}
- */
- public function matches($object, $property)
- {
- return ($object instanceof $this->class) && $property == $this->property;
- }
-}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php b/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php
deleted file mode 100644
index c8ec0d2b..00000000
--- a/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php
+++ /dev/null
@@ -1,32 +0,0 @@
-property = $property;
- }
-
- /**
- * Matches a property by its name.
- *
- * {@inheritdoc}
- */
- public function matches($object, $property)
- {
- return $property == $this->property;
- }
-}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php b/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php
deleted file mode 100644
index c7f46908..00000000
--- a/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php
+++ /dev/null
@@ -1,52 +0,0 @@
-propertyType = $propertyType;
- }
-
- /**
- * {@inheritdoc}
- */
- public function matches($object, $property)
- {
- try {
- $reflectionProperty = ReflectionHelper::getProperty($object, $property);
- } catch (ReflectionException $exception) {
- return false;
- }
-
- $reflectionProperty->setAccessible(true);
-
- // Uninitialized properties (for PHP >7.4)
- if (method_exists($reflectionProperty, 'isInitialized') && !$reflectionProperty->isInitialized($object)) {
- // null instanceof $this->propertyType
- return false;
- }
-
- return $reflectionProperty->getValue($object) instanceof $this->propertyType;
- }
-}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php b/vendor/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php
deleted file mode 100644
index 742410cb..00000000
--- a/vendor/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php
+++ /dev/null
@@ -1,78 +0,0 @@
-getProperties() does not return private properties from ancestor classes.
- *
- * @author muratyaman@gmail.com
- * @see http://php.net/manual/en/reflectionclass.getproperties.php
- *
- * @param ReflectionClass $ref
- *
- * @return ReflectionProperty[]
- */
- public static function getProperties(ReflectionClass $ref)
- {
- $props = $ref->getProperties();
- $propsArr = array();
-
- foreach ($props as $prop) {
- $propertyName = $prop->getName();
- $propsArr[$propertyName] = $prop;
- }
-
- if ($parentClass = $ref->getParentClass()) {
- $parentPropsArr = self::getProperties($parentClass);
- foreach ($propsArr as $key => $property) {
- $parentPropsArr[$key] = $property;
- }
-
- return $parentPropsArr;
- }
-
- return $propsArr;
- }
-
- /**
- * Retrieves property by name from object and all its ancestors.
- *
- * @param object|string $object
- * @param string $name
- *
- * @throws PropertyException
- * @throws ReflectionException
- *
- * @return ReflectionProperty
- */
- public static function getProperty($object, $name)
- {
- $reflection = is_object($object) ? new ReflectionObject($object) : new ReflectionClass($object);
-
- if ($reflection->hasProperty($name)) {
- return $reflection->getProperty($name);
- }
-
- if ($parentClass = $reflection->getParentClass()) {
- return self::getProperty($parentClass->getName(), $name);
- }
-
- throw new PropertyException(
- sprintf(
- 'The class "%s" doesn\'t have a property with the given name: "%s".',
- is_object($object) ? get_class($object) : $object,
- $name
- )
- );
- }
-}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DateIntervalFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DateIntervalFilter.php
deleted file mode 100644
index becd1cff..00000000
--- a/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DateIntervalFilter.php
+++ /dev/null
@@ -1,33 +0,0 @@
- $propertyValue) {
- $copy->{$propertyName} = $propertyValue;
- }
-
- return $copy;
- }
-}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php
deleted file mode 100644
index 164f8b8e..00000000
--- a/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php
+++ /dev/null
@@ -1,30 +0,0 @@
-callback = $callable;
- }
-
- /**
- * {@inheritdoc}
- */
- public function apply($element)
- {
- return call_user_func($this->callback, $element);
- }
-}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php
deleted file mode 100644
index a5fbd7a2..00000000
--- a/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php
+++ /dev/null
@@ -1,17 +0,0 @@
-copier = $copier;
- }
-
- /**
- * {@inheritdoc}
- */
- public function apply($arrayObject)
- {
- $clone = clone $arrayObject;
- foreach ($arrayObject->getArrayCopy() as $k => $v) {
- $clone->offsetSet($k, $this->copier->copy($v));
- }
-
- return $clone;
- }
-}
-
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.php b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.php
deleted file mode 100644
index c5644cff..00000000
--- a/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.php
+++ /dev/null
@@ -1,10 +0,0 @@
-copier = $copier;
- }
-
- /**
- * {@inheritdoc}
- */
- public function apply($element)
- {
- $newElement = clone $element;
-
- $copy = $this->createCopyClosure();
-
- return $copy($newElement);
- }
-
- private function createCopyClosure()
- {
- $copier = $this->copier;
-
- $copy = function (SplDoublyLinkedList $list) use ($copier) {
- // Replace each element in the list with a deep copy of itself
- for ($i = 1; $i <= $list->count(); $i++) {
- $copy = $copier->recursiveCopy($list->shift());
-
- $list->push($copy);
- }
-
- return $list;
- };
-
- return Closure::bind($copy, null, DeepCopy::class);
- }
-}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php
deleted file mode 100644
index 5785a7da..00000000
--- a/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php
+++ /dev/null
@@ -1,13 +0,0 @@
-type = $type;
- }
-
- /**
- * @param mixed $element
- *
- * @return boolean
- */
- public function matches($element)
- {
- return is_object($element) ? is_a($element, $this->type) : gettype($element) === $this->type;
- }
-}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/deep_copy.php b/vendor/myclabs/deep-copy/src/DeepCopy/deep_copy.php
deleted file mode 100644
index 55dcc926..00000000
--- a/vendor/myclabs/deep-copy/src/DeepCopy/deep_copy.php
+++ /dev/null
@@ -1,20 +0,0 @@
-copy($value);
- }
-}
diff --git a/vendor/nesbot/carbon/LICENSE b/vendor/nesbot/carbon/LICENSE
deleted file mode 100644
index 6de45ebf..00000000
--- a/vendor/nesbot/carbon/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (C) Brian Nesbitt
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/nesbot/carbon/bin/carbon b/vendor/nesbot/carbon/bin/carbon
deleted file mode 100755
index b53ab738..00000000
--- a/vendor/nesbot/carbon/bin/carbon
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env php
-toDateTimeString());
-printf("Right now in Vancouver is %s", Carbon::now('America/Vancouver')); //implicit __toString()
-$tomorrow = Carbon::now()->addDay();
-$lastWeek = Carbon::now()->subWeek();
-$nextSummerOlympics = Carbon::createFromDate(2016)->addYears(4);
-
-$officialDate = Carbon::now()->toRfc2822String();
-
-$howOldAmI = Carbon::createFromDate(1975, 5, 21)->age;
-
-$noonTodayLondonTime = Carbon::createFromTime(12, 0, 0, 'Europe/London');
-
-$internetWillBlowUpOn = Carbon::create(2038, 01, 19, 3, 14, 7, 'GMT');
-
-// Don't really want this to happen so mock now
-Carbon::setTestNow(Carbon::createFromDate(2000, 1, 1));
-
-// comparisons are always done in UTC
-if (Carbon::now()->gte($internetWillBlowUpOn)) {
- die();
-}
-
-// Phew! Return to normal behaviour
-Carbon::setTestNow();
-
-if (Carbon::now()->isWeekend()) {
- echo 'Party!';
-}
-// Over 200 languages (and over 500 regional variants) supported:
-echo Carbon::now()->subMinutes(2)->diffForHumans(); // '2 minutes ago'
-echo Carbon::now()->subMinutes(2)->locale('zh_CN')->diffForHumans(); // '2分钟前'
-echo Carbon::parse('2019-07-23 14:51')->isoFormat('LLLL'); // 'Tuesday, July 23, 2019 2:51 PM'
-echo Carbon::parse('2019-07-23 14:51')->locale('fr_FR')->isoFormat('LLLL'); // 'mardi 23 juillet 2019 14:51'
-
-// ... but also does 'from now', 'after' and 'before'
-// rolling up to seconds, minutes, hours, days, months, years
-
-$daysSinceEpoch = Carbon::createFromTimestamp(0)->diffInDays();
-```
-
-[Get supported nesbot/carbon with the Tidelift Subscription](https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme)
-
-## Installation
-
-### With Composer
-
-```
-$ composer require nesbot/carbon
-```
-
-```json
-{
- "require": {
- "nesbot/carbon": "^2.16"
- }
-}
-```
-
-```php
-
-
-### Translators
-
-[Thanks to people helping us to translate Carbon in so many languages](https://carbon.nesbot.com/contribute/translators/)
-
-### Sponsors
-
-Support this project by becoming a sponsor. Your logo will show up here with a link to your website.
-
-
-
-
-
-
-
-
-
-[[Become a sponsor](https://opencollective.com/Carbon#sponsor)]
-
-### Backers
-
-Thank you to all our backers! 🙏
-
-
-
-[[Become a backer](https://opencollective.com/Carbon#backer)]
-
-## Carbon for enterprise
-
-Available as part of the Tidelift Subscription.
-
-The maintainers of ``Carbon`` and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=enterprise&utm_term=repo)
diff --git a/vendor/nesbot/carbon/src/Carbon/Carbon.php b/vendor/nesbot/carbon/src/Carbon/Carbon.php
deleted file mode 100644
index 8910f895..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Carbon.php
+++ /dev/null
@@ -1,524 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon;
-
-use Carbon\Traits\Date;
-use DateTime;
-use DateTimeInterface;
-use DateTimeZone;
-
-/**
- * A simple API extension for DateTime.
- *
- *
- *
- * @property int $year
- * @property int $yearIso
- * @property int $month
- * @property int $day
- * @property int $hour
- * @property int $minute
- * @property int $second
- * @property int $micro
- * @property int $microsecond
- * @property int|float|string $timestamp seconds since the Unix Epoch
- * @property string $englishDayOfWeek the day of week in English
- * @property string $shortEnglishDayOfWeek the abbreviated day of week in English
- * @property string $englishMonth the month in English
- * @property string $shortEnglishMonth the abbreviated month in English
- * @property string $localeDayOfWeek the day of week in current locale LC_TIME
- * @property string $shortLocaleDayOfWeek the abbreviated day of week in current locale LC_TIME
- * @property string $localeMonth the month in current locale LC_TIME
- * @property string $shortLocaleMonth the abbreviated month in current locale LC_TIME
- * @property int $milliseconds
- * @property int $millisecond
- * @property int $milli
- * @property int $week 1 through 53
- * @property int $isoWeek 1 through 53
- * @property int $weekYear year according to week format
- * @property int $isoWeekYear year according to ISO week format
- * @property int $dayOfYear 1 through 366
- * @property int $age does a diffInYears() with default parameters
- * @property int $offset the timezone offset in seconds from UTC
- * @property int $offsetMinutes the timezone offset in minutes from UTC
- * @property int $offsetHours the timezone offset in hours from UTC
- * @property CarbonTimeZone $timezone the current timezone
- * @property CarbonTimeZone $tz alias of $timezone
- * @property-read int $dayOfWeek 0 (for Sunday) through 6 (for Saturday)
- * @property-read int $dayOfWeekIso 1 (for Monday) through 7 (for Sunday)
- * @property-read int $weekOfYear ISO-8601 week number of year, weeks starting on Monday
- * @property-read int $daysInMonth number of days in the given month
- * @property-read string $latinMeridiem "am"/"pm" (Ante meridiem or Post meridiem latin lowercase mark)
- * @property-read string $latinUpperMeridiem "AM"/"PM" (Ante meridiem or Post meridiem latin uppercase mark)
- * @property-read string $timezoneAbbreviatedName the current timezone abbreviated name
- * @property-read string $tzAbbrName alias of $timezoneAbbreviatedName
- * @property-read string $dayName long name of weekday translated according to Carbon locale, in english if no translation available for current language
- * @property-read string $shortDayName short name of weekday translated according to Carbon locale, in english if no translation available for current language
- * @property-read string $minDayName very short name of weekday translated according to Carbon locale, in english if no translation available for current language
- * @property-read string $monthName long name of month translated according to Carbon locale, in english if no translation available for current language
- * @property-read string $shortMonthName short name of month translated according to Carbon locale, in english if no translation available for current language
- * @property-read string $meridiem lowercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language
- * @property-read string $upperMeridiem uppercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language
- * @property-read int $noZeroHour current hour from 1 to 24
- * @property-read int $weeksInYear 51 through 53
- * @property-read int $isoWeeksInYear 51 through 53
- * @property-read int $weekOfMonth 1 through 5
- * @property-read int $weekNumberInMonth 1 through 5
- * @property-read int $firstWeekDay 0 through 6
- * @property-read int $lastWeekDay 0 through 6
- * @property-read int $daysInYear 365 or 366
- * @property-read int $quarter the quarter of this instance, 1 - 4
- * @property-read int $decade the decade of this instance
- * @property-read int $century the century of this instance
- * @property-read int $millennium the millennium of this instance
- * @property-read bool $dst daylight savings time indicator, true if DST, false otherwise
- * @property-read bool $local checks if the timezone is local, true if local, false otherwise
- * @property-read bool $utc checks if the timezone is UTC, true if UTC, false otherwise
- * @property-read string $timezoneName the current timezone name
- * @property-read string $tzName alias of $timezoneName
- * @property-read string $locale locale of the current instance
- *
- * @method bool isUtc() Check if the current instance has UTC timezone. (Both isUtc and isUTC cases are valid.)
- * @method bool isLocal() Check if the current instance has non-UTC timezone.
- * @method bool isValid() Check if the current instance is a valid date.
- * @method bool isDST() Check if the current instance is in a daylight saving time.
- * @method bool isSunday() Checks if the instance day is sunday.
- * @method bool isMonday() Checks if the instance day is monday.
- * @method bool isTuesday() Checks if the instance day is tuesday.
- * @method bool isWednesday() Checks if the instance day is wednesday.
- * @method bool isThursday() Checks if the instance day is thursday.
- * @method bool isFriday() Checks if the instance day is friday.
- * @method bool isSaturday() Checks if the instance day is saturday.
- * @method bool isSameYear(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same year as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentYear() Checks if the instance is in the same year as the current moment.
- * @method bool isNextYear() Checks if the instance is in the same year as the current moment next year.
- * @method bool isLastYear() Checks if the instance is in the same year as the current moment last year.
- * @method bool isSameWeek(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same week as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentWeek() Checks if the instance is in the same week as the current moment.
- * @method bool isNextWeek() Checks if the instance is in the same week as the current moment next week.
- * @method bool isLastWeek() Checks if the instance is in the same week as the current moment last week.
- * @method bool isSameDay(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same day as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentDay() Checks if the instance is in the same day as the current moment.
- * @method bool isNextDay() Checks if the instance is in the same day as the current moment next day.
- * @method bool isLastDay() Checks if the instance is in the same day as the current moment last day.
- * @method bool isSameHour(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same hour as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentHour() Checks if the instance is in the same hour as the current moment.
- * @method bool isNextHour() Checks if the instance is in the same hour as the current moment next hour.
- * @method bool isLastHour() Checks if the instance is in the same hour as the current moment last hour.
- * @method bool isSameMinute(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same minute as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentMinute() Checks if the instance is in the same minute as the current moment.
- * @method bool isNextMinute() Checks if the instance is in the same minute as the current moment next minute.
- * @method bool isLastMinute() Checks if the instance is in the same minute as the current moment last minute.
- * @method bool isSameSecond(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same second as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentSecond() Checks if the instance is in the same second as the current moment.
- * @method bool isNextSecond() Checks if the instance is in the same second as the current moment next second.
- * @method bool isLastSecond() Checks if the instance is in the same second as the current moment last second.
- * @method bool isSameMicro(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentMicro() Checks if the instance is in the same microsecond as the current moment.
- * @method bool isNextMicro() Checks if the instance is in the same microsecond as the current moment next microsecond.
- * @method bool isLastMicro() Checks if the instance is in the same microsecond as the current moment last microsecond.
- * @method bool isSameMicrosecond(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentMicrosecond() Checks if the instance is in the same microsecond as the current moment.
- * @method bool isNextMicrosecond() Checks if the instance is in the same microsecond as the current moment next microsecond.
- * @method bool isLastMicrosecond() Checks if the instance is in the same microsecond as the current moment last microsecond.
- * @method bool isCurrentMonth() Checks if the instance is in the same month as the current moment.
- * @method bool isNextMonth() Checks if the instance is in the same month as the current moment next month.
- * @method bool isLastMonth() Checks if the instance is in the same month as the current moment last month.
- * @method bool isCurrentQuarter() Checks if the instance is in the same quarter as the current moment.
- * @method bool isNextQuarter() Checks if the instance is in the same quarter as the current moment next quarter.
- * @method bool isLastQuarter() Checks if the instance is in the same quarter as the current moment last quarter.
- * @method bool isSameDecade(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same decade as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentDecade() Checks if the instance is in the same decade as the current moment.
- * @method bool isNextDecade() Checks if the instance is in the same decade as the current moment next decade.
- * @method bool isLastDecade() Checks if the instance is in the same decade as the current moment last decade.
- * @method bool isSameCentury(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same century as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentCentury() Checks if the instance is in the same century as the current moment.
- * @method bool isNextCentury() Checks if the instance is in the same century as the current moment next century.
- * @method bool isLastCentury() Checks if the instance is in the same century as the current moment last century.
- * @method bool isSameMillennium(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same millennium as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentMillennium() Checks if the instance is in the same millennium as the current moment.
- * @method bool isNextMillennium() Checks if the instance is in the same millennium as the current moment next millennium.
- * @method bool isLastMillennium() Checks if the instance is in the same millennium as the current moment last millennium.
- * @method $this years(int $value) Set current instance year to the given value.
- * @method $this year(int $value) Set current instance year to the given value.
- * @method $this setYears(int $value) Set current instance year to the given value.
- * @method $this setYear(int $value) Set current instance year to the given value.
- * @method $this months(int $value) Set current instance month to the given value.
- * @method $this month(int $value) Set current instance month to the given value.
- * @method $this setMonths(int $value) Set current instance month to the given value.
- * @method $this setMonth(int $value) Set current instance month to the given value.
- * @method $this days(int $value) Set current instance day to the given value.
- * @method $this day(int $value) Set current instance day to the given value.
- * @method $this setDays(int $value) Set current instance day to the given value.
- * @method $this setDay(int $value) Set current instance day to the given value.
- * @method $this hours(int $value) Set current instance hour to the given value.
- * @method $this hour(int $value) Set current instance hour to the given value.
- * @method $this setHours(int $value) Set current instance hour to the given value.
- * @method $this setHour(int $value) Set current instance hour to the given value.
- * @method $this minutes(int $value) Set current instance minute to the given value.
- * @method $this minute(int $value) Set current instance minute to the given value.
- * @method $this setMinutes(int $value) Set current instance minute to the given value.
- * @method $this setMinute(int $value) Set current instance minute to the given value.
- * @method $this seconds(int $value) Set current instance second to the given value.
- * @method $this second(int $value) Set current instance second to the given value.
- * @method $this setSeconds(int $value) Set current instance second to the given value.
- * @method $this setSecond(int $value) Set current instance second to the given value.
- * @method $this millis(int $value) Set current instance millisecond to the given value.
- * @method $this milli(int $value) Set current instance millisecond to the given value.
- * @method $this setMillis(int $value) Set current instance millisecond to the given value.
- * @method $this setMilli(int $value) Set current instance millisecond to the given value.
- * @method $this milliseconds(int $value) Set current instance millisecond to the given value.
- * @method $this millisecond(int $value) Set current instance millisecond to the given value.
- * @method $this setMilliseconds(int $value) Set current instance millisecond to the given value.
- * @method $this setMillisecond(int $value) Set current instance millisecond to the given value.
- * @method $this micros(int $value) Set current instance microsecond to the given value.
- * @method $this micro(int $value) Set current instance microsecond to the given value.
- * @method $this setMicros(int $value) Set current instance microsecond to the given value.
- * @method $this setMicro(int $value) Set current instance microsecond to the given value.
- * @method $this microseconds(int $value) Set current instance microsecond to the given value.
- * @method $this microsecond(int $value) Set current instance microsecond to the given value.
- * @method $this setMicroseconds(int $value) Set current instance microsecond to the given value.
- * @method $this setMicrosecond(int $value) Set current instance microsecond to the given value.
- * @method $this addYears(int $value = 1) Add years (the $value count passed in) to the instance (using date interval).
- * @method $this addYear() Add one year to the instance (using date interval).
- * @method $this subYears(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval).
- * @method $this subYear() Sub one year to the instance (using date interval).
- * @method $this addYearsWithOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method $this addYearWithOverflow() Add one year to the instance (using date interval) with overflow explicitly allowed.
- * @method $this subYearsWithOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method $this subYearWithOverflow() Sub one year to the instance (using date interval) with overflow explicitly allowed.
- * @method $this addYearsWithoutOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addYearWithoutOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subYearsWithoutOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subYearWithoutOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addYearsWithNoOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addYearWithNoOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subYearsWithNoOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subYearWithNoOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addYearsNoOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addYearNoOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subYearsNoOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subYearNoOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addMonths(int $value = 1) Add months (the $value count passed in) to the instance (using date interval).
- * @method $this addMonth() Add one month to the instance (using date interval).
- * @method $this subMonths(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval).
- * @method $this subMonth() Sub one month to the instance (using date interval).
- * @method $this addMonthsWithOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method $this addMonthWithOverflow() Add one month to the instance (using date interval) with overflow explicitly allowed.
- * @method $this subMonthsWithOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method $this subMonthWithOverflow() Sub one month to the instance (using date interval) with overflow explicitly allowed.
- * @method $this addMonthsWithoutOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addMonthWithoutOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subMonthsWithoutOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subMonthWithoutOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addMonthsWithNoOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addMonthWithNoOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subMonthsWithNoOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subMonthWithNoOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addMonthsNoOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addMonthNoOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subMonthsNoOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subMonthNoOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addDays(int $value = 1) Add days (the $value count passed in) to the instance (using date interval).
- * @method $this addDay() Add one day to the instance (using date interval).
- * @method $this subDays(int $value = 1) Sub days (the $value count passed in) to the instance (using date interval).
- * @method $this subDay() Sub one day to the instance (using date interval).
- * @method $this addHours(int $value = 1) Add hours (the $value count passed in) to the instance (using date interval).
- * @method $this addHour() Add one hour to the instance (using date interval).
- * @method $this subHours(int $value = 1) Sub hours (the $value count passed in) to the instance (using date interval).
- * @method $this subHour() Sub one hour to the instance (using date interval).
- * @method $this addMinutes(int $value = 1) Add minutes (the $value count passed in) to the instance (using date interval).
- * @method $this addMinute() Add one minute to the instance (using date interval).
- * @method $this subMinutes(int $value = 1) Sub minutes (the $value count passed in) to the instance (using date interval).
- * @method $this subMinute() Sub one minute to the instance (using date interval).
- * @method $this addSeconds(int $value = 1) Add seconds (the $value count passed in) to the instance (using date interval).
- * @method $this addSecond() Add one second to the instance (using date interval).
- * @method $this subSeconds(int $value = 1) Sub seconds (the $value count passed in) to the instance (using date interval).
- * @method $this subSecond() Sub one second to the instance (using date interval).
- * @method $this addMillis(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using date interval).
- * @method $this addMilli() Add one millisecond to the instance (using date interval).
- * @method $this subMillis(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using date interval).
- * @method $this subMilli() Sub one millisecond to the instance (using date interval).
- * @method $this addMilliseconds(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using date interval).
- * @method $this addMillisecond() Add one millisecond to the instance (using date interval).
- * @method $this subMilliseconds(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using date interval).
- * @method $this subMillisecond() Sub one millisecond to the instance (using date interval).
- * @method $this addMicros(int $value = 1) Add microseconds (the $value count passed in) to the instance (using date interval).
- * @method $this addMicro() Add one microsecond to the instance (using date interval).
- * @method $this subMicros(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using date interval).
- * @method $this subMicro() Sub one microsecond to the instance (using date interval).
- * @method $this addMicroseconds(int $value = 1) Add microseconds (the $value count passed in) to the instance (using date interval).
- * @method $this addMicrosecond() Add one microsecond to the instance (using date interval).
- * @method $this subMicroseconds(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using date interval).
- * @method $this subMicrosecond() Sub one microsecond to the instance (using date interval).
- * @method $this addMillennia(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval).
- * @method $this addMillennium() Add one millennium to the instance (using date interval).
- * @method $this subMillennia(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval).
- * @method $this subMillennium() Sub one millennium to the instance (using date interval).
- * @method $this addMillenniaWithOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method $this addMillenniumWithOverflow() Add one millennium to the instance (using date interval) with overflow explicitly allowed.
- * @method $this subMillenniaWithOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method $this subMillenniumWithOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly allowed.
- * @method $this addMillenniaWithoutOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addMillenniumWithoutOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subMillenniaWithoutOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subMillenniumWithoutOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addMillenniaWithNoOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addMillenniumWithNoOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subMillenniaWithNoOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subMillenniumWithNoOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addMillenniaNoOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addMillenniumNoOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subMillenniaNoOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subMillenniumNoOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addCenturies(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval).
- * @method $this addCentury() Add one century to the instance (using date interval).
- * @method $this subCenturies(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval).
- * @method $this subCentury() Sub one century to the instance (using date interval).
- * @method $this addCenturiesWithOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method $this addCenturyWithOverflow() Add one century to the instance (using date interval) with overflow explicitly allowed.
- * @method $this subCenturiesWithOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method $this subCenturyWithOverflow() Sub one century to the instance (using date interval) with overflow explicitly allowed.
- * @method $this addCenturiesWithoutOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addCenturyWithoutOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subCenturiesWithoutOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subCenturyWithoutOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addCenturiesWithNoOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addCenturyWithNoOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subCenturiesWithNoOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subCenturyWithNoOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addCenturiesNoOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addCenturyNoOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subCenturiesNoOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subCenturyNoOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addDecades(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval).
- * @method $this addDecade() Add one decade to the instance (using date interval).
- * @method $this subDecades(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval).
- * @method $this subDecade() Sub one decade to the instance (using date interval).
- * @method $this addDecadesWithOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method $this addDecadeWithOverflow() Add one decade to the instance (using date interval) with overflow explicitly allowed.
- * @method $this subDecadesWithOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method $this subDecadeWithOverflow() Sub one decade to the instance (using date interval) with overflow explicitly allowed.
- * @method $this addDecadesWithoutOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addDecadeWithoutOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subDecadesWithoutOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subDecadeWithoutOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addDecadesWithNoOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addDecadeWithNoOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subDecadesWithNoOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subDecadeWithNoOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addDecadesNoOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addDecadeNoOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subDecadesNoOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subDecadeNoOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addQuarters(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval).
- * @method $this addQuarter() Add one quarter to the instance (using date interval).
- * @method $this subQuarters(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval).
- * @method $this subQuarter() Sub one quarter to the instance (using date interval).
- * @method $this addQuartersWithOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method $this addQuarterWithOverflow() Add one quarter to the instance (using date interval) with overflow explicitly allowed.
- * @method $this subQuartersWithOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method $this subQuarterWithOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly allowed.
- * @method $this addQuartersWithoutOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addQuarterWithoutOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subQuartersWithoutOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subQuarterWithoutOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addQuartersWithNoOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addQuarterWithNoOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subQuartersWithNoOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subQuarterWithNoOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addQuartersNoOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addQuarterNoOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subQuartersNoOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this subQuarterNoOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden.
- * @method $this addWeeks(int $value = 1) Add weeks (the $value count passed in) to the instance (using date interval).
- * @method $this addWeek() Add one week to the instance (using date interval).
- * @method $this subWeeks(int $value = 1) Sub weeks (the $value count passed in) to the instance (using date interval).
- * @method $this subWeek() Sub one week to the instance (using date interval).
- * @method $this addWeekdays(int $value = 1) Add weekdays (the $value count passed in) to the instance (using date interval).
- * @method $this addWeekday() Add one weekday to the instance (using date interval).
- * @method $this subWeekdays(int $value = 1) Sub weekdays (the $value count passed in) to the instance (using date interval).
- * @method $this subWeekday() Sub one weekday to the instance (using date interval).
- * @method $this addRealMicros(int $value = 1) Add microseconds (the $value count passed in) to the instance (using timestamp).
- * @method $this addRealMicro() Add one microsecond to the instance (using timestamp).
- * @method $this subRealMicros(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using timestamp).
- * @method $this subRealMicro() Sub one microsecond to the instance (using timestamp).
- * @method CarbonPeriod microsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given.
- * @method $this addRealMicroseconds(int $value = 1) Add microseconds (the $value count passed in) to the instance (using timestamp).
- * @method $this addRealMicrosecond() Add one microsecond to the instance (using timestamp).
- * @method $this subRealMicroseconds(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using timestamp).
- * @method $this subRealMicrosecond() Sub one microsecond to the instance (using timestamp).
- * @method CarbonPeriod microsecondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given.
- * @method $this addRealMillis(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using timestamp).
- * @method $this addRealMilli() Add one millisecond to the instance (using timestamp).
- * @method $this subRealMillis(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using timestamp).
- * @method $this subRealMilli() Sub one millisecond to the instance (using timestamp).
- * @method CarbonPeriod millisUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given.
- * @method $this addRealMilliseconds(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using timestamp).
- * @method $this addRealMillisecond() Add one millisecond to the instance (using timestamp).
- * @method $this subRealMilliseconds(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using timestamp).
- * @method $this subRealMillisecond() Sub one millisecond to the instance (using timestamp).
- * @method CarbonPeriod millisecondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given.
- * @method $this addRealSeconds(int $value = 1) Add seconds (the $value count passed in) to the instance (using timestamp).
- * @method $this addRealSecond() Add one second to the instance (using timestamp).
- * @method $this subRealSeconds(int $value = 1) Sub seconds (the $value count passed in) to the instance (using timestamp).
- * @method $this subRealSecond() Sub one second to the instance (using timestamp).
- * @method CarbonPeriod secondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each second or every X seconds if a factor is given.
- * @method $this addRealMinutes(int $value = 1) Add minutes (the $value count passed in) to the instance (using timestamp).
- * @method $this addRealMinute() Add one minute to the instance (using timestamp).
- * @method $this subRealMinutes(int $value = 1) Sub minutes (the $value count passed in) to the instance (using timestamp).
- * @method $this subRealMinute() Sub one minute to the instance (using timestamp).
- * @method CarbonPeriod minutesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each minute or every X minutes if a factor is given.
- * @method $this addRealHours(int $value = 1) Add hours (the $value count passed in) to the instance (using timestamp).
- * @method $this addRealHour() Add one hour to the instance (using timestamp).
- * @method $this subRealHours(int $value = 1) Sub hours (the $value count passed in) to the instance (using timestamp).
- * @method $this subRealHour() Sub one hour to the instance (using timestamp).
- * @method CarbonPeriod hoursUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each hour or every X hours if a factor is given.
- * @method $this addRealDays(int $value = 1) Add days (the $value count passed in) to the instance (using timestamp).
- * @method $this addRealDay() Add one day to the instance (using timestamp).
- * @method $this subRealDays(int $value = 1) Sub days (the $value count passed in) to the instance (using timestamp).
- * @method $this subRealDay() Sub one day to the instance (using timestamp).
- * @method CarbonPeriod daysUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each day or every X days if a factor is given.
- * @method $this addRealWeeks(int $value = 1) Add weeks (the $value count passed in) to the instance (using timestamp).
- * @method $this addRealWeek() Add one week to the instance (using timestamp).
- * @method $this subRealWeeks(int $value = 1) Sub weeks (the $value count passed in) to the instance (using timestamp).
- * @method $this subRealWeek() Sub one week to the instance (using timestamp).
- * @method CarbonPeriod weeksUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each week or every X weeks if a factor is given.
- * @method $this addRealMonths(int $value = 1) Add months (the $value count passed in) to the instance (using timestamp).
- * @method $this addRealMonth() Add one month to the instance (using timestamp).
- * @method $this subRealMonths(int $value = 1) Sub months (the $value count passed in) to the instance (using timestamp).
- * @method $this subRealMonth() Sub one month to the instance (using timestamp).
- * @method CarbonPeriod monthsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each month or every X months if a factor is given.
- * @method $this addRealQuarters(int $value = 1) Add quarters (the $value count passed in) to the instance (using timestamp).
- * @method $this addRealQuarter() Add one quarter to the instance (using timestamp).
- * @method $this subRealQuarters(int $value = 1) Sub quarters (the $value count passed in) to the instance (using timestamp).
- * @method $this subRealQuarter() Sub one quarter to the instance (using timestamp).
- * @method CarbonPeriod quartersUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each quarter or every X quarters if a factor is given.
- * @method $this addRealYears(int $value = 1) Add years (the $value count passed in) to the instance (using timestamp).
- * @method $this addRealYear() Add one year to the instance (using timestamp).
- * @method $this subRealYears(int $value = 1) Sub years (the $value count passed in) to the instance (using timestamp).
- * @method $this subRealYear() Sub one year to the instance (using timestamp).
- * @method CarbonPeriod yearsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each year or every X years if a factor is given.
- * @method $this addRealDecades(int $value = 1) Add decades (the $value count passed in) to the instance (using timestamp).
- * @method $this addRealDecade() Add one decade to the instance (using timestamp).
- * @method $this subRealDecades(int $value = 1) Sub decades (the $value count passed in) to the instance (using timestamp).
- * @method $this subRealDecade() Sub one decade to the instance (using timestamp).
- * @method CarbonPeriod decadesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each decade or every X decades if a factor is given.
- * @method $this addRealCenturies(int $value = 1) Add centuries (the $value count passed in) to the instance (using timestamp).
- * @method $this addRealCentury() Add one century to the instance (using timestamp).
- * @method $this subRealCenturies(int $value = 1) Sub centuries (the $value count passed in) to the instance (using timestamp).
- * @method $this subRealCentury() Sub one century to the instance (using timestamp).
- * @method CarbonPeriod centuriesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each century or every X centuries if a factor is given.
- * @method $this addRealMillennia(int $value = 1) Add millennia (the $value count passed in) to the instance (using timestamp).
- * @method $this addRealMillennium() Add one millennium to the instance (using timestamp).
- * @method $this subRealMillennia(int $value = 1) Sub millennia (the $value count passed in) to the instance (using timestamp).
- * @method $this subRealMillennium() Sub one millennium to the instance (using timestamp).
- * @method CarbonPeriod millenniaUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millennium or every X millennia if a factor is given.
- * @method $this roundYear(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function.
- * @method $this roundYears(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function.
- * @method $this floorYear(float $precision = 1) Truncate the current instance year with given precision.
- * @method $this floorYears(float $precision = 1) Truncate the current instance year with given precision.
- * @method $this ceilYear(float $precision = 1) Ceil the current instance year with given precision.
- * @method $this ceilYears(float $precision = 1) Ceil the current instance year with given precision.
- * @method $this roundMonth(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function.
- * @method $this roundMonths(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function.
- * @method $this floorMonth(float $precision = 1) Truncate the current instance month with given precision.
- * @method $this floorMonths(float $precision = 1) Truncate the current instance month with given precision.
- * @method $this ceilMonth(float $precision = 1) Ceil the current instance month with given precision.
- * @method $this ceilMonths(float $precision = 1) Ceil the current instance month with given precision.
- * @method $this roundDay(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function.
- * @method $this roundDays(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function.
- * @method $this floorDay(float $precision = 1) Truncate the current instance day with given precision.
- * @method $this floorDays(float $precision = 1) Truncate the current instance day with given precision.
- * @method $this ceilDay(float $precision = 1) Ceil the current instance day with given precision.
- * @method $this ceilDays(float $precision = 1) Ceil the current instance day with given precision.
- * @method $this roundHour(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function.
- * @method $this roundHours(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function.
- * @method $this floorHour(float $precision = 1) Truncate the current instance hour with given precision.
- * @method $this floorHours(float $precision = 1) Truncate the current instance hour with given precision.
- * @method $this ceilHour(float $precision = 1) Ceil the current instance hour with given precision.
- * @method $this ceilHours(float $precision = 1) Ceil the current instance hour with given precision.
- * @method $this roundMinute(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function.
- * @method $this roundMinutes(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function.
- * @method $this floorMinute(float $precision = 1) Truncate the current instance minute with given precision.
- * @method $this floorMinutes(float $precision = 1) Truncate the current instance minute with given precision.
- * @method $this ceilMinute(float $precision = 1) Ceil the current instance minute with given precision.
- * @method $this ceilMinutes(float $precision = 1) Ceil the current instance minute with given precision.
- * @method $this roundSecond(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function.
- * @method $this roundSeconds(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function.
- * @method $this floorSecond(float $precision = 1) Truncate the current instance second with given precision.
- * @method $this floorSeconds(float $precision = 1) Truncate the current instance second with given precision.
- * @method $this ceilSecond(float $precision = 1) Ceil the current instance second with given precision.
- * @method $this ceilSeconds(float $precision = 1) Ceil the current instance second with given precision.
- * @method $this roundMillennium(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function.
- * @method $this roundMillennia(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function.
- * @method $this floorMillennium(float $precision = 1) Truncate the current instance millennium with given precision.
- * @method $this floorMillennia(float $precision = 1) Truncate the current instance millennium with given precision.
- * @method $this ceilMillennium(float $precision = 1) Ceil the current instance millennium with given precision.
- * @method $this ceilMillennia(float $precision = 1) Ceil the current instance millennium with given precision.
- * @method $this roundCentury(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function.
- * @method $this roundCenturies(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function.
- * @method $this floorCentury(float $precision = 1) Truncate the current instance century with given precision.
- * @method $this floorCenturies(float $precision = 1) Truncate the current instance century with given precision.
- * @method $this ceilCentury(float $precision = 1) Ceil the current instance century with given precision.
- * @method $this ceilCenturies(float $precision = 1) Ceil the current instance century with given precision.
- * @method $this roundDecade(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function.
- * @method $this roundDecades(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function.
- * @method $this floorDecade(float $precision = 1) Truncate the current instance decade with given precision.
- * @method $this floorDecades(float $precision = 1) Truncate the current instance decade with given precision.
- * @method $this ceilDecade(float $precision = 1) Ceil the current instance decade with given precision.
- * @method $this ceilDecades(float $precision = 1) Ceil the current instance decade with given precision.
- * @method $this roundQuarter(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function.
- * @method $this roundQuarters(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function.
- * @method $this floorQuarter(float $precision = 1) Truncate the current instance quarter with given precision.
- * @method $this floorQuarters(float $precision = 1) Truncate the current instance quarter with given precision.
- * @method $this ceilQuarter(float $precision = 1) Ceil the current instance quarter with given precision.
- * @method $this ceilQuarters(float $precision = 1) Ceil the current instance quarter with given precision.
- * @method $this roundMillisecond(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function.
- * @method $this roundMilliseconds(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function.
- * @method $this floorMillisecond(float $precision = 1) Truncate the current instance millisecond with given precision.
- * @method $this floorMilliseconds(float $precision = 1) Truncate the current instance millisecond with given precision.
- * @method $this ceilMillisecond(float $precision = 1) Ceil the current instance millisecond with given precision.
- * @method $this ceilMilliseconds(float $precision = 1) Ceil the current instance millisecond with given precision.
- * @method $this roundMicrosecond(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function.
- * @method $this roundMicroseconds(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function.
- * @method $this floorMicrosecond(float $precision = 1) Truncate the current instance microsecond with given precision.
- * @method $this floorMicroseconds(float $precision = 1) Truncate the current instance microsecond with given precision.
- * @method $this ceilMicrosecond(float $precision = 1) Ceil the current instance microsecond with given precision.
- * @method $this ceilMicroseconds(float $precision = 1) Ceil the current instance microsecond with given precision.
- * @method string shortAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- * @method string longAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- * @method string shortRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- * @method string longRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- * @method string shortRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- * @method string longRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- * @method string shortRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- * @method string longRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- * @method static Carbon|false createFromFormat(string $format, string $time, string|DateTimeZone $timezone = null) Parse a string into a new Carbon object according to the specified format.
- * @method static Carbon __set_state(array $array) https://php.net/manual/en/datetime.set-state.php
- *
- *
- */
-class Carbon extends DateTime implements CarbonInterface
-{
- use Date;
-
- /**
- * Returns true if the current class/instance is mutable.
- *
- * @return bool
- */
- public static function isMutable()
- {
- return true;
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/CarbonConverterInterface.php b/vendor/nesbot/carbon/src/Carbon/CarbonConverterInterface.php
deleted file mode 100644
index 1ce967b2..00000000
--- a/vendor/nesbot/carbon/src/Carbon/CarbonConverterInterface.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon;
-
-use DateTimeInterface;
-
-interface CarbonConverterInterface
-{
- public function convertDate(DateTimeInterface $dateTime, bool $negated = false): CarbonInterface;
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/CarbonImmutable.php b/vendor/nesbot/carbon/src/Carbon/CarbonImmutable.php
deleted file mode 100644
index 7b456184..00000000
--- a/vendor/nesbot/carbon/src/Carbon/CarbonImmutable.php
+++ /dev/null
@@ -1,583 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon;
-
-use Carbon\Traits\Date;
-use DateTimeImmutable;
-use DateTimeInterface;
-use DateTimeZone;
-
-/**
- * A simple API extension for DateTimeImmutable.
- *
- *
- *
- * @property int $year
- * @property int $yearIso
- * @property int $month
- * @property int $day
- * @property int $hour
- * @property int $minute
- * @property int $second
- * @property int $micro
- * @property int $microsecond
- * @property int|float|string $timestamp seconds since the Unix Epoch
- * @property string $englishDayOfWeek the day of week in English
- * @property string $shortEnglishDayOfWeek the abbreviated day of week in English
- * @property string $englishMonth the month in English
- * @property string $shortEnglishMonth the abbreviated month in English
- * @property string $localeDayOfWeek the day of week in current locale LC_TIME
- * @property string $shortLocaleDayOfWeek the abbreviated day of week in current locale LC_TIME
- * @property string $localeMonth the month in current locale LC_TIME
- * @property string $shortLocaleMonth the abbreviated month in current locale LC_TIME
- * @property int $milliseconds
- * @property int $millisecond
- * @property int $milli
- * @property int $week 1 through 53
- * @property int $isoWeek 1 through 53
- * @property int $weekYear year according to week format
- * @property int $isoWeekYear year according to ISO week format
- * @property int $dayOfYear 1 through 366
- * @property int $age does a diffInYears() with default parameters
- * @property int $offset the timezone offset in seconds from UTC
- * @property int $offsetMinutes the timezone offset in minutes from UTC
- * @property int $offsetHours the timezone offset in hours from UTC
- * @property CarbonTimeZone $timezone the current timezone
- * @property CarbonTimeZone $tz alias of $timezone
- * @property-read int $dayOfWeek 0 (for Sunday) through 6 (for Saturday)
- * @property-read int $dayOfWeekIso 1 (for Monday) through 7 (for Sunday)
- * @property-read int $weekOfYear ISO-8601 week number of year, weeks starting on Monday
- * @property-read int $daysInMonth number of days in the given month
- * @property-read string $latinMeridiem "am"/"pm" (Ante meridiem or Post meridiem latin lowercase mark)
- * @property-read string $latinUpperMeridiem "AM"/"PM" (Ante meridiem or Post meridiem latin uppercase mark)
- * @property-read string $timezoneAbbreviatedName the current timezone abbreviated name
- * @property-read string $tzAbbrName alias of $timezoneAbbreviatedName
- * @property-read string $dayName long name of weekday translated according to Carbon locale, in english if no translation available for current language
- * @property-read string $shortDayName short name of weekday translated according to Carbon locale, in english if no translation available for current language
- * @property-read string $minDayName very short name of weekday translated according to Carbon locale, in english if no translation available for current language
- * @property-read string $monthName long name of month translated according to Carbon locale, in english if no translation available for current language
- * @property-read string $shortMonthName short name of month translated according to Carbon locale, in english if no translation available for current language
- * @property-read string $meridiem lowercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language
- * @property-read string $upperMeridiem uppercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language
- * @property-read int $noZeroHour current hour from 1 to 24
- * @property-read int $weeksInYear 51 through 53
- * @property-read int $isoWeeksInYear 51 through 53
- * @property-read int $weekOfMonth 1 through 5
- * @property-read int $weekNumberInMonth 1 through 5
- * @property-read int $firstWeekDay 0 through 6
- * @property-read int $lastWeekDay 0 through 6
- * @property-read int $daysInYear 365 or 366
- * @property-read int $quarter the quarter of this instance, 1 - 4
- * @property-read int $decade the decade of this instance
- * @property-read int $century the century of this instance
- * @property-read int $millennium the millennium of this instance
- * @property-read bool $dst daylight savings time indicator, true if DST, false otherwise
- * @property-read bool $local checks if the timezone is local, true if local, false otherwise
- * @property-read bool $utc checks if the timezone is UTC, true if UTC, false otherwise
- * @property-read string $timezoneName the current timezone name
- * @property-read string $tzName alias of $timezoneName
- * @property-read string $locale locale of the current instance
- *
- * @method bool isUtc() Check if the current instance has UTC timezone. (Both isUtc and isUTC cases are valid.)
- * @method bool isLocal() Check if the current instance has non-UTC timezone.
- * @method bool isValid() Check if the current instance is a valid date.
- * @method bool isDST() Check if the current instance is in a daylight saving time.
- * @method bool isSunday() Checks if the instance day is sunday.
- * @method bool isMonday() Checks if the instance day is monday.
- * @method bool isTuesday() Checks if the instance day is tuesday.
- * @method bool isWednesday() Checks if the instance day is wednesday.
- * @method bool isThursday() Checks if the instance day is thursday.
- * @method bool isFriday() Checks if the instance day is friday.
- * @method bool isSaturday() Checks if the instance day is saturday.
- * @method bool isSameYear(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same year as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentYear() Checks if the instance is in the same year as the current moment.
- * @method bool isNextYear() Checks if the instance is in the same year as the current moment next year.
- * @method bool isLastYear() Checks if the instance is in the same year as the current moment last year.
- * @method bool isSameWeek(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same week as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentWeek() Checks if the instance is in the same week as the current moment.
- * @method bool isNextWeek() Checks if the instance is in the same week as the current moment next week.
- * @method bool isLastWeek() Checks if the instance is in the same week as the current moment last week.
- * @method bool isSameDay(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same day as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentDay() Checks if the instance is in the same day as the current moment.
- * @method bool isNextDay() Checks if the instance is in the same day as the current moment next day.
- * @method bool isLastDay() Checks if the instance is in the same day as the current moment last day.
- * @method bool isSameHour(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same hour as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentHour() Checks if the instance is in the same hour as the current moment.
- * @method bool isNextHour() Checks if the instance is in the same hour as the current moment next hour.
- * @method bool isLastHour() Checks if the instance is in the same hour as the current moment last hour.
- * @method bool isSameMinute(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same minute as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentMinute() Checks if the instance is in the same minute as the current moment.
- * @method bool isNextMinute() Checks if the instance is in the same minute as the current moment next minute.
- * @method bool isLastMinute() Checks if the instance is in the same minute as the current moment last minute.
- * @method bool isSameSecond(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same second as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentSecond() Checks if the instance is in the same second as the current moment.
- * @method bool isNextSecond() Checks if the instance is in the same second as the current moment next second.
- * @method bool isLastSecond() Checks if the instance is in the same second as the current moment last second.
- * @method bool isSameMicro(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentMicro() Checks if the instance is in the same microsecond as the current moment.
- * @method bool isNextMicro() Checks if the instance is in the same microsecond as the current moment next microsecond.
- * @method bool isLastMicro() Checks if the instance is in the same microsecond as the current moment last microsecond.
- * @method bool isSameMicrosecond(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentMicrosecond() Checks if the instance is in the same microsecond as the current moment.
- * @method bool isNextMicrosecond() Checks if the instance is in the same microsecond as the current moment next microsecond.
- * @method bool isLastMicrosecond() Checks if the instance is in the same microsecond as the current moment last microsecond.
- * @method bool isCurrentMonth() Checks if the instance is in the same month as the current moment.
- * @method bool isNextMonth() Checks if the instance is in the same month as the current moment next month.
- * @method bool isLastMonth() Checks if the instance is in the same month as the current moment last month.
- * @method bool isCurrentQuarter() Checks if the instance is in the same quarter as the current moment.
- * @method bool isNextQuarter() Checks if the instance is in the same quarter as the current moment next quarter.
- * @method bool isLastQuarter() Checks if the instance is in the same quarter as the current moment last quarter.
- * @method bool isSameDecade(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same decade as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentDecade() Checks if the instance is in the same decade as the current moment.
- * @method bool isNextDecade() Checks if the instance is in the same decade as the current moment next decade.
- * @method bool isLastDecade() Checks if the instance is in the same decade as the current moment last decade.
- * @method bool isSameCentury(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same century as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentCentury() Checks if the instance is in the same century as the current moment.
- * @method bool isNextCentury() Checks if the instance is in the same century as the current moment next century.
- * @method bool isLastCentury() Checks if the instance is in the same century as the current moment last century.
- * @method bool isSameMillennium(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same millennium as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentMillennium() Checks if the instance is in the same millennium as the current moment.
- * @method bool isNextMillennium() Checks if the instance is in the same millennium as the current moment next millennium.
- * @method bool isLastMillennium() Checks if the instance is in the same millennium as the current moment last millennium.
- * @method CarbonImmutable years(int $value) Set current instance year to the given value.
- * @method CarbonImmutable year(int $value) Set current instance year to the given value.
- * @method CarbonImmutable setYears(int $value) Set current instance year to the given value.
- * @method CarbonImmutable setYear(int $value) Set current instance year to the given value.
- * @method CarbonImmutable months(int $value) Set current instance month to the given value.
- * @method CarbonImmutable month(int $value) Set current instance month to the given value.
- * @method CarbonImmutable setMonths(int $value) Set current instance month to the given value.
- * @method CarbonImmutable setMonth(int $value) Set current instance month to the given value.
- * @method CarbonImmutable days(int $value) Set current instance day to the given value.
- * @method CarbonImmutable day(int $value) Set current instance day to the given value.
- * @method CarbonImmutable setDays(int $value) Set current instance day to the given value.
- * @method CarbonImmutable setDay(int $value) Set current instance day to the given value.
- * @method CarbonImmutable hours(int $value) Set current instance hour to the given value.
- * @method CarbonImmutable hour(int $value) Set current instance hour to the given value.
- * @method CarbonImmutable setHours(int $value) Set current instance hour to the given value.
- * @method CarbonImmutable setHour(int $value) Set current instance hour to the given value.
- * @method CarbonImmutable minutes(int $value) Set current instance minute to the given value.
- * @method CarbonImmutable minute(int $value) Set current instance minute to the given value.
- * @method CarbonImmutable setMinutes(int $value) Set current instance minute to the given value.
- * @method CarbonImmutable setMinute(int $value) Set current instance minute to the given value.
- * @method CarbonImmutable seconds(int $value) Set current instance second to the given value.
- * @method CarbonImmutable second(int $value) Set current instance second to the given value.
- * @method CarbonImmutable setSeconds(int $value) Set current instance second to the given value.
- * @method CarbonImmutable setSecond(int $value) Set current instance second to the given value.
- * @method CarbonImmutable millis(int $value) Set current instance millisecond to the given value.
- * @method CarbonImmutable milli(int $value) Set current instance millisecond to the given value.
- * @method CarbonImmutable setMillis(int $value) Set current instance millisecond to the given value.
- * @method CarbonImmutable setMilli(int $value) Set current instance millisecond to the given value.
- * @method CarbonImmutable milliseconds(int $value) Set current instance millisecond to the given value.
- * @method CarbonImmutable millisecond(int $value) Set current instance millisecond to the given value.
- * @method CarbonImmutable setMilliseconds(int $value) Set current instance millisecond to the given value.
- * @method CarbonImmutable setMillisecond(int $value) Set current instance millisecond to the given value.
- * @method CarbonImmutable micros(int $value) Set current instance microsecond to the given value.
- * @method CarbonImmutable micro(int $value) Set current instance microsecond to the given value.
- * @method CarbonImmutable setMicros(int $value) Set current instance microsecond to the given value.
- * @method CarbonImmutable setMicro(int $value) Set current instance microsecond to the given value.
- * @method CarbonImmutable microseconds(int $value) Set current instance microsecond to the given value.
- * @method CarbonImmutable microsecond(int $value) Set current instance microsecond to the given value.
- * @method CarbonImmutable setMicroseconds(int $value) Set current instance microsecond to the given value.
- * @method CarbonImmutable setMicrosecond(int $value) Set current instance microsecond to the given value.
- * @method CarbonImmutable addYears(int $value = 1) Add years (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable addYear() Add one year to the instance (using date interval).
- * @method CarbonImmutable subYears(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable subYear() Sub one year to the instance (using date interval).
- * @method CarbonImmutable addYearsWithOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonImmutable addYearWithOverflow() Add one year to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonImmutable subYearsWithOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonImmutable subYearWithOverflow() Sub one year to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonImmutable addYearsWithoutOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addYearWithoutOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subYearsWithoutOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subYearWithoutOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addYearsWithNoOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addYearWithNoOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subYearsWithNoOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subYearWithNoOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addYearsNoOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addYearNoOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subYearsNoOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subYearNoOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addMonths(int $value = 1) Add months (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable addMonth() Add one month to the instance (using date interval).
- * @method CarbonImmutable subMonths(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable subMonth() Sub one month to the instance (using date interval).
- * @method CarbonImmutable addMonthsWithOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonImmutable addMonthWithOverflow() Add one month to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonImmutable subMonthsWithOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonImmutable subMonthWithOverflow() Sub one month to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonImmutable addMonthsWithoutOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addMonthWithoutOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subMonthsWithoutOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subMonthWithoutOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addMonthsWithNoOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addMonthWithNoOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subMonthsWithNoOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subMonthWithNoOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addMonthsNoOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addMonthNoOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subMonthsNoOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subMonthNoOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addDays(int $value = 1) Add days (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable addDay() Add one day to the instance (using date interval).
- * @method CarbonImmutable subDays(int $value = 1) Sub days (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable subDay() Sub one day to the instance (using date interval).
- * @method CarbonImmutable addHours(int $value = 1) Add hours (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable addHour() Add one hour to the instance (using date interval).
- * @method CarbonImmutable subHours(int $value = 1) Sub hours (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable subHour() Sub one hour to the instance (using date interval).
- * @method CarbonImmutable addMinutes(int $value = 1) Add minutes (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable addMinute() Add one minute to the instance (using date interval).
- * @method CarbonImmutable subMinutes(int $value = 1) Sub minutes (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable subMinute() Sub one minute to the instance (using date interval).
- * @method CarbonImmutable addSeconds(int $value = 1) Add seconds (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable addSecond() Add one second to the instance (using date interval).
- * @method CarbonImmutable subSeconds(int $value = 1) Sub seconds (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable subSecond() Sub one second to the instance (using date interval).
- * @method CarbonImmutable addMillis(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable addMilli() Add one millisecond to the instance (using date interval).
- * @method CarbonImmutable subMillis(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable subMilli() Sub one millisecond to the instance (using date interval).
- * @method CarbonImmutable addMilliseconds(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable addMillisecond() Add one millisecond to the instance (using date interval).
- * @method CarbonImmutable subMilliseconds(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable subMillisecond() Sub one millisecond to the instance (using date interval).
- * @method CarbonImmutable addMicros(int $value = 1) Add microseconds (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable addMicro() Add one microsecond to the instance (using date interval).
- * @method CarbonImmutable subMicros(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable subMicro() Sub one microsecond to the instance (using date interval).
- * @method CarbonImmutable addMicroseconds(int $value = 1) Add microseconds (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable addMicrosecond() Add one microsecond to the instance (using date interval).
- * @method CarbonImmutable subMicroseconds(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable subMicrosecond() Sub one microsecond to the instance (using date interval).
- * @method CarbonImmutable addMillennia(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable addMillennium() Add one millennium to the instance (using date interval).
- * @method CarbonImmutable subMillennia(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable subMillennium() Sub one millennium to the instance (using date interval).
- * @method CarbonImmutable addMillenniaWithOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonImmutable addMillenniumWithOverflow() Add one millennium to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonImmutable subMillenniaWithOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonImmutable subMillenniumWithOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonImmutable addMillenniaWithoutOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addMillenniumWithoutOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subMillenniaWithoutOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subMillenniumWithoutOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addMillenniaWithNoOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addMillenniumWithNoOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subMillenniaWithNoOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subMillenniumWithNoOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addMillenniaNoOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addMillenniumNoOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subMillenniaNoOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subMillenniumNoOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addCenturies(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable addCentury() Add one century to the instance (using date interval).
- * @method CarbonImmutable subCenturies(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable subCentury() Sub one century to the instance (using date interval).
- * @method CarbonImmutable addCenturiesWithOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonImmutable addCenturyWithOverflow() Add one century to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonImmutable subCenturiesWithOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonImmutable subCenturyWithOverflow() Sub one century to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonImmutable addCenturiesWithoutOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addCenturyWithoutOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subCenturiesWithoutOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subCenturyWithoutOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addCenturiesWithNoOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addCenturyWithNoOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subCenturiesWithNoOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subCenturyWithNoOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addCenturiesNoOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addCenturyNoOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subCenturiesNoOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subCenturyNoOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addDecades(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable addDecade() Add one decade to the instance (using date interval).
- * @method CarbonImmutable subDecades(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable subDecade() Sub one decade to the instance (using date interval).
- * @method CarbonImmutable addDecadesWithOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonImmutable addDecadeWithOverflow() Add one decade to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonImmutable subDecadesWithOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonImmutable subDecadeWithOverflow() Sub one decade to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonImmutable addDecadesWithoutOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addDecadeWithoutOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subDecadesWithoutOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subDecadeWithoutOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addDecadesWithNoOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addDecadeWithNoOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subDecadesWithNoOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subDecadeWithNoOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addDecadesNoOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addDecadeNoOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subDecadesNoOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subDecadeNoOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addQuarters(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable addQuarter() Add one quarter to the instance (using date interval).
- * @method CarbonImmutable subQuarters(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable subQuarter() Sub one quarter to the instance (using date interval).
- * @method CarbonImmutable addQuartersWithOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonImmutable addQuarterWithOverflow() Add one quarter to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonImmutable subQuartersWithOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonImmutable subQuarterWithOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonImmutable addQuartersWithoutOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addQuarterWithoutOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subQuartersWithoutOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subQuarterWithoutOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addQuartersWithNoOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addQuarterWithNoOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subQuartersWithNoOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subQuarterWithNoOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addQuartersNoOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addQuarterNoOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subQuartersNoOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable subQuarterNoOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonImmutable addWeeks(int $value = 1) Add weeks (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable addWeek() Add one week to the instance (using date interval).
- * @method CarbonImmutable subWeeks(int $value = 1) Sub weeks (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable subWeek() Sub one week to the instance (using date interval).
- * @method CarbonImmutable addWeekdays(int $value = 1) Add weekdays (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable addWeekday() Add one weekday to the instance (using date interval).
- * @method CarbonImmutable subWeekdays(int $value = 1) Sub weekdays (the $value count passed in) to the instance (using date interval).
- * @method CarbonImmutable subWeekday() Sub one weekday to the instance (using date interval).
- * @method CarbonImmutable addRealMicros(int $value = 1) Add microseconds (the $value count passed in) to the instance (using timestamp).
- * @method CarbonImmutable addRealMicro() Add one microsecond to the instance (using timestamp).
- * @method CarbonImmutable subRealMicros(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using timestamp).
- * @method CarbonImmutable subRealMicro() Sub one microsecond to the instance (using timestamp).
- * @method CarbonPeriod microsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given.
- * @method CarbonImmutable addRealMicroseconds(int $value = 1) Add microseconds (the $value count passed in) to the instance (using timestamp).
- * @method CarbonImmutable addRealMicrosecond() Add one microsecond to the instance (using timestamp).
- * @method CarbonImmutable subRealMicroseconds(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using timestamp).
- * @method CarbonImmutable subRealMicrosecond() Sub one microsecond to the instance (using timestamp).
- * @method CarbonPeriod microsecondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given.
- * @method CarbonImmutable addRealMillis(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using timestamp).
- * @method CarbonImmutable addRealMilli() Add one millisecond to the instance (using timestamp).
- * @method CarbonImmutable subRealMillis(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using timestamp).
- * @method CarbonImmutable subRealMilli() Sub one millisecond to the instance (using timestamp).
- * @method CarbonPeriod millisUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given.
- * @method CarbonImmutable addRealMilliseconds(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using timestamp).
- * @method CarbonImmutable addRealMillisecond() Add one millisecond to the instance (using timestamp).
- * @method CarbonImmutable subRealMilliseconds(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using timestamp).
- * @method CarbonImmutable subRealMillisecond() Sub one millisecond to the instance (using timestamp).
- * @method CarbonPeriod millisecondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given.
- * @method CarbonImmutable addRealSeconds(int $value = 1) Add seconds (the $value count passed in) to the instance (using timestamp).
- * @method CarbonImmutable addRealSecond() Add one second to the instance (using timestamp).
- * @method CarbonImmutable subRealSeconds(int $value = 1) Sub seconds (the $value count passed in) to the instance (using timestamp).
- * @method CarbonImmutable subRealSecond() Sub one second to the instance (using timestamp).
- * @method CarbonPeriod secondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each second or every X seconds if a factor is given.
- * @method CarbonImmutable addRealMinutes(int $value = 1) Add minutes (the $value count passed in) to the instance (using timestamp).
- * @method CarbonImmutable addRealMinute() Add one minute to the instance (using timestamp).
- * @method CarbonImmutable subRealMinutes(int $value = 1) Sub minutes (the $value count passed in) to the instance (using timestamp).
- * @method CarbonImmutable subRealMinute() Sub one minute to the instance (using timestamp).
- * @method CarbonPeriod minutesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each minute or every X minutes if a factor is given.
- * @method CarbonImmutable addRealHours(int $value = 1) Add hours (the $value count passed in) to the instance (using timestamp).
- * @method CarbonImmutable addRealHour() Add one hour to the instance (using timestamp).
- * @method CarbonImmutable subRealHours(int $value = 1) Sub hours (the $value count passed in) to the instance (using timestamp).
- * @method CarbonImmutable subRealHour() Sub one hour to the instance (using timestamp).
- * @method CarbonPeriod hoursUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each hour or every X hours if a factor is given.
- * @method CarbonImmutable addRealDays(int $value = 1) Add days (the $value count passed in) to the instance (using timestamp).
- * @method CarbonImmutable addRealDay() Add one day to the instance (using timestamp).
- * @method CarbonImmutable subRealDays(int $value = 1) Sub days (the $value count passed in) to the instance (using timestamp).
- * @method CarbonImmutable subRealDay() Sub one day to the instance (using timestamp).
- * @method CarbonPeriod daysUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each day or every X days if a factor is given.
- * @method CarbonImmutable addRealWeeks(int $value = 1) Add weeks (the $value count passed in) to the instance (using timestamp).
- * @method CarbonImmutable addRealWeek() Add one week to the instance (using timestamp).
- * @method CarbonImmutable subRealWeeks(int $value = 1) Sub weeks (the $value count passed in) to the instance (using timestamp).
- * @method CarbonImmutable subRealWeek() Sub one week to the instance (using timestamp).
- * @method CarbonPeriod weeksUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each week or every X weeks if a factor is given.
- * @method CarbonImmutable addRealMonths(int $value = 1) Add months (the $value count passed in) to the instance (using timestamp).
- * @method CarbonImmutable addRealMonth() Add one month to the instance (using timestamp).
- * @method CarbonImmutable subRealMonths(int $value = 1) Sub months (the $value count passed in) to the instance (using timestamp).
- * @method CarbonImmutable subRealMonth() Sub one month to the instance (using timestamp).
- * @method CarbonPeriod monthsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each month or every X months if a factor is given.
- * @method CarbonImmutable addRealQuarters(int $value = 1) Add quarters (the $value count passed in) to the instance (using timestamp).
- * @method CarbonImmutable addRealQuarter() Add one quarter to the instance (using timestamp).
- * @method CarbonImmutable subRealQuarters(int $value = 1) Sub quarters (the $value count passed in) to the instance (using timestamp).
- * @method CarbonImmutable subRealQuarter() Sub one quarter to the instance (using timestamp).
- * @method CarbonPeriod quartersUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each quarter or every X quarters if a factor is given.
- * @method CarbonImmutable addRealYears(int $value = 1) Add years (the $value count passed in) to the instance (using timestamp).
- * @method CarbonImmutable addRealYear() Add one year to the instance (using timestamp).
- * @method CarbonImmutable subRealYears(int $value = 1) Sub years (the $value count passed in) to the instance (using timestamp).
- * @method CarbonImmutable subRealYear() Sub one year to the instance (using timestamp).
- * @method CarbonPeriod yearsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each year or every X years if a factor is given.
- * @method CarbonImmutable addRealDecades(int $value = 1) Add decades (the $value count passed in) to the instance (using timestamp).
- * @method CarbonImmutable addRealDecade() Add one decade to the instance (using timestamp).
- * @method CarbonImmutable subRealDecades(int $value = 1) Sub decades (the $value count passed in) to the instance (using timestamp).
- * @method CarbonImmutable subRealDecade() Sub one decade to the instance (using timestamp).
- * @method CarbonPeriod decadesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each decade or every X decades if a factor is given.
- * @method CarbonImmutable addRealCenturies(int $value = 1) Add centuries (the $value count passed in) to the instance (using timestamp).
- * @method CarbonImmutable addRealCentury() Add one century to the instance (using timestamp).
- * @method CarbonImmutable subRealCenturies(int $value = 1) Sub centuries (the $value count passed in) to the instance (using timestamp).
- * @method CarbonImmutable subRealCentury() Sub one century to the instance (using timestamp).
- * @method CarbonPeriod centuriesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each century or every X centuries if a factor is given.
- * @method CarbonImmutable addRealMillennia(int $value = 1) Add millennia (the $value count passed in) to the instance (using timestamp).
- * @method CarbonImmutable addRealMillennium() Add one millennium to the instance (using timestamp).
- * @method CarbonImmutable subRealMillennia(int $value = 1) Sub millennia (the $value count passed in) to the instance (using timestamp).
- * @method CarbonImmutable subRealMillennium() Sub one millennium to the instance (using timestamp).
- * @method CarbonPeriod millenniaUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millennium or every X millennia if a factor is given.
- * @method CarbonImmutable roundYear(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function.
- * @method CarbonImmutable roundYears(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function.
- * @method CarbonImmutable floorYear(float $precision = 1) Truncate the current instance year with given precision.
- * @method CarbonImmutable floorYears(float $precision = 1) Truncate the current instance year with given precision.
- * @method CarbonImmutable ceilYear(float $precision = 1) Ceil the current instance year with given precision.
- * @method CarbonImmutable ceilYears(float $precision = 1) Ceil the current instance year with given precision.
- * @method CarbonImmutable roundMonth(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function.
- * @method CarbonImmutable roundMonths(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function.
- * @method CarbonImmutable floorMonth(float $precision = 1) Truncate the current instance month with given precision.
- * @method CarbonImmutable floorMonths(float $precision = 1) Truncate the current instance month with given precision.
- * @method CarbonImmutable ceilMonth(float $precision = 1) Ceil the current instance month with given precision.
- * @method CarbonImmutable ceilMonths(float $precision = 1) Ceil the current instance month with given precision.
- * @method CarbonImmutable roundDay(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function.
- * @method CarbonImmutable roundDays(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function.
- * @method CarbonImmutable floorDay(float $precision = 1) Truncate the current instance day with given precision.
- * @method CarbonImmutable floorDays(float $precision = 1) Truncate the current instance day with given precision.
- * @method CarbonImmutable ceilDay(float $precision = 1) Ceil the current instance day with given precision.
- * @method CarbonImmutable ceilDays(float $precision = 1) Ceil the current instance day with given precision.
- * @method CarbonImmutable roundHour(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function.
- * @method CarbonImmutable roundHours(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function.
- * @method CarbonImmutable floorHour(float $precision = 1) Truncate the current instance hour with given precision.
- * @method CarbonImmutable floorHours(float $precision = 1) Truncate the current instance hour with given precision.
- * @method CarbonImmutable ceilHour(float $precision = 1) Ceil the current instance hour with given precision.
- * @method CarbonImmutable ceilHours(float $precision = 1) Ceil the current instance hour with given precision.
- * @method CarbonImmutable roundMinute(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function.
- * @method CarbonImmutable roundMinutes(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function.
- * @method CarbonImmutable floorMinute(float $precision = 1) Truncate the current instance minute with given precision.
- * @method CarbonImmutable floorMinutes(float $precision = 1) Truncate the current instance minute with given precision.
- * @method CarbonImmutable ceilMinute(float $precision = 1) Ceil the current instance minute with given precision.
- * @method CarbonImmutable ceilMinutes(float $precision = 1) Ceil the current instance minute with given precision.
- * @method CarbonImmutable roundSecond(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function.
- * @method CarbonImmutable roundSeconds(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function.
- * @method CarbonImmutable floorSecond(float $precision = 1) Truncate the current instance second with given precision.
- * @method CarbonImmutable floorSeconds(float $precision = 1) Truncate the current instance second with given precision.
- * @method CarbonImmutable ceilSecond(float $precision = 1) Ceil the current instance second with given precision.
- * @method CarbonImmutable ceilSeconds(float $precision = 1) Ceil the current instance second with given precision.
- * @method CarbonImmutable roundMillennium(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function.
- * @method CarbonImmutable roundMillennia(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function.
- * @method CarbonImmutable floorMillennium(float $precision = 1) Truncate the current instance millennium with given precision.
- * @method CarbonImmutable floorMillennia(float $precision = 1) Truncate the current instance millennium with given precision.
- * @method CarbonImmutable ceilMillennium(float $precision = 1) Ceil the current instance millennium with given precision.
- * @method CarbonImmutable ceilMillennia(float $precision = 1) Ceil the current instance millennium with given precision.
- * @method CarbonImmutable roundCentury(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function.
- * @method CarbonImmutable roundCenturies(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function.
- * @method CarbonImmutable floorCentury(float $precision = 1) Truncate the current instance century with given precision.
- * @method CarbonImmutable floorCenturies(float $precision = 1) Truncate the current instance century with given precision.
- * @method CarbonImmutable ceilCentury(float $precision = 1) Ceil the current instance century with given precision.
- * @method CarbonImmutable ceilCenturies(float $precision = 1) Ceil the current instance century with given precision.
- * @method CarbonImmutable roundDecade(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function.
- * @method CarbonImmutable roundDecades(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function.
- * @method CarbonImmutable floorDecade(float $precision = 1) Truncate the current instance decade with given precision.
- * @method CarbonImmutable floorDecades(float $precision = 1) Truncate the current instance decade with given precision.
- * @method CarbonImmutable ceilDecade(float $precision = 1) Ceil the current instance decade with given precision.
- * @method CarbonImmutable ceilDecades(float $precision = 1) Ceil the current instance decade with given precision.
- * @method CarbonImmutable roundQuarter(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function.
- * @method CarbonImmutable roundQuarters(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function.
- * @method CarbonImmutable floorQuarter(float $precision = 1) Truncate the current instance quarter with given precision.
- * @method CarbonImmutable floorQuarters(float $precision = 1) Truncate the current instance quarter with given precision.
- * @method CarbonImmutable ceilQuarter(float $precision = 1) Ceil the current instance quarter with given precision.
- * @method CarbonImmutable ceilQuarters(float $precision = 1) Ceil the current instance quarter with given precision.
- * @method CarbonImmutable roundMillisecond(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function.
- * @method CarbonImmutable roundMilliseconds(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function.
- * @method CarbonImmutable floorMillisecond(float $precision = 1) Truncate the current instance millisecond with given precision.
- * @method CarbonImmutable floorMilliseconds(float $precision = 1) Truncate the current instance millisecond with given precision.
- * @method CarbonImmutable ceilMillisecond(float $precision = 1) Ceil the current instance millisecond with given precision.
- * @method CarbonImmutable ceilMilliseconds(float $precision = 1) Ceil the current instance millisecond with given precision.
- * @method CarbonImmutable roundMicrosecond(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function.
- * @method CarbonImmutable roundMicroseconds(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function.
- * @method CarbonImmutable floorMicrosecond(float $precision = 1) Truncate the current instance microsecond with given precision.
- * @method CarbonImmutable floorMicroseconds(float $precision = 1) Truncate the current instance microsecond with given precision.
- * @method CarbonImmutable ceilMicrosecond(float $precision = 1) Ceil the current instance microsecond with given precision.
- * @method CarbonImmutable ceilMicroseconds(float $precision = 1) Ceil the current instance microsecond with given precision.
- * @method string shortAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- * @method string longAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- * @method string shortRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- * @method string longRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- * @method string shortRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- * @method string longRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- * @method string shortRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- * @method string longRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- * @method static CarbonImmutable|false createFromFormat(string $format, string $time, string|DateTimeZone $timezone = null) Parse a string into a new CarbonImmutable object according to the specified format.
- * @method static CarbonImmutable __set_state(array $array) https://php.net/manual/en/datetime.set-state.php
- *
- *
- */
-class CarbonImmutable extends DateTimeImmutable implements CarbonInterface
-{
- use Date {
- __clone as dateTraitClone;
- }
-
- public function __clone()
- {
- $this->dateTraitClone();
- $this->endOfTime = false;
- $this->startOfTime = false;
- }
-
- /**
- * Create a very old date representing start of time.
- *
- * @return static
- */
- public static function startOfTime(): self
- {
- $date = static::parse('0001-01-01')->years(self::getStartOfTimeYear());
- $date->startOfTime = true;
-
- return $date;
- }
-
- /**
- * Create a very far date representing end of time.
- *
- * @return static
- */
- public static function endOfTime(): self
- {
- $date = static::parse('9999-12-31 23:59:59.999999')->years(self::getEndOfTimeYear());
- $date->endOfTime = true;
-
- return $date;
- }
-
- /**
- * @codeCoverageIgnore
- */
- private static function getEndOfTimeYear(): int
- {
- if (version_compare(PHP_VERSION, '7.3.0-dev', '<')) {
- return 145261681241552;
- }
-
- // Remove if https://bugs.php.net/bug.php?id=81107 is fixed
- if (version_compare(PHP_VERSION, '8.1.0-dev', '>=')) {
- return 1118290769066902787;
- }
-
- return PHP_INT_MAX;
- }
-
- /**
- * @codeCoverageIgnore
- */
- private static function getStartOfTimeYear(): int
- {
- if (version_compare(PHP_VERSION, '7.3.0-dev', '<')) {
- return -135908816449551;
- }
-
- // Remove if https://bugs.php.net/bug.php?id=81107 is fixed
- if (version_compare(PHP_VERSION, '8.1.0-dev', '>=')) {
- return -1118290769066898816;
- }
-
- return max(PHP_INT_MIN, -9223372036854773760);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/CarbonInterface.php b/vendor/nesbot/carbon/src/Carbon/CarbonInterface.php
deleted file mode 100644
index 5eb2803b..00000000
--- a/vendor/nesbot/carbon/src/Carbon/CarbonInterface.php
+++ /dev/null
@@ -1,5046 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon;
-
-use BadMethodCallException;
-use Carbon\Exceptions\BadComparisonUnitException;
-use Carbon\Exceptions\ImmutableException;
-use Carbon\Exceptions\InvalidDateException;
-use Carbon\Exceptions\InvalidFormatException;
-use Carbon\Exceptions\UnknownGetterException;
-use Carbon\Exceptions\UnknownMethodException;
-use Carbon\Exceptions\UnknownSetterException;
-use Closure;
-use DateInterval;
-use DateTime;
-use DateTimeImmutable;
-use DateTimeInterface;
-use DateTimeZone;
-use JsonSerializable;
-use ReflectionException;
-use ReturnTypeWillChange;
-use Symfony\Component\Translation\TranslatorInterface;
-use Throwable;
-
-/**
- * Common interface for Carbon and CarbonImmutable.
- *
- *
- *
- * @property int $year
- * @property int $yearIso
- * @property int $month
- * @property int $day
- * @property int $hour
- * @property int $minute
- * @property int $second
- * @property int $micro
- * @property int $microsecond
- * @property int|float|string $timestamp seconds since the Unix Epoch
- * @property string $englishDayOfWeek the day of week in English
- * @property string $shortEnglishDayOfWeek the abbreviated day of week in English
- * @property string $englishMonth the month in English
- * @property string $shortEnglishMonth the abbreviated month in English
- * @property string $localeDayOfWeek the day of week in current locale LC_TIME
- * @property string $shortLocaleDayOfWeek the abbreviated day of week in current locale LC_TIME
- * @property string $localeMonth the month in current locale LC_TIME
- * @property string $shortLocaleMonth the abbreviated month in current locale LC_TIME
- * @property int $milliseconds
- * @property int $millisecond
- * @property int $milli
- * @property int $week 1 through 53
- * @property int $isoWeek 1 through 53
- * @property int $weekYear year according to week format
- * @property int $isoWeekYear year according to ISO week format
- * @property int $dayOfYear 1 through 366
- * @property int $age does a diffInYears() with default parameters
- * @property int $offset the timezone offset in seconds from UTC
- * @property int $offsetMinutes the timezone offset in minutes from UTC
- * @property int $offsetHours the timezone offset in hours from UTC
- * @property CarbonTimeZone $timezone the current timezone
- * @property CarbonTimeZone $tz alias of $timezone
- * @property-read int $dayOfWeek 0 (for Sunday) through 6 (for Saturday)
- * @property-read int $dayOfWeekIso 1 (for Monday) through 7 (for Sunday)
- * @property-read int $weekOfYear ISO-8601 week number of year, weeks starting on Monday
- * @property-read int $daysInMonth number of days in the given month
- * @property-read string $latinMeridiem "am"/"pm" (Ante meridiem or Post meridiem latin lowercase mark)
- * @property-read string $latinUpperMeridiem "AM"/"PM" (Ante meridiem or Post meridiem latin uppercase mark)
- * @property-read string $timezoneAbbreviatedName the current timezone abbreviated name
- * @property-read string $tzAbbrName alias of $timezoneAbbreviatedName
- * @property-read string $dayName long name of weekday translated according to Carbon locale, in english if no translation available for current language
- * @property-read string $shortDayName short name of weekday translated according to Carbon locale, in english if no translation available for current language
- * @property-read string $minDayName very short name of weekday translated according to Carbon locale, in english if no translation available for current language
- * @property-read string $monthName long name of month translated according to Carbon locale, in english if no translation available for current language
- * @property-read string $shortMonthName short name of month translated according to Carbon locale, in english if no translation available for current language
- * @property-read string $meridiem lowercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language
- * @property-read string $upperMeridiem uppercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language
- * @property-read int $noZeroHour current hour from 1 to 24
- * @property-read int $weeksInYear 51 through 53
- * @property-read int $isoWeeksInYear 51 through 53
- * @property-read int $weekOfMonth 1 through 5
- * @property-read int $weekNumberInMonth 1 through 5
- * @property-read int $firstWeekDay 0 through 6
- * @property-read int $lastWeekDay 0 through 6
- * @property-read int $daysInYear 365 or 366
- * @property-read int $quarter the quarter of this instance, 1 - 4
- * @property-read int $decade the decade of this instance
- * @property-read int $century the century of this instance
- * @property-read int $millennium the millennium of this instance
- * @property-read bool $dst daylight savings time indicator, true if DST, false otherwise
- * @property-read bool $local checks if the timezone is local, true if local, false otherwise
- * @property-read bool $utc checks if the timezone is UTC, true if UTC, false otherwise
- * @property-read string $timezoneName the current timezone name
- * @property-read string $tzName alias of $timezoneName
- * @property-read string $locale locale of the current instance
- *
- * @method bool isUtc() Check if the current instance has UTC timezone. (Both isUtc and isUTC cases are valid.)
- * @method bool isLocal() Check if the current instance has non-UTC timezone.
- * @method bool isValid() Check if the current instance is a valid date.
- * @method bool isDST() Check if the current instance is in a daylight saving time.
- * @method bool isSunday() Checks if the instance day is sunday.
- * @method bool isMonday() Checks if the instance day is monday.
- * @method bool isTuesday() Checks if the instance day is tuesday.
- * @method bool isWednesday() Checks if the instance day is wednesday.
- * @method bool isThursday() Checks if the instance day is thursday.
- * @method bool isFriday() Checks if the instance day is friday.
- * @method bool isSaturday() Checks if the instance day is saturday.
- * @method bool isSameYear(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same year as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentYear() Checks if the instance is in the same year as the current moment.
- * @method bool isNextYear() Checks if the instance is in the same year as the current moment next year.
- * @method bool isLastYear() Checks if the instance is in the same year as the current moment last year.
- * @method bool isSameWeek(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same week as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentWeek() Checks if the instance is in the same week as the current moment.
- * @method bool isNextWeek() Checks if the instance is in the same week as the current moment next week.
- * @method bool isLastWeek() Checks if the instance is in the same week as the current moment last week.
- * @method bool isSameDay(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same day as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentDay() Checks if the instance is in the same day as the current moment.
- * @method bool isNextDay() Checks if the instance is in the same day as the current moment next day.
- * @method bool isLastDay() Checks if the instance is in the same day as the current moment last day.
- * @method bool isSameHour(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same hour as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentHour() Checks if the instance is in the same hour as the current moment.
- * @method bool isNextHour() Checks if the instance is in the same hour as the current moment next hour.
- * @method bool isLastHour() Checks if the instance is in the same hour as the current moment last hour.
- * @method bool isSameMinute(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same minute as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentMinute() Checks if the instance is in the same minute as the current moment.
- * @method bool isNextMinute() Checks if the instance is in the same minute as the current moment next minute.
- * @method bool isLastMinute() Checks if the instance is in the same minute as the current moment last minute.
- * @method bool isSameSecond(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same second as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentSecond() Checks if the instance is in the same second as the current moment.
- * @method bool isNextSecond() Checks if the instance is in the same second as the current moment next second.
- * @method bool isLastSecond() Checks if the instance is in the same second as the current moment last second.
- * @method bool isSameMicro(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentMicro() Checks if the instance is in the same microsecond as the current moment.
- * @method bool isNextMicro() Checks if the instance is in the same microsecond as the current moment next microsecond.
- * @method bool isLastMicro() Checks if the instance is in the same microsecond as the current moment last microsecond.
- * @method bool isSameMicrosecond(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentMicrosecond() Checks if the instance is in the same microsecond as the current moment.
- * @method bool isNextMicrosecond() Checks if the instance is in the same microsecond as the current moment next microsecond.
- * @method bool isLastMicrosecond() Checks if the instance is in the same microsecond as the current moment last microsecond.
- * @method bool isCurrentMonth() Checks if the instance is in the same month as the current moment.
- * @method bool isNextMonth() Checks if the instance is in the same month as the current moment next month.
- * @method bool isLastMonth() Checks if the instance is in the same month as the current moment last month.
- * @method bool isCurrentQuarter() Checks if the instance is in the same quarter as the current moment.
- * @method bool isNextQuarter() Checks if the instance is in the same quarter as the current moment next quarter.
- * @method bool isLastQuarter() Checks if the instance is in the same quarter as the current moment last quarter.
- * @method bool isSameDecade(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same decade as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentDecade() Checks if the instance is in the same decade as the current moment.
- * @method bool isNextDecade() Checks if the instance is in the same decade as the current moment next decade.
- * @method bool isLastDecade() Checks if the instance is in the same decade as the current moment last decade.
- * @method bool isSameCentury(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same century as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentCentury() Checks if the instance is in the same century as the current moment.
- * @method bool isNextCentury() Checks if the instance is in the same century as the current moment next century.
- * @method bool isLastCentury() Checks if the instance is in the same century as the current moment last century.
- * @method bool isSameMillennium(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same millennium as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentMillennium() Checks if the instance is in the same millennium as the current moment.
- * @method bool isNextMillennium() Checks if the instance is in the same millennium as the current moment next millennium.
- * @method bool isLastMillennium() Checks if the instance is in the same millennium as the current moment last millennium.
- * @method CarbonInterface years(int $value) Set current instance year to the given value.
- * @method CarbonInterface year(int $value) Set current instance year to the given value.
- * @method CarbonInterface setYears(int $value) Set current instance year to the given value.
- * @method CarbonInterface setYear(int $value) Set current instance year to the given value.
- * @method CarbonInterface months(int $value) Set current instance month to the given value.
- * @method CarbonInterface month(int $value) Set current instance month to the given value.
- * @method CarbonInterface setMonths(int $value) Set current instance month to the given value.
- * @method CarbonInterface setMonth(int $value) Set current instance month to the given value.
- * @method CarbonInterface days(int $value) Set current instance day to the given value.
- * @method CarbonInterface day(int $value) Set current instance day to the given value.
- * @method CarbonInterface setDays(int $value) Set current instance day to the given value.
- * @method CarbonInterface setDay(int $value) Set current instance day to the given value.
- * @method CarbonInterface hours(int $value) Set current instance hour to the given value.
- * @method CarbonInterface hour(int $value) Set current instance hour to the given value.
- * @method CarbonInterface setHours(int $value) Set current instance hour to the given value.
- * @method CarbonInterface setHour(int $value) Set current instance hour to the given value.
- * @method CarbonInterface minutes(int $value) Set current instance minute to the given value.
- * @method CarbonInterface minute(int $value) Set current instance minute to the given value.
- * @method CarbonInterface setMinutes(int $value) Set current instance minute to the given value.
- * @method CarbonInterface setMinute(int $value) Set current instance minute to the given value.
- * @method CarbonInterface seconds(int $value) Set current instance second to the given value.
- * @method CarbonInterface second(int $value) Set current instance second to the given value.
- * @method CarbonInterface setSeconds(int $value) Set current instance second to the given value.
- * @method CarbonInterface setSecond(int $value) Set current instance second to the given value.
- * @method CarbonInterface millis(int $value) Set current instance millisecond to the given value.
- * @method CarbonInterface milli(int $value) Set current instance millisecond to the given value.
- * @method CarbonInterface setMillis(int $value) Set current instance millisecond to the given value.
- * @method CarbonInterface setMilli(int $value) Set current instance millisecond to the given value.
- * @method CarbonInterface milliseconds(int $value) Set current instance millisecond to the given value.
- * @method CarbonInterface millisecond(int $value) Set current instance millisecond to the given value.
- * @method CarbonInterface setMilliseconds(int $value) Set current instance millisecond to the given value.
- * @method CarbonInterface setMillisecond(int $value) Set current instance millisecond to the given value.
- * @method CarbonInterface micros(int $value) Set current instance microsecond to the given value.
- * @method CarbonInterface micro(int $value) Set current instance microsecond to the given value.
- * @method CarbonInterface setMicros(int $value) Set current instance microsecond to the given value.
- * @method CarbonInterface setMicro(int $value) Set current instance microsecond to the given value.
- * @method CarbonInterface microseconds(int $value) Set current instance microsecond to the given value.
- * @method CarbonInterface microsecond(int $value) Set current instance microsecond to the given value.
- * @method CarbonInterface setMicroseconds(int $value) Set current instance microsecond to the given value.
- * @method CarbonInterface setMicrosecond(int $value) Set current instance microsecond to the given value.
- * @method CarbonInterface addYears(int $value = 1) Add years (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addYear() Add one year to the instance (using date interval).
- * @method CarbonInterface subYears(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subYear() Sub one year to the instance (using date interval).
- * @method CarbonInterface addYearsWithOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface addYearWithOverflow() Add one year to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface subYearsWithOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface subYearWithOverflow() Sub one year to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface addYearsWithoutOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addYearWithoutOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subYearsWithoutOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subYearWithoutOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addYearsWithNoOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addYearWithNoOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subYearsWithNoOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subYearWithNoOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addYearsNoOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addYearNoOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subYearsNoOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subYearNoOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addMonths(int $value = 1) Add months (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addMonth() Add one month to the instance (using date interval).
- * @method CarbonInterface subMonths(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subMonth() Sub one month to the instance (using date interval).
- * @method CarbonInterface addMonthsWithOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface addMonthWithOverflow() Add one month to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface subMonthsWithOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface subMonthWithOverflow() Sub one month to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface addMonthsWithoutOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addMonthWithoutOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subMonthsWithoutOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subMonthWithoutOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addMonthsWithNoOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addMonthWithNoOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subMonthsWithNoOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subMonthWithNoOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addMonthsNoOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addMonthNoOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subMonthsNoOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subMonthNoOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addDays(int $value = 1) Add days (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addDay() Add one day to the instance (using date interval).
- * @method CarbonInterface subDays(int $value = 1) Sub days (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subDay() Sub one day to the instance (using date interval).
- * @method CarbonInterface addHours(int $value = 1) Add hours (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addHour() Add one hour to the instance (using date interval).
- * @method CarbonInterface subHours(int $value = 1) Sub hours (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subHour() Sub one hour to the instance (using date interval).
- * @method CarbonInterface addMinutes(int $value = 1) Add minutes (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addMinute() Add one minute to the instance (using date interval).
- * @method CarbonInterface subMinutes(int $value = 1) Sub minutes (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subMinute() Sub one minute to the instance (using date interval).
- * @method CarbonInterface addSeconds(int $value = 1) Add seconds (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addSecond() Add one second to the instance (using date interval).
- * @method CarbonInterface subSeconds(int $value = 1) Sub seconds (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subSecond() Sub one second to the instance (using date interval).
- * @method CarbonInterface addMillis(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addMilli() Add one millisecond to the instance (using date interval).
- * @method CarbonInterface subMillis(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subMilli() Sub one millisecond to the instance (using date interval).
- * @method CarbonInterface addMilliseconds(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addMillisecond() Add one millisecond to the instance (using date interval).
- * @method CarbonInterface subMilliseconds(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subMillisecond() Sub one millisecond to the instance (using date interval).
- * @method CarbonInterface addMicros(int $value = 1) Add microseconds (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addMicro() Add one microsecond to the instance (using date interval).
- * @method CarbonInterface subMicros(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subMicro() Sub one microsecond to the instance (using date interval).
- * @method CarbonInterface addMicroseconds(int $value = 1) Add microseconds (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addMicrosecond() Add one microsecond to the instance (using date interval).
- * @method CarbonInterface subMicroseconds(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subMicrosecond() Sub one microsecond to the instance (using date interval).
- * @method CarbonInterface addMillennia(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addMillennium() Add one millennium to the instance (using date interval).
- * @method CarbonInterface subMillennia(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subMillennium() Sub one millennium to the instance (using date interval).
- * @method CarbonInterface addMillenniaWithOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface addMillenniumWithOverflow() Add one millennium to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface subMillenniaWithOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface subMillenniumWithOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface addMillenniaWithoutOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addMillenniumWithoutOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subMillenniaWithoutOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subMillenniumWithoutOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addMillenniaWithNoOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addMillenniumWithNoOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subMillenniaWithNoOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subMillenniumWithNoOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addMillenniaNoOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addMillenniumNoOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subMillenniaNoOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subMillenniumNoOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addCenturies(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addCentury() Add one century to the instance (using date interval).
- * @method CarbonInterface subCenturies(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subCentury() Sub one century to the instance (using date interval).
- * @method CarbonInterface addCenturiesWithOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface addCenturyWithOverflow() Add one century to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface subCenturiesWithOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface subCenturyWithOverflow() Sub one century to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface addCenturiesWithoutOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addCenturyWithoutOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subCenturiesWithoutOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subCenturyWithoutOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addCenturiesWithNoOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addCenturyWithNoOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subCenturiesWithNoOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subCenturyWithNoOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addCenturiesNoOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addCenturyNoOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subCenturiesNoOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subCenturyNoOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addDecades(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addDecade() Add one decade to the instance (using date interval).
- * @method CarbonInterface subDecades(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subDecade() Sub one decade to the instance (using date interval).
- * @method CarbonInterface addDecadesWithOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface addDecadeWithOverflow() Add one decade to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface subDecadesWithOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface subDecadeWithOverflow() Sub one decade to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface addDecadesWithoutOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addDecadeWithoutOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subDecadesWithoutOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subDecadeWithoutOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addDecadesWithNoOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addDecadeWithNoOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subDecadesWithNoOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subDecadeWithNoOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addDecadesNoOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addDecadeNoOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subDecadesNoOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subDecadeNoOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addQuarters(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addQuarter() Add one quarter to the instance (using date interval).
- * @method CarbonInterface subQuarters(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subQuarter() Sub one quarter to the instance (using date interval).
- * @method CarbonInterface addQuartersWithOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface addQuarterWithOverflow() Add one quarter to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface subQuartersWithOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface subQuarterWithOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface addQuartersWithoutOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addQuarterWithoutOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subQuartersWithoutOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subQuarterWithoutOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addQuartersWithNoOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addQuarterWithNoOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subQuartersWithNoOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subQuarterWithNoOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addQuartersNoOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addQuarterNoOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subQuartersNoOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subQuarterNoOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addWeeks(int $value = 1) Add weeks (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addWeek() Add one week to the instance (using date interval).
- * @method CarbonInterface subWeeks(int $value = 1) Sub weeks (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subWeek() Sub one week to the instance (using date interval).
- * @method CarbonInterface addWeekdays(int $value = 1) Add weekdays (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addWeekday() Add one weekday to the instance (using date interval).
- * @method CarbonInterface subWeekdays(int $value = 1) Sub weekdays (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subWeekday() Sub one weekday to the instance (using date interval).
- * @method CarbonInterface addRealMicros(int $value = 1) Add microseconds (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface addRealMicro() Add one microsecond to the instance (using timestamp).
- * @method CarbonInterface subRealMicros(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface subRealMicro() Sub one microsecond to the instance (using timestamp).
- * @method CarbonPeriod microsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given.
- * @method CarbonInterface addRealMicroseconds(int $value = 1) Add microseconds (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface addRealMicrosecond() Add one microsecond to the instance (using timestamp).
- * @method CarbonInterface subRealMicroseconds(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface subRealMicrosecond() Sub one microsecond to the instance (using timestamp).
- * @method CarbonPeriod microsecondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given.
- * @method CarbonInterface addRealMillis(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface addRealMilli() Add one millisecond to the instance (using timestamp).
- * @method CarbonInterface subRealMillis(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface subRealMilli() Sub one millisecond to the instance (using timestamp).
- * @method CarbonPeriod millisUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given.
- * @method CarbonInterface addRealMilliseconds(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface addRealMillisecond() Add one millisecond to the instance (using timestamp).
- * @method CarbonInterface subRealMilliseconds(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface subRealMillisecond() Sub one millisecond to the instance (using timestamp).
- * @method CarbonPeriod millisecondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given.
- * @method CarbonInterface addRealSeconds(int $value = 1) Add seconds (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface addRealSecond() Add one second to the instance (using timestamp).
- * @method CarbonInterface subRealSeconds(int $value = 1) Sub seconds (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface subRealSecond() Sub one second to the instance (using timestamp).
- * @method CarbonPeriod secondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each second or every X seconds if a factor is given.
- * @method CarbonInterface addRealMinutes(int $value = 1) Add minutes (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface addRealMinute() Add one minute to the instance (using timestamp).
- * @method CarbonInterface subRealMinutes(int $value = 1) Sub minutes (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface subRealMinute() Sub one minute to the instance (using timestamp).
- * @method CarbonPeriod minutesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each minute or every X minutes if a factor is given.
- * @method CarbonInterface addRealHours(int $value = 1) Add hours (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface addRealHour() Add one hour to the instance (using timestamp).
- * @method CarbonInterface subRealHours(int $value = 1) Sub hours (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface subRealHour() Sub one hour to the instance (using timestamp).
- * @method CarbonPeriod hoursUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each hour or every X hours if a factor is given.
- * @method CarbonInterface addRealDays(int $value = 1) Add days (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface addRealDay() Add one day to the instance (using timestamp).
- * @method CarbonInterface subRealDays(int $value = 1) Sub days (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface subRealDay() Sub one day to the instance (using timestamp).
- * @method CarbonPeriod daysUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each day or every X days if a factor is given.
- * @method CarbonInterface addRealWeeks(int $value = 1) Add weeks (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface addRealWeek() Add one week to the instance (using timestamp).
- * @method CarbonInterface subRealWeeks(int $value = 1) Sub weeks (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface subRealWeek() Sub one week to the instance (using timestamp).
- * @method CarbonPeriod weeksUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each week or every X weeks if a factor is given.
- * @method CarbonInterface addRealMonths(int $value = 1) Add months (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface addRealMonth() Add one month to the instance (using timestamp).
- * @method CarbonInterface subRealMonths(int $value = 1) Sub months (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface subRealMonth() Sub one month to the instance (using timestamp).
- * @method CarbonPeriod monthsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each month or every X months if a factor is given.
- * @method CarbonInterface addRealQuarters(int $value = 1) Add quarters (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface addRealQuarter() Add one quarter to the instance (using timestamp).
- * @method CarbonInterface subRealQuarters(int $value = 1) Sub quarters (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface subRealQuarter() Sub one quarter to the instance (using timestamp).
- * @method CarbonPeriod quartersUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each quarter or every X quarters if a factor is given.
- * @method CarbonInterface addRealYears(int $value = 1) Add years (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface addRealYear() Add one year to the instance (using timestamp).
- * @method CarbonInterface subRealYears(int $value = 1) Sub years (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface subRealYear() Sub one year to the instance (using timestamp).
- * @method CarbonPeriod yearsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each year or every X years if a factor is given.
- * @method CarbonInterface addRealDecades(int $value = 1) Add decades (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface addRealDecade() Add one decade to the instance (using timestamp).
- * @method CarbonInterface subRealDecades(int $value = 1) Sub decades (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface subRealDecade() Sub one decade to the instance (using timestamp).
- * @method CarbonPeriod decadesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each decade or every X decades if a factor is given.
- * @method CarbonInterface addRealCenturies(int $value = 1) Add centuries (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface addRealCentury() Add one century to the instance (using timestamp).
- * @method CarbonInterface subRealCenturies(int $value = 1) Sub centuries (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface subRealCentury() Sub one century to the instance (using timestamp).
- * @method CarbonPeriod centuriesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each century or every X centuries if a factor is given.
- * @method CarbonInterface addRealMillennia(int $value = 1) Add millennia (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface addRealMillennium() Add one millennium to the instance (using timestamp).
- * @method CarbonInterface subRealMillennia(int $value = 1) Sub millennia (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface subRealMillennium() Sub one millennium to the instance (using timestamp).
- * @method CarbonPeriod millenniaUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millennium or every X millennia if a factor is given.
- * @method CarbonInterface roundYear(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function.
- * @method CarbonInterface roundYears(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function.
- * @method CarbonInterface floorYear(float $precision = 1) Truncate the current instance year with given precision.
- * @method CarbonInterface floorYears(float $precision = 1) Truncate the current instance year with given precision.
- * @method CarbonInterface ceilYear(float $precision = 1) Ceil the current instance year with given precision.
- * @method CarbonInterface ceilYears(float $precision = 1) Ceil the current instance year with given precision.
- * @method CarbonInterface roundMonth(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function.
- * @method CarbonInterface roundMonths(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function.
- * @method CarbonInterface floorMonth(float $precision = 1) Truncate the current instance month with given precision.
- * @method CarbonInterface floorMonths(float $precision = 1) Truncate the current instance month with given precision.
- * @method CarbonInterface ceilMonth(float $precision = 1) Ceil the current instance month with given precision.
- * @method CarbonInterface ceilMonths(float $precision = 1) Ceil the current instance month with given precision.
- * @method CarbonInterface roundDay(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function.
- * @method CarbonInterface roundDays(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function.
- * @method CarbonInterface floorDay(float $precision = 1) Truncate the current instance day with given precision.
- * @method CarbonInterface floorDays(float $precision = 1) Truncate the current instance day with given precision.
- * @method CarbonInterface ceilDay(float $precision = 1) Ceil the current instance day with given precision.
- * @method CarbonInterface ceilDays(float $precision = 1) Ceil the current instance day with given precision.
- * @method CarbonInterface roundHour(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function.
- * @method CarbonInterface roundHours(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function.
- * @method CarbonInterface floorHour(float $precision = 1) Truncate the current instance hour with given precision.
- * @method CarbonInterface floorHours(float $precision = 1) Truncate the current instance hour with given precision.
- * @method CarbonInterface ceilHour(float $precision = 1) Ceil the current instance hour with given precision.
- * @method CarbonInterface ceilHours(float $precision = 1) Ceil the current instance hour with given precision.
- * @method CarbonInterface roundMinute(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function.
- * @method CarbonInterface roundMinutes(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function.
- * @method CarbonInterface floorMinute(float $precision = 1) Truncate the current instance minute with given precision.
- * @method CarbonInterface floorMinutes(float $precision = 1) Truncate the current instance minute with given precision.
- * @method CarbonInterface ceilMinute(float $precision = 1) Ceil the current instance minute with given precision.
- * @method CarbonInterface ceilMinutes(float $precision = 1) Ceil the current instance minute with given precision.
- * @method CarbonInterface roundSecond(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function.
- * @method CarbonInterface roundSeconds(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function.
- * @method CarbonInterface floorSecond(float $precision = 1) Truncate the current instance second with given precision.
- * @method CarbonInterface floorSeconds(float $precision = 1) Truncate the current instance second with given precision.
- * @method CarbonInterface ceilSecond(float $precision = 1) Ceil the current instance second with given precision.
- * @method CarbonInterface ceilSeconds(float $precision = 1) Ceil the current instance second with given precision.
- * @method CarbonInterface roundMillennium(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function.
- * @method CarbonInterface roundMillennia(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function.
- * @method CarbonInterface floorMillennium(float $precision = 1) Truncate the current instance millennium with given precision.
- * @method CarbonInterface floorMillennia(float $precision = 1) Truncate the current instance millennium with given precision.
- * @method CarbonInterface ceilMillennium(float $precision = 1) Ceil the current instance millennium with given precision.
- * @method CarbonInterface ceilMillennia(float $precision = 1) Ceil the current instance millennium with given precision.
- * @method CarbonInterface roundCentury(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function.
- * @method CarbonInterface roundCenturies(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function.
- * @method CarbonInterface floorCentury(float $precision = 1) Truncate the current instance century with given precision.
- * @method CarbonInterface floorCenturies(float $precision = 1) Truncate the current instance century with given precision.
- * @method CarbonInterface ceilCentury(float $precision = 1) Ceil the current instance century with given precision.
- * @method CarbonInterface ceilCenturies(float $precision = 1) Ceil the current instance century with given precision.
- * @method CarbonInterface roundDecade(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function.
- * @method CarbonInterface roundDecades(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function.
- * @method CarbonInterface floorDecade(float $precision = 1) Truncate the current instance decade with given precision.
- * @method CarbonInterface floorDecades(float $precision = 1) Truncate the current instance decade with given precision.
- * @method CarbonInterface ceilDecade(float $precision = 1) Ceil the current instance decade with given precision.
- * @method CarbonInterface ceilDecades(float $precision = 1) Ceil the current instance decade with given precision.
- * @method CarbonInterface roundQuarter(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function.
- * @method CarbonInterface roundQuarters(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function.
- * @method CarbonInterface floorQuarter(float $precision = 1) Truncate the current instance quarter with given precision.
- * @method CarbonInterface floorQuarters(float $precision = 1) Truncate the current instance quarter with given precision.
- * @method CarbonInterface ceilQuarter(float $precision = 1) Ceil the current instance quarter with given precision.
- * @method CarbonInterface ceilQuarters(float $precision = 1) Ceil the current instance quarter with given precision.
- * @method CarbonInterface roundMillisecond(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function.
- * @method CarbonInterface roundMilliseconds(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function.
- * @method CarbonInterface floorMillisecond(float $precision = 1) Truncate the current instance millisecond with given precision.
- * @method CarbonInterface floorMilliseconds(float $precision = 1) Truncate the current instance millisecond with given precision.
- * @method CarbonInterface ceilMillisecond(float $precision = 1) Ceil the current instance millisecond with given precision.
- * @method CarbonInterface ceilMilliseconds(float $precision = 1) Ceil the current instance millisecond with given precision.
- * @method CarbonInterface roundMicrosecond(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function.
- * @method CarbonInterface roundMicroseconds(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function.
- * @method CarbonInterface floorMicrosecond(float $precision = 1) Truncate the current instance microsecond with given precision.
- * @method CarbonInterface floorMicroseconds(float $precision = 1) Truncate the current instance microsecond with given precision.
- * @method CarbonInterface ceilMicrosecond(float $precision = 1) Ceil the current instance microsecond with given precision.
- * @method CarbonInterface ceilMicroseconds(float $precision = 1) Ceil the current instance microsecond with given precision.
- * @method string shortAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- * @method string longAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- * @method string shortRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- * @method string longRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- * @method string shortRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- * @method string longRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- * @method string shortRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- * @method string longRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- *
- *
- */
-interface CarbonInterface extends DateTimeInterface, JsonSerializable
-{
- /**
- * Diff wording options(expressed in octal).
- */
- public const NO_ZERO_DIFF = 01;
- public const JUST_NOW = 02;
- public const ONE_DAY_WORDS = 04;
- public const TWO_DAY_WORDS = 010;
- public const SEQUENTIAL_PARTS_ONLY = 020;
- public const ROUND = 040;
- public const FLOOR = 0100;
- public const CEIL = 0200;
-
- /**
- * Diff syntax options.
- */
- public const DIFF_ABSOLUTE = 1; // backward compatibility with true
- public const DIFF_RELATIVE_AUTO = 0; // backward compatibility with false
- public const DIFF_RELATIVE_TO_NOW = 2;
- public const DIFF_RELATIVE_TO_OTHER = 3;
-
- /**
- * Translate string options.
- */
- public const TRANSLATE_MONTHS = 1;
- public const TRANSLATE_DAYS = 2;
- public const TRANSLATE_UNITS = 4;
- public const TRANSLATE_MERIDIEM = 8;
- public const TRANSLATE_DIFF = 0x10;
- public const TRANSLATE_ALL = self::TRANSLATE_MONTHS | self::TRANSLATE_DAYS | self::TRANSLATE_UNITS | self::TRANSLATE_MERIDIEM | self::TRANSLATE_DIFF;
-
- /**
- * The day constants.
- */
- public const SUNDAY = 0;
- public const MONDAY = 1;
- public const TUESDAY = 2;
- public const WEDNESDAY = 3;
- public const THURSDAY = 4;
- public const FRIDAY = 5;
- public const SATURDAY = 6;
-
- /**
- * The month constants.
- * These aren't used by Carbon itself but exist for
- * convenience sake alone.
- */
- public const JANUARY = 1;
- public const FEBRUARY = 2;
- public const MARCH = 3;
- public const APRIL = 4;
- public const MAY = 5;
- public const JUNE = 6;
- public const JULY = 7;
- public const AUGUST = 8;
- public const SEPTEMBER = 9;
- public const OCTOBER = 10;
- public const NOVEMBER = 11;
- public const DECEMBER = 12;
-
- /**
- * Number of X in Y.
- */
- public const YEARS_PER_MILLENNIUM = 1000;
- public const YEARS_PER_CENTURY = 100;
- public const YEARS_PER_DECADE = 10;
- public const MONTHS_PER_YEAR = 12;
- public const MONTHS_PER_QUARTER = 3;
- public const WEEKS_PER_YEAR = 52;
- public const WEEKS_PER_MONTH = 4;
- public const DAYS_PER_YEAR = 365;
- public const DAYS_PER_WEEK = 7;
- public const HOURS_PER_DAY = 24;
- public const MINUTES_PER_HOUR = 60;
- public const SECONDS_PER_MINUTE = 60;
- public const MILLISECONDS_PER_SECOND = 1000;
- public const MICROSECONDS_PER_MILLISECOND = 1000;
- public const MICROSECONDS_PER_SECOND = 1000000;
-
- /**
- * Special settings to get the start of week from current locale culture.
- */
- public const WEEK_DAY_AUTO = 'auto';
-
- /**
- * RFC7231 DateTime format.
- *
- * @var string
- */
- public const RFC7231_FORMAT = 'D, d M Y H:i:s \G\M\T';
-
- /**
- * Default format to use for __toString method when type juggling occurs.
- *
- * @var string
- */
- public const DEFAULT_TO_STRING_FORMAT = 'Y-m-d H:i:s';
-
- /**
- * Format for converting mocked time, includes microseconds.
- *
- * @var string
- */
- public const MOCK_DATETIME_FORMAT = 'Y-m-d H:i:s.u';
-
- /**
- * Pattern detection for ->isoFormat and ::createFromIsoFormat.
- *
- * @var string
- */
- public const ISO_FORMAT_REGEXP = '(O[YMDHhms]|[Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY?|g{1,5}|G{1,5}|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?)';
-
- //
-
- /**
- * Dynamically handle calls to the class.
- *
- * @param string $method magic method name called
- * @param array $parameters parameters list
- *
- * @throws UnknownMethodException|BadMethodCallException|ReflectionException|Throwable
- *
- * @return mixed
- */
- public function __call($method, $parameters);
-
- /**
- * Dynamically handle calls to the class.
- *
- * @param string $method magic method name called
- * @param array $parameters parameters list
- *
- * @throws BadMethodCallException
- *
- * @return mixed
- */
- public static function __callStatic($method, $parameters);
-
- /**
- * Update constructedObjectId on cloned.
- */
- public function __clone();
-
- /**
- * Create a new Carbon instance.
- *
- * Please see the testing aids section (specifically static::setTestNow())
- * for more on the possibility of this constructor returning a test instance.
- *
- * @param DateTimeInterface|string|null $time
- * @param DateTimeZone|string|null $tz
- *
- * @throws InvalidFormatException
- */
- public function __construct($time = null, $tz = null);
-
- /**
- * Show truthy properties on var_dump().
- *
- * @return array
- */
- public function __debugInfo();
-
- /**
- * Get a part of the Carbon object
- *
- * @param string $name
- *
- * @throws UnknownGetterException
- *
- * @return string|int|bool|DateTimeZone|null
- */
- public function __get($name);
-
- /**
- * Check if an attribute exists on the object
- *
- * @param string $name
- *
- * @return bool
- */
- public function __isset($name);
-
- /**
- * Set a part of the Carbon object
- *
- * @param string $name
- * @param string|int|DateTimeZone $value
- *
- * @throws UnknownSetterException|ReflectionException
- *
- * @return void
- */
- public function __set($name, $value);
-
- /**
- * The __set_state handler.
- *
- * @param string|array $dump
- *
- * @return static
- */
- #[ReturnTypeWillChange]
- public static function __set_state($dump);
-
- /**
- * Returns the list of properties to dump on serialize() called on.
- *
- * @return array
- */
- public function __sleep();
-
- /**
- * Format the instance as a string using the set format
- *
- * @example
- * ```
- * echo Carbon::now(); // Carbon instances can be casted to string
- * ```
- *
- * @return string
- */
- public function __toString();
-
- /**
- * Add given units or interval to the current instance.
- *
- * @example $date->add('hour', 3)
- * @example $date->add(15, 'days')
- * @example $date->add(CarbonInterval::days(4))
- *
- * @param string|DateInterval|Closure|CarbonConverterInterface $unit
- * @param int $value
- * @param bool|null $overflow
- *
- * @return static
- */
- #[ReturnTypeWillChange]
- public function add($unit, $value = 1, $overflow = null);
-
- /**
- * Add seconds to the instance using timestamp. Positive $value travels
- * forward while negative $value travels into the past.
- *
- * @param string $unit
- * @param int $value
- *
- * @return static
- */
- public function addRealUnit($unit, $value = 1);
-
- /**
- * Add given units to the current instance.
- *
- * @param string $unit
- * @param int $value
- * @param bool|null $overflow
- *
- * @return static
- */
- public function addUnit($unit, $value = 1, $overflow = null);
-
- /**
- * Add any unit to a new value without overflowing current other unit given.
- *
- * @param string $valueUnit unit name to modify
- * @param int $value amount to add to the input unit
- * @param string $overflowUnit unit name to not overflow
- *
- * @return static
- */
- public function addUnitNoOverflow($valueUnit, $value, $overflowUnit);
-
- /**
- * Get the difference in a human readable format in the current locale from an other
- * instance given to now
- *
- * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains:
- * - 'syntax' entry (see below)
- * - 'short' entry (see below)
- * - 'parts' entry (see below)
- * - 'options' entry (see below)
- * - 'join' entry determines how to join multiple parts of the string
- * ` - if $join is a string, it's used as a joiner glue
- * ` - if $join is a callable/closure, it get the list of string and should return a string
- * ` - if $join is an array, the first item will be the default glue, and the second item
- * ` will be used instead of the glue for the last item
- * ` - if $join is true, it will be guessed from the locale ('list' translation file entry)
- * ` - if $join is missing, a space will be used as glue
- * if int passed, it add modifiers:
- * Possible values:
- * - CarbonInterface::DIFF_ABSOLUTE no modifiers
- * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier
- * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier
- * Default value: CarbonInterface::DIFF_ABSOLUTE
- * @param bool $short displays short format of time units
- * @param int $parts maximum number of parts to display (default value: 1: single part)
- * @param int $options human diff options
- *
- * @return string
- */
- public function ago($syntax = null, $short = false, $parts = 1, $options = null);
-
- /**
- * Modify the current instance to the average of a given instance (default now) and the current instance
- * (second-precision).
- *
- * @param \Carbon\Carbon|\DateTimeInterface|null $date
- *
- * @return static
- */
- public function average($date = null);
-
- /**
- * Clone the current instance if it's mutable.
- *
- * This method is convenient to ensure you don't mutate the initial object
- * but avoid to make a useless copy of it if it's already immutable.
- *
- * @return static
- */
- public function avoidMutation();
-
- /**
- * Determines if the instance is between two others.
- *
- * The third argument allow you to specify if bounds are included or not (true by default)
- * but for when you including/excluding bounds may produce different results in your application,
- * we recommend to use the explicit methods ->betweenIncluded() or ->betweenExcluded() instead.
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25')->between('2018-07-14', '2018-08-01'); // true
- * Carbon::parse('2018-07-25')->between('2018-08-01', '2018-08-20'); // false
- * Carbon::parse('2018-07-25')->between('2018-07-25', '2018-08-01'); // true
- * Carbon::parse('2018-07-25')->between('2018-07-25', '2018-08-01', false); // false
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2
- * @param bool $equal Indicates if an equal to comparison should be done
- *
- * @return bool
- */
- public function between($date1, $date2, $equal = true): bool;
-
- /**
- * Determines if the instance is between two others, bounds excluded.
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25')->betweenExcluded('2018-07-14', '2018-08-01'); // true
- * Carbon::parse('2018-07-25')->betweenExcluded('2018-08-01', '2018-08-20'); // false
- * Carbon::parse('2018-07-25')->betweenExcluded('2018-07-25', '2018-08-01'); // false
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2
- *
- * @return bool
- */
- public function betweenExcluded($date1, $date2): bool;
-
- /**
- * Determines if the instance is between two others, bounds included.
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25')->betweenIncluded('2018-07-14', '2018-08-01'); // true
- * Carbon::parse('2018-07-25')->betweenIncluded('2018-08-01', '2018-08-20'); // false
- * Carbon::parse('2018-07-25')->betweenIncluded('2018-07-25', '2018-08-01'); // true
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2
- *
- * @return bool
- */
- public function betweenIncluded($date1, $date2): bool;
-
- /**
- * Returns either day of week + time (e.g. "Last Friday at 3:30 PM") if reference time is within 7 days,
- * or a calendar date (e.g. "10/29/2017") otherwise.
- *
- * Language, date and time formats will change according to the current locale.
- *
- * @param Carbon|\DateTimeInterface|string|null $referenceTime
- * @param array $formats
- *
- * @return string
- */
- public function calendar($referenceTime = null, array $formats = []);
-
- /**
- * Checks if the (date)time string is in a given format and valid to create a
- * new instance.
- *
- * @example
- * ```
- * Carbon::canBeCreatedFromFormat('11:12:45', 'h:i:s'); // true
- * Carbon::canBeCreatedFromFormat('13:12:45', 'h:i:s'); // false
- * ```
- *
- * @param string $date
- * @param string $format
- *
- * @return bool
- */
- public static function canBeCreatedFromFormat($date, $format);
-
- /**
- * Return the Carbon instance passed through, a now instance in the same timezone
- * if null given or parse the input if string given.
- *
- * @param Carbon|\Carbon\CarbonPeriod|\Carbon\CarbonInterval|\DateInterval|\DatePeriod|DateTimeInterface|string|null $date
- *
- * @return static
- */
- public function carbonize($date = null);
-
- /**
- * Cast the current instance into the given class.
- *
- * @param string $className The $className::instance() method will be called to cast the current object.
- *
- * @return DateTimeInterface
- */
- public function cast(string $className);
-
- /**
- * Ceil the current instance second with given precision if specified.
- *
- * @param float|int|string|\DateInterval|null $precision
- *
- * @return CarbonInterface
- */
- public function ceil($precision = 1);
-
- /**
- * Ceil the current instance at the given unit with given precision if specified.
- *
- * @param string $unit
- * @param float|int $precision
- *
- * @return CarbonInterface
- */
- public function ceilUnit($unit, $precision = 1);
-
- /**
- * Ceil the current instance week.
- *
- * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week
- *
- * @return CarbonInterface
- */
- public function ceilWeek($weekStartsAt = null);
-
- /**
- * Similar to native modify() method of DateTime but can handle more grammars.
- *
- * @example
- * ```
- * echo Carbon::now()->change('next 2pm');
- * ```
- *
- * @link https://php.net/manual/en/datetime.modify.php
- *
- * @param string $modifier
- *
- * @return static
- */
- public function change($modifier);
-
- /**
- * Cleanup properties attached to the public scope of DateTime when a dump of the date is requested.
- * foreach ($date as $_) {}
- * serializer($date)
- * var_export($date)
- * get_object_vars($date)
- */
- public function cleanupDumpProperties();
-
- /**
- * @alias copy
- *
- * Get a copy of the instance.
- *
- * @return static
- */
- public function clone();
-
- /**
- * Get the closest date from the instance (second-precision).
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2
- *
- * @return static
- */
- public function closest($date1, $date2);
-
- /**
- * Get a copy of the instance.
- *
- * @return static
- */
- public function copy();
-
- /**
- * Create a new Carbon instance from a specific date and time.
- *
- * If any of $year, $month or $day are set to null their now() values will
- * be used.
- *
- * If $hour is null it will be set to its now() value and the default
- * values for $minute and $second will be their now() values.
- *
- * If $hour is not null then the default values for $minute and $second
- * will be 0.
- *
- * @param int|null $year
- * @param int|null $month
- * @param int|null $day
- * @param int|null $hour
- * @param int|null $minute
- * @param int|null $second
- * @param DateTimeZone|string|null $tz
- *
- * @throws InvalidFormatException
- *
- * @return static|false
- */
- public static function create($year = 0, $month = 1, $day = 1, $hour = 0, $minute = 0, $second = 0, $tz = null);
-
- /**
- * Create a Carbon instance from just a date. The time portion is set to now.
- *
- * @param int|null $year
- * @param int|null $month
- * @param int|null $day
- * @param DateTimeZone|string|null $tz
- *
- * @throws InvalidFormatException
- *
- * @return static
- */
- public static function createFromDate($year = null, $month = null, $day = null, $tz = null);
-
- /**
- * Create a Carbon instance from a specific format.
- *
- * @param string $format Datetime format
- * @param string $time
- * @param DateTimeZone|string|false|null $tz
- *
- * @throws InvalidFormatException
- *
- * @return static|false
- */
- #[ReturnTypeWillChange]
- public static function createFromFormat($format, $time, $tz = null);
-
- /**
- * Create a Carbon instance from a specific ISO format (same replacements as ->isoFormat()).
- *
- * @param string $format Datetime format
- * @param string $time
- * @param DateTimeZone|string|false|null $tz optional timezone
- * @param string|null $locale locale to be used for LTS, LT, LL, LLL, etc. macro-formats (en by fault, unneeded if no such macro-format in use)
- * @param \Symfony\Component\Translation\TranslatorInterface $translator optional custom translator to use for macro-formats
- *
- * @throws InvalidFormatException
- *
- * @return static|false
- */
- public static function createFromIsoFormat($format, $time, $tz = null, $locale = 'en', $translator = null);
-
- /**
- * Create a Carbon instance from a specific format and a string in a given language.
- *
- * @param string $format Datetime format
- * @param string $locale
- * @param string $time
- * @param DateTimeZone|string|false|null $tz
- *
- * @throws InvalidFormatException
- *
- * @return static|false
- */
- public static function createFromLocaleFormat($format, $locale, $time, $tz = null);
-
- /**
- * Create a Carbon instance from a specific ISO format and a string in a given language.
- *
- * @param string $format Datetime ISO format
- * @param string $locale
- * @param string $time
- * @param DateTimeZone|string|false|null $tz
- *
- * @throws InvalidFormatException
- *
- * @return static|false
- */
- public static function createFromLocaleIsoFormat($format, $locale, $time, $tz = null);
-
- /**
- * Create a Carbon instance from just a time. The date portion is set to today.
- *
- * @param int|null $hour
- * @param int|null $minute
- * @param int|null $second
- * @param DateTimeZone|string|null $tz
- *
- * @throws InvalidFormatException
- *
- * @return static
- */
- public static function createFromTime($hour = 0, $minute = 0, $second = 0, $tz = null);
-
- /**
- * Create a Carbon instance from a time string. The date portion is set to today.
- *
- * @param string $time
- * @param DateTimeZone|string|null $tz
- *
- * @throws InvalidFormatException
- *
- * @return static
- */
- public static function createFromTimeString($time, $tz = null);
-
- /**
- * Create a Carbon instance from a timestamp and set the timezone (use default one if not specified).
- *
- * Timestamp input can be given as int, float or a string containing one or more numbers.
- *
- * @param float|int|string $timestamp
- * @param \DateTimeZone|string|null $tz
- *
- * @return static
- */
- public static function createFromTimestamp($timestamp, $tz = null);
-
- /**
- * Create a Carbon instance from a timestamp in milliseconds.
- *
- * Timestamp input can be given as int, float or a string containing one or more numbers.
- *
- * @param float|int|string $timestamp
- * @param \DateTimeZone|string|null $tz
- *
- * @return static
- */
- public static function createFromTimestampMs($timestamp, $tz = null);
-
- /**
- * Create a Carbon instance from a timestamp in milliseconds.
- *
- * Timestamp input can be given as int, float or a string containing one or more numbers.
- *
- * @param float|int|string $timestamp
- *
- * @return static
- */
- public static function createFromTimestampMsUTC($timestamp);
-
- /**
- * Create a Carbon instance from an timestamp keeping the timezone to UTC.
- *
- * Timestamp input can be given as int, float or a string containing one or more numbers.
- *
- * @param float|int|string $timestamp
- *
- * @return static
- */
- public static function createFromTimestampUTC($timestamp);
-
- /**
- * Create a Carbon instance from just a date. The time portion is set to midnight.
- *
- * @param int|null $year
- * @param int|null $month
- * @param int|null $day
- * @param DateTimeZone|string|null $tz
- *
- * @throws InvalidFormatException
- *
- * @return static
- */
- public static function createMidnightDate($year = null, $month = null, $day = null, $tz = null);
-
- /**
- * Create a new safe Carbon instance from a specific date and time.
- *
- * If any of $year, $month or $day are set to null their now() values will
- * be used.
- *
- * If $hour is null it will be set to its now() value and the default
- * values for $minute and $second will be their now() values.
- *
- * If $hour is not null then the default values for $minute and $second
- * will be 0.
- *
- * If one of the set values is not valid, an InvalidDateException
- * will be thrown.
- *
- * @param int|null $year
- * @param int|null $month
- * @param int|null $day
- * @param int|null $hour
- * @param int|null $minute
- * @param int|null $second
- * @param DateTimeZone|string|null $tz
- *
- * @throws InvalidDateException
- *
- * @return static|false
- */
- public static function createSafe($year = null, $month = null, $day = null, $hour = null, $minute = null, $second = null, $tz = null);
-
- /**
- * Create a new Carbon instance from a specific date and time using strict validation.
- *
- * @see create()
- *
- * @param int|null $year
- * @param int|null $month
- * @param int|null $day
- * @param int|null $hour
- * @param int|null $minute
- * @param int|null $second
- * @param DateTimeZone|string|null $tz
- *
- * @throws InvalidFormatException
- *
- * @return static
- */
- public static function createStrict(?int $year = 0, ?int $month = 1, ?int $day = 1, ?int $hour = 0, ?int $minute = 0, ?int $second = 0, $tz = null);
-
- /**
- * Get/set the day of year.
- *
- * @param int|null $value new value for day of year if using as setter.
- *
- * @return static|int
- */
- public function dayOfYear($value = null);
-
- /**
- * Get the difference as a CarbonInterval instance.
- * Return absolute interval (always positive) unless you pass false to the second argument.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return CarbonInterval
- */
- public function diffAsCarbonInterval($date = null, $absolute = true);
-
- /**
- * Get the difference by the given interval using a filter closure.
- *
- * @param CarbonInterval $ci An interval to traverse by
- * @param Closure $callback
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffFiltered(CarbonInterval $ci, Closure $callback, $date = null, $absolute = true);
-
- /**
- * Get the difference in a human readable format in the current locale from current instance to an other
- * instance given (or now if null given).
- *
- * @example
- * ```
- * echo Carbon::tomorrow()->diffForHumans() . "\n";
- * echo Carbon::tomorrow()->diffForHumans(['parts' => 2]) . "\n";
- * echo Carbon::tomorrow()->diffForHumans(['parts' => 3, 'join' => true]) . "\n";
- * echo Carbon::tomorrow()->diffForHumans(Carbon::yesterday()) . "\n";
- * echo Carbon::tomorrow()->diffForHumans(Carbon::yesterday(), ['short' => true]) . "\n";
- * ```
- *
- * @param Carbon|\DateTimeInterface|string|array|null $other if array passed, will be used as parameters array, see $syntax below;
- * if null passed, now will be used as comparison reference;
- * if any other type, it will be converted to date and used as reference.
- * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains:
- * - 'syntax' entry (see below)
- * - 'short' entry (see below)
- * - 'parts' entry (see below)
- * - 'options' entry (see below)
- * - 'join' entry determines how to join multiple parts of the string
- * ` - if $join is a string, it's used as a joiner glue
- * ` - if $join is a callable/closure, it get the list of string and should return a string
- * ` - if $join is an array, the first item will be the default glue, and the second item
- * ` will be used instead of the glue for the last item
- * ` - if $join is true, it will be guessed from the locale ('list' translation file entry)
- * ` - if $join is missing, a space will be used as glue
- * - 'other' entry (see above)
- * if int passed, it add modifiers:
- * Possible values:
- * - CarbonInterface::DIFF_ABSOLUTE no modifiers
- * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier
- * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier
- * Default value: CarbonInterface::DIFF_ABSOLUTE
- * @param bool $short displays short format of time units
- * @param int $parts maximum number of parts to display (default value: 1: single unit)
- * @param int $options human diff options
- *
- * @return string
- */
- public function diffForHumans($other = null, $syntax = null, $short = false, $parts = 1, $options = null);
-
- /**
- * Get the difference in days rounded down.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInDays($date = null, $absolute = true);
-
- /**
- * Get the difference in days using a filter closure rounded down.
- *
- * @param Closure $callback
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInDaysFiltered(Closure $callback, $date = null, $absolute = true);
-
- /**
- * Get the difference in hours rounded down.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInHours($date = null, $absolute = true);
-
- /**
- * Get the difference in hours using a filter closure rounded down.
- *
- * @param Closure $callback
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInHoursFiltered(Closure $callback, $date = null, $absolute = true);
-
- /**
- * Get the difference in microseconds.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInMicroseconds($date = null, $absolute = true);
-
- /**
- * Get the difference in milliseconds rounded down.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInMilliseconds($date = null, $absolute = true);
-
- /**
- * Get the difference in minutes rounded down.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInMinutes($date = null, $absolute = true);
-
- /**
- * Get the difference in months rounded down.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInMonths($date = null, $absolute = true);
-
- /**
- * Get the difference in quarters rounded down.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInQuarters($date = null, $absolute = true);
-
- /**
- * Get the difference in hours rounded down using timestamps.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInRealHours($date = null, $absolute = true);
-
- /**
- * Get the difference in microseconds using timestamps.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInRealMicroseconds($date = null, $absolute = true);
-
- /**
- * Get the difference in milliseconds rounded down using timestamps.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInRealMilliseconds($date = null, $absolute = true);
-
- /**
- * Get the difference in minutes rounded down using timestamps.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInRealMinutes($date = null, $absolute = true);
-
- /**
- * Get the difference in seconds using timestamps.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInRealSeconds($date = null, $absolute = true);
-
- /**
- * Get the difference in seconds rounded down.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInSeconds($date = null, $absolute = true);
-
- /**
- * Get the difference in weekdays rounded down.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInWeekdays($date = null, $absolute = true);
-
- /**
- * Get the difference in weekend days using a filter rounded down.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInWeekendDays($date = null, $absolute = true);
-
- /**
- * Get the difference in weeks rounded down.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInWeeks($date = null, $absolute = true);
-
- /**
- * Get the difference in years
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInYears($date = null, $absolute = true);
-
- /**
- * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * @see settings
- *
- * @param int $humanDiffOption
- */
- public static function disableHumanDiffOption($humanDiffOption);
-
- /**
- * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * @see settings
- *
- * @param int $humanDiffOption
- */
- public static function enableHumanDiffOption($humanDiffOption);
-
- /**
- * Modify to end of current given unit.
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16.334455')
- * ->startOf('month')
- * ->endOf('week', Carbon::FRIDAY);
- * ```
- *
- * @param string $unit
- * @param array $params
- *
- * @return static
- */
- public function endOf($unit, ...$params);
-
- /**
- * Resets the date to end of the century and time to 23:59:59.999999
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->endOfCentury();
- * ```
- *
- * @return static
- */
- public function endOfCentury();
-
- /**
- * Resets the time to 23:59:59.999999 end of day
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->endOfDay();
- * ```
- *
- * @return static
- */
- public function endOfDay();
-
- /**
- * Resets the date to end of the decade and time to 23:59:59.999999
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->endOfDecade();
- * ```
- *
- * @return static
- */
- public function endOfDecade();
-
- /**
- * Modify to end of current hour, minutes and seconds become 59
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->endOfHour();
- * ```
- *
- * @return static
- */
- public function endOfHour();
-
- /**
- * Resets the date to end of the millennium and time to 23:59:59.999999
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->endOfMillennium();
- * ```
- *
- * @return static
- */
- public function endOfMillennium();
-
- /**
- * Modify to end of current minute, seconds become 59
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->endOfMinute();
- * ```
- *
- * @return static
- */
- public function endOfMinute();
-
- /**
- * Resets the date to end of the month and time to 23:59:59.999999
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->endOfMonth();
- * ```
- *
- * @return static
- */
- public function endOfMonth();
-
- /**
- * Resets the date to end of the quarter and time to 23:59:59.999999
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->endOfQuarter();
- * ```
- *
- * @return static
- */
- public function endOfQuarter();
-
- /**
- * Modify to end of current second, microseconds become 999999
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16.334455')
- * ->endOfSecond()
- * ->format('H:i:s.u');
- * ```
- *
- * @return static
- */
- public function endOfSecond();
-
- /**
- * Resets the date to end of week (defined in $weekEndsAt) and time to 23:59:59.999999
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->endOfWeek() . "\n";
- * echo Carbon::parse('2018-07-25 12:45:16')->locale('ar')->endOfWeek() . "\n";
- * echo Carbon::parse('2018-07-25 12:45:16')->endOfWeek(Carbon::SATURDAY) . "\n";
- * ```
- *
- * @param int $weekEndsAt optional start allow you to specify the day of week to use to end the week
- *
- * @return static
- */
- public function endOfWeek($weekEndsAt = null);
-
- /**
- * Resets the date to end of the year and time to 23:59:59.999999
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->endOfYear();
- * ```
- *
- * @return static
- */
- public function endOfYear();
-
- /**
- * Determines if the instance is equal to another
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25 12:45:16')->eq('2018-07-25 12:45:16'); // true
- * Carbon::parse('2018-07-25 12:45:16')->eq(Carbon::parse('2018-07-25 12:45:16')); // true
- * Carbon::parse('2018-07-25 12:45:16')->eq('2018-07-25 12:45:17'); // false
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @see equalTo()
- *
- * @return bool
- */
- public function eq($date): bool;
-
- /**
- * Determines if the instance is equal to another
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25 12:45:16')->equalTo('2018-07-25 12:45:16'); // true
- * Carbon::parse('2018-07-25 12:45:16')->equalTo(Carbon::parse('2018-07-25 12:45:16')); // true
- * Carbon::parse('2018-07-25 12:45:16')->equalTo('2018-07-25 12:45:17'); // false
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @return bool
- */
- public function equalTo($date): bool;
-
- /**
- * Set the current locale to the given, execute the passed function, reset the locale to previous one,
- * then return the result of the closure (or null if the closure was void).
- *
- * @param string $locale locale ex. en
- * @param callable $func
- *
- * @return mixed
- */
- public static function executeWithLocale($locale, $func);
-
- /**
- * Get the farthest date from the instance (second-precision).
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2
- *
- * @return static
- */
- public function farthest($date1, $date2);
-
- /**
- * Modify to the first occurrence of a given day of the week
- * in the current month. If no dayOfWeek is provided, modify to the
- * first day of the current month. Use the supplied constants
- * to indicate the desired dayOfWeek, ex. static::MONDAY.
- *
- * @param int|null $dayOfWeek
- *
- * @return static
- */
- public function firstOfMonth($dayOfWeek = null);
-
- /**
- * Modify to the first occurrence of a given day of the week
- * in the current quarter. If no dayOfWeek is provided, modify to the
- * first day of the current quarter. Use the supplied constants
- * to indicate the desired dayOfWeek, ex. static::MONDAY.
- *
- * @param int|null $dayOfWeek day of the week default null
- *
- * @return static
- */
- public function firstOfQuarter($dayOfWeek = null);
-
- /**
- * Modify to the first occurrence of a given day of the week
- * in the current year. If no dayOfWeek is provided, modify to the
- * first day of the current year. Use the supplied constants
- * to indicate the desired dayOfWeek, ex. static::MONDAY.
- *
- * @param int|null $dayOfWeek day of the week default null
- *
- * @return static
- */
- public function firstOfYear($dayOfWeek = null);
-
- /**
- * Get the difference in days as float (microsecond-precision).
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return float
- */
- public function floatDiffInDays($date = null, $absolute = true);
-
- /**
- * Get the difference in hours as float (microsecond-precision).
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return float
- */
- public function floatDiffInHours($date = null, $absolute = true);
-
- /**
- * Get the difference in minutes as float (microsecond-precision).
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return float
- */
- public function floatDiffInMinutes($date = null, $absolute = true);
-
- /**
- * Get the difference in months as float (microsecond-precision).
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return float
- */
- public function floatDiffInMonths($date = null, $absolute = true);
-
- /**
- * Get the difference in days as float (microsecond-precision).
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return float
- */
- public function floatDiffInRealDays($date = null, $absolute = true);
-
- /**
- * Get the difference in hours as float (microsecond-precision) using timestamps.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return float
- */
- public function floatDiffInRealHours($date = null, $absolute = true);
-
- /**
- * Get the difference in minutes as float (microsecond-precision) using timestamps.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return float
- */
- public function floatDiffInRealMinutes($date = null, $absolute = true);
-
- /**
- * Get the difference in months as float (microsecond-precision) using timestamps.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return float
- */
- public function floatDiffInRealMonths($date = null, $absolute = true);
-
- /**
- * Get the difference in seconds as float (microsecond-precision) using timestamps.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return float
- */
- public function floatDiffInRealSeconds($date = null, $absolute = true);
-
- /**
- * Get the difference in weeks as float (microsecond-precision).
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return float
- */
- public function floatDiffInRealWeeks($date = null, $absolute = true);
-
- /**
- * Get the difference in year as float (microsecond-precision) using timestamps.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return float
- */
- public function floatDiffInRealYears($date = null, $absolute = true);
-
- /**
- * Get the difference in seconds as float (microsecond-precision).
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return float
- */
- public function floatDiffInSeconds($date = null, $absolute = true);
-
- /**
- * Get the difference in weeks as float (microsecond-precision).
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return float
- */
- public function floatDiffInWeeks($date = null, $absolute = true);
-
- /**
- * Get the difference in year as float (microsecond-precision).
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return float
- */
- public function floatDiffInYears($date = null, $absolute = true);
-
- /**
- * Round the current instance second with given precision if specified.
- *
- * @param float|int|string|\DateInterval|null $precision
- *
- * @return CarbonInterface
- */
- public function floor($precision = 1);
-
- /**
- * Truncate the current instance at the given unit with given precision if specified.
- *
- * @param string $unit
- * @param float|int $precision
- *
- * @return CarbonInterface
- */
- public function floorUnit($unit, $precision = 1);
-
- /**
- * Truncate the current instance week.
- *
- * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week
- *
- * @return CarbonInterface
- */
- public function floorWeek($weekStartsAt = null);
-
- /**
- * Format the instance with the current locale. You can set the current
- * locale using setlocale() https://php.net/setlocale.
- *
- * @param string $format
- *
- * @return string
- */
- public function formatLocalized($format);
-
- /**
- * @alias diffForHumans
- *
- * Get the difference in a human readable format in the current locale from current instance to an other
- * instance given (or now if null given).
- *
- * @param Carbon|\DateTimeInterface|string|array|null $other if array passed, will be used as parameters array, see $syntax below;
- * if null passed, now will be used as comparison reference;
- * if any other type, it will be converted to date and used as reference.
- * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains:
- * - 'syntax' entry (see below)
- * - 'short' entry (see below)
- * - 'parts' entry (see below)
- * - 'options' entry (see below)
- * - 'join' entry determines how to join multiple parts of the string
- * ` - if $join is a string, it's used as a joiner glue
- * ` - if $join is a callable/closure, it get the list of string and should return a string
- * ` - if $join is an array, the first item will be the default glue, and the second item
- * ` will be used instead of the glue for the last item
- * ` - if $join is true, it will be guessed from the locale ('list' translation file entry)
- * ` - if $join is missing, a space will be used as glue
- * - 'other' entry (see above)
- * if int passed, it add modifiers:
- * Possible values:
- * - CarbonInterface::DIFF_ABSOLUTE no modifiers
- * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier
- * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier
- * Default value: CarbonInterface::DIFF_ABSOLUTE
- * @param bool $short displays short format of time units
- * @param int $parts maximum number of parts to display (default value: 1: single unit)
- * @param int $options human diff options
- *
- * @return string
- */
- public function from($other = null, $syntax = null, $short = false, $parts = 1, $options = null);
-
- /**
- * Get the difference in a human readable format in the current locale from current
- * instance to now.
- *
- * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains:
- * - 'syntax' entry (see below)
- * - 'short' entry (see below)
- * - 'parts' entry (see below)
- * - 'options' entry (see below)
- * - 'join' entry determines how to join multiple parts of the string
- * ` - if $join is a string, it's used as a joiner glue
- * ` - if $join is a callable/closure, it get the list of string and should return a string
- * ` - if $join is an array, the first item will be the default glue, and the second item
- * ` will be used instead of the glue for the last item
- * ` - if $join is true, it will be guessed from the locale ('list' translation file entry)
- * ` - if $join is missing, a space will be used as glue
- * if int passed, it add modifiers:
- * Possible values:
- * - CarbonInterface::DIFF_ABSOLUTE no modifiers
- * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier
- * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier
- * Default value: CarbonInterface::DIFF_ABSOLUTE
- * @param bool $short displays short format of time units
- * @param int $parts maximum number of parts to display (default value: 1: single unit)
- * @param int $options human diff options
- *
- * @return string
- */
- public function fromNow($syntax = null, $short = false, $parts = 1, $options = null);
-
- /**
- * Create an instance from a serialized string.
- *
- * @param string $value
- *
- * @throws InvalidFormatException
- *
- * @return static
- */
- public static function fromSerialized($value);
-
- /**
- * Register a custom macro.
- *
- * @param object|callable $macro
- * @param int $priority marco with higher priority is tried first
- *
- * @return void
- */
- public static function genericMacro($macro, $priority = 0);
-
- /**
- * Get a part of the Carbon object
- *
- * @param string $name
- *
- * @throws UnknownGetterException
- *
- * @return string|int|bool|DateTimeZone|null
- */
- public function get($name);
-
- /**
- * Returns the alternative number for a given date property if available in the current locale.
- *
- * @param string $key date property
- *
- * @return string
- */
- public function getAltNumber(string $key): string;
-
- /**
- * Returns the list of internally available locales and already loaded custom locales.
- * (It will ignore custom translator dynamic loading.)
- *
- * @return array
- */
- public static function getAvailableLocales();
-
- /**
- * Returns list of Language object for each available locale. This object allow you to get the ISO name, native
- * name, region and variant of the locale.
- *
- * @return Language[]
- */
- public static function getAvailableLocalesInfo();
-
- /**
- * Returns list of calendar formats for ISO formatting.
- *
- * @param string|null $locale current locale used if null
- *
- * @return array
- */
- public function getCalendarFormats($locale = null);
-
- /**
- * Get the days of the week
- *
- * @return array
- */
- public static function getDays();
-
- /**
- * Get the fallback locale.
- *
- * @see https://symfony.com/doc/current/components/translation.html#fallback-locales
- *
- * @return string|null
- */
- public static function getFallbackLocale();
-
- /**
- * List of replacements from date() format to isoFormat().
- *
- * @return array
- */
- public static function getFormatsToIsoReplacements();
-
- /**
- * Return default humanDiff() options (merged flags as integer).
- *
- * @return int
- */
- public static function getHumanDiffOptions();
-
- /**
- * Returns list of locale formats for ISO formatting.
- *
- * @param string|null $locale current locale used if null
- *
- * @return array
- */
- public function getIsoFormats($locale = null);
-
- /**
- * Returns list of locale units for ISO formatting.
- *
- * @return array
- */
- public static function getIsoUnits();
-
- /**
- * {@inheritdoc}
- *
- * @return array
- */
- #[ReturnTypeWillChange]
- public static function getLastErrors();
-
- /**
- * Get the raw callable macro registered globally or locally for a given name.
- *
- * @param string $name
- *
- * @return callable|null
- */
- public function getLocalMacro($name);
-
- /**
- * Get the translator of the current instance or the default if none set.
- *
- * @return \Symfony\Component\Translation\TranslatorInterface
- */
- public function getLocalTranslator();
-
- /**
- * Get the current translator locale.
- *
- * @return string
- */
- public static function getLocale();
-
- /**
- * Get the raw callable macro registered globally for a given name.
- *
- * @param string $name
- *
- * @return callable|null
- */
- public static function getMacro($name);
-
- /**
- * get midday/noon hour
- *
- * @return int
- */
- public static function getMidDayAt();
-
- /**
- * Returns the offset hour and minute formatted with +/- and a given separator (":" by default).
- * For example, if the time zone is 9 hours 30 minutes, you'll get "+09:30", with "@@" as first
- * argument, "+09@@30", with "" as first argument, "+0930". Negative offset will return something
- * like "-12:00".
- *
- * @param string $separator string to place between hours and minutes (":" by default)
- *
- * @return string
- */
- public function getOffsetString($separator = ':');
-
- /**
- * Returns a unit of the instance padded with 0 by default or any other string if specified.
- *
- * @param string $unit Carbon unit name
- * @param int $length Length of the output (2 by default)
- * @param string $padString String to use for padding ("0" by default)
- * @param int $padType Side(s) to pad (STR_PAD_LEFT by default)
- *
- * @return string
- */
- public function getPaddedUnit($unit, $length = 2, $padString = '0', $padType = 0);
-
- /**
- * Returns a timestamp rounded with the given precision (6 by default).
- *
- * @example getPreciseTimestamp() 1532087464437474 (microsecond maximum precision)
- * @example getPreciseTimestamp(6) 1532087464437474
- * @example getPreciseTimestamp(5) 153208746443747 (1/100000 second precision)
- * @example getPreciseTimestamp(4) 15320874644375 (1/10000 second precision)
- * @example getPreciseTimestamp(3) 1532087464437 (millisecond precision)
- * @example getPreciseTimestamp(2) 153208746444 (1/100 second precision)
- * @example getPreciseTimestamp(1) 15320874644 (1/10 second precision)
- * @example getPreciseTimestamp(0) 1532087464 (second precision)
- * @example getPreciseTimestamp(-1) 153208746 (10 second precision)
- * @example getPreciseTimestamp(-2) 15320875 (100 second precision)
- *
- * @param int $precision
- *
- * @return float
- */
- public function getPreciseTimestamp($precision = 6);
-
- /**
- * Returns current local settings.
- *
- * @return array
- */
- public function getSettings();
-
- /**
- * Get the Carbon instance (real or mock) to be returned when a "now"
- * instance is created.
- *
- * @return Closure|static the current instance used for testing
- */
- public static function getTestNow();
-
- /**
- * Return a format from H:i to H:i:s.u according to given unit precision.
- *
- * @param string $unitPrecision "minute", "second", "millisecond" or "microsecond"
- *
- * @return string
- */
- public static function getTimeFormatByPrecision($unitPrecision);
-
- /**
- * Returns the timestamp with millisecond precision.
- *
- * @return int
- */
- public function getTimestampMs();
-
- /**
- * Get the translation of the current week day name (with context for languages with multiple forms).
- *
- * @param string|null $context whole format string
- * @param string $keySuffix "", "_short" or "_min"
- * @param string|null $defaultValue default value if translation missing
- *
- * @return string
- */
- public function getTranslatedDayName($context = null, $keySuffix = '', $defaultValue = null);
-
- /**
- * Get the translation of the current abbreviated week day name (with context for languages with multiple forms).
- *
- * @param string|null $context whole format string
- *
- * @return string
- */
- public function getTranslatedMinDayName($context = null);
-
- /**
- * Get the translation of the current month day name (with context for languages with multiple forms).
- *
- * @param string|null $context whole format string
- * @param string $keySuffix "" or "_short"
- * @param string|null $defaultValue default value if translation missing
- *
- * @return string
- */
- public function getTranslatedMonthName($context = null, $keySuffix = '', $defaultValue = null);
-
- /**
- * Get the translation of the current short week day name (with context for languages with multiple forms).
- *
- * @param string|null $context whole format string
- *
- * @return string
- */
- public function getTranslatedShortDayName($context = null);
-
- /**
- * Get the translation of the current short month day name (with context for languages with multiple forms).
- *
- * @param string|null $context whole format string
- *
- * @return string
- */
- public function getTranslatedShortMonthName($context = null);
-
- /**
- * Returns raw translation message for a given key.
- *
- * @param string $key key to find
- * @param string|null $locale current locale used if null
- * @param string|null $default default value if translation returns the key
- * @param \Symfony\Component\Translation\TranslatorInterface $translator an optional translator to use
- *
- * @return string
- */
- public function getTranslationMessage(string $key, ?string $locale = null, ?string $default = null, $translator = null);
-
- /**
- * Returns raw translation message for a given key.
- *
- * @param \Symfony\Component\Translation\TranslatorInterface $translator the translator to use
- * @param string $key key to find
- * @param string|null $locale current locale used if null
- * @param string|null $default default value if translation returns the key
- *
- * @return string
- */
- public static function getTranslationMessageWith($translator, string $key, ?string $locale = null, ?string $default = null);
-
- /**
- * Get the default translator instance in use.
- *
- * @return \Symfony\Component\Translation\TranslatorInterface
- */
- public static function getTranslator();
-
- /**
- * Get the last day of week
- *
- * @return int
- */
- public static function getWeekEndsAt();
-
- /**
- * Get the first day of week
- *
- * @return int
- */
- public static function getWeekStartsAt();
-
- /**
- * Get weekend days
- *
- * @return array
- */
- public static function getWeekendDays();
-
- /**
- * Determines if the instance is greater (after) than another
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:15'); // true
- * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:16'); // false
- * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:17'); // false
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @return bool
- */
- public function greaterThan($date): bool;
-
- /**
- * Determines if the instance is greater (after) than or equal to another
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:15'); // true
- * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:16'); // true
- * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:17'); // false
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @return bool
- */
- public function greaterThanOrEqualTo($date): bool;
-
- /**
- * Determines if the instance is greater (after) than another
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:15'); // true
- * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:16'); // false
- * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:17'); // false
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @see greaterThan()
- *
- * @return bool
- */
- public function gt($date): bool;
-
- /**
- * Determines if the instance is greater (after) than or equal to another
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:15'); // true
- * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:16'); // true
- * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:17'); // false
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @see greaterThanOrEqualTo()
- *
- * @return bool
- */
- public function gte($date): bool;
-
- /**
- * Checks if the (date)time string is in a given format.
- *
- * @example
- * ```
- * Carbon::hasFormat('11:12:45', 'h:i:s'); // true
- * Carbon::hasFormat('13:12:45', 'h:i:s'); // false
- * ```
- *
- * @param string $date
- * @param string $format
- *
- * @return bool
- */
- public static function hasFormat($date, $format);
-
- /**
- * Checks if the (date)time string is in a given format.
- *
- * @example
- * ```
- * Carbon::hasFormatWithModifiers('31/08/2015', 'd#m#Y'); // true
- * Carbon::hasFormatWithModifiers('31/08/2015', 'm#d#Y'); // false
- * ```
- *
- * @param string $date
- * @param string $format
- *
- * @return bool
- */
- public static function hasFormatWithModifiers($date, $format): bool;
-
- /**
- * Checks if macro is registered globally or locally.
- *
- * @param string $name
- *
- * @return bool
- */
- public function hasLocalMacro($name);
-
- /**
- * Return true if the current instance has its own translator.
- *
- * @return bool
- */
- public function hasLocalTranslator();
-
- /**
- * Checks if macro is registered globally.
- *
- * @param string $name
- *
- * @return bool
- */
- public static function hasMacro($name);
-
- /**
- * Determine if a time string will produce a relative date.
- *
- * @param string $time
- *
- * @return bool true if time match a relative date, false if absolute or invalid time string
- */
- public static function hasRelativeKeywords($time);
-
- /**
- * Determine if there is a valid test instance set. A valid test instance
- * is anything that is not null.
- *
- * @return bool true if there is a test instance, otherwise false
- */
- public static function hasTestNow();
-
- /**
- * Create a Carbon instance from a DateTime one.
- *
- * @param DateTimeInterface $date
- *
- * @return static
- */
- public static function instance($date);
-
- /**
- * Returns true if the current date matches the given string.
- *
- * @example
- * ```
- * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2019')); // true
- * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2018')); // false
- * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2019-06')); // true
- * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('06-02')); // true
- * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2019-06-02')); // true
- * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('Sunday')); // true
- * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('June')); // true
- * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12:23')); // true
- * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12:23:45')); // true
- * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12:23:00')); // false
- * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12h')); // true
- * var_dump(Carbon::parse('2019-06-02 15:23:45')->is('3pm')); // true
- * var_dump(Carbon::parse('2019-06-02 15:23:45')->is('3am')); // false
- * ```
- *
- * @param string $tester day name, month name, hour, date, etc. as string
- *
- * @return bool
- */
- public function is(string $tester);
-
- /**
- * Determines if the instance is greater (after) than another
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:15'); // true
- * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:16'); // false
- * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:17'); // false
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @see greaterThan()
- *
- * @return bool
- */
- public function isAfter($date): bool;
-
- /**
- * Determines if the instance is less (before) than another
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:15'); // false
- * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:16'); // false
- * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:17'); // true
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @see lessThan()
- *
- * @return bool
- */
- public function isBefore($date): bool;
-
- /**
- * Determines if the instance is between two others
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25')->isBetween('2018-07-14', '2018-08-01'); // true
- * Carbon::parse('2018-07-25')->isBetween('2018-08-01', '2018-08-20'); // false
- * Carbon::parse('2018-07-25')->isBetween('2018-07-25', '2018-08-01'); // true
- * Carbon::parse('2018-07-25')->isBetween('2018-07-25', '2018-08-01', false); // false
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2
- * @param bool $equal Indicates if an equal to comparison should be done
- *
- * @return bool
- */
- public function isBetween($date1, $date2, $equal = true): bool;
-
- /**
- * Check if its the birthday. Compares the date/month values of the two dates.
- *
- * @example
- * ```
- * Carbon::now()->subYears(5)->isBirthday(); // true
- * Carbon::now()->subYears(5)->subDay()->isBirthday(); // false
- * Carbon::parse('2019-06-05')->isBirthday(Carbon::parse('2001-06-05')); // true
- * Carbon::parse('2019-06-05')->isBirthday(Carbon::parse('2001-06-06')); // false
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|null $date The instance to compare with or null to use current day.
- *
- * @return bool
- */
- public function isBirthday($date = null);
-
- /**
- * Determines if the instance is in the current unit given.
- *
- * @example
- * ```
- * Carbon::now()->isCurrentUnit('hour'); // true
- * Carbon::now()->subHours(2)->isCurrentUnit('hour'); // false
- * ```
- *
- * @param string $unit The unit to test.
- *
- * @throws BadMethodCallException
- *
- * @return bool
- */
- public function isCurrentUnit($unit);
-
- /**
- * Checks if this day is a specific day of the week.
- *
- * @example
- * ```
- * Carbon::parse('2019-07-17')->isDayOfWeek(Carbon::WEDNESDAY); // true
- * Carbon::parse('2019-07-17')->isDayOfWeek(Carbon::FRIDAY); // false
- * Carbon::parse('2019-07-17')->isDayOfWeek('Wednesday'); // true
- * Carbon::parse('2019-07-17')->isDayOfWeek('Friday'); // false
- * ```
- *
- * @param int $dayOfWeek
- *
- * @return bool
- */
- public function isDayOfWeek($dayOfWeek);
-
- /**
- * Check if the instance is end of day.
- *
- * @example
- * ```
- * Carbon::parse('2019-02-28 23:59:59.999999')->isEndOfDay(); // true
- * Carbon::parse('2019-02-28 23:59:59.123456')->isEndOfDay(); // true
- * Carbon::parse('2019-02-28 23:59:59')->isEndOfDay(); // true
- * Carbon::parse('2019-02-28 23:59:58.999999')->isEndOfDay(); // false
- * Carbon::parse('2019-02-28 23:59:59.999999')->isEndOfDay(true); // true
- * Carbon::parse('2019-02-28 23:59:59.123456')->isEndOfDay(true); // false
- * Carbon::parse('2019-02-28 23:59:59')->isEndOfDay(true); // false
- * ```
- *
- * @param bool $checkMicroseconds check time at microseconds precision
- *
- * @return bool
- */
- public function isEndOfDay($checkMicroseconds = false);
-
- /**
- * Returns true if the date was created using CarbonImmutable::endOfTime()
- *
- * @return bool
- */
- public function isEndOfTime(): bool;
-
- /**
- * Determines if the instance is in the future, ie. greater (after) than now.
- *
- * @example
- * ```
- * Carbon::now()->addHours(5)->isFuture(); // true
- * Carbon::now()->subHours(5)->isFuture(); // false
- * ```
- *
- * @return bool
- */
- public function isFuture();
-
- /**
- * Returns true if the current class/instance is immutable.
- *
- * @return bool
- */
- public static function isImmutable();
-
- /**
- * Check if today is the last day of the Month
- *
- * @example
- * ```
- * Carbon::parse('2019-02-28')->isLastOfMonth(); // true
- * Carbon::parse('2019-03-28')->isLastOfMonth(); // false
- * Carbon::parse('2019-03-30')->isLastOfMonth(); // false
- * Carbon::parse('2019-03-31')->isLastOfMonth(); // true
- * Carbon::parse('2019-04-30')->isLastOfMonth(); // true
- * ```
- *
- * @return bool
- */
- public function isLastOfMonth();
-
- /**
- * Determines if the instance is a leap year.
- *
- * @example
- * ```
- * Carbon::parse('2020-01-01')->isLeapYear(); // true
- * Carbon::parse('2019-01-01')->isLeapYear(); // false
- * ```
- *
- * @return bool
- */
- public function isLeapYear();
-
- /**
- * Determines if the instance is a long year
- *
- * @example
- * ```
- * Carbon::parse('2015-01-01')->isLongYear(); // true
- * Carbon::parse('2016-01-01')->isLongYear(); // false
- * ```
- *
- * @see https://en.wikipedia.org/wiki/ISO_8601#Week_dates
- *
- * @return bool
- */
- public function isLongYear();
-
- /**
- * Check if the instance is midday.
- *
- * @example
- * ```
- * Carbon::parse('2019-02-28 11:59:59.999999')->isMidday(); // false
- * Carbon::parse('2019-02-28 12:00:00')->isMidday(); // true
- * Carbon::parse('2019-02-28 12:00:00.999999')->isMidday(); // true
- * Carbon::parse('2019-02-28 12:00:01')->isMidday(); // false
- * ```
- *
- * @return bool
- */
- public function isMidday();
-
- /**
- * Check if the instance is start of day / midnight.
- *
- * @example
- * ```
- * Carbon::parse('2019-02-28 00:00:00')->isMidnight(); // true
- * Carbon::parse('2019-02-28 00:00:00.999999')->isMidnight(); // true
- * Carbon::parse('2019-02-28 00:00:01')->isMidnight(); // false
- * ```
- *
- * @return bool
- */
- public function isMidnight();
-
- /**
- * Returns true if a property can be changed via setter.
- *
- * @param string $unit
- *
- * @return bool
- */
- public static function isModifiableUnit($unit);
-
- /**
- * Returns true if the current class/instance is mutable.
- *
- * @return bool
- */
- public static function isMutable();
-
- /**
- * Determines if the instance is in the past, ie. less (before) than now.
- *
- * @example
- * ```
- * Carbon::now()->subHours(5)->isPast(); // true
- * Carbon::now()->addHours(5)->isPast(); // false
- * ```
- *
- * @return bool
- */
- public function isPast();
-
- /**
- * Compares the formatted values of the two dates.
- *
- * @example
- * ```
- * Carbon::parse('2019-06-13')->isSameAs('Y-d', Carbon::parse('2019-12-13')); // true
- * Carbon::parse('2019-06-13')->isSameAs('Y-d', Carbon::parse('2019-06-14')); // false
- * ```
- *
- * @param string $format date formats to compare.
- * @param \Carbon\Carbon|\DateTimeInterface|string|null $date instance to compare with or null to use current day.
- *
- * @return bool
- */
- public function isSameAs($format, $date = null);
-
- /**
- * Checks if the passed in date is in the same month as the instance´s month.
- *
- * @example
- * ```
- * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2019-01-01')); // true
- * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2019-02-01')); // false
- * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2018-01-01')); // false
- * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2018-01-01'), false); // true
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|null $date The instance to compare with or null to use the current date.
- * @param bool $ofSameYear Check if it is the same month in the same year.
- *
- * @return bool
- */
- public function isSameMonth($date = null, $ofSameYear = true);
-
- /**
- * Checks if the passed in date is in the same quarter as the instance quarter (and year if needed).
- *
- * @example
- * ```
- * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2019-03-01')); // true
- * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2019-04-01')); // false
- * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2018-03-01')); // false
- * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2018-03-01'), false); // true
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|string|null $date The instance to compare with or null to use current day.
- * @param bool $ofSameYear Check if it is the same month in the same year.
- *
- * @return bool
- */
- public function isSameQuarter($date = null, $ofSameYear = true);
-
- /**
- * Determines if the instance is in the current unit given.
- *
- * @example
- * ```
- * Carbon::parse('2019-01-13')->isSameUnit('year', Carbon::parse('2019-12-25')); // true
- * Carbon::parse('2018-12-13')->isSameUnit('year', Carbon::parse('2019-12-25')); // false
- * ```
- *
- * @param string $unit singular unit string
- * @param \Carbon\Carbon|\DateTimeInterface|null $date instance to compare with or null to use current day.
- *
- * @throws BadComparisonUnitException
- *
- * @return bool
- */
- public function isSameUnit($unit, $date = null);
-
- /**
- * Check if the instance is start of day / midnight.
- *
- * @example
- * ```
- * Carbon::parse('2019-02-28 00:00:00')->isStartOfDay(); // true
- * Carbon::parse('2019-02-28 00:00:00.999999')->isStartOfDay(); // true
- * Carbon::parse('2019-02-28 00:00:01')->isStartOfDay(); // false
- * Carbon::parse('2019-02-28 00:00:00.000000')->isStartOfDay(true); // true
- * Carbon::parse('2019-02-28 00:00:00.000012')->isStartOfDay(true); // false
- * ```
- *
- * @param bool $checkMicroseconds check time at microseconds precision
- *
- * @return bool
- */
- public function isStartOfDay($checkMicroseconds = false);
-
- /**
- * Returns true if the date was created using CarbonImmutable::startOfTime()
- *
- * @return bool
- */
- public function isStartOfTime(): bool;
-
- /**
- * Returns true if the strict mode is globally in use, false else.
- * (It can be overridden in specific instances.)
- *
- * @return bool
- */
- public static function isStrictModeEnabled();
-
- /**
- * Determines if the instance is today.
- *
- * @example
- * ```
- * Carbon::today()->isToday(); // true
- * Carbon::tomorrow()->isToday(); // false
- * ```
- *
- * @return bool
- */
- public function isToday();
-
- /**
- * Determines if the instance is tomorrow.
- *
- * @example
- * ```
- * Carbon::tomorrow()->isTomorrow(); // true
- * Carbon::yesterday()->isTomorrow(); // false
- * ```
- *
- * @return bool
- */
- public function isTomorrow();
-
- /**
- * Determines if the instance is a weekday.
- *
- * @example
- * ```
- * Carbon::parse('2019-07-14')->isWeekday(); // false
- * Carbon::parse('2019-07-15')->isWeekday(); // true
- * ```
- *
- * @return bool
- */
- public function isWeekday();
-
- /**
- * Determines if the instance is a weekend day.
- *
- * @example
- * ```
- * Carbon::parse('2019-07-14')->isWeekend(); // true
- * Carbon::parse('2019-07-15')->isWeekend(); // false
- * ```
- *
- * @return bool
- */
- public function isWeekend();
-
- /**
- * Determines if the instance is yesterday.
- *
- * @example
- * ```
- * Carbon::yesterday()->isYesterday(); // true
- * Carbon::tomorrow()->isYesterday(); // false
- * ```
- *
- * @return bool
- */
- public function isYesterday();
-
- /**
- * Format in the current language using ISO replacement patterns.
- *
- * @param string $format
- * @param string|null $originalFormat provide context if a chunk has been passed alone
- *
- * @return string
- */
- public function isoFormat(string $format, ?string $originalFormat = null): string;
-
- /**
- * Get/set the week number using given first day of week and first
- * day of year included in the first week. Or use ISO format if no settings
- * given.
- *
- * @param int|null $week
- * @param int|null $dayOfWeek
- * @param int|null $dayOfYear
- *
- * @return int|static
- */
- public function isoWeek($week = null, $dayOfWeek = null, $dayOfYear = null);
-
- /**
- * Set/get the week number of year using given first day of week and first
- * day of year included in the first week. Or use ISO format if no settings
- * given.
- *
- * @param int|null $year if null, act as a getter, if not null, set the year and return current instance.
- * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday)
- * @param int|null $dayOfYear first day of year included in the week #1
- *
- * @return int|static
- */
- public function isoWeekYear($year = null, $dayOfWeek = null, $dayOfYear = null);
-
- /**
- * Get/set the ISO weekday from 1 (Monday) to 7 (Sunday).
- *
- * @param int|null $value new value for weekday if using as setter.
- *
- * @return static|int
- */
- public function isoWeekday($value = null);
-
- /**
- * Get the number of weeks of the current week-year using given first day of week and first
- * day of year included in the first week. Or use ISO format if no settings
- * given.
- *
- * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday)
- * @param int|null $dayOfYear first day of year included in the week #1
- *
- * @return int
- */
- public function isoWeeksInYear($dayOfWeek = null, $dayOfYear = null);
-
- /**
- * Prepare the object for JSON serialization.
- *
- * @return array|string
- */
- #[ReturnTypeWillChange]
- public function jsonSerialize();
-
- /**
- * Modify to the last occurrence of a given day of the week
- * in the current month. If no dayOfWeek is provided, modify to the
- * last day of the current month. Use the supplied constants
- * to indicate the desired dayOfWeek, ex. static::MONDAY.
- *
- * @param int|null $dayOfWeek
- *
- * @return static
- */
- public function lastOfMonth($dayOfWeek = null);
-
- /**
- * Modify to the last occurrence of a given day of the week
- * in the current quarter. If no dayOfWeek is provided, modify to the
- * last day of the current quarter. Use the supplied constants
- * to indicate the desired dayOfWeek, ex. static::MONDAY.
- *
- * @param int|null $dayOfWeek day of the week default null
- *
- * @return static
- */
- public function lastOfQuarter($dayOfWeek = null);
-
- /**
- * Modify to the last occurrence of a given day of the week
- * in the current year. If no dayOfWeek is provided, modify to the
- * last day of the current year. Use the supplied constants
- * to indicate the desired dayOfWeek, ex. static::MONDAY.
- *
- * @param int|null $dayOfWeek day of the week default null
- *
- * @return static
- */
- public function lastOfYear($dayOfWeek = null);
-
- /**
- * Determines if the instance is less (before) than another
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:15'); // false
- * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:16'); // false
- * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:17'); // true
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @return bool
- */
- public function lessThan($date): bool;
-
- /**
- * Determines if the instance is less (before) or equal to another
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:15'); // false
- * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:16'); // true
- * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:17'); // true
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @return bool
- */
- public function lessThanOrEqualTo($date): bool;
-
- /**
- * Get/set the locale for the current instance.
- *
- * @param string|null $locale
- * @param string ...$fallbackLocales
- *
- * @return $this|string
- */
- public function locale(?string $locale = null, ...$fallbackLocales);
-
- /**
- * Returns true if the given locale is internally supported and has words for 1-day diff (just now, yesterday, tomorrow).
- * Support is considered enabled if the 3 words are translated in the given locale.
- *
- * @param string $locale locale ex. en
- *
- * @return bool
- */
- public static function localeHasDiffOneDayWords($locale);
-
- /**
- * Returns true if the given locale is internally supported and has diff syntax support (ago, from now, before, after).
- * Support is considered enabled if the 4 sentences are translated in the given locale.
- *
- * @param string $locale locale ex. en
- *
- * @return bool
- */
- public static function localeHasDiffSyntax($locale);
-
- /**
- * Returns true if the given locale is internally supported and has words for 2-days diff (before yesterday, after tomorrow).
- * Support is considered enabled if the 2 words are translated in the given locale.
- *
- * @param string $locale locale ex. en
- *
- * @return bool
- */
- public static function localeHasDiffTwoDayWords($locale);
-
- /**
- * Returns true if the given locale is internally supported and has period syntax support (X times, every X, from X, to X).
- * Support is considered enabled if the 4 sentences are translated in the given locale.
- *
- * @param string $locale locale ex. en
- *
- * @return bool
- */
- public static function localeHasPeriodSyntax($locale);
-
- /**
- * Returns true if the given locale is internally supported and has short-units support.
- * Support is considered enabled if either year, day or hour has a short variant translated.
- *
- * @param string $locale locale ex. en
- *
- * @return bool
- */
- public static function localeHasShortUnits($locale);
-
- /**
- * Determines if the instance is less (before) than another
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:15'); // false
- * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:16'); // false
- * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:17'); // true
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @see lessThan()
- *
- * @return bool
- */
- public function lt($date): bool;
-
- /**
- * Determines if the instance is less (before) or equal to another
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:15'); // false
- * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:16'); // true
- * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:17'); // true
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @see lessThanOrEqualTo()
- *
- * @return bool
- */
- public function lte($date): bool;
-
- /**
- * Register a custom macro.
- *
- * @example
- * ```
- * $userSettings = [
- * 'locale' => 'pt',
- * 'timezone' => 'America/Sao_Paulo',
- * ];
- * Carbon::macro('userFormat', function () use ($userSettings) {
- * return $this->copy()->locale($userSettings['locale'])->tz($userSettings['timezone'])->calendar();
- * });
- * echo Carbon::yesterday()->hours(11)->userFormat();
- * ```
- *
- * @param string $name
- * @param object|callable $macro
- *
- * @return void
- */
- public static function macro($name, $macro);
-
- /**
- * Make a Carbon instance from given variable if possible.
- *
- * Always return a new instance. Parse only strings and only these likely to be dates (skip intervals
- * and recurrences). Throw an exception for invalid format, but otherwise return null.
- *
- * @param mixed $var
- *
- * @throws InvalidFormatException
- *
- * @return static|null
- */
- public static function make($var);
-
- /**
- * Get the maximum instance between a given instance (default now) and the current instance.
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @return static
- */
- public function max($date = null);
-
- /**
- * Create a Carbon instance for the greatest supported date.
- *
- * @return static
- */
- public static function maxValue();
-
- /**
- * Get the maximum instance between a given instance (default now) and the current instance.
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @see max()
- *
- * @return static
- */
- public function maximum($date = null);
-
- /**
- * Return the meridiem of the current time in the current locale.
- *
- * @param bool $isLower if true, returns lowercase variant if available in the current locale.
- *
- * @return string
- */
- public function meridiem(bool $isLower = false): string;
-
- /**
- * Modify to midday, default to self::$midDayAt
- *
- * @return static
- */
- public function midDay();
-
- /**
- * Get the minimum instance between a given instance (default now) and the current instance.
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @return static
- */
- public function min($date = null);
-
- /**
- * Create a Carbon instance for the lowest supported date.
- *
- * @return static
- */
- public static function minValue();
-
- /**
- * Get the minimum instance between a given instance (default now) and the current instance.
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @see min()
- *
- * @return static
- */
- public function minimum($date = null);
-
- /**
- * Mix another object into the class.
- *
- * @example
- * ```
- * Carbon::mixin(new class {
- * public function addMoon() {
- * return function () {
- * return $this->addDays(30);
- * };
- * }
- * public function subMoon() {
- * return function () {
- * return $this->subDays(30);
- * };
- * }
- * });
- * $fullMoon = Carbon::create('2018-12-22');
- * $nextFullMoon = $fullMoon->addMoon();
- * $blackMoon = Carbon::create('2019-01-06');
- * $previousBlackMoon = $blackMoon->subMoon();
- * echo "$nextFullMoon\n";
- * echo "$previousBlackMoon\n";
- * ```
- *
- * @param object|string $mixin
- *
- * @throws ReflectionException
- *
- * @return void
- */
- public static function mixin($mixin);
-
- /**
- * Calls \DateTime::modify if mutable or \DateTimeImmutable::modify else.
- *
- * @see https://php.net/manual/en/datetime.modify.php
- *
- * @return static|false
- */
- #[ReturnTypeWillChange]
- public function modify($modify);
-
- /**
- * Determines if the instance is not equal to another
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25 12:45:16')->ne('2018-07-25 12:45:16'); // false
- * Carbon::parse('2018-07-25 12:45:16')->ne(Carbon::parse('2018-07-25 12:45:16')); // false
- * Carbon::parse('2018-07-25 12:45:16')->ne('2018-07-25 12:45:17'); // true
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @see notEqualTo()
- *
- * @return bool
- */
- public function ne($date): bool;
-
- /**
- * Modify to the next occurrence of a given modifier such as a day of
- * the week. If no modifier is provided, modify to the next occurrence
- * of the current day of the week. Use the supplied constants
- * to indicate the desired dayOfWeek, ex. static::MONDAY.
- *
- * @param string|int|null $modifier
- *
- * @return static
- */
- public function next($modifier = null);
-
- /**
- * Go forward to the next weekday.
- *
- * @return static
- */
- public function nextWeekday();
-
- /**
- * Go forward to the next weekend day.
- *
- * @return static
- */
- public function nextWeekendDay();
-
- /**
- * Determines if the instance is not equal to another
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25 12:45:16')->notEqualTo('2018-07-25 12:45:16'); // false
- * Carbon::parse('2018-07-25 12:45:16')->notEqualTo(Carbon::parse('2018-07-25 12:45:16')); // false
- * Carbon::parse('2018-07-25 12:45:16')->notEqualTo('2018-07-25 12:45:17'); // true
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @return bool
- */
- public function notEqualTo($date): bool;
-
- /**
- * Get a Carbon instance for the current date and time.
- *
- * @param DateTimeZone|string|null $tz
- *
- * @return static
- */
- public static function now($tz = null);
-
- /**
- * Returns a present instance in the same timezone.
- *
- * @return static
- */
- public function nowWithSameTz();
-
- /**
- * Modify to the given occurrence of a given day of the week
- * in the current month. If the calculated occurrence is outside the scope
- * of the current month, then return false and no modifications are made.
- * Use the supplied constants to indicate the desired dayOfWeek, ex. static::MONDAY.
- *
- * @param int $nth
- * @param int $dayOfWeek
- *
- * @return mixed
- */
- public function nthOfMonth($nth, $dayOfWeek);
-
- /**
- * Modify to the given occurrence of a given day of the week
- * in the current quarter. If the calculated occurrence is outside the scope
- * of the current quarter, then return false and no modifications are made.
- * Use the supplied constants to indicate the desired dayOfWeek, ex. static::MONDAY.
- *
- * @param int $nth
- * @param int $dayOfWeek
- *
- * @return mixed
- */
- public function nthOfQuarter($nth, $dayOfWeek);
-
- /**
- * Modify to the given occurrence of a given day of the week
- * in the current year. If the calculated occurrence is outside the scope
- * of the current year, then return false and no modifications are made.
- * Use the supplied constants to indicate the desired dayOfWeek, ex. static::MONDAY.
- *
- * @param int $nth
- * @param int $dayOfWeek
- *
- * @return mixed
- */
- public function nthOfYear($nth, $dayOfWeek);
-
- /**
- * Return a property with its ordinal.
- *
- * @param string $key
- * @param string|null $period
- *
- * @return string
- */
- public function ordinal(string $key, ?string $period = null): string;
-
- /**
- * Create a carbon instance from a string.
- *
- * This is an alias for the constructor that allows better fluent syntax
- * as it allows you to do Carbon::parse('Monday next week')->fn() rather
- * than (new Carbon('Monday next week'))->fn().
- *
- * @param string|DateTimeInterface|null $time
- * @param DateTimeZone|string|null $tz
- *
- * @throws InvalidFormatException
- *
- * @return static
- */
- public static function parse($time = null, $tz = null);
-
- /**
- * Create a carbon instance from a localized string (in French, Japanese, Arabic, etc.).
- *
- * @param string $time date/time string in the given language (may also contain English).
- * @param string|null $locale if locale is null or not specified, current global locale will be
- * used instead.
- * @param DateTimeZone|string|null $tz optional timezone for the new instance.
- *
- * @throws InvalidFormatException
- *
- * @return static
- */
- public static function parseFromLocale($time, $locale = null, $tz = null);
-
- /**
- * Returns standardized plural of a given singular/plural unit name (in English).
- *
- * @param string $unit
- *
- * @return string
- */
- public static function pluralUnit(string $unit): string;
-
- /**
- * Modify to the previous occurrence of a given modifier such as a day of
- * the week. If no dayOfWeek is provided, modify to the previous occurrence
- * of the current day of the week. Use the supplied constants
- * to indicate the desired dayOfWeek, ex. static::MONDAY.
- *
- * @param string|int|null $modifier
- *
- * @return static
- */
- public function previous($modifier = null);
-
- /**
- * Go backward to the previous weekday.
- *
- * @return static
- */
- public function previousWeekday();
-
- /**
- * Go backward to the previous weekend day.
- *
- * @return static
- */
- public function previousWeekendDay();
-
- /**
- * Create a iterable CarbonPeriod object from current date to a given end date (and optional interval).
- *
- * @param \DateTimeInterface|Carbon|CarbonImmutable|null $end period end date
- * @param int|\DateInterval|string|null $interval period default interval or number of the given $unit
- * @param string|null $unit if specified, $interval must be an integer
- *
- * @return CarbonPeriod
- */
- public function range($end = null, $interval = null, $unit = null);
-
- /**
- * Call native PHP DateTime/DateTimeImmutable add() method.
- *
- * @param DateInterval $interval
- *
- * @return static
- */
- public function rawAdd(DateInterval $interval);
-
- /**
- * Create a Carbon instance from a specific format.
- *
- * @param string $format Datetime format
- * @param string $time
- * @param DateTimeZone|string|false|null $tz
- *
- * @throws InvalidFormatException
- *
- * @return static|false
- */
- public static function rawCreateFromFormat($format, $time, $tz = null);
-
- /**
- * @see https://php.net/manual/en/datetime.format.php
- *
- * @param string $format
- *
- * @return string
- */
- public function rawFormat($format);
-
- /**
- * Create a carbon instance from a string.
- *
- * This is an alias for the constructor that allows better fluent syntax
- * as it allows you to do Carbon::parse('Monday next week')->fn() rather
- * than (new Carbon('Monday next week'))->fn().
- *
- * @param string|DateTimeInterface|null $time
- * @param DateTimeZone|string|null $tz
- *
- * @throws InvalidFormatException
- *
- * @return static
- */
- public static function rawParse($time = null, $tz = null);
-
- /**
- * Call native PHP DateTime/DateTimeImmutable sub() method.
- *
- * @param DateInterval $interval
- *
- * @return static
- */
- public function rawSub(DateInterval $interval);
-
- /**
- * Remove all macros and generic macros.
- */
- public static function resetMacros();
-
- /**
- * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants
- * are available for quarters, years, decade, centuries, millennia (singular and plural forms).
- * @see settings
- *
- * Reset the month overflow behavior.
- *
- * @return void
- */
- public static function resetMonthsOverflow();
-
- /**
- * Reset the format used to the default when type juggling a Carbon instance to a string
- *
- * @return void
- */
- public static function resetToStringFormat();
-
- /**
- * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants
- * are available for quarters, years, decade, centuries, millennia (singular and plural forms).
- * @see settings
- *
- * Reset the month overflow behavior.
- *
- * @return void
- */
- public static function resetYearsOverflow();
-
- /**
- * Round the current instance second with given precision if specified.
- *
- * @param float|int|string|\DateInterval|null $precision
- * @param string $function
- *
- * @return CarbonInterface
- */
- public function round($precision = 1, $function = 'round');
-
- /**
- * Round the current instance at the given unit with given precision if specified and the given function.
- *
- * @param string $unit
- * @param float|int $precision
- * @param string $function
- *
- * @return CarbonInterface
- */
- public function roundUnit($unit, $precision = 1, $function = 'round');
-
- /**
- * Round the current instance week.
- *
- * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week
- *
- * @return CarbonInterface
- */
- public function roundWeek($weekStartsAt = null);
-
- /**
- * The number of seconds since midnight.
- *
- * @return int
- */
- public function secondsSinceMidnight();
-
- /**
- * The number of seconds until 23:59:59.
- *
- * @return int
- */
- public function secondsUntilEndOfDay();
-
- /**
- * Return a serialized string of the instance.
- *
- * @return string
- */
- public function serialize();
-
- /**
- * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather transform Carbon object before the serialization.
- *
- * JSON serialize all Carbon instances using the given callback.
- *
- * @param callable $callback
- *
- * @return void
- */
- public static function serializeUsing($callback);
-
- /**
- * Set a part of the Carbon object
- *
- * @param string|array $name
- * @param string|int|DateTimeZone $value
- *
- * @throws ImmutableException|UnknownSetterException
- *
- * @return $this
- */
- public function set($name, $value = null);
-
- /**
- * Set the date with gregorian year, month and day numbers.
- *
- * @see https://php.net/manual/en/datetime.setdate.php
- *
- * @param int $year
- * @param int $month
- * @param int $day
- *
- * @return static
- */
- #[ReturnTypeWillChange]
- public function setDate($year, $month, $day);
-
- /**
- * Set the year, month, and date for this instance to that of the passed instance.
- *
- * @param Carbon|DateTimeInterface $date now if null
- *
- * @return static
- */
- public function setDateFrom($date = null);
-
- /**
- * Set the date and time all together.
- *
- * @param int $year
- * @param int $month
- * @param int $day
- * @param int $hour
- * @param int $minute
- * @param int $second
- * @param int $microseconds
- *
- * @return static
- */
- public function setDateTime($year, $month, $day, $hour, $minute, $second = 0, $microseconds = 0);
-
- /**
- * Set the date and time for this instance to that of the passed instance.
- *
- * @param Carbon|DateTimeInterface $date
- *
- * @return static
- */
- public function setDateTimeFrom($date = null);
-
- /**
- * Set the fallback locale.
- *
- * @see https://symfony.com/doc/current/components/translation.html#fallback-locales
- *
- * @param string $locale
- */
- public static function setFallbackLocale($locale);
-
- /**
- * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * @see settings
- *
- * @param int $humanDiffOptions
- */
- public static function setHumanDiffOptions($humanDiffOptions);
-
- /**
- * Set a date according to the ISO 8601 standard - using weeks and day offsets rather than specific dates.
- *
- * @see https://php.net/manual/en/datetime.setisodate.php
- *
- * @param int $year
- * @param int $week
- * @param int $day
- *
- * @return static
- */
- #[ReturnTypeWillChange]
- public function setISODate($year, $week, $day = 1);
-
- /**
- * Set the translator for the current instance.
- *
- * @param \Symfony\Component\Translation\TranslatorInterface $translator
- *
- * @return $this
- */
- public function setLocalTranslator(TranslatorInterface $translator);
-
- /**
- * Set the current translator locale and indicate if the source locale file exists.
- * Pass 'auto' as locale to use closest language from the current LC_TIME locale.
- *
- * @param string $locale locale ex. en
- *
- * @return bool
- */
- public static function setLocale($locale);
-
- /**
- * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather consider mid-day is always 12pm, then if you need to test if it's an other
- * hour, test it explicitly:
- * $date->format('G') == 13
- * or to set explicitly to a given hour:
- * $date->setTime(13, 0, 0, 0)
- *
- * Set midday/noon hour
- *
- * @param int $hour midday hour
- *
- * @return void
- */
- public static function setMidDayAt($hour);
-
- /**
- * Set a Carbon instance (real or mock) to be returned when a "now"
- * instance is created. The provided instance will be returned
- * specifically under the following conditions:
- * - A call to the static now() method, ex. Carbon::now()
- * - When a null (or blank string) is passed to the constructor or parse(), ex. new Carbon(null)
- * - When the string "now" is passed to the constructor or parse(), ex. new Carbon('now')
- * - When a string containing the desired time is passed to Carbon::parse().
- *
- * Note the timezone parameter was left out of the examples above and
- * has no affect as the mock value will be returned regardless of its value.
- *
- * To clear the test instance call this method using the default
- * parameter of null.
- *
- * /!\ Use this method for unit tests only.
- *
- * @param Closure|static|string|false|null $testNow real or mock Carbon instance
- */
- public static function setTestNow($testNow = null);
-
- /**
- * Resets the current time of the DateTime object to a different time.
- *
- * @see https://php.net/manual/en/datetime.settime.php
- *
- * @param int $hour
- * @param int $minute
- * @param int $second
- * @param int $microseconds
- *
- * @return static
- */
- #[ReturnTypeWillChange]
- public function setTime($hour, $minute, $second = 0, $microseconds = 0);
-
- /**
- * Set the hour, minute, second and microseconds for this instance to that of the passed instance.
- *
- * @param Carbon|DateTimeInterface $date now if null
- *
- * @return static
- */
- public function setTimeFrom($date = null);
-
- /**
- * Set the time by time string.
- *
- * @param string $time
- *
- * @return static
- */
- public function setTimeFromTimeString($time);
-
- /**
- * Set the instance's timestamp.
- *
- * Timestamp input can be given as int, float or a string containing one or more numbers.
- *
- * @param float|int|string $unixTimestamp
- *
- * @return static
- */
- #[ReturnTypeWillChange]
- public function setTimestamp($unixTimestamp);
-
- /**
- * Set the instance's timezone from a string or object.
- *
- * @param DateTimeZone|string $value
- *
- * @return static
- */
- #[ReturnTypeWillChange]
- public function setTimezone($value);
-
- /**
- * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather let Carbon object being casted to string with DEFAULT_TO_STRING_FORMAT, and
- * use other method or custom format passed to format() method if you need to dump an other string
- * format.
- *
- * Set the default format used when type juggling a Carbon instance to a string
- *
- * @param string|Closure|null $format
- *
- * @return void
- */
- public static function setToStringFormat($format);
-
- /**
- * Set the default translator instance to use.
- *
- * @param \Symfony\Component\Translation\TranslatorInterface $translator
- *
- * @return void
- */
- public static function setTranslator(TranslatorInterface $translator);
-
- /**
- * Set specified unit to new given value.
- *
- * @param string $unit year, month, day, hour, minute, second or microsecond
- * @param int $value new value for given unit
- *
- * @return static
- */
- public function setUnit($unit, $value = null);
-
- /**
- * Set any unit to a new value without overflowing current other unit given.
- *
- * @param string $valueUnit unit name to modify
- * @param int $value new value for the input unit
- * @param string $overflowUnit unit name to not overflow
- *
- * @return static
- */
- public function setUnitNoOverflow($valueUnit, $value, $overflowUnit);
-
- /**
- * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use UTF-8 language packages on every machine.
- *
- * Set if UTF8 will be used for localized date/time.
- *
- * @param bool $utf8
- */
- public static function setUtf8($utf8);
-
- /**
- * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * Use $weekStartsAt optional parameter instead when using startOfWeek, floorWeek, ceilWeek
- * or roundWeek method. You can also use the 'first_day_of_week' locale setting to change the
- * start of week according to current locale selected and implicitly the end of week.
- *
- * Set the last day of week
- *
- * @param int|string $day week end day (or 'auto' to get the day before the first day of week
- * from Carbon::getLocale() culture).
- *
- * @return void
- */
- public static function setWeekEndsAt($day);
-
- /**
- * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * Use $weekEndsAt optional parameter instead when using endOfWeek method. You can also use the
- * 'first_day_of_week' locale setting to change the start of week according to current locale
- * selected and implicitly the end of week.
- *
- * Set the first day of week
- *
- * @param int|string $day week start day (or 'auto' to get the first day of week from Carbon::getLocale() culture).
- *
- * @return void
- */
- public static function setWeekStartsAt($day);
-
- /**
- * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather consider week-end is always saturday and sunday, and if you have some custom
- * week-end days to handle, give to those days an other name and create a macro for them:
- *
- * ```
- * Carbon::macro('isDayOff', function ($date) {
- * return $date->isSunday() || $date->isMonday();
- * });
- * Carbon::macro('isNotDayOff', function ($date) {
- * return !$date->isDayOff();
- * });
- * if ($someDate->isDayOff()) ...
- * if ($someDate->isNotDayOff()) ...
- * // Add 5 not-off days
- * $count = 5;
- * while ($someDate->isDayOff() || ($count-- > 0)) {
- * $someDate->addDay();
- * }
- * ```
- *
- * Set weekend days
- *
- * @param array $days
- *
- * @return void
- */
- public static function setWeekendDays($days);
-
- /**
- * Set specific options.
- * - strictMode: true|false|null
- * - monthOverflow: true|false|null
- * - yearOverflow: true|false|null
- * - humanDiffOptions: int|null
- * - toStringFormat: string|Closure|null
- * - toJsonFormat: string|Closure|null
- * - locale: string|null
- * - timezone: \DateTimeZone|string|int|null
- * - macros: array|null
- * - genericMacros: array|null
- *
- * @param array $settings
- *
- * @return $this|static
- */
- public function settings(array $settings);
-
- /**
- * Set the instance's timezone from a string or object and add/subtract the offset difference.
- *
- * @param DateTimeZone|string $value
- *
- * @return static
- */
- public function shiftTimezone($value);
-
- /**
- * Get the month overflow global behavior (can be overridden in specific instances).
- *
- * @return bool
- */
- public static function shouldOverflowMonths();
-
- /**
- * Get the month overflow global behavior (can be overridden in specific instances).
- *
- * @return bool
- */
- public static function shouldOverflowYears();
-
- /**
- * @alias diffForHumans
- *
- * Get the difference in a human readable format in the current locale from current instance to an other
- * instance given (or now if null given).
- */
- public function since($other = null, $syntax = null, $short = false, $parts = 1, $options = null);
-
- /**
- * Returns standardized singular of a given singular/plural unit name (in English).
- *
- * @param string $unit
- *
- * @return string
- */
- public static function singularUnit(string $unit): string;
-
- /**
- * Modify to start of current given unit.
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16.334455')
- * ->startOf('month')
- * ->endOf('week', Carbon::FRIDAY);
- * ```
- *
- * @param string $unit
- * @param array $params
- *
- * @return static
- */
- public function startOf($unit, ...$params);
-
- /**
- * Resets the date to the first day of the century and the time to 00:00:00
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->startOfCentury();
- * ```
- *
- * @return static
- */
- public function startOfCentury();
-
- /**
- * Resets the time to 00:00:00 start of day
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->startOfDay();
- * ```
- *
- * @return static
- */
- public function startOfDay();
-
- /**
- * Resets the date to the first day of the decade and the time to 00:00:00
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->startOfDecade();
- * ```
- *
- * @return static
- */
- public function startOfDecade();
-
- /**
- * Modify to start of current hour, minutes and seconds become 0
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->startOfHour();
- * ```
- *
- * @return static
- */
- public function startOfHour();
-
- /**
- * Resets the date to the first day of the millennium and the time to 00:00:00
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->startOfMillennium();
- * ```
- *
- * @return static
- */
- public function startOfMillennium();
-
- /**
- * Modify to start of current minute, seconds become 0
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->startOfMinute();
- * ```
- *
- * @return static
- */
- public function startOfMinute();
-
- /**
- * Resets the date to the first day of the month and the time to 00:00:00
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->startOfMonth();
- * ```
- *
- * @return static
- */
- public function startOfMonth();
-
- /**
- * Resets the date to the first day of the quarter and the time to 00:00:00
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->startOfQuarter();
- * ```
- *
- * @return static
- */
- public function startOfQuarter();
-
- /**
- * Modify to start of current second, microseconds become 0
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16.334455')
- * ->startOfSecond()
- * ->format('H:i:s.u');
- * ```
- *
- * @return static
- */
- public function startOfSecond();
-
- /**
- * Resets the date to the first day of week (defined in $weekStartsAt) and the time to 00:00:00
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->startOfWeek() . "\n";
- * echo Carbon::parse('2018-07-25 12:45:16')->locale('ar')->startOfWeek() . "\n";
- * echo Carbon::parse('2018-07-25 12:45:16')->startOfWeek(Carbon::SUNDAY) . "\n";
- * ```
- *
- * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week
- *
- * @return static
- */
- public function startOfWeek($weekStartsAt = null);
-
- /**
- * Resets the date to the first day of the year and the time to 00:00:00
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->startOfYear();
- * ```
- *
- * @return static
- */
- public function startOfYear();
-
- /**
- * Subtract given units or interval to the current instance.
- *
- * @example $date->sub('hour', 3)
- * @example $date->sub(15, 'days')
- * @example $date->sub(CarbonInterval::days(4))
- *
- * @param string|DateInterval|Closure|CarbonConverterInterface $unit
- * @param int $value
- * @param bool|null $overflow
- *
- * @return static
- */
- #[ReturnTypeWillChange]
- public function sub($unit, $value = 1, $overflow = null);
-
- public function subRealUnit($unit, $value = 1);
-
- /**
- * Subtract given units to the current instance.
- *
- * @param string $unit
- * @param int $value
- * @param bool|null $overflow
- *
- * @return static
- */
- public function subUnit($unit, $value = 1, $overflow = null);
-
- /**
- * Subtract any unit to a new value without overflowing current other unit given.
- *
- * @param string $valueUnit unit name to modify
- * @param int $value amount to subtract to the input unit
- * @param string $overflowUnit unit name to not overflow
- *
- * @return static
- */
- public function subUnitNoOverflow($valueUnit, $value, $overflowUnit);
-
- /**
- * Subtract given units or interval to the current instance.
- *
- * @see sub()
- *
- * @param string|DateInterval $unit
- * @param int $value
- * @param bool|null $overflow
- *
- * @return static
- */
- public function subtract($unit, $value = 1, $overflow = null);
-
- /**
- * Get the difference in a human readable format in the current locale from current instance to an other
- * instance given (or now if null given).
- *
- * @return string
- */
- public function timespan($other = null, $timezone = null);
-
- /**
- * Set the instance's timestamp.
- *
- * Timestamp input can be given as int, float or a string containing one or more numbers.
- *
- * @param float|int|string $unixTimestamp
- *
- * @return static
- */
- public function timestamp($unixTimestamp);
-
- /**
- * @alias setTimezone
- *
- * @param DateTimeZone|string $value
- *
- * @return static
- */
- public function timezone($value);
-
- /**
- * Get the difference in a human readable format in the current locale from an other
- * instance given (or now if null given) to current instance.
- *
- * When comparing a value in the past to default now:
- * 1 hour from now
- * 5 months from now
- *
- * When comparing a value in the future to default now:
- * 1 hour ago
- * 5 months ago
- *
- * When comparing a value in the past to another value:
- * 1 hour after
- * 5 months after
- *
- * When comparing a value in the future to another value:
- * 1 hour before
- * 5 months before
- *
- * @param Carbon|\DateTimeInterface|string|array|null $other if array passed, will be used as parameters array, see $syntax below;
- * if null passed, now will be used as comparison reference;
- * if any other type, it will be converted to date and used as reference.
- * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains:
- * - 'syntax' entry (see below)
- * - 'short' entry (see below)
- * - 'parts' entry (see below)
- * - 'options' entry (see below)
- * - 'join' entry determines how to join multiple parts of the string
- * ` - if $join is a string, it's used as a joiner glue
- * ` - if $join is a callable/closure, it get the list of string and should return a string
- * ` - if $join is an array, the first item will be the default glue, and the second item
- * ` will be used instead of the glue for the last item
- * ` - if $join is true, it will be guessed from the locale ('list' translation file entry)
- * ` - if $join is missing, a space will be used as glue
- * - 'other' entry (see above)
- * if int passed, it add modifiers:
- * Possible values:
- * - CarbonInterface::DIFF_ABSOLUTE no modifiers
- * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier
- * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier
- * Default value: CarbonInterface::DIFF_ABSOLUTE
- * @param bool $short displays short format of time units
- * @param int $parts maximum number of parts to display (default value: 1: single unit)
- * @param int $options human diff options
- *
- * @return string
- */
- public function to($other = null, $syntax = null, $short = false, $parts = 1, $options = null);
-
- /**
- * Get default array representation.
- *
- * @example
- * ```
- * var_dump(Carbon::now()->toArray());
- * ```
- *
- * @return array
- */
- public function toArray();
-
- /**
- * Format the instance as ATOM
- *
- * @example
- * ```
- * echo Carbon::now()->toAtomString();
- * ```
- *
- * @return string
- */
- public function toAtomString();
-
- /**
- * Format the instance as COOKIE
- *
- * @example
- * ```
- * echo Carbon::now()->toCookieString();
- * ```
- *
- * @return string
- */
- public function toCookieString();
-
- /**
- * @alias toDateTime
- *
- * Return native DateTime PHP object matching the current instance.
- *
- * @example
- * ```
- * var_dump(Carbon::now()->toDate());
- * ```
- *
- * @return DateTime
- */
- public function toDate();
-
- /**
- * Format the instance as date
- *
- * @example
- * ```
- * echo Carbon::now()->toDateString();
- * ```
- *
- * @return string
- */
- public function toDateString();
-
- /**
- * Return native DateTime PHP object matching the current instance.
- *
- * @example
- * ```
- * var_dump(Carbon::now()->toDateTime());
- * ```
- *
- * @return DateTime
- */
- public function toDateTime();
-
- /**
- * Return native toDateTimeImmutable PHP object matching the current instance.
- *
- * @example
- * ```
- * var_dump(Carbon::now()->toDateTimeImmutable());
- * ```
- *
- * @return DateTimeImmutable
- */
- public function toDateTimeImmutable();
-
- /**
- * Format the instance as date and time T-separated with no timezone
- *
- * @example
- * ```
- * echo Carbon::now()->toDateTimeLocalString();
- * echo "\n";
- * echo Carbon::now()->toDateTimeLocalString('minute'); // You can specify precision among: minute, second, millisecond and microsecond
- * ```
- *
- * @param string $unitPrecision
- *
- * @return string
- */
- public function toDateTimeLocalString($unitPrecision = 'second');
-
- /**
- * Format the instance as date and time
- *
- * @example
- * ```
- * echo Carbon::now()->toDateTimeString();
- * ```
- *
- * @param string $unitPrecision
- *
- * @return string
- */
- public function toDateTimeString($unitPrecision = 'second');
-
- /**
- * Format the instance with day, date and time
- *
- * @example
- * ```
- * echo Carbon::now()->toDayDateTimeString();
- * ```
- *
- * @return string
- */
- public function toDayDateTimeString();
-
- /**
- * Format the instance as a readable date
- *
- * @example
- * ```
- * echo Carbon::now()->toFormattedDateString();
- * ```
- *
- * @return string
- */
- public function toFormattedDateString();
-
- /**
- * Return the ISO-8601 string (ex: 1977-04-22T06:00:00Z, if $keepOffset truthy, offset will be kept:
- * 1977-04-22T01:00:00-05:00).
- *
- * @example
- * ```
- * echo Carbon::now('America/Toronto')->toISOString() . "\n";
- * echo Carbon::now('America/Toronto')->toISOString(true) . "\n";
- * ```
- *
- * @param bool $keepOffset Pass true to keep the date offset. Else forced to UTC.
- *
- * @return null|string
- */
- public function toISOString($keepOffset = false);
-
- /**
- * Return a immutable copy of the instance.
- *
- * @return CarbonImmutable
- */
- public function toImmutable();
-
- /**
- * Format the instance as ISO8601
- *
- * @example
- * ```
- * echo Carbon::now()->toIso8601String();
- * ```
- *
- * @return string
- */
- public function toIso8601String();
-
- /**
- * Convert the instance to UTC and return as Zulu ISO8601
- *
- * @example
- * ```
- * echo Carbon::now()->toIso8601ZuluString();
- * ```
- *
- * @param string $unitPrecision
- *
- * @return string
- */
- public function toIso8601ZuluString($unitPrecision = 'second');
-
- /**
- * Return the ISO-8601 string (ex: 1977-04-22T06:00:00Z) with UTC timezone.
- *
- * @example
- * ```
- * echo Carbon::now('America/Toronto')->toJSON();
- * ```
- *
- * @return null|string
- */
- public function toJSON();
-
- /**
- * Return a mutable copy of the instance.
- *
- * @return Carbon
- */
- public function toMutable();
-
- /**
- * Get the difference in a human readable format in the current locale from an other
- * instance given to now
- *
- * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains:
- * - 'syntax' entry (see below)
- * - 'short' entry (see below)
- * - 'parts' entry (see below)
- * - 'options' entry (see below)
- * - 'join' entry determines how to join multiple parts of the string
- * ` - if $join is a string, it's used as a joiner glue
- * ` - if $join is a callable/closure, it get the list of string and should return a string
- * ` - if $join is an array, the first item will be the default glue, and the second item
- * ` will be used instead of the glue for the last item
- * ` - if $join is true, it will be guessed from the locale ('list' translation file entry)
- * ` - if $join is missing, a space will be used as glue
- * if int passed, it add modifiers:
- * Possible values:
- * - CarbonInterface::DIFF_ABSOLUTE no modifiers
- * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier
- * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier
- * Default value: CarbonInterface::DIFF_ABSOLUTE
- * @param bool $short displays short format of time units
- * @param int $parts maximum number of parts to display (default value: 1: single part)
- * @param int $options human diff options
- *
- * @return string
- */
- public function toNow($syntax = null, $short = false, $parts = 1, $options = null);
-
- /**
- * Get default object representation.
- *
- * @example
- * ```
- * var_dump(Carbon::now()->toObject());
- * ```
- *
- * @return object
- */
- public function toObject();
-
- /**
- * Create a iterable CarbonPeriod object from current date to a given end date (and optional interval).
- *
- * @param \DateTimeInterface|Carbon|CarbonImmutable|int|null $end period end date or recurrences count if int
- * @param int|\DateInterval|string|null $interval period default interval or number of the given $unit
- * @param string|null $unit if specified, $interval must be an integer
- *
- * @return CarbonPeriod
- */
- public function toPeriod($end = null, $interval = null, $unit = null);
-
- /**
- * Format the instance as RFC1036
- *
- * @example
- * ```
- * echo Carbon::now()->toRfc1036String();
- * ```
- *
- * @return string
- */
- public function toRfc1036String();
-
- /**
- * Format the instance as RFC1123
- *
- * @example
- * ```
- * echo Carbon::now()->toRfc1123String();
- * ```
- *
- * @return string
- */
- public function toRfc1123String();
-
- /**
- * Format the instance as RFC2822
- *
- * @example
- * ```
- * echo Carbon::now()->toRfc2822String();
- * ```
- *
- * @return string
- */
- public function toRfc2822String();
-
- /**
- * Format the instance as RFC3339
- *
- * @param bool $extended
- *
- * @example
- * ```
- * echo Carbon::now()->toRfc3339String() . "\n";
- * echo Carbon::now()->toRfc3339String(true) . "\n";
- * ```
- *
- * @return string
- */
- public function toRfc3339String($extended = false);
-
- /**
- * Format the instance as RFC7231
- *
- * @example
- * ```
- * echo Carbon::now()->toRfc7231String();
- * ```
- *
- * @return string
- */
- public function toRfc7231String();
-
- /**
- * Format the instance as RFC822
- *
- * @example
- * ```
- * echo Carbon::now()->toRfc822String();
- * ```
- *
- * @return string
- */
- public function toRfc822String();
-
- /**
- * Format the instance as RFC850
- *
- * @example
- * ```
- * echo Carbon::now()->toRfc850String();
- * ```
- *
- * @return string
- */
- public function toRfc850String();
-
- /**
- * Format the instance as RSS
- *
- * @example
- * ```
- * echo Carbon::now()->toRssString();
- * ```
- *
- * @return string
- */
- public function toRssString();
-
- /**
- * Returns english human readable complete date string.
- *
- * @example
- * ```
- * echo Carbon::now()->toString();
- * ```
- *
- * @return string
- */
- public function toString();
-
- /**
- * Format the instance as time
- *
- * @example
- * ```
- * echo Carbon::now()->toTimeString();
- * ```
- *
- * @param string $unitPrecision
- *
- * @return string
- */
- public function toTimeString($unitPrecision = 'second');
-
- /**
- * Format the instance as W3C
- *
- * @example
- * ```
- * echo Carbon::now()->toW3cString();
- * ```
- *
- * @return string
- */
- public function toW3cString();
-
- /**
- * Create a Carbon instance for today.
- *
- * @param DateTimeZone|string|null $tz
- *
- * @return static
- */
- public static function today($tz = null);
-
- /**
- * Create a Carbon instance for tomorrow.
- *
- * @param DateTimeZone|string|null $tz
- *
- * @return static
- */
- public static function tomorrow($tz = null);
-
- /**
- * Translate using translation string or callback available.
- *
- * @param string $key
- * @param array $parameters
- * @param string|int|float|null $number
- * @param \Symfony\Component\Translation\TranslatorInterface|null $translator
- * @param bool $altNumbers
- *
- * @return string
- */
- public function translate(string $key, array $parameters = [], $number = null, ?TranslatorInterface $translator = null, bool $altNumbers = false): string;
-
- /**
- * Returns the alternative number for a given integer if available in the current locale.
- *
- * @param int $number
- *
- * @return string
- */
- public function translateNumber(int $number): string;
-
- /**
- * Translate a time string from a locale to an other.
- *
- * @param string $timeString date/time/duration string to translate (may also contain English)
- * @param string|null $from input locale of the $timeString parameter (`Carbon::getLocale()` by default)
- * @param string|null $to output locale of the result returned (`"en"` by default)
- * @param int $mode specify what to translate with options:
- * - self::TRANSLATE_ALL (default)
- * - CarbonInterface::TRANSLATE_MONTHS
- * - CarbonInterface::TRANSLATE_DAYS
- * - CarbonInterface::TRANSLATE_UNITS
- * - CarbonInterface::TRANSLATE_MERIDIEM
- * You can use pipe to group: CarbonInterface::TRANSLATE_MONTHS | CarbonInterface::TRANSLATE_DAYS
- *
- * @return string
- */
- public static function translateTimeString($timeString, $from = null, $to = null, $mode = self::TRANSLATE_ALL);
-
- /**
- * Translate a time string from the current locale (`$date->locale()`) to an other.
- *
- * @param string $timeString time string to translate
- * @param string|null $to output locale of the result returned ("en" by default)
- *
- * @return string
- */
- public function translateTimeStringTo($timeString, $to = null);
-
- /**
- * Translate using translation string or callback available.
- *
- * @param \Symfony\Component\Translation\TranslatorInterface $translator
- * @param string $key
- * @param array $parameters
- * @param null $number
- *
- * @return string
- */
- public static function translateWith(TranslatorInterface $translator, string $key, array $parameters = [], $number = null): string;
-
- /**
- * Format as ->format() do (using date replacements patterns from https://php.net/manual/en/function.date.php)
- * but translate words whenever possible (months, day names, etc.) using the current locale.
- *
- * @param string $format
- *
- * @return string
- */
- public function translatedFormat(string $format): string;
-
- /**
- * Set the timezone or returns the timezone name if no arguments passed.
- *
- * @param DateTimeZone|string $value
- *
- * @return static|string
- */
- public function tz($value = null);
-
- /**
- * @alias getTimestamp
- *
- * Returns the UNIX timestamp for the current date.
- *
- * @return int
- */
- public function unix();
-
- /**
- * @alias to
- *
- * Get the difference in a human readable format in the current locale from an other
- * instance given (or now if null given) to current instance.
- *
- * @param Carbon|\DateTimeInterface|string|array|null $other if array passed, will be used as parameters array, see $syntax below;
- * if null passed, now will be used as comparison reference;
- * if any other type, it will be converted to date and used as reference.
- * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains:
- * - 'syntax' entry (see below)
- * - 'short' entry (see below)
- * - 'parts' entry (see below)
- * - 'options' entry (see below)
- * - 'join' entry determines how to join multiple parts of the string
- * ` - if $join is a string, it's used as a joiner glue
- * ` - if $join is a callable/closure, it get the list of string and should return a string
- * ` - if $join is an array, the first item will be the default glue, and the second item
- * ` will be used instead of the glue for the last item
- * ` - if $join is true, it will be guessed from the locale ('list' translation file entry)
- * ` - if $join is missing, a space will be used as glue
- * - 'other' entry (see above)
- * if int passed, it add modifiers:
- * Possible values:
- * - CarbonInterface::DIFF_ABSOLUTE no modifiers
- * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier
- * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier
- * Default value: CarbonInterface::DIFF_ABSOLUTE
- * @param bool $short displays short format of time units
- * @param int $parts maximum number of parts to display (default value: 1: single unit)
- * @param int $options human diff options
- *
- * @return string
- */
- public function until($other = null, $syntax = null, $short = false, $parts = 1, $options = null);
-
- /**
- * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants
- * are available for quarters, years, decade, centuries, millennia (singular and plural forms).
- * @see settings
- *
- * Indicates if months should be calculated with overflow.
- *
- * @param bool $monthsOverflow
- *
- * @return void
- */
- public static function useMonthsOverflow($monthsOverflow = true);
-
- /**
- * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * @see settings
- *
- * Enable the strict mode (or disable with passing false).
- *
- * @param bool $strictModeEnabled
- */
- public static function useStrictMode($strictModeEnabled = true);
-
- /**
- * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants
- * are available for quarters, years, decade, centuries, millennia (singular and plural forms).
- * @see settings
- *
- * Indicates if years should be calculated with overflow.
- *
- * @param bool $yearsOverflow
- *
- * @return void
- */
- public static function useYearsOverflow($yearsOverflow = true);
-
- /**
- * Set the instance's timezone to UTC.
- *
- * @return static
- */
- public function utc();
-
- /**
- * Returns the minutes offset to UTC if no arguments passed, else set the timezone with given minutes shift passed.
- *
- * @param int|null $minuteOffset
- *
- * @return int|static
- */
- public function utcOffset(?int $minuteOffset = null);
-
- /**
- * Returns the milliseconds timestamps used amongst other by Date javascript objects.
- *
- * @return float
- */
- public function valueOf();
-
- /**
- * Get/set the week number using given first day of week and first
- * day of year included in the first week. Or use US format if no settings
- * given (Sunday / Jan 6).
- *
- * @param int|null $week
- * @param int|null $dayOfWeek
- * @param int|null $dayOfYear
- *
- * @return int|static
- */
- public function week($week = null, $dayOfWeek = null, $dayOfYear = null);
-
- /**
- * Set/get the week number of year using given first day of week and first
- * day of year included in the first week. Or use US format if no settings
- * given (Sunday / Jan 6).
- *
- * @param int|null $year if null, act as a getter, if not null, set the year and return current instance.
- * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday)
- * @param int|null $dayOfYear first day of year included in the week #1
- *
- * @return int|static
- */
- public function weekYear($year = null, $dayOfWeek = null, $dayOfYear = null);
-
- /**
- * Get/set the weekday from 0 (Sunday) to 6 (Saturday).
- *
- * @param int|null $value new value for weekday if using as setter.
- *
- * @return static|int
- */
- public function weekday($value = null);
-
- /**
- * Get the number of weeks of the current week-year using given first day of week and first
- * day of year included in the first week. Or use US format if no settings
- * given (Sunday / Jan 6).
- *
- * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday)
- * @param int|null $dayOfYear first day of year included in the week #1
- *
- * @return int
- */
- public function weeksInYear($dayOfWeek = null, $dayOfYear = null);
-
- /**
- * Temporarily sets a static date to be used within the callback.
- * Using setTestNow to set the date, executing the callback, then
- * clearing the test instance.
- *
- * /!\ Use this method for unit tests only.
- *
- * @param Closure|static|string|false|null $testNow real or mock Carbon instance
- * @param Closure|null $callback
- *
- * @return mixed
- */
- public static function withTestNow($testNow = null, $callback = null);
-
- /**
- * Create a Carbon instance for yesterday.
- *
- * @param DateTimeZone|string|null $tz
- *
- * @return static
- */
- public static function yesterday($tz = null);
-
- //
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/CarbonInterval.php b/vendor/nesbot/carbon/src/Carbon/CarbonInterval.php
deleted file mode 100644
index 09051a2e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/CarbonInterval.php
+++ /dev/null
@@ -1,2694 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon;
-
-use Carbon\Exceptions\BadFluentConstructorException;
-use Carbon\Exceptions\BadFluentSetterException;
-use Carbon\Exceptions\InvalidCastException;
-use Carbon\Exceptions\InvalidIntervalException;
-use Carbon\Exceptions\ParseErrorException;
-use Carbon\Exceptions\UnitNotConfiguredException;
-use Carbon\Exceptions\UnknownGetterException;
-use Carbon\Exceptions\UnknownSetterException;
-use Carbon\Exceptions\UnknownUnitException;
-use Carbon\Traits\IntervalRounding;
-use Carbon\Traits\IntervalStep;
-use Carbon\Traits\Mixin;
-use Carbon\Traits\Options;
-use Closure;
-use DateInterval;
-use DateTimeInterface;
-use DateTimeZone;
-use Exception;
-use ReflectionException;
-use ReturnTypeWillChange;
-use Throwable;
-
-/**
- * A simple API extension for DateInterval.
- * The implementation provides helpers to handle weeks but only days are saved.
- * Weeks are calculated based on the total days of the current instance.
- *
- * @property int $years Total years of the current interval.
- * @property int $months Total months of the current interval.
- * @property int $weeks Total weeks of the current interval calculated from the days.
- * @property int $dayz Total days of the current interval (weeks * 7 + days).
- * @property int $hours Total hours of the current interval.
- * @property int $minutes Total minutes of the current interval.
- * @property int $seconds Total seconds of the current interval.
- * @property int $microseconds Total microseconds of the current interval.
- * @property int $milliseconds Total microseconds of the current interval.
- * @property int $microExcludeMilli Remaining microseconds without the milliseconds.
- * @property int $dayzExcludeWeeks Total days remaining in the final week of the current instance (days % 7).
- * @property int $daysExcludeWeeks alias of dayzExcludeWeeks
- * @property-read float $totalYears Number of years equivalent to the interval.
- * @property-read float $totalMonths Number of months equivalent to the interval.
- * @property-read float $totalWeeks Number of weeks equivalent to the interval.
- * @property-read float $totalDays Number of days equivalent to the interval.
- * @property-read float $totalDayz Alias for totalDays.
- * @property-read float $totalHours Number of hours equivalent to the interval.
- * @property-read float $totalMinutes Number of minutes equivalent to the interval.
- * @property-read float $totalSeconds Number of seconds equivalent to the interval.
- * @property-read float $totalMilliseconds Number of milliseconds equivalent to the interval.
- * @property-read float $totalMicroseconds Number of microseconds equivalent to the interval.
- * @property-read string $locale locale of the current instance
- *
- * @method static CarbonInterval years($years = 1) Create instance specifying a number of years or modify the number of years if called on an instance.
- * @method static CarbonInterval year($years = 1) Alias for years()
- * @method static CarbonInterval months($months = 1) Create instance specifying a number of months or modify the number of months if called on an instance.
- * @method static CarbonInterval month($months = 1) Alias for months()
- * @method static CarbonInterval weeks($weeks = 1) Create instance specifying a number of weeks or modify the number of weeks if called on an instance.
- * @method static CarbonInterval week($weeks = 1) Alias for weeks()
- * @method static CarbonInterval days($days = 1) Create instance specifying a number of days or modify the number of days if called on an instance.
- * @method static CarbonInterval dayz($days = 1) Alias for days()
- * @method static CarbonInterval daysExcludeWeeks($days = 1) Create instance specifying a number of days or modify the number of days (keeping the current number of weeks) if called on an instance.
- * @method static CarbonInterval dayzExcludeWeeks($days = 1) Alias for daysExcludeWeeks()
- * @method static CarbonInterval day($days = 1) Alias for days()
- * @method static CarbonInterval hours($hours = 1) Create instance specifying a number of hours or modify the number of hours if called on an instance.
- * @method static CarbonInterval hour($hours = 1) Alias for hours()
- * @method static CarbonInterval minutes($minutes = 1) Create instance specifying a number of minutes or modify the number of minutes if called on an instance.
- * @method static CarbonInterval minute($minutes = 1) Alias for minutes()
- * @method static CarbonInterval seconds($seconds = 1) Create instance specifying a number of seconds or modify the number of seconds if called on an instance.
- * @method static CarbonInterval second($seconds = 1) Alias for seconds()
- * @method static CarbonInterval milliseconds($milliseconds = 1) Create instance specifying a number of milliseconds or modify the number of milliseconds if called on an instance.
- * @method static CarbonInterval millisecond($milliseconds = 1) Alias for milliseconds()
- * @method static CarbonInterval microseconds($microseconds = 1) Create instance specifying a number of microseconds or modify the number of microseconds if called on an instance.
- * @method static CarbonInterval microsecond($microseconds = 1) Alias for microseconds()
- * @method $this addYears(int $years) Add given number of years to the current interval
- * @method $this subYears(int $years) Subtract given number of years to the current interval
- * @method $this addMonths(int $months) Add given number of months to the current interval
- * @method $this subMonths(int $months) Subtract given number of months to the current interval
- * @method $this addWeeks(int|float $weeks) Add given number of weeks to the current interval
- * @method $this subWeeks(int|float $weeks) Subtract given number of weeks to the current interval
- * @method $this addDays(int|float $days) Add given number of days to the current interval
- * @method $this subDays(int|float $days) Subtract given number of days to the current interval
- * @method $this addHours(int|float $hours) Add given number of hours to the current interval
- * @method $this subHours(int|float $hours) Subtract given number of hours to the current interval
- * @method $this addMinutes(int|float $minutes) Add given number of minutes to the current interval
- * @method $this subMinutes(int|float $minutes) Subtract given number of minutes to the current interval
- * @method $this addSeconds(int|float $seconds) Add given number of seconds to the current interval
- * @method $this subSeconds(int|float $seconds) Subtract given number of seconds to the current interval
- * @method $this addMilliseconds(int|float $milliseconds) Add given number of milliseconds to the current interval
- * @method $this subMilliseconds(int|float $milliseconds) Subtract given number of milliseconds to the current interval
- * @method $this addMicroseconds(int|float $microseconds) Add given number of microseconds to the current interval
- * @method $this subMicroseconds(int|float $microseconds) Subtract given number of microseconds to the current interval
- * @method $this roundYear(int|float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function.
- * @method $this roundYears(int|float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function.
- * @method $this floorYear(int|float $precision = 1) Truncate the current instance year with given precision.
- * @method $this floorYears(int|float $precision = 1) Truncate the current instance year with given precision.
- * @method $this ceilYear(int|float $precision = 1) Ceil the current instance year with given precision.
- * @method $this ceilYears(int|float $precision = 1) Ceil the current instance year with given precision.
- * @method $this roundMonth(int|float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function.
- * @method $this roundMonths(int|float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function.
- * @method $this floorMonth(int|float $precision = 1) Truncate the current instance month with given precision.
- * @method $this floorMonths(int|float $precision = 1) Truncate the current instance month with given precision.
- * @method $this ceilMonth(int|float $precision = 1) Ceil the current instance month with given precision.
- * @method $this ceilMonths(int|float $precision = 1) Ceil the current instance month with given precision.
- * @method $this roundWeek(int|float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function.
- * @method $this roundWeeks(int|float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function.
- * @method $this floorWeek(int|float $precision = 1) Truncate the current instance day with given precision.
- * @method $this floorWeeks(int|float $precision = 1) Truncate the current instance day with given precision.
- * @method $this ceilWeek(int|float $precision = 1) Ceil the current instance day with given precision.
- * @method $this ceilWeeks(int|float $precision = 1) Ceil the current instance day with given precision.
- * @method $this roundDay(int|float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function.
- * @method $this roundDays(int|float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function.
- * @method $this floorDay(int|float $precision = 1) Truncate the current instance day with given precision.
- * @method $this floorDays(int|float $precision = 1) Truncate the current instance day with given precision.
- * @method $this ceilDay(int|float $precision = 1) Ceil the current instance day with given precision.
- * @method $this ceilDays(int|float $precision = 1) Ceil the current instance day with given precision.
- * @method $this roundHour(int|float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function.
- * @method $this roundHours(int|float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function.
- * @method $this floorHour(int|float $precision = 1) Truncate the current instance hour with given precision.
- * @method $this floorHours(int|float $precision = 1) Truncate the current instance hour with given precision.
- * @method $this ceilHour(int|float $precision = 1) Ceil the current instance hour with given precision.
- * @method $this ceilHours(int|float $precision = 1) Ceil the current instance hour with given precision.
- * @method $this roundMinute(int|float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function.
- * @method $this roundMinutes(int|float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function.
- * @method $this floorMinute(int|float $precision = 1) Truncate the current instance minute with given precision.
- * @method $this floorMinutes(int|float $precision = 1) Truncate the current instance minute with given precision.
- * @method $this ceilMinute(int|float $precision = 1) Ceil the current instance minute with given precision.
- * @method $this ceilMinutes(int|float $precision = 1) Ceil the current instance minute with given precision.
- * @method $this roundSecond(int|float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function.
- * @method $this roundSeconds(int|float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function.
- * @method $this floorSecond(int|float $precision = 1) Truncate the current instance second with given precision.
- * @method $this floorSeconds(int|float $precision = 1) Truncate the current instance second with given precision.
- * @method $this ceilSecond(int|float $precision = 1) Ceil the current instance second with given precision.
- * @method $this ceilSeconds(int|float $precision = 1) Ceil the current instance second with given precision.
- * @method $this roundMillennium(int|float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function.
- * @method $this roundMillennia(int|float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function.
- * @method $this floorMillennium(int|float $precision = 1) Truncate the current instance millennium with given precision.
- * @method $this floorMillennia(int|float $precision = 1) Truncate the current instance millennium with given precision.
- * @method $this ceilMillennium(int|float $precision = 1) Ceil the current instance millennium with given precision.
- * @method $this ceilMillennia(int|float $precision = 1) Ceil the current instance millennium with given precision.
- * @method $this roundCentury(int|float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function.
- * @method $this roundCenturies(int|float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function.
- * @method $this floorCentury(int|float $precision = 1) Truncate the current instance century with given precision.
- * @method $this floorCenturies(int|float $precision = 1) Truncate the current instance century with given precision.
- * @method $this ceilCentury(int|float $precision = 1) Ceil the current instance century with given precision.
- * @method $this ceilCenturies(int|float $precision = 1) Ceil the current instance century with given precision.
- * @method $this roundDecade(int|float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function.
- * @method $this roundDecades(int|float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function.
- * @method $this floorDecade(int|float $precision = 1) Truncate the current instance decade with given precision.
- * @method $this floorDecades(int|float $precision = 1) Truncate the current instance decade with given precision.
- * @method $this ceilDecade(int|float $precision = 1) Ceil the current instance decade with given precision.
- * @method $this ceilDecades(int|float $precision = 1) Ceil the current instance decade with given precision.
- * @method $this roundQuarter(int|float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function.
- * @method $this roundQuarters(int|float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function.
- * @method $this floorQuarter(int|float $precision = 1) Truncate the current instance quarter with given precision.
- * @method $this floorQuarters(int|float $precision = 1) Truncate the current instance quarter with given precision.
- * @method $this ceilQuarter(int|float $precision = 1) Ceil the current instance quarter with given precision.
- * @method $this ceilQuarters(int|float $precision = 1) Ceil the current instance quarter with given precision.
- * @method $this roundMillisecond(int|float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function.
- * @method $this roundMilliseconds(int|float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function.
- * @method $this floorMillisecond(int|float $precision = 1) Truncate the current instance millisecond with given precision.
- * @method $this floorMilliseconds(int|float $precision = 1) Truncate the current instance millisecond with given precision.
- * @method $this ceilMillisecond(int|float $precision = 1) Ceil the current instance millisecond with given precision.
- * @method $this ceilMilliseconds(int|float $precision = 1) Ceil the current instance millisecond with given precision.
- * @method $this roundMicrosecond(int|float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function.
- * @method $this roundMicroseconds(int|float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function.
- * @method $this floorMicrosecond(int|float $precision = 1) Truncate the current instance microsecond with given precision.
- * @method $this floorMicroseconds(int|float $precision = 1) Truncate the current instance microsecond with given precision.
- * @method $this ceilMicrosecond(int|float $precision = 1) Ceil the current instance microsecond with given precision.
- * @method $this ceilMicroseconds(int|float $precision = 1) Ceil the current instance microsecond with given precision.
- */
-class CarbonInterval extends DateInterval implements CarbonConverterInterface
-{
- use IntervalRounding;
- use IntervalStep;
- use Mixin {
- Mixin::mixin as baseMixin;
- }
- use Options;
-
- /**
- * Interval spec period designators
- */
- public const PERIOD_PREFIX = 'P';
- public const PERIOD_YEARS = 'Y';
- public const PERIOD_MONTHS = 'M';
- public const PERIOD_DAYS = 'D';
- public const PERIOD_TIME_PREFIX = 'T';
- public const PERIOD_HOURS = 'H';
- public const PERIOD_MINUTES = 'M';
- public const PERIOD_SECONDS = 'S';
-
- /**
- * A translator to ... er ... translate stuff
- *
- * @var \Symfony\Component\Translation\TranslatorInterface
- */
- protected static $translator;
-
- /**
- * @var array|null
- */
- protected static $cascadeFactors;
-
- /**
- * @var array
- */
- protected static $formats = [
- 'y' => 'y',
- 'Y' => 'y',
- 'o' => 'y',
- 'm' => 'm',
- 'n' => 'm',
- 'W' => 'weeks',
- 'd' => 'd',
- 'j' => 'd',
- 'z' => 'd',
- 'h' => 'h',
- 'g' => 'h',
- 'H' => 'h',
- 'G' => 'h',
- 'i' => 'i',
- 's' => 's',
- 'u' => 'micro',
- 'v' => 'milli',
- ];
-
- /**
- * @var array|null
- */
- private static $flipCascadeFactors;
-
- /**
- * The registered macros.
- *
- * @var array
- */
- protected static $macros = [];
-
- /**
- * Timezone handler for settings() method.
- *
- * @var mixed
- */
- protected $tzName;
-
- /**
- * Set the instance's timezone from a string or object.
- *
- * @param \DateTimeZone|string $tzName
- *
- * @return static
- */
- public function setTimezone($tzName)
- {
- $this->tzName = $tzName;
-
- return $this;
- }
-
- /**
- * @internal
- *
- * Set the instance's timezone from a string or object and add/subtract the offset difference.
- *
- * @param \DateTimeZone|string $tzName
- *
- * @return static
- */
- public function shiftTimezone($tzName)
- {
- $this->tzName = $tzName;
-
- return $this;
- }
-
- /**
- * Mapping of units and factors for cascading.
- *
- * Should only be modified by changing the factors or referenced constants.
- *
- * @return array
- */
- public static function getCascadeFactors()
- {
- return static::$cascadeFactors ?: [
- 'milliseconds' => [Carbon::MICROSECONDS_PER_MILLISECOND, 'microseconds'],
- 'seconds' => [Carbon::MILLISECONDS_PER_SECOND, 'milliseconds'],
- 'minutes' => [Carbon::SECONDS_PER_MINUTE, 'seconds'],
- 'hours' => [Carbon::MINUTES_PER_HOUR, 'minutes'],
- 'dayz' => [Carbon::HOURS_PER_DAY, 'hours'],
- 'weeks' => [Carbon::DAYS_PER_WEEK, 'dayz'],
- 'months' => [Carbon::WEEKS_PER_MONTH, 'weeks'],
- 'years' => [Carbon::MONTHS_PER_YEAR, 'months'],
- ];
- }
-
- private static function standardizeUnit($unit)
- {
- $unit = rtrim($unit, 'sz').'s';
-
- return $unit === 'days' ? 'dayz' : $unit;
- }
-
- private static function getFlipCascadeFactors()
- {
- if (!self::$flipCascadeFactors) {
- self::$flipCascadeFactors = [];
-
- foreach (static::getCascadeFactors() as $to => [$factor, $from]) {
- self::$flipCascadeFactors[self::standardizeUnit($from)] = [self::standardizeUnit($to), $factor];
- }
- }
-
- return self::$flipCascadeFactors;
- }
-
- /**
- * Set default cascading factors for ->cascade() method.
- *
- * @param array $cascadeFactors
- */
- public static function setCascadeFactors(array $cascadeFactors)
- {
- self::$flipCascadeFactors = null;
- static::$cascadeFactors = $cascadeFactors;
- }
-
- ///////////////////////////////////////////////////////////////////
- //////////////////////////// CONSTRUCTORS /////////////////////////
- ///////////////////////////////////////////////////////////////////
-
- /**
- * Create a new CarbonInterval instance.
- *
- * @param int|null $years
- * @param int|null $months
- * @param int|null $weeks
- * @param int|null $days
- * @param int|null $hours
- * @param int|null $minutes
- * @param int|null $seconds
- * @param int|null $microseconds
- *
- * @throws Exception when the interval_spec (passed as $years) cannot be parsed as an interval.
- */
- public function __construct($years = 1, $months = null, $weeks = null, $days = null, $hours = null, $minutes = null, $seconds = null, $microseconds = null)
- {
- if ($years instanceof Closure) {
- $this->step = $years;
- $years = null;
- }
-
- if ($years instanceof DateInterval) {
- parent::__construct(static::getDateIntervalSpec($years));
- $this->f = $years->f;
- static::copyNegativeUnits($years, $this);
-
- return;
- }
-
- $spec = $years;
-
- if (!\is_string($spec) || (float) $years || preg_match('/^[0-9.]/', $years)) {
- $spec = static::PERIOD_PREFIX;
-
- $spec .= $years > 0 ? $years.static::PERIOD_YEARS : '';
- $spec .= $months > 0 ? $months.static::PERIOD_MONTHS : '';
-
- $specDays = 0;
- $specDays += $weeks > 0 ? $weeks * static::getDaysPerWeek() : 0;
- $specDays += $days > 0 ? $days : 0;
-
- $spec .= $specDays > 0 ? $specDays.static::PERIOD_DAYS : '';
-
- if ($hours > 0 || $minutes > 0 || $seconds > 0) {
- $spec .= static::PERIOD_TIME_PREFIX;
- $spec .= $hours > 0 ? $hours.static::PERIOD_HOURS : '';
- $spec .= $minutes > 0 ? $minutes.static::PERIOD_MINUTES : '';
- $spec .= $seconds > 0 ? $seconds.static::PERIOD_SECONDS : '';
- }
-
- if ($spec === static::PERIOD_PREFIX) {
- // Allow the zero interval.
- $spec .= '0'.static::PERIOD_YEARS;
- }
- }
-
- parent::__construct($spec);
-
- if ($microseconds !== null) {
- $this->f = $microseconds / Carbon::MICROSECONDS_PER_SECOND;
- }
- }
-
- /**
- * Returns the factor for a given source-to-target couple.
- *
- * @param string $source
- * @param string $target
- *
- * @return int|null
- */
- public static function getFactor($source, $target)
- {
- $source = self::standardizeUnit($source);
- $target = self::standardizeUnit($target);
- $factors = static::getFlipCascadeFactors();
-
- if (isset($factors[$source])) {
- [$to, $factor] = $factors[$source];
-
- if ($to === $target) {
- return $factor;
- }
-
- return $factor * static::getFactor($to, $target);
- }
-
- return null;
- }
-
- /**
- * Returns current config for days per week.
- *
- * @return int
- */
- public static function getDaysPerWeek()
- {
- return static::getFactor('dayz', 'weeks') ?: Carbon::DAYS_PER_WEEK;
- }
-
- /**
- * Returns current config for hours per day.
- *
- * @return int
- */
- public static function getHoursPerDay()
- {
- return static::getFactor('hours', 'dayz') ?: Carbon::HOURS_PER_DAY;
- }
-
- /**
- * Returns current config for minutes per hour.
- *
- * @return int
- */
- public static function getMinutesPerHour()
- {
- return static::getFactor('minutes', 'hours') ?: Carbon::MINUTES_PER_HOUR;
- }
-
- /**
- * Returns current config for seconds per minute.
- *
- * @return int
- */
- public static function getSecondsPerMinute()
- {
- return static::getFactor('seconds', 'minutes') ?: Carbon::SECONDS_PER_MINUTE;
- }
-
- /**
- * Returns current config for microseconds per second.
- *
- * @return int
- */
- public static function getMillisecondsPerSecond()
- {
- return static::getFactor('milliseconds', 'seconds') ?: Carbon::MILLISECONDS_PER_SECOND;
- }
-
- /**
- * Returns current config for microseconds per second.
- *
- * @return int
- */
- public static function getMicrosecondsPerMillisecond()
- {
- return static::getFactor('microseconds', 'milliseconds') ?: Carbon::MICROSECONDS_PER_MILLISECOND;
- }
-
- /**
- * Create a new CarbonInterval instance from specific values.
- * This is an alias for the constructor that allows better fluent
- * syntax as it allows you to do CarbonInterval::create(1)->fn() rather than
- * (new CarbonInterval(1))->fn().
- *
- * @param int $years
- * @param int $months
- * @param int $weeks
- * @param int $days
- * @param int $hours
- * @param int $minutes
- * @param int $seconds
- * @param int $microseconds
- *
- * @throws Exception when the interval_spec (passed as $years) cannot be parsed as an interval.
- *
- * @return static
- */
- public static function create($years = 1, $months = null, $weeks = null, $days = null, $hours = null, $minutes = null, $seconds = null, $microseconds = null)
- {
- return new static($years, $months, $weeks, $days, $hours, $minutes, $seconds, $microseconds);
- }
-
- /**
- * Parse a string into a new CarbonInterval object according to the specified format.
- *
- * @example
- * ```
- * echo Carboninterval::createFromFormat('H:i', '1:30');
- * ```
- *
- * @param string $format Format of the $interval input string
- * @param string|null $interval Input string to convert into an interval
- *
- * @throws \Carbon\Exceptions\ParseErrorException when the $interval cannot be parsed as an interval.
- *
- * @return static
- */
- public static function createFromFormat(string $format, ?string $interval)
- {
- $instance = new static(0);
- $length = mb_strlen($format);
-
- if (preg_match('/s([,.])([uv])$/', $format, $match)) {
- $interval = explode($match[1], $interval);
- $index = \count($interval) - 1;
- $interval[$index] = str_pad($interval[$index], $match[2] === 'v' ? 3 : 6, '0');
- $interval = implode($match[1], $interval);
- }
-
- $interval = $interval ?? '';
-
- for ($index = 0; $index < $length; $index++) {
- $expected = mb_substr($format, $index, 1);
- $nextCharacter = mb_substr($interval, 0, 1);
- $unit = static::$formats[$expected] ?? null;
-
- if ($unit) {
- if (!preg_match('/^-?\d+/', $interval, $match)) {
- throw new ParseErrorException('number', $nextCharacter);
- }
-
- $interval = mb_substr($interval, mb_strlen($match[0]));
- $instance->$unit += (int) ($match[0]);
-
- continue;
- }
-
- if ($nextCharacter !== $expected) {
- throw new ParseErrorException(
- "'$expected'",
- $nextCharacter,
- 'Allowed substitutes for interval formats are '.implode(', ', array_keys(static::$formats))."\n".
- 'See https://php.net/manual/en/function.date.php for their meaning'
- );
- }
-
- $interval = mb_substr($interval, 1);
- }
-
- if ($interval !== '') {
- throw new ParseErrorException(
- 'end of string',
- $interval
- );
- }
-
- return $instance;
- }
-
- /**
- * Get a copy of the instance.
- *
- * @return static
- */
- public function copy()
- {
- $date = new static(0);
- $date->copyProperties($this);
- $date->step = $this->step;
-
- return $date;
- }
-
- /**
- * Get a copy of the instance.
- *
- * @return static
- */
- public function clone()
- {
- return $this->copy();
- }
-
- /**
- * Provide static helpers to create instances. Allows CarbonInterval::years(3).
- *
- * Note: This is done using the magic method to allow static and instance methods to
- * have the same names.
- *
- * @param string $method magic method name called
- * @param array $parameters parameters list
- *
- * @return static|null
- */
- public static function __callStatic($method, $parameters)
- {
- try {
- $interval = new static(0);
- $localStrictModeEnabled = $interval->localStrictModeEnabled;
- $interval->localStrictModeEnabled = true;
-
- $result = static::hasMacro($method)
- ? static::bindMacroContext(null, function () use (&$method, &$parameters, &$interval) {
- return $interval->callMacro($method, $parameters);
- })
- : $interval->$method(...$parameters);
-
- $interval->localStrictModeEnabled = $localStrictModeEnabled;
-
- return $result;
- } catch (BadFluentSetterException $exception) {
- if (Carbon::isStrictModeEnabled()) {
- throw new BadFluentConstructorException($method, 0, $exception);
- }
-
- return null;
- }
- }
-
- /**
- * Return the current context from inside a macro callee or a new one if static.
- *
- * @return static
- */
- protected static function this()
- {
- return end(static::$macroContextStack) ?: new static(0);
- }
-
- /**
- * Creates a CarbonInterval from string.
- *
- * Format:
- *
- * Suffix | Unit | Example | DateInterval expression
- * -------|---------|---------|------------------------
- * y | years | 1y | P1Y
- * mo | months | 3mo | P3M
- * w | weeks | 2w | P2W
- * d | days | 28d | P28D
- * h | hours | 4h | PT4H
- * m | minutes | 12m | PT12M
- * s | seconds | 59s | PT59S
- *
- * e. g. `1w 3d 4h 32m 23s` is converted to 10 days 4 hours 32 minutes and 23 seconds.
- *
- * Special cases:
- * - An empty string will return a zero interval
- * - Fractions are allowed for weeks, days, hours and minutes and will be converted
- * and rounded to the next smaller value (caution: 0.5w = 4d)
- *
- * @param string $intervalDefinition
- *
- * @return static
- */
- public static function fromString($intervalDefinition)
- {
- if (empty($intervalDefinition)) {
- return new static(0);
- }
-
- $years = 0;
- $months = 0;
- $weeks = 0;
- $days = 0;
- $hours = 0;
- $minutes = 0;
- $seconds = 0;
- $milliseconds = 0;
- $microseconds = 0;
-
- $pattern = '/(\d+(?:\.\d+)?)\h*([^\d\h]*)/i';
- preg_match_all($pattern, $intervalDefinition, $parts, PREG_SET_ORDER);
-
- while ([$part, $value, $unit] = array_shift($parts)) {
- $intValue = (int) $value;
- $fraction = (float) $value - $intValue;
-
- // Fix calculation precision
- switch (round($fraction, 6)) {
- case 1:
- $fraction = 0;
- $intValue++;
-
- break;
- case 0:
- $fraction = 0;
-
- break;
- }
-
- switch ($unit === 'µs' ? 'µs' : strtolower($unit)) {
- case 'millennia':
- case 'millennium':
- $years += $intValue * CarbonInterface::YEARS_PER_MILLENNIUM;
-
- break;
-
- case 'century':
- case 'centuries':
- $years += $intValue * CarbonInterface::YEARS_PER_CENTURY;
-
- break;
-
- case 'decade':
- case 'decades':
- $years += $intValue * CarbonInterface::YEARS_PER_DECADE;
-
- break;
-
- case 'year':
- case 'years':
- case 'y':
- $years += $intValue;
-
- break;
-
- case 'quarter':
- case 'quarters':
- $months += $intValue * CarbonInterface::MONTHS_PER_QUARTER;
-
- break;
-
- case 'month':
- case 'months':
- case 'mo':
- $months += $intValue;
-
- break;
-
- case 'week':
- case 'weeks':
- case 'w':
- $weeks += $intValue;
-
- if ($fraction) {
- $parts[] = [null, $fraction * static::getDaysPerWeek(), 'd'];
- }
-
- break;
-
- case 'day':
- case 'days':
- case 'd':
- $days += $intValue;
-
- if ($fraction) {
- $parts[] = [null, $fraction * static::getHoursPerDay(), 'h'];
- }
-
- break;
-
- case 'hour':
- case 'hours':
- case 'h':
- $hours += $intValue;
-
- if ($fraction) {
- $parts[] = [null, $fraction * static::getMinutesPerHour(), 'm'];
- }
-
- break;
-
- case 'minute':
- case 'minutes':
- case 'm':
- $minutes += $intValue;
-
- if ($fraction) {
- $parts[] = [null, $fraction * static::getSecondsPerMinute(), 's'];
- }
-
- break;
-
- case 'second':
- case 'seconds':
- case 's':
- $seconds += $intValue;
-
- if ($fraction) {
- $parts[] = [null, $fraction * static::getMillisecondsPerSecond(), 'ms'];
- }
-
- break;
-
- case 'millisecond':
- case 'milliseconds':
- case 'milli':
- case 'ms':
- $milliseconds += $intValue;
-
- if ($fraction) {
- $microseconds += round($fraction * static::getMicrosecondsPerMillisecond());
- }
-
- break;
-
- case 'microsecond':
- case 'microseconds':
- case 'micro':
- case 'µs':
- $microseconds += $intValue;
-
- break;
-
- default:
- throw new InvalidIntervalException(
- sprintf('Invalid part %s in definition %s', $part, $intervalDefinition)
- );
- }
- }
-
- return new static($years, $months, $weeks, $days, $hours, $minutes, $seconds, $milliseconds * Carbon::MICROSECONDS_PER_MILLISECOND + $microseconds);
- }
-
- /**
- * Creates a CarbonInterval from string using a different locale.
- *
- * @param string $interval interval string in the given language (may also contain English).
- * @param string|null $locale if locale is null or not specified, current global locale will be used instead.
- *
- * @return static
- */
- public static function parseFromLocale($interval, $locale = null)
- {
- return static::fromString(Carbon::translateTimeString($interval, $locale ?: static::getLocale(), 'en'));
- }
-
- private static function castIntervalToClass(DateInterval $interval, string $className)
- {
- $mainClass = DateInterval::class;
-
- if (!is_a($className, $mainClass, true)) {
- throw new InvalidCastException("$className is not a sub-class of $mainClass.");
- }
-
- $microseconds = $interval->f;
- $instance = new $className(static::getDateIntervalSpec($interval));
-
- if ($microseconds) {
- $instance->f = $microseconds;
- }
-
- if ($interval instanceof self && is_a($className, self::class, true)) {
- static::copyStep($interval, $instance);
- }
-
- static::copyNegativeUnits($interval, $instance);
-
- return $instance;
- }
-
- private static function copyNegativeUnits(DateInterval $from, DateInterval $to): void
- {
- $to->invert = $from->invert;
-
- foreach (['y', 'm', 'd', 'h', 'i', 's'] as $unit) {
- if ($from->$unit < 0) {
- $to->$unit *= -1;
- }
- }
- }
-
- private static function copyStep(self $from, self $to): void
- {
- $to->setStep($from->getStep());
- }
-
- /**
- * Cast the current instance into the given class.
- *
- * @param string $className The $className::instance() method will be called to cast the current object.
- *
- * @return DateInterval
- */
- public function cast(string $className)
- {
- return self::castIntervalToClass($this, $className);
- }
-
- /**
- * Create a CarbonInterval instance from a DateInterval one. Can not instance
- * DateInterval objects created from DateTime::diff() as you can't externally
- * set the $days field.
- *
- * @param DateInterval $interval
- *
- * @return static
- */
- public static function instance(DateInterval $interval)
- {
- return self::castIntervalToClass($interval, static::class);
- }
-
- /**
- * Make a CarbonInterval instance from given variable if possible.
- *
- * Always return a new instance. Parse only strings and only these likely to be intervals (skip dates
- * and recurrences). Throw an exception for invalid format, but otherwise return null.
- *
- * @param mixed|int|DateInterval|string|Closure|null $interval interval or number of the given $unit
- * @param string|null $unit if specified, $interval must be an integer
- *
- * @return static|null
- */
- public static function make($interval, $unit = null)
- {
- if ($unit) {
- $interval = "$interval ".Carbon::pluralUnit($unit);
- }
-
- if ($interval instanceof DateInterval) {
- return static::instance($interval);
- }
-
- if ($interval instanceof Closure) {
- return new static($interval);
- }
-
- if (!\is_string($interval)) {
- return null;
- }
-
- return static::makeFromString($interval);
- }
-
- protected static function makeFromString(string $interval)
- {
- $interval = preg_replace('/\s+/', ' ', trim($interval));
-
- if (preg_match('/^P[T0-9]/', $interval)) {
- return new static($interval);
- }
-
- if (preg_match('/^(?:\h*\d+(?:\.\d+)?\h*[a-z]+)+$/i', $interval)) {
- return static::fromString($interval);
- }
-
- /** @var static $interval */
- $interval = static::createFromDateString($interval);
-
- return !$interval || $interval->isEmpty() ? null : $interval;
- }
-
- protected function resolveInterval($interval)
- {
- if (!($interval instanceof self)) {
- return self::make($interval);
- }
-
- return $interval;
- }
-
- /**
- * Sets up a DateInterval from the relative parts of the string.
- *
- * @param string $time
- *
- * @return static
- *
- * @link https://php.net/manual/en/dateinterval.createfromdatestring.php
- */
- #[ReturnTypeWillChange]
- public static function createFromDateString($time)
- {
- $interval = @parent::createFromDateString(strtr($time, [
- ',' => ' ',
- ' and ' => ' ',
- ]));
-
- if ($interval instanceof DateInterval) {
- $interval = static::instance($interval);
- }
-
- return $interval;
- }
-
- ///////////////////////////////////////////////////////////////////
- ///////////////////////// GETTERS AND SETTERS /////////////////////
- ///////////////////////////////////////////////////////////////////
-
- /**
- * Get a part of the CarbonInterval object.
- *
- * @param string $name
- *
- * @throws UnknownGetterException
- *
- * @return int|float|string
- */
- public function get($name)
- {
- if (str_starts_with($name, 'total')) {
- return $this->total(substr($name, 5));
- }
-
- switch ($name) {
- case 'years':
- return $this->y;
-
- case 'months':
- return $this->m;
-
- case 'dayz':
- return $this->d;
-
- case 'hours':
- return $this->h;
-
- case 'minutes':
- return $this->i;
-
- case 'seconds':
- return $this->s;
-
- case 'milli':
- case 'milliseconds':
- return (int) (round($this->f * Carbon::MICROSECONDS_PER_SECOND) / Carbon::MICROSECONDS_PER_MILLISECOND);
-
- case 'micro':
- case 'microseconds':
- return (int) round($this->f * Carbon::MICROSECONDS_PER_SECOND);
-
- case 'microExcludeMilli':
- return (int) round($this->f * Carbon::MICROSECONDS_PER_SECOND) % Carbon::MICROSECONDS_PER_MILLISECOND;
-
- case 'weeks':
- return (int) ($this->d / static::getDaysPerWeek());
-
- case 'daysExcludeWeeks':
- case 'dayzExcludeWeeks':
- return $this->d % static::getDaysPerWeek();
-
- case 'locale':
- return $this->getTranslatorLocale();
-
- default:
- throw new UnknownGetterException($name);
- }
- }
-
- /**
- * Get a part of the CarbonInterval object.
- *
- * @param string $name
- *
- * @throws UnknownGetterException
- *
- * @return int|float|string
- */
- public function __get($name)
- {
- return $this->get($name);
- }
-
- /**
- * Set a part of the CarbonInterval object.
- *
- * @param string|array $name
- * @param int $value
- *
- * @throws UnknownSetterException
- *
- * @return $this
- */
- public function set($name, $value = null)
- {
- $properties = \is_array($name) ? $name : [$name => $value];
-
- foreach ($properties as $key => $value) {
- switch (Carbon::singularUnit(rtrim($key, 'z'))) {
- case 'year':
- $this->y = $value;
-
- break;
-
- case 'month':
- $this->m = $value;
-
- break;
-
- case 'week':
- $this->d = $value * static::getDaysPerWeek();
-
- break;
-
- case 'day':
- $this->d = $value;
-
- break;
-
- case 'daysexcludeweek':
- case 'dayzexcludeweek':
- $this->d = $this->weeks * static::getDaysPerWeek() + $value;
-
- break;
-
- case 'hour':
- $this->h = $value;
-
- break;
-
- case 'minute':
- $this->i = $value;
-
- break;
-
- case 'second':
- $this->s = $value;
-
- break;
-
- case 'milli':
- case 'millisecond':
- $this->microseconds = $value * Carbon::MICROSECONDS_PER_MILLISECOND + $this->microseconds % Carbon::MICROSECONDS_PER_MILLISECOND;
-
- break;
-
- case 'micro':
- case 'microsecond':
- $this->f = $value / Carbon::MICROSECONDS_PER_SECOND;
-
- break;
-
- default:
- if ($this->localStrictModeEnabled ?? Carbon::isStrictModeEnabled()) {
- throw new UnknownSetterException($key);
- }
-
- $this->$key = $value;
- }
- }
-
- return $this;
- }
-
- /**
- * Set a part of the CarbonInterval object.
- *
- * @param string $name
- * @param int $value
- *
- * @throws UnknownSetterException
- */
- public function __set($name, $value)
- {
- $this->set($name, $value);
- }
-
- /**
- * Allow setting of weeks and days to be cumulative.
- *
- * @param int $weeks Number of weeks to set
- * @param int $days Number of days to set
- *
- * @return static
- */
- public function weeksAndDays($weeks, $days)
- {
- $this->dayz = ($weeks * static::getDaysPerWeek()) + $days;
-
- return $this;
- }
-
- /**
- * Returns true if the interval is empty for each unit.
- *
- * @return bool
- */
- public function isEmpty()
- {
- return $this->years === 0 &&
- $this->months === 0 &&
- $this->dayz === 0 &&
- !$this->days &&
- $this->hours === 0 &&
- $this->minutes === 0 &&
- $this->seconds === 0 &&
- $this->microseconds === 0;
- }
-
- /**
- * Register a custom macro.
- *
- * @example
- * ```
- * CarbonInterval::macro('twice', function () {
- * return $this->times(2);
- * });
- * echo CarbonInterval::hours(2)->twice();
- * ```
- *
- * @param string $name
- * @param object|callable $macro
- *
- * @return void
- */
- public static function macro($name, $macro)
- {
- static::$macros[$name] = $macro;
- }
-
- /**
- * Register macros from a mixin object.
- *
- * @example
- * ```
- * CarbonInterval::mixin(new class {
- * public function daysToHours() {
- * return function () {
- * $this->hours += $this->days;
- * $this->days = 0;
- *
- * return $this;
- * };
- * }
- * public function hoursToDays() {
- * return function () {
- * $this->days += $this->hours;
- * $this->hours = 0;
- *
- * return $this;
- * };
- * }
- * });
- * echo CarbonInterval::hours(5)->hoursToDays() . "\n";
- * echo CarbonInterval::days(5)->daysToHours() . "\n";
- * ```
- *
- * @param object|string $mixin
- *
- * @throws ReflectionException
- *
- * @return void
- */
- public static function mixin($mixin)
- {
- static::baseMixin($mixin);
- }
-
- /**
- * Check if macro is registered.
- *
- * @param string $name
- *
- * @return bool
- */
- public static function hasMacro($name)
- {
- return isset(static::$macros[$name]);
- }
-
- /**
- * Call given macro.
- *
- * @param string $name
- * @param array $parameters
- *
- * @return mixed
- */
- protected function callMacro($name, $parameters)
- {
- $macro = static::$macros[$name];
-
- if ($macro instanceof Closure) {
- $boundMacro = @$macro->bindTo($this, static::class) ?: @$macro->bindTo(null, static::class);
-
- return ($boundMacro ?: $macro)(...$parameters);
- }
-
- return $macro(...$parameters);
- }
-
- /**
- * Allow fluent calls on the setters... CarbonInterval::years(3)->months(5)->day().
- *
- * Note: This is done using the magic method to allow static and instance methods to
- * have the same names.
- *
- * @param string $method magic method name called
- * @param array $parameters parameters list
- *
- * @throws BadFluentSetterException|Throwable
- *
- * @return static
- */
- public function __call($method, $parameters)
- {
- if (static::hasMacro($method)) {
- return static::bindMacroContext($this, function () use (&$method, &$parameters) {
- return $this->callMacro($method, $parameters);
- });
- }
-
- $roundedValue = $this->callRoundMethod($method, $parameters);
-
- if ($roundedValue !== null) {
- return $roundedValue;
- }
-
- if (preg_match('/^(?add|sub)(?[A-Z].*)$/', $method, $match)) {
- return $this->{$match['method']}($parameters[0], $match['unit']);
- }
-
- try {
- $this->set($method, \count($parameters) === 0 ? 1 : $parameters[0]);
- } catch (UnknownSetterException $exception) {
- if ($this->localStrictModeEnabled ?? Carbon::isStrictModeEnabled()) {
- throw new BadFluentSetterException($method, 0, $exception);
- }
- }
-
- return $this;
- }
-
- protected function getForHumansInitialVariables($syntax, $short)
- {
- if (\is_array($syntax)) {
- return $syntax;
- }
-
- if (\is_int($short)) {
- return [
- 'parts' => $short,
- 'short' => false,
- ];
- }
-
- if (\is_bool($syntax)) {
- return [
- 'short' => $syntax,
- 'syntax' => CarbonInterface::DIFF_ABSOLUTE,
- ];
- }
-
- return [];
- }
-
- /**
- * @param mixed $syntax
- * @param mixed $short
- * @param mixed $parts
- * @param mixed $options
- *
- * @return array
- */
- protected function getForHumansParameters($syntax = null, $short = false, $parts = -1, $options = null)
- {
- $optionalSpace = ' ';
- $default = $this->getTranslationMessage('list.0') ?? $this->getTranslationMessage('list') ?? ' ';
- $join = $default === '' ? '' : ' ';
- $altNumbers = false;
- $aUnit = false;
- $minimumUnit = 's';
- extract($this->getForHumansInitialVariables($syntax, $short));
-
- if ($syntax === null) {
- $syntax = CarbonInterface::DIFF_ABSOLUTE;
- }
-
- if ($parts === -1) {
- $parts = INF;
- }
-
- if ($options === null) {
- $options = static::getHumanDiffOptions();
- }
-
- if ($join === false) {
- $join = ' ';
- } elseif ($join === true) {
- $join = [
- $default,
- $this->getTranslationMessage('list.1') ?? $default,
- ];
- }
-
- if ($altNumbers) {
- if ($altNumbers !== true) {
- $language = new Language($this->locale);
- $altNumbers = \in_array($language->getCode(), (array) $altNumbers);
- }
- }
-
- if (\is_array($join)) {
- [$default, $last] = $join;
-
- if ($default !== ' ') {
- $optionalSpace = '';
- }
-
- $join = function ($list) use ($default, $last) {
- if (\count($list) < 2) {
- return implode('', $list);
- }
-
- $end = array_pop($list);
-
- return implode($default, $list).$last.$end;
- };
- }
-
- if (\is_string($join)) {
- if ($join !== ' ') {
- $optionalSpace = '';
- }
-
- $glue = $join;
- $join = function ($list) use ($glue) {
- return implode($glue, $list);
- };
- }
-
- $interpolations = [
- ':optional-space' => $optionalSpace,
- ];
-
- return [$syntax, $short, $parts, $options, $join, $aUnit, $altNumbers, $interpolations, $minimumUnit];
- }
-
- protected static function getRoundingMethodFromOptions(int $options): ?string
- {
- if ($options & CarbonInterface::ROUND) {
- return 'round';
- }
-
- if ($options & CarbonInterface::CEIL) {
- return 'ceil';
- }
-
- if ($options & CarbonInterface::FLOOR) {
- return 'floor';
- }
-
- return null;
- }
-
- /**
- * Returns interval values as an array where key are the unit names and values the counts.
- *
- * @return int[]
- */
- public function toArray()
- {
- return [
- 'years' => $this->years,
- 'months' => $this->months,
- 'weeks' => $this->weeks,
- 'days' => $this->daysExcludeWeeks,
- 'hours' => $this->hours,
- 'minutes' => $this->minutes,
- 'seconds' => $this->seconds,
- 'microseconds' => $this->microseconds,
- ];
- }
-
- /**
- * Returns interval non-zero values as an array where key are the unit names and values the counts.
- *
- * @return int[]
- */
- public function getNonZeroValues()
- {
- return array_filter($this->toArray(), 'intval');
- }
-
- /**
- * Returns interval values as an array where key are the unit names and values the counts
- * from the biggest non-zero one the the smallest non-zero one.
- *
- * @return int[]
- */
- public function getValuesSequence()
- {
- $nonZeroValues = $this->getNonZeroValues();
-
- if ($nonZeroValues === []) {
- return [];
- }
-
- $keys = array_keys($nonZeroValues);
- $firstKey = $keys[0];
- $lastKey = $keys[\count($keys) - 1];
- $values = [];
- $record = false;
-
- foreach ($this->toArray() as $unit => $count) {
- if ($unit === $firstKey) {
- $record = true;
- }
-
- if ($record) {
- $values[$unit] = $count;
- }
-
- if ($unit === $lastKey) {
- $record = false;
- }
- }
-
- return $values;
- }
-
- /**
- * Get the current interval in a human readable format in the current locale.
- *
- * @example
- * ```
- * echo CarbonInterval::fromString('4d 3h 40m')->forHumans() . "\n";
- * echo CarbonInterval::fromString('4d 3h 40m')->forHumans(['parts' => 2]) . "\n";
- * echo CarbonInterval::fromString('4d 3h 40m')->forHumans(['parts' => 3, 'join' => true]) . "\n";
- * echo CarbonInterval::fromString('4d 3h 40m')->forHumans(['short' => true]) . "\n";
- * echo CarbonInterval::fromString('1d 24h')->forHumans(['join' => ' or ']) . "\n";
- * echo CarbonInterval::fromString('1d 24h')->forHumans(['minimumUnit' => 'hour']) . "\n";
- * ```
- *
- * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains:
- * - 'syntax' entry (see below)
- * - 'short' entry (see below)
- * - 'parts' entry (see below)
- * - 'options' entry (see below)
- * - 'aUnit' entry, prefer "an hour" over "1 hour" if true
- * - 'join' entry determines how to join multiple parts of the string
- * ` - if $join is a string, it's used as a joiner glue
- * ` - if $join is a callable/closure, it get the list of string and should return a string
- * ` - if $join is an array, the first item will be the default glue, and the second item
- * ` will be used instead of the glue for the last item
- * ` - if $join is true, it will be guessed from the locale ('list' translation file entry)
- * ` - if $join is missing, a space will be used as glue
- * - 'minimumUnit' entry determines the smallest unit of time to display can be long or
- * ` short form of the units, e.g. 'hour' or 'h' (default value: s)
- * if int passed, it add modifiers:
- * Possible values:
- * - CarbonInterface::DIFF_ABSOLUTE no modifiers
- * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier
- * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier
- * Default value: CarbonInterface::DIFF_ABSOLUTE
- * @param bool $short displays short format of time units
- * @param int $parts maximum number of parts to display (default value: -1: no limits)
- * @param int $options human diff options
- *
- * @throws Exception
- *
- * @return string
- */
- public function forHumans($syntax = null, $short = false, $parts = -1, $options = null)
- {
- [$syntax, $short, $parts, $options, $join, $aUnit, $altNumbers, $interpolations, $minimumUnit] = $this->getForHumansParameters($syntax, $short, $parts, $options);
-
- $interval = [];
-
- $syntax = (int) ($syntax ?? CarbonInterface::DIFF_ABSOLUTE);
- $absolute = $syntax === CarbonInterface::DIFF_ABSOLUTE;
- $relativeToNow = $syntax === CarbonInterface::DIFF_RELATIVE_TO_NOW;
- $count = 1;
- $unit = $short ? 's' : 'second';
- $isFuture = $this->invert === 1;
- $transId = $relativeToNow ? ($isFuture ? 'from_now' : 'ago') : ($isFuture ? 'after' : 'before');
-
- /** @var \Symfony\Component\Translation\Translator $translator */
- $translator = $this->getLocalTranslator();
-
- $handleDeclensions = function ($unit, $count) use ($interpolations, $transId, $translator, $altNumbers, $absolute) {
- if (!$absolute) {
- // Some languages have special pluralization for past and future tense.
- $key = $unit.'_'.$transId;
- $result = $this->translate($key, $interpolations, $count, $translator, $altNumbers);
-
- if ($result !== $key) {
- return $result;
- }
- }
-
- $result = $this->translate($unit, $interpolations, $count, $translator, $altNumbers);
-
- if ($result !== $unit) {
- return $result;
- }
-
- return null;
- };
-
- $intervalValues = $this;
- $method = static::getRoundingMethodFromOptions($options);
-
- if ($method) {
- $previousCount = INF;
-
- while (
- \count($intervalValues->getNonZeroValues()) > $parts &&
- ($count = \count($keys = array_keys($intervalValues->getValuesSequence()))) > 1
- ) {
- $intervalValues = $this->copy()->roundUnit(
- $keys[min($count, $previousCount - 1) - 2],
- 1,
- $method
- );
- $previousCount = $count;
- }
- }
-
- $diffIntervalArray = [
- ['value' => $intervalValues->years, 'unit' => 'year', 'unitShort' => 'y'],
- ['value' => $intervalValues->months, 'unit' => 'month', 'unitShort' => 'm'],
- ['value' => $intervalValues->weeks, 'unit' => 'week', 'unitShort' => 'w'],
- ['value' => $intervalValues->daysExcludeWeeks, 'unit' => 'day', 'unitShort' => 'd'],
- ['value' => $intervalValues->hours, 'unit' => 'hour', 'unitShort' => 'h'],
- ['value' => $intervalValues->minutes, 'unit' => 'minute', 'unitShort' => 'min'],
- ['value' => $intervalValues->seconds, 'unit' => 'second', 'unitShort' => 's'],
- ['value' => $intervalValues->milliseconds, 'unit' => 'millisecond', 'unitShort' => 'ms'],
- ['value' => $intervalValues->microExcludeMilli, 'unit' => 'microsecond', 'unitShort' => 'µs'],
- ];
-
- $transChoice = function ($short, $unitData) use ($absolute, $handleDeclensions, $translator, $aUnit, $altNumbers, $interpolations) {
- $count = $unitData['value'];
-
- if ($short) {
- $result = $handleDeclensions($unitData['unitShort'], $count);
-
- if ($result !== null) {
- return $result;
- }
- } elseif ($aUnit) {
- $result = $handleDeclensions('a_'.$unitData['unit'], $count);
-
- if ($result !== null) {
- return $result;
- }
- }
-
- if (!$absolute) {
- return $handleDeclensions($unitData['unit'], $count);
- }
-
- return $this->translate($unitData['unit'], $interpolations, $count, $translator, $altNumbers);
- };
-
- $fallbackUnit = ['second', 's'];
- foreach ($diffIntervalArray as $diffIntervalData) {
- if ($diffIntervalData['value'] > 0) {
- $unit = $short ? $diffIntervalData['unitShort'] : $diffIntervalData['unit'];
- $count = $diffIntervalData['value'];
- $interval[] = $transChoice($short, $diffIntervalData);
- } elseif ($options & CarbonInterface::SEQUENTIAL_PARTS_ONLY && \count($interval) > 0) {
- break;
- }
-
- // break the loop after we get the required number of parts in array
- if (\count($interval) >= $parts) {
- break;
- }
-
- // break the loop after we have reached the minimum unit
- if (\in_array($minimumUnit, [$diffIntervalData['unit'], $diffIntervalData['unitShort']])) {
- $fallbackUnit = [$diffIntervalData['unit'], $diffIntervalData['unitShort']];
-
- break;
- }
- }
-
- if (\count($interval) === 0) {
- if ($relativeToNow && $options & CarbonInterface::JUST_NOW) {
- $key = 'diff_now';
- $translation = $this->translate($key, $interpolations, null, $translator);
-
- if ($translation !== $key) {
- return $translation;
- }
- }
-
- $count = $options & CarbonInterface::NO_ZERO_DIFF ? 1 : 0;
- $unit = $fallbackUnit[$short ? 1 : 0];
- $interval[] = $this->translate($unit, $interpolations, $count, $translator, $altNumbers);
- }
-
- // join the interval parts by a space
- $time = $join($interval);
-
- unset($diffIntervalArray, $interval);
-
- if ($absolute) {
- return $time;
- }
-
- $isFuture = $this->invert === 1;
-
- $transId = $relativeToNow ? ($isFuture ? 'from_now' : 'ago') : ($isFuture ? 'after' : 'before');
-
- if ($parts === 1) {
- if ($relativeToNow && $unit === 'day') {
- if ($count === 1 && $options & CarbonInterface::ONE_DAY_WORDS) {
- $key = $isFuture ? 'diff_tomorrow' : 'diff_yesterday';
- $translation = $this->translate($key, $interpolations, null, $translator);
-
- if ($translation !== $key) {
- return $translation;
- }
- }
-
- if ($count === 2 && $options & CarbonInterface::TWO_DAY_WORDS) {
- $key = $isFuture ? 'diff_after_tomorrow' : 'diff_before_yesterday';
- $translation = $this->translate($key, $interpolations, null, $translator);
-
- if ($translation !== $key) {
- return $translation;
- }
- }
- }
-
- $aTime = $aUnit ? $handleDeclensions('a_'.$unit, $count) : null;
-
- $time = $aTime ?: $handleDeclensions($unit, $count) ?: $time;
- }
-
- $time = [':time' => $time];
-
- return $this->translate($transId, array_merge($time, $interpolations, $time), null, $translator);
- }
-
- /**
- * Format the instance as a string using the forHumans() function.
- *
- * @throws Exception
- *
- * @return string
- */
- public function __toString()
- {
- $format = $this->localToStringFormat;
-
- if ($format) {
- if ($format instanceof Closure) {
- return $format($this);
- }
-
- return $this->format($format);
- }
-
- return $this->forHumans();
- }
-
- /**
- * Return native DateInterval PHP object matching the current instance.
- *
- * @example
- * ```
- * var_dump(CarbonInterval::hours(2)->toDateInterval());
- * ```
- *
- * @return DateInterval
- */
- public function toDateInterval()
- {
- return self::castIntervalToClass($this, DateInterval::class);
- }
-
- /**
- * Convert the interval to a CarbonPeriod.
- *
- * @param DateTimeInterface|string|int ...$params Start date, [end date or recurrences] and optional settings.
- *
- * @return CarbonPeriod
- */
- public function toPeriod(...$params)
- {
- if ($this->tzName) {
- $tz = \is_string($this->tzName) ? new DateTimeZone($this->tzName) : $this->tzName;
-
- if ($tz instanceof DateTimeZone) {
- array_unshift($params, $tz);
- }
- }
-
- return CarbonPeriod::create($this, ...$params);
- }
-
- /**
- * Invert the interval.
- *
- * @param bool|int $inverted if a parameter is passed, the passed value casted as 1 or 0 is used
- * as the new value of the ->invert property.
- *
- * @return $this
- */
- public function invert($inverted = null)
- {
- $this->invert = (\func_num_args() === 0 ? !$this->invert : $inverted) ? 1 : 0;
-
- return $this;
- }
-
- protected function solveNegativeInterval()
- {
- if (!$this->isEmpty() && $this->years <= 0 && $this->months <= 0 && $this->dayz <= 0 && $this->hours <= 0 && $this->minutes <= 0 && $this->seconds <= 0 && $this->microseconds <= 0) {
- $this->years *= -1;
- $this->months *= -1;
- $this->dayz *= -1;
- $this->hours *= -1;
- $this->minutes *= -1;
- $this->seconds *= -1;
- $this->microseconds *= -1;
- $this->invert();
- }
-
- return $this;
- }
-
- /**
- * Add the passed interval to the current instance.
- *
- * @param string|DateInterval $unit
- * @param int|float $value
- *
- * @return $this
- */
- public function add($unit, $value = 1)
- {
- if (is_numeric($unit)) {
- [$value, $unit] = [$unit, $value];
- }
-
- if (\is_string($unit) && !preg_match('/^\s*\d/', $unit)) {
- $unit = "$value $unit";
- $value = 1;
- }
-
- $interval = static::make($unit);
-
- if (!$interval) {
- throw new InvalidIntervalException('This type of data cannot be added/subtracted.');
- }
-
- if ($value !== 1) {
- $interval->times($value);
- }
-
- $sign = ($this->invert === 1) !== ($interval->invert === 1) ? -1 : 1;
- $this->years += $interval->y * $sign;
- $this->months += $interval->m * $sign;
- $this->dayz += ($interval->days === false ? $interval->d : $interval->days) * $sign;
- $this->hours += $interval->h * $sign;
- $this->minutes += $interval->i * $sign;
- $this->seconds += $interval->s * $sign;
- $this->microseconds += $interval->microseconds * $sign;
-
- $this->solveNegativeInterval();
-
- return $this;
- }
-
- /**
- * Subtract the passed interval to the current instance.
- *
- * @param string|DateInterval $unit
- * @param int|float $value
- *
- * @return $this
- */
- public function sub($unit, $value = 1)
- {
- if (is_numeric($unit)) {
- [$value, $unit] = [$unit, $value];
- }
-
- return $this->add($unit, -(float) $value);
- }
-
- /**
- * Subtract the passed interval to the current instance.
- *
- * @param string|DateInterval $unit
- * @param int|float $value
- *
- * @return $this
- */
- public function subtract($unit, $value = 1)
- {
- return $this->sub($unit, $value);
- }
-
- /**
- * Add given parameters to the current interval.
- *
- * @param int $years
- * @param int $months
- * @param int|float $weeks
- * @param int|float $days
- * @param int|float $hours
- * @param int|float $minutes
- * @param int|float $seconds
- * @param int|float $microseconds
- *
- * @return $this
- */
- public function plus(
- $years = 0,
- $months = 0,
- $weeks = 0,
- $days = 0,
- $hours = 0,
- $minutes = 0,
- $seconds = 0,
- $microseconds = 0
- ): self {
- return $this->add("
- $years years $months months $weeks weeks $days days
- $hours hours $minutes minutes $seconds seconds $microseconds microseconds
- ");
- }
-
- /**
- * Add given parameters to the current interval.
- *
- * @param int $years
- * @param int $months
- * @param int|float $weeks
- * @param int|float $days
- * @param int|float $hours
- * @param int|float $minutes
- * @param int|float $seconds
- * @param int|float $microseconds
- *
- * @return $this
- */
- public function minus(
- $years = 0,
- $months = 0,
- $weeks = 0,
- $days = 0,
- $hours = 0,
- $minutes = 0,
- $seconds = 0,
- $microseconds = 0
- ): self {
- return $this->sub("
- $years years $months months $weeks weeks $days days
- $hours hours $minutes minutes $seconds seconds $microseconds microseconds
- ");
- }
-
- /**
- * Multiply current instance given number of times. times() is naive, it multiplies each unit
- * (so day can be greater than 31, hour can be greater than 23, etc.) and the result is rounded
- * separately for each unit.
- *
- * Use times() when you want a fast and approximated calculation that does not cascade units.
- *
- * For a precise and cascaded calculation,
- *
- * @see multiply()
- *
- * @param float|int $factor
- *
- * @return $this
- */
- public function times($factor)
- {
- if ($factor < 0) {
- $this->invert = $this->invert ? 0 : 1;
- $factor = -$factor;
- }
-
- $this->years = (int) round($this->years * $factor);
- $this->months = (int) round($this->months * $factor);
- $this->dayz = (int) round($this->dayz * $factor);
- $this->hours = (int) round($this->hours * $factor);
- $this->minutes = (int) round($this->minutes * $factor);
- $this->seconds = (int) round($this->seconds * $factor);
- $this->microseconds = (int) round($this->microseconds * $factor);
-
- return $this;
- }
-
- /**
- * Divide current instance by a given divider. shares() is naive, it divides each unit separately
- * and the result is rounded for each unit. So 5 hours and 20 minutes shared by 3 becomes 2 hours
- * and 7 minutes.
- *
- * Use shares() when you want a fast and approximated calculation that does not cascade units.
- *
- * For a precise and cascaded calculation,
- *
- * @see divide()
- *
- * @param float|int $divider
- *
- * @return $this
- */
- public function shares($divider)
- {
- return $this->times(1 / $divider);
- }
-
- protected function copyProperties(self $interval, $ignoreSign = false)
- {
- $this->years = $interval->years;
- $this->months = $interval->months;
- $this->dayz = $interval->dayz;
- $this->hours = $interval->hours;
- $this->minutes = $interval->minutes;
- $this->seconds = $interval->seconds;
- $this->microseconds = $interval->microseconds;
-
- if (!$ignoreSign) {
- $this->invert = $interval->invert;
- }
-
- return $this;
- }
-
- /**
- * Multiply and cascade current instance by a given factor.
- *
- * @param float|int $factor
- *
- * @return $this
- */
- public function multiply($factor)
- {
- if ($factor < 0) {
- $this->invert = $this->invert ? 0 : 1;
- $factor = -$factor;
- }
-
- $yearPart = (int) floor($this->years * $factor); // Split calculation to prevent imprecision
-
- if ($yearPart) {
- $this->years -= $yearPart / $factor;
- }
-
- return $this->copyProperties(
- static::create($yearPart)
- ->microseconds(abs($this->totalMicroseconds) * $factor)
- ->cascade(),
- true
- );
- }
-
- /**
- * Divide and cascade current instance by a given divider.
- *
- * @param float|int $divider
- *
- * @return $this
- */
- public function divide($divider)
- {
- return $this->multiply(1 / $divider);
- }
-
- /**
- * Get the interval_spec string of a date interval.
- *
- * @param DateInterval $interval
- *
- * @return string
- */
- public static function getDateIntervalSpec(DateInterval $interval)
- {
- $date = array_filter([
- static::PERIOD_YEARS => abs($interval->y),
- static::PERIOD_MONTHS => abs($interval->m),
- static::PERIOD_DAYS => abs($interval->d),
- ]);
-
- $time = array_filter([
- static::PERIOD_HOURS => abs($interval->h),
- static::PERIOD_MINUTES => abs($interval->i),
- static::PERIOD_SECONDS => abs($interval->s),
- ]);
-
- $specString = static::PERIOD_PREFIX;
-
- foreach ($date as $key => $value) {
- $specString .= $value.$key;
- }
-
- if (\count($time) > 0) {
- $specString .= static::PERIOD_TIME_PREFIX;
- foreach ($time as $key => $value) {
- $specString .= $value.$key;
- }
- }
-
- return $specString === static::PERIOD_PREFIX ? 'PT0S' : $specString;
- }
-
- /**
- * Get the interval_spec string.
- *
- * @return string
- */
- public function spec()
- {
- return static::getDateIntervalSpec($this);
- }
-
- /**
- * Comparing 2 date intervals.
- *
- * @param DateInterval $first
- * @param DateInterval $second
- *
- * @return int
- */
- public static function compareDateIntervals(DateInterval $first, DateInterval $second)
- {
- $current = Carbon::now();
- $passed = $current->avoidMutation()->add($second);
- $current->add($first);
-
- if ($current < $passed) {
- return -1;
- }
- if ($current > $passed) {
- return 1;
- }
-
- return 0;
- }
-
- /**
- * Comparing with passed interval.
- *
- * @param DateInterval $interval
- *
- * @return int
- */
- public function compare(DateInterval $interval)
- {
- return static::compareDateIntervals($this, $interval);
- }
-
- private function invertCascade(array $values)
- {
- return $this->set(array_map(function ($value) {
- return -$value;
- }, $values))->doCascade(true)->invert();
- }
-
- private function doCascade(bool $deep)
- {
- $originalData = $this->toArray();
- $originalData['milliseconds'] = (int) ($originalData['microseconds'] / static::getMicrosecondsPerMillisecond());
- $originalData['microseconds'] = $originalData['microseconds'] % static::getMicrosecondsPerMillisecond();
- $originalData['daysExcludeWeeks'] = $originalData['days'];
- unset($originalData['days']);
- $newData = $originalData;
-
- foreach (static::getFlipCascadeFactors() as $source => [$target, $factor]) {
- foreach (['source', 'target'] as $key) {
- if ($$key === 'dayz') {
- $$key = 'daysExcludeWeeks';
- }
- }
-
- $value = $newData[$source];
- $modulo = ($factor + ($value % $factor)) % $factor;
- $newData[$source] = $modulo;
- $newData[$target] += ($value - $modulo) / $factor;
- }
-
- $positive = null;
-
- if (!$deep) {
- foreach ($newData as $value) {
- if ($value) {
- if ($positive === null) {
- $positive = ($value > 0);
-
- continue;
- }
-
- if (($value > 0) !== $positive) {
- return $this->invertCascade($originalData)
- ->solveNegativeInterval();
- }
- }
- }
- }
-
- return $this->set($newData)
- ->solveNegativeInterval();
- }
-
- /**
- * Convert overflowed values into bigger units.
- *
- * @return $this
- */
- public function cascade()
- {
- return $this->doCascade(false);
- }
-
- public function hasNegativeValues(): bool
- {
- foreach ($this->toArray() as $value) {
- if ($value < 0) {
- return true;
- }
- }
-
- return false;
- }
-
- public function hasPositiveValues(): bool
- {
- foreach ($this->toArray() as $value) {
- if ($value > 0) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Get amount of given unit equivalent to the interval.
- *
- * @param string $unit
- *
- * @throws UnknownUnitException|UnitNotConfiguredException
- *
- * @return float
- */
- public function total($unit)
- {
- $realUnit = $unit = strtolower($unit);
-
- if (\in_array($unit, ['days', 'weeks'])) {
- $realUnit = 'dayz';
- } elseif (!\in_array($unit, ['microseconds', 'milliseconds', 'seconds', 'minutes', 'hours', 'dayz', 'months', 'years'])) {
- throw new UnknownUnitException($unit);
- }
-
- $result = 0;
- $cumulativeFactor = 0;
- $unitFound = false;
- $factors = static::getFlipCascadeFactors();
- $daysPerWeek = static::getDaysPerWeek();
-
- $values = [
- 'years' => $this->years,
- 'months' => $this->months,
- 'weeks' => (int) ($this->d / $daysPerWeek),
- 'dayz' => $this->d % $daysPerWeek,
- 'hours' => $this->hours,
- 'minutes' => $this->minutes,
- 'seconds' => $this->seconds,
- 'milliseconds' => (int) ($this->microseconds / Carbon::MICROSECONDS_PER_MILLISECOND),
- 'microseconds' => $this->microseconds % Carbon::MICROSECONDS_PER_MILLISECOND,
- ];
-
- if (isset($factors['dayz']) && $factors['dayz'][0] !== 'weeks') {
- $values['dayz'] += $values['weeks'] * $daysPerWeek;
- $values['weeks'] = 0;
- }
-
- foreach ($factors as $source => [$target, $factor]) {
- if ($source === $realUnit) {
- $unitFound = true;
- $value = $values[$source];
- $result += $value;
- $cumulativeFactor = 1;
- }
-
- if ($factor === false) {
- if ($unitFound) {
- break;
- }
-
- $result = 0;
- $cumulativeFactor = 0;
-
- continue;
- }
-
- if ($target === $realUnit) {
- $unitFound = true;
- }
-
- if ($cumulativeFactor) {
- $cumulativeFactor *= $factor;
- $result += $values[$target] * $cumulativeFactor;
-
- continue;
- }
-
- $value = $values[$source];
-
- $result = ($result + $value) / $factor;
- }
-
- if (isset($target) && !$cumulativeFactor) {
- $result += $values[$target];
- }
-
- if (!$unitFound) {
- throw new UnitNotConfiguredException($unit);
- }
-
- if ($this->invert) {
- $result *= -1;
- }
-
- if ($unit === 'weeks') {
- return $result / $daysPerWeek;
- }
-
- return $result;
- }
-
- /**
- * Determines if the instance is equal to another
- *
- * @param CarbonInterval|DateInterval|mixed $interval
- *
- * @see equalTo()
- *
- * @return bool
- */
- public function eq($interval): bool
- {
- return $this->equalTo($interval);
- }
-
- /**
- * Determines if the instance is equal to another
- *
- * @param CarbonInterval|DateInterval|mixed $interval
- *
- * @return bool
- */
- public function equalTo($interval): bool
- {
- $interval = $this->resolveInterval($interval);
-
- return $interval !== null && $this->totalMicroseconds === $interval->totalMicroseconds;
- }
-
- /**
- * Determines if the instance is not equal to another
- *
- * @param CarbonInterval|DateInterval|mixed $interval
- *
- * @see notEqualTo()
- *
- * @return bool
- */
- public function ne($interval): bool
- {
- return $this->notEqualTo($interval);
- }
-
- /**
- * Determines if the instance is not equal to another
- *
- * @param CarbonInterval|DateInterval|mixed $interval
- *
- * @return bool
- */
- public function notEqualTo($interval): bool
- {
- return !$this->eq($interval);
- }
-
- /**
- * Determines if the instance is greater (longer) than another
- *
- * @param CarbonInterval|DateInterval|mixed $interval
- *
- * @see greaterThan()
- *
- * @return bool
- */
- public function gt($interval): bool
- {
- return $this->greaterThan($interval);
- }
-
- /**
- * Determines if the instance is greater (longer) than another
- *
- * @param CarbonInterval|DateInterval|mixed $interval
- *
- * @return bool
- */
- public function greaterThan($interval): bool
- {
- $interval = $this->resolveInterval($interval);
-
- return $interval === null || $this->totalMicroseconds > $interval->totalMicroseconds;
- }
-
- /**
- * Determines if the instance is greater (longer) than or equal to another
- *
- * @param CarbonInterval|DateInterval|mixed $interval
- *
- * @see greaterThanOrEqualTo()
- *
- * @return bool
- */
- public function gte($interval): bool
- {
- return $this->greaterThanOrEqualTo($interval);
- }
-
- /**
- * Determines if the instance is greater (longer) than or equal to another
- *
- * @param CarbonInterval|DateInterval|mixed $interval
- *
- * @return bool
- */
- public function greaterThanOrEqualTo($interval): bool
- {
- return $this->greaterThan($interval) || $this->equalTo($interval);
- }
-
- /**
- * Determines if the instance is less (shorter) than another
- *
- * @param CarbonInterval|DateInterval|mixed $interval
- *
- * @see lessThan()
- *
- * @return bool
- */
- public function lt($interval): bool
- {
- return $this->lessThan($interval);
- }
-
- /**
- * Determines if the instance is less (shorter) than another
- *
- * @param CarbonInterval|DateInterval|mixed $interval
- *
- * @return bool
- */
- public function lessThan($interval): bool
- {
- $interval = $this->resolveInterval($interval);
-
- return $interval !== null && $this->totalMicroseconds < $interval->totalMicroseconds;
- }
-
- /**
- * Determines if the instance is less (shorter) than or equal to another
- *
- * @param CarbonInterval|DateInterval|mixed $interval
- *
- * @see lessThanOrEqualTo()
- *
- * @return bool
- */
- public function lte($interval): bool
- {
- return $this->lessThanOrEqualTo($interval);
- }
-
- /**
- * Determines if the instance is less (shorter) than or equal to another
- *
- * @param CarbonInterval|DateInterval|mixed $interval
- *
- * @return bool
- */
- public function lessThanOrEqualTo($interval): bool
- {
- return $this->lessThan($interval) || $this->equalTo($interval);
- }
-
- /**
- * Determines if the instance is between two others.
- *
- * The third argument allow you to specify if bounds are included or not (true by default)
- * but for when you including/excluding bounds may produce different results in your application,
- * we recommend to use the explicit methods ->betweenIncluded() or ->betweenExcluded() instead.
- *
- * @example
- * ```
- * CarbonInterval::hours(48)->between(CarbonInterval::day(), CarbonInterval::days(3)); // true
- * CarbonInterval::hours(48)->between(CarbonInterval::day(), CarbonInterval::hours(36)); // false
- * CarbonInterval::hours(48)->between(CarbonInterval::day(), CarbonInterval::days(2)); // true
- * CarbonInterval::hours(48)->between(CarbonInterval::day(), CarbonInterval::days(2), false); // false
- * ```
- *
- * @param CarbonInterval|DateInterval|mixed $interval1
- * @param CarbonInterval|DateInterval|mixed $interval2
- * @param bool $equal Indicates if an equal to comparison should be done
- *
- * @return bool
- */
- public function between($interval1, $interval2, $equal = true): bool
- {
- return $equal
- ? $this->greaterThanOrEqualTo($interval1) && $this->lessThanOrEqualTo($interval2)
- : $this->greaterThan($interval1) && $this->lessThan($interval2);
- }
-
- /**
- * Determines if the instance is between two others, bounds excluded.
- *
- * @example
- * ```
- * CarbonInterval::hours(48)->betweenExcluded(CarbonInterval::day(), CarbonInterval::days(3)); // true
- * CarbonInterval::hours(48)->betweenExcluded(CarbonInterval::day(), CarbonInterval::hours(36)); // false
- * CarbonInterval::hours(48)->betweenExcluded(CarbonInterval::day(), CarbonInterval::days(2)); // true
- * ```
- *
- * @param CarbonInterval|DateInterval|mixed $interval1
- * @param CarbonInterval|DateInterval|mixed $interval2
- *
- * @return bool
- */
- public function betweenIncluded($interval1, $interval2): bool
- {
- return $this->between($interval1, $interval2, true);
- }
-
- /**
- * Determines if the instance is between two others, bounds excluded.
- *
- * @example
- * ```
- * CarbonInterval::hours(48)->betweenExcluded(CarbonInterval::day(), CarbonInterval::days(3)); // true
- * CarbonInterval::hours(48)->betweenExcluded(CarbonInterval::day(), CarbonInterval::hours(36)); // false
- * CarbonInterval::hours(48)->betweenExcluded(CarbonInterval::day(), CarbonInterval::days(2)); // false
- * ```
- *
- * @param CarbonInterval|DateInterval|mixed $interval1
- * @param CarbonInterval|DateInterval|mixed $interval2
- *
- * @return bool
- */
- public function betweenExcluded($interval1, $interval2): bool
- {
- return $this->between($interval1, $interval2, false);
- }
-
- /**
- * Determines if the instance is between two others
- *
- * @example
- * ```
- * CarbonInterval::hours(48)->isBetween(CarbonInterval::day(), CarbonInterval::days(3)); // true
- * CarbonInterval::hours(48)->isBetween(CarbonInterval::day(), CarbonInterval::hours(36)); // false
- * CarbonInterval::hours(48)->isBetween(CarbonInterval::day(), CarbonInterval::days(2)); // true
- * CarbonInterval::hours(48)->isBetween(CarbonInterval::day(), CarbonInterval::days(2), false); // false
- * ```
- *
- * @param CarbonInterval|DateInterval|mixed $interval1
- * @param CarbonInterval|DateInterval|mixed $interval2
- * @param bool $equal Indicates if an equal to comparison should be done
- *
- * @return bool
- */
- public function isBetween($interval1, $interval2, $equal = true): bool
- {
- return $this->between($interval1, $interval2, $equal);
- }
-
- /**
- * Round the current instance at the given unit with given precision if specified and the given function.
- *
- * @param string $unit
- * @param float|int|string|DateInterval|null $precision
- * @param string $function
- *
- * @throws Exception
- *
- * @return $this
- */
- public function roundUnit($unit, $precision = 1, $function = 'round')
- {
- $base = CarbonImmutable::parse('2000-01-01 00:00:00', 'UTC')
- ->roundUnit($unit, $precision, $function);
- $next = $base->add($this);
- $inverted = $next < $base;
-
- if ($inverted) {
- $next = $base->sub($this);
- }
-
- $this->copyProperties(
- $next
- ->roundUnit($unit, $precision, $function)
- ->diffAsCarbonInterval($base)
- );
-
- return $this->invert($inverted);
- }
-
- /**
- * Truncate the current instance at the given unit with given precision if specified.
- *
- * @param string $unit
- * @param float|int|string|DateInterval|null $precision
- *
- * @throws Exception
- *
- * @return $this
- */
- public function floorUnit($unit, $precision = 1)
- {
- return $this->roundUnit($unit, $precision, 'floor');
- }
-
- /**
- * Ceil the current instance at the given unit with given precision if specified.
- *
- * @param string $unit
- * @param float|int|string|DateInterval|null $precision
- *
- * @throws Exception
- *
- * @return $this
- */
- public function ceilUnit($unit, $precision = 1)
- {
- return $this->roundUnit($unit, $precision, 'ceil');
- }
-
- /**
- * Round the current instance second with given precision if specified.
- *
- * @param float|int|string|DateInterval|null $precision
- * @param string $function
- *
- * @throws Exception
- *
- * @return $this
- */
- public function round($precision = 1, $function = 'round')
- {
- return $this->roundWith($precision, $function);
- }
-
- /**
- * Round the current instance second with given precision if specified.
- *
- * @param float|int|string|DateInterval|null $precision
- *
- * @throws Exception
- *
- * @return $this
- */
- public function floor($precision = 1)
- {
- return $this->round($precision, 'floor');
- }
-
- /**
- * Ceil the current instance second with given precision if specified.
- *
- * @param float|int|string|DateInterval|null $precision
- *
- * @throws Exception
- *
- * @return $this
- */
- public function ceil($precision = 1)
- {
- return $this->round($precision, 'ceil');
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/CarbonPeriod.php b/vendor/nesbot/carbon/src/Carbon/CarbonPeriod.php
deleted file mode 100644
index 197f3709..00000000
--- a/vendor/nesbot/carbon/src/Carbon/CarbonPeriod.php
+++ /dev/null
@@ -1,2557 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon;
-
-use Carbon\Exceptions\InvalidCastException;
-use Carbon\Exceptions\InvalidIntervalException;
-use Carbon\Exceptions\InvalidPeriodDateException;
-use Carbon\Exceptions\InvalidPeriodParameterException;
-use Carbon\Exceptions\NotACarbonClassException;
-use Carbon\Exceptions\NotAPeriodException;
-use Carbon\Exceptions\UnknownGetterException;
-use Carbon\Exceptions\UnknownMethodException;
-use Carbon\Exceptions\UnreachableException;
-use Carbon\Traits\IntervalRounding;
-use Carbon\Traits\Mixin;
-use Carbon\Traits\Options;
-use Closure;
-use Countable;
-use DateInterval;
-use DatePeriod;
-use DateTime;
-use DateTimeInterface;
-use DateTimeZone;
-use InvalidArgumentException;
-use Iterator;
-use JsonSerializable;
-use ReflectionException;
-use ReturnTypeWillChange;
-use RuntimeException;
-
-/**
- * Substitution of DatePeriod with some modifications and many more features.
- *
- * @property-read int|float $recurrences number of recurrences (if end not set).
- * @property-read bool $include_start_date rather the start date is included in the iteration.
- * @property-read bool $include_end_date rather the end date is included in the iteration (if recurrences not set).
- * @property-read CarbonInterface $start Period start date.
- * @property-read CarbonInterface $current Current date from the iteration.
- * @property-read CarbonInterface $end Period end date.
- * @property-read CarbonInterval $interval Underlying date interval instance. Always present, one day by default.
- *
- * @method static CarbonPeriod start($date, $inclusive = null) Create instance specifying start date or modify the start date if called on an instance.
- * @method static CarbonPeriod since($date, $inclusive = null) Alias for start().
- * @method static CarbonPeriod sinceNow($inclusive = null) Create instance with start date set to now or set the start date to now if called on an instance.
- * @method static CarbonPeriod end($date = null, $inclusive = null) Create instance specifying end date or modify the end date if called on an instance.
- * @method static CarbonPeriod until($date = null, $inclusive = null) Alias for end().
- * @method static CarbonPeriod untilNow($inclusive = null) Create instance with end date set to now or set the end date to now if called on an instance.
- * @method static CarbonPeriod dates($start, $end = null) Create instance with start and end dates or modify the start and end dates if called on an instance.
- * @method static CarbonPeriod between($start, $end = null) Create instance with start and end dates or modify the start and end dates if called on an instance.
- * @method static CarbonPeriod recurrences($recurrences = null) Create instance with maximum number of recurrences or modify the number of recurrences if called on an instance.
- * @method static CarbonPeriod times($recurrences = null) Alias for recurrences().
- * @method static CarbonPeriod options($options = null) Create instance with options or modify the options if called on an instance.
- * @method static CarbonPeriod toggle($options, $state = null) Create instance with options toggled on or off, or toggle options if called on an instance.
- * @method static CarbonPeriod filter($callback, $name = null) Create instance with filter added to the stack or append a filter if called on an instance.
- * @method static CarbonPeriod push($callback, $name = null) Alias for filter().
- * @method static CarbonPeriod prepend($callback, $name = null) Create instance with filter prepended to the stack or prepend a filter if called on an instance.
- * @method static CarbonPeriod filters(array $filters = []) Create instance with filters stack or replace the whole filters stack if called on an instance.
- * @method static CarbonPeriod interval($interval) Create instance with given date interval or modify the interval if called on an instance.
- * @method static CarbonPeriod each($interval) Create instance with given date interval or modify the interval if called on an instance.
- * @method static CarbonPeriod every($interval) Create instance with given date interval or modify the interval if called on an instance.
- * @method static CarbonPeriod step($interval) Create instance with given date interval or modify the interval if called on an instance.
- * @method static CarbonPeriod stepBy($interval) Create instance with given date interval or modify the interval if called on an instance.
- * @method static CarbonPeriod invert() Create instance with inverted date interval or invert the interval if called on an instance.
- * @method static CarbonPeriod years($years = 1) Create instance specifying a number of years for date interval or replace the interval by the given a number of years if called on an instance.
- * @method static CarbonPeriod year($years = 1) Alias for years().
- * @method static CarbonPeriod months($months = 1) Create instance specifying a number of months for date interval or replace the interval by the given a number of months if called on an instance.
- * @method static CarbonPeriod month($months = 1) Alias for months().
- * @method static CarbonPeriod weeks($weeks = 1) Create instance specifying a number of weeks for date interval or replace the interval by the given a number of weeks if called on an instance.
- * @method static CarbonPeriod week($weeks = 1) Alias for weeks().
- * @method static CarbonPeriod days($days = 1) Create instance specifying a number of days for date interval or replace the interval by the given a number of days if called on an instance.
- * @method static CarbonPeriod dayz($days = 1) Alias for days().
- * @method static CarbonPeriod day($days = 1) Alias for days().
- * @method static CarbonPeriod hours($hours = 1) Create instance specifying a number of hours for date interval or replace the interval by the given a number of hours if called on an instance.
- * @method static CarbonPeriod hour($hours = 1) Alias for hours().
- * @method static CarbonPeriod minutes($minutes = 1) Create instance specifying a number of minutes for date interval or replace the interval by the given a number of minutes if called on an instance.
- * @method static CarbonPeriod minute($minutes = 1) Alias for minutes().
- * @method static CarbonPeriod seconds($seconds = 1) Create instance specifying a number of seconds for date interval or replace the interval by the given a number of seconds if called on an instance.
- * @method static CarbonPeriod second($seconds = 1) Alias for seconds().
- * @method $this roundYear(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function.
- * @method $this roundYears(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function.
- * @method $this floorYear(float $precision = 1) Truncate the current instance year with given precision.
- * @method $this floorYears(float $precision = 1) Truncate the current instance year with given precision.
- * @method $this ceilYear(float $precision = 1) Ceil the current instance year with given precision.
- * @method $this ceilYears(float $precision = 1) Ceil the current instance year with given precision.
- * @method $this roundMonth(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function.
- * @method $this roundMonths(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function.
- * @method $this floorMonth(float $precision = 1) Truncate the current instance month with given precision.
- * @method $this floorMonths(float $precision = 1) Truncate the current instance month with given precision.
- * @method $this ceilMonth(float $precision = 1) Ceil the current instance month with given precision.
- * @method $this ceilMonths(float $precision = 1) Ceil the current instance month with given precision.
- * @method $this roundWeek(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function.
- * @method $this roundWeeks(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function.
- * @method $this floorWeek(float $precision = 1) Truncate the current instance day with given precision.
- * @method $this floorWeeks(float $precision = 1) Truncate the current instance day with given precision.
- * @method $this ceilWeek(float $precision = 1) Ceil the current instance day with given precision.
- * @method $this ceilWeeks(float $precision = 1) Ceil the current instance day with given precision.
- * @method $this roundDay(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function.
- * @method $this roundDays(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function.
- * @method $this floorDay(float $precision = 1) Truncate the current instance day with given precision.
- * @method $this floorDays(float $precision = 1) Truncate the current instance day with given precision.
- * @method $this ceilDay(float $precision = 1) Ceil the current instance day with given precision.
- * @method $this ceilDays(float $precision = 1) Ceil the current instance day with given precision.
- * @method $this roundHour(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function.
- * @method $this roundHours(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function.
- * @method $this floorHour(float $precision = 1) Truncate the current instance hour with given precision.
- * @method $this floorHours(float $precision = 1) Truncate the current instance hour with given precision.
- * @method $this ceilHour(float $precision = 1) Ceil the current instance hour with given precision.
- * @method $this ceilHours(float $precision = 1) Ceil the current instance hour with given precision.
- * @method $this roundMinute(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function.
- * @method $this roundMinutes(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function.
- * @method $this floorMinute(float $precision = 1) Truncate the current instance minute with given precision.
- * @method $this floorMinutes(float $precision = 1) Truncate the current instance minute with given precision.
- * @method $this ceilMinute(float $precision = 1) Ceil the current instance minute with given precision.
- * @method $this ceilMinutes(float $precision = 1) Ceil the current instance minute with given precision.
- * @method $this roundSecond(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function.
- * @method $this roundSeconds(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function.
- * @method $this floorSecond(float $precision = 1) Truncate the current instance second with given precision.
- * @method $this floorSeconds(float $precision = 1) Truncate the current instance second with given precision.
- * @method $this ceilSecond(float $precision = 1) Ceil the current instance second with given precision.
- * @method $this ceilSeconds(float $precision = 1) Ceil the current instance second with given precision.
- * @method $this roundMillennium(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function.
- * @method $this roundMillennia(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function.
- * @method $this floorMillennium(float $precision = 1) Truncate the current instance millennium with given precision.
- * @method $this floorMillennia(float $precision = 1) Truncate the current instance millennium with given precision.
- * @method $this ceilMillennium(float $precision = 1) Ceil the current instance millennium with given precision.
- * @method $this ceilMillennia(float $precision = 1) Ceil the current instance millennium with given precision.
- * @method $this roundCentury(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function.
- * @method $this roundCenturies(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function.
- * @method $this floorCentury(float $precision = 1) Truncate the current instance century with given precision.
- * @method $this floorCenturies(float $precision = 1) Truncate the current instance century with given precision.
- * @method $this ceilCentury(float $precision = 1) Ceil the current instance century with given precision.
- * @method $this ceilCenturies(float $precision = 1) Ceil the current instance century with given precision.
- * @method $this roundDecade(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function.
- * @method $this roundDecades(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function.
- * @method $this floorDecade(float $precision = 1) Truncate the current instance decade with given precision.
- * @method $this floorDecades(float $precision = 1) Truncate the current instance decade with given precision.
- * @method $this ceilDecade(float $precision = 1) Ceil the current instance decade with given precision.
- * @method $this ceilDecades(float $precision = 1) Ceil the current instance decade with given precision.
- * @method $this roundQuarter(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function.
- * @method $this roundQuarters(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function.
- * @method $this floorQuarter(float $precision = 1) Truncate the current instance quarter with given precision.
- * @method $this floorQuarters(float $precision = 1) Truncate the current instance quarter with given precision.
- * @method $this ceilQuarter(float $precision = 1) Ceil the current instance quarter with given precision.
- * @method $this ceilQuarters(float $precision = 1) Ceil the current instance quarter with given precision.
- * @method $this roundMillisecond(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function.
- * @method $this roundMilliseconds(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function.
- * @method $this floorMillisecond(float $precision = 1) Truncate the current instance millisecond with given precision.
- * @method $this floorMilliseconds(float $precision = 1) Truncate the current instance millisecond with given precision.
- * @method $this ceilMillisecond(float $precision = 1) Ceil the current instance millisecond with given precision.
- * @method $this ceilMilliseconds(float $precision = 1) Ceil the current instance millisecond with given precision.
- * @method $this roundMicrosecond(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function.
- * @method $this roundMicroseconds(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function.
- * @method $this floorMicrosecond(float $precision = 1) Truncate the current instance microsecond with given precision.
- * @method $this floorMicroseconds(float $precision = 1) Truncate the current instance microsecond with given precision.
- * @method $this ceilMicrosecond(float $precision = 1) Ceil the current instance microsecond with given precision.
- * @method $this ceilMicroseconds(float $precision = 1) Ceil the current instance microsecond with given precision.
- */
-class CarbonPeriod implements Iterator, Countable, JsonSerializable
-{
- use IntervalRounding;
- use Mixin {
- Mixin::mixin as baseMixin;
- }
- use Options;
-
- /**
- * Built-in filters.
- *
- * @var string
- */
- public const RECURRENCES_FILTER = [self::class, 'filterRecurrences'];
- public const END_DATE_FILTER = [self::class, 'filterEndDate'];
-
- /**
- * Special value which can be returned by filters to end iteration. Also a filter.
- *
- * @var string
- */
- public const END_ITERATION = [self::class, 'endIteration'];
-
- /**
- * Exclude start date from iteration.
- *
- * @var int
- */
- public const EXCLUDE_START_DATE = 1;
-
- /**
- * Exclude end date from iteration.
- *
- * @var int
- */
- public const EXCLUDE_END_DATE = 2;
-
- /**
- * Yield CarbonImmutable instances.
- *
- * @var int
- */
- public const IMMUTABLE = 4;
-
- /**
- * Number of maximum attempts before giving up on finding next valid date.
- *
- * @var int
- */
- public const NEXT_MAX_ATTEMPTS = 1000;
-
- /**
- * Number of maximum attempts before giving up on finding end date.
- *
- * @var int
- */
- public const END_MAX_ATTEMPTS = 10000;
-
- /**
- * The registered macros.
- *
- * @var array
- */
- protected static $macros = [];
-
- /**
- * Date class of iteration items.
- *
- * @var string
- */
- protected $dateClass = Carbon::class;
-
- /**
- * Underlying date interval instance. Always present, one day by default.
- *
- * @var CarbonInterval
- */
- protected $dateInterval;
-
- /**
- * Whether current date interval was set by default.
- *
- * @var bool
- */
- protected $isDefaultInterval;
-
- /**
- * The filters stack.
- *
- * @var array
- */
- protected $filters = [];
-
- /**
- * Period start date. Applied on rewind. Always present, now by default.
- *
- * @var CarbonInterface
- */
- protected $startDate;
-
- /**
- * Period end date. For inverted interval should be before the start date. Applied via a filter.
- *
- * @var CarbonInterface|null
- */
- protected $endDate;
-
- /**
- * Limit for number of recurrences. Applied via a filter.
- *
- * @var int|null
- */
- protected $recurrences;
-
- /**
- * Iteration options.
- *
- * @var int
- */
- protected $options;
-
- /**
- * Index of current date. Always sequential, even if some dates are skipped by filters.
- * Equal to null only before the first iteration.
- *
- * @var int
- */
- protected $key;
-
- /**
- * Current date. May temporarily hold unaccepted value when looking for a next valid date.
- * Equal to null only before the first iteration.
- *
- * @var CarbonInterface
- */
- protected $current;
-
- /**
- * Timezone of current date. Taken from the start date.
- *
- * @var \DateTimeZone|null
- */
- protected $timezone;
-
- /**
- * The cached validation result for current date.
- *
- * @var bool|string|null
- */
- protected $validationResult;
-
- /**
- * Timezone handler for settings() method.
- *
- * @var mixed
- */
- protected $tzName;
-
- /**
- * Make a CarbonPeriod instance from given variable if possible.
- *
- * @param mixed $var
- *
- * @return static|null
- */
- public static function make($var)
- {
- try {
- return static::instance($var);
- } catch (NotAPeriodException $e) {
- return static::create($var);
- }
- }
-
- /**
- * Create a new instance from a DatePeriod or CarbonPeriod object.
- *
- * @param CarbonPeriod|DatePeriod $period
- *
- * @return static
- */
- public static function instance($period)
- {
- if ($period instanceof static) {
- return $period->copy();
- }
-
- if ($period instanceof self) {
- return new static(
- $period->getStartDate(),
- $period->getEndDate() ?: $period->getRecurrences(),
- $period->getDateInterval(),
- $period->getOptions()
- );
- }
-
- if ($period instanceof DatePeriod) {
- return new static(
- $period->start,
- $period->end ?: ($period->recurrences - 1),
- $period->interval,
- $period->include_start_date ? 0 : static::EXCLUDE_START_DATE
- );
- }
-
- $class = \get_called_class();
- $type = \gettype($period);
-
- throw new NotAPeriodException(
- 'Argument 1 passed to '.$class.'::'.__METHOD__.'() '.
- 'must be an instance of DatePeriod or '.$class.', '.
- ($type === 'object' ? 'instance of '.\get_class($period) : $type).' given.'
- );
- }
-
- /**
- * Create a new instance.
- *
- * @return static
- */
- public static function create(...$params)
- {
- return static::createFromArray($params);
- }
-
- /**
- * Create a new instance from an array of parameters.
- *
- * @param array $params
- *
- * @return static
- */
- public static function createFromArray(array $params)
- {
- return new static(...$params);
- }
-
- /**
- * Create CarbonPeriod from ISO 8601 string.
- *
- * @param string $iso
- * @param int|null $options
- *
- * @return static
- */
- public static function createFromIso($iso, $options = null)
- {
- $params = static::parseIso8601($iso);
-
- $instance = static::createFromArray($params);
-
- if ($options !== null) {
- $instance->setOptions($options);
- }
-
- return $instance;
- }
-
- /**
- * Return whether given interval contains non zero value of any time unit.
- *
- * @param \DateInterval $interval
- *
- * @return bool
- */
- protected static function intervalHasTime(DateInterval $interval)
- {
- return $interval->h || $interval->i || $interval->s || $interval->f;
- }
-
- /**
- * Return whether given variable is an ISO 8601 specification.
- *
- * Note: Check is very basic, as actual validation will be done later when parsing.
- * We just want to ensure that variable is not any other type of a valid parameter.
- *
- * @param mixed $var
- *
- * @return bool
- */
- protected static function isIso8601($var)
- {
- if (!\is_string($var)) {
- return false;
- }
-
- // Match slash but not within a timezone name.
- $part = '[a-z]+(?:[_-][a-z]+)*';
-
- preg_match("#\b$part/$part\b|(/)#i", $var, $match);
-
- return isset($match[1]);
- }
-
- /**
- * Parse given ISO 8601 string into an array of arguments.
- *
- * @SuppressWarnings(PHPMD.ElseExpression)
- *
- * @param string $iso
- *
- * @return array
- */
- protected static function parseIso8601($iso)
- {
- $result = [];
-
- $interval = null;
- $start = null;
- $end = null;
-
- foreach (explode('/', $iso) as $key => $part) {
- if ($key === 0 && preg_match('/^R([0-9]*)$/', $part, $match)) {
- $parsed = \strlen($match[1]) ? (int) $match[1] : null;
- } elseif ($interval === null && $parsed = CarbonInterval::make($part)) {
- $interval = $part;
- } elseif ($start === null && $parsed = Carbon::make($part)) {
- $start = $part;
- } elseif ($end === null && $parsed = Carbon::make(static::addMissingParts($start ?? '', $part))) {
- $end = $part;
- } else {
- throw new InvalidPeriodParameterException("Invalid ISO 8601 specification: $iso.");
- }
-
- $result[] = $parsed;
- }
-
- return $result;
- }
-
- /**
- * Add missing parts of the target date from the soure date.
- *
- * @param string $source
- * @param string $target
- *
- * @return string
- */
- protected static function addMissingParts($source, $target)
- {
- $pattern = '/'.preg_replace('/[0-9]+/', '[0-9]+', preg_quote($target, '/')).'$/';
-
- $result = preg_replace($pattern, $target, $source, 1, $count);
-
- return $count ? $result : $target;
- }
-
- /**
- * Register a custom macro.
- *
- * @example
- * ```
- * CarbonPeriod::macro('middle', function () {
- * return $this->getStartDate()->average($this->getEndDate());
- * });
- * echo CarbonPeriod::since('2011-05-12')->until('2011-06-03')->middle();
- * ```
- *
- * @param string $name
- * @param object|callable $macro
- *
- * @return void
- */
- public static function macro($name, $macro)
- {
- static::$macros[$name] = $macro;
- }
-
- /**
- * Register macros from a mixin object.
- *
- * @example
- * ```
- * CarbonPeriod::mixin(new class {
- * public function addDays() {
- * return function ($count = 1) {
- * return $this->setStartDate(
- * $this->getStartDate()->addDays($count)
- * )->setEndDate(
- * $this->getEndDate()->addDays($count)
- * );
- * };
- * }
- * public function subDays() {
- * return function ($count = 1) {
- * return $this->setStartDate(
- * $this->getStartDate()->subDays($count)
- * )->setEndDate(
- * $this->getEndDate()->subDays($count)
- * );
- * };
- * }
- * });
- * echo CarbonPeriod::create('2000-01-01', '2000-02-01')->addDays(5)->subDays(3);
- * ```
- *
- * @param object|string $mixin
- *
- * @throws ReflectionException
- *
- * @return void
- */
- public static function mixin($mixin)
- {
- static::baseMixin($mixin);
- }
-
- /**
- * Check if macro is registered.
- *
- * @param string $name
- *
- * @return bool
- */
- public static function hasMacro($name)
- {
- return isset(static::$macros[$name]);
- }
-
- /**
- * Provide static proxy for instance aliases.
- *
- * @param string $method
- * @param array $parameters
- *
- * @return mixed
- */
- public static function __callStatic($method, $parameters)
- {
- $date = new static();
-
- if (static::hasMacro($method)) {
- return static::bindMacroContext(null, function () use (&$method, &$parameters, &$date) {
- return $date->callMacro($method, $parameters);
- });
- }
-
- return $date->$method(...$parameters);
- }
-
- /**
- * CarbonPeriod constructor.
- *
- * @SuppressWarnings(PHPMD.ElseExpression)
- *
- * @throws InvalidArgumentException
- */
- public function __construct(...$arguments)
- {
- // Parse and assign arguments one by one. First argument may be an ISO 8601 spec,
- // which will be first parsed into parts and then processed the same way.
-
- $argumentsCount = \count($arguments);
-
- if ($argumentsCount && static::isIso8601($iso = $arguments[0])) {
- array_splice($arguments, 0, 1, static::parseIso8601($iso));
- }
-
- if ($argumentsCount === 1) {
- if ($arguments[0] instanceof DatePeriod) {
- $arguments = [
- $arguments[0]->start,
- $arguments[0]->end ?: ($arguments[0]->recurrences - 1),
- $arguments[0]->interval,
- $arguments[0]->include_start_date ? 0 : static::EXCLUDE_START_DATE,
- ];
- } elseif ($arguments[0] instanceof self) {
- $arguments = [
- $arguments[0]->getStartDate(),
- $arguments[0]->getEndDate() ?: $arguments[0]->getRecurrences(),
- $arguments[0]->getDateInterval(),
- $arguments[0]->getOptions(),
- ];
- }
- }
-
- foreach ($arguments as $argument) {
- $parsedDate = null;
-
- if ($argument instanceof DateTimeZone) {
- $this->setTimezone($argument);
- } elseif ($this->dateInterval === null &&
- (
- \is_string($argument) && preg_match(
- '/^(-?\d(\d(?![\/-])|[^\d\/-]([\/-])?)*|P[T0-9].*|(?:\h*\d+(?:\.\d+)?\h*[a-z]+)+)$/i',
- $argument
- ) ||
- $argument instanceof DateInterval ||
- $argument instanceof Closure
- ) &&
- $parsedInterval = @CarbonInterval::make($argument)
- ) {
- $this->setDateInterval($parsedInterval);
- } elseif ($this->startDate === null && $parsedDate = $this->makeDateTime($argument)) {
- $this->setStartDate($parsedDate);
- } elseif ($this->endDate === null && ($parsedDate = $parsedDate ?? $this->makeDateTime($argument))) {
- $this->setEndDate($parsedDate);
- } elseif ($this->recurrences === null && $this->endDate === null && is_numeric($argument)) {
- $this->setRecurrences($argument);
- } elseif ($this->options === null && (\is_int($argument) || $argument === null)) {
- $this->setOptions($argument);
- } else {
- throw new InvalidPeriodParameterException('Invalid constructor parameters.');
- }
- }
-
- if ($this->startDate === null) {
- $this->setStartDate(Carbon::now());
- }
-
- if ($this->dateInterval === null) {
- $this->setDateInterval(CarbonInterval::day());
-
- $this->isDefaultInterval = true;
- }
-
- if ($this->options === null) {
- $this->setOptions(0);
- }
- }
-
- /**
- * Get a copy of the instance.
- *
- * @return static
- */
- public function copy()
- {
- return clone $this;
- }
-
- /**
- * Get the getter for a property allowing both `DatePeriod` snakeCase and camelCase names.
- *
- * @param string $name
- *
- * @return callable|null
- */
- protected function getGetter(string $name)
- {
- switch (strtolower(preg_replace('/[A-Z]/', '_$0', $name))) {
- case 'start':
- case 'start_date':
- return [$this, 'getStartDate'];
- case 'end':
- case 'end_date':
- return [$this, 'getEndDate'];
- case 'interval':
- case 'date_interval':
- return [$this, 'getDateInterval'];
- case 'recurrences':
- return [$this, 'getRecurrences'];
- case 'include_start_date':
- return [$this, 'isStartIncluded'];
- case 'include_end_date':
- return [$this, 'isEndIncluded'];
- case 'current':
- return [$this, 'current'];
- default:
- return null;
- }
- }
-
- /**
- * Get a property allowing both `DatePeriod` snakeCase and camelCase names.
- *
- * @param string $name
- *
- * @return bool|CarbonInterface|CarbonInterval|int|null
- */
- public function get(string $name)
- {
- $getter = $this->getGetter($name);
-
- if ($getter) {
- return $getter();
- }
-
- throw new UnknownGetterException($name);
- }
-
- /**
- * Get a property allowing both `DatePeriod` snakeCase and camelCase names.
- *
- * @param string $name
- *
- * @return bool|CarbonInterface|CarbonInterval|int|null
- */
- public function __get(string $name)
- {
- return $this->get($name);
- }
-
- /**
- * Check if an attribute exists on the object
- *
- * @param string $name
- *
- * @return bool
- */
- public function __isset(string $name): bool
- {
- return $this->getGetter($name) !== null;
- }
-
- /**
- * @alias copy
- *
- * Get a copy of the instance.
- *
- * @return static
- */
- public function clone()
- {
- return clone $this;
- }
-
- /**
- * Set the iteration item class.
- *
- * @param string $dateClass
- *
- * @return $this
- */
- public function setDateClass(string $dateClass)
- {
- if (!is_a($dateClass, CarbonInterface::class, true)) {
- throw new NotACarbonClassException($dateClass);
- }
-
- $this->dateClass = $dateClass;
-
- if (is_a($dateClass, Carbon::class, true)) {
- $this->toggleOptions(static::IMMUTABLE, false);
- } elseif (is_a($dateClass, CarbonImmutable::class, true)) {
- $this->toggleOptions(static::IMMUTABLE, true);
- }
-
- return $this;
- }
-
- /**
- * Returns iteration item date class.
- *
- * @return string
- */
- public function getDateClass(): string
- {
- return $this->dateClass;
- }
-
- /**
- * Change the period date interval.
- *
- * @param DateInterval|string $interval
- *
- * @throws InvalidIntervalException
- *
- * @return $this
- */
- public function setDateInterval($interval)
- {
- if (!$interval = CarbonInterval::make($interval)) {
- throw new InvalidIntervalException('Invalid interval.');
- }
-
- if ($interval->spec() === 'PT0S' && !$interval->f && !$interval->getStep()) {
- throw new InvalidIntervalException('Empty interval is not accepted.');
- }
-
- $this->dateInterval = $interval;
-
- $this->isDefaultInterval = false;
-
- $this->handleChangedParameters();
-
- return $this;
- }
-
- /**
- * Invert the period date interval.
- *
- * @return $this
- */
- public function invertDateInterval()
- {
- $interval = $this->dateInterval->invert();
-
- return $this->setDateInterval($interval);
- }
-
- /**
- * Set start and end date.
- *
- * @param DateTime|DateTimeInterface|string $start
- * @param DateTime|DateTimeInterface|string|null $end
- *
- * @return $this
- */
- public function setDates($start, $end)
- {
- $this->setStartDate($start);
- $this->setEndDate($end);
-
- return $this;
- }
-
- /**
- * Change the period options.
- *
- * @param int|null $options
- *
- * @throws InvalidArgumentException
- *
- * @return $this
- */
- public function setOptions($options)
- {
- if (!\is_int($options) && $options !== null) {
- throw new InvalidPeriodParameterException('Invalid options.');
- }
-
- $this->options = $options ?: 0;
-
- $this->handleChangedParameters();
-
- return $this;
- }
-
- /**
- * Get the period options.
- *
- * @return int
- */
- public function getOptions()
- {
- return $this->options;
- }
-
- /**
- * Toggle given options on or off.
- *
- * @param int $options
- * @param bool|null $state
- *
- * @throws \InvalidArgumentException
- *
- * @return $this
- */
- public function toggleOptions($options, $state = null)
- {
- if ($state === null) {
- $state = ($this->options & $options) !== $options;
- }
-
- return $this->setOptions(
- $state ?
- $this->options | $options :
- $this->options & ~$options
- );
- }
-
- /**
- * Toggle EXCLUDE_START_DATE option.
- *
- * @param bool $state
- *
- * @return $this
- */
- public function excludeStartDate($state = true)
- {
- return $this->toggleOptions(static::EXCLUDE_START_DATE, $state);
- }
-
- /**
- * Toggle EXCLUDE_END_DATE option.
- *
- * @param bool $state
- *
- * @return $this
- */
- public function excludeEndDate($state = true)
- {
- return $this->toggleOptions(static::EXCLUDE_END_DATE, $state);
- }
-
- /**
- * Get the underlying date interval.
- *
- * @return CarbonInterval
- */
- public function getDateInterval()
- {
- return $this->dateInterval->copy();
- }
-
- /**
- * Get start date of the period.
- *
- * @param string|null $rounding Optional rounding 'floor', 'ceil', 'round' using the period interval.
- *
- * @return CarbonInterface
- */
- public function getStartDate(string $rounding = null)
- {
- $date = $this->startDate->avoidMutation();
-
- return $rounding ? $date->round($this->getDateInterval(), $rounding) : $date;
- }
-
- /**
- * Get end date of the period.
- *
- * @param string|null $rounding Optional rounding 'floor', 'ceil', 'round' using the period interval.
- *
- * @return CarbonInterface|null
- */
- public function getEndDate(string $rounding = null)
- {
- if (!$this->endDate) {
- return null;
- }
-
- $date = $this->endDate->avoidMutation();
-
- return $rounding ? $date->round($this->getDateInterval(), $rounding) : $date;
- }
-
- /**
- * Get number of recurrences.
- *
- * @return int|float|null
- */
- public function getRecurrences()
- {
- return $this->recurrences;
- }
-
- /**
- * Returns true if the start date should be excluded.
- *
- * @return bool
- */
- public function isStartExcluded()
- {
- return ($this->options & static::EXCLUDE_START_DATE) !== 0;
- }
-
- /**
- * Returns true if the end date should be excluded.
- *
- * @return bool
- */
- public function isEndExcluded()
- {
- return ($this->options & static::EXCLUDE_END_DATE) !== 0;
- }
-
- /**
- * Returns true if the start date should be included.
- *
- * @return bool
- */
- public function isStartIncluded()
- {
- return !$this->isStartExcluded();
- }
-
- /**
- * Returns true if the end date should be included.
- *
- * @return bool
- */
- public function isEndIncluded()
- {
- return !$this->isEndExcluded();
- }
-
- /**
- * Return the start if it's included by option, else return the start + 1 period interval.
- *
- * @return CarbonInterface
- */
- public function getIncludedStartDate()
- {
- $start = $this->getStartDate();
-
- if ($this->isStartExcluded()) {
- return $start->add($this->getDateInterval());
- }
-
- return $start;
- }
-
- /**
- * Return the end if it's included by option, else return the end - 1 period interval.
- * Warning: if the period has no fixed end, this method will iterate the period to calculate it.
- *
- * @return CarbonInterface
- */
- public function getIncludedEndDate()
- {
- $end = $this->getEndDate();
-
- if (!$end) {
- return $this->calculateEnd();
- }
-
- if ($this->isEndExcluded()) {
- return $end->sub($this->getDateInterval());
- }
-
- return $end;
- }
-
- /**
- * Add a filter to the stack.
- *
- * @SuppressWarnings(PHPMD.UnusedFormalParameter)
- *
- * @param callable $callback
- * @param string $name
- *
- * @return $this
- */
- public function addFilter($callback, $name = null)
- {
- $tuple = $this->createFilterTuple(\func_get_args());
-
- $this->filters[] = $tuple;
-
- $this->handleChangedParameters();
-
- return $this;
- }
-
- /**
- * Prepend a filter to the stack.
- *
- * @SuppressWarnings(PHPMD.UnusedFormalParameter)
- *
- * @param callable $callback
- * @param string $name
- *
- * @return $this
- */
- public function prependFilter($callback, $name = null)
- {
- $tuple = $this->createFilterTuple(\func_get_args());
-
- array_unshift($this->filters, $tuple);
-
- $this->handleChangedParameters();
-
- return $this;
- }
-
- /**
- * Remove a filter by instance or name.
- *
- * @param callable|string $filter
- *
- * @return $this
- */
- public function removeFilter($filter)
- {
- $key = \is_callable($filter) ? 0 : 1;
-
- $this->filters = array_values(array_filter(
- $this->filters,
- function ($tuple) use ($key, $filter) {
- return $tuple[$key] !== $filter;
- }
- ));
-
- $this->updateInternalState();
-
- $this->handleChangedParameters();
-
- return $this;
- }
-
- /**
- * Return whether given instance or name is in the filter stack.
- *
- * @param callable|string $filter
- *
- * @return bool
- */
- public function hasFilter($filter)
- {
- $key = \is_callable($filter) ? 0 : 1;
-
- foreach ($this->filters as $tuple) {
- if ($tuple[$key] === $filter) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Get filters stack.
- *
- * @return array
- */
- public function getFilters()
- {
- return $this->filters;
- }
-
- /**
- * Set filters stack.
- *
- * @param array $filters
- *
- * @return $this
- */
- public function setFilters(array $filters)
- {
- $this->filters = $filters;
-
- $this->updateInternalState();
-
- $this->handleChangedParameters();
-
- return $this;
- }
-
- /**
- * Reset filters stack.
- *
- * @return $this
- */
- public function resetFilters()
- {
- $this->filters = [];
-
- if ($this->endDate !== null) {
- $this->filters[] = [static::END_DATE_FILTER, null];
- }
-
- if ($this->recurrences !== null) {
- $this->filters[] = [static::RECURRENCES_FILTER, null];
- }
-
- $this->handleChangedParameters();
-
- return $this;
- }
-
- /**
- * Add a recurrences filter (set maximum number of recurrences).
- *
- * @param int|float|null $recurrences
- *
- * @throws InvalidArgumentException
- *
- * @return $this
- */
- public function setRecurrences($recurrences)
- {
- if (!is_numeric($recurrences) && $recurrences !== null || $recurrences < 0) {
- throw new InvalidPeriodParameterException('Invalid number of recurrences.');
- }
-
- if ($recurrences === null) {
- return $this->removeFilter(static::RECURRENCES_FILTER);
- }
-
- $this->recurrences = $recurrences === INF ? INF : (int) $recurrences;
-
- if (!$this->hasFilter(static::RECURRENCES_FILTER)) {
- return $this->addFilter(static::RECURRENCES_FILTER);
- }
-
- $this->handleChangedParameters();
-
- return $this;
- }
-
- /**
- * Change the period start date.
- *
- * @param DateTime|DateTimeInterface|string $date
- * @param bool|null $inclusive
- *
- * @throws InvalidPeriodDateException
- *
- * @return $this
- */
- public function setStartDate($date, $inclusive = null)
- {
- if (!$date = ([$this->dateClass, 'make'])($date)) {
- throw new InvalidPeriodDateException('Invalid start date.');
- }
-
- $this->startDate = $date;
-
- if ($inclusive !== null) {
- $this->toggleOptions(static::EXCLUDE_START_DATE, !$inclusive);
- }
-
- return $this;
- }
-
- /**
- * Change the period end date.
- *
- * @param DateTime|DateTimeInterface|string|null $date
- * @param bool|null $inclusive
- *
- * @throws \InvalidArgumentException
- *
- * @return $this
- */
- public function setEndDate($date, $inclusive = null)
- {
- if ($date !== null && !$date = ([$this->dateClass, 'make'])($date)) {
- throw new InvalidPeriodDateException('Invalid end date.');
- }
-
- if (!$date) {
- return $this->removeFilter(static::END_DATE_FILTER);
- }
-
- $this->endDate = $date;
-
- if ($inclusive !== null) {
- $this->toggleOptions(static::EXCLUDE_END_DATE, !$inclusive);
- }
-
- if (!$this->hasFilter(static::END_DATE_FILTER)) {
- return $this->addFilter(static::END_DATE_FILTER);
- }
-
- $this->handleChangedParameters();
-
- return $this;
- }
-
- /**
- * Check if the current position is valid.
- *
- * @return bool
- */
- #[ReturnTypeWillChange]
- public function valid()
- {
- return $this->validateCurrentDate() === true;
- }
-
- /**
- * Return the current key.
- *
- * @return int|null
- */
- #[ReturnTypeWillChange]
- public function key()
- {
- return $this->valid()
- ? $this->key
- : null;
- }
-
- /**
- * Return the current date.
- *
- * @return CarbonInterface|null
- */
- #[ReturnTypeWillChange]
- public function current()
- {
- return $this->valid()
- ? $this->prepareForReturn($this->current)
- : null;
- }
-
- /**
- * Move forward to the next date.
- *
- * @throws RuntimeException
- *
- * @return void
- */
- #[ReturnTypeWillChange]
- public function next()
- {
- if ($this->current === null) {
- $this->rewind();
- }
-
- if ($this->validationResult !== static::END_ITERATION) {
- $this->key++;
-
- $this->incrementCurrentDateUntilValid();
- }
- }
-
- /**
- * Rewind to the start date.
- *
- * Iterating over a date in the UTC timezone avoids bug during backward DST change.
- *
- * @see https://bugs.php.net/bug.php?id=72255
- * @see https://bugs.php.net/bug.php?id=74274
- * @see https://wiki.php.net/rfc/datetime_and_daylight_saving_time
- *
- * @throws RuntimeException
- *
- * @return void
- */
- #[ReturnTypeWillChange]
- public function rewind()
- {
- $this->key = 0;
- $this->current = ([$this->dateClass, 'make'])($this->startDate);
- $settings = $this->getSettings();
-
- if ($this->hasLocalTranslator()) {
- $settings['locale'] = $this->getTranslatorLocale();
- }
-
- $this->current->settings($settings);
- $this->timezone = static::intervalHasTime($this->dateInterval) ? $this->current->getTimezone() : null;
-
- if ($this->timezone) {
- $this->current = $this->current->utc();
- }
-
- $this->validationResult = null;
-
- if ($this->isStartExcluded() || $this->validateCurrentDate() === false) {
- $this->incrementCurrentDateUntilValid();
- }
- }
-
- /**
- * Skip iterations and returns iteration state (false if ended, true if still valid).
- *
- * @param int $count steps number to skip (1 by default)
- *
- * @return bool
- */
- public function skip($count = 1)
- {
- for ($i = $count; $this->valid() && $i > 0; $i--) {
- $this->next();
- }
-
- return $this->valid();
- }
-
- /**
- * Format the date period as ISO 8601.
- *
- * @return string
- */
- public function toIso8601String()
- {
- $parts = [];
-
- if ($this->recurrences !== null) {
- $parts[] = 'R'.$this->recurrences;
- }
-
- $parts[] = $this->startDate->toIso8601String();
-
- $parts[] = $this->dateInterval->spec();
-
- if ($this->endDate !== null) {
- $parts[] = $this->endDate->toIso8601String();
- }
-
- return implode('/', $parts);
- }
-
- /**
- * Convert the date period into a string.
- *
- * @return string
- */
- public function toString()
- {
- $translator = ([$this->dateClass, 'getTranslator'])();
-
- $parts = [];
-
- $format = !$this->startDate->isStartOfDay() || $this->endDate && !$this->endDate->isStartOfDay()
- ? 'Y-m-d H:i:s'
- : 'Y-m-d';
-
- if ($this->recurrences !== null) {
- $parts[] = $this->translate('period_recurrences', [], $this->recurrences, $translator);
- }
-
- $parts[] = $this->translate('period_interval', [':interval' => $this->dateInterval->forHumans([
- 'join' => true,
- ])], null, $translator);
-
- $parts[] = $this->translate('period_start_date', [':date' => $this->startDate->rawFormat($format)], null, $translator);
-
- if ($this->endDate !== null) {
- $parts[] = $this->translate('period_end_date', [':date' => $this->endDate->rawFormat($format)], null, $translator);
- }
-
- $result = implode(' ', $parts);
-
- return mb_strtoupper(mb_substr($result, 0, 1)).mb_substr($result, 1);
- }
-
- /**
- * Format the date period as ISO 8601.
- *
- * @return string
- */
- public function spec()
- {
- return $this->toIso8601String();
- }
-
- /**
- * Cast the current instance into the given class.
- *
- * @param string $className The $className::instance() method will be called to cast the current object.
- *
- * @return DatePeriod
- */
- public function cast(string $className)
- {
- if (!method_exists($className, 'instance')) {
- if (is_a($className, DatePeriod::class, true)) {
- return new $className(
- $this->getStartDate(),
- $this->getDateInterval(),
- $this->getEndDate() ? $this->getIncludedEndDate() : $this->getRecurrences(),
- $this->isStartExcluded() ? DatePeriod::EXCLUDE_START_DATE : 0
- );
- }
-
- throw new InvalidCastException("$className has not the instance() method needed to cast the date.");
- }
-
- return $className::instance($this);
- }
-
- /**
- * Return native DatePeriod PHP object matching the current instance.
- *
- * @example
- * ```
- * var_dump(CarbonPeriod::create('2021-01-05', '2021-02-15')->toDatePeriod());
- * ```
- *
- * @return DatePeriod
- */
- public function toDatePeriod()
- {
- return $this->cast(DatePeriod::class);
- }
-
- /**
- * Convert the date period into an array without changing current iteration state.
- *
- * @return CarbonInterface[]
- */
- public function toArray()
- {
- $state = [
- $this->key,
- $this->current ? $this->current->avoidMutation() : null,
- $this->validationResult,
- ];
-
- $result = iterator_to_array($this);
-
- [$this->key, $this->current, $this->validationResult] = $state;
-
- return $result;
- }
-
- /**
- * Count dates in the date period.
- *
- * @return int
- */
- #[ReturnTypeWillChange]
- public function count()
- {
- return \count($this->toArray());
- }
-
- /**
- * Return the first date in the date period.
- *
- * @return CarbonInterface|null
- */
- public function first()
- {
- return ($this->toArray() ?: [])[0] ?? null;
- }
-
- /**
- * Return the last date in the date period.
- *
- * @return CarbonInterface|null
- */
- public function last()
- {
- $array = $this->toArray();
-
- return $array ? $array[\count($array) - 1] : null;
- }
-
- /**
- * Convert the date period into a string.
- *
- * @return string
- */
- public function __toString()
- {
- return $this->toString();
- }
-
- /**
- * Add aliases for setters.
- *
- * CarbonPeriod::days(3)->hours(5)->invert()
- * ->sinceNow()->until('2010-01-10')
- * ->filter(...)
- * ->count()
- *
- * Note: We use magic method to let static and instance aliases with the same names.
- *
- * @param string $method
- * @param array $parameters
- *
- * @return mixed
- */
- public function __call($method, $parameters)
- {
- if (static::hasMacro($method)) {
- return static::bindMacroContext($this, function () use (&$method, &$parameters) {
- return $this->callMacro($method, $parameters);
- });
- }
-
- $roundedValue = $this->callRoundMethod($method, $parameters);
-
- if ($roundedValue !== null) {
- return $roundedValue;
- }
-
- $first = \count($parameters) >= 1 ? $parameters[0] : null;
- $second = \count($parameters) >= 2 ? $parameters[1] : null;
-
- switch ($method) {
- case 'start':
- case 'since':
- return $this->setStartDate($first, $second);
-
- case 'sinceNow':
- return $this->setStartDate(new Carbon(), $first);
-
- case 'end':
- case 'until':
- return $this->setEndDate($first, $second);
-
- case 'untilNow':
- return $this->setEndDate(new Carbon(), $first);
-
- case 'dates':
- case 'between':
- return $this->setDates($first, $second);
-
- case 'recurrences':
- case 'times':
- return $this->setRecurrences($first);
-
- case 'options':
- return $this->setOptions($first);
-
- case 'toggle':
- return $this->toggleOptions($first, $second);
-
- case 'filter':
- case 'push':
- return $this->addFilter($first, $second);
-
- case 'prepend':
- return $this->prependFilter($first, $second);
-
- case 'filters':
- return $this->setFilters($first ?: []);
-
- case 'interval':
- case 'each':
- case 'every':
- case 'step':
- case 'stepBy':
- return $this->setDateInterval($first);
-
- case 'invert':
- return $this->invertDateInterval();
-
- case 'years':
- case 'year':
- case 'months':
- case 'month':
- case 'weeks':
- case 'week':
- case 'days':
- case 'dayz':
- case 'day':
- case 'hours':
- case 'hour':
- case 'minutes':
- case 'minute':
- case 'seconds':
- case 'second':
- return $this->setDateInterval((
- // Override default P1D when instantiating via fluent setters.
- [$this->isDefaultInterval ? new CarbonInterval('PT0S') : $this->dateInterval, $method]
- )(
- \count($parameters) === 0 ? 1 : $first
- ));
- }
-
- if ($this->localStrictModeEnabled ?? Carbon::isStrictModeEnabled()) {
- throw new UnknownMethodException($method);
- }
-
- return $this;
- }
-
- /**
- * Set the instance's timezone from a string or object and apply it to start/end.
- *
- * @param \DateTimeZone|string $timezone
- *
- * @return static
- */
- public function setTimezone($timezone)
- {
- $this->tzName = $timezone;
- $this->timezone = $timezone;
-
- if ($this->startDate) {
- $this->setStartDate($this->startDate->setTimezone($timezone));
- }
-
- if ($this->endDate) {
- $this->setEndDate($this->endDate->setTimezone($timezone));
- }
-
- return $this;
- }
-
- /**
- * Set the instance's timezone from a string or object and add/subtract the offset difference to start/end.
- *
- * @param \DateTimeZone|string $timezone
- *
- * @return static
- */
- public function shiftTimezone($timezone)
- {
- $this->tzName = $timezone;
- $this->timezone = $timezone;
-
- if ($this->startDate) {
- $this->setStartDate($this->startDate->shiftTimezone($timezone));
- }
-
- if ($this->endDate) {
- $this->setEndDate($this->endDate->shiftTimezone($timezone));
- }
-
- return $this;
- }
-
- /**
- * Returns the end is set, else calculated from start an recurrences.
- *
- * @param string|null $rounding Optional rounding 'floor', 'ceil', 'round' using the period interval.
- *
- * @return CarbonInterface
- */
- public function calculateEnd(string $rounding = null)
- {
- if ($end = $this->getEndDate($rounding)) {
- return $end;
- }
-
- if ($this->dateInterval->isEmpty()) {
- return $this->getStartDate($rounding);
- }
-
- $date = $this->getEndFromRecurrences() ?? $this->iterateUntilEnd();
-
- if ($date && $rounding) {
- $date = $date->avoidMutation()->round($this->getDateInterval(), $rounding);
- }
-
- return $date;
- }
-
- /**
- * @return CarbonInterface|null
- */
- private function getEndFromRecurrences()
- {
- if ($this->recurrences === null) {
- throw new UnreachableException(
- "Could not calculate period end without either explicit end or recurrences.\n".
- "If you're looking for a forever-period, use ->setRecurrences(INF)."
- );
- }
-
- if ($this->recurrences === INF) {
- $start = $this->getStartDate();
-
- return $start < $start->avoidMutation()->add($this->getDateInterval())
- ? CarbonImmutable::endOfTime()
- : CarbonImmutable::startOfTime();
- }
-
- if ($this->filters === [[static::RECURRENCES_FILTER, null]]) {
- return $this->getStartDate()->avoidMutation()->add(
- $this->getDateInterval()->times(
- $this->recurrences - ($this->isStartExcluded() ? 0 : 1)
- )
- );
- }
-
- return null;
- }
-
- /**
- * @return CarbonInterface|null
- */
- private function iterateUntilEnd()
- {
- $attempts = 0;
- $date = null;
-
- foreach ($this as $date) {
- if (++$attempts > static::END_MAX_ATTEMPTS) {
- throw new UnreachableException(
- 'Could not calculate period end after iterating '.static::END_MAX_ATTEMPTS.' times.'
- );
- }
- }
-
- return $date;
- }
-
- /**
- * Returns true if the current period overlaps the given one (if 1 parameter passed)
- * or the period between 2 dates (if 2 parameters passed).
- *
- * @param CarbonPeriod|\DateTimeInterface|Carbon|CarbonImmutable|string $rangeOrRangeStart
- * @param \DateTimeInterface|Carbon|CarbonImmutable|string|null $rangeEnd
- *
- * @return bool
- */
- public function overlaps($rangeOrRangeStart, $rangeEnd = null)
- {
- $range = $rangeEnd ? static::create($rangeOrRangeStart, $rangeEnd) : $rangeOrRangeStart;
-
- if (!($range instanceof self)) {
- $range = static::create($range);
- }
-
- [$start, $end] = $this->orderCouple($this->getStartDate(), $this->calculateEnd());
- [$rangeStart, $rangeEnd] = $this->orderCouple($range->getStartDate(), $range->calculateEnd());
-
- return $end > $rangeStart && $rangeEnd > $start;
- }
-
- /**
- * Execute a given function on each date of the period.
- *
- * @example
- * ```
- * Carbon::create('2020-11-29')->daysUntil('2020-12-24')->forEach(function (Carbon $date) {
- * echo $date->diffInDays('2020-12-25')." days before Christmas!\n";
- * });
- * ```
- *
- * @param callable $callback
- */
- public function forEach(callable $callback)
- {
- foreach ($this as $date) {
- $callback($date);
- }
- }
-
- /**
- * Execute a given function on each date of the period and yield the result of this function.
- *
- * @example
- * ```
- * $period = Carbon::create('2020-11-29')->daysUntil('2020-12-24');
- * echo implode("\n", iterator_to_array($period->map(function (Carbon $date) {
- * return $date->diffInDays('2020-12-25').' days before Christmas!';
- * })));
- * ```
- *
- * @param callable $callback
- *
- * @return \Generator
- */
- public function map(callable $callback)
- {
- foreach ($this as $date) {
- yield $callback($date);
- }
- }
-
- /**
- * Determines if the instance is equal to another.
- * Warning: if options differ, instances wil never be equal.
- *
- * @param mixed $period
- *
- * @see equalTo()
- *
- * @return bool
- */
- public function eq($period): bool
- {
- return $this->equalTo($period);
- }
-
- /**
- * Determines if the instance is equal to another.
- * Warning: if options differ, instances wil never be equal.
- *
- * @param mixed $period
- *
- * @return bool
- */
- public function equalTo($period): bool
- {
- if (!($period instanceof self)) {
- $period = self::make($period);
- }
-
- $end = $this->getEndDate();
-
- return $period !== null
- && $this->getDateInterval()->eq($period->getDateInterval())
- && $this->getStartDate()->eq($period->getStartDate())
- && ($end ? $end->eq($period->getEndDate()) : $this->getRecurrences() === $period->getRecurrences())
- && ($this->getOptions() & (~static::IMMUTABLE)) === ($period->getOptions() & (~static::IMMUTABLE));
- }
-
- /**
- * Determines if the instance is not equal to another.
- * Warning: if options differ, instances wil never be equal.
- *
- * @param mixed $period
- *
- * @see notEqualTo()
- *
- * @return bool
- */
- public function ne($period): bool
- {
- return $this->notEqualTo($period);
- }
-
- /**
- * Determines if the instance is not equal to another.
- * Warning: if options differ, instances wil never be equal.
- *
- * @param mixed $period
- *
- * @return bool
- */
- public function notEqualTo($period): bool
- {
- return !$this->eq($period);
- }
-
- /**
- * Determines if the start date is before an other given date.
- * (Rather start/end are included by options is ignored.)
- *
- * @param mixed $date
- *
- * @return bool
- */
- public function startsBefore($date = null): bool
- {
- return $this->getStartDate()->lessThan($this->resolveCarbon($date));
- }
-
- /**
- * Determines if the start date is before or the same as a given date.
- * (Rather start/end are included by options is ignored.)
- *
- * @param mixed $date
- *
- * @return bool
- */
- public function startsBeforeOrAt($date = null): bool
- {
- return $this->getStartDate()->lessThanOrEqualTo($this->resolveCarbon($date));
- }
-
- /**
- * Determines if the start date is after an other given date.
- * (Rather start/end are included by options is ignored.)
- *
- * @param mixed $date
- *
- * @return bool
- */
- public function startsAfter($date = null): bool
- {
- return $this->getStartDate()->greaterThan($this->resolveCarbon($date));
- }
-
- /**
- * Determines if the start date is after or the same as a given date.
- * (Rather start/end are included by options is ignored.)
- *
- * @param mixed $date
- *
- * @return bool
- */
- public function startsAfterOrAt($date = null): bool
- {
- return $this->getStartDate()->greaterThanOrEqualTo($this->resolveCarbon($date));
- }
-
- /**
- * Determines if the start date is the same as a given date.
- * (Rather start/end are included by options is ignored.)
- *
- * @param mixed $date
- *
- * @return bool
- */
- public function startsAt($date = null): bool
- {
- return $this->getStartDate()->equalTo($this->resolveCarbon($date));
- }
-
- /**
- * Determines if the end date is before an other given date.
- * (Rather start/end are included by options is ignored.)
- *
- * @param mixed $date
- *
- * @return bool
- */
- public function endsBefore($date = null): bool
- {
- return $this->calculateEnd()->lessThan($this->resolveCarbon($date));
- }
-
- /**
- * Determines if the end date is before or the same as a given date.
- * (Rather start/end are included by options is ignored.)
- *
- * @param mixed $date
- *
- * @return bool
- */
- public function endsBeforeOrAt($date = null): bool
- {
- return $this->calculateEnd()->lessThanOrEqualTo($this->resolveCarbon($date));
- }
-
- /**
- * Determines if the end date is after an other given date.
- * (Rather start/end are included by options is ignored.)
- *
- * @param mixed $date
- *
- * @return bool
- */
- public function endsAfter($date = null): bool
- {
- return $this->calculateEnd()->greaterThan($this->resolveCarbon($date));
- }
-
- /**
- * Determines if the end date is after or the same as a given date.
- * (Rather start/end are included by options is ignored.)
- *
- * @param mixed $date
- *
- * @return bool
- */
- public function endsAfterOrAt($date = null): bool
- {
- return $this->calculateEnd()->greaterThanOrEqualTo($this->resolveCarbon($date));
- }
-
- /**
- * Determines if the end date is the same as a given date.
- * (Rather start/end are included by options is ignored.)
- *
- * @param mixed $date
- *
- * @return bool
- */
- public function endsAt($date = null): bool
- {
- return $this->calculateEnd()->equalTo($this->resolveCarbon($date));
- }
-
- /**
- * Return true if start date is now or later.
- * (Rather start/end are included by options is ignored.)
- *
- * @return bool
- */
- public function isStarted(): bool
- {
- return $this->startsBeforeOrAt();
- }
-
- /**
- * Return true if end date is now or later.
- * (Rather start/end are included by options is ignored.)
- *
- * @return bool
- */
- public function isEnded(): bool
- {
- return $this->endsBeforeOrAt();
- }
-
- /**
- * Return true if now is between start date (included) and end date (excluded).
- * (Rather start/end are included by options is ignored.)
- *
- * @return bool
- */
- public function isInProgress(): bool
- {
- return $this->isStarted() && !$this->isEnded();
- }
-
- /**
- * Round the current instance at the given unit with given precision if specified and the given function.
- *
- * @param string $unit
- * @param float|int|string|\DateInterval|null $precision
- * @param string $function
- *
- * @return $this
- */
- public function roundUnit($unit, $precision = 1, $function = 'round')
- {
- $this->setStartDate($this->getStartDate()->roundUnit($unit, $precision, $function));
-
- if ($this->endDate) {
- $this->setEndDate($this->getEndDate()->roundUnit($unit, $precision, $function));
- }
-
- $this->setDateInterval($this->getDateInterval()->roundUnit($unit, $precision, $function));
-
- return $this;
- }
-
- /**
- * Truncate the current instance at the given unit with given precision if specified.
- *
- * @param string $unit
- * @param float|int|string|\DateInterval|null $precision
- *
- * @return $this
- */
- public function floorUnit($unit, $precision = 1)
- {
- return $this->roundUnit($unit, $precision, 'floor');
- }
-
- /**
- * Ceil the current instance at the given unit with given precision if specified.
- *
- * @param string $unit
- * @param float|int|string|\DateInterval|null $precision
- *
- * @return $this
- */
- public function ceilUnit($unit, $precision = 1)
- {
- return $this->roundUnit($unit, $precision, 'ceil');
- }
-
- /**
- * Round the current instance second with given precision if specified (else period interval is used).
- *
- * @param float|int|string|\DateInterval|null $precision
- * @param string $function
- *
- * @return $this
- */
- public function round($precision = null, $function = 'round')
- {
- return $this->roundWith($precision ?? (string) $this->getDateInterval(), $function);
- }
-
- /**
- * Round the current instance second with given precision if specified (else period interval is used).
- *
- * @param float|int|string|\DateInterval|null $precision
- *
- * @return $this
- */
- public function floor($precision = null)
- {
- return $this->round($precision, 'floor');
- }
-
- /**
- * Ceil the current instance second with given precision if specified (else period interval is used).
- *
- * @param float|int|string|\DateInterval|null $precision
- *
- * @return $this
- */
- public function ceil($precision = null)
- {
- return $this->round($precision, 'ceil');
- }
-
- /**
- * Specify data which should be serialized to JSON.
- *
- * @link https://php.net/manual/en/jsonserializable.jsonserialize.php
- *
- * @return CarbonInterface[]
- */
- #[ReturnTypeWillChange]
- public function jsonSerialize()
- {
- return $this->toArray();
- }
-
- /**
- * Return true if the given date is between start and end.
- *
- * @param \Carbon\Carbon|\Carbon\CarbonPeriod|\Carbon\CarbonInterval|\DateInterval|\DatePeriod|\DateTimeInterface|string|null $date
- *
- * @return bool
- */
- public function contains($date = null): bool
- {
- $startMethod = 'startsBefore'.($this->isStartIncluded() ? 'OrAt' : '');
- $endMethod = 'endsAfter'.($this->isEndIncluded() ? 'OrAt' : '');
-
- return $this->$startMethod($date) && $this->$endMethod($date);
- }
-
- /**
- * Return true if the current period follows a given other period (with no overlap).
- * For instance, [2019-08-01 -> 2019-08-12] follows [2019-07-29 -> 2019-07-31]
- * Note than in this example, follows() would be false if 2019-08-01 or 2019-07-31 was excluded by options.
- *
- * @param \Carbon\CarbonPeriod|\DatePeriod|string $period
- *
- * @return bool
- */
- public function follows($period, ...$arguments): bool
- {
- $period = $this->resolveCarbonPeriod($period, ...$arguments);
-
- return $this->getIncludedStartDate()->equalTo($period->getIncludedEndDate()->add($period->getDateInterval()));
- }
-
- /**
- * Return true if the given other period follows the current one (with no overlap).
- * For instance, [2019-07-29 -> 2019-07-31] is followed by [2019-08-01 -> 2019-08-12]
- * Note than in this example, isFollowedBy() would be false if 2019-08-01 or 2019-07-31 was excluded by options.
- *
- * @param \Carbon\CarbonPeriod|\DatePeriod|string $period
- *
- * @return bool
- */
- public function isFollowedBy($period, ...$arguments): bool
- {
- $period = $this->resolveCarbonPeriod($period, ...$arguments);
-
- return $period->follows($this);
- }
-
- /**
- * Return true if the given period either follows or is followed by the current one.
- *
- * @see follows()
- * @see isFollowedBy()
- *
- * @param \Carbon\CarbonPeriod|\DatePeriod|string $period
- *
- * @return bool
- */
- public function isConsecutiveWith($period, ...$arguments): bool
- {
- return $this->follows($period, ...$arguments) || $this->isFollowedBy($period, ...$arguments);
- }
-
- /**
- * Update properties after removing built-in filters.
- *
- * @return void
- */
- protected function updateInternalState()
- {
- if (!$this->hasFilter(static::END_DATE_FILTER)) {
- $this->endDate = null;
- }
-
- if (!$this->hasFilter(static::RECURRENCES_FILTER)) {
- $this->recurrences = null;
- }
- }
-
- /**
- * Create a filter tuple from raw parameters.
- *
- * Will create an automatic filter callback for one of Carbon's is* methods.
- *
- * @param array $parameters
- *
- * @return array
- */
- protected function createFilterTuple(array $parameters)
- {
- $method = array_shift($parameters);
-
- if (!$this->isCarbonPredicateMethod($method)) {
- return [$method, array_shift($parameters)];
- }
-
- return [function ($date) use ($method, $parameters) {
- return ([$date, $method])(...$parameters);
- }, $method];
- }
-
- /**
- * Return whether given callable is a string pointing to one of Carbon's is* methods
- * and should be automatically converted to a filter callback.
- *
- * @param callable $callable
- *
- * @return bool
- */
- protected function isCarbonPredicateMethod($callable)
- {
- return \is_string($callable) && str_starts_with($callable, 'is') &&
- (method_exists($this->dateClass, $callable) || ([$this->dateClass, 'hasMacro'])($callable));
- }
-
- /**
- * Recurrences filter callback (limits number of recurrences).
- *
- * @SuppressWarnings(PHPMD.UnusedFormalParameter)
- *
- * @param \Carbon\Carbon $current
- * @param int $key
- *
- * @return bool|string
- */
- protected function filterRecurrences($current, $key)
- {
- if ($key < $this->recurrences) {
- return true;
- }
-
- return static::END_ITERATION;
- }
-
- /**
- * End date filter callback.
- *
- * @param \Carbon\Carbon $current
- *
- * @return bool|string
- */
- protected function filterEndDate($current)
- {
- if (!$this->isEndExcluded() && $current == $this->endDate) {
- return true;
- }
-
- if ($this->dateInterval->invert ? $current > $this->endDate : $current < $this->endDate) {
- return true;
- }
-
- return static::END_ITERATION;
- }
-
- /**
- * End iteration filter callback.
- *
- * @return string
- */
- protected function endIteration()
- {
- return static::END_ITERATION;
- }
-
- /**
- * Handle change of the parameters.
- */
- protected function handleChangedParameters()
- {
- if (($this->getOptions() & static::IMMUTABLE) && $this->dateClass === Carbon::class) {
- $this->setDateClass(CarbonImmutable::class);
- } elseif (!($this->getOptions() & static::IMMUTABLE) && $this->dateClass === CarbonImmutable::class) {
- $this->setDateClass(Carbon::class);
- }
-
- $this->validationResult = null;
- }
-
- /**
- * Validate current date and stop iteration when necessary.
- *
- * Returns true when current date is valid, false if it is not, or static::END_ITERATION
- * when iteration should be stopped.
- *
- * @return bool|string
- */
- protected function validateCurrentDate()
- {
- if ($this->current === null) {
- $this->rewind();
- }
-
- // Check after the first rewind to avoid repeating the initial validation.
- return $this->validationResult ?? ($this->validationResult = $this->checkFilters());
- }
-
- /**
- * Check whether current value and key pass all the filters.
- *
- * @return bool|string
- */
- protected function checkFilters()
- {
- $current = $this->prepareForReturn($this->current);
-
- foreach ($this->filters as $tuple) {
- $result = \call_user_func(
- $tuple[0],
- $current->avoidMutation(),
- $this->key,
- $this
- );
-
- if ($result === static::END_ITERATION) {
- return static::END_ITERATION;
- }
-
- if (!$result) {
- return false;
- }
- }
-
- return true;
- }
-
- /**
- * Prepare given date to be returned to the external logic.
- *
- * @param CarbonInterface $date
- *
- * @return CarbonInterface
- */
- protected function prepareForReturn(CarbonInterface $date)
- {
- $date = ([$this->dateClass, 'make'])($date);
-
- if ($this->timezone) {
- $date = $date->setTimezone($this->timezone);
- }
-
- return $date;
- }
-
- /**
- * Keep incrementing the current date until a valid date is found or the iteration is ended.
- *
- * @throws RuntimeException
- *
- * @return void
- */
- protected function incrementCurrentDateUntilValid()
- {
- $attempts = 0;
-
- do {
- $this->current = $this->current->add($this->dateInterval);
-
- $this->validationResult = null;
-
- if (++$attempts > static::NEXT_MAX_ATTEMPTS) {
- throw new UnreachableException('Could not find next valid date.');
- }
- } while ($this->validateCurrentDate() === false);
- }
-
- /**
- * Call given macro.
- *
- * @param string $name
- * @param array $parameters
- *
- * @return mixed
- */
- protected function callMacro($name, $parameters)
- {
- $macro = static::$macros[$name];
-
- if ($macro instanceof Closure) {
- $boundMacro = @$macro->bindTo($this, static::class) ?: @$macro->bindTo(null, static::class);
-
- return ($boundMacro ?: $macro)(...$parameters);
- }
-
- return $macro(...$parameters);
- }
-
- /**
- * Return the Carbon instance passed through, a now instance in the same timezone
- * if null given or parse the input if string given.
- *
- * @param \Carbon\Carbon|\Carbon\CarbonPeriod|\Carbon\CarbonInterval|\DateInterval|\DatePeriod|\DateTimeInterface|string|null $date
- *
- * @return \Carbon\CarbonInterface
- */
- protected function resolveCarbon($date = null)
- {
- return $this->getStartDate()->nowWithSameTz()->carbonize($date);
- }
-
- /**
- * Resolve passed arguments or DatePeriod to a CarbonPeriod object.
- *
- * @param mixed $period
- * @param mixed ...$arguments
- *
- * @return static
- */
- protected function resolveCarbonPeriod($period, ...$arguments)
- {
- if ($period instanceof self) {
- return $period;
- }
-
- return $period instanceof DatePeriod
- ? static::instance($period)
- : static::create($period, ...$arguments);
- }
-
- private function orderCouple($first, $second): array
- {
- return $first > $second ? [$second, $first] : [$first, $second];
- }
-
- private function makeDateTime($value): ?DateTimeInterface
- {
- if ($value instanceof DateTimeInterface) {
- return $value;
- }
-
- if (\is_string($value)) {
- $value = trim($value);
-
- if (!preg_match('/^P[0-9T]/', $value) &&
- !preg_match('/^R[0-9]/', $value) &&
- preg_match('/[a-z0-9]/i', $value)
- ) {
- return Carbon::parse($value, $this->tzName);
- }
- }
-
- return null;
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/CarbonTimeZone.php b/vendor/nesbot/carbon/src/Carbon/CarbonTimeZone.php
deleted file mode 100644
index b4d16ba9..00000000
--- a/vendor/nesbot/carbon/src/Carbon/CarbonTimeZone.php
+++ /dev/null
@@ -1,308 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon;
-
-use Carbon\Exceptions\InvalidCastException;
-use Carbon\Exceptions\InvalidTimeZoneException;
-use DateTimeInterface;
-use DateTimeZone;
-use Throwable;
-
-class CarbonTimeZone extends DateTimeZone
-{
- public function __construct($timezone = null)
- {
- parent::__construct(static::getDateTimeZoneNameFromMixed($timezone));
- }
-
- protected static function parseNumericTimezone($timezone)
- {
- if ($timezone <= -100 || $timezone >= 100) {
- throw new InvalidTimeZoneException('Absolute timezone offset cannot be greater than 100.');
- }
-
- return ($timezone >= 0 ? '+' : '').$timezone.':00';
- }
-
- protected static function getDateTimeZoneNameFromMixed($timezone)
- {
- if ($timezone === null) {
- return date_default_timezone_get();
- }
-
- if (\is_string($timezone)) {
- $timezone = preg_replace('/^\s*([+-]\d+)(\d{2})\s*$/', '$1:$2', $timezone);
- }
-
- if (is_numeric($timezone)) {
- return static::parseNumericTimezone($timezone);
- }
-
- return $timezone;
- }
-
- protected static function getDateTimeZoneFromName(&$name)
- {
- return @timezone_open($name = (string) static::getDateTimeZoneNameFromMixed($name));
- }
-
- /**
- * Cast the current instance into the given class.
- *
- * @param string $className The $className::instance() method will be called to cast the current object.
- *
- * @return DateTimeZone
- */
- public function cast(string $className)
- {
- if (!method_exists($className, 'instance')) {
- if (is_a($className, DateTimeZone::class, true)) {
- return new $className($this->getName());
- }
-
- throw new InvalidCastException("$className has not the instance() method needed to cast the date.");
- }
-
- return $className::instance($this);
- }
-
- /**
- * Create a CarbonTimeZone from mixed input.
- *
- * @param DateTimeZone|string|int|null $object original value to get CarbonTimeZone from it.
- * @param DateTimeZone|string|int|null $objectDump dump of the object for error messages.
- *
- * @throws InvalidTimeZoneException
- *
- * @return false|static
- */
- public static function instance($object = null, $objectDump = null)
- {
- $tz = $object;
-
- if ($tz instanceof static) {
- return $tz;
- }
-
- if ($tz === null) {
- return new static();
- }
-
- if (!$tz instanceof DateTimeZone) {
- $tz = static::getDateTimeZoneFromName($object);
- }
-
- if ($tz === false) {
- if (Carbon::isStrictModeEnabled()) {
- throw new InvalidTimeZoneException('Unknown or bad timezone ('.($objectDump ?: $object).')');
- }
-
- return false;
- }
-
- return new static($tz->getName());
- }
-
- /**
- * Returns abbreviated name of the current timezone according to DST setting.
- *
- * @param bool $dst
- *
- * @return string
- */
- public function getAbbreviatedName($dst = false)
- {
- $name = $this->getName();
-
- foreach ($this->listAbbreviations() as $abbreviation => $zones) {
- foreach ($zones as $zone) {
- if ($zone['timezone_id'] === $name && $zone['dst'] == $dst) {
- return $abbreviation;
- }
- }
- }
-
- return 'unknown';
- }
-
- /**
- * @alias getAbbreviatedName
- *
- * Returns abbreviated name of the current timezone according to DST setting.
- *
- * @param bool $dst
- *
- * @return string
- */
- public function getAbbr($dst = false)
- {
- return $this->getAbbreviatedName($dst);
- }
-
- /**
- * Get the offset as string "sHH:MM" (such as "+00:00" or "-12:30").
- *
- * @param DateTimeInterface|null $date
- *
- * @return string
- */
- public function toOffsetName(DateTimeInterface $date = null)
- {
- return static::getOffsetNameFromMinuteOffset(
- $this->getOffset($date ?: Carbon::now($this)) / 60
- );
- }
-
- /**
- * Returns a new CarbonTimeZone object using the offset string instead of region string.
- *
- * @param DateTimeInterface|null $date
- *
- * @return CarbonTimeZone
- */
- public function toOffsetTimeZone(DateTimeInterface $date = null)
- {
- return new static($this->toOffsetName($date));
- }
-
- /**
- * Returns the first region string (such as "America/Toronto") that matches the current timezone or
- * false if no match is found.
- *
- * @see timezone_name_from_abbr native PHP function.
- *
- * @param DateTimeInterface|null $date
- * @param int $isDst
- *
- * @return string|false
- */
- public function toRegionName(DateTimeInterface $date = null, $isDst = 1)
- {
- $name = $this->getName();
- $firstChar = substr($name, 0, 1);
-
- if ($firstChar !== '+' && $firstChar !== '-') {
- return $name;
- }
-
- $date = $date ?: Carbon::now($this);
-
- // Integer construction no longer supported since PHP 8
- // @codeCoverageIgnoreStart
- try {
- $offset = @$this->getOffset($date) ?: 0;
- } catch (Throwable $e) {
- $offset = 0;
- }
- // @codeCoverageIgnoreEnd
-
- $name = @timezone_name_from_abbr('', $offset, $isDst);
-
- if ($name) {
- return $name;
- }
-
- foreach (timezone_identifiers_list() as $timezone) {
- if (Carbon::instance($date)->tz($timezone)->getOffset() === $offset) {
- return $timezone;
- }
- }
-
- return false;
- }
-
- /**
- * Returns a new CarbonTimeZone object using the region string instead of offset string.
- *
- * @param DateTimeInterface|null $date
- *
- * @return CarbonTimeZone|false
- */
- public function toRegionTimeZone(DateTimeInterface $date = null)
- {
- $tz = $this->toRegionName($date);
-
- if ($tz === false) {
- if (Carbon::isStrictModeEnabled()) {
- throw new InvalidTimeZoneException('Unknown timezone for offset '.$this->getOffset($date ?: Carbon::now($this)).' seconds.');
- }
-
- return false;
- }
-
- return new static($tz);
- }
-
- /**
- * Cast to string (get timezone name).
- *
- * @return string
- */
- public function __toString()
- {
- return $this->getName();
- }
-
- /**
- * Create a CarbonTimeZone from mixed input.
- *
- * @param DateTimeZone|string|int|null $object
- *
- * @return false|static
- */
- public static function create($object = null)
- {
- return static::instance($object);
- }
-
- /**
- * Create a CarbonTimeZone from int/float hour offset.
- *
- * @param float $hourOffset number of hour of the timezone shift (can be decimal).
- *
- * @return false|static
- */
- public static function createFromHourOffset(float $hourOffset)
- {
- return static::createFromMinuteOffset($hourOffset * Carbon::MINUTES_PER_HOUR);
- }
-
- /**
- * Create a CarbonTimeZone from int/float minute offset.
- *
- * @param float $minuteOffset number of total minutes of the timezone shift.
- *
- * @return false|static
- */
- public static function createFromMinuteOffset(float $minuteOffset)
- {
- return static::instance(static::getOffsetNameFromMinuteOffset($minuteOffset));
- }
-
- /**
- * Convert a total minutes offset into a standardized timezone offset string.
- *
- * @param float $minutes number of total minutes of the timezone shift.
- *
- * @return string
- */
- public static function getOffsetNameFromMinuteOffset(float $minutes): string
- {
- $minutes = round($minutes);
- $unsignedMinutes = abs($minutes);
-
- return ($minutes < 0 ? '-' : '+').
- str_pad((string) floor($unsignedMinutes / 60), 2, '0', STR_PAD_LEFT).
- ':'.
- str_pad((string) ($unsignedMinutes % 60), 2, '0', STR_PAD_LEFT);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Cli/Invoker.php b/vendor/nesbot/carbon/src/Carbon/Cli/Invoker.php
deleted file mode 100644
index 4f35d6c6..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Cli/Invoker.php
+++ /dev/null
@@ -1,38 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Cli;
-
-class Invoker
-{
- public const CLI_CLASS_NAME = 'Carbon\\Cli';
-
- protected function runWithCli(string $className, array $parameters): bool
- {
- $cli = new $className();
-
- return $cli(...$parameters);
- }
-
- public function __invoke(...$parameters): bool
- {
- if (class_exists(self::CLI_CLASS_NAME)) {
- return $this->runWithCli(self::CLI_CLASS_NAME, $parameters);
- }
-
- $function = (($parameters[1] ?? '') === 'install' ? ($parameters[2] ?? null) : null) ?: 'shell_exec';
- $function('composer require carbon-cli/carbon-cli --no-interaction');
-
- echo 'Installation succeeded.';
-
- return true;
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonDoctrineType.php b/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonDoctrineType.php
deleted file mode 100644
index ccc457fc..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonDoctrineType.php
+++ /dev/null
@@ -1,23 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Doctrine;
-
-use Doctrine\DBAL\Platforms\AbstractPlatform;
-
-interface CarbonDoctrineType
-{
- public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform);
-
- public function convertToPHPValue($value, AbstractPlatform $platform);
-
- public function convertToDatabaseValue($value, AbstractPlatform $platform);
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonImmutableType.php b/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonImmutableType.php
deleted file mode 100644
index bf476a77..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonImmutableType.php
+++ /dev/null
@@ -1,37 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Doctrine;
-
-use Doctrine\DBAL\Platforms\AbstractPlatform;
-
-class CarbonImmutableType extends DateTimeImmutableType implements CarbonDoctrineType
-{
- /**
- * {@inheritdoc}
- *
- * @return string
- */
- public function getName()
- {
- return 'carbon_immutable';
- }
-
- /**
- * {@inheritdoc}
- *
- * @return bool
- */
- public function requiresSQLCommentHint(AbstractPlatform $platform)
- {
- return true;
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonType.php b/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonType.php
deleted file mode 100644
index 9289d84d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonType.php
+++ /dev/null
@@ -1,37 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Doctrine;
-
-use Doctrine\DBAL\Platforms\AbstractPlatform;
-
-class CarbonType extends DateTimeType implements CarbonDoctrineType
-{
- /**
- * {@inheritdoc}
- *
- * @return string
- */
- public function getName()
- {
- return 'carbon';
- }
-
- /**
- * {@inheritdoc}
- *
- * @return bool
- */
- public function requiresSQLCommentHint(AbstractPlatform $platform)
- {
- return true;
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonTypeConverter.php b/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonTypeConverter.php
deleted file mode 100644
index 8f2fdee8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonTypeConverter.php
+++ /dev/null
@@ -1,116 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Doctrine;
-
-use Carbon\Carbon;
-use Carbon\CarbonInterface;
-use DateTimeInterface;
-use Doctrine\DBAL\Platforms\AbstractPlatform;
-use Doctrine\DBAL\Types\ConversionException;
-use Exception;
-
-/**
- * @template T of CarbonInterface
- */
-trait CarbonTypeConverter
-{
- /**
- * @return class-string
- */
- protected function getCarbonClassName(): string
- {
- return Carbon::class;
- }
-
- /**
- * @return string
- */
- public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform)
- {
- $precision = ($fieldDeclaration['precision'] ?: 10) === 10
- ? DateTimeDefaultPrecision::get()
- : $fieldDeclaration['precision'];
- $type = parent::getSQLDeclaration($fieldDeclaration, $platform);
-
- if (!$precision) {
- return $type;
- }
-
- if (str_contains($type, '(')) {
- return preg_replace('/\(\d+\)/', "($precision)", $type);
- }
-
- [$before, $after] = explode(' ', "$type ");
-
- return trim("$before($precision) $after");
- }
-
- /**
- * @SuppressWarnings(PHPMD.UnusedFormalParameter)
- *
- * @return T|null
- */
- public function convertToPHPValue($value, AbstractPlatform $platform)
- {
- $class = $this->getCarbonClassName();
-
- if ($value === null || is_a($value, $class)) {
- return $value;
- }
-
- if ($value instanceof DateTimeInterface) {
- return $class::instance($value);
- }
-
- $date = null;
- $error = null;
-
- try {
- $date = $class::parse($value);
- } catch (Exception $exception) {
- $error = $exception;
- }
-
- if (!$date) {
- throw ConversionException::conversionFailedFormat(
- $value,
- $this->getName(),
- 'Y-m-d H:i:s.u or any format supported by '.$class.'::parse()',
- $error
- );
- }
-
- return $date;
- }
-
- /**
- * @SuppressWarnings(PHPMD.UnusedFormalParameter)
- *
- * @return string|null
- */
- public function convertToDatabaseValue($value, AbstractPlatform $platform)
- {
- if ($value === null) {
- return $value;
- }
-
- if ($value instanceof DateTimeInterface) {
- return $value->format('Y-m-d H:i:s.u');
- }
-
- throw ConversionException::conversionFailedInvalidType(
- $value,
- $this->getName(),
- ['null', 'DateTime', 'Carbon']
- );
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Doctrine/DateTimeDefaultPrecision.php b/vendor/nesbot/carbon/src/Carbon/Doctrine/DateTimeDefaultPrecision.php
deleted file mode 100644
index 642fd413..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Doctrine/DateTimeDefaultPrecision.php
+++ /dev/null
@@ -1,37 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Doctrine;
-
-class DateTimeDefaultPrecision
-{
- private static $precision = 6;
-
- /**
- * Change the default Doctrine datetime and datetime_immutable precision.
- *
- * @param int $precision
- */
- public static function set(int $precision): void
- {
- self::$precision = $precision;
- }
-
- /**
- * Get the default Doctrine datetime and datetime_immutable precision.
- *
- * @return int
- */
- public static function get(): int
- {
- return self::$precision;
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Doctrine/DateTimeImmutableType.php b/vendor/nesbot/carbon/src/Carbon/Doctrine/DateTimeImmutableType.php
deleted file mode 100644
index 49927103..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Doctrine/DateTimeImmutableType.php
+++ /dev/null
@@ -1,24 +0,0 @@
- */
- use CarbonTypeConverter;
-
- /**
- * @return class-string
- */
- protected function getCarbonClassName(): string
- {
- return CarbonImmutable::class;
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Doctrine/DateTimeType.php b/vendor/nesbot/carbon/src/Carbon/Doctrine/DateTimeType.php
deleted file mode 100644
index 29b0bb95..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Doctrine/DateTimeType.php
+++ /dev/null
@@ -1,16 +0,0 @@
- */
- use CarbonTypeConverter;
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/BadComparisonUnitException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/BadComparisonUnitException.php
deleted file mode 100644
index b3a08719..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Exceptions/BadComparisonUnitException.php
+++ /dev/null
@@ -1,29 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Exceptions;
-
-use Exception;
-
-class BadComparisonUnitException extends UnitException
-{
- /**
- * Constructor.
- *
- * @param string $unit
- * @param int $code
- * @param Exception|null $previous
- */
- public function __construct($unit, $code = 0, Exception $previous = null)
- {
- parent::__construct("Bad comparison unit: '$unit'", $code, $previous);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/BadFluentConstructorException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/BadFluentConstructorException.php
deleted file mode 100644
index d5cd5564..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Exceptions/BadFluentConstructorException.php
+++ /dev/null
@@ -1,30 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Exceptions;
-
-use BadMethodCallException as BaseBadMethodCallException;
-use Exception;
-
-class BadFluentConstructorException extends BaseBadMethodCallException implements BadMethodCallException
-{
- /**
- * Constructor.
- *
- * @param string $method
- * @param int $code
- * @param Exception|null $previous
- */
- public function __construct($method, $code = 0, Exception $previous = null)
- {
- parent::__construct(sprintf("Unknown fluent constructor '%s'.", $method), $code, $previous);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/BadFluentSetterException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/BadFluentSetterException.php
deleted file mode 100644
index 1d7ec542..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Exceptions/BadFluentSetterException.php
+++ /dev/null
@@ -1,30 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Exceptions;
-
-use BadMethodCallException as BaseBadMethodCallException;
-use Exception;
-
-class BadFluentSetterException extends BaseBadMethodCallException implements BadMethodCallException
-{
- /**
- * Constructor.
- *
- * @param string $method
- * @param int $code
- * @param Exception|null $previous
- */
- public function __construct($method, $code = 0, Exception $previous = null)
- {
- parent::__construct(sprintf("Unknown fluent setter '%s'", $method), $code, $previous);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/BadMethodCallException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/BadMethodCallException.php
deleted file mode 100644
index 73c2dd86..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Exceptions/BadMethodCallException.php
+++ /dev/null
@@ -1,16 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Exceptions;
-
-interface BadMethodCallException extends Exception
-{
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/Exception.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/Exception.php
deleted file mode 100644
index 3bbbd77d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Exceptions/Exception.php
+++ /dev/null
@@ -1,16 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Exceptions;
-
-interface Exception
-{
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/ImmutableException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/ImmutableException.php
deleted file mode 100644
index a48d4f93..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Exceptions/ImmutableException.php
+++ /dev/null
@@ -1,30 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Exceptions;
-
-use Exception;
-use RuntimeException as BaseRuntimeException;
-
-class ImmutableException extends BaseRuntimeException implements RuntimeException
-{
- /**
- * Constructor.
- *
- * @param string $value the immutable type/value
- * @param int $code
- * @param Exception|null $previous
- */
- public function __construct($value, $code = 0, Exception $previous = null)
- {
- parent::__construct("$value is immutable.", $code, $previous);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidArgumentException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidArgumentException.php
deleted file mode 100644
index 9739f4d1..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidArgumentException.php
+++ /dev/null
@@ -1,16 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Exceptions;
-
-interface InvalidArgumentException extends Exception
-{
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidCastException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidCastException.php
deleted file mode 100644
index d2f37019..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidCastException.php
+++ /dev/null
@@ -1,30 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Exceptions;
-
-use Exception;
-use InvalidArgumentException as BaseInvalidArgumentException;
-
-class InvalidCastException extends BaseInvalidArgumentException implements InvalidArgumentException
-{
- /**
- * Constructor.
- *
- * @param string $message
- * @param int $code
- * @param Exception|null $previous
- */
- public function __construct($message, $code = 0, Exception $previous = null)
- {
- parent::__construct($message, $code, $previous);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidDateException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidDateException.php
deleted file mode 100644
index 99bb91c0..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidDateException.php
+++ /dev/null
@@ -1,67 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Exceptions;
-
-use Exception;
-use InvalidArgumentException as BaseInvalidArgumentException;
-
-class InvalidDateException extends BaseInvalidArgumentException implements InvalidArgumentException
-{
- /**
- * The invalid field.
- *
- * @var string
- */
- private $field;
-
- /**
- * The invalid value.
- *
- * @var mixed
- */
- private $value;
-
- /**
- * Constructor.
- *
- * @param string $field
- * @param mixed $value
- * @param int $code
- * @param Exception|null $previous
- */
- public function __construct($field, $value, $code = 0, Exception $previous = null)
- {
- $this->field = $field;
- $this->value = $value;
- parent::__construct($field.' : '.$value.' is not a valid value.', $code, $previous);
- }
-
- /**
- * Get the invalid field.
- *
- * @return string
- */
- public function getField()
- {
- return $this->field;
- }
-
- /**
- * Get the invalid value.
- *
- * @return mixed
- */
- public function getValue()
- {
- return $this->value;
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidFormatException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidFormatException.php
deleted file mode 100644
index 3341b49d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidFormatException.php
+++ /dev/null
@@ -1,30 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Exceptions;
-
-use Exception;
-use InvalidArgumentException as BaseInvalidArgumentException;
-
-class InvalidFormatException extends BaseInvalidArgumentException implements InvalidArgumentException
-{
- /**
- * Constructor.
- *
- * @param string $message
- * @param int $code
- * @param Exception|null $previous
- */
- public function __construct($message, $code = 0, Exception $previous = null)
- {
- parent::__construct($message, $code, $previous);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidIntervalException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidIntervalException.php
deleted file mode 100644
index 5f9f142e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidIntervalException.php
+++ /dev/null
@@ -1,30 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Exceptions;
-
-use Exception;
-use InvalidArgumentException as BaseInvalidArgumentException;
-
-class InvalidIntervalException extends BaseInvalidArgumentException implements InvalidArgumentException
-{
- /**
- * Constructor.
- *
- * @param string $message
- * @param int $code
- * @param Exception|null $previous
- */
- public function __construct($message, $code = 0, Exception $previous = null)
- {
- parent::__construct($message, $code, $previous);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodDateException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodDateException.php
deleted file mode 100644
index a37e3f5e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodDateException.php
+++ /dev/null
@@ -1,30 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Exceptions;
-
-use Exception;
-use InvalidArgumentException as BaseInvalidArgumentException;
-
-class InvalidPeriodDateException extends BaseInvalidArgumentException implements InvalidArgumentException
-{
- /**
- * Constructor.
- *
- * @param string $message
- * @param int $code
- * @param Exception|null $previous
- */
- public function __construct($message, $code = 0, Exception $previous = null)
- {
- parent::__construct($message, $code, $previous);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodParameterException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodParameterException.php
deleted file mode 100644
index ede47712..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodParameterException.php
+++ /dev/null
@@ -1,30 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Exceptions;
-
-use Exception;
-use InvalidArgumentException as BaseInvalidArgumentException;
-
-class InvalidPeriodParameterException extends BaseInvalidArgumentException implements InvalidArgumentException
-{
- /**
- * Constructor.
- *
- * @param string $message
- * @param int $code
- * @param Exception|null $previous
- */
- public function __construct($message, $code = 0, Exception $previous = null)
- {
- parent::__construct($message, $code, $previous);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidTimeZoneException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidTimeZoneException.php
deleted file mode 100644
index 892e16e8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidTimeZoneException.php
+++ /dev/null
@@ -1,30 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Exceptions;
-
-use Exception;
-use InvalidArgumentException as BaseInvalidArgumentException;
-
-class InvalidTimeZoneException extends BaseInvalidArgumentException implements InvalidArgumentException
-{
- /**
- * Constructor.
- *
- * @param string $message
- * @param int $code
- * @param Exception|null $previous
- */
- public function __construct($message, $code = 0, Exception $previous = null)
- {
- parent::__construct($message, $code, $previous);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidTypeException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidTypeException.php
deleted file mode 100644
index 3fbe3fc4..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidTypeException.php
+++ /dev/null
@@ -1,30 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Exceptions;
-
-use Exception;
-use InvalidArgumentException as BaseInvalidArgumentException;
-
-class InvalidTypeException extends BaseInvalidArgumentException implements InvalidArgumentException
-{
- /**
- * Constructor.
- *
- * @param string $message
- * @param int $code
- * @param Exception|null $previous
- */
- public function __construct($message, $code = 0, Exception $previous = null)
- {
- parent::__construct($message, $code, $previous);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/NotACarbonClassException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/NotACarbonClassException.php
deleted file mode 100644
index 2b4c48e3..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Exceptions/NotACarbonClassException.php
+++ /dev/null
@@ -1,35 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Exceptions;
-
-use Carbon\CarbonInterface;
-use Exception;
-use InvalidArgumentException as BaseInvalidArgumentException;
-
-class NotACarbonClassException extends BaseInvalidArgumentException implements InvalidArgumentException
-{
- /**
- * Constructor.
- *
- * @param string $className
- * @param int $code
- * @param Exception|null $previous
- */
- public function __construct($className, $code = 0, Exception $previous = null)
- {
- parent::__construct(sprintf(
- 'Given class does not implement %s: %s',
- CarbonInterface::class,
- $className
- ), $code, $previous);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/NotAPeriodException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/NotAPeriodException.php
deleted file mode 100644
index 41bb6290..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Exceptions/NotAPeriodException.php
+++ /dev/null
@@ -1,30 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Exceptions;
-
-use Exception;
-use InvalidArgumentException as BaseInvalidArgumentException;
-
-class NotAPeriodException extends BaseInvalidArgumentException implements InvalidArgumentException
-{
- /**
- * Constructor.
- *
- * @param string $message
- * @param int $code
- * @param Exception|null $previous
- */
- public function __construct($message, $code = 0, Exception $previous = null)
- {
- parent::__construct($message, $code, $previous);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/NotLocaleAwareException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/NotLocaleAwareException.php
deleted file mode 100644
index adbc36cd..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Exceptions/NotLocaleAwareException.php
+++ /dev/null
@@ -1,32 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Exceptions;
-
-use Exception;
-use InvalidArgumentException as BaseInvalidArgumentException;
-
-class NotLocaleAwareException extends BaseInvalidArgumentException implements InvalidArgumentException
-{
- /**
- * Constructor.
- *
- * @param mixed $object
- * @param int $code
- * @param Exception|null $previous
- */
- public function __construct($object, $code = 0, Exception $previous = null)
- {
- $dump = \is_object($object) ? \get_class($object) : \gettype($object);
-
- parent::__construct("$dump does neither implements Symfony\Contracts\Translation\LocaleAwareInterface nor getLocale() method.", $code, $previous);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/OutOfRangeException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/OutOfRangeException.php
deleted file mode 100644
index 54822d95..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Exceptions/OutOfRangeException.php
+++ /dev/null
@@ -1,101 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Exceptions;
-
-use Exception;
-use InvalidArgumentException as BaseInvalidArgumentException;
-
-// This will extends OutOfRangeException instead of InvalidArgumentException since 3.0.0
-// use OutOfRangeException as BaseOutOfRangeException;
-
-class OutOfRangeException extends BaseInvalidArgumentException implements InvalidArgumentException
-{
- /**
- * The unit or name of the value.
- *
- * @var string
- */
- private $unit;
-
- /**
- * The range minimum.
- *
- * @var mixed
- */
- private $min;
-
- /**
- * The range maximum.
- *
- * @var mixed
- */
- private $max;
-
- /**
- * The invalid value.
- *
- * @var mixed
- */
- private $value;
-
- /**
- * Constructor.
- *
- * @param string $unit
- * @param mixed $min
- * @param mixed $max
- * @param mixed $value
- * @param int $code
- * @param Exception|null $previous
- */
- public function __construct($unit, $min, $max, $value, $code = 0, Exception $previous = null)
- {
- $this->unit = $unit;
- $this->min = $min;
- $this->max = $max;
- $this->value = $value;
-
- parent::__construct("$unit must be between $min and $max, $value given", $code, $previous);
- }
-
- /**
- * @return mixed
- */
- public function getMax()
- {
- return $this->max;
- }
-
- /**
- * @return mixed
- */
- public function getMin()
- {
- return $this->min;
- }
-
- /**
- * @return mixed
- */
- public function getUnit()
- {
- return $this->unit;
- }
-
- /**
- * @return mixed
- */
- public function getValue()
- {
- return $this->value;
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/ParseErrorException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/ParseErrorException.php
deleted file mode 100644
index 0314c5d8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Exceptions/ParseErrorException.php
+++ /dev/null
@@ -1,33 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Exceptions;
-
-use Exception;
-use InvalidArgumentException as BaseInvalidArgumentException;
-
-class ParseErrorException extends BaseInvalidArgumentException implements InvalidArgumentException
-{
- /**
- * Constructor.
- *
- * @param string $expected
- * @param string $actual
- * @param int $code
- * @param Exception|null $previous
- */
- public function __construct($expected, $actual, $help = '', $code = 0, Exception $previous = null)
- {
- $actual = $actual === '' ? 'data is missing' : "get '$actual'";
-
- parent::__construct(trim("Format expected $expected but $actual\n$help"), $code, $previous);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/RuntimeException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/RuntimeException.php
deleted file mode 100644
index 24bf5a68..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Exceptions/RuntimeException.php
+++ /dev/null
@@ -1,16 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Exceptions;
-
-interface RuntimeException extends Exception
-{
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/UnitException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/UnitException.php
deleted file mode 100644
index 8bd8653e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Exceptions/UnitException.php
+++ /dev/null
@@ -1,30 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Exceptions;
-
-use Exception;
-use InvalidArgumentException as BaseInvalidArgumentException;
-
-class UnitException extends BaseInvalidArgumentException implements InvalidArgumentException
-{
- /**
- * Constructor.
- *
- * @param string $message
- * @param int $code
- * @param Exception|null $previous
- */
- public function __construct($message, $code = 0, Exception $previous = null)
- {
- parent::__construct($message, $code, $previous);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/UnitNotConfiguredException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/UnitNotConfiguredException.php
deleted file mode 100644
index 39ee12c5..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Exceptions/UnitNotConfiguredException.php
+++ /dev/null
@@ -1,29 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Exceptions;
-
-use Exception;
-
-class UnitNotConfiguredException extends UnitException
-{
- /**
- * Constructor.
- *
- * @param string $unit
- * @param int $code
- * @param Exception|null $previous
- */
- public function __construct($unit, $code = 0, Exception $previous = null)
- {
- parent::__construct("Unit $unit have no configuration to get total from other units.", $code, $previous);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownGetterException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownGetterException.php
deleted file mode 100644
index 6c8c01b6..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownGetterException.php
+++ /dev/null
@@ -1,30 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Exceptions;
-
-use Exception;
-use InvalidArgumentException as BaseInvalidArgumentException;
-
-class UnknownGetterException extends BaseInvalidArgumentException implements InvalidArgumentException
-{
- /**
- * Constructor.
- *
- * @param string $name getter name
- * @param int $code
- * @param Exception|null $previous
- */
- public function __construct($name, $code = 0, Exception $previous = null)
- {
- parent::__construct("Unknown getter '$name'", $code, $previous);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownMethodException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownMethodException.php
deleted file mode 100644
index 901db986..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownMethodException.php
+++ /dev/null
@@ -1,30 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Exceptions;
-
-use BadMethodCallException as BaseBadMethodCallException;
-use Exception;
-
-class UnknownMethodException extends BaseBadMethodCallException implements BadMethodCallException
-{
- /**
- * Constructor.
- *
- * @param string $method
- * @param int $code
- * @param Exception|null $previous
- */
- public function __construct($method, $code = 0, Exception $previous = null)
- {
- parent::__construct("Method $method does not exist.", $code, $previous);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownSetterException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownSetterException.php
deleted file mode 100644
index c9e9c9ff..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownSetterException.php
+++ /dev/null
@@ -1,30 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Exceptions;
-
-use Exception;
-use InvalidArgumentException as BaseInvalidArgumentException;
-
-class UnknownSetterException extends BaseInvalidArgumentException implements BadMethodCallException
-{
- /**
- * Constructor.
- *
- * @param string $name setter name
- * @param int $code
- * @param Exception|null $previous
- */
- public function __construct($name, $code = 0, Exception $previous = null)
- {
- parent::__construct("Unknown setter '$name'", $code, $previous);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownUnitException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownUnitException.php
deleted file mode 100644
index d965c82a..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownUnitException.php
+++ /dev/null
@@ -1,29 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Exceptions;
-
-use Exception;
-
-class UnknownUnitException extends UnitException
-{
- /**
- * Constructor.
- *
- * @param string $unit
- * @param int $code
- * @param Exception|null $previous
- */
- public function __construct($unit, $code = 0, Exception $previous = null)
- {
- parent::__construct("Unknown unit '$unit'.", $code, $previous);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/UnreachableException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/UnreachableException.php
deleted file mode 100644
index 6f8b39f5..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Exceptions/UnreachableException.php
+++ /dev/null
@@ -1,30 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Exceptions;
-
-use Exception;
-use RuntimeException as BaseRuntimeException;
-
-class UnreachableException extends BaseRuntimeException implements RuntimeException
-{
- /**
- * Constructor.
- *
- * @param string $message
- * @param int $code
- * @param Exception|null $previous
- */
- public function __construct($message, $code = 0, Exception $previous = null)
- {
- parent::__construct($message, $code, $previous);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Factory.php b/vendor/nesbot/carbon/src/Carbon/Factory.php
deleted file mode 100644
index 3b2a5170..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Factory.php
+++ /dev/null
@@ -1,312 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon;
-
-use Closure;
-use DateTimeInterface;
-use ReflectionMethod;
-
-/**
- * A factory to generate Carbon instances with common settings.
- *
- *
- *
- * @method bool canBeCreatedFromFormat($date, $format) Checks if the (date)time string is in a given format and valid to create a
- * new instance.
- * @method Carbon|false create($year = 0, $month = 1, $day = 1, $hour = 0, $minute = 0, $second = 0, $tz = null) Create a new Carbon instance from a specific date and time.
- * If any of $year, $month or $day are set to null their now() values will
- * be used.
- * If $hour is null it will be set to its now() value and the default
- * values for $minute and $second will be their now() values.
- * If $hour is not null then the default values for $minute and $second
- * will be 0.
- * @method Carbon createFromDate($year = null, $month = null, $day = null, $tz = null) Create a Carbon instance from just a date. The time portion is set to now.
- * @method Carbon|false createFromFormat($format, $time, $tz = null) Create a Carbon instance from a specific format.
- * @method Carbon|false createFromIsoFormat($format, $time, $tz = null, $locale = 'en', $translator = null) Create a Carbon instance from a specific ISO format (same replacements as ->isoFormat()).
- * @method Carbon|false createFromLocaleFormat($format, $locale, $time, $tz = null) Create a Carbon instance from a specific format and a string in a given language.
- * @method Carbon|false createFromLocaleIsoFormat($format, $locale, $time, $tz = null) Create a Carbon instance from a specific ISO format and a string in a given language.
- * @method Carbon createFromTime($hour = 0, $minute = 0, $second = 0, $tz = null) Create a Carbon instance from just a time. The date portion is set to today.
- * @method Carbon createFromTimeString($time, $tz = null) Create a Carbon instance from a time string. The date portion is set to today.
- * @method Carbon createFromTimestamp($timestamp, $tz = null) Create a Carbon instance from a timestamp and set the timezone (use default one if not specified).
- * Timestamp input can be given as int, float or a string containing one or more numbers.
- * @method Carbon createFromTimestampMs($timestamp, $tz = null) Create a Carbon instance from a timestamp in milliseconds.
- * Timestamp input can be given as int, float or a string containing one or more numbers.
- * @method Carbon createFromTimestampMsUTC($timestamp) Create a Carbon instance from a timestamp in milliseconds.
- * Timestamp input can be given as int, float or a string containing one or more numbers.
- * @method Carbon createFromTimestampUTC($timestamp) Create a Carbon instance from an timestamp keeping the timezone to UTC.
- * Timestamp input can be given as int, float or a string containing one or more numbers.
- * @method Carbon createMidnightDate($year = null, $month = null, $day = null, $tz = null) Create a Carbon instance from just a date. The time portion is set to midnight.
- * @method Carbon|false createSafe($year = null, $month = null, $day = null, $hour = null, $minute = null, $second = null, $tz = null) Create a new safe Carbon instance from a specific date and time.
- * If any of $year, $month or $day are set to null their now() values will
- * be used.
- * If $hour is null it will be set to its now() value and the default
- * values for $minute and $second will be their now() values.
- * If $hour is not null then the default values for $minute and $second
- * will be 0.
- * If one of the set values is not valid, an InvalidDateException
- * will be thrown.
- * @method CarbonInterface createStrict(?int $year = 0, ?int $month = 1, ?int $day = 1, ?int $hour = 0, ?int $minute = 0, ?int $second = 0, $tz = null) Create a new Carbon instance from a specific date and time using strict validation.
- * @method Carbon disableHumanDiffOption($humanDiffOption) @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * @method Carbon enableHumanDiffOption($humanDiffOption) @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * @method mixed executeWithLocale($locale, $func) Set the current locale to the given, execute the passed function, reset the locale to previous one,
- * then return the result of the closure (or null if the closure was void).
- * @method Carbon fromSerialized($value) Create an instance from a serialized string.
- * @method void genericMacro($macro, $priority = 0) Register a custom macro.
- * @method array getAvailableLocales() Returns the list of internally available locales and already loaded custom locales.
- * (It will ignore custom translator dynamic loading.)
- * @method Language[] getAvailableLocalesInfo() Returns list of Language object for each available locale. This object allow you to get the ISO name, native
- * name, region and variant of the locale.
- * @method array getDays() Get the days of the week
- * @method string|null getFallbackLocale() Get the fallback locale.
- * @method array getFormatsToIsoReplacements() List of replacements from date() format to isoFormat().
- * @method int getHumanDiffOptions() Return default humanDiff() options (merged flags as integer).
- * @method array getIsoUnits() Returns list of locale units for ISO formatting.
- * @method array getLastErrors() {@inheritdoc}
- * @method string getLocale() Get the current translator locale.
- * @method callable|null getMacro($name) Get the raw callable macro registered globally for a given name.
- * @method int getMidDayAt() get midday/noon hour
- * @method Closure|Carbon getTestNow() Get the Carbon instance (real or mock) to be returned when a "now"
- * instance is created.
- * @method string getTimeFormatByPrecision($unitPrecision) Return a format from H:i to H:i:s.u according to given unit precision.
- * @method string getTranslationMessageWith($translator, string $key, ?string $locale = null, ?string $default = null) Returns raw translation message for a given key.
- * @method \Symfony\Component\Translation\TranslatorInterface getTranslator() Get the default translator instance in use.
- * @method int getWeekEndsAt() Get the last day of week
- * @method int getWeekStartsAt() Get the first day of week
- * @method array getWeekendDays() Get weekend days
- * @method bool hasFormat($date, $format) Checks if the (date)time string is in a given format.
- * @method bool hasFormatWithModifiers($date, $format) Checks if the (date)time string is in a given format.
- * @method bool hasMacro($name) Checks if macro is registered globally.
- * @method bool hasRelativeKeywords($time) Determine if a time string will produce a relative date.
- * @method bool hasTestNow() Determine if there is a valid test instance set. A valid test instance
- * is anything that is not null.
- * @method Carbon instance($date) Create a Carbon instance from a DateTime one.
- * @method bool isImmutable() Returns true if the current class/instance is immutable.
- * @method bool isModifiableUnit($unit) Returns true if a property can be changed via setter.
- * @method bool isMutable() Returns true if the current class/instance is mutable.
- * @method bool isStrictModeEnabled() Returns true if the strict mode is globally in use, false else.
- * (It can be overridden in specific instances.)
- * @method bool localeHasDiffOneDayWords($locale) Returns true if the given locale is internally supported and has words for 1-day diff (just now, yesterday, tomorrow).
- * Support is considered enabled if the 3 words are translated in the given locale.
- * @method bool localeHasDiffSyntax($locale) Returns true if the given locale is internally supported and has diff syntax support (ago, from now, before, after).
- * Support is considered enabled if the 4 sentences are translated in the given locale.
- * @method bool localeHasDiffTwoDayWords($locale) Returns true if the given locale is internally supported and has words for 2-days diff (before yesterday, after tomorrow).
- * Support is considered enabled if the 2 words are translated in the given locale.
- * @method bool localeHasPeriodSyntax($locale) Returns true if the given locale is internally supported and has period syntax support (X times, every X, from X, to X).
- * Support is considered enabled if the 4 sentences are translated in the given locale.
- * @method bool localeHasShortUnits($locale) Returns true if the given locale is internally supported and has short-units support.
- * Support is considered enabled if either year, day or hour has a short variant translated.
- * @method void macro($name, $macro) Register a custom macro.
- * @method Carbon|null make($var) Make a Carbon instance from given variable if possible.
- * Always return a new instance. Parse only strings and only these likely to be dates (skip intervals
- * and recurrences). Throw an exception for invalid format, but otherwise return null.
- * @method Carbon maxValue() Create a Carbon instance for the greatest supported date.
- * @method Carbon minValue() Create a Carbon instance for the lowest supported date.
- * @method void mixin($mixin) Mix another object into the class.
- * @method Carbon now($tz = null) Get a Carbon instance for the current date and time.
- * @method Carbon parse($time = null, $tz = null) Create a carbon instance from a string.
- * This is an alias for the constructor that allows better fluent syntax
- * as it allows you to do Carbon::parse('Monday next week')->fn() rather
- * than (new Carbon('Monday next week'))->fn().
- * @method Carbon parseFromLocale($time, $locale = null, $tz = null) Create a carbon instance from a localized string (in French, Japanese, Arabic, etc.).
- * @method string pluralUnit(string $unit) Returns standardized plural of a given singular/plural unit name (in English).
- * @method Carbon|false rawCreateFromFormat($format, $time, $tz = null) Create a Carbon instance from a specific format.
- * @method Carbon rawParse($time = null, $tz = null) Create a carbon instance from a string.
- * This is an alias for the constructor that allows better fluent syntax
- * as it allows you to do Carbon::parse('Monday next week')->fn() rather
- * than (new Carbon('Monday next week'))->fn().
- * @method Carbon resetMacros() Remove all macros and generic macros.
- * @method void resetMonthsOverflow() @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants
- * are available for quarters, years, decade, centuries, millennia (singular and plural forms).
- * @method void resetToStringFormat() Reset the format used to the default when type juggling a Carbon instance to a string
- * @method void resetYearsOverflow() @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants
- * are available for quarters, years, decade, centuries, millennia (singular and plural forms).
- * @method void serializeUsing($callback) @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather transform Carbon object before the serialization.
- * JSON serialize all Carbon instances using the given callback.
- * @method Carbon setFallbackLocale($locale) Set the fallback locale.
- * @method Carbon setHumanDiffOptions($humanDiffOptions) @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * @method bool setLocale($locale) Set the current translator locale and indicate if the source locale file exists.
- * Pass 'auto' as locale to use closest language from the current LC_TIME locale.
- * @method void setMidDayAt($hour) @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather consider mid-day is always 12pm, then if you need to test if it's an other
- * hour, test it explicitly:
- * $date->format('G') == 13
- * or to set explicitly to a given hour:
- * $date->setTime(13, 0, 0, 0)
- * Set midday/noon hour
- * @method Carbon setTestNow($testNow = null) Set a Carbon instance (real or mock) to be returned when a "now"
- * instance is created. The provided instance will be returned
- * specifically under the following conditions:
- * - A call to the static now() method, ex. Carbon::now()
- * - When a null (or blank string) is passed to the constructor or parse(), ex. new Carbon(null)
- * - When the string "now" is passed to the constructor or parse(), ex. new Carbon('now')
- * - When a string containing the desired time is passed to Carbon::parse().
- * Note the timezone parameter was left out of the examples above and
- * has no affect as the mock value will be returned regardless of its value.
- * To clear the test instance call this method using the default
- * parameter of null.
- * /!\ Use this method for unit tests only.
- * @method void setToStringFormat($format) @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather let Carbon object being casted to string with DEFAULT_TO_STRING_FORMAT, and
- * use other method or custom format passed to format() method if you need to dump an other string
- * format.
- * Set the default format used when type juggling a Carbon instance to a string
- * @method void setTranslator(TranslatorInterface $translator) Set the default translator instance to use.
- * @method Carbon setUtf8($utf8) @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use UTF-8 language packages on every machine.
- * Set if UTF8 will be used for localized date/time.
- * @method void setWeekEndsAt($day) @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * Use $weekStartsAt optional parameter instead when using startOfWeek, floorWeek, ceilWeek
- * or roundWeek method. You can also use the 'first_day_of_week' locale setting to change the
- * start of week according to current locale selected and implicitly the end of week.
- * Set the last day of week
- * @method void setWeekStartsAt($day) @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * Use $weekEndsAt optional parameter instead when using endOfWeek method. You can also use the
- * 'first_day_of_week' locale setting to change the start of week according to current locale
- * selected and implicitly the end of week.
- * Set the first day of week
- * @method void setWeekendDays($days) @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather consider week-end is always saturday and sunday, and if you have some custom
- * week-end days to handle, give to those days an other name and create a macro for them:
- * ```
- * Carbon::macro('isDayOff', function ($date) {
- * return $date->isSunday() || $date->isMonday();
- * });
- * Carbon::macro('isNotDayOff', function ($date) {
- * return !$date->isDayOff();
- * });
- * if ($someDate->isDayOff()) ...
- * if ($someDate->isNotDayOff()) ...
- * // Add 5 not-off days
- * $count = 5;
- * while ($someDate->isDayOff() || ($count-- > 0)) {
- * $someDate->addDay();
- * }
- * ```
- * Set weekend days
- * @method bool shouldOverflowMonths() Get the month overflow global behavior (can be overridden in specific instances).
- * @method bool shouldOverflowYears() Get the month overflow global behavior (can be overridden in specific instances).
- * @method string singularUnit(string $unit) Returns standardized singular of a given singular/plural unit name (in English).
- * @method Carbon today($tz = null) Create a Carbon instance for today.
- * @method Carbon tomorrow($tz = null) Create a Carbon instance for tomorrow.
- * @method string translateTimeString($timeString, $from = null, $to = null, $mode = CarbonInterface::TRANSLATE_ALL) Translate a time string from a locale to an other.
- * @method string translateWith(TranslatorInterface $translator, string $key, array $parameters = [], $number = null) Translate using translation string or callback available.
- * @method void useMonthsOverflow($monthsOverflow = true) @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants
- * are available for quarters, years, decade, centuries, millennia (singular and plural forms).
- * @method Carbon useStrictMode($strictModeEnabled = true) @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * @method void useYearsOverflow($yearsOverflow = true) @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants
- * are available for quarters, years, decade, centuries, millennia (singular and plural forms).
- * @method mixed withTestNow($testNow = null, $callback = null) Temporarily sets a static date to be used within the callback.
- * Using setTestNow to set the date, executing the callback, then
- * clearing the test instance.
- * /!\ Use this method for unit tests only.
- * @method Carbon yesterday($tz = null) Create a Carbon instance for yesterday.
- *
- *
- */
-class Factory
-{
- protected $className = Carbon::class;
-
- protected $settings = [];
-
- public function __construct(array $settings = [], ?string $className = null)
- {
- if ($className) {
- $this->className = $className;
- }
-
- $this->settings = $settings;
- }
-
- public function getClassName()
- {
- return $this->className;
- }
-
- public function setClassName(string $className)
- {
- $this->className = $className;
-
- return $this;
- }
-
- public function className(string $className = null)
- {
- return $className === null ? $this->getClassName() : $this->setClassName($className);
- }
-
- public function getSettings()
- {
- return $this->settings;
- }
-
- public function setSettings(array $settings)
- {
- $this->settings = $settings;
-
- return $this;
- }
-
- public function settings(array $settings = null)
- {
- return $settings === null ? $this->getSettings() : $this->setSettings($settings);
- }
-
- public function mergeSettings(array $settings)
- {
- $this->settings = array_merge($this->settings, $settings);
-
- return $this;
- }
-
- public function __call($name, $arguments)
- {
- $method = new ReflectionMethod($this->className, $name);
- $settings = $this->settings;
-
- if ($settings && isset($settings['timezone'])) {
- $tzParameters = array_filter($method->getParameters(), function ($parameter) {
- return \in_array($parameter->getName(), ['tz', 'timezone'], true);
- });
-
- if (isset($arguments[0]) && \in_array($name, ['instance', 'make', 'create', 'parse'], true)) {
- if ($arguments[0] instanceof DateTimeInterface) {
- $settings['innerTimezone'] = $settings['timezone'];
- } elseif (\is_string($arguments[0]) && date_parse($arguments[0])['is_localtime']) {
- unset($settings['timezone'], $settings['innerTimezone']);
- }
- } elseif (\count($tzParameters)) {
- array_splice($arguments, key($tzParameters), 0, [$settings['timezone']]);
- unset($settings['timezone']);
- }
- }
-
- $result = $this->className::$name(...$arguments);
-
- return $result instanceof CarbonInterface && !empty($settings)
- ? $result->settings($settings)
- : $result;
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/FactoryImmutable.php b/vendor/nesbot/carbon/src/Carbon/FactoryImmutable.php
deleted file mode 100644
index d4ee0304..00000000
--- a/vendor/nesbot/carbon/src/Carbon/FactoryImmutable.php
+++ /dev/null
@@ -1,229 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon;
-
-use Closure;
-
-/**
- * A factory to generate CarbonImmutable instances with common settings.
- *
- *
- *
- * @method bool canBeCreatedFromFormat($date, $format) Checks if the (date)time string is in a given format and valid to create a
- * new instance.
- * @method CarbonImmutable|false create($year = 0, $month = 1, $day = 1, $hour = 0, $minute = 0, $second = 0, $tz = null) Create a new Carbon instance from a specific date and time.
- * If any of $year, $month or $day are set to null their now() values will
- * be used.
- * If $hour is null it will be set to its now() value and the default
- * values for $minute and $second will be their now() values.
- * If $hour is not null then the default values for $minute and $second
- * will be 0.
- * @method CarbonImmutable createFromDate($year = null, $month = null, $day = null, $tz = null) Create a Carbon instance from just a date. The time portion is set to now.
- * @method CarbonImmutable|false createFromFormat($format, $time, $tz = null) Create a Carbon instance from a specific format.
- * @method CarbonImmutable|false createFromIsoFormat($format, $time, $tz = null, $locale = 'en', $translator = null) Create a Carbon instance from a specific ISO format (same replacements as ->isoFormat()).
- * @method CarbonImmutable|false createFromLocaleFormat($format, $locale, $time, $tz = null) Create a Carbon instance from a specific format and a string in a given language.
- * @method CarbonImmutable|false createFromLocaleIsoFormat($format, $locale, $time, $tz = null) Create a Carbon instance from a specific ISO format and a string in a given language.
- * @method CarbonImmutable createFromTime($hour = 0, $minute = 0, $second = 0, $tz = null) Create a Carbon instance from just a time. The date portion is set to today.
- * @method CarbonImmutable createFromTimeString($time, $tz = null) Create a Carbon instance from a time string. The date portion is set to today.
- * @method CarbonImmutable createFromTimestamp($timestamp, $tz = null) Create a Carbon instance from a timestamp and set the timezone (use default one if not specified).
- * Timestamp input can be given as int, float or a string containing one or more numbers.
- * @method CarbonImmutable createFromTimestampMs($timestamp, $tz = null) Create a Carbon instance from a timestamp in milliseconds.
- * Timestamp input can be given as int, float or a string containing one or more numbers.
- * @method CarbonImmutable createFromTimestampMsUTC($timestamp) Create a Carbon instance from a timestamp in milliseconds.
- * Timestamp input can be given as int, float or a string containing one or more numbers.
- * @method CarbonImmutable createFromTimestampUTC($timestamp) Create a Carbon instance from an timestamp keeping the timezone to UTC.
- * Timestamp input can be given as int, float or a string containing one or more numbers.
- * @method CarbonImmutable createMidnightDate($year = null, $month = null, $day = null, $tz = null) Create a Carbon instance from just a date. The time portion is set to midnight.
- * @method CarbonImmutable|false createSafe($year = null, $month = null, $day = null, $hour = null, $minute = null, $second = null, $tz = null) Create a new safe Carbon instance from a specific date and time.
- * If any of $year, $month or $day are set to null their now() values will
- * be used.
- * If $hour is null it will be set to its now() value and the default
- * values for $minute and $second will be their now() values.
- * If $hour is not null then the default values for $minute and $second
- * will be 0.
- * If one of the set values is not valid, an InvalidDateException
- * will be thrown.
- * @method CarbonInterface createStrict(?int $year = 0, ?int $month = 1, ?int $day = 1, ?int $hour = 0, ?int $minute = 0, ?int $second = 0, $tz = null) Create a new Carbon instance from a specific date and time using strict validation.
- * @method CarbonImmutable disableHumanDiffOption($humanDiffOption) @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * @method CarbonImmutable enableHumanDiffOption($humanDiffOption) @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * @method mixed executeWithLocale($locale, $func) Set the current locale to the given, execute the passed function, reset the locale to previous one,
- * then return the result of the closure (or null if the closure was void).
- * @method CarbonImmutable fromSerialized($value) Create an instance from a serialized string.
- * @method void genericMacro($macro, $priority = 0) Register a custom macro.
- * @method array getAvailableLocales() Returns the list of internally available locales and already loaded custom locales.
- * (It will ignore custom translator dynamic loading.)
- * @method Language[] getAvailableLocalesInfo() Returns list of Language object for each available locale. This object allow you to get the ISO name, native
- * name, region and variant of the locale.
- * @method array getDays() Get the days of the week
- * @method string|null getFallbackLocale() Get the fallback locale.
- * @method array getFormatsToIsoReplacements() List of replacements from date() format to isoFormat().
- * @method int getHumanDiffOptions() Return default humanDiff() options (merged flags as integer).
- * @method array getIsoUnits() Returns list of locale units for ISO formatting.
- * @method array getLastErrors() {@inheritdoc}
- * @method string getLocale() Get the current translator locale.
- * @method callable|null getMacro($name) Get the raw callable macro registered globally for a given name.
- * @method int getMidDayAt() get midday/noon hour
- * @method Closure|CarbonImmutable getTestNow() Get the Carbon instance (real or mock) to be returned when a "now"
- * instance is created.
- * @method string getTimeFormatByPrecision($unitPrecision) Return a format from H:i to H:i:s.u according to given unit precision.
- * @method string getTranslationMessageWith($translator, string $key, ?string $locale = null, ?string $default = null) Returns raw translation message for a given key.
- * @method \Symfony\Component\Translation\TranslatorInterface getTranslator() Get the default translator instance in use.
- * @method int getWeekEndsAt() Get the last day of week
- * @method int getWeekStartsAt() Get the first day of week
- * @method array getWeekendDays() Get weekend days
- * @method bool hasFormat($date, $format) Checks if the (date)time string is in a given format.
- * @method bool hasFormatWithModifiers($date, $format) Checks if the (date)time string is in a given format.
- * @method bool hasMacro($name) Checks if macro is registered globally.
- * @method bool hasRelativeKeywords($time) Determine if a time string will produce a relative date.
- * @method bool hasTestNow() Determine if there is a valid test instance set. A valid test instance
- * is anything that is not null.
- * @method CarbonImmutable instance($date) Create a Carbon instance from a DateTime one.
- * @method bool isImmutable() Returns true if the current class/instance is immutable.
- * @method bool isModifiableUnit($unit) Returns true if a property can be changed via setter.
- * @method bool isMutable() Returns true if the current class/instance is mutable.
- * @method bool isStrictModeEnabled() Returns true if the strict mode is globally in use, false else.
- * (It can be overridden in specific instances.)
- * @method bool localeHasDiffOneDayWords($locale) Returns true if the given locale is internally supported and has words for 1-day diff (just now, yesterday, tomorrow).
- * Support is considered enabled if the 3 words are translated in the given locale.
- * @method bool localeHasDiffSyntax($locale) Returns true if the given locale is internally supported and has diff syntax support (ago, from now, before, after).
- * Support is considered enabled if the 4 sentences are translated in the given locale.
- * @method bool localeHasDiffTwoDayWords($locale) Returns true if the given locale is internally supported and has words for 2-days diff (before yesterday, after tomorrow).
- * Support is considered enabled if the 2 words are translated in the given locale.
- * @method bool localeHasPeriodSyntax($locale) Returns true if the given locale is internally supported and has period syntax support (X times, every X, from X, to X).
- * Support is considered enabled if the 4 sentences are translated in the given locale.
- * @method bool localeHasShortUnits($locale) Returns true if the given locale is internally supported and has short-units support.
- * Support is considered enabled if either year, day or hour has a short variant translated.
- * @method void macro($name, $macro) Register a custom macro.
- * @method CarbonImmutable|null make($var) Make a Carbon instance from given variable if possible.
- * Always return a new instance. Parse only strings and only these likely to be dates (skip intervals
- * and recurrences). Throw an exception for invalid format, but otherwise return null.
- * @method CarbonImmutable maxValue() Create a Carbon instance for the greatest supported date.
- * @method CarbonImmutable minValue() Create a Carbon instance for the lowest supported date.
- * @method void mixin($mixin) Mix another object into the class.
- * @method CarbonImmutable now($tz = null) Get a Carbon instance for the current date and time.
- * @method CarbonImmutable parse($time = null, $tz = null) Create a carbon instance from a string.
- * This is an alias for the constructor that allows better fluent syntax
- * as it allows you to do Carbon::parse('Monday next week')->fn() rather
- * than (new Carbon('Monday next week'))->fn().
- * @method CarbonImmutable parseFromLocale($time, $locale = null, $tz = null) Create a carbon instance from a localized string (in French, Japanese, Arabic, etc.).
- * @method string pluralUnit(string $unit) Returns standardized plural of a given singular/plural unit name (in English).
- * @method CarbonImmutable|false rawCreateFromFormat($format, $time, $tz = null) Create a Carbon instance from a specific format.
- * @method CarbonImmutable rawParse($time = null, $tz = null) Create a carbon instance from a string.
- * This is an alias for the constructor that allows better fluent syntax
- * as it allows you to do Carbon::parse('Monday next week')->fn() rather
- * than (new Carbon('Monday next week'))->fn().
- * @method CarbonImmutable resetMacros() Remove all macros and generic macros.
- * @method void resetMonthsOverflow() @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants
- * are available for quarters, years, decade, centuries, millennia (singular and plural forms).
- * @method void resetToStringFormat() Reset the format used to the default when type juggling a Carbon instance to a string
- * @method void resetYearsOverflow() @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants
- * are available for quarters, years, decade, centuries, millennia (singular and plural forms).
- * @method void serializeUsing($callback) @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather transform Carbon object before the serialization.
- * JSON serialize all Carbon instances using the given callback.
- * @method CarbonImmutable setFallbackLocale($locale) Set the fallback locale.
- * @method CarbonImmutable setHumanDiffOptions($humanDiffOptions) @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * @method bool setLocale($locale) Set the current translator locale and indicate if the source locale file exists.
- * Pass 'auto' as locale to use closest language from the current LC_TIME locale.
- * @method void setMidDayAt($hour) @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather consider mid-day is always 12pm, then if you need to test if it's an other
- * hour, test it explicitly:
- * $date->format('G') == 13
- * or to set explicitly to a given hour:
- * $date->setTime(13, 0, 0, 0)
- * Set midday/noon hour
- * @method CarbonImmutable setTestNow($testNow = null) Set a Carbon instance (real or mock) to be returned when a "now"
- * instance is created. The provided instance will be returned
- * specifically under the following conditions:
- * - A call to the static now() method, ex. Carbon::now()
- * - When a null (or blank string) is passed to the constructor or parse(), ex. new Carbon(null)
- * - When the string "now" is passed to the constructor or parse(), ex. new Carbon('now')
- * - When a string containing the desired time is passed to Carbon::parse().
- * Note the timezone parameter was left out of the examples above and
- * has no affect as the mock value will be returned regardless of its value.
- * To clear the test instance call this method using the default
- * parameter of null.
- * /!\ Use this method for unit tests only.
- * @method void setToStringFormat($format) @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather let Carbon object being casted to string with DEFAULT_TO_STRING_FORMAT, and
- * use other method or custom format passed to format() method if you need to dump an other string
- * format.
- * Set the default format used when type juggling a Carbon instance to a string
- * @method void setTranslator(TranslatorInterface $translator) Set the default translator instance to use.
- * @method CarbonImmutable setUtf8($utf8) @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use UTF-8 language packages on every machine.
- * Set if UTF8 will be used for localized date/time.
- * @method void setWeekEndsAt($day) @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * Use $weekStartsAt optional parameter instead when using startOfWeek, floorWeek, ceilWeek
- * or roundWeek method. You can also use the 'first_day_of_week' locale setting to change the
- * start of week according to current locale selected and implicitly the end of week.
- * Set the last day of week
- * @method void setWeekStartsAt($day) @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * Use $weekEndsAt optional parameter instead when using endOfWeek method. You can also use the
- * 'first_day_of_week' locale setting to change the start of week according to current locale
- * selected and implicitly the end of week.
- * Set the first day of week
- * @method void setWeekendDays($days) @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather consider week-end is always saturday and sunday, and if you have some custom
- * week-end days to handle, give to those days an other name and create a macro for them:
- * ```
- * Carbon::macro('isDayOff', function ($date) {
- * return $date->isSunday() || $date->isMonday();
- * });
- * Carbon::macro('isNotDayOff', function ($date) {
- * return !$date->isDayOff();
- * });
- * if ($someDate->isDayOff()) ...
- * if ($someDate->isNotDayOff()) ...
- * // Add 5 not-off days
- * $count = 5;
- * while ($someDate->isDayOff() || ($count-- > 0)) {
- * $someDate->addDay();
- * }
- * ```
- * Set weekend days
- * @method bool shouldOverflowMonths() Get the month overflow global behavior (can be overridden in specific instances).
- * @method bool shouldOverflowYears() Get the month overflow global behavior (can be overridden in specific instances).
- * @method string singularUnit(string $unit) Returns standardized singular of a given singular/plural unit name (in English).
- * @method CarbonImmutable today($tz = null) Create a Carbon instance for today.
- * @method CarbonImmutable tomorrow($tz = null) Create a Carbon instance for tomorrow.
- * @method string translateTimeString($timeString, $from = null, $to = null, $mode = CarbonInterface::TRANSLATE_ALL) Translate a time string from a locale to an other.
- * @method string translateWith(TranslatorInterface $translator, string $key, array $parameters = [], $number = null) Translate using translation string or callback available.
- * @method void useMonthsOverflow($monthsOverflow = true) @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants
- * are available for quarters, years, decade, centuries, millennia (singular and plural forms).
- * @method CarbonImmutable useStrictMode($strictModeEnabled = true) @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * @method void useYearsOverflow($yearsOverflow = true) @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants
- * are available for quarters, years, decade, centuries, millennia (singular and plural forms).
- * @method mixed withTestNow($testNow = null, $callback = null) Temporarily sets a static date to be used within the callback.
- * Using setTestNow to set the date, executing the callback, then
- * clearing the test instance.
- * /!\ Use this method for unit tests only.
- * @method CarbonImmutable yesterday($tz = null) Create a Carbon instance for yesterday.
- *
- *
- */
-class FactoryImmutable extends Factory
-{
- protected $className = CarbonImmutable::class;
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/aa.php b/vendor/nesbot/carbon/src/Carbon/Lang/aa.php
deleted file mode 100644
index f3431e4b..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/aa.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/aa_DJ.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/aa_DJ.php b/vendor/nesbot/carbon/src/Carbon/Lang/aa_DJ.php
deleted file mode 100644
index c6e23c0d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/aa_DJ.php
+++ /dev/null
@@ -1,44 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Ge'ez Frontier Foundation locales@geez.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD.MM.YYYY',
- ],
- 'months' => ['Qunxa Garablu', 'Kudo', 'Ciggilta Kudo', 'Agda Baxisso', 'Caxah Alsa', 'Qasa Dirri', 'Qado Dirri', 'Liiqen', 'Waysu', 'Diteli', 'Ximoli', 'Kaxxa Garablu'],
- 'months_short' => ['qun', 'nah', 'cig', 'agd', 'cax', 'qas', 'qad', 'leq', 'way', 'dit', 'xim', 'kax'],
- 'weekdays' => ['Acaada', 'Etleeni', 'Talaata', 'Arbaqa', 'Kamiisi', 'Gumqata', 'Sabti'],
- 'weekdays_short' => ['aca', 'etl', 'tal', 'arb', 'kam', 'gum', 'sab'],
- 'weekdays_min' => ['aca', 'etl', 'tal', 'arb', 'kam', 'gum', 'sab'],
- 'first_day_of_week' => 6,
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['saaku', 'carra'],
-
- 'year' => ':count gaqambo', // less reliable
- 'y' => ':count gaqambo', // less reliable
- 'a_year' => ':count gaqambo', // less reliable
-
- 'month' => ':count àlsa',
- 'm' => ':count àlsa',
- 'a_month' => ':count àlsa',
-
- 'day' => ':count saaku', // less reliable
- 'd' => ':count saaku', // less reliable
- 'a_day' => ':count saaku', // less reliable
-
- 'hour' => ':count ayti', // less reliable
- 'h' => ':count ayti', // less reliable
- 'a_hour' => ':count ayti', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/aa_ER.php b/vendor/nesbot/carbon/src/Carbon/Lang/aa_ER.php
deleted file mode 100644
index f8f395b7..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/aa_ER.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Ge'ez Frontier Foundation locales@geez.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['Qunxa Garablu', 'Naharsi Kudo', 'Ciggilta Kudo', 'Agda Baxisso', 'Caxah Alsa', 'Qasa Dirri', 'Qado Dirri', 'Leqeeni', 'Waysu', 'Diteli', 'Ximoli', 'Kaxxa Garablu'],
- 'months_short' => ['Qun', 'Nah', 'Cig', 'Agd', 'Cax', 'Qas', 'Qad', 'Leq', 'Way', 'Dit', 'Xim', 'Kax'],
- 'weekdays' => ['Acaada', 'Etleeni', 'Talaata', 'Arbaqa', 'Kamiisi', 'Gumqata', 'Sabti'],
- 'weekdays_short' => ['Aca', 'Etl', 'Tal', 'Arb', 'Kam', 'Gum', 'Sab'],
- 'weekdays_min' => ['Aca', 'Etl', 'Tal', 'Arb', 'Kam', 'Gum', 'Sab'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['saaku', 'carra'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/aa_ER@saaho.php b/vendor/nesbot/carbon/src/Carbon/Lang/aa_ER@saaho.php
deleted file mode 100644
index 64612253..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/aa_ER@saaho.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Ge'ez Frontier Foundation locales@geez.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['Qunxa Garablu', 'Naharsi Kudo', 'Ciggilta Kudo', 'Agda Baxisso', 'Caxah Alsa', 'Qasa Dirri', 'Qado Dirri', 'Leqeeni', 'Waysu', 'Diteli', 'Ximoli', 'Kaxxa Garablu'],
- 'months_short' => ['Qun', 'Nah', 'Cig', 'Agd', 'Cax', 'Qas', 'Qad', 'Leq', 'Way', 'Dit', 'Xim', 'Kax'],
- 'weekdays' => ['Naba Sambat', 'Sani', 'Salus', 'Rabuq', 'Camus', 'Jumqata', 'Qunxa Sambat'],
- 'weekdays_short' => ['Nab', 'San', 'Sal', 'Rab', 'Cam', 'Jum', 'Qun'],
- 'weekdays_min' => ['Nab', 'San', 'Sal', 'Rab', 'Cam', 'Jum', 'Qun'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['saaku', 'carra'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/aa_ET.php b/vendor/nesbot/carbon/src/Carbon/Lang/aa_ET.php
deleted file mode 100644
index e55e591b..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/aa_ET.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Ge'ez Frontier Foundation locales@geez.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['Qunxa Garablu', 'Kudo', 'Ciggilta Kudo', 'Agda Baxisso', 'Caxah Alsa', 'Qasa Dirri', 'Qado Dirri', 'Liiqen', 'Waysu', 'Diteli', 'Ximoli', 'Kaxxa Garablu'],
- 'months_short' => ['Qun', 'Kud', 'Cig', 'Agd', 'Cax', 'Qas', 'Qad', 'Leq', 'Way', 'Dit', 'Xim', 'Kax'],
- 'weekdays' => ['Acaada', 'Etleeni', 'Talaata', 'Arbaqa', 'Kamiisi', 'Gumqata', 'Sabti'],
- 'weekdays_short' => ['Aca', 'Etl', 'Tal', 'Arb', 'Kam', 'Gum', 'Sab'],
- 'weekdays_min' => ['Aca', 'Etl', 'Tal', 'Arb', 'Kam', 'Gum', 'Sab'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['saaku', 'carra'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/af.php b/vendor/nesbot/carbon/src/Carbon/Lang/af.php
deleted file mode 100644
index 27771d7a..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/af.php
+++ /dev/null
@@ -1,79 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - François B
- * - JD Isaacks
- * - Pierre du Plessis
- */
-return [
- 'year' => ':count jaar',
- 'a_year' => '\'n jaar|:count jaar',
- 'y' => ':count j.',
- 'month' => ':count maand|:count maande',
- 'a_month' => '\'n maand|:count maande',
- 'm' => ':count maa.',
- 'week' => ':count week|:count weke',
- 'a_week' => '\'n week|:count weke',
- 'w' => ':count w.',
- 'day' => ':count dag|:count dae',
- 'a_day' => '\'n dag|:count dae',
- 'd' => ':count d.',
- 'hour' => ':count uur',
- 'a_hour' => '\'n uur|:count uur',
- 'h' => ':count u.',
- 'minute' => ':count minuut|:count minute',
- 'a_minute' => '\'n minuut|:count minute',
- 'min' => ':count min.',
- 'second' => ':count sekond|:count sekondes',
- 'a_second' => '\'n paar sekondes|:count sekondes',
- 's' => ':count s.',
- 'ago' => ':time gelede',
- 'from_now' => 'oor :time',
- 'after' => ':time na',
- 'before' => ':time voor',
- 'diff_now' => 'Nou',
- 'diff_today' => 'Vandag',
- 'diff_today_regexp' => 'Vandag(?:\\s+om)?',
- 'diff_yesterday' => 'Gister',
- 'diff_yesterday_regexp' => 'Gister(?:\\s+om)?',
- 'diff_tomorrow' => 'Môre',
- 'diff_tomorrow_regexp' => 'Môre(?:\\s+om)?',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[Vandag om] LT',
- 'nextDay' => '[Môre om] LT',
- 'nextWeek' => 'dddd [om] LT',
- 'lastDay' => '[Gister om] LT',
- 'lastWeek' => '[Laas] dddd [om] LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => function ($number) {
- return $number.(($number === 1 || $number === 8 || $number >= 20) ? 'ste' : 'de');
- },
- 'meridiem' => ['VM', 'NM'],
- 'months' => ['Januarie', 'Februarie', 'Maart', 'April', 'Mei', 'Junie', 'Julie', 'Augustus', 'September', 'Oktober', 'November', 'Desember'],
- 'months_short' => ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'],
- 'weekdays' => ['Sondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrydag', 'Saterdag'],
- 'weekdays_short' => ['Son', 'Maa', 'Din', 'Woe', 'Don', 'Vry', 'Sat'],
- 'weekdays_min' => ['So', 'Ma', 'Di', 'Wo', 'Do', 'Vr', 'Sa'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' en '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/af_NA.php b/vendor/nesbot/carbon/src/Carbon/Lang/af_NA.php
deleted file mode 100644
index f2fcf053..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/af_NA.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/af.php', [
- 'meridiem' => ['v', 'n'],
- 'weekdays' => ['Sondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrydag', 'Saterdag'],
- 'weekdays_short' => ['So.', 'Ma.', 'Di.', 'Wo.', 'Do.', 'Vr.', 'Sa.'],
- 'weekdays_min' => ['So.', 'Ma.', 'Di.', 'Wo.', 'Do.', 'Vr.', 'Sa.'],
- 'months' => ['Januarie', 'Februarie', 'Maart', 'April', 'Mei', 'Junie', 'Julie', 'Augustus', 'September', 'Oktober', 'November', 'Desember'],
- 'months_short' => ['Jan.', 'Feb.', 'Mrt.', 'Apr.', 'Mei', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Okt.', 'Nov.', 'Des.'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'YYYY-MM-DD',
- 'LL' => 'DD MMM YYYY',
- 'LLL' => 'DD MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, DD MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/af_ZA.php b/vendor/nesbot/carbon/src/Carbon/Lang/af_ZA.php
deleted file mode 100644
index 27896bd0..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/af_ZA.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/af.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/agq.php b/vendor/nesbot/carbon/src/Carbon/Lang/agq.php
deleted file mode 100644
index 70114649..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/agq.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['a.g', 'a.k'],
- 'weekdays' => ['tsuʔntsɨ', 'tsuʔukpà', 'tsuʔughɔe', 'tsuʔutɔ̀mlò', 'tsuʔumè', 'tsuʔughɨ̂m', 'tsuʔndzɨkɔʔɔ'],
- 'weekdays_short' => ['nts', 'kpa', 'ghɔ', 'tɔm', 'ume', 'ghɨ', 'dzk'],
- 'weekdays_min' => ['nts', 'kpa', 'ghɔ', 'tɔm', 'ume', 'ghɨ', 'dzk'],
- 'months' => ['ndzɔ̀ŋɔ̀nùm', 'ndzɔ̀ŋɔ̀kƗ̀zùʔ', 'ndzɔ̀ŋɔ̀tƗ̀dʉ̀ghà', 'ndzɔ̀ŋɔ̀tǎafʉ̄ghā', 'ndzɔ̀ŋèsèe', 'ndzɔ̀ŋɔ̀nzùghò', 'ndzɔ̀ŋɔ̀dùmlo', 'ndzɔ̀ŋɔ̀kwîfɔ̀e', 'ndzɔ̀ŋɔ̀tƗ̀fʉ̀ghàdzughù', 'ndzɔ̀ŋɔ̀ghǔuwelɔ̀m', 'ndzɔ̀ŋɔ̀chwaʔàkaa wo', 'ndzɔ̀ŋèfwòo'],
- 'months_short' => ['nùm', 'kɨz', 'tɨd', 'taa', 'see', 'nzu', 'dum', 'fɔe', 'dzu', 'lɔm', 'kaa', 'fwo'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D/M/YYYY',
- 'LL' => 'D MMM, YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/agr.php b/vendor/nesbot/carbon/src/Carbon/Lang/agr.php
deleted file mode 100644
index 8f036ae8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/agr.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/agr_PE.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/agr_PE.php b/vendor/nesbot/carbon/src/Carbon/Lang/agr_PE.php
deleted file mode 100644
index 54a326af..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/agr_PE.php
+++ /dev/null
@@ -1,44 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - somosazucar.org libc-alpha@sourceware.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YY',
- ],
- 'months' => ['Petsatin', 'Kupitin', 'Uyaitin', 'Tayutin', 'Kegketin', 'Tegmatin', 'Kuntutin', 'Yagkujutin', 'Daiktatin', 'Ipamtatin', 'Shinutin', 'Sakamtin'],
- 'months_short' => ['Pet', 'Kup', 'Uya', 'Tay', 'Keg', 'Teg', 'Kun', 'Yag', 'Dait', 'Ipam', 'Shin', 'Sak'],
- 'weekdays' => ['Tuntuamtin', 'Achutin', 'Kugkuktin', 'Saketin', 'Shimpitin', 'Imaptin', 'Bataetin'],
- 'weekdays_short' => ['Tun', 'Ach', 'Kug', 'Sak', 'Shim', 'Im', 'Bat'],
- 'weekdays_min' => ['Tun', 'Ach', 'Kug', 'Sak', 'Shim', 'Im', 'Bat'],
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 7,
- 'meridiem' => ['VM', 'NM'],
-
- 'year' => ':count yaya', // less reliable
- 'y' => ':count yaya', // less reliable
- 'a_year' => ':count yaya', // less reliable
-
- 'month' => ':count nantu', // less reliable
- 'm' => ':count nantu', // less reliable
- 'a_month' => ':count nantu', // less reliable
-
- 'day' => ':count nayaim', // less reliable
- 'd' => ':count nayaim', // less reliable
- 'a_day' => ':count nayaim', // less reliable
-
- 'hour' => ':count kuwiš', // less reliable
- 'h' => ':count kuwiš', // less reliable
- 'a_hour' => ':count kuwiš', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ak.php b/vendor/nesbot/carbon/src/Carbon/Lang/ak.php
deleted file mode 100644
index 5a64be37..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ak.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/ak_GH.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ak_GH.php b/vendor/nesbot/carbon/src/Carbon/Lang/ak_GH.php
deleted file mode 100644
index 13819467..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ak_GH.php
+++ /dev/null
@@ -1,40 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Sugar Labs // OLPC sugarlabs.org libc-alpha@sourceware.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'YYYY/MM/DD',
- ],
- 'months' => ['Sanda-Ɔpɛpɔn', 'Kwakwar-Ɔgyefuo', 'Ebɔw-Ɔbenem', 'Ebɔbira-Oforisuo', 'Esusow Aketseaba-Kɔtɔnimba', 'Obirade-Ayɛwohomumu', 'Ayɛwoho-Kitawonsa', 'Difuu-Ɔsandaa', 'Fankwa-Ɛbɔ', 'Ɔbɛsɛ-Ahinime', 'Ɔberɛfɛw-Obubuo', 'Mumu-Ɔpɛnimba'],
- 'months_short' => ['S-Ɔ', 'K-Ɔ', 'E-Ɔ', 'E-O', 'E-K', 'O-A', 'A-K', 'D-Ɔ', 'F-Ɛ', 'Ɔ-A', 'Ɔ-O', 'M-Ɔ'],
- 'weekdays' => ['Kwesida', 'Dwowda', 'Benada', 'Wukuda', 'Yawda', 'Fida', 'Memeneda'],
- 'weekdays_short' => ['Kwe', 'Dwo', 'Ben', 'Wuk', 'Yaw', 'Fia', 'Mem'],
- 'weekdays_min' => ['Kwe', 'Dwo', 'Ben', 'Wuk', 'Yaw', 'Fia', 'Mem'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['AN', 'EW'],
-
- 'year' => ':count afe',
- 'y' => ':count afe',
- 'a_year' => ':count afe',
-
- 'month' => ':count bosume',
- 'm' => ':count bosume',
- 'a_month' => ':count bosume',
-
- 'day' => ':count ɛda',
- 'd' => ':count ɛda',
- 'a_day' => ':count ɛda',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/am.php b/vendor/nesbot/carbon/src/Carbon/Lang/am.php
deleted file mode 100644
index 63bf72d2..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/am.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/am_ET.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/am_ET.php b/vendor/nesbot/carbon/src/Carbon/Lang/am_ET.php
deleted file mode 100644
index ece80621..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/am_ET.php
+++ /dev/null
@@ -1,58 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Ge'ez Frontier Foundation locales@geez.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['ጃንዩወሪ', 'ፌብሩወሪ', 'ማርች', 'ኤፕሪል', 'ሜይ', 'ጁን', 'ጁላይ', 'ኦገስት', 'ሴፕቴምበር', 'ኦክቶበር', 'ኖቬምበር', 'ዲሴምበር'],
- 'months_short' => ['ጃንዩ', 'ፌብሩ', 'ማርች', 'ኤፕረ', 'ሜይ ', 'ጁን ', 'ጁላይ', 'ኦገስ', 'ሴፕቴ', 'ኦክተ', 'ኖቬም', 'ዲሴም'],
- 'weekdays' => ['እሑድ', 'ሰኞ', 'ማክሰኞ', 'ረቡዕ', 'ሐሙስ', 'ዓርብ', 'ቅዳሜ'],
- 'weekdays_short' => ['እሑድ', 'ሰኞ ', 'ማክሰ', 'ረቡዕ', 'ሐሙስ', 'ዓርብ', 'ቅዳሜ'],
- 'weekdays_min' => ['እሑድ', 'ሰኞ ', 'ማክሰ', 'ረቡዕ', 'ሐሙስ', 'ዓርብ', 'ቅዳሜ'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['ጡዋት', 'ከሰዓት'],
-
- 'year' => ':count አመት',
- 'y' => ':count አመት',
- 'a_year' => ':count አመት',
-
- 'month' => ':count ወር',
- 'm' => ':count ወር',
- 'a_month' => ':count ወር',
-
- 'week' => ':count ሳምንት',
- 'w' => ':count ሳምንት',
- 'a_week' => ':count ሳምንት',
-
- 'day' => ':count ቀን',
- 'd' => ':count ቀን',
- 'a_day' => ':count ቀን',
-
- 'hour' => ':count ሰዓት',
- 'h' => ':count ሰዓት',
- 'a_hour' => ':count ሰዓት',
-
- 'minute' => ':count ደቂቃ',
- 'min' => ':count ደቂቃ',
- 'a_minute' => ':count ደቂቃ',
-
- 'second' => ':count ሴኮንድ',
- 's' => ':count ሴኮንድ',
- 'a_second' => ':count ሴኮንድ',
-
- 'ago' => 'ከ:time በፊት',
- 'from_now' => 'በ:time ውስጥ',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/an.php b/vendor/nesbot/carbon/src/Carbon/Lang/an.php
deleted file mode 100644
index 565abf26..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/an.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/an_ES.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/an_ES.php b/vendor/nesbot/carbon/src/Carbon/Lang/an_ES.php
deleted file mode 100644
index faf8ae07..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/an_ES.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Softaragones Jordi Mallach Pérez, Juan Pablo Martínez bug-glibc-locales@gnu.org, softaragones@softaragones.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['chinero', 'febrero', 'marzo', 'abril', 'mayo', 'chunyo', 'chuliol', 'agosto', 'setiembre', 'octubre', 'noviembre', 'aviento'],
- 'months_short' => ['chi', 'feb', 'mar', 'abr', 'may', 'chn', 'chl', 'ago', 'set', 'oct', 'nov', 'avi'],
- 'weekdays' => ['domingo', 'luns', 'martes', 'mierques', 'chueves', 'viernes', 'sabado'],
- 'weekdays_short' => ['dom', 'lun', 'mar', 'mie', 'chu', 'vie', 'sab'],
- 'weekdays_min' => ['dom', 'lun', 'mar', 'mie', 'chu', 'vie', 'sab'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-
- 'year' => ':count año',
- 'y' => ':count año',
- 'a_year' => ':count año',
-
- 'month' => ':count mes',
- 'm' => ':count mes',
- 'a_month' => ':count mes',
-
- 'week' => ':count semana',
- 'w' => ':count semana',
- 'a_week' => ':count semana',
-
- 'day' => ':count día',
- 'd' => ':count día',
- 'a_day' => ':count día',
-
- 'hour' => ':count reloch', // less reliable
- 'h' => ':count reloch', // less reliable
- 'a_hour' => ':count reloch', // less reliable
-
- 'minute' => ':count minuto',
- 'min' => ':count minuto',
- 'a_minute' => ':count minuto',
-
- 'second' => ':count segundo',
- 's' => ':count segundo',
- 'a_second' => ':count segundo',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/anp.php b/vendor/nesbot/carbon/src/Carbon/Lang/anp.php
deleted file mode 100644
index b56c67bb..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/anp.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/anp_IN.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/anp_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/anp_IN.php
deleted file mode 100644
index 11069be3..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/anp_IN.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - bhashaghar@googlegroups.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'D/M/YY',
- ],
- 'months' => ['जनवरी', 'फरवरी', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितंबर', 'अक्टूबर', 'नवंबर', 'दिसंबर"'],
- 'months_short' => ['जनवरी', 'फरवरी', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितंबर', 'अक्टूबर', 'नवंबर', 'दिसंबर'],
- 'weekdays' => ['रविवार', 'सोमवार', 'मंगलवार', 'बुधवार', 'बृहस्पतिवार', 'शुक्रवार', 'शनिवार'],
- 'weekdays_short' => ['रवि', 'सोम', 'मंगल', 'बुध', 'बृहस्पति', 'शुक्र', 'शनि'],
- 'weekdays_min' => ['रवि', 'सोम', 'मंगल', 'बुध', 'बृहस्पति', 'शुक्र', 'शनि'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['पूर्वाह्न', 'अपराह्न'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar.php
deleted file mode 100644
index 5f73f639..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ar.php
+++ /dev/null
@@ -1,93 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Atef Ben Ali (atefBB)
- * - Ibrahim AshShohail
- * - MLTDev
- * - Mohamed Sabil (mohamedsabil83)
- * - Yazan Alnugnugh (yazan-alnugnugh)
- */
-$months = [
- 'يناير',
- 'فبراير',
- 'مارس',
- 'أبريل',
- 'مايو',
- 'يونيو',
- 'يوليو',
- 'أغسطس',
- 'سبتمبر',
- 'أكتوبر',
- 'نوفمبر',
- 'ديسمبر',
-];
-
-return [
- 'year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']),
- 'a_year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']),
- 'month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']),
- 'a_month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']),
- 'week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']),
- 'a_week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']),
- 'day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']),
- 'a_day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']),
- 'hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']),
- 'a_hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']),
- 'minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']),
- 'a_minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']),
- 'second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']),
- 'a_second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']),
- 'ago' => 'منذ :time',
- 'from_now' => ':time من الآن',
- 'after' => 'بعد :time',
- 'before' => 'قبل :time',
- 'diff_now' => 'الآن',
- 'diff_today' => 'اليوم',
- 'diff_today_regexp' => 'اليوم(?:\\s+عند)?(?:\\s+الساعة)?',
- 'diff_yesterday' => 'أمس',
- 'diff_yesterday_regexp' => 'أمس(?:\\s+عند)?(?:\\s+الساعة)?',
- 'diff_tomorrow' => 'غداً',
- 'diff_tomorrow_regexp' => 'غدًا(?:\\s+عند)?(?:\\s+الساعة)?',
- 'diff_before_yesterday' => 'قبل الأمس',
- 'diff_after_tomorrow' => 'بعد غد',
- 'period_recurrences' => implode('|', ['{0}مرة', '{1}مرة', '{2}:count مرتين', ']2,11[:count مرات', ']10,Inf[:count مرة']),
- 'period_interval' => 'كل :interval',
- 'period_start_date' => 'من :date',
- 'period_end_date' => 'إلى :date',
- 'months' => $months,
- 'months_short' => $months,
- 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
- 'weekdays_short' => ['أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'],
- 'weekdays_min' => ['ح', 'اث', 'ثل', 'أر', 'خم', 'ج', 'س'],
- 'list' => ['، ', ' و '],
- 'first_day_of_week' => 6,
- 'day_of_first_week_of_year' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D/M/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[اليوم عند الساعة] LT',
- 'nextDay' => '[غدًا عند الساعة] LT',
- 'nextWeek' => 'dddd [عند الساعة] LT',
- 'lastDay' => '[أمس عند الساعة] LT',
- 'lastWeek' => 'dddd [عند الساعة] LT',
- 'sameElse' => 'L',
- ],
- 'meridiem' => ['ص', 'م'],
- 'weekend' => [5, 6],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_AE.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_AE.php
deleted file mode 100644
index 75fe47f6..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_AE.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/ar.php', [
- 'formats' => [
- 'L' => 'DD MMM, YYYY',
- ],
- 'months' => ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'],
- 'months_short' => ['ينا', 'فبر', 'مار', 'أبر', 'ماي', 'يون', 'يول', 'أغس', 'سبت', 'أكت', 'نوف', 'ديس'],
- 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت '],
- 'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
- 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
- 'first_day_of_week' => 6,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_BH.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_BH.php
deleted file mode 100644
index 362009e2..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_BH.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/ar.php', [
- 'formats' => [
- 'L' => 'DD MMM, YYYY',
- ],
- 'months' => ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'],
- 'months_short' => ['ينا', 'فبر', 'مار', 'أبر', 'ماي', 'يون', 'يول', 'أغس', 'سبت', 'أكت', 'نوف', 'ديس'],
- 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
- 'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
- 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
- 'first_day_of_week' => 6,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_DJ.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_DJ.php
deleted file mode 100644
index e790b99e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_DJ.php
+++ /dev/null
@@ -1,13 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/ar.php', [
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_DZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_DZ.php
deleted file mode 100644
index aea4eeec..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_DZ.php
+++ /dev/null
@@ -1,92 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Authors:
- * - Josh Soref
- * - Noureddine LOUAHEDJ
- * - JD Isaacks
- * - Atef Ben Ali (atefBB)
- * - Mohamed Sabil (mohamedsabil83)
- */
-$months = [
- 'جانفي',
- 'فيفري',
- 'مارس',
- 'أفريل',
- 'ماي',
- 'جوان',
- 'جويلية',
- 'أوت',
- 'سبتمبر',
- 'أكتوبر',
- 'نوفمبر',
- 'ديسمبر',
-];
-
-return [
- 'year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']),
- 'a_year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']),
- 'month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']),
- 'a_month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']),
- 'week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']),
- 'a_week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']),
- 'day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']),
- 'a_day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']),
- 'hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']),
- 'a_hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']),
- 'minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']),
- 'a_minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']),
- 'second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']),
- 'a_second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']),
- 'ago' => 'منذ :time',
- 'from_now' => 'في :time',
- 'after' => 'بعد :time',
- 'before' => 'قبل :time',
- 'diff_now' => 'الآن',
- 'diff_today' => 'اليوم',
- 'diff_today_regexp' => 'اليوم(?:\\s+على)?(?:\\s+الساعة)?',
- 'diff_yesterday' => 'أمس',
- 'diff_yesterday_regexp' => 'أمس(?:\\s+على)?(?:\\s+الساعة)?',
- 'diff_tomorrow' => 'غداً',
- 'diff_tomorrow_regexp' => 'غدا(?:\\s+على)?(?:\\s+الساعة)?',
- 'diff_before_yesterday' => 'قبل الأمس',
- 'diff_after_tomorrow' => 'بعد غد',
- 'period_recurrences' => implode('|', ['{0}مرة', '{1}مرة', '{2}:count مرتين', ']2,11[:count مرات', ']10,Inf[:count مرة']),
- 'period_interval' => 'كل :interval',
- 'period_start_date' => 'من :date',
- 'period_end_date' => 'إلى :date',
- 'months' => $months,
- 'months_short' => $months,
- 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
- 'weekdays_short' => ['أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'],
- 'weekdays_min' => ['أح', 'إث', 'ثلا', 'أر', 'خم', 'جم', 'سب'],
- 'list' => ['، ', ' و '],
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 4,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[اليوم على الساعة] LT',
- 'nextDay' => '[غدا على الساعة] LT',
- 'nextWeek' => 'dddd [على الساعة] LT',
- 'lastDay' => '[أمس على الساعة] LT',
- 'lastWeek' => 'dddd [على الساعة] LT',
- 'sameElse' => 'L',
- ],
- 'meridiem' => ['ص', 'م'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_EG.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_EG.php
deleted file mode 100644
index 362009e2..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_EG.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/ar.php', [
- 'formats' => [
- 'L' => 'DD MMM, YYYY',
- ],
- 'months' => ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'],
- 'months_short' => ['ينا', 'فبر', 'مار', 'أبر', 'ماي', 'يون', 'يول', 'أغس', 'سبت', 'أكت', 'نوف', 'ديس'],
- 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
- 'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
- 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
- 'first_day_of_week' => 6,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_EH.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_EH.php
deleted file mode 100644
index e790b99e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_EH.php
+++ /dev/null
@@ -1,13 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/ar.php', [
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_ER.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_ER.php
deleted file mode 100644
index e790b99e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_ER.php
+++ /dev/null
@@ -1,13 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/ar.php', [
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_IL.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_IL.php
deleted file mode 100644
index e790b99e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_IL.php
+++ /dev/null
@@ -1,13 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/ar.php', [
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_IN.php
deleted file mode 100644
index 5fecf70f..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_IN.php
+++ /dev/null
@@ -1,26 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/ar.php', [
- 'formats' => [
- 'L' => 'D/M/YY',
- ],
- 'months' => ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'],
- 'months_short' => ['ينا', 'فبر', 'مار', 'أبر', 'ماي', 'يون', 'يول', 'أغس', 'سبت', 'أكت', 'نوف', 'ديس'],
- 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
- 'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
- 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_IQ.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_IQ.php
deleted file mode 100644
index 0ac09958..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_IQ.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/ar.php', [
- 'formats' => [
- 'L' => 'DD MMM, YYYY',
- ],
- 'months' => ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'],
- 'months_short' => ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'],
- 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
- 'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
- 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
- 'first_day_of_week' => 6,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_JO.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_JO.php
deleted file mode 100644
index 0ac09958..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_JO.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/ar.php', [
- 'formats' => [
- 'L' => 'DD MMM, YYYY',
- ],
- 'months' => ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'],
- 'months_short' => ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'],
- 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
- 'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
- 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
- 'first_day_of_week' => 6,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_KM.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_KM.php
deleted file mode 100644
index e790b99e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_KM.php
+++ /dev/null
@@ -1,13 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/ar.php', [
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_KW.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_KW.php
deleted file mode 100644
index e6f0531d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_KW.php
+++ /dev/null
@@ -1,93 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Authors:
- * - Josh Soref
- * - Nusret Parlak
- * - JD Isaacks
- * - Atef Ben Ali (atefBB)
- * - Mohamed Sabil (mohamedsabil83)
- */
-$months = [
- 'يناير',
- 'فبراير',
- 'مارس',
- 'أبريل',
- 'ماي',
- 'يونيو',
- 'يوليوز',
- 'غشت',
- 'شتنبر',
- 'أكتوبر',
- 'نونبر',
- 'دجنبر',
-];
-
-return [
- 'year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']),
- 'a_year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']),
- 'month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']),
- 'a_month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']),
- 'week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']),
- 'a_week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']),
- 'day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']),
- 'a_day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']),
- 'hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']),
- 'a_hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']),
- 'minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']),
- 'a_minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']),
- 'second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']),
- 'a_second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']),
- 'ago' => 'منذ :time',
- 'from_now' => 'في :time',
- 'after' => 'بعد :time',
- 'before' => 'قبل :time',
- 'diff_now' => 'الآن',
- 'diff_today' => 'اليوم',
- 'diff_today_regexp' => 'اليوم(?:\\s+على)?(?:\\s+الساعة)?',
- 'diff_yesterday' => 'أمس',
- 'diff_yesterday_regexp' => 'أمس(?:\\s+على)?(?:\\s+الساعة)?',
- 'diff_tomorrow' => 'غداً',
- 'diff_tomorrow_regexp' => 'غدا(?:\\s+على)?(?:\\s+الساعة)?',
- 'diff_before_yesterday' => 'قبل الأمس',
- 'diff_after_tomorrow' => 'بعد غد',
- 'period_recurrences' => implode('|', ['{0}مرة', '{1}مرة', '{2}:count مرتين', ']2,11[:count مرات', ']10,Inf[:count مرة']),
- 'period_interval' => 'كل :interval',
- 'period_start_date' => 'من :date',
- 'period_end_date' => 'إلى :date',
- 'months' => $months,
- 'months_short' => $months,
- 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
- 'weekdays_short' => ['أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'],
- 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
- 'list' => ['، ', ' و '],
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[اليوم على الساعة] LT',
- 'nextDay' => '[غدا على الساعة] LT',
- 'nextWeek' => 'dddd [على الساعة] LT',
- 'lastDay' => '[أمس على الساعة] LT',
- 'lastWeek' => 'dddd [على الساعة] LT',
- 'sameElse' => 'L',
- ],
- 'meridiem' => ['ص', 'م'],
- 'weekend' => [5, 6],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_LB.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_LB.php
deleted file mode 100644
index 55bb10c3..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_LB.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/ar.php', [
- 'formats' => [
- 'L' => 'DD MMM, YYYY',
- ],
- 'months' => ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'],
- 'months_short' => ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'],
- 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
- 'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
- 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_LY.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_LY.php
deleted file mode 100644
index 1f0af49d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_LY.php
+++ /dev/null
@@ -1,92 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Atef Ben Ali (atefBB)
- * - Ibrahim AshShohail
- * - MLTDev
- */
-
-$months = [
- 'يناير',
- 'فبراير',
- 'مارس',
- 'أبريل',
- 'مايو',
- 'يونيو',
- 'يوليو',
- 'أغسطس',
- 'سبتمبر',
- 'أكتوبر',
- 'نوفمبر',
- 'ديسمبر',
-];
-
-return [
- 'year' => implode('|', [':count سنة', 'سنة', 'سنتين', ':count سنوات', ':count سنة']),
- 'a_year' => implode('|', [':count سنة', 'سنة', 'سنتين', ':count سنوات', ':count سنة']),
- 'month' => implode('|', [':count شهر', 'شهر', 'شهرين', ':count أشهر', ':count شهر']),
- 'a_month' => implode('|', [':count شهر', 'شهر', 'شهرين', ':count أشهر', ':count شهر']),
- 'week' => implode('|', [':count أسبوع', 'أسبوع', 'أسبوعين', ':count أسابيع', ':count أسبوع']),
- 'a_week' => implode('|', [':count أسبوع', 'أسبوع', 'أسبوعين', ':count أسابيع', ':count أسبوع']),
- 'day' => implode('|', [':count يوم', 'يوم', 'يومين', ':count أيام', ':count يوم']),
- 'a_day' => implode('|', [':count يوم', 'يوم', 'يومين', ':count أيام', ':count يوم']),
- 'hour' => implode('|', [':count ساعة', 'ساعة', 'ساعتين', ':count ساعات', ':count ساعة']),
- 'a_hour' => implode('|', [':count ساعة', 'ساعة', 'ساعتين', ':count ساعات', ':count ساعة']),
- 'minute' => implode('|', [':count دقيقة', 'دقيقة', 'دقيقتين', ':count دقائق', ':count دقيقة']),
- 'a_minute' => implode('|', [':count دقيقة', 'دقيقة', 'دقيقتين', ':count دقائق', ':count دقيقة']),
- 'second' => implode('|', [':count ثانية', 'ثانية', 'ثانيتين', ':count ثواني', ':count ثانية']),
- 'a_second' => implode('|', [':count ثانية', 'ثانية', 'ثانيتين', ':count ثواني', ':count ثانية']),
- 'ago' => 'منذ :time',
- 'from_now' => ':time من الآن',
- 'after' => 'بعد :time',
- 'before' => 'قبل :time',
- 'diff_now' => 'الآن',
- 'diff_today' => 'اليوم',
- 'diff_today_regexp' => 'اليوم(?:\\s+عند)?(?:\\s+الساعة)?',
- 'diff_yesterday' => 'أمس',
- 'diff_yesterday_regexp' => 'أمس(?:\\s+عند)?(?:\\s+الساعة)?',
- 'diff_tomorrow' => 'غداً',
- 'diff_tomorrow_regexp' => 'غدًا(?:\\s+عند)?(?:\\s+الساعة)?',
- 'diff_before_yesterday' => 'قبل الأمس',
- 'diff_after_tomorrow' => 'بعد غد',
- 'period_recurrences' => implode('|', ['مرة', 'مرة', ':count مرتين', ':count مرات', ':count مرة']),
- 'period_interval' => 'كل :interval',
- 'period_start_date' => 'من :date',
- 'period_end_date' => 'إلى :date',
- 'months' => $months,
- 'months_short' => $months,
- 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
- 'weekdays_short' => ['أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'],
- 'weekdays_min' => ['ح', 'اث', 'ثل', 'أر', 'خم', 'ج', 'س'],
- 'list' => ['، ', ' و '],
- 'first_day_of_week' => 6,
- 'day_of_first_week_of_year' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D/M/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[اليوم عند الساعة] LT',
- 'nextDay' => '[غدًا عند الساعة] LT',
- 'nextWeek' => 'dddd [عند الساعة] LT',
- 'lastDay' => '[أمس عند الساعة] LT',
- 'lastWeek' => 'dddd [عند الساعة] LT',
- 'sameElse' => 'L',
- ],
- 'meridiem' => ['ص', 'م'],
- 'weekend' => [5, 6],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_MA.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_MA.php
deleted file mode 100644
index 047ae05a..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_MA.php
+++ /dev/null
@@ -1,92 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Authors:
- * - Josh Soref
- * - JD Isaacks
- * - Atef Ben Ali (atefBB)
- * - Mohamed Sabil (mohamedsabil83)
- */
-$months = [
- 'يناير',
- 'فبراير',
- 'مارس',
- 'أبريل',
- 'ماي',
- 'يونيو',
- 'يوليوز',
- 'غشت',
- 'شتنبر',
- 'أكتوبر',
- 'نونبر',
- 'دجنبر',
-];
-
-return [
- 'year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']),
- 'a_year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']),
- 'month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']),
- 'a_month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']),
- 'week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']),
- 'a_week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']),
- 'day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']),
- 'a_day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']),
- 'hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']),
- 'a_hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']),
- 'minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']),
- 'a_minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']),
- 'second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']),
- 'a_second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']),
- 'ago' => 'منذ :time',
- 'from_now' => 'في :time',
- 'after' => 'بعد :time',
- 'before' => 'قبل :time',
- 'diff_now' => 'الآن',
- 'diff_today' => 'اليوم',
- 'diff_today_regexp' => 'اليوم(?:\\s+على)?(?:\\s+الساعة)?',
- 'diff_yesterday' => 'أمس',
- 'diff_yesterday_regexp' => 'أمس(?:\\s+على)?(?:\\s+الساعة)?',
- 'diff_tomorrow' => 'غداً',
- 'diff_tomorrow_regexp' => 'غدا(?:\\s+على)?(?:\\s+الساعة)?',
- 'diff_before_yesterday' => 'قبل الأمس',
- 'diff_after_tomorrow' => 'بعد غد',
- 'period_recurrences' => implode('|', ['{0}مرة', '{1}مرة', '{2}:count مرتين', ']2,11[:count مرات', ']10,Inf[:count مرة']),
- 'period_interval' => 'كل :interval',
- 'period_start_date' => 'من :date',
- 'period_end_date' => 'إلى :date',
- 'months' => $months,
- 'months_short' => $months,
- 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
- 'weekdays_short' => ['أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'],
- 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
- 'list' => ['، ', ' و '],
- 'first_day_of_week' => 6,
- 'day_of_first_week_of_year' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[اليوم على الساعة] LT',
- 'nextDay' => '[غدا على الساعة] LT',
- 'nextWeek' => 'dddd [على الساعة] LT',
- 'lastDay' => '[أمس على الساعة] LT',
- 'lastWeek' => 'dddd [على الساعة] LT',
- 'sameElse' => 'L',
- ],
- 'meridiem' => ['ص', 'م'],
- 'weekend' => [5, 6],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_MR.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_MR.php
deleted file mode 100644
index e790b99e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_MR.php
+++ /dev/null
@@ -1,13 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/ar.php', [
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_OM.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_OM.php
deleted file mode 100644
index 362009e2..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_OM.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/ar.php', [
- 'formats' => [
- 'L' => 'DD MMM, YYYY',
- ],
- 'months' => ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'],
- 'months_short' => ['ينا', 'فبر', 'مار', 'أبر', 'ماي', 'يون', 'يول', 'أغس', 'سبت', 'أكت', 'نوف', 'ديس'],
- 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
- 'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
- 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
- 'first_day_of_week' => 6,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_PS.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_PS.php
deleted file mode 100644
index e790b99e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_PS.php
+++ /dev/null
@@ -1,13 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/ar.php', [
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_QA.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_QA.php
deleted file mode 100644
index 362009e2..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_QA.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/ar.php', [
- 'formats' => [
- 'L' => 'DD MMM, YYYY',
- ],
- 'months' => ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'],
- 'months_short' => ['ينا', 'فبر', 'مار', 'أبر', 'ماي', 'يون', 'يول', 'أغس', 'سبت', 'أكت', 'نوف', 'ديس'],
- 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
- 'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
- 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
- 'first_day_of_week' => 6,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_SA.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_SA.php
deleted file mode 100644
index 10aaa2ed..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_SA.php
+++ /dev/null
@@ -1,92 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Authors:
- * - Josh Soref
- * - JD Isaacks
- * - Atef Ben Ali (atefBB)
- * - Mohamed Sabil (mohamedsabil83)
- */
-$months = [
- 'يناير',
- 'فبراير',
- 'مارس',
- 'أبريل',
- 'مايو',
- 'يونيو',
- 'يوليو',
- 'أغسطس',
- 'سبتمبر',
- 'أكتوبر',
- 'نوفمبر',
- 'ديسمبر',
-];
-
-return [
- 'year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']),
- 'a_year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']),
- 'month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']),
- 'a_month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']),
- 'week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']),
- 'a_week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']),
- 'day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']),
- 'a_day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']),
- 'hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']),
- 'a_hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']),
- 'minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']),
- 'a_minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']),
- 'second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']),
- 'a_second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']),
- 'ago' => 'منذ :time',
- 'from_now' => 'في :time',
- 'after' => 'بعد :time',
- 'before' => 'قبل :time',
- 'diff_now' => 'الآن',
- 'diff_today' => 'اليوم',
- 'diff_today_regexp' => 'اليوم(?:\\s+على)?(?:\\s+الساعة)?',
- 'diff_yesterday' => 'أمس',
- 'diff_yesterday_regexp' => 'أمس(?:\\s+على)?(?:\\s+الساعة)?',
- 'diff_tomorrow' => 'غداً',
- 'diff_tomorrow_regexp' => 'غدا(?:\\s+على)?(?:\\s+الساعة)?',
- 'diff_before_yesterday' => 'قبل الأمس',
- 'diff_after_tomorrow' => 'بعد غد',
- 'period_recurrences' => implode('|', ['{0}مرة', '{1}مرة', '{2}:count مرتين', ']2,11[:count مرات', ']10,Inf[:count مرة']),
- 'period_interval' => 'كل :interval',
- 'period_start_date' => 'من :date',
- 'period_end_date' => 'إلى :date',
- 'months' => $months,
- 'months_short' => $months,
- 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
- 'weekdays_short' => ['أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'],
- 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
- 'list' => ['، ', ' و '],
- 'first_day_of_week' => 6,
- 'day_of_first_week_of_year' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[اليوم على الساعة] LT',
- 'nextDay' => '[غدا على الساعة] LT',
- 'nextWeek' => 'dddd [على الساعة] LT',
- 'lastDay' => '[أمس على الساعة] LT',
- 'lastWeek' => 'dddd [على الساعة] LT',
- 'sameElse' => 'L',
- ],
- 'meridiem' => ['ص', 'م'],
- 'weekend' => [5, 6],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_SD.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_SD.php
deleted file mode 100644
index 362009e2..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_SD.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/ar.php', [
- 'formats' => [
- 'L' => 'DD MMM, YYYY',
- ],
- 'months' => ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'],
- 'months_short' => ['ينا', 'فبر', 'مار', 'أبر', 'ماي', 'يون', 'يول', 'أغس', 'سبت', 'أكت', 'نوف', 'ديس'],
- 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
- 'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
- 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
- 'first_day_of_week' => 6,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_SO.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_SO.php
deleted file mode 100644
index e790b99e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_SO.php
+++ /dev/null
@@ -1,13 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/ar.php', [
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_SS.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_SS.php
deleted file mode 100644
index 32f32825..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_SS.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/ar.php', [
- 'formats' => [
- 'L' => 'DD MMM, YYYY',
- ],
- 'months' => ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'],
- 'months_short' => ['ينا', 'فبر', 'مار', 'أبر', 'ماي', 'يون', 'يول', 'أغس', 'سبت', 'أكت', 'نوف', 'ديس'],
- 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
- 'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
- 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_SY.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_SY.php
deleted file mode 100644
index 0ac09958..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_SY.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/ar.php', [
- 'formats' => [
- 'L' => 'DD MMM, YYYY',
- ],
- 'months' => ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'],
- 'months_short' => ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'],
- 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
- 'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
- 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
- 'first_day_of_week' => 6,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_Shakl.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_Shakl.php
deleted file mode 100644
index c2d4b43d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_Shakl.php
+++ /dev/null
@@ -1,95 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Abdellah Chadidi
- * - Atef Ben Ali (atefBB)
- * - Mohamed Sabil (mohamedsabil83)
- */
-// Same for long and short
-$months = [
- // @TODO add shakl to months
- 'يناير',
- 'فبراير',
- 'مارس',
- 'أبريل',
- 'مايو',
- 'يونيو',
- 'يوليو',
- 'أغسطس',
- 'سبتمبر',
- 'أكتوبر',
- 'نوفمبر',
- 'ديسمبر',
-];
-
-return [
- 'year' => implode('|', ['{0}:count سَنَة', '{1}سَنَة', '{2}سَنَتَيْن', ']2,11[:count سَنَوَات', ']10,Inf[:count سَنَة']),
- 'a_year' => implode('|', ['{0}:count سَنَة', '{1}سَنَة', '{2}سَنَتَيْن', ']2,11[:count سَنَوَات', ']10,Inf[:count سَنَة']),
- 'month' => implode('|', ['{0}:count شَهْرَ', '{1}شَهْرَ', '{2}شَهْرَيْن', ']2,11[:count أَشْهُر', ']10,Inf[:count شَهْرَ']),
- 'a_month' => implode('|', ['{0}:count شَهْرَ', '{1}شَهْرَ', '{2}شَهْرَيْن', ']2,11[:count أَشْهُر', ']10,Inf[:count شَهْرَ']),
- 'week' => implode('|', ['{0}:count أُسْبُوع', '{1}أُسْبُوع', '{2}أُسْبُوعَيْن', ']2,11[:count أَسَابِيع', ']10,Inf[:count أُسْبُوع']),
- 'a_week' => implode('|', ['{0}:count أُسْبُوع', '{1}أُسْبُوع', '{2}أُسْبُوعَيْن', ']2,11[:count أَسَابِيع', ']10,Inf[:count أُسْبُوع']),
- 'day' => implode('|', ['{0}:count يَوْم', '{1}يَوْم', '{2}يَوْمَيْن', ']2,11[:count أَيَّام', ']10,Inf[:count يَوْم']),
- 'a_day' => implode('|', ['{0}:count يَوْم', '{1}يَوْم', '{2}يَوْمَيْن', ']2,11[:count أَيَّام', ']10,Inf[:count يَوْم']),
- 'hour' => implode('|', ['{0}:count سَاعَة', '{1}سَاعَة', '{2}سَاعَتَيْن', ']2,11[:count سَاعَات', ']10,Inf[:count سَاعَة']),
- 'a_hour' => implode('|', ['{0}:count سَاعَة', '{1}سَاعَة', '{2}سَاعَتَيْن', ']2,11[:count سَاعَات', ']10,Inf[:count سَاعَة']),
- 'minute' => implode('|', ['{0}:count دَقِيقَة', '{1}دَقِيقَة', '{2}دَقِيقَتَيْن', ']2,11[:count دَقَائِق', ']10,Inf[:count دَقِيقَة']),
- 'a_minute' => implode('|', ['{0}:count دَقِيقَة', '{1}دَقِيقَة', '{2}دَقِيقَتَيْن', ']2,11[:count دَقَائِق', ']10,Inf[:count دَقِيقَة']),
- 'second' => implode('|', ['{0}:count ثَانِيَة', '{1}ثَانِيَة', '{2}ثَانِيَتَيْن', ']2,11[:count ثَوَان', ']10,Inf[:count ثَانِيَة']),
- 'a_second' => implode('|', ['{0}:count ثَانِيَة', '{1}ثَانِيَة', '{2}ثَانِيَتَيْن', ']2,11[:count ثَوَان', ']10,Inf[:count ثَانِيَة']),
- 'ago' => 'مُنْذُ :time',
- 'from_now' => 'مِنَ الْآن :time',
- 'after' => 'بَعْدَ :time',
- 'before' => 'قَبْلَ :time',
-
- // @TODO add shakl to translations below
- 'diff_now' => 'الآن',
- 'diff_today' => 'اليوم',
- 'diff_today_regexp' => 'اليوم(?:\\s+عند)?(?:\\s+الساعة)?',
- 'diff_yesterday' => 'أمس',
- 'diff_yesterday_regexp' => 'أمس(?:\\s+عند)?(?:\\s+الساعة)?',
- 'diff_tomorrow' => 'غداً',
- 'diff_tomorrow_regexp' => 'غدًا(?:\\s+عند)?(?:\\s+الساعة)?',
- 'diff_before_yesterday' => 'قبل الأمس',
- 'diff_after_tomorrow' => 'بعد غد',
- 'period_recurrences' => implode('|', ['{0}مرة', '{1}مرة', '{2}:count مرتين', ']2,11[:count مرات', ']10,Inf[:count مرة']),
- 'period_interval' => 'كل :interval',
- 'period_start_date' => 'من :date',
- 'period_end_date' => 'إلى :date',
- 'months' => $months,
- 'months_short' => $months,
- 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
- 'weekdays_short' => ['أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'],
- 'weekdays_min' => ['ح', 'اث', 'ثل', 'أر', 'خم', 'ج', 'س'],
- 'list' => ['، ', ' و '],
- 'first_day_of_week' => 6,
- 'day_of_first_week_of_year' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D/M/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[اليوم عند الساعة] LT',
- 'nextDay' => '[غدًا عند الساعة] LT',
- 'nextWeek' => 'dddd [عند الساعة] LT',
- 'lastDay' => '[أمس عند الساعة] LT',
- 'lastWeek' => 'dddd [عند الساعة] LT',
- 'sameElse' => 'L',
- ],
- 'meridiem' => ['ص', 'م'],
- 'weekend' => [5, 6],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_TD.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_TD.php
deleted file mode 100644
index e790b99e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_TD.php
+++ /dev/null
@@ -1,13 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/ar.php', [
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_TN.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_TN.php
deleted file mode 100644
index f096678f..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_TN.php
+++ /dev/null
@@ -1,91 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Authors:
- * - JD Isaacks
- * - Atef Ben Ali (atefBB)
- * - Mohamed Sabil (mohamedsabil83)
- */
-$months = [
- 'جانفي',
- 'فيفري',
- 'مارس',
- 'أفريل',
- 'ماي',
- 'جوان',
- 'جويلية',
- 'أوت',
- 'سبتمبر',
- 'أكتوبر',
- 'نوفمبر',
- 'ديسمبر',
-];
-
-return [
- 'year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']),
- 'a_year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']),
- 'month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']),
- 'a_month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']),
- 'week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']),
- 'a_week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']),
- 'day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']),
- 'a_day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']),
- 'hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']),
- 'a_hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']),
- 'minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']),
- 'a_minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']),
- 'second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']),
- 'a_second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']),
- 'ago' => 'منذ :time',
- 'from_now' => 'في :time',
- 'after' => 'بعد :time',
- 'before' => 'قبل :time',
- 'diff_now' => 'الآن',
- 'diff_today' => 'اليوم',
- 'diff_today_regexp' => 'اليوم(?:\\s+على)?(?:\\s+الساعة)?',
- 'diff_yesterday' => 'أمس',
- 'diff_yesterday_regexp' => 'أمس(?:\\s+على)?(?:\\s+الساعة)?',
- 'diff_tomorrow' => 'غداً',
- 'diff_tomorrow_regexp' => 'غدا(?:\\s+على)?(?:\\s+الساعة)?',
- 'diff_before_yesterday' => 'قبل الأمس',
- 'diff_after_tomorrow' => 'بعد غد',
- 'period_recurrences' => implode('|', ['{0}مرة', '{1}مرة', '{2}:count مرتين', ']2,11[:count مرات', ']10,Inf[:count مرة']),
- 'period_interval' => 'كل :interval',
- 'period_start_date' => 'من :date',
- 'period_end_date' => 'إلى :date',
- 'months' => $months,
- 'months_short' => $months,
- 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
- 'weekdays_short' => ['أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'],
- 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
- 'list' => ['، ', ' و '],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[اليوم على الساعة] LT',
- 'nextDay' => '[غدا على الساعة] LT',
- 'nextWeek' => 'dddd [على الساعة] LT',
- 'lastDay' => '[أمس على الساعة] LT',
- 'lastWeek' => 'dddd [على الساعة] LT',
- 'sameElse' => 'L',
- ],
- 'meridiem' => ['ص', 'م'],
- 'weekend' => [5, 6],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_YE.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_YE.php
deleted file mode 100644
index 5dc29388..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_YE.php
+++ /dev/null
@@ -1,26 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/ar.php', [
- 'formats' => [
- 'L' => 'DD MMM, YYYY',
- ],
- 'months' => ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'],
- 'months_short' => ['ينا', 'فبر', 'مار', 'أبر', 'ماي', 'يون', 'يول', 'أغس', 'سبت', 'أكت', 'نوف', 'ديس'],
- 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
- 'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
- 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/as.php b/vendor/nesbot/carbon/src/Carbon/Lang/as.php
deleted file mode 100644
index 04bc3dfd..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/as.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/as_IN.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/as_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/as_IN.php
deleted file mode 100644
index 5fbc3dba..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/as_IN.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Amitakhya Phukan, Red Hat bug-glibc@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'D-MM-YYYY',
- ],
- 'months' => ['জানুৱাৰী', 'ফেব্ৰুৱাৰী', 'মাৰ্চ', 'এপ্ৰিল', 'মে', 'জুন', 'জুলাই', 'আগষ্ট', 'ছেপ্তেম্বৰ', 'অক্টোবৰ', 'নৱেম্বৰ', 'ডিচেম্বৰ'],
- 'months_short' => ['জানু', 'ফেব্ৰু', 'মাৰ্চ', 'এপ্ৰিল', 'মে', 'জুন', 'জুলাই', 'আগ', 'সেপ্ট', 'অক্টো', 'নভে', 'ডিসে'],
- 'weekdays' => ['দেওবাৰ', 'সোমবাৰ', 'মঙ্গলবাৰ', 'বুধবাৰ', 'বৃহষ্পতিবাৰ', 'শুক্ৰবাৰ', 'শনিবাৰ'],
- 'weekdays_short' => ['দেও', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহষ্পতি', 'শুক্ৰ', 'শনি'],
- 'weekdays_min' => ['দেও', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহষ্পতি', 'শুক্ৰ', 'শনি'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['পূৰ্ব্বাহ্ন', 'অপৰাহ্ন'],
-
- 'year' => ':count বছৰ',
- 'y' => ':count বছৰ',
- 'a_year' => ':count বছৰ',
-
- 'month' => ':count মাহ',
- 'm' => ':count মাহ',
- 'a_month' => ':count মাহ',
-
- 'week' => ':count সপ্তাহ',
- 'w' => ':count সপ্তাহ',
- 'a_week' => ':count সপ্তাহ',
-
- 'day' => ':count বাৰ',
- 'd' => ':count বাৰ',
- 'a_day' => ':count বাৰ',
-
- 'hour' => ':count ঘণ্টা',
- 'h' => ':count ঘণ্টা',
- 'a_hour' => ':count ঘণ্টা',
-
- 'minute' => ':count মিনিট',
- 'min' => ':count মিনিট',
- 'a_minute' => ':count মিনিট',
-
- 'second' => ':count দ্বিতীয়',
- 's' => ':count দ্বিতীয়',
- 'a_second' => ':count দ্বিতীয়',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/asa.php b/vendor/nesbot/carbon/src/Carbon/Lang/asa.php
deleted file mode 100644
index 03bb4839..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/asa.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['icheheavo', 'ichamthi'],
- 'weekdays' => ['Jumapili', 'Jumatatu', 'Jumanne', 'Jumatano', 'Alhamisi', 'Ijumaa', 'Jumamosi'],
- 'weekdays_short' => ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Ijm', 'Jmo'],
- 'weekdays_min' => ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Ijm', 'Jmo'],
- 'months' => ['Januari', 'Februari', 'Machi', 'Aprili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', 'Oktoba', 'Novemba', 'Desemba'],
- 'months_short' => ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Dec'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ast.php b/vendor/nesbot/carbon/src/Carbon/Lang/ast.php
deleted file mode 100644
index d9bdebe5..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ast.php
+++ /dev/null
@@ -1,59 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Jordi Mallach jordi@gnu.org
- * - Adolfo Jayme-Barrientos (fitojb)
- */
-return array_replace_recursive(require __DIR__.'/es.php', [
- 'formats' => [
- 'L' => 'DD/MM/YY',
- ],
- 'months' => ['de xineru', 'de febreru', 'de marzu', 'd’abril', 'de mayu', 'de xunu', 'de xunetu', 'd’agostu', 'de setiembre', 'd’ochobre', 'de payares', 'd’avientu'],
- 'months_short' => ['xin', 'feb', 'mar', 'abr', 'may', 'xun', 'xnt', 'ago', 'set', 'och', 'pay', 'avi'],
- 'weekdays' => ['domingu', 'llunes', 'martes', 'miércoles', 'xueves', 'vienres', 'sábadu'],
- 'weekdays_short' => ['dom', 'llu', 'mar', 'mié', 'xue', 'vie', 'sáb'],
- 'weekdays_min' => ['dom', 'llu', 'mar', 'mié', 'xue', 'vie', 'sáb'],
-
- 'year' => ':count añu|:count años',
- 'y' => ':count añu|:count años',
- 'a_year' => 'un añu|:count años',
-
- 'month' => ':count mes',
- 'm' => ':count mes',
- 'a_month' => 'un mes|:count mes',
-
- 'week' => ':count selmana|:count selmanes',
- 'w' => ':count selmana|:count selmanes',
- 'a_week' => 'una selmana|:count selmanes',
-
- 'day' => ':count día|:count díes',
- 'd' => ':count día|:count díes',
- 'a_day' => 'un día|:count díes',
-
- 'hour' => ':count hora|:count hores',
- 'h' => ':count hora|:count hores',
- 'a_hour' => 'una hora|:count hores',
-
- 'minute' => ':count minutu|:count minutos',
- 'min' => ':count minutu|:count minutos',
- 'a_minute' => 'un minutu|:count minutos',
-
- 'second' => ':count segundu|:count segundos',
- 's' => ':count segundu|:count segundos',
- 'a_second' => 'un segundu|:count segundos',
-
- 'ago' => 'hai :time',
- 'from_now' => 'en :time',
- 'after' => ':time dempués',
- 'before' => ':time enantes',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ast_ES.php b/vendor/nesbot/carbon/src/Carbon/Lang/ast_ES.php
deleted file mode 100644
index 04d75621..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ast_ES.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/ast.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ayc.php b/vendor/nesbot/carbon/src/Carbon/Lang/ayc.php
deleted file mode 100644
index d6a6f638..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ayc.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/ayc_PE.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ayc_PE.php b/vendor/nesbot/carbon/src/Carbon/Lang/ayc_PE.php
deleted file mode 100644
index ff18504f..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ayc_PE.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - runasimipi.org libc-alpha@sourceware.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YY',
- ],
- 'months' => ['inïru', 'phiwriru', 'marsu', 'awrila', 'mayu', 'junyu', 'julyu', 'awustu', 'sitimri', 'uktuwri', 'nuwimri', 'risimri'],
- 'months_short' => ['ini', 'phi', 'mar', 'awr', 'may', 'jun', 'jul', 'awu', 'sit', 'ukt', 'nuw', 'ris'],
- 'weekdays' => ['tuminku', 'lunisa', 'martisa', 'mirkulisa', 'juywisa', 'wirnisa', 'sawäru'],
- 'weekdays_short' => ['tum', 'lun', 'mar', 'mir', 'juy', 'wir', 'saw'],
- 'weekdays_min' => ['tum', 'lun', 'mar', 'mir', 'juy', 'wir', 'saw'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['VM', 'NM'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/az.php b/vendor/nesbot/carbon/src/Carbon/Lang/az.php
deleted file mode 100644
index 1e92106d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/az.php
+++ /dev/null
@@ -1,128 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Josh Soref
- * - Kunal Marwaha
- * - François B
- * - JD Isaacks
- * - Orxan
- * - Şəhriyar İmanov
- * - Baran Şengül
- */
-return [
- 'year' => ':count il',
- 'a_year' => '{1}bir il|]1,Inf[:count il',
- 'y' => ':count il',
- 'month' => ':count ay',
- 'a_month' => '{1}bir ay|]1,Inf[:count ay',
- 'm' => ':count ay',
- 'week' => ':count həftə',
- 'a_week' => '{1}bir həftə|]1,Inf[:count həftə',
- 'w' => ':count h.',
- 'day' => ':count gün',
- 'a_day' => '{1}bir gün|]1,Inf[:count gün',
- 'd' => ':count g.',
- 'hour' => ':count saat',
- 'a_hour' => '{1}bir saat|]1,Inf[:count saat',
- 'h' => ':count saat',
- 'minute' => ':count d.',
- 'a_minute' => '{1}bir dəqiqə|]1,Inf[:count dəqiqə',
- 'min' => ':count dəqiqə',
- 'second' => ':count san.',
- 'a_second' => '{1}birneçə saniyə|]1,Inf[:count saniyə',
- 's' => ':count saniyə',
- 'ago' => ':time əvvəl',
- 'from_now' => ':time sonra',
- 'after' => ':time sonra',
- 'before' => ':time əvvəl',
- 'diff_now' => 'indi',
- 'diff_today' => 'bugün',
- 'diff_today_regexp' => 'bugün(?:\\s+saat)?',
- 'diff_yesterday' => 'dünən',
- 'diff_tomorrow' => 'sabah',
- 'diff_tomorrow_regexp' => 'sabah(?:\\s+saat)?',
- 'diff_before_yesterday' => 'srağagün',
- 'diff_after_tomorrow' => 'birisi gün',
- 'period_recurrences' => ':count dəfədən bir',
- 'period_interval' => 'hər :interval',
- 'period_start_date' => ':date tarixindən başlayaraq',
- 'period_end_date' => ':date tarixinədək',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[bugün saat] LT',
- 'nextDay' => '[sabah saat] LT',
- 'nextWeek' => '[gələn həftə] dddd [saat] LT',
- 'lastDay' => '[dünən] LT',
- 'lastWeek' => '[keçən həftə] dddd [saat] LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => function ($number) {
- if ($number === 0) { // special case for zero
- return "$number-ıncı";
- }
-
- static $suffixes = [
- 1 => '-inci',
- 5 => '-inci',
- 8 => '-inci',
- 70 => '-inci',
- 80 => '-inci',
- 2 => '-nci',
- 7 => '-nci',
- 20 => '-nci',
- 50 => '-nci',
- 3 => '-üncü',
- 4 => '-üncü',
- 100 => '-üncü',
- 6 => '-ncı',
- 9 => '-uncu',
- 10 => '-uncu',
- 30 => '-uncu',
- 60 => '-ıncı',
- 90 => '-ıncı',
- ];
-
- $lastDigit = $number % 10;
-
- return $number.($suffixes[$lastDigit] ?? $suffixes[$number % 100 - $lastDigit] ?? $suffixes[$number >= 100 ? 100 : -1] ?? '');
- },
- 'meridiem' => function ($hour) {
- if ($hour < 4) {
- return 'gecə';
- }
- if ($hour < 12) {
- return 'səhər';
- }
- if ($hour < 17) {
- return 'gündüz';
- }
-
- return 'axşam';
- },
- 'months' => ['yanvar', 'fevral', 'mart', 'aprel', 'may', 'iyun', 'iyul', 'avqust', 'sentyabr', 'oktyabr', 'noyabr', 'dekabr'],
- 'months_short' => ['yan', 'fev', 'mar', 'apr', 'may', 'iyn', 'iyl', 'avq', 'sen', 'okt', 'noy', 'dek'],
- 'months_standalone' => ['Yanvar', 'Fevral', 'Mart', 'Aprel', 'May', 'İyun', 'İyul', 'Avqust', 'Sentyabr', 'Oktyabr', 'Noyabr', 'Dekabr'],
- 'weekdays' => ['bazar', 'bazar ertəsi', 'çərşənbə axşamı', 'çərşənbə', 'cümə axşamı', 'cümə', 'şənbə'],
- 'weekdays_short' => ['baz', 'bze', 'çax', 'çər', 'cax', 'cüm', 'şən'],
- 'weekdays_min' => ['bz', 'be', 'ça', 'çə', 'ca', 'cü', 'şə'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'list' => [', ', ' və '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/az_AZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/az_AZ.php
deleted file mode 100644
index 2acf881a..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/az_AZ.php
+++ /dev/null
@@ -1,21 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Pablo Saratxaga pablo@mandrakesoft.com
- */
-return array_replace_recursive(require __DIR__.'/az.php', [
- 'months_short' => ['Yan', 'Fev', 'Mar', 'Apr', 'May', 'İyn', 'İyl', 'Avq', 'Sen', 'Okt', 'Noy', 'Dek'],
- 'weekdays' => ['bazar günü', 'bazar ertəsi', 'çərşənbə axşamı', 'çərşənbə', 'cümə axşamı', 'cümə', 'şənbə'],
- 'weekdays_short' => ['baz', 'ber', 'çax', 'çər', 'cax', 'cüm', 'şnb'],
- 'weekdays_min' => ['baz', 'ber', 'çax', 'çər', 'cax', 'cüm', 'şnb'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/az_Cyrl.php b/vendor/nesbot/carbon/src/Carbon/Lang/az_Cyrl.php
deleted file mode 100644
index 28fc62fe..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/az_Cyrl.php
+++ /dev/null
@@ -1,20 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/az.php', [
- 'weekdays' => ['базар', 'базар ертәси', 'чәршәнбә ахшамы', 'чәршәнбә', 'ҹүмә ахшамы', 'ҹүмә', 'шәнбә'],
- 'weekdays_short' => ['Б.', 'Б.Е.', 'Ч.А.', 'Ч.', 'Ҹ.А.', 'Ҹ.', 'Ш.'],
- 'weekdays_min' => ['Б.', 'Б.Е.', 'Ч.А.', 'Ч.', 'Ҹ.А.', 'Ҹ.', 'Ш.'],
- 'months' => ['јанвар', 'феврал', 'март', 'апрел', 'май', 'ијун', 'ијул', 'август', 'сентјабр', 'октјабр', 'нојабр', 'декабр'],
- 'months_short' => ['јан', 'фев', 'мар', 'апр', 'май', 'ијн', 'ијл', 'авг', 'сен', 'окт', 'ној', 'дек'],
- 'months_standalone' => ['Јанвар', 'Феврал', 'Март', 'Апрел', 'Май', 'Ијун', 'Ијул', 'Август', 'Сентјабр', 'Октјабр', 'Нојабр', 'Декабр'],
- 'meridiem' => ['а', 'п'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/az_IR.php b/vendor/nesbot/carbon/src/Carbon/Lang/az_IR.php
deleted file mode 100644
index 991a0efb..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/az_IR.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Mousa Moradi mousamk@gmail.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'OY/OM/OD',
- ],
- 'months' => ['ژانویه', 'فوریه', 'مارس', 'آوریل', 'مئی', 'ژوئن', 'جولای', 'آقۇست', 'سپتامبر', 'اوْکتوْبر', 'نوْوامبر', 'دسامبر'],
- 'months_short' => ['ژانویه', 'فوریه', 'مارس', 'آوریل', 'مئی', 'ژوئن', 'جولای', 'آقۇست', 'سپتامبر', 'اوْکتوْبر', 'نوْوامبر', 'دسامبر'],
- 'weekdays' => ['یکشنبه', 'دوشنبه', 'سهشنبه', 'چارشنبه', 'جۆمعه آخشامی', 'جۆمعه', 'شنبه'],
- 'weekdays_short' => ['یکشنبه', 'دوشنبه', 'سهشنبه', 'چارشنبه', 'جۆمعه آخشامی', 'جۆمعه', 'شنبه'],
- 'weekdays_min' => ['یکشنبه', 'دوشنبه', 'سهشنبه', 'چارشنبه', 'جۆمعه آخشامی', 'جۆمعه', 'شنبه'],
- 'first_day_of_week' => 6,
- 'alt_numbers' => ['۰۰', '۰۱', '۰۲', '۰۳', '۰۴', '۰۵', '۰۶', '۰۷', '۰۸', '۰۹', '۱۰', '۱۱', '۱۲', '۱۳', '۱۴', '۱۵', '۱۶', '۱۷', '۱۸', '۱۹', '۲۰', '۲۱', '۲۲', '۲۳', '۲۴', '۲۵', '۲۶', '۲۷', '۲۸', '۲۹', '۳۰', '۳۱', '۳۲', '۳۳', '۳۴', '۳۵', '۳۶', '۳۷', '۳۸', '۳۹', '۴۰', '۴۱', '۴۲', '۴۳', '۴۴', '۴۵', '۴۶', '۴۷', '۴۸', '۴۹', '۵۰', '۵۱', '۵۲', '۵۳', '۵۴', '۵۵', '۵۶', '۵۷', '۵۸', '۵۹', '۶۰', '۶۱', '۶۲', '۶۳', '۶۴', '۶۵', '۶۶', '۶۷', '۶۸', '۶۹', '۷۰', '۷۱', '۷۲', '۷۳', '۷۴', '۷۵', '۷۶', '۷۷', '۷۸', '۷۹', '۸۰', '۸۱', '۸۲', '۸۳', '۸۴', '۸۵', '۸۶', '۸۷', '۸۸', '۸۹', '۹۰', '۹۱', '۹۲', '۹۳', '۹۴', '۹۵', '۹۶', '۹۷', '۹۸', '۹۹'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/az_Latn.php b/vendor/nesbot/carbon/src/Carbon/Lang/az_Latn.php
deleted file mode 100644
index 0be33914..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/az_Latn.php
+++ /dev/null
@@ -1,29 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/az.php', [
- 'meridiem' => ['a', 'p'],
- 'weekdays' => ['bazar', 'bazar ertəsi', 'çərşənbə axşamı', 'çərşənbə', 'cümə axşamı', 'cümə', 'şənbə'],
- 'weekdays_short' => ['B.', 'B.E.', 'Ç.A.', 'Ç.', 'C.A.', 'C.', 'Ş.'],
- 'weekdays_min' => ['B.', 'B.E.', 'Ç.A.', 'Ç.', 'C.A.', 'C.', 'Ş.'],
- 'months' => ['yanvar', 'fevral', 'mart', 'aprel', 'may', 'iyun', 'iyul', 'avqust', 'sentyabr', 'oktyabr', 'noyabr', 'dekabr'],
- 'months_short' => ['yan', 'fev', 'mar', 'apr', 'may', 'iyn', 'iyl', 'avq', 'sen', 'okt', 'noy', 'dek'],
- 'months_standalone' => ['Yanvar', 'Fevral', 'Mart', 'Aprel', 'May', 'İyun', 'İyul', 'Avqust', 'Sentyabr', 'Oktyabr', 'Noyabr', 'Dekabr'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'D MMMM YYYY, dddd HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bas.php b/vendor/nesbot/carbon/src/Carbon/Lang/bas.php
deleted file mode 100644
index 41bfa1d8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/bas.php
+++ /dev/null
@@ -1,32 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['I bikɛ̂glà', 'I ɓugajɔp'],
- 'weekdays' => ['ŋgwà nɔ̂y', 'ŋgwà njaŋgumba', 'ŋgwà ûm', 'ŋgwà ŋgê', 'ŋgwà mbɔk', 'ŋgwà kɔɔ', 'ŋgwà jôn'],
- 'weekdays_short' => ['nɔy', 'nja', 'uum', 'ŋge', 'mbɔ', 'kɔɔ', 'jon'],
- 'weekdays_min' => ['nɔy', 'nja', 'uum', 'ŋge', 'mbɔ', 'kɔɔ', 'jon'],
- 'months' => ['Kɔndɔŋ', 'Màcɛ̂l', 'Màtùmb', 'Màtop', 'M̀puyɛ', 'Hìlòndɛ̀', 'Njèbà', 'Hìkaŋ', 'Dìpɔ̀s', 'Bìòôm', 'Màyɛsèp', 'Lìbuy li ńyèe'],
- 'months_short' => ['kɔn', 'mac', 'mat', 'mto', 'mpu', 'hil', 'nje', 'hik', 'dip', 'bio', 'may', 'liɓ'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D/M/YYYY',
- 'LL' => 'D MMM, YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
-
- 'second' => ':count móndî', // less reliable
- 's' => ':count móndî', // less reliable
- 'a_second' => ':count móndî', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/be.php b/vendor/nesbot/carbon/src/Carbon/Lang/be.php
deleted file mode 100644
index 51b4d0cc..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/be.php
+++ /dev/null
@@ -1,173 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-// @codeCoverageIgnoreStart
-
-use Carbon\CarbonInterface;
-use Symfony\Component\Translation\PluralizationRules;
-
-if (class_exists('Symfony\\Component\\Translation\\PluralizationRules')) {
- PluralizationRules::set(function ($number) {
- return (($number % 10 == 1) && ($number % 100 != 11)) ? 0 : ((($number % 10 >= 2) && ($number % 10 <= 4) && (($number % 100 < 10) || ($number % 100 >= 20))) ? 1 : 2);
- }, 'be');
-}
-// @codeCoverageIgnoreEnd
-
-/*
- * Authors:
- * - Josh Soref
- * - SobakaSlava
- * - François B
- * - Serhan Apaydın
- * - JD Isaacks
- * - AbadonnaAbbys
- * - Siomkin Alexander
- */
-return [
- 'year' => ':count год|:count гады|:count гадоў',
- 'a_year' => '{1}год|:count год|:count гады|:count гадоў',
- 'y' => ':count год|:count гады|:count гадоў',
- 'month' => ':count месяц|:count месяцы|:count месяцаў',
- 'a_month' => '{1}месяц|:count месяц|:count месяцы|:count месяцаў',
- 'm' => ':count месяц|:count месяцы|:count месяцаў',
- 'week' => ':count тыдзень|:count тыдні|:count тыдняў',
- 'a_week' => '{1}тыдзень|:count тыдзень|:count тыдні|:count тыдняў',
- 'w' => ':count тыдзень|:count тыдні|:count тыдняў',
- 'day' => ':count дзень|:count дні|:count дзён',
- 'a_day' => '{1}дзень|:count дзень|:count дні|:count дзён',
- 'd' => ':count дн',
- 'hour' => ':count гадзіну|:count гадзіны|:count гадзін',
- 'a_hour' => '{1}гадзіна|:count гадзіна|:count гадзіны|:count гадзін',
- 'h' => ':count гадзіна|:count гадзіны|:count гадзін',
- 'minute' => ':count хвіліна|:count хвіліны|:count хвілін',
- 'a_minute' => '{1}хвіліна|:count хвіліна|:count хвіліны|:count хвілін',
- 'min' => ':count хв',
- 'second' => ':count секунда|:count секунды|:count секунд',
- 'a_second' => '{1}некалькі секунд|:count секунда|:count секунды|:count секунд',
- 's' => ':count сек',
-
- 'hour_ago' => ':count гадзіну|:count гадзіны|:count гадзін',
- 'a_hour_ago' => '{1}гадзіну|:count гадзіну|:count гадзіны|:count гадзін',
- 'h_ago' => ':count гадзіну|:count гадзіны|:count гадзін',
- 'minute_ago' => ':count хвіліну|:count хвіліны|:count хвілін',
- 'a_minute_ago' => '{1}хвіліну|:count хвіліну|:count хвіліны|:count хвілін',
- 'min_ago' => ':count хвіліну|:count хвіліны|:count хвілін',
- 'second_ago' => ':count секунду|:count секунды|:count секунд',
- 'a_second_ago' => '{1}некалькі секунд|:count секунду|:count секунды|:count секунд',
- 's_ago' => ':count секунду|:count секунды|:count секунд',
-
- 'hour_from_now' => ':count гадзіну|:count гадзіны|:count гадзін',
- 'a_hour_from_now' => '{1}гадзіну|:count гадзіну|:count гадзіны|:count гадзін',
- 'h_from_now' => ':count гадзіну|:count гадзіны|:count гадзін',
- 'minute_from_now' => ':count хвіліну|:count хвіліны|:count хвілін',
- 'a_minute_from_now' => '{1}хвіліну|:count хвіліну|:count хвіліны|:count хвілін',
- 'min_from_now' => ':count хвіліну|:count хвіліны|:count хвілін',
- 'second_from_now' => ':count секунду|:count секунды|:count секунд',
- 'a_second_from_now' => '{1}некалькі секунд|:count секунду|:count секунды|:count секунд',
- 's_from_now' => ':count секунду|:count секунды|:count секунд',
-
- 'hour_after' => ':count гадзіну|:count гадзіны|:count гадзін',
- 'a_hour_after' => '{1}гадзіну|:count гадзіну|:count гадзіны|:count гадзін',
- 'h_after' => ':count гадзіну|:count гадзіны|:count гадзін',
- 'minute_after' => ':count хвіліну|:count хвіліны|:count хвілін',
- 'a_minute_after' => '{1}хвіліну|:count хвіліну|:count хвіліны|:count хвілін',
- 'min_after' => ':count хвіліну|:count хвіліны|:count хвілін',
- 'second_after' => ':count секунду|:count секунды|:count секунд',
- 'a_second_after' => '{1}некалькі секунд|:count секунду|:count секунды|:count секунд',
- 's_after' => ':count секунду|:count секунды|:count секунд',
-
- 'hour_before' => ':count гадзіну|:count гадзіны|:count гадзін',
- 'a_hour_before' => '{1}гадзіну|:count гадзіну|:count гадзіны|:count гадзін',
- 'h_before' => ':count гадзіну|:count гадзіны|:count гадзін',
- 'minute_before' => ':count хвіліну|:count хвіліны|:count хвілін',
- 'a_minute_before' => '{1}хвіліну|:count хвіліну|:count хвіліны|:count хвілін',
- 'min_before' => ':count хвіліну|:count хвіліны|:count хвілін',
- 'second_before' => ':count секунду|:count секунды|:count секунд',
- 'a_second_before' => '{1}некалькі секунд|:count секунду|:count секунды|:count секунд',
- 's_before' => ':count секунду|:count секунды|:count секунд',
-
- 'ago' => ':time таму',
- 'from_now' => 'праз :time',
- 'after' => ':time пасля',
- 'before' => ':time да',
- 'diff_now' => 'цяпер',
- 'diff_today' => 'Сёння',
- 'diff_today_regexp' => 'Сёння(?:\\s+ў)?',
- 'diff_yesterday' => 'учора',
- 'diff_yesterday_regexp' => 'Учора(?:\\s+ў)?',
- 'diff_tomorrow' => 'заўтра',
- 'diff_tomorrow_regexp' => 'Заўтра(?:\\s+ў)?',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'D MMMM YYYY г.',
- 'LLL' => 'D MMMM YYYY г., HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY г., HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[Сёння ў] LT',
- 'nextDay' => '[Заўтра ў] LT',
- 'nextWeek' => '[У] dddd [ў] LT',
- 'lastDay' => '[Учора ў] LT',
- 'lastWeek' => function (CarbonInterface $current) {
- switch ($current->dayOfWeek) {
- case 1:
- case 2:
- case 4:
- return '[У мінулы] dddd [ў] LT';
- default:
- return '[У мінулую] dddd [ў] LT';
- }
- },
- 'sameElse' => 'L',
- ],
- 'ordinal' => function ($number, $period) {
- switch ($period) {
- case 'M':
- case 'd':
- case 'DDD':
- case 'w':
- case 'W':
- return ($number % 10 === 2 || $number % 10 === 3) && ($number % 100 !== 12 && $number % 100 !== 13) ? $number.'-і' : $number.'-ы';
- case 'D':
- return $number.'-га';
- default:
- return $number;
- }
- },
- 'meridiem' => function ($hour) {
- if ($hour < 4) {
- return 'ночы';
- }
- if ($hour < 12) {
- return 'раніцы';
- }
- if ($hour < 17) {
- return 'дня';
- }
-
- return 'вечара';
- },
- 'months' => ['студзеня', 'лютага', 'сакавіка', 'красавіка', 'траўня', 'чэрвеня', 'ліпеня', 'жніўня', 'верасня', 'кастрычніка', 'лістапада', 'снежня'],
- 'months_standalone' => ['студзень', 'люты', 'сакавік', 'красавік', 'травень', 'чэрвень', 'ліпень', 'жнівень', 'верасень', 'кастрычнік', 'лістапад', 'снежань'],
- 'months_short' => ['студ', 'лют', 'сак', 'крас', 'трав', 'чэрв', 'ліп', 'жнів', 'вер', 'каст', 'ліст', 'снеж'],
- 'months_regexp' => '/(DD?o?\.?(\[[^\[\]]*\]|\s)+MMMM?|L{2,4}|l{2,4})/',
- 'weekdays' => ['нядзелю', 'панядзелак', 'аўторак', 'сераду', 'чацвер', 'пятніцу', 'суботу'],
- 'weekdays_standalone' => ['нядзеля', 'панядзелак', 'аўторак', 'серада', 'чацвер', 'пятніца', 'субота'],
- 'weekdays_short' => ['нд', 'пн', 'ат', 'ср', 'чц', 'пт', 'сб'],
- 'weekdays_min' => ['нд', 'пн', 'ат', 'ср', 'чц', 'пт', 'сб'],
- 'weekdays_regexp' => '/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/',
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'list' => [', ', ' і '],
- 'months_short_standalone' => ['сту', 'лют', 'сак', 'кра', 'май', 'чэр', 'ліп', 'жні', 'вер', 'кас', 'ліс', 'сне'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/be_BY.php b/vendor/nesbot/carbon/src/Carbon/Lang/be_BY.php
deleted file mode 100644
index 26684b40..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/be_BY.php
+++ /dev/null
@@ -1,22 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/be.php', [
- 'months' => ['студзеня', 'лютага', 'сакавіка', 'красавіка', 'мая', 'чэрвеня', 'ліпеня', 'жніўня', 'верасня', 'кастрычніка', 'лістапада', 'снежня'],
- 'months_short' => ['сту', 'лют', 'сак', 'кра', 'мая', 'чэр', 'ліп', 'жні', 'вер', 'кас', 'ліс', 'сне'],
- 'weekdays' => ['Нядзеля', 'Панядзелак', 'Аўторак', 'Серада', 'Чацвер', 'Пятніца', 'Субота'],
- 'weekdays_short' => ['Няд', 'Пан', 'Аўт', 'Срд', 'Чцв', 'Пят', 'Суб'],
- 'weekdays_min' => ['Няд', 'Пан', 'Аўт', 'Срд', 'Чцв', 'Пят', 'Суб'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/be_BY@latin.php b/vendor/nesbot/carbon/src/Carbon/Lang/be_BY@latin.php
deleted file mode 100644
index 517ce83a..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/be_BY@latin.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD.MM.YYYY',
- ],
- 'months' => ['studzienia', 'lutaha', 'sakavika', 'krasavika', 'maja', 'červienia', 'lipienia', 'žniŭnia', 'vieraśnia', 'kastryčnika', 'listapada', 'śniežnia'],
- 'months_short' => ['Stu', 'Lut', 'Sak', 'Kra', 'Maj', 'Čer', 'Lip', 'Žni', 'Vie', 'Kas', 'Lis', 'Śni'],
- 'weekdays' => ['Niadziela', 'Paniadziełak', 'Aŭtorak', 'Sierada', 'Čaćvier', 'Piatnica', 'Subota'],
- 'weekdays_short' => ['Nia', 'Pan', 'Aŭt', 'Sie', 'Čać', 'Pia', 'Sub'],
- 'weekdays_min' => ['Nia', 'Pan', 'Aŭt', 'Sie', 'Čać', 'Pia', 'Sub'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bem.php b/vendor/nesbot/carbon/src/Carbon/Lang/bem.php
deleted file mode 100644
index 1c3ef039..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/bem.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/bem_ZM.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bem_ZM.php b/vendor/nesbot/carbon/src/Carbon/Lang/bem_ZM.php
deleted file mode 100644
index 620b5795..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/bem_ZM.php
+++ /dev/null
@@ -1,56 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - ANLoc Martin Benjamin locales@africanlocalization.net
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'MM/DD/YYYY',
- ],
- 'months' => ['Januari', 'Februari', 'Machi', 'Epreo', 'Mei', 'Juni', 'Julai', 'Ogasti', 'Septemba', 'Oktoba', 'Novemba', 'Disemba'],
- 'months_short' => ['Jan', 'Feb', 'Mac', 'Epr', 'Mei', 'Jun', 'Jul', 'Oga', 'Sep', 'Okt', 'Nov', 'Dis'],
- 'weekdays' => ['Pa Mulungu', 'Palichimo', 'Palichibuli', 'Palichitatu', 'Palichine', 'Palichisano', 'Pachibelushi'],
- 'weekdays_short' => ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
- 'weekdays_min' => ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['uluchelo', 'akasuba'],
-
- 'year' => 'myaka :count',
- 'y' => 'myaka :count',
- 'a_year' => 'myaka :count',
-
- 'month' => 'myeshi :count',
- 'm' => 'myeshi :count',
- 'a_month' => 'myeshi :count',
-
- 'week' => 'umulungu :count',
- 'w' => 'umulungu :count',
- 'a_week' => 'umulungu :count',
-
- 'day' => 'inshiku :count',
- 'd' => 'inshiku :count',
- 'a_day' => 'inshiku :count',
-
- 'hour' => 'awala :count',
- 'h' => 'awala :count',
- 'a_hour' => 'awala :count',
-
- 'minute' => 'miniti :count',
- 'min' => 'miniti :count',
- 'a_minute' => 'miniti :count',
-
- 'second' => 'sekondi :count',
- 's' => 'sekondi :count',
- 'a_second' => 'sekondi :count',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ber.php b/vendor/nesbot/carbon/src/Carbon/Lang/ber.php
deleted file mode 100644
index 685603c0..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ber.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/ber_DZ.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ber_DZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/ber_DZ.php
deleted file mode 100644
index 38de10ab..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ber_DZ.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Pablo Saratxaga pablo@mandrakesoft.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD.MM.YYYY',
- ],
- 'months' => ['yanvar', 'fevral', 'mart', 'aprel', 'may', 'iyun', 'iyul', 'avqust', 'sentyabr', 'oktyabr', 'noyabr', 'dekabr'],
- 'months_short' => ['Yan', 'Fev', 'Mar', 'Apr', 'May', 'İyn', 'İyl', 'Avq', 'Sen', 'Okt', 'Noy', 'Dek'],
- 'weekdays' => ['bazar günü', 'birinci gün', 'ikinci gün', 'üçüncü gün', 'dördüncü gün', 'beşinci gün', 'altıncı gün'],
- 'weekdays_short' => ['baz', 'bir', 'iki', 'üçü', 'dör', 'beş', 'alt'],
- 'weekdays_min' => ['baz', 'bir', 'iki', 'üçü', 'dör', 'beş', 'alt'],
- 'first_day_of_week' => 6,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ber_MA.php b/vendor/nesbot/carbon/src/Carbon/Lang/ber_MA.php
deleted file mode 100644
index 38de10ab..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ber_MA.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Pablo Saratxaga pablo@mandrakesoft.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD.MM.YYYY',
- ],
- 'months' => ['yanvar', 'fevral', 'mart', 'aprel', 'may', 'iyun', 'iyul', 'avqust', 'sentyabr', 'oktyabr', 'noyabr', 'dekabr'],
- 'months_short' => ['Yan', 'Fev', 'Mar', 'Apr', 'May', 'İyn', 'İyl', 'Avq', 'Sen', 'Okt', 'Noy', 'Dek'],
- 'weekdays' => ['bazar günü', 'birinci gün', 'ikinci gün', 'üçüncü gün', 'dördüncü gün', 'beşinci gün', 'altıncı gün'],
- 'weekdays_short' => ['baz', 'bir', 'iki', 'üçü', 'dör', 'beş', 'alt'],
- 'weekdays_min' => ['baz', 'bir', 'iki', 'üçü', 'dör', 'beş', 'alt'],
- 'first_day_of_week' => 6,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bez.php b/vendor/nesbot/carbon/src/Carbon/Lang/bez.php
deleted file mode 100644
index d59c5ef5..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/bez.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['pamilau', 'pamunyi'],
- 'weekdays' => ['pa mulungu', 'pa shahuviluha', 'pa hivili', 'pa hidatu', 'pa hitayi', 'pa hihanu', 'pa shahulembela'],
- 'weekdays_short' => ['Mul', 'Vil', 'Hiv', 'Hid', 'Hit', 'Hih', 'Lem'],
- 'weekdays_min' => ['Mul', 'Vil', 'Hiv', 'Hid', 'Hit', 'Hih', 'Lem'],
- 'months' => ['pa mwedzi gwa hutala', 'pa mwedzi gwa wuvili', 'pa mwedzi gwa wudatu', 'pa mwedzi gwa wutai', 'pa mwedzi gwa wuhanu', 'pa mwedzi gwa sita', 'pa mwedzi gwa saba', 'pa mwedzi gwa nane', 'pa mwedzi gwa tisa', 'pa mwedzi gwa kumi', 'pa mwedzi gwa kumi na moja', 'pa mwedzi gwa kumi na mbili'],
- 'months_short' => ['Hut', 'Vil', 'Dat', 'Tai', 'Han', 'Sit', 'Sab', 'Nan', 'Tis', 'Kum', 'Kmj', 'Kmb'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bg.php b/vendor/nesbot/carbon/src/Carbon/Lang/bg.php
deleted file mode 100644
index f7680740..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/bg.php
+++ /dev/null
@@ -1,114 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Josh Soref
- * - François B
- * - Serhan Apaydın
- * - JD Isaacks
- * - Glavić
- */
-
-use Carbon\CarbonInterface;
-
-return [
- 'year' => ':count година|:count години',
- 'a_year' => 'година|:count години',
- 'y' => ':count година|:count години',
- 'month' => ':count месец|:count месеца',
- 'a_month' => 'месец|:count месеца',
- 'm' => ':count месец|:count месеца',
- 'week' => ':count седмица|:count седмици',
- 'a_week' => 'седмица|:count седмици',
- 'w' => ':count седмица|:count седмици',
- 'day' => ':count ден|:count дни',
- 'a_day' => 'ден|:count дни',
- 'd' => ':count ден|:count дни',
- 'hour' => ':count час|:count часа',
- 'a_hour' => 'час|:count часа',
- 'h' => ':count час|:count часа',
- 'minute' => ':count минута|:count минути',
- 'a_minute' => 'минута|:count минути',
- 'min' => ':count минута|:count минути',
- 'second' => ':count секунда|:count секунди',
- 'a_second' => 'няколко секунди|:count секунди',
- 's' => ':count секунда|:count секунди',
- 'ago' => 'преди :time',
- 'from_now' => 'след :time',
- 'after' => 'след :time',
- 'before' => 'преди :time',
- 'diff_now' => 'сега',
- 'diff_today' => 'Днес',
- 'diff_today_regexp' => 'Днес(?:\\s+в)?',
- 'diff_yesterday' => 'вчера',
- 'diff_yesterday_regexp' => 'Вчера(?:\\s+в)?',
- 'diff_tomorrow' => 'утре',
- 'diff_tomorrow_regexp' => 'Утре(?:\\s+в)?',
- 'formats' => [
- 'LT' => 'H:mm',
- 'LTS' => 'H:mm:ss',
- 'L' => 'D.MM.YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY H:mm',
- 'LLLL' => 'dddd, D MMMM YYYY H:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[Днес в] LT',
- 'nextDay' => '[Утре в] LT',
- 'nextWeek' => 'dddd [в] LT',
- 'lastDay' => '[Вчера в] LT',
- 'lastWeek' => function (CarbonInterface $current) {
- switch ($current->dayOfWeek) {
- case 0:
- case 3:
- case 6:
- return '[В изминалата] dddd [в] LT';
- default:
- return '[В изминалия] dddd [в] LT';
- }
- },
- 'sameElse' => 'L',
- ],
- 'ordinal' => function ($number) {
- $lastDigit = $number % 10;
- $last2Digits = $number % 100;
- if ($number === 0) {
- return "$number-ев";
- }
- if ($last2Digits === 0) {
- return "$number-ен";
- }
- if ($last2Digits > 10 && $last2Digits < 20) {
- return "$number-ти";
- }
- if ($lastDigit === 1) {
- return "$number-ви";
- }
- if ($lastDigit === 2) {
- return "$number-ри";
- }
- if ($lastDigit === 7 || $lastDigit === 8) {
- return "$number-ми";
- }
-
- return "$number-ти";
- },
- 'months' => ['януари', 'февруари', 'март', 'април', 'май', 'юни', 'юли', 'август', 'септември', 'октомври', 'ноември', 'декември'],
- 'months_short' => ['яну', 'фев', 'мар', 'апр', 'май', 'юни', 'юли', 'авг', 'сеп', 'окт', 'ное', 'дек'],
- 'weekdays' => ['неделя', 'понеделник', 'вторник', 'сряда', 'четвъртък', 'петък', 'събота'],
- 'weekdays_short' => ['нед', 'пон', 'вто', 'сря', 'чет', 'пет', 'съб'],
- 'weekdays_min' => ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'list' => [', ', ' и '],
- 'meridiem' => ['преди обяд', 'следобед'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bg_BG.php b/vendor/nesbot/carbon/src/Carbon/Lang/bg_BG.php
deleted file mode 100644
index b53874d3..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/bg_BG.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/bg.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bhb.php b/vendor/nesbot/carbon/src/Carbon/Lang/bhb.php
deleted file mode 100644
index 49f08032..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/bhb.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/bhb_IN.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bhb_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/bhb_IN.php
deleted file mode 100644
index ab557cbf..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/bhb_IN.php
+++ /dev/null
@@ -1,26 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Samsung Electronics Co., Ltd. alexey.merzlyakov@samsung.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'D/M/YY',
- ],
- 'months' => ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
- 'months_short' => ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
- 'weekdays' => ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
- 'weekdays_short' => ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
- 'weekdays_min' => ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bho.php b/vendor/nesbot/carbon/src/Carbon/Lang/bho.php
deleted file mode 100644
index e9ed0b68..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/bho.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/bho_IN.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bho_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/bho_IN.php
deleted file mode 100644
index bc54f363..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/bho_IN.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - bhashaghar@googlegroups.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'D/M/YY',
- ],
- 'months' => ['जनवरी', 'फरवरी', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर"'],
- 'months_short' => ['जनवरी', 'फरवरी', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर"'],
- 'weekdays' => ['रविवार', 'सोमवार', 'मंगलवार', 'बुधवार', 'गुरुवार', 'शुक्रवार', 'शनिवार'],
- 'weekdays_short' => ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'],
- 'weekdays_min' => ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['पूर्वाह्न', 'अपराह्न'],
-
- 'hour' => ':count मौसम',
- 'h' => ':count मौसम',
- 'a_hour' => ':count मौसम',
-
- 'minute' => ':count कला',
- 'min' => ':count कला',
- 'a_minute' => ':count कला',
-
- 'second' => ':count सोमार',
- 's' => ':count सोमार',
- 'a_second' => ':count सोमार',
-
- 'year' => ':count साल',
- 'y' => ':count साल',
- 'a_year' => ':count साल',
-
- 'month' => ':count महिना',
- 'm' => ':count महिना',
- 'a_month' => ':count महिना',
-
- 'week' => ':count सप्ताह',
- 'w' => ':count सप्ताह',
- 'a_week' => ':count सप्ताह',
-
- 'day' => ':count दिन',
- 'd' => ':count दिन',
- 'a_day' => ':count दिन',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bi.php b/vendor/nesbot/carbon/src/Carbon/Lang/bi.php
deleted file mode 100644
index dd08128e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/bi.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/bi_VU.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bi_VU.php b/vendor/nesbot/carbon/src/Carbon/Lang/bi_VU.php
deleted file mode 100644
index 1fe77705..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/bi_VU.php
+++ /dev/null
@@ -1,53 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Samsung Electronics Co., Ltd. akhilesh.k@samsung.com & maninder1.s@samsung.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'dddd DD MMM YYYY',
- ],
- 'months' => ['jenuware', 'febwari', 'maj', 'epril', 'mei', 'jun', 'julae', 'ogis', 'septemba', 'oktoba', 'novemba', 'disemba'],
- 'months_short' => ['jen', 'feb', 'maj', 'epr', 'mei', 'jun', 'jul', 'ogi', 'sep', 'okt', 'nov', 'dis'],
- 'weekdays' => ['sande', 'mande', 'maj', 'wota', 'fraede', 'sarede'],
- 'weekdays_short' => ['san', 'man', 'maj', 'wot', 'fra', 'sar'],
- 'weekdays_min' => ['san', 'man', 'maj', 'wot', 'fra', 'sar'],
-
- 'year' => ':count seven', // less reliable
- 'y' => ':count seven', // less reliable
- 'a_year' => ':count seven', // less reliable
-
- 'month' => ':count mi', // less reliable
- 'm' => ':count mi', // less reliable
- 'a_month' => ':count mi', // less reliable
-
- 'week' => ':count sarede', // less reliable
- 'w' => ':count sarede', // less reliable
- 'a_week' => ':count sarede', // less reliable
-
- 'day' => ':count betde', // less reliable
- 'd' => ':count betde', // less reliable
- 'a_day' => ':count betde', // less reliable
-
- 'hour' => ':count klok', // less reliable
- 'h' => ':count klok', // less reliable
- 'a_hour' => ':count klok', // less reliable
-
- 'minute' => ':count smol', // less reliable
- 'min' => ':count smol', // less reliable
- 'a_minute' => ':count smol', // less reliable
-
- 'second' => ':count tu', // less reliable
- 's' => ':count tu', // less reliable
- 'a_second' => ':count tu', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bm.php b/vendor/nesbot/carbon/src/Carbon/Lang/bm.php
deleted file mode 100644
index 92822d29..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/bm.php
+++ /dev/null
@@ -1,70 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Estelle Comment
- */
-return [
- 'year' => 'san :count',
- 'a_year' => '{1}san kelen|san :count',
- 'y' => 'san :count',
- 'month' => 'kalo :count',
- 'a_month' => '{1}kalo kelen|kalo :count',
- 'm' => 'k. :count',
- 'week' => 'dɔgɔkun :count',
- 'a_week' => 'dɔgɔkun kelen',
- 'w' => 'd. :count',
- 'day' => 'tile :count',
- 'd' => 't. :count',
- 'a_day' => '{1}tile kelen|tile :count',
- 'hour' => 'lɛrɛ :count',
- 'a_hour' => '{1}lɛrɛ kelen|lɛrɛ :count',
- 'h' => 'l. :count',
- 'minute' => 'miniti :count',
- 'a_minute' => '{1}miniti kelen|miniti :count',
- 'min' => 'm. :count',
- 'second' => 'sekondi :count',
- 'a_second' => '{1}sanga dama dama|sekondi :count',
- 's' => 'sek. :count',
- 'ago' => 'a bɛ :time bɔ',
- 'from_now' => ':time kɔnɔ',
- 'diff_today' => 'Bi',
- 'diff_yesterday' => 'Kunu',
- 'diff_yesterday_regexp' => 'Kunu(?:\\s+lɛrɛ)?',
- 'diff_tomorrow' => 'Sini',
- 'diff_tomorrow_regexp' => 'Sini(?:\\s+lɛrɛ)?',
- 'diff_today_regexp' => 'Bi(?:\\s+lɛrɛ)?',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'MMMM [tile] D [san] YYYY',
- 'LLL' => 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
- 'LLLL' => 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[Bi lɛrɛ] LT',
- 'nextDay' => '[Sini lɛrɛ] LT',
- 'nextWeek' => 'dddd [don lɛrɛ] LT',
- 'lastDay' => '[Kunu lɛrɛ] LT',
- 'lastWeek' => 'dddd [tɛmɛnen lɛrɛ] LT',
- 'sameElse' => 'L',
- ],
- 'months' => ['Zanwuyekalo', 'Fewuruyekalo', 'Marisikalo', 'Awirilikalo', 'Mɛkalo', 'Zuwɛnkalo', 'Zuluyekalo', 'Utikalo', 'Sɛtanburukalo', 'ɔkutɔburukalo', 'Nowanburukalo', 'Desanburukalo'],
- 'months_short' => ['Zan', 'Few', 'Mar', 'Awi', 'Mɛ', 'Zuw', 'Zul', 'Uti', 'Sɛt', 'ɔku', 'Now', 'Des'],
- 'weekdays' => ['Kari', 'Ntɛnɛn', 'Tarata', 'Araba', 'Alamisa', 'Juma', 'Sibiri'],
- 'weekdays_short' => ['Kar', 'Ntɛ', 'Tar', 'Ara', 'Ala', 'Jum', 'Sib'],
- 'weekdays_min' => ['Ka', 'Nt', 'Ta', 'Ar', 'Al', 'Ju', 'Si'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' ni '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bn.php b/vendor/nesbot/carbon/src/Carbon/Lang/bn.php
deleted file mode 100644
index 8e147899..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/bn.php
+++ /dev/null
@@ -1,100 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Josh Soref
- * - Shakib Hossain
- * - Raju
- * - Aniruddha Adhikary
- * - JD Isaacks
- * - Saiful Islam
- * - Faisal Islam
- */
-return [
- 'year' => ':count বছর',
- 'a_year' => 'এক বছর|:count বছর',
- 'y' => '১ বছর|:count বছর',
- 'month' => ':count মাস',
- 'a_month' => 'এক মাস|:count মাস',
- 'm' => '১ মাস|:count মাস',
- 'week' => ':count সপ্তাহ',
- 'a_week' => '১ সপ্তাহ|:count সপ্তাহ',
- 'w' => '১ সপ্তাহ|:count সপ্তাহ',
- 'day' => ':count দিন',
- 'a_day' => 'এক দিন|:count দিন',
- 'd' => '১ দিন|:count দিন',
- 'hour' => ':count ঘন্টা',
- 'a_hour' => 'এক ঘন্টা|:count ঘন্টা',
- 'h' => '১ ঘন্টা|:count ঘন্টা',
- 'minute' => ':count মিনিট',
- 'a_minute' => 'এক মিনিট|:count মিনিট',
- 'min' => '১ মিনিট|:count মিনিট',
- 'second' => ':count সেকেন্ড',
- 'a_second' => 'কয়েক সেকেন্ড|:count সেকেন্ড',
- 's' => '১ সেকেন্ড|:count সেকেন্ড',
- 'ago' => ':time আগে',
- 'from_now' => ':time পরে',
- 'after' => ':time পরে',
- 'before' => ':time আগে',
- 'diff_now' => 'এখন',
- 'diff_today' => 'আজ',
- 'diff_yesterday' => 'গতকাল',
- 'diff_tomorrow' => 'আগামীকাল',
- 'period_recurrences' => ':count বার|:count বার',
- 'period_interval' => 'প্রতি :interval',
- 'period_start_date' => ':date থেকে',
- 'period_end_date' => ':date পর্যন্ত',
- 'formats' => [
- 'LT' => 'A Oh:Om সময়',
- 'LTS' => 'A Oh:Om:Os সময়',
- 'L' => 'OD/OM/OY',
- 'LL' => 'OD MMMM OY',
- 'LLL' => 'OD MMMM OY, A Oh:Om সময়',
- 'LLLL' => 'dddd, OD MMMM OY, A Oh:Om সময়',
- ],
- 'calendar' => [
- 'sameDay' => '[আজ] LT',
- 'nextDay' => '[আগামীকাল] LT',
- 'nextWeek' => 'dddd, LT',
- 'lastDay' => '[গতকাল] LT',
- 'lastWeek' => '[গত] dddd, LT',
- 'sameElse' => 'L',
- ],
- 'meridiem' => function ($hour) {
- if ($hour < 4) {
- return 'রাত';
- }
- if ($hour < 10) {
- return 'সকাল';
- }
- if ($hour < 17) {
- return 'দুপুর';
- }
- if ($hour < 20) {
- return 'বিকাল';
- }
-
- return 'রাত';
- },
- 'months' => ['জানুয়ারী', 'ফেব্রুয়ারি', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', 'নভেম্বর', 'ডিসেম্বর'],
- 'months_short' => ['জানু', 'ফেব', 'মার্চ', 'এপ্র', 'মে', 'জুন', 'জুল', 'আগ', 'সেপ্ট', 'অক্টো', 'নভে', 'ডিসে'],
- 'weekdays' => ['রবিবার', 'সোমবার', 'মঙ্গলবার', 'বুধবার', 'বৃহস্পতিবার', 'শুক্রবার', 'শনিবার'],
- 'weekdays_short' => ['রবি', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহস্পতি', 'শুক্র', 'শনি'],
- 'weekdays_min' => ['রবি', 'সোম', 'মঙ্গ', 'বুধ', 'বৃহঃ', 'শুক্র', 'শনি'],
- 'list' => [', ', ' এবং '],
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
- 'weekdays_standalone' => ['রবিবার', 'সোমবার', 'মঙ্গলবার', 'বুধবার', 'বৃহষ্পতিবার', 'শুক্রবার', 'শনিবার'],
- 'weekdays_min_standalone' => ['রঃ', 'সোঃ', 'মঃ', 'বুঃ', 'বৃঃ', 'শুঃ', 'শনি'],
- 'months_short_standalone' => ['জানুয়ারী', 'ফেব্রুয়ারী', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', 'নভেম্বর', 'ডিসেম্বর'],
- 'alt_numbers' => ['০', '১', '২', '৩', '৪', '৫', '৬', '৭', '৮', '৯'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bn_BD.php b/vendor/nesbot/carbon/src/Carbon/Lang/bn_BD.php
deleted file mode 100644
index b5b28dd1..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/bn_BD.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Ankur Group, Taneem Ahmed, Jamil Ahmed
- */
-return array_replace_recursive(require __DIR__.'/bn.php', [
- 'formats' => [
- 'L' => 'D/M/YY',
- ],
- 'months' => ['জানুয়ারী', 'ফেব্রুয়ারী', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', 'নভেম্বর', 'ডিসেম্বর'],
- 'months_short' => ['জানু', 'ফেব', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', 'নভেম্বর', 'ডিসেম্বর'],
- 'weekdays' => ['রবিবার', 'সোমবার', 'মঙ্গলবার', 'বুধবার', 'বৃহস্পতিবার', 'শুক্রবার', 'শনিবার'],
- 'weekdays_short' => ['রবি', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহঃ', 'শুক্র', 'শনি'],
- 'weekdays_min' => ['রবি', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহঃ', 'শুক্র', 'শনি'],
- 'first_day_of_week' => 5,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bn_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/bn_IN.php
deleted file mode 100644
index 8b3a50e5..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/bn_IN.php
+++ /dev/null
@@ -1,26 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/bn.php', [
- 'formats' => [
- 'L' => 'D/M/YY',
- ],
- 'months' => ['জানুয়ারী', 'ফেব্রুয়ারী', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', 'নভেম্বর', 'ডিসেম্বর'],
- 'months_short' => ['জানু', 'ফেব', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', 'নভেম্বর', 'ডিসেম্বর'],
- 'weekdays' => ['রবিবার', 'সোমবার', 'মঙ্গলবার', 'বুধবার', 'বৃহস্পতিবার', 'শুক্রবার', 'শনিবার'],
- 'weekdays_short' => ['রবি', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহস্পতি', 'শুক্র', 'শনি'],
- 'weekdays_min' => ['রবি', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহস্পতি', 'শুক্র', 'শনি'],
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bo.php b/vendor/nesbot/carbon/src/Carbon/Lang/bo.php
deleted file mode 100644
index 99e1bf4c..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/bo.php
+++ /dev/null
@@ -1,71 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Josh Soref
- * - JD Isaacks
- */
-return [
- 'year' => '{1}ལོ་གཅིག|]1,Inf[:count ལོ',
- 'month' => '{1}ཟླ་བ་གཅིག|]1,Inf[:count ཟླ་བ',
- 'week' => ':count བདུན་ཕྲག',
- 'day' => '{1}ཉིན་གཅིག|]1,Inf[:count ཉིན་',
- 'hour' => '{1}ཆུ་ཚོད་གཅིག|]1,Inf[:count ཆུ་ཚོད',
- 'minute' => '{1}སྐར་མ་གཅིག|]1,Inf[:count སྐར་མ',
- 'second' => '{1}ལམ་སང|]1,Inf[:count སྐར་ཆ།',
- 'ago' => ':time སྔན་ལ',
- 'from_now' => ':time ལ་',
- 'diff_yesterday' => 'ཁ་སང',
- 'diff_today' => 'དི་རིང',
- 'diff_tomorrow' => 'སང་ཉིན',
- 'formats' => [
- 'LT' => 'A h:mm',
- 'LTS' => 'A h:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY, A h:mm',
- 'LLLL' => 'dddd, D MMMM YYYY, A h:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[དི་རིང] LT',
- 'nextDay' => '[སང་ཉིན] LT',
- 'nextWeek' => '[བདུན་ཕྲག་རྗེས་མ], LT',
- 'lastDay' => '[ཁ་སང] LT',
- 'lastWeek' => '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
- 'sameElse' => 'L',
- ],
- 'meridiem' => function ($hour) {
- if ($hour < 4) {
- return 'མཚན་མོ';
- }
- if ($hour < 10) {
- return 'ཞོགས་ཀས';
- }
- if ($hour < 17) {
- return 'ཉིན་གུང';
- }
- if ($hour < 20) {
- return 'དགོང་དག';
- }
-
- return 'མཚན་མོ';
- },
- 'months' => ['ཟླ་བ་དང་པོ', 'ཟླ་བ་གཉིས་པ', 'ཟླ་བ་གསུམ་པ', 'ཟླ་བ་བཞི་པ', 'ཟླ་བ་ལྔ་པ', 'ཟླ་བ་དྲུག་པ', 'ཟླ་བ་བདུན་པ', 'ཟླ་བ་བརྒྱད་པ', 'ཟླ་བ་དགུ་པ', 'ཟླ་བ་བཅུ་པ', 'ཟླ་བ་བཅུ་གཅིག་པ', 'ཟླ་བ་བཅུ་གཉིས་པ'],
- 'months_short' => ['ཟླ་བ་དང་པོ', 'ཟླ་བ་གཉིས་པ', 'ཟླ་བ་གསུམ་པ', 'ཟླ་བ་བཞི་པ', 'ཟླ་བ་ལྔ་པ', 'ཟླ་བ་དྲུག་པ', 'ཟླ་བ་བདུན་པ', 'ཟླ་བ་བརྒྱད་པ', 'ཟླ་བ་དགུ་པ', 'ཟླ་བ་བཅུ་པ', 'ཟླ་བ་བཅུ་གཅིག་པ', 'ཟླ་བ་བཅུ་གཉིས་པ'],
- 'weekdays' => ['གཟའ་ཉི་མ་', 'གཟའ་ཟླ་བ་', 'གཟའ་མིག་དམར་', 'གཟའ་ལྷག་པ་', 'གཟའ་ཕུར་བུ', 'གཟའ་པ་སངས་', 'གཟའ་སྤེན་པ་'],
- 'weekdays_short' => ['ཉི་མ་', 'ཟླ་བ་', 'མིག་དམར་', 'ལྷག་པ་', 'ཕུར་བུ', 'པ་སངས་', 'སྤེན་པ་'],
- 'weekdays_min' => ['ཉི་མ་', 'ཟླ་བ་', 'མིག་དམར་', 'ལྷག་པ་', 'ཕུར་བུ', 'པ་སངས་', 'སྤེན་པ་'],
- 'list' => [', ', ' ཨནད་ '],
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
- 'months_standalone' => ['ཟླ་བ་དང་པོ་', 'ཟླ་བ་གཉིས་པ་', 'ཟླ་བ་གསུམ་པ་', 'ཟླ་བ་བཞི་པ་', 'ཟླ་བ་ལྔ་པ་', 'ཟླ་བ་དྲུག་པ་', 'ཟླ་བ་བདུན་པ་', 'ཟླ་བ་བརྒྱད་པ་', 'ཟླ་བ་དགུ་པ་', 'ཟླ་བ་བཅུ་པ་', 'ཟླ་བ་བཅུ་གཅིག་པ་', 'ཟླ་བ་བཅུ་གཉིས་པ་'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bo_CN.php b/vendor/nesbot/carbon/src/Carbon/Lang/bo_CN.php
deleted file mode 100644
index 380abb1e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/bo_CN.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/bo.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bo_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/bo_IN.php
deleted file mode 100644
index ca50d049..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/bo_IN.php
+++ /dev/null
@@ -1,29 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/bo.php', [
- 'meridiem' => ['སྔ་དྲོ་', 'ཕྱི་དྲོ་'],
- 'weekdays' => ['གཟའ་ཉི་མ་', 'གཟའ་ཟླ་བ་', 'གཟའ་མིག་དམར་', 'གཟའ་ལྷག་པ་', 'གཟའ་ཕུར་བུ་', 'གཟའ་པ་སངས་', 'གཟའ་སྤེན་པ་'],
- 'weekdays_short' => ['ཉི་མ་', 'ཟླ་བ་', 'མིག་དམར་', 'ལྷག་པ་', 'ཕུར་བུ་', 'པ་སངས་', 'སྤེན་པ་'],
- 'weekdays_min' => ['ཉི་མ་', 'ཟླ་བ་', 'མིག་དམར་', 'ལྷག་པ་', 'ཕུར་བུ་', 'པ་སངས་', 'སྤེན་པ་'],
- 'months' => ['ཟླ་བ་དང་པོ', 'ཟླ་བ་གཉིས་པ', 'ཟླ་བ་གསུམ་པ', 'ཟླ་བ་བཞི་པ', 'ཟླ་བ་ལྔ་པ', 'ཟླ་བ་དྲུག་པ', 'ཟླ་བ་བདུན་པ', 'ཟླ་བ་བརྒྱད་པ', 'ཟླ་བ་དགུ་པ', 'ཟླ་བ་བཅུ་པ', 'ཟླ་བ་བཅུ་གཅིག་པ', 'ཟླ་བ་བཅུ་གཉིས་པ'],
- 'months_short' => ['ཟླ་༡', 'ཟླ་༢', 'ཟླ་༣', 'ཟླ་༤', 'ཟླ་༥', 'ཟླ་༦', 'ཟླ་༧', 'ཟླ་༨', 'ཟླ་༩', 'ཟླ་༡༠', 'ཟླ་༡༡', 'ཟླ་༡༢'],
- 'months_standalone' => ['ཟླ་བ་དང་པོ་', 'ཟླ་བ་གཉིས་པ་', 'ཟླ་བ་གསུམ་པ་', 'ཟླ་བ་བཞི་པ་', 'ཟླ་བ་ལྔ་པ་', 'ཟླ་བ་དྲུག་པ་', 'ཟླ་བ་བདུན་པ་', 'ཟླ་བ་བརྒྱད་པ་', 'ཟླ་བ་དགུ་པ་', 'ཟླ་བ་བཅུ་པ་', 'ཟླ་བ་བཅུ་གཅིག་པ་', 'ཟླ་བ་བཅུ་གཉིས་པ་'],
- 'weekend' => [0, 0],
- 'formats' => [
- 'LT' => 'h:mm a',
- 'LTS' => 'h:mm:ss a',
- 'L' => 'YYYY-MM-DD',
- 'LL' => 'YYYY ལོའི་MMMཚེས་D',
- 'LLL' => 'སྤྱི་ལོ་YYYY MMMMའི་ཚེས་D h:mm a',
- 'LLLL' => 'YYYY MMMMའི་ཚེས་D, dddd h:mm a',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/br.php b/vendor/nesbot/carbon/src/Carbon/Lang/br.php
deleted file mode 100644
index 583472fb..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/br.php
+++ /dev/null
@@ -1,76 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - François B
- * - Serhan Apaydın
- * - JD Isaacks
- */
-return [
- 'year' => '{1}:count bloaz|{3,4,5,9}:count bloaz|[0,Inf[:count vloaz',
- 'a_year' => '{1}ur bloaz|{3,4,5,9}:count bloaz|[0,Inf[:count vloaz',
- 'month' => '{1}:count miz|{2}:count viz|[0,Inf[:count miz',
- 'a_month' => '{1}ur miz|{2}:count viz|[0,Inf[:count miz',
- 'week' => ':count sizhun',
- 'a_week' => '{1}ur sizhun|:count sizhun',
- 'day' => '{1}:count devezh|{2}:count zevezh|[0,Inf[:count devezh',
- 'a_day' => '{1}un devezh|{2}:count zevezh|[0,Inf[:count devezh',
- 'hour' => ':count eur',
- 'a_hour' => '{1}un eur|:count eur',
- 'minute' => '{1}:count vunutenn|{2}:count vunutenn|[0,Inf[:count munutenn',
- 'a_minute' => '{1}ur vunutenn|{2}:count vunutenn|[0,Inf[:count munutenn',
- 'second' => ':count eilenn',
- 'a_second' => '{1}un nebeud segondennoù|[0,Inf[:count eilenn',
- 'ago' => ':time \'zo',
- 'from_now' => 'a-benn :time',
- 'diff_now' => 'bremañ',
- 'diff_today' => 'Hiziv',
- 'diff_today_regexp' => 'Hiziv(?:\\s+da)?',
- 'diff_yesterday' => 'decʼh',
- 'diff_yesterday_regexp' => 'Dec\'h(?:\\s+da)?',
- 'diff_tomorrow' => 'warcʼhoazh',
- 'diff_tomorrow_regexp' => 'Warc\'hoazh(?:\\s+da)?',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D [a viz] MMMM YYYY',
- 'LLL' => 'D [a viz] MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D [a viz] MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[Hiziv da] LT',
- 'nextDay' => '[Warc\'hoazh da] LT',
- 'nextWeek' => 'dddd [da] LT',
- 'lastDay' => '[Dec\'h da] LT',
- 'lastWeek' => 'dddd [paset da] LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => function ($number) {
- return $number.($number === 1 ? 'añ' : 'vet');
- },
- 'months' => ['Genver', 'C\'hwevrer', 'Meurzh', 'Ebrel', 'Mae', 'Mezheven', 'Gouere', 'Eost', 'Gwengolo', 'Here', 'Du', 'Kerzu'],
- 'months_short' => ['Gen', 'C\'hwe', 'Meu', 'Ebr', 'Mae', 'Eve', 'Gou', 'Eos', 'Gwe', 'Her', 'Du', 'Ker'],
- 'weekdays' => ['Sul', 'Lun', 'Meurzh', 'Merc\'her', 'Yaou', 'Gwener', 'Sadorn'],
- 'weekdays_short' => ['Sul', 'Lun', 'Meu', 'Mer', 'Yao', 'Gwe', 'Sad'],
- 'weekdays_min' => ['Su', 'Lu', 'Me', 'Mer', 'Ya', 'Gw', 'Sa'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' hag '],
- 'meridiem' => ['A.M.', 'G.M.'],
-
- 'y' => ':count bl.',
- 'd' => ':count d',
- 'h' => ':count e',
- 'min' => ':count min',
- 's' => ':count s',
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/br_FR.php b/vendor/nesbot/carbon/src/Carbon/Lang/br_FR.php
deleted file mode 100644
index 7f541858..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/br_FR.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/br.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/brx.php b/vendor/nesbot/carbon/src/Carbon/Lang/brx.php
deleted file mode 100644
index a0a7bf9b..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/brx.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/brx_IN.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/brx_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/brx_IN.php
deleted file mode 100644
index 2d80ced2..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/brx_IN.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Red Hat Pune bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'M/D/YY',
- ],
- 'months' => ['जानुवारी', 'फेब्रुवारी', 'मार्स', 'एफ्रिल', 'मे', 'जुन', 'जुलाइ', 'आगस्थ', 'सेबथेज्ब़र', 'अखथबर', 'नबेज्ब़र', 'दिसेज्ब़र'],
- 'months_short' => ['जानुवारी', 'फेब्रुवारी', 'मार्स', 'एप्रिल', 'मे', 'जुन', 'जुलाइ', 'आगस्थ', 'सेबथेज्ब़र', 'अखथबर', 'नबेज्ब़र', 'दिसेज्ब़र'],
- 'weekdays' => ['रबिबार', 'सोबार', 'मंगलबार', 'बुदबार', 'बिसथिबार', 'सुखुरबार', 'सुनिबार'],
- 'weekdays_short' => ['रबि', 'सम', 'मंगल', 'बुद', 'बिसथि', 'सुखुर', 'सुनि'],
- 'weekdays_min' => ['रबि', 'सम', 'मंगल', 'बुद', 'बिसथि', 'सुखुर', 'सुनि'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['फुं.', 'बेलासे.'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bs.php b/vendor/nesbot/carbon/src/Carbon/Lang/bs.php
deleted file mode 100644
index e5d68083..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/bs.php
+++ /dev/null
@@ -1,97 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - bokideckonja
- * - Josh Soref
- * - François B
- * - shaishavgandhi05
- * - Serhan Apaydın
- * - JD Isaacks
- */
-
-use Carbon\CarbonInterface;
-
-return [
- 'year' => ':count godina|:count godine|:count godina',
- 'y' => ':count godina|:count godine|:count godina',
- 'month' => ':count mjesec|:count mjeseca|:count mjeseci',
- 'm' => ':count mjesec|:count mjeseca|:count mjeseci',
- 'week' => ':count sedmice|:count sedmicu|:count sedmica',
- 'w' => ':count sedmice|:count sedmicu|:count sedmica',
- 'day' => ':count dan|:count dana|:count dana',
- 'd' => ':count dan|:count dana|:count dana',
- 'hour' => ':count sat|:count sata|:count sati',
- 'h' => ':count sat|:count sata|:count sati',
- 'minute' => ':count minut|:count minuta|:count minuta',
- 'min' => ':count minut|:count minuta|:count minuta',
- 'second' => ':count sekund|:count sekunda|:count sekundi',
- 's' => ':count sekund|:count sekunda|:count sekundi',
- 'ago' => 'prije :time',
- 'from_now' => 'za :time',
- 'after' => 'nakon :time',
- 'before' => ':time ranije',
- 'diff_now' => 'sada',
- 'diff_today' => 'danas',
- 'diff_today_regexp' => 'danas(?:\\s+u)?',
- 'diff_yesterday' => 'jučer',
- 'diff_yesterday_regexp' => 'jučer(?:\\s+u)?',
- 'diff_tomorrow' => 'sutra',
- 'diff_tomorrow_regexp' => 'sutra(?:\\s+u)?',
- 'formats' => [
- 'LT' => 'H:mm',
- 'LTS' => 'H:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'D. MMMM YYYY',
- 'LLL' => 'D. MMMM YYYY H:mm',
- 'LLLL' => 'dddd, D. MMMM YYYY H:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[danas u] LT',
- 'nextDay' => '[sutra u] LT',
- 'nextWeek' => function (CarbonInterface $current) {
- switch ($current->dayOfWeek) {
- case 0:
- return '[u] [nedjelju] [u] LT';
- case 3:
- return '[u] [srijedu] [u] LT';
- case 6:
- return '[u] [subotu] [u] LT';
- default:
- return '[u] dddd [u] LT';
- }
- },
- 'lastDay' => '[jučer u] LT',
- 'lastWeek' => function (CarbonInterface $current) {
- switch ($current->dayOfWeek) {
- case 0:
- case 3:
- return '[prošlu] dddd [u] LT';
- case 6:
- return '[prošle] [subote] [u] LT';
- default:
- return '[prošli] dddd [u] LT';
- }
- },
- 'sameElse' => 'L',
- ],
- 'ordinal' => ':number.',
- 'months' => ['januar', 'februar', 'mart', 'april', 'maj', 'juni', 'juli', 'august', 'septembar', 'oktobar', 'novembar', 'decembar'],
- 'months_short' => ['jan.', 'feb.', 'mar.', 'apr.', 'maj.', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'],
- 'weekdays' => ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'],
- 'weekdays_short' => ['ned.', 'pon.', 'uto.', 'sri.', 'čet.', 'pet.', 'sub.'],
- 'weekdays_min' => ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'list' => [', ', ' i '],
- 'meridiem' => ['prijepodne', 'popodne'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bs_BA.php b/vendor/nesbot/carbon/src/Carbon/Lang/bs_BA.php
deleted file mode 100644
index 0a591176..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/bs_BA.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/bs.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bs_Cyrl.php b/vendor/nesbot/carbon/src/Carbon/Lang/bs_Cyrl.php
deleted file mode 100644
index e1a17447..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/bs_Cyrl.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/bs.php', [
- 'meridiem' => ['пре подне', 'поподне'],
- 'weekdays' => ['недјеља', 'понедјељак', 'уторак', 'сриједа', 'четвртак', 'петак', 'субота'],
- 'weekdays_short' => ['нед', 'пон', 'уто', 'сри', 'чет', 'пет', 'суб'],
- 'weekdays_min' => ['нед', 'пон', 'уто', 'сри', 'чет', 'пет', 'суб'],
- 'months' => ['јануар', 'фебруар', 'март', 'април', 'мај', 'јуни', 'јули', 'аугуст', 'септембар', 'октобар', 'новембар', 'децембар'],
- 'months_short' => ['јан', 'феб', 'мар', 'апр', 'мај', 'јун', 'јул', 'ауг', 'сеп', 'окт', 'нов', 'дец'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D.M.YYYY.',
- 'LL' => 'DD.MM.YYYY.',
- 'LLL' => 'DD. MMMM YYYY. HH:mm',
- 'LLLL' => 'dddd, DD. MMMM YYYY. HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bs_Latn.php b/vendor/nesbot/carbon/src/Carbon/Lang/bs_Latn.php
deleted file mode 100644
index b4e363e7..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/bs_Latn.php
+++ /dev/null
@@ -1,13 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/bs.php', [
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/byn.php b/vendor/nesbot/carbon/src/Carbon/Lang/byn.php
deleted file mode 100644
index 7125f3d6..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/byn.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/byn_ER.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/byn_ER.php b/vendor/nesbot/carbon/src/Carbon/Lang/byn_ER.php
deleted file mode 100644
index ad675334..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/byn_ER.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Ge'ez Frontier Foundation locales@geez.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['ልደትሪ', 'ካብኽብቲ', 'ክብላ', 'ፋጅኺሪ', 'ክቢቅሪ', 'ምኪኤል ትጓ̅ኒሪ', 'ኰርኩ', 'ማርያም ትሪ', 'ያኸኒ መሳቅለሪ', 'መተሉ', 'ምኪኤል መሽወሪ', 'ተሕሳስሪ'],
- 'months_short' => ['ልደት', 'ካብኽ', 'ክብላ', 'ፋጅኺ', 'ክቢቅ', 'ም/ት', 'ኰር', 'ማርያ', 'ያኸኒ', 'መተሉ', 'ም/ም', 'ተሕሳ'],
- 'weekdays' => ['ሰንበር ቅዳዅ', 'ሰኑ', 'ሰሊጝ', 'ለጓ ወሪ ለብዋ', 'ኣምድ', 'ኣርብ', 'ሰንበር ሽጓዅ'],
- 'weekdays_short' => ['ሰ/ቅ', 'ሰኑ', 'ሰሊጝ', 'ለጓ', 'ኣምድ', 'ኣርብ', 'ሰ/ሽ'],
- 'weekdays_min' => ['ሰ/ቅ', 'ሰኑ', 'ሰሊጝ', 'ለጓ', 'ኣምድ', 'ኣርብ', 'ሰ/ሽ'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['ፋዱስ ጃብ', 'ፋዱስ ደምቢ'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ca.php b/vendor/nesbot/carbon/src/Carbon/Lang/ca.php
deleted file mode 100644
index b8b19946..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ca.php
+++ /dev/null
@@ -1,117 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - mestremuten
- * - François B
- * - Marc Ordinas i Llopis
- * - Pere Orga
- * - JD Isaacks
- * - Quentí
- * - Víctor Díaz
- * - Xavi
- * - qcardona
- */
-
-use Carbon\CarbonInterface;
-
-return [
- 'year' => ':count any|:count anys',
- 'a_year' => 'un any|:count anys',
- 'y' => ':count any|:count anys',
- 'month' => ':count mes|:count mesos',
- 'a_month' => 'un mes|:count mesos',
- 'm' => ':count mes|:count mesos',
- 'week' => ':count setmana|:count setmanes',
- 'a_week' => 'una setmana|:count setmanes',
- 'w' => ':count setmana|:count setmanes',
- 'day' => ':count dia|:count dies',
- 'a_day' => 'un dia|:count dies',
- 'd' => ':count d',
- 'hour' => ':count hora|:count hores',
- 'a_hour' => 'una hora|:count hores',
- 'h' => ':count h',
- 'minute' => ':count minut|:count minuts',
- 'a_minute' => 'un minut|:count minuts',
- 'min' => ':count min',
- 'second' => ':count segon|:count segons',
- 'a_second' => 'uns segons|:count segons',
- 's' => ':count s',
- 'ago' => 'fa :time',
- 'from_now' => 'd\'aquí a :time',
- 'after' => ':time després',
- 'before' => ':time abans',
- 'diff_now' => 'ara mateix',
- 'diff_today' => 'avui',
- 'diff_today_regexp' => 'avui(?:\\s+a)?(?:\\s+les)?',
- 'diff_yesterday' => 'ahir',
- 'diff_yesterday_regexp' => 'ahir(?:\\s+a)?(?:\\s+les)?',
- 'diff_tomorrow' => 'demà',
- 'diff_tomorrow_regexp' => 'demà(?:\\s+a)?(?:\\s+les)?',
- 'diff_before_yesterday' => 'abans d\'ahir',
- 'diff_after_tomorrow' => 'demà passat',
- 'period_recurrences' => ':count cop|:count cops',
- 'period_interval' => 'cada :interval',
- 'period_start_date' => 'de :date',
- 'period_end_date' => 'fins a :date',
- 'formats' => [
- 'LT' => 'H:mm',
- 'LTS' => 'H:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM [de] YYYY',
- 'LLL' => 'D MMMM [de] YYYY [a les] H:mm',
- 'LLLL' => 'dddd D MMMM [de] YYYY [a les] H:mm',
- ],
- 'calendar' => [
- 'sameDay' => function (CarbonInterface $current) {
- return '[avui a '.($current->hour !== 1 ? 'les' : 'la').'] LT';
- },
- 'nextDay' => function (CarbonInterface $current) {
- return '[demà a '.($current->hour !== 1 ? 'les' : 'la').'] LT';
- },
- 'nextWeek' => function (CarbonInterface $current) {
- return 'dddd [a '.($current->hour !== 1 ? 'les' : 'la').'] LT';
- },
- 'lastDay' => function (CarbonInterface $current) {
- return '[ahir a '.($current->hour !== 1 ? 'les' : 'la').'] LT';
- },
- 'lastWeek' => function (CarbonInterface $current) {
- return '[el] dddd [passat a '.($current->hour !== 1 ? 'les' : 'la').'] LT';
- },
- 'sameElse' => 'L',
- ],
- 'ordinal' => function ($number, $period) {
- return $number.(
- ($period === 'w' || $period === 'W') ? 'a' : (
- ($number === 1) ? 'r' : (
- ($number === 2) ? 'n' : (
- ($number === 3) ? 'r' : (
- ($number === 4) ? 't' : 'è'
- )
- )
- )
- )
- );
- },
- 'months' => ['de gener', 'de febrer', 'de març', 'd\'abril', 'de maig', 'de juny', 'de juliol', 'd\'agost', 'de setembre', 'd\'octubre', 'de novembre', 'de desembre'],
- 'months_standalone' => ['gener', 'febrer', 'març', 'abril', 'maig', 'juny', 'juliol', 'agost', 'setembre', 'octubre', 'novembre', 'desembre'],
- 'months_short' => ['de gen.', 'de febr.', 'de març', 'd\'abr.', 'de maig', 'de juny', 'de jul.', 'd\'ag.', 'de set.', 'd\'oct.', 'de nov.', 'de des.'],
- 'months_short_standalone' => ['gen.', 'febr.', 'març', 'abr.', 'maig', 'juny', 'jul.', 'ag.', 'set.', 'oct.', 'nov.', 'des.'],
- 'months_regexp' => '/(D[oD]?[\s,]+MMMM?|L{2,4}|l{2,4})/',
- 'weekdays' => ['diumenge', 'dilluns', 'dimarts', 'dimecres', 'dijous', 'divendres', 'dissabte'],
- 'weekdays_short' => ['dg.', 'dl.', 'dt.', 'dc.', 'dj.', 'dv.', 'ds.'],
- 'weekdays_min' => ['dg', 'dl', 'dt', 'dc', 'dj', 'dv', 'ds'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' i '],
- 'meridiem' => ['a. m.', 'p. m.'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ca_AD.php b/vendor/nesbot/carbon/src/Carbon/Lang/ca_AD.php
deleted file mode 100644
index 861acd2a..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ca_AD.php
+++ /dev/null
@@ -1,13 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/ca.php', [
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ca_ES.php b/vendor/nesbot/carbon/src/Carbon/Lang/ca_ES.php
deleted file mode 100644
index 50049786..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ca_ES.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/ca.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ca_ES_Valencia.php b/vendor/nesbot/carbon/src/Carbon/Lang/ca_ES_Valencia.php
deleted file mode 100644
index 861acd2a..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ca_ES_Valencia.php
+++ /dev/null
@@ -1,13 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/ca.php', [
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ca_FR.php b/vendor/nesbot/carbon/src/Carbon/Lang/ca_FR.php
deleted file mode 100644
index 861acd2a..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ca_FR.php
+++ /dev/null
@@ -1,13 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/ca.php', [
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ca_IT.php b/vendor/nesbot/carbon/src/Carbon/Lang/ca_IT.php
deleted file mode 100644
index 861acd2a..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ca_IT.php
+++ /dev/null
@@ -1,13 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/ca.php', [
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ccp.php b/vendor/nesbot/carbon/src/Carbon/Lang/ccp.php
deleted file mode 100644
index 99c1dcac..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ccp.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'weekdays' => ['𑄢𑄧𑄝𑄨𑄝𑄢𑄴', '𑄥𑄧𑄟𑄴𑄝𑄢𑄴', '𑄟𑄧𑄁𑄉𑄧𑄣𑄴𑄝𑄢𑄴', '𑄝𑄪𑄖𑄴𑄝𑄢𑄴', '𑄝𑄳𑄢𑄨𑄥𑄪𑄛𑄴𑄝𑄢𑄴', '𑄥𑄪𑄇𑄴𑄇𑄮𑄢𑄴𑄝𑄢𑄴', '𑄥𑄧𑄚𑄨𑄝𑄢𑄴'],
- 'weekdays_short' => ['𑄢𑄧𑄝𑄨', '𑄥𑄧𑄟𑄴', '𑄟𑄧𑄁𑄉𑄧𑄣𑄴', '𑄝𑄪𑄖𑄴', '𑄝𑄳𑄢𑄨𑄥𑄪𑄛𑄴', '𑄥𑄪𑄇𑄴𑄇𑄮𑄢𑄴', '𑄥𑄧𑄚𑄨'],
- 'weekdays_min' => ['𑄢𑄧𑄝𑄨', '𑄥𑄧𑄟𑄴', '𑄟𑄧𑄁𑄉𑄧𑄣𑄴', '𑄝𑄪𑄖𑄴', '𑄝𑄳𑄢𑄨𑄥𑄪𑄛𑄴', '𑄥𑄪𑄇𑄴𑄇𑄮𑄢𑄴', '𑄥𑄧𑄚𑄨'],
- 'months' => ['𑄎𑄚𑄪𑄠𑄢𑄨', '𑄜𑄬𑄛𑄴𑄝𑄳𑄢𑄪𑄠𑄢𑄨', '𑄟𑄢𑄴𑄌𑄧', '𑄃𑄬𑄛𑄳𑄢𑄨𑄣𑄴', '𑄟𑄬', '𑄎𑄪𑄚𑄴', '𑄎𑄪𑄣𑄭', '𑄃𑄉𑄧𑄌𑄴𑄑𑄴', '𑄥𑄬𑄛𑄴𑄑𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄃𑄧𑄇𑄴𑄑𑄬𑄝𑄧𑄢𑄴', '𑄚𑄧𑄞𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄓𑄨𑄥𑄬𑄟𑄴𑄝𑄧𑄢𑄴'],
- 'months_short' => ['𑄎𑄚𑄪', '𑄜𑄬𑄛𑄴', '𑄟𑄢𑄴𑄌𑄧', '𑄃𑄬𑄛𑄳𑄢𑄨𑄣𑄴', '𑄟𑄬', '𑄎𑄪𑄚𑄴', '𑄎𑄪𑄣𑄭', '𑄃𑄉𑄧𑄌𑄴𑄑𑄴', '𑄥𑄬𑄛𑄴𑄑𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄃𑄧𑄇𑄴𑄑𑄮𑄝𑄧𑄢𑄴', '𑄚𑄧𑄞𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄓𑄨𑄥𑄬𑄟𑄴𑄝𑄢𑄴'],
- 'months_short_standalone' => ['𑄎𑄚𑄪𑄠𑄢𑄨', '𑄜𑄬𑄛𑄴𑄝𑄳𑄢𑄪𑄠𑄢𑄨', '𑄟𑄢𑄴𑄌𑄧', '𑄃𑄬𑄛𑄳𑄢𑄨𑄣𑄴', '𑄟𑄬', '𑄎𑄪𑄚𑄴', '𑄎𑄪𑄣𑄭', '𑄃𑄉𑄧𑄌𑄴𑄑𑄴', '𑄥𑄬𑄛𑄴𑄑𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄃𑄧𑄇𑄴𑄑𑄮𑄝𑄧𑄢𑄴', '𑄚𑄧𑄞𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄓𑄨𑄥𑄬𑄟𑄴𑄝𑄧𑄢𑄴'],
- 'formats' => [
- 'LT' => 'h:mm a',
- 'LTS' => 'h:mm:ss a',
- 'L' => 'D/M/YYYY',
- 'LL' => 'D MMM, YYYY',
- 'LLL' => 'D MMMM, YYYY h:mm a',
- 'LLLL' => 'dddd, D MMMM, YYYY h:mm a',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ccp_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/ccp_IN.php
deleted file mode 100644
index c1fa8af0..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ccp_IN.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/ccp.php', [
- 'weekend' => [0, 0],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ce.php b/vendor/nesbot/carbon/src/Carbon/Lang/ce.php
deleted file mode 100644
index f99f6ffd..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ce.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/ce_RU.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ce_RU.php b/vendor/nesbot/carbon/src/Carbon/Lang/ce_RU.php
deleted file mode 100644
index f7698562..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ce_RU.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - ANCHR
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'YYYY.DD.MM',
- ],
- 'months' => ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],
- 'months_short' => ['янв', 'фев', 'мар', 'апр', 'май', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек'],
- 'weekdays' => ['КӀиранан де', 'Оршотан де', 'Шинарин де', 'Кхаарин де', 'Еарин де', 'ПӀераскан де', 'Шот де'],
- 'weekdays_short' => ['КӀ', 'Ор', 'Ши', 'Кх', 'Еа', 'ПӀ', 'Шо'],
- 'weekdays_min' => ['КӀ', 'Ор', 'Ши', 'Кх', 'Еа', 'ПӀ', 'Шо'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
-
- 'year' => ':count шо',
- 'y' => ':count шо',
- 'a_year' => ':count шо',
-
- 'month' => ':count бутт',
- 'm' => ':count бутт',
- 'a_month' => ':count бутт',
-
- 'week' => ':count кӏира',
- 'w' => ':count кӏира',
- 'a_week' => ':count кӏира',
-
- 'day' => ':count де',
- 'd' => ':count де',
- 'a_day' => ':count де',
-
- 'hour' => ':count сахьт',
- 'h' => ':count сахьт',
- 'a_hour' => ':count сахьт',
-
- 'minute' => ':count минот',
- 'min' => ':count минот',
- 'a_minute' => ':count минот',
-
- 'second' => ':count секунд',
- 's' => ':count секунд',
- 'a_second' => ':count секунд',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/cgg.php b/vendor/nesbot/carbon/src/Carbon/Lang/cgg.php
deleted file mode 100644
index 09bcc1c7..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/cgg.php
+++ /dev/null
@@ -1,31 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'weekdays' => ['Sande', 'Orwokubanza', 'Orwakabiri', 'Orwakashatu', 'Orwakana', 'Orwakataano', 'Orwamukaaga'],
- 'weekdays_short' => ['SAN', 'ORK', 'OKB', 'OKS', 'OKN', 'OKT', 'OMK'],
- 'weekdays_min' => ['SAN', 'ORK', 'OKB', 'OKS', 'OKN', 'OKT', 'OMK'],
- 'months' => ['Okwokubanza', 'Okwakabiri', 'Okwakashatu', 'Okwakana', 'Okwakataana', 'Okwamukaaga', 'Okwamushanju', 'Okwamunaana', 'Okwamwenda', 'Okwaikumi', 'Okwaikumi na kumwe', 'Okwaikumi na ibiri'],
- 'months_short' => ['KBZ', 'KBR', 'KST', 'KKN', 'KTN', 'KMK', 'KMS', 'KMN', 'KMW', 'KKM', 'KNK', 'KNB'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
-
- 'day' => ':count ruhanga', // less reliable
- 'd' => ':count ruhanga', // less reliable
- 'a_day' => ':count ruhanga', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/chr.php b/vendor/nesbot/carbon/src/Carbon/Lang/chr.php
deleted file mode 100644
index e26190f1..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/chr.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/chr_US.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/chr_US.php b/vendor/nesbot/carbon/src/Carbon/Lang/chr_US.php
deleted file mode 100644
index 371353ef..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/chr_US.php
+++ /dev/null
@@ -1,58 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Cherokee Nation Joseph Erb josepherb7@gmail.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'MM/DD/YYYY',
- ],
- 'months' => ['ᎤᏃᎸᏔᏅ', 'ᎧᎦᎵ', 'ᎠᏅᏱ', 'ᎧᏬᏂ', 'ᎠᏂᏍᎬᏘ', 'ᏕᎭᎷᏱ', 'ᎫᏰᏉᏂ', 'ᎦᎶᏂ', 'ᏚᎵᏍᏗ', 'ᏚᏂᏅᏗ', 'ᏅᏓᏕᏆ', 'ᎥᏍᎩᏱ'],
- 'months_short' => ['ᎤᏃ', 'ᎧᎦ', 'ᎠᏅ', 'ᎧᏬ', 'ᎠᏂ', 'ᏕᎭ', 'ᎫᏰ', 'ᎦᎶ', 'ᏚᎵ', 'ᏚᏂ', 'ᏅᏓ', 'ᎥᏍ'],
- 'weekdays' => ['ᎤᎾᏙᏓᏆᏍᎬ', 'ᎤᎾᏙᏓᏉᏅᎯ', 'ᏔᎵᏁᎢᎦ', 'ᏦᎢᏁᎢᎦ', 'ᏅᎩᏁᎢᎦ', 'ᏧᎾᎩᎶᏍᏗ', 'ᎤᎾᏙᏓᏈᏕᎾ'],
- 'weekdays_short' => ['ᏆᏍᎬ', 'ᏉᏅᎯ', 'ᏔᎵᏁ', 'ᏦᎢᏁ', 'ᏅᎩᏁ', 'ᏧᎾᎩ', 'ᏈᏕᎾ'],
- 'weekdays_min' => ['ᏆᏍᎬ', 'ᏉᏅᎯ', 'ᏔᎵᏁ', 'ᏦᎢᏁ', 'ᏅᎩᏁ', 'ᏧᎾᎩ', 'ᏈᏕᎾ'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['ᏌᎾᎴ', 'ᏒᎯᏱᎢᏗᏢ', 'ꮜꮎꮄ', 'ꮢꭿᏹꭲꮧꮲ'],
-
- 'second' => ':count ᏐᎢ', // less reliable
- 's' => ':count ᏐᎢ', // less reliable
- 'a_second' => ':count ᏐᎢ', // less reliable
-
- 'year' => ':count ᏑᏕᏘᏴᏓ',
- 'y' => ':count ᏑᏕᏘᏴᏓ',
- 'a_year' => ':count ᏑᏕᏘᏴᏓ',
-
- 'month' => ':count ᏏᏅᏙ',
- 'm' => ':count ᏏᏅᏙ',
- 'a_month' => ':count ᏏᏅᏙ',
-
- 'week' => ':count ᏑᎾᏙᏓᏆᏍᏗ',
- 'w' => ':count ᏑᎾᏙᏓᏆᏍᏗ',
- 'a_week' => ':count ᏑᎾᏙᏓᏆᏍᏗ',
-
- 'day' => ':count ᎢᎦ',
- 'd' => ':count ᎢᎦ',
- 'a_day' => ':count ᎢᎦ',
-
- 'hour' => ':count ᏑᏟᎶᏛ',
- 'h' => ':count ᏑᏟᎶᏛ',
- 'a_hour' => ':count ᏑᏟᎶᏛ',
-
- 'minute' => ':count ᎢᏯᏔᏬᏍᏔᏅ',
- 'min' => ':count ᎢᏯᏔᏬᏍᏔᏅ',
- 'a_minute' => ':count ᎢᏯᏔᏬᏍᏔᏅ',
-
- 'ago' => ':time ᏥᎨᏒ',
- 'from_now' => 'ᎾᎿ :time',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/cmn.php b/vendor/nesbot/carbon/src/Carbon/Lang/cmn.php
deleted file mode 100644
index 80b1d694..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/cmn.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/cmn_TW.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/cmn_TW.php b/vendor/nesbot/carbon/src/Carbon/Lang/cmn_TW.php
deleted file mode 100644
index 7e43f9de..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/cmn_TW.php
+++ /dev/null
@@ -1,54 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'YYYY年MM月DD號',
- ],
- 'months' => ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
- 'months_short' => [' 1月', ' 2月', ' 3月', ' 4月', ' 5月', ' 6月', ' 7月', ' 8月', ' 9月', '10月', '11月', '12月'],
- 'weekdays' => ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],
- 'weekdays_short' => ['日', '一', '二', '三', '四', '五', '六'],
- 'weekdays_min' => ['日', '一', '二', '三', '四', '五', '六'],
- 'meridiem' => ['上午', '下午'],
-
- 'year' => ':count 年',
- 'y' => ':count 年',
- 'a_year' => ':count 年',
-
- 'month' => ':count 月',
- 'm' => ':count 月',
- 'a_month' => ':count 月',
-
- 'week' => ':count 周',
- 'w' => ':count 周',
- 'a_week' => ':count 周',
-
- 'day' => ':count 白天',
- 'd' => ':count 白天',
- 'a_day' => ':count 白天',
-
- 'hour' => ':count 小时',
- 'h' => ':count 小时',
- 'a_hour' => ':count 小时',
-
- 'minute' => ':count 分钟',
- 'min' => ':count 分钟',
- 'a_minute' => ':count 分钟',
-
- 'second' => ':count 秒',
- 's' => ':count 秒',
- 'a_second' => ':count 秒',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/crh.php b/vendor/nesbot/carbon/src/Carbon/Lang/crh.php
deleted file mode 100644
index a1d7ce63..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/crh.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/crh_UA.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/crh_UA.php b/vendor/nesbot/carbon/src/Carbon/Lang/crh_UA.php
deleted file mode 100644
index 05139331..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/crh_UA.php
+++ /dev/null
@@ -1,56 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Reşat SABIQ tilde.birlik@gmail.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD.MM.YYYY',
- ],
- 'months' => ['Yanvar', 'Fevral', 'Mart', 'Aprel', 'Mayıs', 'İyun', 'İyul', 'Avgust', 'Sentâbr', 'Oktâbr', 'Noyabr', 'Dekabr'],
- 'months_short' => ['Yan', 'Fev', 'Mar', 'Apr', 'May', 'İyn', 'İyl', 'Avg', 'Sen', 'Okt', 'Noy', 'Dek'],
- 'weekdays' => ['Bazar', 'Bazarertesi', 'Salı', 'Çarşembe', 'Cumaaqşamı', 'Cuma', 'Cumaertesi'],
- 'weekdays_short' => ['Baz', 'Ber', 'Sal', 'Çar', 'Caq', 'Cum', 'Cer'],
- 'weekdays_min' => ['Baz', 'Ber', 'Sal', 'Çar', 'Caq', 'Cum', 'Cer'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['ÜE', 'ÜS'],
-
- 'year' => ':count yıl',
- 'y' => ':count yıl',
- 'a_year' => ':count yıl',
-
- 'month' => ':count ay',
- 'm' => ':count ay',
- 'a_month' => ':count ay',
-
- 'week' => ':count afta',
- 'w' => ':count afta',
- 'a_week' => ':count afta',
-
- 'day' => ':count kün',
- 'd' => ':count kün',
- 'a_day' => ':count kün',
-
- 'hour' => ':count saat',
- 'h' => ':count saat',
- 'a_hour' => ':count saat',
-
- 'minute' => ':count daqqa',
- 'min' => ':count daqqa',
- 'a_minute' => ':count daqqa',
-
- 'second' => ':count ekinci',
- 's' => ':count ekinci',
- 'a_second' => ':count ekinci',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/cs.php b/vendor/nesbot/carbon/src/Carbon/Lang/cs.php
deleted file mode 100644
index 8cff9a01..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/cs.php
+++ /dev/null
@@ -1,122 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Philippe Vaucher
- * - Jakub Tesinsky
- * - Martin Suja
- * - Nikos Timiopulos
- * - Bohuslav Blín
- * - Tsutomu Kuroda
- * - tjku
- * - Lukas Svoboda
- * - Max Melentiev
- * - Juanito Fatas
- * - Akira Matsuda
- * - Christopher Dell
- * - Václav Pávek
- * - CodeSkills
- * - Tlapi
- * - newman101
- * - Petr Kadlec
- * - tommaskraus
- * - Karel Sommer (calvera)
- */
-$za = function ($time) {
- return 'za '.strtr($time, [
- 'hodina' => 'hodinu',
- 'minuta' => 'minutu',
- 'sekunda' => 'sekundu',
- ]);
-};
-
-$pred = function ($time) {
- $time = strtr($time, [
- 'hodina' => 'hodinou',
- 'minuta' => 'minutou',
- 'sekunda' => 'sekundou',
- ]);
- $time = preg_replace('/hodiny?(?!\w)/', 'hodinami', $time);
- $time = preg_replace('/minuty?(?!\w)/', 'minutami', $time);
- $time = preg_replace('/sekundy?(?!\w)/', 'sekundami', $time);
-
- return "před $time";
-};
-
-return [
- 'year' => ':count rok|:count roky|:count let',
- 'y' => ':count rok|:count roky|:count let',
- 'a_year' => 'rok|:count roky|:count let',
- 'month' => ':count měsíc|:count měsíce|:count měsíců',
- 'm' => ':count měs.',
- 'a_month' => 'měsíc|:count měsíce|:count měsíců',
- 'week' => ':count týden|:count týdny|:count týdnů',
- 'w' => ':count týd.',
- 'a_week' => 'týden|:count týdny|:count týdnů',
- 'day' => ':count den|:count dny|:count dní',
- 'd' => ':count den|:count dny|:count dní',
- 'a_day' => 'den|:count dny|:count dní',
- 'hour' => ':count hodina|:count hodiny|:count hodin',
- 'h' => ':count hod.',
- 'a_hour' => 'hodina|:count hodiny|:count hodin',
- 'minute' => ':count minuta|:count minuty|:count minut',
- 'min' => ':count min.',
- 'a_minute' => 'minuta|:count minuty|:count minut',
- 'second' => ':count sekunda|:count sekundy|:count sekund',
- 's' => ':count sek.',
- 'a_second' => 'pár sekund|:count sekundy|:count sekund',
-
- 'month_ago' => ':count měsícem|:count měsíci|:count měsíci',
- 'a_month_ago' => 'měsícem|:count měsíci|:count měsíci',
- 'day_ago' => ':count dnem|:count dny|:count dny',
- 'a_day_ago' => 'dnem|:count dny|:count dny',
- 'week_ago' => ':count týdnem|:count týdny|:count týdny',
- 'a_week_ago' => 'týdnem|:count týdny|:count týdny',
- 'year_ago' => ':count rokem|:count roky|:count lety',
- 'y_ago' => ':count rok.|:count rok.|:count let.',
- 'a_year_ago' => 'rokem|:count roky|:count lety',
-
- 'month_before' => ':count měsícem|:count měsíci|:count měsíci',
- 'a_month_before' => 'měsícem|:count měsíci|:count měsíci',
- 'day_before' => ':count dnem|:count dny|:count dny',
- 'a_day_before' => 'dnem|:count dny|:count dny',
- 'week_before' => ':count týdnem|:count týdny|:count týdny',
- 'a_week_before' => 'týdnem|:count týdny|:count týdny',
- 'year_before' => ':count rokem|:count roky|:count lety',
- 'y_before' => ':count rok.|:count rok.|:count let.',
- 'a_year_before' => 'rokem|:count roky|:count lety',
-
- 'ago' => $pred,
- 'from_now' => $za,
- 'before' => $pred,
- 'after' => $za,
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'months' => ['leden', 'únor', 'březen', 'duben', 'květen', 'červen', 'červenec', 'srpen', 'září', 'říjen', 'listopad', 'prosinec'],
- 'months_short' => ['led', 'úno', 'bře', 'dub', 'kvě', 'čvn', 'čvc', 'srp', 'zář', 'říj', 'lis', 'pro'],
- 'weekdays' => ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota'],
- 'weekdays_short' => ['ned', 'pon', 'úte', 'stř', 'čtv', 'pát', 'sob'],
- 'weekdays_min' => ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'],
- 'list' => [', ', ' a '],
- 'diff_now' => 'nyní',
- 'diff_yesterday' => 'včera',
- 'diff_tomorrow' => 'zítra',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD. MM. YYYY',
- 'LL' => 'D. MMMM YYYY',
- 'LLL' => 'D. MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D. MMMM YYYY HH:mm',
- ],
- 'meridiem' => ['dopoledne', 'odpoledne'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/cs_CZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/cs_CZ.php
deleted file mode 100644
index ea2517e8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/cs_CZ.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/cs.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/csb.php b/vendor/nesbot/carbon/src/Carbon/Lang/csb.php
deleted file mode 100644
index a35d2815..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/csb.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/csb_PL.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/csb_PL.php b/vendor/nesbot/carbon/src/Carbon/Lang/csb_PL.php
deleted file mode 100644
index 25e0ca89..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/csb_PL.php
+++ /dev/null
@@ -1,41 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - csb_PL locale Michal Ostrowski bug-glibc-locales@gnu.org
- */
-return [
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'YYYY-MM-DD',
- 'LL' => 'MMMM DD, YYYY',
- 'LLL' => 'DD MMM HH:mm',
- 'LLLL' => 'MMMM DD, YYYY HH:mm',
- ],
- 'months' => ['stëcznika', 'gromicznika', 'strëmiannika', 'łżëkwiata', 'maja', 'czerwińca', 'lëpińca', 'zélnika', 'séwnika', 'rujana', 'lëstopadnika', 'gòdnika'],
- 'months_short' => ['stë', 'gro', 'str', 'łżë', 'maj', 'cze', 'lëp', 'zél', 'séw', 'ruj', 'lës', 'gòd'],
- 'weekdays' => ['niedzela', 'pòniedzôłk', 'wtórk', 'strzoda', 'czwiôrtk', 'piątk', 'sobòta'],
- 'weekdays_short' => ['nie', 'pòn', 'wtó', 'str', 'czw', 'pią', 'sob'],
- 'weekdays_min' => ['nie', 'pòn', 'wtó', 'str', 'czw', 'pią', 'sob'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' a téż '],
- 'two_words_connector' => ' a téż ',
- 'year' => ':count rok',
- 'month' => ':count miesiąc',
- 'week' => ':count tidzéń',
- 'day' => ':count dzéń',
- 'hour' => ':count gòdzëna',
- 'minute' => ':count minuta',
- 'second' => ':count sekunda',
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/cu.php b/vendor/nesbot/carbon/src/Carbon/Lang/cu.php
deleted file mode 100644
index d6d13128..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/cu.php
+++ /dev/null
@@ -1,52 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'months' => ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'M12'],
- 'months_short' => ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'M12'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'YYYY-MM-DD',
- 'LL' => 'YYYY MMM D',
- 'LLL' => 'YYYY MMMM D HH:mm',
- 'LLLL' => 'YYYY MMMM D, dddd HH:mm',
- ],
-
- 'year' => ':count лѣто',
- 'y' => ':count лѣто',
- 'a_year' => ':count лѣто',
-
- 'month' => ':count мѣсѧць',
- 'm' => ':count мѣсѧць',
- 'a_month' => ':count мѣсѧць',
-
- 'week' => ':count сєдмица',
- 'w' => ':count сєдмица',
- 'a_week' => ':count сєдмица',
-
- 'day' => ':count дьнь',
- 'd' => ':count дьнь',
- 'a_day' => ':count дьнь',
-
- 'hour' => ':count година',
- 'h' => ':count година',
- 'a_hour' => ':count година',
-
- 'minute' => ':count малъ', // less reliable
- 'min' => ':count малъ', // less reliable
- 'a_minute' => ':count малъ', // less reliable
-
- 'second' => ':count въторъ',
- 's' => ':count въторъ',
- 'a_second' => ':count въторъ',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/cv.php b/vendor/nesbot/carbon/src/Carbon/Lang/cv.php
deleted file mode 100644
index 8aeb73aa..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/cv.php
+++ /dev/null
@@ -1,65 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Josh Soref
- * - François B
- * - JD Isaacks
- */
-return [
- 'year' => ':count ҫул',
- 'a_year' => '{1}пӗр ҫул|:count ҫул',
- 'month' => ':count уйӑх',
- 'a_month' => '{1}пӗр уйӑх|:count уйӑх',
- 'week' => ':count эрне',
- 'a_week' => '{1}пӗр эрне|:count эрне',
- 'day' => ':count кун',
- 'a_day' => '{1}пӗр кун|:count кун',
- 'hour' => ':count сехет',
- 'a_hour' => '{1}пӗр сехет|:count сехет',
- 'minute' => ':count минут',
- 'a_minute' => '{1}пӗр минут|:count минут',
- 'second' => ':count ҫеккунт',
- 'a_second' => '{1}пӗр-ик ҫеккунт|:count ҫеккунт',
- 'ago' => ':time каялла',
- 'from_now' => function ($time) {
- return $time.(preg_match('/сехет$/u', $time) ? 'рен' : (preg_match('/ҫул/u', $time) ? 'тан' : 'ран'));
- },
- 'diff_yesterday' => 'Ӗнер',
- 'diff_today' => 'Паян',
- 'diff_tomorrow' => 'Ыран',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD-MM-YYYY',
- 'LL' => 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
- 'LLL' => 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
- 'LLLL' => 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[Паян] LT [сехетре]',
- 'nextDay' => '[Ыран] LT [сехетре]',
- 'nextWeek' => '[Ҫитес] dddd LT [сехетре]',
- 'lastDay' => '[Ӗнер] LT [сехетре]',
- 'lastWeek' => '[Иртнӗ] dddd LT [сехетре]',
- 'sameElse' => 'L',
- ],
- 'ordinal' => ':number-мӗш',
- 'months' => ['кӑрлач', 'нарӑс', 'пуш', 'ака', 'май', 'ҫӗртме', 'утӑ', 'ҫурла', 'авӑн', 'юпа', 'чӳк', 'раштав'],
- 'months_short' => ['кӑр', 'нар', 'пуш', 'ака', 'май', 'ҫӗр', 'утӑ', 'ҫур', 'авн', 'юпа', 'чӳк', 'раш'],
- 'weekdays' => ['вырсарникун', 'тунтикун', 'ытларикун', 'юнкун', 'кӗҫнерникун', 'эрнекун', 'шӑматкун'],
- 'weekdays_short' => ['выр', 'тун', 'ытл', 'юн', 'кӗҫ', 'эрн', 'шӑм'],
- 'weekdays_min' => ['вр', 'тн', 'ыт', 'юн', 'кҫ', 'эр', 'шм'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'list' => [', ', ' тата '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/cv_RU.php b/vendor/nesbot/carbon/src/Carbon/Lang/cv_RU.php
deleted file mode 100644
index 197bd8d3..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/cv_RU.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/cv.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/cy.php b/vendor/nesbot/carbon/src/Carbon/Lang/cy.php
deleted file mode 100644
index ab7c45a4..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/cy.php
+++ /dev/null
@@ -1,79 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - François B
- * - JD Isaacks
- * - Daniel Monaghan
- */
-return [
- 'year' => '{1}blwyddyn|]1,Inf[:count flynedd',
- 'y' => ':countbl',
- 'month' => '{1}mis|]1,Inf[:count mis',
- 'm' => ':countmi',
- 'week' => ':count wythnos',
- 'w' => ':countw',
- 'day' => '{1}diwrnod|]1,Inf[:count diwrnod',
- 'd' => ':countd',
- 'hour' => '{1}awr|]1,Inf[:count awr',
- 'h' => ':counth',
- 'minute' => '{1}munud|]1,Inf[:count munud',
- 'min' => ':countm',
- 'second' => '{1}ychydig eiliadau|]1,Inf[:count eiliad',
- 's' => ':counts',
- 'ago' => ':time yn ôl',
- 'from_now' => 'mewn :time',
- 'after' => ':time ar ôl',
- 'before' => ':time o\'r blaen',
- 'diff_now' => 'nawr',
- 'diff_today' => 'Heddiw',
- 'diff_today_regexp' => 'Heddiw(?:\\s+am)?',
- 'diff_yesterday' => 'ddoe',
- 'diff_yesterday_regexp' => 'Ddoe(?:\\s+am)?',
- 'diff_tomorrow' => 'yfory',
- 'diff_tomorrow_regexp' => 'Yfory(?:\\s+am)?',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[Heddiw am] LT',
- 'nextDay' => '[Yfory am] LT',
- 'nextWeek' => 'dddd [am] LT',
- 'lastDay' => '[Ddoe am] LT',
- 'lastWeek' => 'dddd [diwethaf am] LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => function ($number) {
- return $number.(
- $number > 20
- ? (\in_array($number, [40, 50, 60, 80, 100]) ? 'fed' : 'ain')
- : ([
- '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed
- 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed', // 11eg to 20fed
- ])[$number] ?? ''
- );
- },
- 'months' => ['Ionawr', 'Chwefror', 'Mawrth', 'Ebrill', 'Mai', 'Mehefin', 'Gorffennaf', 'Awst', 'Medi', 'Hydref', 'Tachwedd', 'Rhagfyr'],
- 'months_short' => ['Ion', 'Chwe', 'Maw', 'Ebr', 'Mai', 'Meh', 'Gor', 'Aws', 'Med', 'Hyd', 'Tach', 'Rhag'],
- 'weekdays' => ['Dydd Sul', 'Dydd Llun', 'Dydd Mawrth', 'Dydd Mercher', 'Dydd Iau', 'Dydd Gwener', 'Dydd Sadwrn'],
- 'weekdays_short' => ['Sul', 'Llun', 'Maw', 'Mer', 'Iau', 'Gwe', 'Sad'],
- 'weekdays_min' => ['Su', 'Ll', 'Ma', 'Me', 'Ia', 'Gw', 'Sa'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' a '],
- 'meridiem' => ['yb', 'yh'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/cy_GB.php b/vendor/nesbot/carbon/src/Carbon/Lang/cy_GB.php
deleted file mode 100644
index 2c8148d0..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/cy_GB.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/cy.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/da.php b/vendor/nesbot/carbon/src/Carbon/Lang/da.php
deleted file mode 100644
index 4e6640a6..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/da.php
+++ /dev/null
@@ -1,80 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Rune Mønnike
- * - François B
- * - codenhagen
- * - JD Isaacks
- * - Jens Herlevsen
- * - Ulrik McArdle (mcardle)
- * - Frederik Sauer (FrittenKeeZ)
- */
-return [
- 'year' => ':count år|:count år',
- 'a_year' => 'et år|:count år',
- 'y' => ':count år|:count år',
- 'month' => ':count måned|:count måneder',
- 'a_month' => 'en måned|:count måneder',
- 'm' => ':count mdr.',
- 'week' => ':count uge|:count uger',
- 'a_week' => 'en uge|:count uger',
- 'w' => ':count u.',
- 'day' => ':count dag|:count dage',
- 'a_day' => ':count dag|:count dage',
- 'd' => ':count d.',
- 'hour' => ':count time|:count timer',
- 'a_hour' => 'en time|:count timer',
- 'h' => ':count t.',
- 'minute' => ':count minut|:count minutter',
- 'a_minute' => 'et minut|:count minutter',
- 'min' => ':count min.',
- 'second' => ':count sekund|:count sekunder',
- 'a_second' => 'få sekunder|:count sekunder',
- 's' => ':count s.',
- 'ago' => ':time siden',
- 'from_now' => 'om :time',
- 'after' => ':time efter',
- 'before' => ':time før',
- 'diff_now' => 'nu',
- 'diff_today' => 'i dag',
- 'diff_today_regexp' => 'i dag(?:\\s+kl.)?',
- 'diff_yesterday' => 'i går',
- 'diff_yesterday_regexp' => 'i går(?:\\s+kl.)?',
- 'diff_tomorrow' => 'i morgen',
- 'diff_tomorrow_regexp' => 'i morgen(?:\\s+kl.)?',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'D. MMMM YYYY',
- 'LLL' => 'D. MMMM YYYY HH:mm',
- 'LLLL' => 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[i dag kl.] LT',
- 'nextDay' => '[i morgen kl.] LT',
- 'nextWeek' => 'på dddd [kl.] LT',
- 'lastDay' => '[i går kl.] LT',
- 'lastWeek' => '[i] dddd[s kl.] LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => ':number.',
- 'months' => ['januar', 'februar', 'marts', 'april', 'maj', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'december'],
- 'months_short' => ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],
- 'weekdays' => ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'],
- 'weekdays_short' => ['søn', 'man', 'tir', 'ons', 'tor', 'fre', 'lør'],
- 'weekdays_min' => ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' og '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/da_DK.php b/vendor/nesbot/carbon/src/Carbon/Lang/da_DK.php
deleted file mode 100644
index 392c4841..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/da_DK.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/da.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/da_GL.php b/vendor/nesbot/carbon/src/Carbon/Lang/da_GL.php
deleted file mode 100644
index ea5698b9..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/da_GL.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/da.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D. MMM YYYY',
- 'LLL' => 'D. MMMM YYYY HH.mm',
- 'LLLL' => 'dddd [den] D. MMMM YYYY HH.mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/dav.php b/vendor/nesbot/carbon/src/Carbon/Lang/dav.php
deleted file mode 100644
index e95ec4bb..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/dav.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['Luma lwa K', 'luma lwa p'],
- 'weekdays' => ['Ituku ja jumwa', 'Kuramuka jimweri', 'Kuramuka kawi', 'Kuramuka kadadu', 'Kuramuka kana', 'Kuramuka kasanu', 'Kifula nguwo'],
- 'weekdays_short' => ['Jum', 'Jim', 'Kaw', 'Kad', 'Kan', 'Kas', 'Ngu'],
- 'weekdays_min' => ['Jum', 'Jim', 'Kaw', 'Kad', 'Kan', 'Kas', 'Ngu'],
- 'months' => ['Mori ghwa imbiri', 'Mori ghwa kawi', 'Mori ghwa kadadu', 'Mori ghwa kana', 'Mori ghwa kasanu', 'Mori ghwa karandadu', 'Mori ghwa mfungade', 'Mori ghwa wunyanya', 'Mori ghwa ikenda', 'Mori ghwa ikumi', 'Mori ghwa ikumi na imweri', 'Mori ghwa ikumi na iwi'],
- 'months_short' => ['Imb', 'Kaw', 'Kad', 'Kan', 'Kas', 'Kar', 'Mfu', 'Wun', 'Ike', 'Iku', 'Imw', 'Iwi'],
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/de.php b/vendor/nesbot/carbon/src/Carbon/Lang/de.php
deleted file mode 100644
index ff00c974..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/de.php
+++ /dev/null
@@ -1,108 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Michael Hohl
- * - sheriffmarley
- * - dennisoderwald
- * - Timo
- * - Karag2006
- * - Pete Scopes (pdscopes)
- */
-return [
- 'year' => ':count Jahr|:count Jahre',
- 'a_year' => 'ein Jahr|:count Jahre',
- 'y' => ':count J.',
- 'month' => ':count Monat|:count Monate',
- 'a_month' => 'ein Monat|:count Monate',
- 'm' => ':count Mon.',
- 'week' => ':count Woche|:count Wochen',
- 'a_week' => 'eine Woche|:count Wochen',
- 'w' => ':count Wo.',
- 'day' => ':count Tag|:count Tage',
- 'a_day' => 'ein Tag|:count Tage',
- 'd' => ':count Tg.',
- 'hour' => ':count Stunde|:count Stunden',
- 'a_hour' => 'eine Stunde|:count Stunden',
- 'h' => ':count Std.',
- 'minute' => ':count Minute|:count Minuten',
- 'a_minute' => 'eine Minute|:count Minuten',
- 'min' => ':count Min.',
- 'second' => ':count Sekunde|:count Sekunden',
- 'a_second' => 'ein paar Sekunden|:count Sekunden',
- 's' => ':count Sek.',
- 'millisecond' => ':count Millisekunde|:count Millisekunden',
- 'a_millisecond' => 'eine Millisekunde|:count Millisekunden',
- 'ms' => ':countms',
- 'microsecond' => ':count Mikrosekunde|:count Mikrosekunden',
- 'a_microsecond' => 'eine Mikrosekunde|:count Mikrosekunden',
- 'µs' => ':countµs',
- 'ago' => 'vor :time',
- 'from_now' => 'in :time',
- 'after' => ':time später',
- 'before' => ':time zuvor',
-
- 'year_from_now' => ':count Jahr|:count Jahren',
- 'month_from_now' => ':count Monat|:count Monaten',
- 'week_from_now' => ':count Woche|:count Wochen',
- 'day_from_now' => ':count Tag|:count Tagen',
- 'year_ago' => ':count Jahr|:count Jahren',
- 'month_ago' => ':count Monat|:count Monaten',
- 'week_ago' => ':count Woche|:count Wochen',
- 'day_ago' => ':count Tag|:count Tagen',
- 'a_year_from_now' => 'ein Jahr|:count Jahren',
- 'a_month_from_now' => 'ein Monat|:count Monaten',
- 'a_week_from_now' => 'eine Woche|:count Wochen',
- 'a_day_from_now' => 'ein Tag|:count Tagen',
- 'a_year_ago' => 'ein Jahr|:count Jahren',
- 'a_month_ago' => 'ein Monat|:count Monaten',
- 'a_week_ago' => 'eine Woche|:count Wochen',
- 'a_day_ago' => 'ein Tag|:count Tagen',
-
- 'diff_now' => 'Gerade eben',
- 'diff_today' => 'heute',
- 'diff_today_regexp' => 'heute(?:\\s+um)?',
- 'diff_yesterday' => 'Gestern',
- 'diff_yesterday_regexp' => 'gestern(?:\\s+um)?',
- 'diff_tomorrow' => 'Morgen',
- 'diff_tomorrow_regexp' => 'morgen(?:\\s+um)?',
- 'diff_before_yesterday' => 'Vorgestern',
- 'diff_after_tomorrow' => 'Übermorgen',
-
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'D. MMMM YYYY',
- 'LLL' => 'D. MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D. MMMM YYYY HH:mm',
- ],
-
- 'calendar' => [
- 'sameDay' => '[heute um] LT [Uhr]',
- 'nextDay' => '[morgen um] LT [Uhr]',
- 'nextWeek' => 'dddd [um] LT [Uhr]',
- 'lastDay' => '[gestern um] LT [Uhr]',
- 'lastWeek' => '[letzten] dddd [um] LT [Uhr]',
- 'sameElse' => 'L',
- ],
-
- 'months' => ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'],
- 'months_short' => ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],
- 'weekdays' => ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'],
- 'weekdays_short' => ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'],
- 'weekdays_min' => ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
- 'ordinal' => ':number.',
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' und '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/de_AT.php b/vendor/nesbot/carbon/src/Carbon/Lang/de_AT.php
deleted file mode 100644
index a2ea4c08..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/de_AT.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - sheriffmarley
- * - Timo
- * - Michael Hohl
- * - Namoshek
- * - Bernhard Baumrock (BernhardBaumrock)
- */
-return array_replace_recursive(require __DIR__.'/de.php', [
- 'months' => [
- 0 => 'Jänner',
- ],
- 'months_short' => [
- 0 => 'Jän',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/de_BE.php b/vendor/nesbot/carbon/src/Carbon/Lang/de_BE.php
deleted file mode 100644
index 8ed8dc62..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/de_BE.php
+++ /dev/null
@@ -1,20 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - RAP bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/de.php', [
- 'formats' => [
- 'L' => 'YYYY-MM-DD',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/de_CH.php b/vendor/nesbot/carbon/src/Carbon/Lang/de_CH.php
deleted file mode 100644
index a869ab48..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/de_CH.php
+++ /dev/null
@@ -1,20 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - sheriffmarley
- * - Timo
- * - Michael Hohl
- */
-return array_replace_recursive(require __DIR__.'/de.php', [
- 'weekdays_short' => ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/de_DE.php b/vendor/nesbot/carbon/src/Carbon/Lang/de_DE.php
deleted file mode 100644
index fb1209d2..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/de_DE.php
+++ /dev/null
@@ -1,16 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Free Software Foundation, Inc. bug-glibc-locales@gnu.org
- */
-return require __DIR__.'/de.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/de_IT.php b/vendor/nesbot/carbon/src/Carbon/Lang/de_IT.php
deleted file mode 100644
index 604a8568..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/de_IT.php
+++ /dev/null
@@ -1,16 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Matthias Dieter Wallno:fer libc-locales@sourceware.org
- */
-return require __DIR__.'/de.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/de_LI.php b/vendor/nesbot/carbon/src/Carbon/Lang/de_LI.php
deleted file mode 100644
index 03e606a6..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/de_LI.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/de.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/de_LU.php b/vendor/nesbot/carbon/src/Carbon/Lang/de_LU.php
deleted file mode 100644
index 8ed8dc62..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/de_LU.php
+++ /dev/null
@@ -1,20 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - RAP bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/de.php', [
- 'formats' => [
- 'L' => 'YYYY-MM-DD',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/dje.php b/vendor/nesbot/carbon/src/Carbon/Lang/dje.php
deleted file mode 100644
index 74b7ac12..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/dje.php
+++ /dev/null
@@ -1,40 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['Subbaahi', 'Zaarikay b'],
- 'weekdays' => ['Alhadi', 'Atinni', 'Atalaata', 'Alarba', 'Alhamisi', 'Alzuma', 'Asibti'],
- 'weekdays_short' => ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alz', 'Asi'],
- 'weekdays_min' => ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alz', 'Asi'],
- 'months' => ['Žanwiye', 'Feewiriye', 'Marsi', 'Awiril', 'Me', 'Žuweŋ', 'Žuyye', 'Ut', 'Sektanbur', 'Oktoobur', 'Noowanbur', 'Deesanbur'],
- 'months_short' => ['Žan', 'Fee', 'Mar', 'Awi', 'Me', 'Žuw', 'Žuy', 'Ut', 'Sek', 'Okt', 'Noo', 'Dee'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D/M/YYYY',
- 'LL' => 'D MMM, YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
-
- 'year' => ':count hari', // less reliable
- 'y' => ':count hari', // less reliable
- 'a_year' => ':count hari', // less reliable
-
- 'week' => ':count alzuma', // less reliable
- 'w' => ':count alzuma', // less reliable
- 'a_week' => ':count alzuma', // less reliable
-
- 'second' => ':count atinni', // less reliable
- 's' => ':count atinni', // less reliable
- 'a_second' => ':count atinni', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/doi.php b/vendor/nesbot/carbon/src/Carbon/Lang/doi.php
deleted file mode 100644
index cb679c58..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/doi.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/doi_IN.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/doi_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/doi_IN.php
deleted file mode 100644
index d3597214..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/doi_IN.php
+++ /dev/null
@@ -1,31 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Red Hat Pune libc-alpha@sourceware.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'D/M/YY',
- ],
- 'months' => ['जनवरी', 'फरवरी', 'मार्च', 'एप्रैल', 'मेई', 'जून', 'जूलै', 'अगस्त', 'सितंबर', 'अक्तूबर', 'नवंबर', 'दिसंबर'],
- 'months_short' => ['जनवरी', 'फरवरी', 'मार्च', 'एप्रैल', 'मेई', 'जून', 'जूलै', 'अगस्त', 'सितंबर', 'अक्तूबर', 'नवंबर', 'दिसंबर'],
- 'weekdays' => ['ऐतबार', 'सोमबार', 'मंगलबर', 'बुधबार', 'बीरबार', 'शुक्करबार', 'श्नीचरबार'],
- 'weekdays_short' => ['ऐत', 'सोम', 'मंगल', 'बुध', 'बीर', 'शुक्कर', 'श्नीचर'],
- 'weekdays_min' => ['ऐत', 'सोम', 'मंगल', 'बुध', 'बीर', 'शुक्कर', 'श्नीचर'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['सञं', 'सबेर'],
-
- 'second' => ':count सङार', // less reliable
- 's' => ':count सङार', // less reliable
- 'a_second' => ':count सङार', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/dsb.php b/vendor/nesbot/carbon/src/Carbon/Lang/dsb.php
deleted file mode 100644
index 1d214d56..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/dsb.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/dsb_DE.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/dsb_DE.php b/vendor/nesbot/carbon/src/Carbon/Lang/dsb_DE.php
deleted file mode 100644
index 1b941870..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/dsb_DE.php
+++ /dev/null
@@ -1,60 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Information from Michael Wolf bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'DD. MMMM YYYY',
- 'LLL' => 'DD. MMMM, HH:mm [góź.]',
- 'LLLL' => 'dddd, DD. MMMM YYYY, HH:mm [góź.]',
- ],
- 'months' => ['januara', 'februara', 'měrca', 'apryla', 'maja', 'junija', 'julija', 'awgusta', 'septembra', 'oktobra', 'nowembra', 'decembra'],
- 'months_short' => ['Jan', 'Feb', 'Měr', 'Apr', 'Maj', 'Jun', 'Jul', 'Awg', 'Sep', 'Okt', 'Now', 'Dec'],
- 'weekdays' => ['Njeźela', 'Pónjeźele', 'Wałtora', 'Srjoda', 'Stwórtk', 'Pětk', 'Sobota'],
- 'weekdays_short' => ['Nj', 'Pó', 'Wa', 'Sr', 'St', 'Pě', 'So'],
- 'weekdays_min' => ['Nj', 'Pó', 'Wa', 'Sr', 'St', 'Pě', 'So'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-
- 'year' => ':count lěto',
- 'y' => ':count lěto',
- 'a_year' => ':count lěto',
-
- 'month' => ':count mjasec',
- 'm' => ':count mjasec',
- 'a_month' => ':count mjasec',
-
- 'week' => ':count tyźeń',
- 'w' => ':count tyźeń',
- 'a_week' => ':count tyźeń',
-
- 'day' => ':count źeń',
- 'd' => ':count źeń',
- 'a_day' => ':count źeń',
-
- 'hour' => ':count góźina',
- 'h' => ':count góźina',
- 'a_hour' => ':count góźina',
-
- 'minute' => ':count minuta',
- 'min' => ':count minuta',
- 'a_minute' => ':count minuta',
-
- 'second' => ':count drugi',
- 's' => ':count drugi',
- 'a_second' => ':count drugi',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/dua.php b/vendor/nesbot/carbon/src/Carbon/Lang/dua.php
deleted file mode 100644
index 55e5c7c3..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/dua.php
+++ /dev/null
@@ -1,56 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['idiɓa', 'ebyámu'],
- 'weekdays' => ['éti', 'mɔ́sú', 'kwasú', 'mukɔ́sú', 'ŋgisú', 'ɗónɛsú', 'esaɓasú'],
- 'weekdays_short' => ['ét', 'mɔ́s', 'kwa', 'muk', 'ŋgi', 'ɗón', 'esa'],
- 'weekdays_min' => ['ét', 'mɔ́s', 'kwa', 'muk', 'ŋgi', 'ɗón', 'esa'],
- 'months' => ['dimɔ́di', 'ŋgɔndɛ', 'sɔŋɛ', 'diɓáɓá', 'emiasele', 'esɔpɛsɔpɛ', 'madiɓɛ́díɓɛ́', 'diŋgindi', 'nyɛtɛki', 'mayésɛ́', 'tiníní', 'eláŋgɛ́'],
- 'months_short' => ['di', 'ŋgɔn', 'sɔŋ', 'diɓ', 'emi', 'esɔ', 'mad', 'diŋ', 'nyɛt', 'may', 'tin', 'elá'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D/M/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
-
- 'year' => ':count ma mbu', // less reliable
- 'y' => ':count ma mbu', // less reliable
- 'a_year' => ':count ma mbu', // less reliable
-
- 'month' => ':count myo̱di', // less reliable
- 'm' => ':count myo̱di', // less reliable
- 'a_month' => ':count myo̱di', // less reliable
-
- 'week' => ':count woki', // less reliable
- 'w' => ':count woki', // less reliable
- 'a_week' => ':count woki', // less reliable
-
- 'day' => ':count buńa', // less reliable
- 'd' => ':count buńa', // less reliable
- 'a_day' => ':count buńa', // less reliable
-
- 'hour' => ':count ma awa', // less reliable
- 'h' => ':count ma awa', // less reliable
- 'a_hour' => ':count ma awa', // less reliable
-
- 'minute' => ':count minuti', // less reliable
- 'min' => ':count minuti', // less reliable
- 'a_minute' => ':count minuti', // less reliable
-
- 'second' => ':count maba', // less reliable
- 's' => ':count maba', // less reliable
- 'a_second' => ':count maba', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/dv.php b/vendor/nesbot/carbon/src/Carbon/Lang/dv.php
deleted file mode 100644
index 4b8d7e1a..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/dv.php
+++ /dev/null
@@ -1,89 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-$months = [
- 'ޖެނުއަރީ',
- 'ފެބްރުއަރީ',
- 'މާރިޗު',
- 'އޭޕްރީލު',
- 'މޭ',
- 'ޖޫން',
- 'ޖުލައި',
- 'އޯގަސްޓު',
- 'ސެޕްޓެމްބަރު',
- 'އޮކްޓޯބަރު',
- 'ނޮވެމްބަރު',
- 'ޑިސެމްބަރު',
-];
-
-$weekdays = [
- 'އާދިއްތަ',
- 'ހޯމަ',
- 'އަންގާރަ',
- 'ބުދަ',
- 'ބުރާސްފަތި',
- 'ހުކުރު',
- 'ހޮނިހިރު',
-];
-
-/*
- * Authors:
- * - Josh Soref
- * - Jawish Hameed
- */
-return [
- 'year' => ':count '.'އަހަރު',
- 'a_year' => '{1}'.'އަހަރެއް'.'|:count '.'އަހަރު',
- 'month' => ':count '.'މަސް',
- 'a_month' => '{1}'.'މަހެއް'.'|:count '.'މަސް',
- 'week' => ':count '.'ހަފްތާ',
- 'a_week' => '{1}'.'ސިކުންތުކޮޅެއް'.'|:count '.'ހަފްތާ',
- 'day' => ':count '.'ދުވަސް',
- 'a_day' => '{1}'.'ދުވަހެއް'.'|:count '.'ދުވަސް',
- 'hour' => ':count '.'ގަޑިއިރު',
- 'a_hour' => '{1}'.'ގަޑިއިރެއް'.'|:count '.'ގަޑިއިރު',
- 'minute' => ':count '.'މިނިޓު',
- 'a_minute' => '{1}'.'މިނިޓެއް'.'|:count '.'މިނިޓު',
- 'second' => ':count '.'ސިކުންތު',
- 'a_second' => '{1}'.'ސިކުންތުކޮޅެއް'.'|:count '.'ސިކުންތު',
- 'ago' => 'ކުރިން :time',
- 'from_now' => 'ތެރޭގައި :time',
- 'after' => ':time ފަހުން',
- 'before' => ':time ކުރި',
- 'diff_yesterday' => 'އިއްޔެ',
- 'diff_today' => 'މިއަދު',
- 'diff_tomorrow' => 'މާދަމާ',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D/M/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[މިއަދު] LT',
- 'nextDay' => '[މާދަމާ] LT',
- 'nextWeek' => 'dddd LT',
- 'lastDay' => '[އިއްޔެ] LT',
- 'lastWeek' => '[ފާއިތުވި] dddd LT',
- 'sameElse' => 'L',
- ],
- 'meridiem' => ['މކ', 'މފ'],
- 'months' => $months,
- 'months_short' => $months,
- 'weekdays' => $weekdays,
- 'weekdays_short' => $weekdays,
- 'weekdays_min' => ['އާދި', 'ހޯމަ', 'އަން', 'ބުދަ', 'ބުރާ', 'ހުކު', 'ހޮނި'],
- 'list' => [', ', ' އަދި '],
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/dv_MV.php b/vendor/nesbot/carbon/src/Carbon/Lang/dv_MV.php
deleted file mode 100644
index 2668d5b0..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/dv_MV.php
+++ /dev/null
@@ -1,87 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Ahmed Ali
- */
-
-$months = [
- 'ޖެނުއަރީ',
- 'ފެބްރުއަރީ',
- 'މާރިޗު',
- 'އޭޕްރީލު',
- 'މޭ',
- 'ޖޫން',
- 'ޖުލައި',
- 'އޯގަސްޓު',
- 'ސެޕްޓެމްބަރު',
- 'އޮކްޓޯބަރު',
- 'ނޮވެމްބަރު',
- 'ޑިސެމްބަރު',
-];
-
-$weekdays = [
- 'އާދިއްތަ',
- 'ހޯމަ',
- 'އަންގާރަ',
- 'ބުދަ',
- 'ބުރާސްފަތި',
- 'ހުކުރު',
- 'ހޮނިހިރު',
-];
-
-return [
- 'year' => '{0}އަހަރެއް|[1,Inf]:count އަހަރު',
- 'y' => '{0}އަހަރެއް|[1,Inf]:count އަހަރު',
- 'month' => '{0}މައްސަރެއް|[1,Inf]:count މަސް',
- 'm' => '{0}މައްސަރެއް|[1,Inf]:count މަސް',
- 'week' => '{0}ހަފްތާއެއް|[1,Inf]:count ހަފްތާ',
- 'w' => '{0}ހަފްތާއެއް|[1,Inf]:count ހަފްތާ',
- 'day' => '{0}ދުވަސް|[1,Inf]:count ދުވަސް',
- 'd' => '{0}ދުވަސް|[1,Inf]:count ދުވަސް',
- 'hour' => '{0}ގަޑިއިރެއް|[1,Inf]:count ގަޑި',
- 'h' => '{0}ގަޑިއިރެއް|[1,Inf]:count ގަޑި',
- 'minute' => '{0}މިނެޓެއް|[1,Inf]:count މިނެޓް',
- 'min' => '{0}މިނެޓެއް|[1,Inf]:count މިނެޓް',
- 'second' => '{0}ސިކުންތެއް|[1,Inf]:count ސިކުންތު',
- 's' => '{0}ސިކުންތެއް|[1,Inf]:count ސިކުންތު',
- 'ago' => ':time ކުރިން',
- 'from_now' => ':time ފަހުން',
- 'after' => ':time ފަހުން',
- 'before' => ':time ކުރި',
- 'diff_yesterday' => 'އިއްޔެ',
- 'diff_today' => 'މިއަދު',
- 'diff_tomorrow' => 'މާދަމާ',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D/M/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[މިއަދު] LT',
- 'nextDay' => '[މާދަމާ] LT',
- 'nextWeek' => 'dddd LT',
- 'lastDay' => '[އިއްޔެ] LT',
- 'lastWeek' => '[ފާއިތުވި] dddd LT',
- 'sameElse' => 'L',
- ],
- 'meridiem' => ['މކ', 'މފ'],
- 'months' => $months,
- 'months_short' => $months,
- 'weekdays' => $weekdays,
- 'weekdays_short' => $weekdays,
- 'weekdays_min' => ['އާދި', 'ހޯމަ', 'އަން', 'ބުދަ', 'ބުރާ', 'ހުކު', 'ހޮނި'],
- 'list' => [', ', ' އަދި '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/dyo.php b/vendor/nesbot/carbon/src/Carbon/Lang/dyo.php
deleted file mode 100644
index 33082e67..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/dyo.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'weekdays' => ['Dimas', 'Teneŋ', 'Talata', 'Alarbay', 'Aramisay', 'Arjuma', 'Sibiti'],
- 'weekdays_short' => ['Dim', 'Ten', 'Tal', 'Ala', 'Ara', 'Arj', 'Sib'],
- 'weekdays_min' => ['Dim', 'Ten', 'Tal', 'Ala', 'Ara', 'Arj', 'Sib'],
- 'months' => ['Sanvie', 'Fébirie', 'Mars', 'Aburil', 'Mee', 'Sueŋ', 'Súuyee', 'Ut', 'Settembar', 'Oktobar', 'Novembar', 'Disambar'],
- 'months_short' => ['Sa', 'Fe', 'Ma', 'Ab', 'Me', 'Su', 'Sú', 'Ut', 'Se', 'Ok', 'No', 'De'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D/M/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/dz.php b/vendor/nesbot/carbon/src/Carbon/Lang/dz.php
deleted file mode 100644
index cc17e69e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/dz.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/dz_BT.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/dz_BT.php b/vendor/nesbot/carbon/src/Carbon/Lang/dz_BT.php
deleted file mode 100644
index bfbcaf46..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/dz_BT.php
+++ /dev/null
@@ -1,43 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Sherubtse College bug-glibc@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'པསྱི་ལོYYཟལMMཚེསDD',
- ],
- 'months' => ['ཟླ་བ་དང་པ་', 'ཟླ་བ་གཉིས་པ་', 'ཟླ་བ་གསུམ་པ་', 'ཟླ་བ་བཞི་པ་', 'ཟླ་བ་ལྔ་ཕ་', 'ཟླ་བ་དྲུག་པ་', 'ཟླ་བ་བདུནཔ་', 'ཟླ་བ་བརྒྱད་པ་', 'ཟླ་བ་དགུ་པ་', 'ཟླ་བ་བཅུ་པ་', 'ཟླ་བ་བཅུ་གཅིག་པ་', 'ཟླ་བ་བཅུ་གཉིས་པ་'],
- 'months_short' => ['ཟླ་༡', 'ཟླ་༢', 'ཟླ་༣', 'ཟླ་༤', 'ཟླ་༥', 'ཟླ་༦', 'ཟླ་༧', 'ཟླ་༨', 'ཟླ་༩', 'ཟླ་༡༠', 'ཟླ་༡༡', 'ཟླ་༡༢'],
- 'weekdays' => ['གཟའ་ཟླ་བ་', 'གཟའ་མིག་དམར་', 'གཟའ་ལྷག་ཕ་', 'གཟའ་པུར་བུ་', 'གཟའ་པ་སངས་', 'གཟའ་སྤེན་ཕ་', 'གཟའ་ཉི་མ་'],
- 'weekdays_short' => ['ཟླ་', 'མིར་', 'ལྷག་', 'པུར་', 'སངས་', 'སྤེན་', 'ཉི་'],
- 'weekdays_min' => ['ཟླ་', 'མིར་', 'ལྷག་', 'པུར་', 'སངས་', 'སྤེན་', 'ཉི་'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['ངས་ཆ', 'ཕྱི་ཆ'],
-
- 'year' => ':count ཆརཔ', // less reliable
- 'y' => ':count ཆརཔ', // less reliable
- 'a_year' => ':count ཆརཔ', // less reliable
-
- 'month' => ':count ཟླ་བ', // less reliable
- 'm' => ':count ཟླ་བ', // less reliable
- 'a_month' => ':count ཟླ་བ', // less reliable
-
- 'day' => ':count ཉི', // less reliable
- 'd' => ':count ཉི', // less reliable
- 'a_day' => ':count ཉི', // less reliable
-
- 'second' => ':count ཆ', // less reliable
- 's' => ':count ཆ', // less reliable
- 'a_second' => ':count ཆ', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ebu.php b/vendor/nesbot/carbon/src/Carbon/Lang/ebu.php
deleted file mode 100644
index f60bc6f2..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ebu.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['KI', 'UT'],
- 'weekdays' => ['Kiumia', 'Njumatatu', 'Njumaine', 'Njumatano', 'Aramithi', 'Njumaa', 'NJumamothii'],
- 'weekdays_short' => ['Kma', 'Tat', 'Ine', 'Tan', 'Arm', 'Maa', 'NMM'],
- 'weekdays_min' => ['Kma', 'Tat', 'Ine', 'Tan', 'Arm', 'Maa', 'NMM'],
- 'months' => ['Mweri wa mbere', 'Mweri wa kaĩri', 'Mweri wa kathatũ', 'Mweri wa kana', 'Mweri wa gatano', 'Mweri wa gatantatũ', 'Mweri wa mũgwanja', 'Mweri wa kanana', 'Mweri wa kenda', 'Mweri wa ikũmi', 'Mweri wa ikũmi na ũmwe', 'Mweri wa ikũmi na Kaĩrĩ'],
- 'months_short' => ['Mbe', 'Kai', 'Kat', 'Kan', 'Gat', 'Gan', 'Mug', 'Knn', 'Ken', 'Iku', 'Imw', 'Igi'],
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ee.php b/vendor/nesbot/carbon/src/Carbon/Lang/ee.php
deleted file mode 100644
index f96c5c9d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ee.php
+++ /dev/null
@@ -1,56 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['ŋ', 'ɣ'],
- 'weekdays' => ['kɔsiɖa', 'dzoɖa', 'blaɖa', 'kuɖa', 'yawoɖa', 'fiɖa', 'memleɖa'],
- 'weekdays_short' => ['kɔs', 'dzo', 'bla', 'kuɖ', 'yaw', 'fiɖ', 'mem'],
- 'weekdays_min' => ['kɔs', 'dzo', 'bla', 'kuɖ', 'yaw', 'fiɖ', 'mem'],
- 'months' => ['dzove', 'dzodze', 'tedoxe', 'afɔfĩe', 'dama', 'masa', 'siamlɔm', 'deasiamime', 'anyɔnyɔ', 'kele', 'adeɛmekpɔxe', 'dzome'],
- 'months_short' => ['dzv', 'dzd', 'ted', 'afɔ', 'dam', 'mas', 'sia', 'dea', 'any', 'kel', 'ade', 'dzm'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'a [ga] h:mm',
- 'LTS' => 'a [ga] h:mm:ss',
- 'L' => 'M/D/YYYY',
- 'LL' => 'MMM D [lia], YYYY',
- 'LLL' => 'a [ga] h:mm MMMM D [lia] YYYY',
- 'LLLL' => 'a [ga] h:mm dddd, MMMM D [lia] YYYY',
- ],
-
- 'year' => 'ƒe :count',
- 'y' => 'ƒe :count',
- 'a_year' => 'ƒe :count',
-
- 'month' => 'ɣleti :count',
- 'm' => 'ɣleti :count',
- 'a_month' => 'ɣleti :count',
-
- 'week' => 'kwasiɖa :count',
- 'w' => 'kwasiɖa :count',
- 'a_week' => 'kwasiɖa :count',
-
- 'day' => 'ŋkeke :count',
- 'd' => 'ŋkeke :count',
- 'a_day' => 'ŋkeke :count',
-
- 'hour' => 'gaƒoƒo :count',
- 'h' => 'gaƒoƒo :count',
- 'a_hour' => 'gaƒoƒo :count',
-
- 'minute' => 'miniti :count', // less reliable
- 'min' => 'miniti :count', // less reliable
- 'a_minute' => 'miniti :count', // less reliable
-
- 'second' => 'sɛkɛnd :count', // less reliable
- 's' => 'sɛkɛnd :count', // less reliable
- 'a_second' => 'sɛkɛnd :count', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ee_TG.php b/vendor/nesbot/carbon/src/Carbon/Lang/ee_TG.php
deleted file mode 100644
index 7a8b36c9..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ee_TG.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/ee.php', [
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'LLL' => 'HH:mm MMMM D [lia] YYYY',
- 'LLLL' => 'HH:mm dddd, MMMM D [lia] YYYY',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/el.php b/vendor/nesbot/carbon/src/Carbon/Lang/el.php
deleted file mode 100644
index 7c40f9c1..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/el.php
+++ /dev/null
@@ -1,93 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Alessandro Di Felice
- * - François B
- * - Tim Fish
- * - Gabriel Monteagudo
- * - JD Isaacks
- * - yiannisdesp
- * - Ilias Kasmeridis (iliaskasm)
- */
-
-use Carbon\CarbonInterface;
-
-return [
- 'year' => ':count χρόνος|:count χρόνια',
- 'a_year' => 'ένας χρόνος|:count χρόνια',
- 'y' => ':count χρ.',
- 'month' => ':count μήνας|:count μήνες',
- 'a_month' => 'ένας μήνας|:count μήνες',
- 'm' => ':count μήν.',
- 'week' => ':count εβδομάδα|:count εβδομάδες',
- 'a_week' => 'μια εβδομάδα|:count εβδομάδες',
- 'w' => ':count εβδ.',
- 'day' => ':count μέρα|:count μέρες',
- 'a_day' => 'μία μέρα|:count μέρες',
- 'd' => ':count μέρ.',
- 'hour' => ':count ώρα|:count ώρες',
- 'a_hour' => 'μία ώρα|:count ώρες',
- 'h' => ':count ώρα|:count ώρες',
- 'minute' => ':count λεπτό|:count λεπτά',
- 'a_minute' => 'ένα λεπτό|:count λεπτά',
- 'min' => ':count λεπ.',
- 'second' => ':count δευτερόλεπτο|:count δευτερόλεπτα',
- 'a_second' => 'λίγα δευτερόλεπτα|:count δευτερόλεπτα',
- 's' => ':count δευ.',
- 'ago' => 'πριν :time',
- 'from_now' => 'σε :time',
- 'after' => ':time μετά',
- 'before' => ':time πριν',
- 'diff_now' => 'τώρα',
- 'diff_today' => 'Σήμερα',
- 'diff_today_regexp' => 'Σήμερα(?:\\s+{})?',
- 'diff_yesterday' => 'χθες',
- 'diff_yesterday_regexp' => 'Χθες(?:\\s+{})?',
- 'diff_tomorrow' => 'αύριο',
- 'diff_tomorrow_regexp' => 'Αύριο(?:\\s+{})?',
- 'formats' => [
- 'LT' => 'h:mm A',
- 'LTS' => 'h:mm:ss A',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY h:mm A',
- 'LLLL' => 'dddd, D MMMM YYYY h:mm A',
- ],
- 'calendar' => [
- 'sameDay' => '[Σήμερα {}] LT',
- 'nextDay' => '[Αύριο {}] LT',
- 'nextWeek' => 'dddd [{}] LT',
- 'lastDay' => '[Χθες {}] LT',
- 'lastWeek' => function (CarbonInterface $current) {
- switch ($current->dayOfWeek) {
- case 6:
- return '[το προηγούμενο] dddd [{}] LT';
- default:
- return '[την προηγούμενη] dddd [{}] LT';
- }
- },
- 'sameElse' => 'L',
- ],
- 'ordinal' => ':numberη',
- 'meridiem' => ['ΠΜ', 'ΜΜ', 'πμ', 'μμ'],
- 'months' => ['Ιανουαρίου', 'Φεβρουαρίου', 'Μαρτίου', 'Απριλίου', 'Μαΐου', 'Ιουνίου', 'Ιουλίου', 'Αυγούστου', 'Σεπτεμβρίου', 'Οκτωβρίου', 'Νοεμβρίου', 'Δεκεμβρίου'],
- 'months_standalone' => ['Ιανουάριος', 'Φεβρουάριος', 'Μάρτιος', 'Απρίλιος', 'Μάιος', 'Ιούνιος', 'Ιούλιος', 'Αύγουστος', 'Σεπτέμβριος', 'Οκτώβριος', 'Νοέμβριος', 'Δεκέμβριος'],
- 'months_regexp' => '/(D[oD]?[\s,]+MMMM|L{2,4}|l{2,4})/',
- 'months_short' => ['Ιαν', 'Φεβ', 'Μαρ', 'Απρ', 'Μαϊ', 'Ιουν', 'Ιουλ', 'Αυγ', 'Σεπ', 'Οκτ', 'Νοε', 'Δεκ'],
- 'weekdays' => ['Κυριακή', 'Δευτέρα', 'Τρίτη', 'Τετάρτη', 'Πέμπτη', 'Παρασκευή', 'Σάββατο'],
- 'weekdays_short' => ['Κυρ', 'Δευ', 'Τρι', 'Τετ', 'Πεμ', 'Παρ', 'Σαβ'],
- 'weekdays_min' => ['Κυ', 'Δε', 'Τρ', 'Τε', 'Πε', 'Πα', 'Σα'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' και '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/el_CY.php b/vendor/nesbot/carbon/src/Carbon/Lang/el_CY.php
deleted file mode 100644
index 8a693c15..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/el_CY.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Greek Debian Translation Team bug-glibc@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/el.php', [
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/el_GR.php b/vendor/nesbot/carbon/src/Carbon/Lang/el_GR.php
deleted file mode 100644
index df196af9..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/el_GR.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - RAP bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/el.php', [
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en.php b/vendor/nesbot/carbon/src/Carbon/Lang/en.php
deleted file mode 100644
index a8633fef..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en.php
+++ /dev/null
@@ -1,87 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Milos Sakovic
- * - Paul
- * - Pete Scopes (pdscopes)
- */
-return [
- /*
- * {1}, {0} and ]1,Inf[ are not needed as it's the default for English pluralization.
- * But as some languages are using en.php as a fallback, it's better to specify it
- * explicitly so those languages also fallback to English pluralization when a unit
- * is missing.
- */
- 'year' => '{1}:count year|{0}:count years|]1,Inf[:count years',
- 'a_year' => '{1}a year|{0}:count years|]1,Inf[:count years',
- 'y' => '{1}:countyr|{0}:countyrs|]1,Inf[:countyrs',
- 'month' => '{1}:count month|{0}:count months|]1,Inf[:count months',
- 'a_month' => '{1}a month|{0}:count months|]1,Inf[:count months',
- 'm' => '{1}:countmo|{0}:countmos|]1,Inf[:countmos',
- 'week' => '{1}:count week|{0}:count weeks|]1,Inf[:count weeks',
- 'a_week' => '{1}a week|{0}:count weeks|]1,Inf[:count weeks',
- 'w' => ':countw',
- 'day' => '{1}:count day|{0}:count days|]1,Inf[:count days',
- 'a_day' => '{1}a day|{0}:count days|]1,Inf[:count days',
- 'd' => ':countd',
- 'hour' => '{1}:count hour|{0}:count hours|]1,Inf[:count hours',
- 'a_hour' => '{1}an hour|{0}:count hours|]1,Inf[:count hours',
- 'h' => ':counth',
- 'minute' => '{1}:count minute|{0}:count minutes|]1,Inf[:count minutes',
- 'a_minute' => '{1}a minute|{0}:count minutes|]1,Inf[:count minutes',
- 'min' => ':countm',
- 'second' => '{1}:count second|{0}:count seconds|]1,Inf[:count seconds',
- 'a_second' => '{1}a few seconds|{0}:count seconds|]1,Inf[:count seconds',
- 's' => ':counts',
- 'millisecond' => '{1}:count millisecond|{0}:count milliseconds|]1,Inf[:count milliseconds',
- 'a_millisecond' => '{1}a millisecond|{0}:count milliseconds|]1,Inf[:count milliseconds',
- 'ms' => ':countms',
- 'microsecond' => '{1}:count microsecond|{0}:count microseconds|]1,Inf[:count microseconds',
- 'a_microsecond' => '{1}a microsecond|{0}:count microseconds|]1,Inf[:count microseconds',
- 'µs' => ':countµs',
- 'ago' => ':time ago',
- 'from_now' => ':time from now',
- 'after' => ':time after',
- 'before' => ':time before',
- 'diff_now' => 'just now',
- 'diff_today' => 'today',
- 'diff_yesterday' => 'yesterday',
- 'diff_tomorrow' => 'tomorrow',
- 'diff_before_yesterday' => 'before yesterday',
- 'diff_after_tomorrow' => 'after tomorrow',
- 'period_recurrences' => '{1}once|{0}:count times|]1,Inf[:count times',
- 'period_interval' => 'every :interval',
- 'period_start_date' => 'from :date',
- 'period_end_date' => 'to :date',
- 'months' => ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
- 'months_short' => ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
- 'weekdays' => ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
- 'weekdays_short' => ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
- 'weekdays_min' => ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
- 'ordinal' => function ($number) {
- $lastDigit = $number % 10;
-
- return $number.(
- (~~($number % 100 / 10) === 1) ? 'th' : (
- ($lastDigit === 1) ? 'st' : (
- ($lastDigit === 2) ? 'nd' : (
- ($lastDigit === 3) ? 'rd' : 'th'
- )
- )
- )
- );
- },
- 'list' => [', ', ' and '],
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_001.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_001.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_001.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_150.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_150.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_150.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_AG.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_AG.php
deleted file mode 100644
index 2c1c64f0..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_AG.php
+++ /dev/null
@@ -1,21 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Free Software Foundation, Inc. bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YY',
- ],
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_AI.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_AI.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_AI.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_AS.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_AS.php
deleted file mode 100644
index f086dc63..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_AS.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/en.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_AT.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_AT.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_AT.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_AU.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_AU.php
deleted file mode 100644
index f16bd4f5..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_AU.php
+++ /dev/null
@@ -1,31 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Kunal Marwaha
- * - François B
- * - Mayank Badola
- * - JD Isaacks
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'from_now' => 'in :time',
- 'formats' => [
- 'LT' => 'h:mm A',
- 'LTS' => 'h:mm:ss A',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY h:mm A',
- 'LLLL' => 'dddd, D MMMM YYYY h:mm A',
- ],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_BB.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_BB.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_BB.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_BE.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_BE.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_BE.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_BI.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_BI.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_BI.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_BM.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_BM.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_BM.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_BS.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_BS.php
deleted file mode 100644
index f086dc63..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_BS.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/en.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_BW.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_BW.php
deleted file mode 100644
index f086dc63..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_BW.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/en.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_BZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_BZ.php
deleted file mode 100644
index f086dc63..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_BZ.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/en.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_CA.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_CA.php
deleted file mode 100644
index e6560868..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_CA.php
+++ /dev/null
@@ -1,29 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - François B
- * - Zhan Tong Zhang
- * - Mayank Badola
- * - JD Isaacks
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'from_now' => 'in :time',
- 'formats' => [
- 'LT' => 'h:mm A',
- 'LTS' => 'h:mm:ss A',
- 'L' => 'YYYY-MM-DD',
- 'LL' => 'MMMM D, YYYY',
- 'LLL' => 'MMMM D, YYYY h:mm A',
- 'LLLL' => 'dddd, MMMM D, YYYY h:mm A',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_CC.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_CC.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_CC.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_CH.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_CH.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_CH.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_CK.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_CK.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_CK.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_CM.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_CM.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_CM.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_CX.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_CX.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_CX.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_CY.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_CY.php
deleted file mode 100644
index a44c3508..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_CY.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - NehaGautam
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'from_now' => 'in :time',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD-MM-YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_DE.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_DE.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_DE.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_DG.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_DG.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_DG.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_DK.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_DK.php
deleted file mode 100644
index 9e8a8c68..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_DK.php
+++ /dev/null
@@ -1,22 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Danish Standards Association bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'YYYY-MM-DD',
- ],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_DM.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_DM.php
deleted file mode 100644
index f086dc63..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_DM.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/en.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_ER.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_ER.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_ER.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_FI.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_FI.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_FI.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_FJ.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_FJ.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_FJ.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_FK.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_FK.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_FK.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_FM.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_FM.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_FM.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_GB.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_GB.php
deleted file mode 100644
index 67d9fd64..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_GB.php
+++ /dev/null
@@ -1,30 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - François B
- * - Mayank Badola
- * - JD Isaacks
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'from_now' => 'in :time',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_GD.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_GD.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_GD.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_GG.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_GG.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_GG.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_GH.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_GH.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_GH.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_GI.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_GI.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_GI.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_GM.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_GM.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_GM.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_GU.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_GU.php
deleted file mode 100644
index f086dc63..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_GU.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/en.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_GY.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_GY.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_GY.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_HK.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_HK.php
deleted file mode 100644
index 34aae989..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_HK.php
+++ /dev/null
@@ -1,18 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_IE.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_IE.php
deleted file mode 100644
index c8d3c2fc..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_IE.php
+++ /dev/null
@@ -1,31 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Martin McWhorter
- * - François B
- * - Chris Cartlidge
- * - JD Isaacks
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'from_now' => 'in :time',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD-MM-YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_IL.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_IL.php
deleted file mode 100644
index e607924e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_IL.php
+++ /dev/null
@@ -1,29 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Yoav Amit
- * - François B
- * - Mayank Badola
- * - JD Isaacks
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'from_now' => 'in :time',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_IM.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_IM.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_IM.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_IN.php
deleted file mode 100644
index 00414e9a..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_IN.php
+++ /dev/null
@@ -1,26 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YY',
- 'LL' => 'MMMM DD, YYYY',
- 'LLL' => 'DD MMM HH:mm',
- 'LLLL' => 'MMMM DD, YYYY HH:mm',
- ],
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_IO.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_IO.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_IO.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_ISO.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_ISO.php
deleted file mode 100644
index 11457b0c..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_ISO.php
+++ /dev/null
@@ -1,21 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'YYYY-MM-dd',
- 'LL' => 'YYYY MMM D',
- 'LLL' => 'YYYY MMMM D HH:mm',
- 'LLLL' => 'dddd, YYYY MMMM DD HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_JE.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_JE.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_JE.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_JM.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_JM.php
deleted file mode 100644
index f086dc63..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_JM.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/en.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_KE.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_KE.php
deleted file mode 100644
index f086dc63..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_KE.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/en.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_KI.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_KI.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_KI.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_KN.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_KN.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_KN.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_KY.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_KY.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_KY.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_LC.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_LC.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_LC.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_LR.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_LR.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_LR.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_LS.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_LS.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_LS.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_MG.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_MG.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_MG.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_MH.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_MH.php
deleted file mode 100644
index f086dc63..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_MH.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/en.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_MO.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_MO.php
deleted file mode 100644
index f086dc63..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_MO.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/en.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_MP.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_MP.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_MP.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_MS.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_MS.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_MS.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_MT.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_MT.php
deleted file mode 100644
index f086dc63..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_MT.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/en.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_MU.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_MU.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_MU.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_MW.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_MW.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_MW.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_MY.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_MY.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_MY.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_NA.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_NA.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_NA.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_NF.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_NF.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_NF.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_NG.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_NG.php
deleted file mode 100644
index 67bceaad..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_NG.php
+++ /dev/null
@@ -1,18 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YY',
- ],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_NL.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_NL.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_NL.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_NR.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_NR.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_NR.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_NU.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_NU.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_NU.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_NZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_NZ.php
deleted file mode 100644
index 6a206a0d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_NZ.php
+++ /dev/null
@@ -1,31 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - François B
- * - Mayank Badola
- * - Luke McGregor
- * - JD Isaacks
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'from_now' => 'in :time',
- 'formats' => [
- 'LT' => 'h:mm A',
- 'LTS' => 'h:mm:ss A',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY h:mm A',
- 'LLLL' => 'dddd, D MMMM YYYY h:mm A',
- ],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_PG.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_PG.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_PG.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_PH.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_PH.php
deleted file mode 100644
index 34aae989..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_PH.php
+++ /dev/null
@@ -1,18 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_PK.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_PK.php
deleted file mode 100644
index f086dc63..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_PK.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/en.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_PN.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_PN.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_PN.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_PR.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_PR.php
deleted file mode 100644
index f086dc63..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_PR.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/en.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_PW.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_PW.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_PW.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_RW.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_RW.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_RW.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_SB.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_SB.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_SB.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_SC.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_SC.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_SC.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_SD.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_SD.php
deleted file mode 100644
index c4e2557e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_SD.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 6,
- 'weekend' => [5, 6],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_SE.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_SE.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_SE.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_SG.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_SG.php
deleted file mode 100644
index 5ee95241..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_SG.php
+++ /dev/null
@@ -1,24 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'from_now' => 'in :time',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_SH.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_SH.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_SH.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_SI.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_SI.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_SI.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_SL.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_SL.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_SL.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_SS.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_SS.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_SS.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_SX.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_SX.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_SX.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_SZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_SZ.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_SZ.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_TC.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_TC.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_TC.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_TK.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_TK.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_TK.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_TO.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_TO.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_TO.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_TT.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_TT.php
deleted file mode 100644
index f086dc63..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_TT.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/en.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_TV.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_TV.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_TV.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_TZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_TZ.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_TZ.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_UG.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_UG.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_UG.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_UM.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_UM.php
deleted file mode 100644
index f086dc63..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_UM.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/en.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_US.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_US.php
deleted file mode 100644
index f086dc63..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_US.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/en.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_US_Posix.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_US_Posix.php
deleted file mode 100644
index f086dc63..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_US_Posix.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/en.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_VC.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_VC.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_VC.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_VG.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_VG.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_VG.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_VI.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_VI.php
deleted file mode 100644
index f086dc63..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_VI.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/en.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_VU.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_VU.php
deleted file mode 100644
index e2dd81db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_VU.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_WS.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_WS.php
deleted file mode 100644
index f086dc63..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_WS.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/en.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_ZA.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_ZA.php
deleted file mode 100644
index 48ea9471..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_ZA.php
+++ /dev/null
@@ -1,26 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Zuza Software Foundation (Translate.org.za) Dwayne Bailey dwayne@translate.org.za
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YY',
- 'LL' => 'MMMM DD, YYYY',
- 'LLL' => 'DD MMM HH:mm',
- 'LLLL' => 'MMMM DD, YYYY HH:mm',
- ],
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_ZM.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_ZM.php
deleted file mode 100644
index d8a8cb59..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_ZM.php
+++ /dev/null
@@ -1,22 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - ANLoc Martin Benjamin locales@africanlocalization.net
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YY',
- ],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_ZW.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_ZW.php
deleted file mode 100644
index f086dc63..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/en_ZW.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/en.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/eo.php b/vendor/nesbot/carbon/src/Carbon/Lang/eo.php
deleted file mode 100644
index 7c2efba2..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/eo.php
+++ /dev/null
@@ -1,77 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Josh Soref
- * - François B
- * - Mia Nordentoft
- * - JD Isaacks
- */
-return [
- 'year' => ':count jaro|:count jaroj',
- 'a_year' => 'jaro|:count jaroj',
- 'y' => ':count j.',
- 'month' => ':count monato|:count monatoj',
- 'a_month' => 'monato|:count monatoj',
- 'm' => ':count mo.',
- 'week' => ':count semajno|:count semajnoj',
- 'a_week' => 'semajno|:count semajnoj',
- 'w' => ':count sem.',
- 'day' => ':count tago|:count tagoj',
- 'a_day' => 'tago|:count tagoj',
- 'd' => ':count t.',
- 'hour' => ':count horo|:count horoj',
- 'a_hour' => 'horo|:count horoj',
- 'h' => ':count h.',
- 'minute' => ':count minuto|:count minutoj',
- 'a_minute' => 'minuto|:count minutoj',
- 'min' => ':count min.',
- 'second' => ':count sekundo|:count sekundoj',
- 'a_second' => 'sekundoj|:count sekundoj',
- 's' => ':count sek.',
- 'ago' => 'antaŭ :time',
- 'from_now' => 'post :time',
- 'after' => ':time poste',
- 'before' => ':time antaŭe',
- 'diff_yesterday' => 'Hieraŭ',
- 'diff_yesterday_regexp' => 'Hieraŭ(?:\\s+je)?',
- 'diff_today' => 'Hodiaŭ',
- 'diff_today_regexp' => 'Hodiaŭ(?:\\s+je)?',
- 'diff_tomorrow' => 'Morgaŭ',
- 'diff_tomorrow_regexp' => 'Morgaŭ(?:\\s+je)?',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'YYYY-MM-DD',
- 'LL' => 'D[-a de] MMMM, YYYY',
- 'LLL' => 'D[-a de] MMMM, YYYY HH:mm',
- 'LLLL' => 'dddd, [la] D[-a de] MMMM, YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[Hodiaŭ je] LT',
- 'nextDay' => '[Morgaŭ je] LT',
- 'nextWeek' => 'dddd [je] LT',
- 'lastDay' => '[Hieraŭ je] LT',
- 'lastWeek' => '[pasinta] dddd [je] LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => ':numbera',
- 'meridiem' => ['a.t.m.', 'p.t.m.'],
- 'months' => ['januaro', 'februaro', 'marto', 'aprilo', 'majo', 'junio', 'julio', 'aŭgusto', 'septembro', 'oktobro', 'novembro', 'decembro'],
- 'months_short' => ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'aŭg', 'sep', 'okt', 'nov', 'dec'],
- 'weekdays' => ['dimanĉo', 'lundo', 'mardo', 'merkredo', 'ĵaŭdo', 'vendredo', 'sabato'],
- 'weekdays_short' => ['dim', 'lun', 'mard', 'merk', 'ĵaŭ', 'ven', 'sab'],
- 'weekdays_min' => ['di', 'lu', 'ma', 'me', 'ĵa', 've', 'sa'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'list' => [', ', ' kaj '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es.php b/vendor/nesbot/carbon/src/Carbon/Lang/es.php
deleted file mode 100644
index f77ec39c..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/es.php
+++ /dev/null
@@ -1,111 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Kunal Marwaha
- * - kostas
- * - François B
- * - Tim Fish
- * - Claire Coloma
- * - Steven Heinrich
- * - JD Isaacks
- * - Raphael Amorim
- * - Jorge Y. Castillo
- * - Víctor Díaz
- * - Diego
- * - Sebastian Thierer
- * - quinterocesar
- * - Daniel Commesse Liévanos (danielcommesse)
- * - Pete Scopes (pdscopes)
- */
-
-use Carbon\CarbonInterface;
-
-return [
- 'year' => ':count año|:count años',
- 'a_year' => 'un año|:count años',
- 'y' => ':count año|:count años',
- 'month' => ':count mes|:count meses',
- 'a_month' => 'un mes|:count meses',
- 'm' => ':count mes|:count meses',
- 'week' => ':count semana|:count semanas',
- 'a_week' => 'una semana|:count semanas',
- 'w' => ':countsem',
- 'day' => ':count día|:count días',
- 'a_day' => 'un día|:count días',
- 'd' => ':countd',
- 'hour' => ':count hora|:count horas',
- 'a_hour' => 'una hora|:count horas',
- 'h' => ':counth',
- 'minute' => ':count minuto|:count minutos',
- 'a_minute' => 'un minuto|:count minutos',
- 'min' => ':countm',
- 'second' => ':count segundo|:count segundos',
- 'a_second' => 'unos segundos|:count segundos',
- 's' => ':counts',
- 'millisecond' => ':count milisegundo|:count milisegundos',
- 'a_millisecond' => 'un milisegundo|:count milisegundos',
- 'ms' => ':countms',
- 'microsecond' => ':count microsegundo|:count microsegundos',
- 'a_microsecond' => 'un microsegundo|:count microsegundos',
- 'µs' => ':countµs',
- 'ago' => 'hace :time',
- 'from_now' => 'en :time',
- 'after' => ':time después',
- 'before' => ':time antes',
- 'diff_now' => 'ahora mismo',
- 'diff_today' => 'hoy',
- 'diff_today_regexp' => 'hoy(?:\\s+a)?(?:\\s+las)?',
- 'diff_yesterday' => 'ayer',
- 'diff_yesterday_regexp' => 'ayer(?:\\s+a)?(?:\\s+las)?',
- 'diff_tomorrow' => 'mañana',
- 'diff_tomorrow_regexp' => 'mañana(?:\\s+a)?(?:\\s+las)?',
- 'diff_before_yesterday' => 'anteayer',
- 'diff_after_tomorrow' => 'pasado mañana',
- 'formats' => [
- 'LT' => 'H:mm',
- 'LTS' => 'H:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D [de] MMMM [de] YYYY',
- 'LLL' => 'D [de] MMMM [de] YYYY H:mm',
- 'LLLL' => 'dddd, D [de] MMMM [de] YYYY H:mm',
- ],
- 'calendar' => [
- 'sameDay' => function (CarbonInterface $current) {
- return '[hoy a la'.($current->hour !== 1 ? 's' : '').'] LT';
- },
- 'nextDay' => function (CarbonInterface $current) {
- return '[mañana a la'.($current->hour !== 1 ? 's' : '').'] LT';
- },
- 'nextWeek' => function (CarbonInterface $current) {
- return 'dddd [a la'.($current->hour !== 1 ? 's' : '').'] LT';
- },
- 'lastDay' => function (CarbonInterface $current) {
- return '[ayer a la'.($current->hour !== 1 ? 's' : '').'] LT';
- },
- 'lastWeek' => function (CarbonInterface $current) {
- return '[el] dddd [pasado a la'.($current->hour !== 1 ? 's' : '').'] LT';
- },
- 'sameElse' => 'L',
- ],
- 'months' => ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre'],
- 'months_short' => ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'sep', 'oct', 'nov', 'dic'],
- 'mmm_suffix' => '.',
- 'ordinal' => ':numberº',
- 'weekdays' => ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'],
- 'weekdays_short' => ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'],
- 'weekdays_min' => ['do', 'lu', 'ma', 'mi', 'ju', 'vi', 'sá'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' y '],
- 'meridiem' => ['a. m.', 'p. m.'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_419.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_419.php
deleted file mode 100644
index a74806e8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/es_419.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - RAP bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/es.php', [
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_AR.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_AR.php
deleted file mode 100644
index a74806e8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/es_AR.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - RAP bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/es.php', [
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_BO.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_BO.php
deleted file mode 100644
index c9b8432e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/es_BO.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - RAP bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/es.php', [
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_BR.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_BR.php
deleted file mode 100644
index 378d0547..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/es_BR.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/es.php', [
- 'first_day_of_week' => 0,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_BZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_BZ.php
deleted file mode 100644
index 378d0547..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/es_BZ.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/es.php', [
- 'first_day_of_week' => 0,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_CL.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_CL.php
deleted file mode 100644
index a74806e8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/es_CL.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - RAP bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/es.php', [
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_CO.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_CO.php
deleted file mode 100644
index a74806e8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/es_CO.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - RAP bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/es.php', [
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_CR.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_CR.php
deleted file mode 100644
index 553fc09f..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/es_CR.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Free Software Foundation, Inc. bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/es.php', [
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_CU.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_CU.php
deleted file mode 100644
index f02e1a66..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/es_CU.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/es.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_DO.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_DO.php
deleted file mode 100644
index 0f855bac..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/es_DO.php
+++ /dev/null
@@ -1,31 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - kostas
- * - François B
- * - Tim Fish
- * - Chiel Robben
- * - Claire Coloma
- * - Steven Heinrich
- * - JD Isaacks
- * - Raphael Amorim
- */
-return array_replace_recursive(require __DIR__.'/es.php', [
- 'diff_before_yesterday' => 'anteayer',
- 'formats' => [
- 'LT' => 'h:mm A',
- 'LTS' => 'h:mm:ss A',
- 'LLL' => 'D [de] MMMM [de] YYYY h:mm A',
- 'LLLL' => 'dddd, D [de] MMMM [de] YYYY h:mm A',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_EA.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_EA.php
deleted file mode 100644
index f02e1a66..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/es_EA.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/es.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_EC.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_EC.php
deleted file mode 100644
index a74806e8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/es_EC.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - RAP bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/es.php', [
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_ES.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_ES.php
deleted file mode 100644
index 19217c27..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/es_ES.php
+++ /dev/null
@@ -1,16 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - RAP bug-glibc-locales@gnu.org
- */
-return require __DIR__.'/es.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_GQ.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_GQ.php
deleted file mode 100644
index f02e1a66..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/es_GQ.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/es.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_GT.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_GT.php
deleted file mode 100644
index a74806e8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/es_GT.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - RAP bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/es.php', [
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_HN.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_HN.php
deleted file mode 100644
index a74806e8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/es_HN.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - RAP bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/es.php', [
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_IC.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_IC.php
deleted file mode 100644
index f02e1a66..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/es_IC.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/es.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_MX.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_MX.php
deleted file mode 100644
index 61e14cfa..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/es_MX.php
+++ /dev/null
@@ -1,20 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - RAP bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/es.php', [
- 'diff_before_yesterday' => 'antier',
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_NI.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_NI.php
deleted file mode 100644
index 6b964c14..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/es_NI.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Free Software Foundation, Inc. bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/es.php', [
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_PA.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_PA.php
deleted file mode 100644
index a74806e8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/es_PA.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - RAP bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/es.php', [
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_PE.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_PE.php
deleted file mode 100644
index a74806e8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/es_PE.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - RAP bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/es.php', [
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_PH.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_PH.php
deleted file mode 100644
index deae06a1..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/es_PH.php
+++ /dev/null
@@ -1,22 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/es.php', [
- 'first_day_of_week' => 0,
- 'formats' => [
- 'LT' => 'h:mm a',
- 'LTS' => 'h:mm:ss a',
- 'L' => 'D/M/yy',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D [de] MMMM [de] YYYY h:mm a',
- 'LLLL' => 'dddd, D [de] MMMM [de] YYYY h:mm a',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_PR.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_PR.php
deleted file mode 100644
index 6b964c14..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/es_PR.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Free Software Foundation, Inc. bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/es.php', [
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_PY.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_PY.php
deleted file mode 100644
index a74806e8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/es_PY.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - RAP bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/es.php', [
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_SV.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_SV.php
deleted file mode 100644
index 00db08e2..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/es_SV.php
+++ /dev/null
@@ -1,20 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - RAP bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/es.php', [
- 'months' => ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre'],
- 'months_short' => ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'sep', 'oct', 'nov', 'dic'],
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_US.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_US.php
deleted file mode 100644
index f333136f..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/es_US.php
+++ /dev/null
@@ -1,38 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Kunal Marwaha
- * - Josh Soref
- * - Jørn Ølmheim
- * - Craig Patik
- * - bustta
- * - François B
- * - Tim Fish
- * - Claire Coloma
- * - Steven Heinrich
- * - JD Isaacks
- * - Raphael Amorim
- */
-return array_replace_recursive(require __DIR__.'/es.php', [
- 'diff_before_yesterday' => 'anteayer',
- 'formats' => [
- 'LT' => 'h:mm A',
- 'LTS' => 'h:mm:ss A',
- 'L' => 'MM/DD/YYYY',
- 'LL' => 'MMMM [de] D [de] YYYY',
- 'LLL' => 'MMMM [de] D [de] YYYY h:mm A',
- 'LLLL' => 'dddd, MMMM [de] D [de] YYYY h:mm A',
- ],
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_UY.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_UY.php
deleted file mode 100644
index 39baff8b..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/es_UY.php
+++ /dev/null
@@ -1,21 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - RAP bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/es.php', [
- 'months' => ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'setiembre', 'octubre', 'noviembre', 'diciembre'],
- 'months_short' => ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'set', 'oct', 'nov', 'dic'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_VE.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_VE.php
deleted file mode 100644
index a74806e8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/es_VE.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - RAP bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/es.php', [
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/et.php b/vendor/nesbot/carbon/src/Carbon/Lang/et.php
deleted file mode 100644
index f49c8806..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/et.php
+++ /dev/null
@@ -1,93 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Philippe Vaucher
- * - Andres Ivanov
- * - Tsutomu Kuroda
- * - tjku
- * - Max Melentiev
- * - Juanito Fatas
- * - RM87
- * - Akira Matsuda
- * - Christopher Dell
- * - Enrique Vidal
- * - Simone Carletti
- * - Aaron Patterson
- * - Esko Lehtme
- * - Mart Karu
- * - Nicolás Hock Isaza
- * - Kevin Valdek
- * - Zahhar Kirillov
- * - João Magalhães
- * - Ingmar
- * - Illimar Tambek
- * - Mihkel
- */
-return [
- 'year' => ':count aasta|:count aastat',
- 'y' => ':count a',
- 'month' => ':count kuu|:count kuud',
- 'm' => ':count k',
- 'week' => ':count nädal|:count nädalat',
- 'w' => ':count näd',
- 'day' => ':count päev|:count päeva',
- 'd' => ':count p',
- 'hour' => ':count tund|:count tundi',
- 'h' => ':count t',
- 'minute' => ':count minut|:count minutit',
- 'min' => ':count min',
- 'second' => ':count sekund|:count sekundit',
- 's' => ':count s',
- 'ago' => ':time tagasi',
- 'from_now' => ':time pärast',
- 'after' => ':time pärast',
- 'before' => ':time enne',
- 'year_from_now' => ':count aasta',
- 'month_from_now' => ':count kuu',
- 'week_from_now' => ':count nädala',
- 'day_from_now' => ':count päeva',
- 'hour_from_now' => ':count tunni',
- 'minute_from_now' => ':count minuti',
- 'second_from_now' => ':count sekundi',
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'diff_now' => 'nüüd',
- 'diff_today' => 'täna',
- 'diff_yesterday' => 'eile',
- 'diff_tomorrow' => 'homme',
- 'diff_before_yesterday' => 'üleeile',
- 'diff_after_tomorrow' => 'ülehomme',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'D. MMMM YYYY',
- 'LLL' => 'D. MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D. MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[täna] LT',
- 'nextDay' => '[homme] LT',
- 'lastDay' => '[eile] LT',
- 'nextWeek' => 'dddd LT',
- 'lastWeek' => '[eelmine] dddd LT',
- 'sameElse' => 'L',
- ],
- 'months' => ['jaanuar', 'veebruar', 'märts', 'aprill', 'mai', 'juuni', 'juuli', 'august', 'september', 'oktoober', 'november', 'detsember'],
- 'months_short' => ['jaan', 'veebr', 'märts', 'apr', 'mai', 'juuni', 'juuli', 'aug', 'sept', 'okt', 'nov', 'dets'],
- 'weekdays' => ['pühapäev', 'esmaspäev', 'teisipäev', 'kolmapäev', 'neljapäev', 'reede', 'laupäev'],
- 'weekdays_short' => ['P', 'E', 'T', 'K', 'N', 'R', 'L'],
- 'weekdays_min' => ['P', 'E', 'T', 'K', 'N', 'R', 'L'],
- 'list' => [', ', ' ja '],
- 'meridiem' => ['enne lõunat', 'pärast lõunat'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/et_EE.php b/vendor/nesbot/carbon/src/Carbon/Lang/et_EE.php
deleted file mode 100644
index 0f112b34..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/et_EE.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/et.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/eu.php b/vendor/nesbot/carbon/src/Carbon/Lang/eu.php
deleted file mode 100644
index a543f1a6..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/eu.php
+++ /dev/null
@@ -1,67 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Josh Soref
- * - François B
- * - JD Isaacks
- */
-return [
- 'year' => 'urte bat|:count urte',
- 'y' => 'Urte 1|:count urte',
- 'month' => 'hilabete bat|:count hilabete',
- 'm' => 'Hile 1|:count hile',
- 'week' => 'Aste 1|:count aste',
- 'w' => 'Aste 1|:count aste',
- 'day' => 'egun bat|:count egun',
- 'd' => 'Egun 1|:count egun',
- 'hour' => 'ordu bat|:count ordu',
- 'h' => 'Ordu 1|:count ordu',
- 'minute' => 'minutu bat|:count minutu',
- 'min' => 'Minutu 1|:count minutu',
- 'second' => 'segundo batzuk|:count segundo',
- 's' => 'Segundu 1|:count segundu',
- 'ago' => 'duela :time',
- 'from_now' => ':time barru',
- 'after' => ':time geroago',
- 'before' => ':time lehenago',
- 'diff_now' => 'orain',
- 'diff_today' => 'gaur',
- 'diff_yesterday' => 'atzo',
- 'diff_tomorrow' => 'bihar',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'YYYY-MM-DD',
- 'LL' => 'YYYY[ko] MMMM[ren] D[a]',
- 'LLL' => 'YYYY[ko] MMMM[ren] D[a] HH:mm',
- 'LLLL' => 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[gaur] LT[etan]',
- 'nextDay' => '[bihar] LT[etan]',
- 'nextWeek' => 'dddd LT[etan]',
- 'lastDay' => '[atzo] LT[etan]',
- 'lastWeek' => '[aurreko] dddd LT[etan]',
- 'sameElse' => 'L',
- ],
- 'ordinal' => ':number.',
- 'months' => ['urtarrila', 'otsaila', 'martxoa', 'apirila', 'maiatza', 'ekaina', 'uztaila', 'abuztua', 'iraila', 'urria', 'azaroa', 'abendua'],
- 'months_short' => ['urt.', 'ots.', 'mar.', 'api.', 'mai.', 'eka.', 'uzt.', 'abu.', 'ira.', 'urr.', 'aza.', 'abe.'],
- 'weekdays' => ['igandea', 'astelehena', 'asteartea', 'asteazkena', 'osteguna', 'ostirala', 'larunbata'],
- 'weekdays_short' => ['ig.', 'al.', 'ar.', 'az.', 'og.', 'ol.', 'lr.'],
- 'weekdays_min' => ['ig', 'al', 'ar', 'az', 'og', 'ol', 'lr'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'list' => [', ', ' eta '],
- 'meridiem' => ['g', 'a'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/eu_ES.php b/vendor/nesbot/carbon/src/Carbon/Lang/eu_ES.php
deleted file mode 100644
index 0d1e82a9..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/eu_ES.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/eu.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ewo.php b/vendor/nesbot/carbon/src/Carbon/Lang/ewo.php
deleted file mode 100644
index 7808ab50..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ewo.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['kíkíríg', 'ngəgógəle'],
- 'weekdays' => ['sɔ́ndɔ', 'mɔ́ndi', 'sɔ́ndɔ məlú mə́bɛ̌', 'sɔ́ndɔ məlú mə́lɛ́', 'sɔ́ndɔ məlú mə́nyi', 'fúladé', 'séradé'],
- 'weekdays_short' => ['sɔ́n', 'mɔ́n', 'smb', 'sml', 'smn', 'fúl', 'sér'],
- 'weekdays_min' => ['sɔ́n', 'mɔ́n', 'smb', 'sml', 'smn', 'fúl', 'sér'],
- 'months' => ['ngɔn osú', 'ngɔn bɛ̌', 'ngɔn lála', 'ngɔn nyina', 'ngɔn tána', 'ngɔn saməna', 'ngɔn zamgbála', 'ngɔn mwom', 'ngɔn ebulú', 'ngɔn awóm', 'ngɔn awóm ai dziá', 'ngɔn awóm ai bɛ̌'],
- 'months_short' => ['ngo', 'ngb', 'ngl', 'ngn', 'ngt', 'ngs', 'ngz', 'ngm', 'nge', 'nga', 'ngad', 'ngab'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D/M/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
-
- // Too unreliable
- /*
- 'year' => ':count mbu', // less reliable
- 'y' => ':count mbu', // less reliable
- 'a_year' => ':count mbu', // less reliable
-
- 'month' => ':count ngòn', // less reliable
- 'm' => ':count ngòn', // less reliable
- 'a_month' => ':count ngòn', // less reliable
-
- 'week' => ':count mësë', // less reliable
- 'w' => ':count mësë', // less reliable
- 'a_week' => ':count mësë', // less reliable
-
- 'day' => ':count mësë', // less reliable
- 'd' => ':count mësë', // less reliable
- 'a_day' => ':count mësë', // less reliable
-
- 'hour' => ':count awola', // less reliable
- 'h' => ':count awola', // less reliable
- 'a_hour' => ':count awola', // less reliable
-
- 'minute' => ':count awola', // less reliable
- 'min' => ':count awola', // less reliable
- 'a_minute' => ':count awola', // less reliable
- */
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fa.php b/vendor/nesbot/carbon/src/Carbon/Lang/fa.php
deleted file mode 100644
index 72e03085..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fa.php
+++ /dev/null
@@ -1,84 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Josh Soref
- * - François B
- * - Nasser Ghiasi
- * - JD Isaacks
- * - Hossein Jabbari
- * - nimamo
- * - hafezdivandari
- * - Hassan Pezeshk (hpez)
- */
-return [
- 'year' => ':count سال',
- 'a_year' => 'یک سال'.'|:count '.'سال',
- 'y' => ':count سال',
- 'month' => ':count ماه',
- 'a_month' => 'یک ماه'.'|:count '.'ماه',
- 'm' => ':count ماه',
- 'week' => ':count هفته',
- 'a_week' => 'یک هفته'.'|:count '.'هفته',
- 'w' => ':count هفته',
- 'day' => ':count روز',
- 'a_day' => 'یک روز'.'|:count '.'روز',
- 'd' => ':count روز',
- 'hour' => ':count ساعت',
- 'a_hour' => 'یک ساعت'.'|:count '.'ساعت',
- 'h' => ':count ساعت',
- 'minute' => ':count دقیقه',
- 'a_minute' => 'یک دقیقه'.'|:count '.'دقیقه',
- 'min' => ':count دقیقه',
- 'second' => ':count ثانیه',
- 's' => ':count ثانیه',
- 'ago' => ':time پیش',
- 'from_now' => ':time دیگر',
- 'after' => ':time پس از',
- 'before' => ':time پیش از',
- 'diff_now' => 'اکنون',
- 'diff_today' => 'امروز',
- 'diff_today_regexp' => 'امروز(?:\\s+ساعت)?',
- 'diff_yesterday' => 'دیروز',
- 'diff_yesterday_regexp' => 'دیروز(?:\\s+ساعت)?',
- 'diff_tomorrow' => 'فردا',
- 'diff_tomorrow_regexp' => 'فردا(?:\\s+ساعت)?',
- 'formats' => [
- 'LT' => 'OH:Om',
- 'LTS' => 'OH:Om:Os',
- 'L' => 'OD/OM/OY',
- 'LL' => 'OD MMMM OY',
- 'LLL' => 'OD MMMM OY OH:Om',
- 'LLLL' => 'dddd, OD MMMM OY OH:Om',
- ],
- 'calendar' => [
- 'sameDay' => '[امروز ساعت] LT',
- 'nextDay' => '[فردا ساعت] LT',
- 'nextWeek' => 'dddd [ساعت] LT',
- 'lastDay' => '[دیروز ساعت] LT',
- 'lastWeek' => 'dddd [پیش] [ساعت] LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => ':timeم',
- 'meridiem' => ['قبل از ظهر', 'بعد از ظهر'],
- 'months' => ['ژانویه', 'فوریه', 'مارس', 'آوریل', 'مه', 'ژوئن', 'ژوئیه', 'اوت', 'سپتامبر', 'اکتبر', 'نوامبر', 'دسامبر'],
- 'months_short' => ['ژانویه', 'فوریه', 'مارس', 'آوریل', 'مه', 'ژوئن', 'ژوئیه', 'اوت', 'سپتامبر', 'اکتبر', 'نوامبر', 'دسامبر'],
- 'weekdays' => ['یکشنبه', 'دوشنبه', 'سهشنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه'],
- 'weekdays_short' => ['یکشنبه', 'دوشنبه', 'سهشنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه'],
- 'weekdays_min' => ['ی', 'د', 'س', 'چ', 'پ', 'ج', 'ش'],
- 'first_day_of_week' => 6,
- 'day_of_first_week_of_year' => 1,
- 'list' => ['، ', ' و '],
- 'alt_numbers' => ['۰۰', '۰۱', '۰۲', '۰۳', '۰۴', '۰۵', '۰۶', '۰۷', '۰۸', '۰۹', '۱۰', '۱۱', '۱۲', '۱۳', '۱۴', '۱۵', '۱۶', '۱۷', '۱۸', '۱۹', '۲۰', '۲۱', '۲۲', '۲۳', '۲۴', '۲۵', '۲۶', '۲۷', '۲۸', '۲۹', '۳۰', '۳۱', '۳۲', '۳۳', '۳۴', '۳۵', '۳۶', '۳۷', '۳۸', '۳۹', '۴۰', '۴۱', '۴۲', '۴۳', '۴۴', '۴۵', '۴۶', '۴۷', '۴۸', '۴۹', '۵۰', '۵۱', '۵۲', '۵۳', '۵۴', '۵۵', '۵۶', '۵۷', '۵۸', '۵۹', '۶۰', '۶۱', '۶۲', '۶۳', '۶۴', '۶۵', '۶۶', '۶۷', '۶۸', '۶۹', '۷۰', '۷۱', '۷۲', '۷۳', '۷۴', '۷۵', '۷۶', '۷۷', '۷۸', '۷۹', '۸۰', '۸۱', '۸۲', '۸۳', '۸۴', '۸۵', '۸۶', '۸۷', '۸۸', '۸۹', '۹۰', '۹۱', '۹۲', '۹۳', '۹۴', '۹۵', '۹۶', '۹۷', '۹۸', '۹۹'],
- 'months_short_standalone' => ['ژانویه', 'فوریه', 'مارس', 'آوریل', 'مه', 'ژوئن', 'ژوئیه', 'اوت', 'سپتامبر', 'اکتبر', 'نوامبر', 'دسامبر'],
- 'weekend' => [5, 5],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fa_AF.php b/vendor/nesbot/carbon/src/Carbon/Lang/fa_AF.php
deleted file mode 100644
index 69471004..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fa_AF.php
+++ /dev/null
@@ -1,21 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/fa.php', [
- 'meridiem' => ['ق', 'ب'],
- 'weekend' => [4, 5],
- 'formats' => [
- 'L' => 'OY/OM/OD',
- 'LL' => 'OD MMM OY',
- 'LLL' => 'OD MMMM OY، H:mm',
- 'LLLL' => 'dddd OD MMMM OY، H:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fa_IR.php b/vendor/nesbot/carbon/src/Carbon/Lang/fa_IR.php
deleted file mode 100644
index 08d01825..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fa_IR.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fa.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ff.php b/vendor/nesbot/carbon/src/Carbon/Lang/ff.php
deleted file mode 100644
index 9525c95a..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ff.php
+++ /dev/null
@@ -1,60 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM, YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
- 'months' => ['siilo', 'colte', 'mbooy', 'seeɗto', 'duujal', 'korse', 'morso', 'juko', 'siilto', 'yarkomaa', 'jolal', 'bowte'],
- 'months_short' => ['sii', 'col', 'mbo', 'see', 'duu', 'kor', 'mor', 'juk', 'slt', 'yar', 'jol', 'bow'],
- 'weekdays' => ['dewo', 'aaɓnde', 'mawbaare', 'njeslaare', 'naasaande', 'mawnde', 'hoore-biir'],
- 'weekdays_short' => ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'],
- 'weekdays_min' => ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['subaka', 'kikiiɗe'],
-
- 'year' => ':count baret', // less reliable
- 'y' => ':count baret', // less reliable
- 'a_year' => ':count baret', // less reliable
-
- 'month' => ':count lewru', // less reliable
- 'm' => ':count lewru', // less reliable
- 'a_month' => ':count lewru', // less reliable
-
- 'week' => ':count naange', // less reliable
- 'w' => ':count naange', // less reliable
- 'a_week' => ':count naange', // less reliable
-
- 'day' => ':count dian', // less reliable
- 'd' => ':count dian', // less reliable
- 'a_day' => ':count dian', // less reliable
-
- 'hour' => ':count montor', // less reliable
- 'h' => ':count montor', // less reliable
- 'a_hour' => ':count montor', // less reliable
-
- 'minute' => ':count tokossuoum', // less reliable
- 'min' => ':count tokossuoum', // less reliable
- 'a_minute' => ':count tokossuoum', // less reliable
-
- 'second' => ':count tenen', // less reliable
- 's' => ':count tenen', // less reliable
- 'a_second' => ':count tenen', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ff_CM.php b/vendor/nesbot/carbon/src/Carbon/Lang/ff_CM.php
deleted file mode 100644
index b797ac09..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ff_CM.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/ff.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ff_GN.php b/vendor/nesbot/carbon/src/Carbon/Lang/ff_GN.php
deleted file mode 100644
index b797ac09..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ff_GN.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/ff.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ff_MR.php b/vendor/nesbot/carbon/src/Carbon/Lang/ff_MR.php
deleted file mode 100644
index 2f4c29f6..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ff_MR.php
+++ /dev/null
@@ -1,21 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/ff.php', [
- 'formats' => [
- 'LT' => 'h:mm a',
- 'LTS' => 'h:mm:ss a',
- 'L' => 'D/M/YYYY',
- 'LL' => 'D MMM, YYYY',
- 'LLL' => 'D MMMM YYYY h:mm a',
- 'LLLL' => 'dddd D MMMM YYYY h:mm a',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ff_SN.php b/vendor/nesbot/carbon/src/Carbon/Lang/ff_SN.php
deleted file mode 100644
index 1e4c8b6c..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ff_SN.php
+++ /dev/null
@@ -1,16 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Pular-Fulfulde.org Ibrahima Sarr admin@pulaar-fulfulde.org
- */
-return require __DIR__.'/ff.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fi.php b/vendor/nesbot/carbon/src/Carbon/Lang/fi.php
deleted file mode 100644
index 2003e1ea..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fi.php
+++ /dev/null
@@ -1,86 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Philippe Vaucher
- * - Janne Warén
- * - digitalfrost
- * - Tsutomu Kuroda
- * - Roope Salmi
- * - tjku
- * - Max Melentiev
- * - Sami Haahtinen
- * - Teemu Leisti
- * - Artem Ignatyev
- * - Akira Matsuda
- * - Christopher Dell
- * - Enrique Vidal
- * - Simone Carletti
- * - Robert Bjarnason
- * - Aaron Patterson
- * - Nicolás Hock Isaza
- * - Tom Hughes
- * - Sven Fuchs
- * - Petri Kivikangas
- * - Nizar Jouini
- * - Marko Seppae
- * - Tomi Mynttinen (Pikseli)
- * - Petteri (powergrip)
- */
-return [
- 'year' => ':count vuosi|:count vuotta',
- 'y' => ':count v',
- 'month' => ':count kuukausi|:count kuukautta',
- 'm' => ':count kk',
- 'week' => ':count viikko|:count viikkoa',
- 'w' => ':count vk',
- 'day' => ':count päivä|:count päivää',
- 'd' => ':count pv',
- 'hour' => ':count tunti|:count tuntia',
- 'h' => ':count t',
- 'minute' => ':count minuutti|:count minuuttia',
- 'min' => ':count min',
- 'second' => ':count sekunti|:count sekuntia',
- 'a_second' => 'muutama sekunti|:count sekuntia',
- 's' => ':count s',
- 'ago' => ':time sitten',
- 'from_now' => ':time päästä',
- 'year_from_now' => ':count vuoden',
- 'month_from_now' => ':count kuukauden',
- 'week_from_now' => ':count viikon',
- 'day_from_now' => ':count päivän',
- 'hour_from_now' => ':count tunnin',
- 'minute_from_now' => ':count minuutin',
- 'second_from_now' => ':count sekunnin',
- 'after' => ':time sen jälkeen',
- 'before' => ':time ennen',
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' ja '],
- 'diff_now' => 'nyt',
- 'diff_yesterday' => 'eilen',
- 'diff_tomorrow' => 'huomenna',
- 'formats' => [
- 'LT' => 'HH.mm',
- 'LTS' => 'HH.mm:ss',
- 'L' => 'D.M.YYYY',
- 'LL' => 'dddd D. MMMM[ta] YYYY',
- 'LLL' => 'D.MM. HH.mm',
- 'LLLL' => 'D. MMMM[ta] YYYY HH.mm',
- ],
- 'weekdays' => ['sunnuntai', 'maanantai', 'tiistai', 'keskiviikko', 'torstai', 'perjantai', 'lauantai'],
- 'weekdays_short' => ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'],
- 'weekdays_min' => ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'],
- 'months' => ['tammikuu', 'helmikuu', 'maaliskuu', 'huhtikuu', 'toukokuu', 'kesäkuu', 'heinäkuu', 'elokuu', 'syyskuu', 'lokakuu', 'marraskuu', 'joulukuu'],
- 'months_short' => ['tammi', 'helmi', 'maalis', 'huhti', 'touko', 'kesä', 'heinä', 'elo', 'syys', 'loka', 'marras', 'joulu'],
- 'meridiem' => ['aamupäivä', 'iltapäivä'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fi_FI.php b/vendor/nesbot/carbon/src/Carbon/Lang/fi_FI.php
deleted file mode 100644
index 920f1caa..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fi_FI.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fi.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fil.php b/vendor/nesbot/carbon/src/Carbon/Lang/fil.php
deleted file mode 100644
index 61114e3a..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fil.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/fil_PH.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fil_PH.php b/vendor/nesbot/carbon/src/Carbon/Lang/fil_PH.php
deleted file mode 100644
index bcf15807..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fil_PH.php
+++ /dev/null
@@ -1,62 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Rene Torres Rene Torres, Pablo Saratxaga rgtorre@rocketmail.com, pablo@mandrakesoft.com
- * - Jaycee Mariano (alohajaycee)
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'MM/DD/YY',
- ],
- 'months' => ['Enero', 'Pebrero', 'Marso', 'Abril', 'Mayo', 'Hunyo', 'Hulyo', 'Agosto', 'Setyembre', 'Oktubre', 'Nobyembre', 'Disyembre'],
- 'months_short' => ['Ene', 'Peb', 'Mar', 'Abr', 'May', 'Hun', 'Hul', 'Ago', 'Set', 'Okt', 'Nob', 'Dis'],
- 'weekdays' => ['Linggo', 'Lunes', 'Martes', 'Miyerkoles', 'Huwebes', 'Biyernes', 'Sabado'],
- 'weekdays_short' => ['Lin', 'Lun', 'Mar', 'Miy', 'Huw', 'Biy', 'Sab'],
- 'weekdays_min' => ['Lin', 'Lun', 'Mar', 'Miy', 'Huw', 'Biy', 'Sab'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['N.U.', 'N.H.'],
-
- 'before' => ':time bago',
- 'after' => ':time pagkatapos',
-
- 'year' => ':count taon',
- 'y' => ':count taon',
- 'a_year' => ':count taon',
-
- 'month' => ':count buwan',
- 'm' => ':count buwan',
- 'a_month' => ':count buwan',
-
- 'week' => ':count linggo',
- 'w' => ':count linggo',
- 'a_week' => ':count linggo',
-
- 'day' => ':count araw',
- 'd' => ':count araw',
- 'a_day' => ':count araw',
-
- 'hour' => ':count oras',
- 'h' => ':count oras',
- 'a_hour' => ':count oras',
-
- 'minute' => ':count minuto',
- 'min' => ':count minuto',
- 'a_minute' => ':count minuto',
-
- 'second' => ':count segundo',
- 's' => ':count segundo',
- 'a_second' => ':count segundo',
-
- 'ago' => ':time ang nakalipas',
- 'from_now' => 'sa :time',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fo.php b/vendor/nesbot/carbon/src/Carbon/Lang/fo.php
deleted file mode 100644
index 6a14a6fb..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fo.php
+++ /dev/null
@@ -1,69 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Kristian Sakarisson
- * - François B
- * - JD Isaacks
- * - Sverri Mohr Olsen
- */
-return [
- 'year' => 'eitt ár|:count ár',
- 'y' => ':count ár|:count ár',
- 'month' => 'ein mánaði|:count mánaðir',
- 'm' => ':count mánaður|:count mánaðir',
- 'week' => ':count vika|:count vikur',
- 'w' => ':count vika|:count vikur',
- 'day' => 'ein dagur|:count dagar',
- 'd' => ':count dag|:count dagar',
- 'hour' => 'ein tími|:count tímar',
- 'h' => ':count tími|:count tímar',
- 'minute' => 'ein minutt|:count minuttir',
- 'min' => ':count minutt|:count minuttir',
- 'second' => 'fá sekund|:count sekundir',
- 's' => ':count sekund|:count sekundir',
- 'ago' => ':time síðani',
- 'from_now' => 'um :time',
- 'after' => ':time aftaná',
- 'before' => ':time áðrenn',
- 'diff_today' => 'Í',
- 'diff_yesterday' => 'Í',
- 'diff_yesterday_regexp' => 'Í(?:\\s+gjár)?(?:\\s+kl.)?',
- 'diff_tomorrow' => 'Í',
- 'diff_tomorrow_regexp' => 'Í(?:\\s+morgin)?(?:\\s+kl.)?',
- 'diff_today_regexp' => 'Í(?:\\s+dag)?(?:\\s+kl.)?',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D. MMMM, YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[Í dag kl.] LT',
- 'nextDay' => '[Í morgin kl.] LT',
- 'nextWeek' => 'dddd [kl.] LT',
- 'lastDay' => '[Í gjár kl.] LT',
- 'lastWeek' => '[síðstu] dddd [kl] LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => ':number.',
- 'months' => ['januar', 'februar', 'mars', 'apríl', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember'],
- 'months_short' => ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des'],
- 'weekdays' => ['sunnudagur', 'mánadagur', 'týsdagur', 'mikudagur', 'hósdagur', 'fríggjadagur', 'leygardagur'],
- 'weekdays_short' => ['sun', 'mán', 'týs', 'mik', 'hós', 'frí', 'ley'],
- 'weekdays_min' => ['su', 'má', 'tý', 'mi', 'hó', 'fr', 'le'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' og '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fo_DK.php b/vendor/nesbot/carbon/src/Carbon/Lang/fo_DK.php
deleted file mode 100644
index 657f2c5b..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fo_DK.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/fo.php', [
- 'formats' => [
- 'L' => 'DD.MM.yy',
- 'LL' => 'DD.MM.YYYY',
- 'LLL' => 'D. MMMM YYYY, HH:mm',
- 'LLLL' => 'dddd, D. MMMM YYYY, HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fo_FO.php b/vendor/nesbot/carbon/src/Carbon/Lang/fo_FO.php
deleted file mode 100644
index 6d736167..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fo_FO.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fo.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr.php
deleted file mode 100644
index 73fe5e41..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr.php
+++ /dev/null
@@ -1,114 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Dieter Sting
- * - François B
- * - Maxime VALY
- * - JD Isaacks
- * - Dieter Sting
- * - François B
- * - JD Isaacks
- * - Sebastian Thierer
- * - Fastfuel
- * - Pete Scopes (pdscopes)
- */
-return [
- 'year' => ':count an|:count ans',
- 'a_year' => 'un an|:count ans',
- 'y' => ':count an|:count ans',
- 'month' => ':count mois|:count mois',
- 'a_month' => 'un mois|:count mois',
- 'm' => ':count mois',
- 'week' => ':count semaine|:count semaines',
- 'a_week' => 'une semaine|:count semaines',
- 'w' => ':count sem.',
- 'day' => ':count jour|:count jours',
- 'a_day' => 'un jour|:count jours',
- 'd' => ':count j',
- 'hour' => ':count heure|:count heures',
- 'a_hour' => 'une heure|:count heures',
- 'h' => ':count h',
- 'minute' => ':count minute|:count minutes',
- 'a_minute' => 'une minute|:count minutes',
- 'min' => ':count min',
- 'second' => ':count seconde|:count secondes',
- 'a_second' => 'quelques secondes|:count secondes',
- 's' => ':count s',
- 'millisecond' => ':count milliseconde|:count millisecondes',
- 'a_millisecond' => 'une milliseconde|:count millisecondes',
- 'ms' => ':countms',
- 'microsecond' => ':count microseconde|:count microsecondes',
- 'a_microsecond' => 'une microseconde|:count microsecondes',
- 'µs' => ':countµs',
- 'ago' => 'il y a :time',
- 'from_now' => 'dans :time',
- 'after' => ':time après',
- 'before' => ':time avant',
- 'diff_now' => "à l'instant",
- 'diff_today' => "aujourd'hui",
- 'diff_today_regexp' => "aujourd'hui(?:\s+à)?",
- 'diff_yesterday' => 'hier',
- 'diff_yesterday_regexp' => 'hier(?:\s+à)?',
- 'diff_tomorrow' => 'demain',
- 'diff_tomorrow_regexp' => 'demain(?:\s+à)?',
- 'diff_before_yesterday' => 'avant-hier',
- 'diff_after_tomorrow' => 'après-demain',
- 'period_recurrences' => ':count fois',
- 'period_interval' => 'tous les :interval',
- 'period_start_date' => 'de :date',
- 'period_end_date' => 'à :date',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[Aujourd’hui à] LT',
- 'nextDay' => '[Demain à] LT',
- 'nextWeek' => 'dddd [à] LT',
- 'lastDay' => '[Hier à] LT',
- 'lastWeek' => 'dddd [dernier à] LT',
- 'sameElse' => 'L',
- ],
- 'months' => ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'],
- 'months_short' => ['janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'],
- 'weekdays' => ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'],
- 'weekdays_short' => ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],
- 'weekdays_min' => ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'],
- 'ordinal' => function ($number, $period) {
- switch ($period) {
- // In french, only the first has be ordinal, other number remains cardinal
- // @link https://fr.wikihow.com/%C3%A9crire-la-date-en-fran%C3%A7ais
- case 'D':
- return $number.($number === 1 ? 'er' : '');
-
- default:
- case 'M':
- case 'Q':
- case 'DDD':
- case 'd':
- return $number.($number === 1 ? 'er' : 'e');
-
- // Words with feminine grammatical gender: semaine
- case 'w':
- case 'W':
- return $number.($number === 1 ? 're' : 'e');
- }
- },
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' et '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_BE.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_BE.php
deleted file mode 100644
index f6cafe87..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_BE.php
+++ /dev/null
@@ -1,18 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - RAP bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/fr.php', [
- 'months_short' => ['jan', 'fév', 'mar', 'avr', 'mai', 'jun', 'jui', 'aoû', 'sep', 'oct', 'nov', 'déc'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_BF.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_BF.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_BF.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_BI.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_BI.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_BI.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_BJ.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_BJ.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_BJ.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_BL.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_BL.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_BL.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_CA.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_CA.php
deleted file mode 100644
index c9f6346f..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_CA.php
+++ /dev/null
@@ -1,25 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Dieter Sting
- * - François B
- * - Maxime VALY
- * - JD Isaacks
- */
-return array_replace_recursive(require __DIR__.'/fr.php', [
- 'formats' => [
- 'L' => 'YYYY-MM-DD',
- ],
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_CD.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_CD.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_CD.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_CF.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_CF.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_CF.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_CG.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_CG.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_CG.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_CH.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_CH.php
deleted file mode 100644
index 8674c27d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_CH.php
+++ /dev/null
@@ -1,24 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Dieter Sting
- * - François B
- * - Gaspard Bucher
- * - Maxime VALY
- * - JD Isaacks
- */
-return array_replace_recursive(require __DIR__.'/fr.php', [
- 'formats' => [
- 'L' => 'DD.MM.YYYY',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_CI.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_CI.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_CI.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_CM.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_CM.php
deleted file mode 100644
index 67d37878..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_CM.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/fr.php', [
- 'meridiem' => ['mat.', 'soir'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_DJ.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_DJ.php
deleted file mode 100644
index 2f060869..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_DJ.php
+++ /dev/null
@@ -1,22 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/fr.php', [
- 'first_day_of_week' => 6,
- 'formats' => [
- 'LT' => 'h:mm a',
- 'LTS' => 'h:mm:ss a',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY h:mm a',
- 'LLLL' => 'dddd D MMMM YYYY h:mm a',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_DZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_DZ.php
deleted file mode 100644
index ae8db5fa..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_DZ.php
+++ /dev/null
@@ -1,23 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/fr.php', [
- 'first_day_of_week' => 6,
- 'weekend' => [5, 6],
- 'formats' => [
- 'LT' => 'h:mm a',
- 'LTS' => 'h:mm:ss a',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY h:mm a',
- 'LLLL' => 'dddd D MMMM YYYY h:mm a',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_FR.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_FR.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_FR.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_GA.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_GA.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_GA.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_GF.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_GF.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_GF.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_GN.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_GN.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_GN.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_GP.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_GP.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_GP.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_GQ.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_GQ.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_GQ.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_HT.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_HT.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_HT.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_KM.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_KM.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_KM.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_LU.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_LU.php
deleted file mode 100644
index 8e37d852..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_LU.php
+++ /dev/null
@@ -1,21 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - RAP bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/fr.php', [
- 'formats' => [
- 'L' => 'DD.MM.YYYY',
- ],
- 'months_short' => ['jan', 'fév', 'mar', 'avr', 'mai', 'jun', 'jui', 'aoû', 'sep', 'oct', 'nov', 'déc'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_MA.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_MA.php
deleted file mode 100644
index 1bf034dc..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_MA.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/fr.php', [
- 'first_day_of_week' => 6,
- 'weekend' => [5, 6],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_MC.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_MC.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_MC.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_MF.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_MF.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_MF.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_MG.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_MG.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_MG.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_ML.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_ML.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_ML.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_MQ.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_MQ.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_MQ.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_MR.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_MR.php
deleted file mode 100644
index 37cf83f0..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_MR.php
+++ /dev/null
@@ -1,21 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/fr.php', [
- 'formats' => [
- 'LT' => 'h:mm a',
- 'LTS' => 'h:mm:ss a',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY h:mm a',
- 'LLLL' => 'dddd D MMMM YYYY h:mm a',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_MU.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_MU.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_MU.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_NC.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_NC.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_NC.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_NE.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_NE.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_NE.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_PF.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_PF.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_PF.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_PM.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_PM.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_PM.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_RE.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_RE.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_RE.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_RW.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_RW.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_RW.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_SC.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_SC.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_SC.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_SN.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_SN.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_SN.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_SY.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_SY.php
deleted file mode 100644
index ae8db5fa..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_SY.php
+++ /dev/null
@@ -1,23 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/fr.php', [
- 'first_day_of_week' => 6,
- 'weekend' => [5, 6],
- 'formats' => [
- 'LT' => 'h:mm a',
- 'LTS' => 'h:mm:ss a',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY h:mm a',
- 'LLLL' => 'dddd D MMMM YYYY h:mm a',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_TD.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_TD.php
deleted file mode 100644
index 37cf83f0..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_TD.php
+++ /dev/null
@@ -1,21 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/fr.php', [
- 'formats' => [
- 'LT' => 'h:mm a',
- 'LTS' => 'h:mm:ss a',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY h:mm a',
- 'LLLL' => 'dddd D MMMM YYYY h:mm a',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_TG.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_TG.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_TG.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_TN.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_TN.php
deleted file mode 100644
index 6905e7a8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_TN.php
+++ /dev/null
@@ -1,22 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/fr.php', [
- 'weekend' => [5, 6],
- 'formats' => [
- 'LT' => 'h:mm a',
- 'LTS' => 'h:mm:ss a',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY h:mm a',
- 'LLLL' => 'dddd D MMMM YYYY h:mm a',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_VU.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_VU.php
deleted file mode 100644
index 37cf83f0..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_VU.php
+++ /dev/null
@@ -1,21 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/fr.php', [
- 'formats' => [
- 'LT' => 'h:mm a',
- 'LTS' => 'h:mm:ss a',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY h:mm a',
- 'LLLL' => 'dddd D MMMM YYYY h:mm a',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_WF.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_WF.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_WF.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_YT.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_YT.php
deleted file mode 100644
index ec3ee359..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_YT.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/fr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fur.php b/vendor/nesbot/carbon/src/Carbon/Lang/fur.php
deleted file mode 100644
index 36c2564f..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fur.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/fur_IT.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fur_IT.php b/vendor/nesbot/carbon/src/Carbon/Lang/fur_IT.php
deleted file mode 100644
index 0147a596..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fur_IT.php
+++ /dev/null
@@ -1,39 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Pablo Saratxaga pablo@mandrakesoft.com
- */
-return [
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD. MM. YY',
- 'LL' => 'DD di MMMM dal YYYY',
- 'LLL' => 'DD di MMM HH:mm',
- 'LLLL' => 'DD di MMMM dal YYYY HH:mm',
- ],
- 'months' => ['zenâr', 'fevrâr', 'març', 'avrîl', 'mai', 'jugn', 'lui', 'avost', 'setembar', 'otubar', 'novembar', 'dicembar'],
- 'months_short' => ['zen', 'fev', 'mar', 'avr', 'mai', 'jug', 'lui', 'avo', 'set', 'otu', 'nov', 'dic'],
- 'weekdays' => ['domenie', 'lunis', 'martars', 'miercus', 'joibe', 'vinars', 'sabide'],
- 'weekdays_short' => ['dom', 'lun', 'mar', 'mie', 'joi', 'vin', 'sab'],
- 'weekdays_min' => ['dom', 'lun', 'mar', 'mie', 'joi', 'vin', 'sab'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'year' => ':count an',
- 'month' => ':count mês',
- 'week' => ':count setemane',
- 'day' => ':count zornade',
- 'hour' => ':count ore',
- 'minute' => ':count minût',
- 'second' => ':count secont',
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fy.php b/vendor/nesbot/carbon/src/Carbon/Lang/fy.php
deleted file mode 100644
index c1b54397..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fy.php
+++ /dev/null
@@ -1,76 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - François B
- * - Tim Fish
- * - JD Isaacks
- */
-return [
- 'year' => ':count jier|:count jierren',
- 'a_year' => 'ien jier|:count jierren',
- 'y' => ':count j',
- 'month' => ':count moanne|:count moannen',
- 'a_month' => 'ien moanne|:count moannen',
- 'm' => ':count moa.',
- 'week' => ':count wike|:count wiken',
- 'a_week' => 'in wike|:count wiken',
- 'a' => ':count w.',
- 'day' => ':count dei|:count dagen',
- 'a_day' => 'ien dei|:count dagen',
- 'd' => ':count d.',
- 'hour' => ':count oere|:count oeren',
- 'a_hour' => 'ien oere|:count oeren',
- 'h' => ':count o.',
- 'minute' => ':count minút|:count minuten',
- 'a_minute' => 'ien minút|:count minuten',
- 'min' => ':count min.',
- 'second' => ':count sekonde|:count sekonden',
- 'a_second' => 'in pear sekonden|:count sekonden',
- 's' => ':count s.',
- 'ago' => ':time lyn',
- 'from_now' => 'oer :time',
- 'diff_yesterday' => 'juster',
- 'diff_yesterday_regexp' => 'juster(?:\\s+om)?',
- 'diff_today' => 'hjoed',
- 'diff_today_regexp' => 'hjoed(?:\\s+om)?',
- 'diff_tomorrow' => 'moarn',
- 'diff_tomorrow_regexp' => 'moarn(?:\\s+om)?',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD-MM-YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[hjoed om] LT',
- 'nextDay' => '[moarn om] LT',
- 'nextWeek' => 'dddd [om] LT',
- 'lastDay' => '[juster om] LT',
- 'lastWeek' => '[ôfrûne] dddd [om] LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => function ($number) {
- return $number.(($number === 1 || $number === 8 || $number >= 20) ? 'ste' : 'de');
- },
- 'months' => ['jannewaris', 'febrewaris', 'maart', 'april', 'maaie', 'juny', 'july', 'augustus', 'septimber', 'oktober', 'novimber', 'desimber'],
- 'months_short' => ['jan', 'feb', 'mrt', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des'],
- 'mmm_suffix' => '.',
- 'weekdays' => ['snein', 'moandei', 'tiisdei', 'woansdei', 'tongersdei', 'freed', 'sneon'],
- 'weekdays_short' => ['si.', 'mo.', 'ti.', 'wo.', 'to.', 'fr.', 'so.'],
- 'weekdays_min' => ['Si', 'Mo', 'Ti', 'Wo', 'To', 'Fr', 'So'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' en '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fy_DE.php b/vendor/nesbot/carbon/src/Carbon/Lang/fy_DE.php
deleted file mode 100644
index 8559d5c2..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fy_DE.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - information from Kenneth Christiansen Kenneth Christiansen, Pablo Saratxaga kenneth@gnu.org, pablo@mandriva.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD.MM.YYYY',
- ],
- 'months' => ['Jaunuwoa', 'Februwoa', 'Moaz', 'Aprell', 'Mai', 'Juni', 'Juli', 'August', 'Septamba', 'Oktoba', 'Nowamba', 'Dezamba'],
- 'months_short' => ['Jan', 'Feb', 'Moz', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Now', 'Dez'],
- 'weekdays' => ['Sinndag', 'Mondag', 'Dingsdag', 'Meddwäakj', 'Donnadag', 'Friedag', 'Sinnowend'],
- 'weekdays_short' => ['Sdg', 'Mdg', 'Dsg', 'Mwk', 'Ddg', 'Fdg', 'Swd'],
- 'weekdays_min' => ['Sdg', 'Mdg', 'Dsg', 'Mwk', 'Ddg', 'Fdg', 'Swd'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fy_NL.php b/vendor/nesbot/carbon/src/Carbon/Lang/fy_NL.php
deleted file mode 100644
index 01cc96c3..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/fy_NL.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Free Software Foundation, Inc. bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/fy.php', [
- 'formats' => [
- 'L' => 'DD-MM-YY',
- ],
- 'months' => ['Jannewaris', 'Febrewaris', 'Maart', 'April', 'Maaie', 'Juny', 'July', 'Augustus', 'Septimber', 'Oktober', 'Novimber', 'Desimber'],
- 'months_short' => ['Jan', 'Feb', 'Mrt', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'],
- 'weekdays' => ['Snein', 'Moandei', 'Tiisdei', 'Woansdei', 'Tongersdei', 'Freed', 'Sneon'],
- 'weekdays_short' => ['Sn', 'Mo', 'Ti', 'Wo', 'To', 'Fr', 'Sn'],
- 'weekdays_min' => ['Sn', 'Mo', 'Ti', 'Wo', 'To', 'Fr', 'Sn'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ga.php b/vendor/nesbot/carbon/src/Carbon/Lang/ga.php
deleted file mode 100644
index 9f07a26c..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ga.php
+++ /dev/null
@@ -1,77 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Thanks to André Silva : https://github.com/askpt
- */
-
-return [
- 'year' => ':count bliain',
- 'a_year' => '{1}bliain|:count bliain',
- 'y' => ':countb',
- 'month' => ':count mí',
- 'a_month' => '{1}mí|:count mí',
- 'm' => ':countm',
- 'week' => ':count sheachtain',
- 'a_week' => '{1}sheachtain|:count sheachtain',
- 'w' => ':countsh',
- 'day' => ':count lá',
- 'a_day' => '{1}lá|:count lá',
- 'd' => ':countl',
- 'hour' => ':count uair an chloig',
- 'a_hour' => '{1}uair an chloig|:count uair an chloig',
- 'h' => ':countu',
- 'minute' => ':count nóiméad',
- 'a_minute' => '{1}nóiméad|:count nóiméad',
- 'min' => ':countn',
- 'second' => ':count soicind',
- 'a_second' => '{1}cúpla soicind|:count soicind',
- 's' => ':countso',
- 'ago' => ':time ó shin',
- 'from_now' => 'i :time',
- 'after' => ':time tar éis',
- 'before' => ':time roimh',
- 'diff_now' => 'anois',
- 'diff_today' => 'Inniu',
- 'diff_today_regexp' => 'Inniu(?:\\s+ag)?',
- 'diff_yesterday' => 'inné',
- 'diff_yesterday_regexp' => 'Inné(?:\\s+aig)?',
- 'diff_tomorrow' => 'amárach',
- 'diff_tomorrow_regexp' => 'Amárach(?:\\s+ag)?',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[Inniu ag] LT',
- 'nextDay' => '[Amárach ag] LT',
- 'nextWeek' => 'dddd [ag] LT',
- 'lastDay' => '[Inné aig] LT',
- 'lastWeek' => 'dddd [seo caite] [ag] LT',
- 'sameElse' => 'L',
- ],
- 'months' => ['Eanáir', 'Feabhra', 'Márta', 'Aibreán', 'Bealtaine', 'Méitheamh', 'Iúil', 'Lúnasa', 'Meán Fómhair', 'Deaireadh Fómhair', 'Samhain', 'Nollaig'],
- 'months_short' => ['Eaná', 'Feab', 'Márt', 'Aibr', 'Beal', 'Méit', 'Iúil', 'Lúna', 'Meán', 'Deai', 'Samh', 'Noll'],
- 'weekdays' => ['Dé Domhnaigh', 'Dé Luain', 'Dé Máirt', 'Dé Céadaoin', 'Déardaoin', 'Dé hAoine', 'Dé Satharn'],
- 'weekdays_short' => ['Dom', 'Lua', 'Mái', 'Céa', 'Déa', 'hAo', 'Sat'],
- 'weekdays_min' => ['Do', 'Lu', 'Má', 'Ce', 'Dé', 'hA', 'Sa'],
- 'ordinal' => function ($number) {
- return $number.($number === 1 ? 'd' : ($number % 10 === 2 ? 'na' : 'mh'));
- },
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' agus '],
- 'meridiem' => ['r.n.', 'i.n.'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ga_IE.php b/vendor/nesbot/carbon/src/Carbon/Lang/ga_IE.php
deleted file mode 100644
index 57b0c4fb..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ga_IE.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/ga.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gd.php b/vendor/nesbot/carbon/src/Carbon/Lang/gd.php
deleted file mode 100644
index 63d064dd..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/gd.php
+++ /dev/null
@@ -1,75 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - François B
- * - Jon Ashdown
- */
-return [
- 'year' => ':count bliadhna',
- 'a_year' => '{1}bliadhna|:count bliadhna',
- 'y' => ':count b.',
- 'month' => ':count mìosan',
- 'a_month' => '{1}mìos|:count mìosan',
- 'm' => ':count ms.',
- 'week' => ':count seachdainean',
- 'a_week' => '{1}seachdain|:count seachdainean',
- 'w' => ':count s.',
- 'day' => ':count latha',
- 'a_day' => '{1}latha|:count latha',
- 'd' => ':count l.',
- 'hour' => ':count uairean',
- 'a_hour' => '{1}uair|:count uairean',
- 'h' => ':count u.',
- 'minute' => ':count mionaidean',
- 'a_minute' => '{1}mionaid|:count mionaidean',
- 'min' => ':count md.',
- 'second' => ':count diogan',
- 'a_second' => '{1}beagan diogan|:count diogan',
- 's' => ':count d.',
- 'ago' => 'bho chionn :time',
- 'from_now' => 'ann an :time',
- 'diff_yesterday' => 'An-dè',
- 'diff_yesterday_regexp' => 'An-dè(?:\\s+aig)?',
- 'diff_today' => 'An-diugh',
- 'diff_today_regexp' => 'An-diugh(?:\\s+aig)?',
- 'diff_tomorrow' => 'A-màireach',
- 'diff_tomorrow_regexp' => 'A-màireach(?:\\s+aig)?',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[An-diugh aig] LT',
- 'nextDay' => '[A-màireach aig] LT',
- 'nextWeek' => 'dddd [aig] LT',
- 'lastDay' => '[An-dè aig] LT',
- 'lastWeek' => 'dddd [seo chaidh] [aig] LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => function ($number) {
- return $number.($number === 1 ? 'd' : ($number % 10 === 2 ? 'na' : 'mh'));
- },
- 'months' => ['Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd'],
- 'months_short' => ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh'],
- 'weekdays' => ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'],
- 'weekdays_short' => ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],
- 'weekdays_min' => ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' agus '],
- 'meridiem' => ['m', 'f'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gd_GB.php b/vendor/nesbot/carbon/src/Carbon/Lang/gd_GB.php
deleted file mode 100644
index 4fc26b3d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/gd_GB.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/gd.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gez.php b/vendor/nesbot/carbon/src/Carbon/Lang/gez.php
deleted file mode 100644
index b8a2f0eb..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/gez.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/gez_ER.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gez_ER.php b/vendor/nesbot/carbon/src/Carbon/Lang/gez_ER.php
deleted file mode 100644
index f19d1df1..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/gez_ER.php
+++ /dev/null
@@ -1,56 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Ge'ez Frontier Foundation locales@geez.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['ጠሐረ', 'ከተተ', 'መገበ', 'አኀዘ', 'ግንባት', 'ሠንየ', 'ሐመለ', 'ነሐሰ', 'ከረመ', 'ጠቀመ', 'ኀደረ', 'ኀሠሠ'],
- 'months_short' => ['ጠሐረ', 'ከተተ', 'መገበ', 'አኀዘ', 'ግንባ', 'ሠንየ', 'ሐመለ', 'ነሐሰ', 'ከረመ', 'ጠቀመ', 'ኀደረ', 'ኀሠሠ'],
- 'weekdays' => ['እኁድ', 'ሰኑይ', 'ሠሉስ', 'ራብዕ', 'ሐሙስ', 'ዓርበ', 'ቀዳሚት'],
- 'weekdays_short' => ['እኁድ', 'ሰኑይ', 'ሠሉስ', 'ራብዕ', 'ሐሙስ', 'ዓርበ', 'ቀዳሚ'],
- 'weekdays_min' => ['እኁድ', 'ሰኑይ', 'ሠሉስ', 'ራብዕ', 'ሐሙስ', 'ዓርበ', 'ቀዳሚ'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['ጽባሕ', 'ምሴት'],
-
- 'month' => ':count ወርሕ', // less reliable
- 'm' => ':count ወርሕ', // less reliable
- 'a_month' => ':count ወርሕ', // less reliable
-
- 'week' => ':count ሰብዑ', // less reliable
- 'w' => ':count ሰብዑ', // less reliable
- 'a_week' => ':count ሰብዑ', // less reliable
-
- 'hour' => ':count አንትሙ', // less reliable
- 'h' => ':count አንትሙ', // less reliable
- 'a_hour' => ':count አንትሙ', // less reliable
-
- 'minute' => ':count ንኡስ', // less reliable
- 'min' => ':count ንኡስ', // less reliable
- 'a_minute' => ':count ንኡስ', // less reliable
-
- 'year' => ':count ዓመት',
- 'y' => ':count ዓመት',
- 'a_year' => ':count ዓመት',
-
- 'day' => ':count ዕለት',
- 'd' => ':count ዕለት',
- 'a_day' => ':count ዕለት',
-
- 'second' => ':count ካልእ',
- 's' => ':count ካልእ',
- 'a_second' => ':count ካልእ',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gez_ET.php b/vendor/nesbot/carbon/src/Carbon/Lang/gez_ET.php
deleted file mode 100644
index 39330096..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/gez_ET.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Ge'ez Frontier Foundation locales@geez.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['ጃንዩወሪ', 'ፌብሩወሪ', 'ማርች', 'ኤፕረል', 'ሜይ', 'ጁን', 'ጁላይ', 'ኦገስት', 'ሴፕቴምበር', 'ኦክተውበር', 'ኖቬምበር', 'ዲሴምበር'],
- 'months_short' => ['ጃንዩ', 'ፌብሩ', 'ማርች', 'ኤፕረ', 'ሜይ ', 'ጁን ', 'ጁላይ', 'ኦገስ', 'ሴፕቴ', 'ኦክተ', 'ኖቬም', 'ዲሴም'],
- 'weekdays' => ['እኁድ', 'ሰኑይ', 'ሠሉስ', 'ራብዕ', 'ሐሙስ', 'ዓርበ', 'ቀዳሚት'],
- 'weekdays_short' => ['እኁድ', 'ሰኑይ', 'ሠሉስ', 'ራብዕ', 'ሐሙስ', 'ዓርበ', 'ቀዳሚ'],
- 'weekdays_min' => ['እኁድ', 'ሰኑይ', 'ሠሉስ', 'ራብዕ', 'ሐሙስ', 'ዓርበ', 'ቀዳሚ'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['ጽባሕ', 'ምሴት'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gl.php b/vendor/nesbot/carbon/src/Carbon/Lang/gl.php
deleted file mode 100644
index 088b0f28..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/gl.php
+++ /dev/null
@@ -1,98 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - François B
- * - Fidel Pita
- * - JD Isaacks
- * - Diego Vilariño
- * - Sebastian Thierer
- */
-
-use Carbon\CarbonInterface;
-
-return [
- 'year' => ':count ano|:count anos',
- 'a_year' => 'un ano|:count anos',
- 'y' => ':count a.',
- 'month' => ':count mes|:count meses',
- 'a_month' => 'un mes|:count meses',
- 'm' => ':count mes.',
- 'week' => ':count semana|:count semanas',
- 'a_week' => 'unha semana|:count semanas',
- 'w' => ':count sem.',
- 'day' => ':count día|:count días',
- 'a_day' => 'un día|:count días',
- 'd' => ':count d.',
- 'hour' => ':count hora|:count horas',
- 'a_hour' => 'unha hora|:count horas',
- 'h' => ':count h.',
- 'minute' => ':count minuto|:count minutos',
- 'a_minute' => 'un minuto|:count minutos',
- 'min' => ':count min.',
- 'second' => ':count segundo|:count segundos',
- 'a_second' => 'uns segundos|:count segundos',
- 's' => ':count seg.',
- 'ago' => 'hai :time',
- 'from_now' => function ($time) {
- if (str_starts_with($time, 'un')) {
- return "n$time";
- }
-
- return "en $time";
- },
- 'diff_now' => 'agora',
- 'diff_today' => 'hoxe',
- 'diff_today_regexp' => 'hoxe(?:\\s+ás)?',
- 'diff_yesterday' => 'onte',
- 'diff_yesterday_regexp' => 'onte(?:\\s+á)?',
- 'diff_tomorrow' => 'mañá',
- 'diff_tomorrow_regexp' => 'mañá(?:\\s+ás)?',
- 'after' => ':time despois',
- 'before' => ':time antes',
- 'formats' => [
- 'LT' => 'H:mm',
- 'LTS' => 'H:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D [de] MMMM [de] YYYY',
- 'LLL' => 'D [de] MMMM [de] YYYY H:mm',
- 'LLLL' => 'dddd, D [de] MMMM [de] YYYY H:mm',
- ],
- 'calendar' => [
- 'sameDay' => function (CarbonInterface $current) {
- return '[hoxe '.($current->hour !== 1 ? 'ás' : 'á').'] LT';
- },
- 'nextDay' => function (CarbonInterface $current) {
- return '[mañá '.($current->hour !== 1 ? 'ás' : 'á').'] LT';
- },
- 'nextWeek' => function (CarbonInterface $current) {
- return 'dddd ['.($current->hour !== 1 ? 'ás' : 'á').'] LT';
- },
- 'lastDay' => function (CarbonInterface $current) {
- return '[onte '.($current->hour !== 1 ? 'á' : 'a').'] LT';
- },
- 'lastWeek' => function (CarbonInterface $current) {
- return '[o] dddd [pasado '.($current->hour !== 1 ? 'ás' : 'á').'] LT';
- },
- 'sameElse' => 'L',
- ],
- 'ordinal' => ':numberº',
- 'months' => ['xaneiro', 'febreiro', 'marzo', 'abril', 'maio', 'xuño', 'xullo', 'agosto', 'setembro', 'outubro', 'novembro', 'decembro'],
- 'months_short' => ['xan.', 'feb.', 'mar.', 'abr.', 'mai.', 'xuñ.', 'xul.', 'ago.', 'set.', 'out.', 'nov.', 'dec.'],
- 'weekdays' => ['domingo', 'luns', 'martes', 'mércores', 'xoves', 'venres', 'sábado'],
- 'weekdays_short' => ['dom.', 'lun.', 'mar.', 'mér.', 'xov.', 'ven.', 'sáb.'],
- 'weekdays_min' => ['do', 'lu', 'ma', 'mé', 'xo', 've', 'sá'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' e '],
- 'meridiem' => ['a.m.', 'p.m.'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gl_ES.php b/vendor/nesbot/carbon/src/Carbon/Lang/gl_ES.php
deleted file mode 100644
index 9d6c1d96..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/gl_ES.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/gl.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gom.php b/vendor/nesbot/carbon/src/Carbon/Lang/gom.php
deleted file mode 100644
index 2a0584f8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/gom.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/gom_Latn.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gom_Latn.php b/vendor/nesbot/carbon/src/Carbon/Lang/gom_Latn.php
deleted file mode 100644
index 612bb886..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/gom_Latn.php
+++ /dev/null
@@ -1,79 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return [
- 'year' => ':count voros|:count vorsam',
- 'y' => ':countv',
- 'month' => ':count mhoino|:count mhoine',
- 'm' => ':countmh',
- 'week' => ':count satolleacho|:count satolleache',
- 'w' => ':countsa|:countsa',
- 'day' => ':count dis',
- 'd' => ':countd',
- 'hour' => ':count hor|:count horam',
- 'h' => ':counth',
- 'minute' => ':count minute|:count mintam',
- 'min' => ':countm',
- 'second' => ':count second',
- 's' => ':counts',
-
- 'diff_today' => 'Aiz',
- 'diff_yesterday' => 'Kal',
- 'diff_tomorrow' => 'Faleam',
- 'formats' => [
- 'LT' => 'A h:mm [vazta]',
- 'LTS' => 'A h:mm:ss [vazta]',
- 'L' => 'DD-MM-YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY A h:mm [vazta]',
- 'LLLL' => 'dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]',
- 'llll' => 'ddd, D MMM YYYY, A h:mm [vazta]',
- ],
-
- 'calendar' => [
- 'sameDay' => '[Aiz] LT',
- 'nextDay' => '[Faleam] LT',
- 'nextWeek' => '[Ieta to] dddd[,] LT',
- 'lastDay' => '[Kal] LT',
- 'lastWeek' => '[Fatlo] dddd[,] LT',
- 'sameElse' => 'L',
- ],
-
- 'months' => ['Janer', 'Febrer', 'Mars', 'Abril', 'Mai', 'Jun', 'Julai', 'Agost', 'Setembr', 'Otubr', 'Novembr', 'Dezembr'],
- 'months_short' => ['Jan.', 'Feb.', 'Mars', 'Abr.', 'Mai', 'Jun', 'Jul.', 'Ago.', 'Set.', 'Otu.', 'Nov.', 'Dez.'],
- 'weekdays' => ['Aitar', 'Somar', 'Mongllar', 'Budvar', 'Brestar', 'Sukrar', 'Son\'var'],
- 'weekdays_short' => ['Ait.', 'Som.', 'Mon.', 'Bud.', 'Bre.', 'Suk.', 'Son.'],
- 'weekdays_min' => ['Ai', 'Sm', 'Mo', 'Bu', 'Br', 'Su', 'Sn'],
-
- 'ordinal' => function ($number, $period) {
- return $number.($period === 'D' ? 'er' : '');
- },
-
- 'meridiem' => function ($hour) {
- if ($hour < 4) {
- return 'rati';
- }
- if ($hour < 12) {
- return 'sokalli';
- }
- if ($hour < 16) {
- return 'donparam';
- }
- if ($hour < 20) {
- return 'sanje';
- }
-
- return 'rati';
- },
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' ani '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gsw.php b/vendor/nesbot/carbon/src/Carbon/Lang/gsw.php
deleted file mode 100644
index c5c850ed..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/gsw.php
+++ /dev/null
@@ -1,49 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Christopher Dell
- * - Akira Matsuda
- * - Enrique Vidal
- * - Simone Carletti
- * - Henning Kiel
- * - Aaron Patterson
- * - Florian Hanke
- */
-return [
- 'year' => ':count Johr',
- 'month' => ':count Monet',
- 'week' => ':count Woche',
- 'day' => ':count Tag',
- 'hour' => ':count Schtund',
- 'minute' => ':count Minute',
- 'second' => ':count Sekunde',
- 'weekdays' => ['Sunntig', 'Mäntig', 'Ziischtig', 'Mittwuch', 'Dunschtig', 'Friitig', 'Samschtig'],
- 'weekdays_short' => ['Su', 'Mä', 'Zi', 'Mi', 'Du', 'Fr', 'Sa'],
- 'weekdays_min' => ['Su', 'Mä', 'Zi', 'Mi', 'Du', 'Fr', 'Sa'],
- 'months' => ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'Auguscht', 'September', 'Oktober', 'November', 'Dezember'],
- 'months_short' => ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],
- 'meridiem' => ['am Vormittag', 'am Namittag'],
- 'ordinal' => ':number.',
- 'list' => [', ', ' und '],
- 'diff_now' => 'now',
- 'diff_yesterday' => 'geschter',
- 'diff_tomorrow' => 'moorn',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'Do MMMM YYYY',
- 'LLL' => 'Do MMMM, HH:mm [Uhr]',
- 'LLLL' => 'dddd, Do MMMM YYYY, HH:mm [Uhr]',
- ],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gsw_CH.php b/vendor/nesbot/carbon/src/Carbon/Lang/gsw_CH.php
deleted file mode 100644
index 594eb25d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/gsw_CH.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/gsw.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gsw_FR.php b/vendor/nesbot/carbon/src/Carbon/Lang/gsw_FR.php
deleted file mode 100644
index 3581dcfb..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/gsw_FR.php
+++ /dev/null
@@ -1,20 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/gsw.php', [
- 'meridiem' => ['vorm.', 'nam.'],
- 'months' => ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'Auguscht', 'Septämber', 'Oktoober', 'Novämber', 'Dezämber'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LLL' => 'Do MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, Do MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gsw_LI.php b/vendor/nesbot/carbon/src/Carbon/Lang/gsw_LI.php
deleted file mode 100644
index 3581dcfb..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/gsw_LI.php
+++ /dev/null
@@ -1,20 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/gsw.php', [
- 'meridiem' => ['vorm.', 'nam.'],
- 'months' => ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'Auguscht', 'Septämber', 'Oktoober', 'Novämber', 'Dezämber'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LLL' => 'Do MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, Do MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gu.php b/vendor/nesbot/carbon/src/Carbon/Lang/gu.php
deleted file mode 100644
index 8bc43114..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/gu.php
+++ /dev/null
@@ -1,82 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Josh Soref
- * - Kaushik Thanki
- * - Josh Soref
- */
-return [
- 'year' => 'એક વર્ષ|:count વર્ષ',
- 'y' => ':countવર્ષ|:countવર્ષો',
- 'month' => 'એક મહિનો|:count મહિના',
- 'm' => ':countમહિનો|:countમહિના',
- 'week' => ':count અઠવાડિયું|:count અઠવાડિયા',
- 'w' => ':countઅઠ.|:countઅઠ.',
- 'day' => 'એક દિવસ|:count દિવસ',
- 'd' => ':countદિ.|:countદિ.',
- 'hour' => 'એક કલાક|:count કલાક',
- 'h' => ':countક.|:countક.',
- 'minute' => 'એક મિનિટ|:count મિનિટ',
- 'min' => ':countમિ.|:countમિ.',
- 'second' => 'અમુક પળો|:count સેકંડ',
- 's' => ':countસે.|:countસે.',
- 'ago' => ':time પેહલા',
- 'from_now' => ':time મા',
- 'after' => ':time પછી',
- 'before' => ':time પહેલા',
- 'diff_now' => 'હમણાં',
- 'diff_today' => 'આજ',
- 'diff_yesterday' => 'ગઇકાલે',
- 'diff_tomorrow' => 'કાલે',
- 'formats' => [
- 'LT' => 'A h:mm વાગ્યે',
- 'LTS' => 'A h:mm:ss વાગ્યે',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY, A h:mm વાગ્યે',
- 'LLLL' => 'dddd, D MMMM YYYY, A h:mm વાગ્યે',
- ],
- 'calendar' => [
- 'sameDay' => '[આજ] LT',
- 'nextDay' => '[કાલે] LT',
- 'nextWeek' => 'dddd, LT',
- 'lastDay' => '[ગઇકાલે] LT',
- 'lastWeek' => '[પાછલા] dddd, LT',
- 'sameElse' => 'L',
- ],
- 'meridiem' => function ($hour) {
- if ($hour < 4) {
- return 'રાત';
- }
- if ($hour < 10) {
- return 'સવાર';
- }
- if ($hour < 17) {
- return 'બપોર';
- }
- if ($hour < 20) {
- return 'સાંજ';
- }
-
- return 'રાત';
- },
- 'months' => ['જાન્યુઆરી', 'ફેબ્રુઆરી', 'માર્ચ', 'એપ્રિલ', 'મે', 'જૂન', 'જુલાઈ', 'ઑગસ્ટ', 'સપ્ટેમ્બર', 'ઑક્ટ્બર', 'નવેમ્બર', 'ડિસેમ્બર'],
- 'months_short' => ['જાન્યુ.', 'ફેબ્રુ.', 'માર્ચ', 'એપ્રિ.', 'મે', 'જૂન', 'જુલા.', 'ઑગ.', 'સપ્ટે.', 'ઑક્ટ્.', 'નવે.', 'ડિસે.'],
- 'weekdays' => ['રવિવાર', 'સોમવાર', 'મંગળવાર', 'બુધ્વાર', 'ગુરુવાર', 'શુક્રવાર', 'શનિવાર'],
- 'weekdays_short' => ['રવિ', 'સોમ', 'મંગળ', 'બુધ્', 'ગુરુ', 'શુક્ર', 'શનિ'],
- 'weekdays_min' => ['ર', 'સો', 'મં', 'બુ', 'ગુ', 'શુ', 'શ'],
- 'list' => [', ', ' અને '],
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
- 'weekend' => [0, 0],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gu_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/gu_IN.php
deleted file mode 100644
index 02654b1f..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/gu_IN.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/gu.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/guz.php b/vendor/nesbot/carbon/src/Carbon/Lang/guz.php
deleted file mode 100644
index 6230165c..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/guz.php
+++ /dev/null
@@ -1,47 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['Ma', 'Mo'],
- 'weekdays' => ['Chumapiri', 'Chumatato', 'Chumaine', 'Chumatano', 'Aramisi', 'Ichuma', 'Esabato'],
- 'weekdays_short' => ['Cpr', 'Ctt', 'Cmn', 'Cmt', 'Ars', 'Icm', 'Est'],
- 'weekdays_min' => ['Cpr', 'Ctt', 'Cmn', 'Cmt', 'Ars', 'Icm', 'Est'],
- 'months' => ['Chanuari', 'Feburari', 'Machi', 'Apiriri', 'Mei', 'Juni', 'Chulai', 'Agosti', 'Septemba', 'Okitoba', 'Nobemba', 'Disemba'],
- 'months_short' => ['Can', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Cul', 'Agt', 'Sep', 'Okt', 'Nob', 'Dis'],
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
-
- 'month' => ':count omotunyi', // less reliable
- 'm' => ':count omotunyi', // less reliable
- 'a_month' => ':count omotunyi', // less reliable
-
- 'week' => ':count isano naibere', // less reliable
- 'w' => ':count isano naibere', // less reliable
- 'a_week' => ':count isano naibere', // less reliable
-
- 'second' => ':count ibere', // less reliable
- 's' => ':count ibere', // less reliable
- 'a_second' => ':count ibere', // less reliable
-
- 'year' => ':count omwaka',
- 'y' => ':count omwaka',
- 'a_year' => ':count omwaka',
-
- 'day' => ':count rituko',
- 'd' => ':count rituko',
- 'a_day' => ':count rituko',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gv.php b/vendor/nesbot/carbon/src/Carbon/Lang/gv.php
deleted file mode 100644
index 7c52b940..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/gv.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/gv_GB.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gv_GB.php b/vendor/nesbot/carbon/src/Carbon/Lang/gv_GB.php
deleted file mode 100644
index 6b1168f9..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/gv_GB.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Alastair McKinstry bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YY',
- ],
- 'months' => ['Jerrey-geuree', 'Toshiaght-arree', 'Mayrnt', 'Averil', 'Boaldyn', 'Mean-souree', 'Jerrey-souree', 'Luanistyn', 'Mean-fouyir', 'Jerrey-fouyir', 'Mee Houney', 'Mee ny Nollick'],
- 'months_short' => ['J-guer', 'T-arree', 'Mayrnt', 'Avrril', 'Boaldyn', 'M-souree', 'J-souree', 'Luanistyn', 'M-fouyir', 'J-fouyir', 'M.Houney', 'M.Nollick'],
- 'weekdays' => ['Jedoonee', 'Jelhein', 'Jemayrt', 'Jercean', 'Jerdein', 'Jeheiney', 'Jesarn'],
- 'weekdays_short' => ['Jed', 'Jel', 'Jem', 'Jerc', 'Jerd', 'Jeh', 'Jes'],
- 'weekdays_min' => ['Jed', 'Jel', 'Jem', 'Jerc', 'Jerd', 'Jeh', 'Jes'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-
- 'year' => ':count blein',
- 'y' => ':count blein',
- 'a_year' => ':count blein',
-
- 'month' => ':count mee',
- 'm' => ':count mee',
- 'a_month' => ':count mee',
-
- 'week' => ':count shiaghtin',
- 'w' => ':count shiaghtin',
- 'a_week' => ':count shiaghtin',
-
- 'day' => ':count laa',
- 'd' => ':count laa',
- 'a_day' => ':count laa',
-
- 'hour' => ':count oor',
- 'h' => ':count oor',
- 'a_hour' => ':count oor',
-
- 'minute' => ':count feer veg',
- 'min' => ':count feer veg',
- 'a_minute' => ':count feer veg',
-
- 'second' => ':count derrey',
- 's' => ':count derrey',
- 'a_second' => ':count derrey',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ha.php b/vendor/nesbot/carbon/src/Carbon/Lang/ha.php
deleted file mode 100644
index cd8e34d0..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ha.php
+++ /dev/null
@@ -1,60 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - pablo@mandriva.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D/M/YYYY',
- 'LL' => 'D MMM, YYYY',
- 'LLL' => 'D MMMM, YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM, YYYY HH:mm',
- ],
- 'months' => ['Janairu', 'Faburairu', 'Maris', 'Afirilu', 'Mayu', 'Yuni', 'Yuli', 'Agusta', 'Satumba', 'Oktoba', 'Nuwamba', 'Disamba'],
- 'months_short' => ['Jan', 'Fab', 'Mar', 'Afi', 'May', 'Yun', 'Yul', 'Agu', 'Sat', 'Okt', 'Nuw', 'Dis'],
- 'weekdays' => ['Lahadi', 'Litini', 'Talata', 'Laraba', 'Alhamis', 'Jumaʼa', 'Asabar'],
- 'weekdays_short' => ['Lah', 'Lit', 'Tal', 'Lar', 'Alh', 'Jum', 'Asa'],
- 'weekdays_min' => ['Lh', 'Li', 'Ta', 'Lr', 'Al', 'Ju', 'As'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
-
- 'year' => 'shekara :count',
- 'y' => 'shekara :count',
- 'a_year' => 'shekara :count',
-
- 'month' => ':count wátàa',
- 'm' => ':count wátàa',
- 'a_month' => ':count wátàa',
-
- 'week' => ':count mako',
- 'w' => ':count mako',
- 'a_week' => ':count mako',
-
- 'day' => ':count rana',
- 'd' => ':count rana',
- 'a_day' => ':count rana',
-
- 'hour' => ':count áwàa',
- 'h' => ':count áwàa',
- 'a_hour' => ':count áwàa',
-
- 'minute' => 'minti :count',
- 'min' => 'minti :count',
- 'a_minute' => 'minti :count',
-
- 'second' => ':count ná bíyú',
- 's' => ':count ná bíyú',
- 'a_second' => ':count ná bíyú',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ha_GH.php b/vendor/nesbot/carbon/src/Carbon/Lang/ha_GH.php
deleted file mode 100644
index f9f99a73..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ha_GH.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/ha.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ha_NE.php b/vendor/nesbot/carbon/src/Carbon/Lang/ha_NE.php
deleted file mode 100644
index f9f99a73..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ha_NE.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/ha.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ha_NG.php b/vendor/nesbot/carbon/src/Carbon/Lang/ha_NG.php
deleted file mode 100644
index f9f99a73..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ha_NG.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/ha.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hak.php b/vendor/nesbot/carbon/src/Carbon/Lang/hak.php
deleted file mode 100644
index 6c3260e8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/hak.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/hak_TW.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hak_TW.php b/vendor/nesbot/carbon/src/Carbon/Lang/hak_TW.php
deleted file mode 100644
index fe239865..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/hak_TW.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'YYYY年MM月DD日',
- ],
- 'months' => ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
- 'months_short' => [' 1月', ' 2月', ' 3月', ' 4月', ' 5月', ' 6月', ' 7月', ' 8月', ' 9月', '10月', '11月', '12月'],
- 'weekdays' => ['禮拜日', '禮拜一', '禮拜二', '禮拜三', '禮拜四', '禮拜五', '禮拜六'],
- 'weekdays_short' => ['日', '一', '二', '三', '四', '五', '六'],
- 'weekdays_min' => ['日', '一', '二', '三', '四', '五', '六'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['上晝', '下晝'],
-
- 'year' => ':count ngien11',
- 'y' => ':count ngien11',
- 'a_year' => ':count ngien11',
-
- 'month' => ':count ngie̍t',
- 'm' => ':count ngie̍t',
- 'a_month' => ':count ngie̍t',
-
- 'week' => ':count lî-pai',
- 'w' => ':count lî-pai',
- 'a_week' => ':count lî-pai',
-
- 'day' => ':count ngit',
- 'd' => ':count ngit',
- 'a_day' => ':count ngit',
-
- 'hour' => ':count sṳ̀',
- 'h' => ':count sṳ̀',
- 'a_hour' => ':count sṳ̀',
-
- 'minute' => ':count fûn',
- 'min' => ':count fûn',
- 'a_minute' => ':count fûn',
-
- 'second' => ':count miéu',
- 's' => ':count miéu',
- 'a_second' => ':count miéu',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/haw.php b/vendor/nesbot/carbon/src/Carbon/Lang/haw.php
deleted file mode 100644
index cdd36861..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/haw.php
+++ /dev/null
@@ -1,54 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'months' => ['Ianuali', 'Pepeluali', 'Malaki', 'ʻApelila', 'Mei', 'Iune', 'Iulai', 'ʻAukake', 'Kepakemapa', 'ʻOkakopa', 'Nowemapa', 'Kekemapa'],
- 'months_short' => ['Ian.', 'Pep.', 'Mal.', 'ʻAp.', 'Mei', 'Iun.', 'Iul.', 'ʻAu.', 'Kep.', 'ʻOk.', 'Now.', 'Kek.'],
- 'weekdays' => ['Lāpule', 'Poʻakahi', 'Poʻalua', 'Poʻakolu', 'Poʻahā', 'Poʻalima', 'Poʻaono'],
- 'weekdays_short' => ['LP', 'P1', 'P2', 'P3', 'P4', 'P5', 'P6'],
- 'weekdays_min' => ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
- 'formats' => [
- 'LT' => 'h:mm a',
- 'LTS' => 'h:mm:ss a',
- 'L' => 'D/M/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY h:mm a',
- 'LLLL' => 'dddd, D MMMM YYYY h:mm a',
- ],
-
- 'year' => ':count makahiki',
- 'y' => ':count makahiki',
- 'a_year' => ':count makahiki',
-
- 'month' => ':count mahina',
- 'm' => ':count mahina',
- 'a_month' => ':count mahina',
-
- 'week' => ':count pule',
- 'w' => ':count pule',
- 'a_week' => ':count pule',
-
- 'day' => ':count lā',
- 'd' => ':count lā',
- 'a_day' => ':count lā',
-
- 'hour' => ':count hola',
- 'h' => ':count hola',
- 'a_hour' => ':count hola',
-
- 'minute' => ':count minuke',
- 'min' => ':count minuke',
- 'a_minute' => ':count minuke',
-
- 'second' => ':count lua',
- 's' => ':count lua',
- 'a_second' => ':count lua',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/he.php b/vendor/nesbot/carbon/src/Carbon/Lang/he.php
deleted file mode 100644
index c3fb3e97..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/he.php
+++ /dev/null
@@ -1,86 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Daniel Cohen Gindi
- * - JD Isaacks
- * - Itai Nathaniel
- * - GabMic
- * - Yaakov Dahan (yakidahan)
- */
-return [
- 'year' => 'שנה|{2}שנתיים|:count שנים',
- 'y' => 'שנה|:count שנ׳',
- 'month' => 'חודש|{2}חודשיים|:count חודשים',
- 'm' => 'חודש|:count חו׳',
- 'week' => 'שבוע|{2}שבועיים|:count שבועות',
- 'w' => 'שבוע|:count שב׳',
- 'day' => 'יום|{2}יומיים|:count ימים',
- 'd' => 'יום|:count ימ׳',
- 'hour' => 'שעה|{2}שעתיים|:count שעות',
- 'h' => 'שעה|:count שע׳',
- 'minute' => 'דקה|{2}שתי דקות|:count דקות',
- 'min' => 'דקה|:count דק׳',
- 'second' => 'שנייה|:count שניות',
- 'a_second' => 'כמה שניות|:count שניות',
- 's' => 'שניה|:count שנ׳',
- 'ago' => 'לפני :time',
- 'from_now' => 'בעוד :time מעכשיו',
- 'after' => 'אחרי :time',
- 'before' => 'לפני :time',
- 'diff_now' => 'עכשיו',
- 'diff_today' => 'היום',
- 'diff_today_regexp' => 'היום(?:\\s+ב־)?',
- 'diff_yesterday' => 'אתמול',
- 'diff_yesterday_regexp' => 'אתמול(?:\\s+ב־)?',
- 'diff_tomorrow' => 'מחר',
- 'diff_tomorrow_regexp' => 'מחר(?:\\s+ב־)?',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D [ב]MMMM YYYY',
- 'LLL' => 'D [ב]MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D [ב]MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[היום ב־]LT',
- 'nextDay' => '[מחר ב־]LT',
- 'nextWeek' => 'dddd [בשעה] LT',
- 'lastDay' => '[אתמול ב־]LT',
- 'lastWeek' => '[ביום] dddd [האחרון בשעה] LT',
- 'sameElse' => 'L',
- ],
- 'meridiem' => function ($hour, $minute, $isLower) {
- if ($hour < 5) {
- return 'לפנות בוקר';
- }
- if ($hour < 10) {
- return 'בבוקר';
- }
- if ($hour < 12) {
- return $isLower ? 'לפנה"צ' : 'לפני הצהריים';
- }
- if ($hour < 18) {
- return $isLower ? 'אחה"צ' : 'אחרי הצהריים';
- }
-
- return 'בערב';
- },
- 'months' => ['ינואר', 'פברואר', 'מרץ', 'אפריל', 'מאי', 'יוני', 'יולי', 'אוגוסט', 'ספטמבר', 'אוקטובר', 'נובמבר', 'דצמבר'],
- 'months_short' => ['ינו׳', 'פבר׳', 'מרץ', 'אפר׳', 'מאי', 'יוני', 'יולי', 'אוג׳', 'ספט׳', 'אוק׳', 'נוב׳', 'דצמ׳'],
- 'weekdays' => ['ראשון', 'שני', 'שלישי', 'רביעי', 'חמישי', 'שישי', 'שבת'],
- 'weekdays_short' => ['א׳', 'ב׳', 'ג׳', 'ד׳', 'ה׳', 'ו׳', 'ש׳'],
- 'weekdays_min' => ['א', 'ב', 'ג', 'ד', 'ה', 'ו', 'ש'],
- 'list' => [', ', ' ו -'],
- 'weekend' => [5, 6],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/he_IL.php b/vendor/nesbot/carbon/src/Carbon/Lang/he_IL.php
deleted file mode 100644
index 14fab3e9..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/he_IL.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/he.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hi.php b/vendor/nesbot/carbon/src/Carbon/Lang/hi.php
deleted file mode 100644
index 70c57a29..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/hi.php
+++ /dev/null
@@ -1,82 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - abhimanyu003
- * - Josh Soref
- * - JD Isaacks
- */
-return [
- 'year' => 'एक वर्ष|:count वर्ष',
- 'y' => '1 वर्ष|:count वर्षों',
- 'month' => 'एक महीने|:count महीने',
- 'm' => '1 माह|:count महीने',
- 'week' => '1 सप्ताह|:count सप्ताह',
- 'w' => '1 सप्ताह|:count सप्ताह',
- 'day' => 'एक दिन|:count दिन',
- 'd' => '1 दिन|:count दिनों',
- 'hour' => 'एक घंटा|:count घंटे',
- 'h' => '1 घंटा|:count घंटे',
- 'minute' => 'एक मिनट|:count मिनट',
- 'min' => '1 मिनट|:count मिनटों',
- 'second' => 'कुछ ही क्षण|:count सेकंड',
- 's' => '1 सेकंड|:count सेकंड',
- 'ago' => ':time पहले',
- 'from_now' => ':time में',
- 'after' => ':time के बाद',
- 'before' => ':time के पहले',
- 'diff_now' => 'अब',
- 'diff_today' => 'आज',
- 'diff_yesterday' => 'कल',
- 'diff_tomorrow' => 'कल',
- 'formats' => [
- 'LT' => 'A h:mm बजे',
- 'LTS' => 'A h:mm:ss बजे',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY, A h:mm बजे',
- 'LLLL' => 'dddd, D MMMM YYYY, A h:mm बजे',
- ],
- 'calendar' => [
- 'sameDay' => '[आज] LT',
- 'nextDay' => '[कल] LT',
- 'nextWeek' => 'dddd, LT',
- 'lastDay' => '[कल] LT',
- 'lastWeek' => '[पिछले] dddd, LT',
- 'sameElse' => 'L',
- ],
- 'meridiem' => function ($hour) {
- if ($hour < 4) {
- return 'रात';
- }
- if ($hour < 10) {
- return 'सुबह';
- }
- if ($hour < 17) {
- return 'दोपहर';
- }
- if ($hour < 20) {
- return 'शाम';
- }
-
- return 'रात';
- },
- 'months' => ['जनवरी', 'फ़रवरी', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर'],
- 'months_short' => ['जन.', 'फ़र.', 'मार्च', 'अप्रै.', 'मई', 'जून', 'जुल.', 'अग.', 'सित.', 'अक्टू.', 'नव.', 'दिस.'],
- 'weekdays' => ['रविवार', 'सोमवार', 'मंगलवार', 'बुधवार', 'गुरूवार', 'शुक्रवार', 'शनिवार'],
- 'weekdays_short' => ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरू', 'शुक्र', 'शनि'],
- 'weekdays_min' => ['र', 'सो', 'मं', 'बु', 'गु', 'शु', 'श'],
- 'list' => [', ', ' और '],
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
- 'weekend' => [0, 0],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hi_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/hi_IN.php
deleted file mode 100644
index 749dd97c..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/hi_IN.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/hi.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hif.php b/vendor/nesbot/carbon/src/Carbon/Lang/hif.php
deleted file mode 100644
index 65791dd4..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/hif.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/hif_FJ.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hif_FJ.php b/vendor/nesbot/carbon/src/Carbon/Lang/hif_FJ.php
deleted file mode 100644
index 30ad5e74..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/hif_FJ.php
+++ /dev/null
@@ -1,54 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Samsung Electronics Co., Ltd. akhilesh.k@samsung.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'dddd DD MMM YYYY',
- ],
- 'months' => ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
- 'months_short' => ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
- 'weekdays' => ['Ravivar', 'Somvar', 'Mangalvar', 'Budhvar', 'Guruvar', 'Shukravar', 'Shanivar'],
- 'weekdays_short' => ['Ravi', 'Som', 'Mangal', 'Budh', 'Guru', 'Shukra', 'Shani'],
- 'weekdays_min' => ['Ravi', 'Som', 'Mangal', 'Budh', 'Guru', 'Shukra', 'Shani'],
- 'meridiem' => ['Purvahan', 'Aparaahna'],
-
- 'hour' => ':count minit', // less reliable
- 'h' => ':count minit', // less reliable
- 'a_hour' => ':count minit', // less reliable
-
- 'year' => ':count saal',
- 'y' => ':count saal',
- 'a_year' => ':count saal',
-
- 'month' => ':count Mahina',
- 'm' => ':count Mahina',
- 'a_month' => ':count Mahina',
-
- 'week' => ':count Hafta',
- 'w' => ':count Hafta',
- 'a_week' => ':count Hafta',
-
- 'day' => ':count Din',
- 'd' => ':count Din',
- 'a_day' => ':count Din',
-
- 'minute' => ':count Minit',
- 'min' => ':count Minit',
- 'a_minute' => ':count Minit',
-
- 'second' => ':count Second',
- 's' => ':count Second',
- 'a_second' => ':count Second',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hne.php b/vendor/nesbot/carbon/src/Carbon/Lang/hne.php
deleted file mode 100644
index 4bcb05c7..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/hne.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/hne_IN.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hne_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/hne_IN.php
deleted file mode 100644
index a5ca758b..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/hne_IN.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Red Hat, Pune bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'D/M/YY',
- ],
- 'months' => ['जनवरी', 'फरवरी', 'मार्च', 'अपरेल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितमबर', 'अकटूबर', 'नवमबर', 'दिसमबर'],
- 'months_short' => ['जन', 'फर', 'मार्च', 'अप', 'मई', 'जून', 'जुला', 'अग', 'सित', 'अकटू', 'नव', 'दिस'],
- 'weekdays' => ['इतवार', 'सोमवार', 'मंगलवार', 'बुधवार', 'बिरसपत', 'सुकरवार', 'सनिवार'],
- 'weekdays_short' => ['इत', 'सोम', 'मंग', 'बुध', 'बिर', 'सुक', 'सनि'],
- 'weekdays_min' => ['इत', 'सोम', 'मंग', 'बुध', 'बिर', 'सुक', 'सनि'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['बिहिनियाँ', 'मंझनियाँ'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hr.php b/vendor/nesbot/carbon/src/Carbon/Lang/hr.php
deleted file mode 100644
index cfd85fd4..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/hr.php
+++ /dev/null
@@ -1,111 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Josh Soref
- * - François B
- * - Tim Fish
- * - shaishavgandhi05
- * - Serhan Apaydın
- * - JD Isaacks
- * - tomhorvat
- * - Josh Soref
- * - François B
- * - shaishavgandhi05
- * - Serhan Apaydın
- * - JD Isaacks
- * - tomhorvat
- * - Stjepan Majdak
- * - Vanja Retkovac (vr00)
- */
-
-use Carbon\CarbonInterface;
-
-return [
- 'year' => ':count godinu|:count godine|:count godina',
- 'y' => ':count god.|:count god.|:count god.',
- 'month' => ':count mjesec|:count mjeseca|:count mjeseci',
- 'm' => ':count mj.|:count mj.|:count mj.',
- 'week' => ':count tjedan|:count tjedna|:count tjedana',
- 'w' => ':count tj.|:count tj.|:count tj.',
- 'day' => ':count dan|:count dana|:count dana',
- 'd' => ':count d.|:count d.|:count d.',
- 'hour' => ':count sat|:count sata|:count sati',
- 'h' => ':count sat|:count sata|:count sati',
- 'minute' => ':count minutu|:count minute|:count minuta',
- 'min' => ':count min.|:count min.|:count min.',
- 'second' => ':count sekundu|:count sekunde|:count sekundi',
- 'a_second' => 'nekoliko sekundi|:count sekunde|:count sekundi',
- 's' => ':count sek.|:count sek.|:count sek.',
- 'ago' => 'prije :time',
- 'from_now' => 'za :time',
- 'after' => ':time poslije',
- 'before' => ':time prije',
- 'diff_now' => 'sad',
- 'diff_today' => 'danas',
- 'diff_today_regexp' => 'danas(?:\\s+u)?',
- 'diff_yesterday' => 'jučer',
- 'diff_yesterday_regexp' => 'jučer(?:\\s+u)?',
- 'diff_tomorrow' => 'sutra',
- 'diff_tomorrow_regexp' => 'sutra(?:\\s+u)?',
- 'diff_before_yesterday' => 'prekjučer',
- 'diff_after_tomorrow' => 'prekosutra',
- 'formats' => [
- 'LT' => 'H:mm',
- 'LTS' => 'H:mm:ss',
- 'L' => 'D. M. YYYY.',
- 'LL' => 'D. MMMM YYYY.',
- 'LLL' => 'D. MMMM YYYY. H:mm',
- 'LLLL' => 'dddd, D. MMMM YYYY. H:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[danas u] LT',
- 'nextDay' => '[sutra u] LT',
- 'nextWeek' => function (CarbonInterface $date) {
- switch ($date->dayOfWeek) {
- case 0:
- return '[u] [nedjelju] [u] LT';
- case 3:
- return '[u] [srijedu] [u] LT';
- case 6:
- return '[u] [subotu] [u] LT';
- default:
- return '[u] dddd [u] LT';
- }
- },
- 'lastDay' => '[jučer u] LT',
- 'lastWeek' => function (CarbonInterface $date) {
- switch ($date->dayOfWeek) {
- case 0:
- case 3:
- return '[prošlu] dddd [u] LT';
- case 6:
- return '[prošle] [subote] [u] LT';
- default:
- return '[prošli] dddd [u] LT';
- }
- },
- 'sameElse' => 'L',
- ],
- 'ordinal' => ':number.',
- 'months' => ['siječnja', 'veljače', 'ožujka', 'travnja', 'svibnja', 'lipnja', 'srpnja', 'kolovoza', 'rujna', 'listopada', 'studenoga', 'prosinca'],
- 'months_standalone' => ['siječanj', 'veljača', 'ožujak', 'travanj', 'svibanj', 'lipanj', 'srpanj', 'kolovoz', 'rujan', 'listopad', 'studeni', 'prosinac'],
- 'months_short' => ['sij.', 'velj.', 'ožu.', 'tra.', 'svi.', 'lip.', 'srp.', 'kol.', 'ruj.', 'lis.', 'stu.', 'pro.'],
- 'months_regexp' => '/(D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|L{2,4}|l{2,4})/',
- 'weekdays' => ['nedjelju', 'ponedjeljak', 'utorak', 'srijedu', 'četvrtak', 'petak', 'subotu'],
- 'weekdays_standalone' => ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'],
- 'weekdays_short' => ['ned.', 'pon.', 'uto.', 'sri.', 'čet.', 'pet.', 'sub.'],
- 'weekdays_min' => ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'list' => [', ', ' i '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hr_BA.php b/vendor/nesbot/carbon/src/Carbon/Lang/hr_BA.php
deleted file mode 100644
index 7763a458..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/hr_BA.php
+++ /dev/null
@@ -1,32 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - DarkoDevelop
- */
-return array_replace_recursive(require __DIR__.'/hr.php', [
- 'weekdays' => ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'],
- 'weekdays_short' => ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'],
- 'weekdays_min' => ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'],
- 'months' => ['siječnja', 'veljače', 'ožujka', 'travnja', 'svibnja', 'lipnja', 'srpnja', 'kolovoza', 'rujna', 'listopada', 'studenoga', 'prosinca'],
- 'months_short' => ['sij', 'velj', 'ožu', 'tra', 'svi', 'lip', 'srp', 'kol', 'ruj', 'lis', 'stu', 'pro'],
- 'months_standalone' => ['siječanj', 'veljača', 'ožujak', 'travanj', 'svibanj', 'lipanj', 'srpanj', 'kolovoz', 'rujan', 'listopad', 'studeni', 'prosinac'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D. M. yy.',
- 'LL' => 'D. MMM YYYY.',
- 'LLL' => 'D. MMMM YYYY. HH:mm',
- 'LLLL' => 'dddd, D. MMMM YYYY. HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hr_HR.php b/vendor/nesbot/carbon/src/Carbon/Lang/hr_HR.php
deleted file mode 100644
index db74d8c7..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/hr_HR.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/hr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hsb.php b/vendor/nesbot/carbon/src/Carbon/Lang/hsb.php
deleted file mode 100644
index 3537b8ba..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/hsb.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/hsb_DE.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hsb_DE.php b/vendor/nesbot/carbon/src/Carbon/Lang/hsb_DE.php
deleted file mode 100644
index 6ba22716..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/hsb_DE.php
+++ /dev/null
@@ -1,60 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Information from Michael Wolf Andrzej Krzysztofowicz ankry@mif.pg.gda.pl
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'DD. MMMM YYYY',
- 'LLL' => 'DD. MMMM, HH:mm [hodź.]',
- 'LLLL' => 'dddd, DD. MMMM YYYY, HH:mm [hodź.]',
- ],
- 'months' => ['januara', 'februara', 'měrca', 'apryla', 'meje', 'junija', 'julija', 'awgusta', 'septembra', 'oktobra', 'nowembra', 'decembra'],
- 'months_short' => ['Jan', 'Feb', 'Měr', 'Apr', 'Mej', 'Jun', 'Jul', 'Awg', 'Sep', 'Okt', 'Now', 'Dec'],
- 'weekdays' => ['Njedźela', 'Póndźela', 'Wutora', 'Srjeda', 'Štvórtk', 'Pjatk', 'Sobota'],
- 'weekdays_short' => ['Nj', 'Pó', 'Wu', 'Sr', 'Št', 'Pj', 'So'],
- 'weekdays_min' => ['Nj', 'Pó', 'Wu', 'Sr', 'Št', 'Pj', 'So'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-
- 'year' => ':count lěto',
- 'y' => ':count lěto',
- 'a_year' => ':count lěto',
-
- 'month' => ':count měsac',
- 'm' => ':count měsac',
- 'a_month' => ':count měsac',
-
- 'week' => ':count tydźeń',
- 'w' => ':count tydźeń',
- 'a_week' => ':count tydźeń',
-
- 'day' => ':count dźeń',
- 'd' => ':count dźeń',
- 'a_day' => ':count dźeń',
-
- 'hour' => ':count hodźina',
- 'h' => ':count hodźina',
- 'a_hour' => ':count hodźina',
-
- 'minute' => ':count chwila',
- 'min' => ':count chwila',
- 'a_minute' => ':count chwila',
-
- 'second' => ':count druhi',
- 's' => ':count druhi',
- 'a_second' => ':count druhi',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ht.php b/vendor/nesbot/carbon/src/Carbon/Lang/ht.php
deleted file mode 100644
index ebd12ad1..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ht.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/ht_HT.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ht_HT.php b/vendor/nesbot/carbon/src/Carbon/Lang/ht_HT.php
deleted file mode 100644
index 139b813b..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ht_HT.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Sugar Labs // OLPC sugarlabs.org libc-alpha@sourceware.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['janvye', 'fevriye', 'mas', 'avril', 'me', 'jen', 'jiyè', 'out', 'septanm', 'oktòb', 'novanm', 'desanm'],
- 'months_short' => ['jan', 'fev', 'mas', 'avr', 'me', 'jen', 'jiy', 'out', 'sep', 'okt', 'nov', 'des'],
- 'weekdays' => ['dimanch', 'lendi', 'madi', 'mèkredi', 'jedi', 'vandredi', 'samdi'],
- 'weekdays_short' => ['dim', 'len', 'mad', 'mèk', 'jed', 'van', 'sam'],
- 'weekdays_min' => ['dim', 'len', 'mad', 'mèk', 'jed', 'van', 'sam'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
-
- 'year' => ':count lane',
- 'y' => ':count lane',
- 'a_year' => ':count lane',
-
- 'month' => 'mwa :count',
- 'm' => 'mwa :count',
- 'a_month' => 'mwa :count',
-
- 'week' => 'semèn :count',
- 'w' => 'semèn :count',
- 'a_week' => 'semèn :count',
-
- 'day' => ':count jou',
- 'd' => ':count jou',
- 'a_day' => ':count jou',
-
- 'hour' => ':count lè',
- 'h' => ':count lè',
- 'a_hour' => ':count lè',
-
- 'minute' => ':count minit',
- 'min' => ':count minit',
- 'a_minute' => ':count minit',
-
- 'second' => ':count segonn',
- 's' => ':count segonn',
- 'a_second' => ':count segonn',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hu.php b/vendor/nesbot/carbon/src/Carbon/Lang/hu.php
deleted file mode 100644
index b2d2ac11..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/hu.php
+++ /dev/null
@@ -1,118 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Adam Brunner
- * - Brett Johnson
- * - balping
- */
-
-use Carbon\CarbonInterface;
-
-$huWeekEndings = ['vasárnap', 'hétfőn', 'kedden', 'szerdán', 'csütörtökön', 'pénteken', 'szombaton'];
-
-return [
- 'year' => ':count év',
- 'y' => ':count év',
- 'month' => ':count hónap',
- 'm' => ':count hónap',
- 'week' => ':count hét',
- 'w' => ':count hét',
- 'day' => ':count nap',
- 'd' => ':count nap',
- 'hour' => ':count óra',
- 'h' => ':count óra',
- 'minute' => ':count perc',
- 'min' => ':count perc',
- 'second' => ':count másodperc',
- 's' => ':count másodperc',
- 'ago' => ':time',
- 'from_now' => ':time múlva',
- 'after' => ':time később',
- 'before' => ':time korábban',
- 'year_ago' => ':count éve',
- 'y_ago' => ':count éve',
- 'month_ago' => ':count hónapja',
- 'm_ago' => ':count hónapja',
- 'week_ago' => ':count hete',
- 'w_ago' => ':count hete',
- 'day_ago' => ':count napja',
- 'd_ago' => ':count napja',
- 'hour_ago' => ':count órája',
- 'h_ago' => ':count órája',
- 'minute_ago' => ':count perce',
- 'min_ago' => ':count perce',
- 'second_ago' => ':count másodperce',
- 's_ago' => ':count másodperce',
- 'year_after' => ':count évvel',
- 'y_after' => ':count évvel',
- 'month_after' => ':count hónappal',
- 'm_after' => ':count hónappal',
- 'week_after' => ':count héttel',
- 'w_after' => ':count héttel',
- 'day_after' => ':count nappal',
- 'd_after' => ':count nappal',
- 'hour_after' => ':count órával',
- 'h_after' => ':count órával',
- 'minute_after' => ':count perccel',
- 'min_after' => ':count perccel',
- 'second_after' => ':count másodperccel',
- 's_after' => ':count másodperccel',
- 'year_before' => ':count évvel',
- 'y_before' => ':count évvel',
- 'month_before' => ':count hónappal',
- 'm_before' => ':count hónappal',
- 'week_before' => ':count héttel',
- 'w_before' => ':count héttel',
- 'day_before' => ':count nappal',
- 'd_before' => ':count nappal',
- 'hour_before' => ':count órával',
- 'h_before' => ':count órával',
- 'minute_before' => ':count perccel',
- 'min_before' => ':count perccel',
- 'second_before' => ':count másodperccel',
- 's_before' => ':count másodperccel',
- 'months' => ['január', 'február', 'március', 'április', 'május', 'június', 'július', 'augusztus', 'szeptember', 'október', 'november', 'december'],
- 'months_short' => ['jan.', 'feb.', 'márc.', 'ápr.', 'máj.', 'jún.', 'júl.', 'aug.', 'szept.', 'okt.', 'nov.', 'dec.'],
- 'weekdays' => ['vasárnap', 'hétfő', 'kedd', 'szerda', 'csütörtök', 'péntek', 'szombat'],
- 'weekdays_short' => ['vas', 'hét', 'kedd', 'sze', 'csüt', 'pén', 'szo'],
- 'weekdays_min' => ['v', 'h', 'k', 'sze', 'cs', 'p', 'sz'],
- 'ordinal' => ':number.',
- 'diff_now' => 'most',
- 'diff_today' => 'ma',
- 'diff_yesterday' => 'tegnap',
- 'diff_tomorrow' => 'holnap',
- 'formats' => [
- 'LT' => 'H:mm',
- 'LTS' => 'H:mm:ss',
- 'L' => 'YYYY.MM.DD.',
- 'LL' => 'YYYY. MMMM D.',
- 'LLL' => 'YYYY. MMMM D. H:mm',
- 'LLLL' => 'YYYY. MMMM D., dddd H:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[ma] LT[-kor]',
- 'nextDay' => '[holnap] LT[-kor]',
- 'nextWeek' => function (CarbonInterface $date) use ($huWeekEndings) {
- return '['.$huWeekEndings[$date->dayOfWeek].'] LT[-kor]';
- },
- 'lastDay' => '[tegnap] LT[-kor]',
- 'lastWeek' => function (CarbonInterface $date) use ($huWeekEndings) {
- return '[múlt '.$huWeekEndings[$date->dayOfWeek].'] LT[-kor]';
- },
- 'sameElse' => 'L',
- ],
- 'meridiem' => ['DE', 'DU'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' és '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hu_HU.php b/vendor/nesbot/carbon/src/Carbon/Lang/hu_HU.php
deleted file mode 100644
index b1c48541..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/hu_HU.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/hu.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hy.php b/vendor/nesbot/carbon/src/Carbon/Lang/hy.php
deleted file mode 100644
index 8b129947..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/hy.php
+++ /dev/null
@@ -1,95 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - mhamlet
- */
-return [
- 'year' => ':count տարի',
- 'a_year' => 'տարի|:count տարի',
- 'y' => ':countտ',
- 'month' => ':count ամիս',
- 'a_month' => 'ամիս|:count ամիս',
- 'm' => ':countամ',
- 'week' => ':count շաբաթ',
- 'a_week' => 'շաբաթ|:count շաբաթ',
- 'w' => ':countշ',
- 'day' => ':count օր',
- 'a_day' => 'օր|:count օր',
- 'd' => ':countօր',
- 'hour' => ':count ժամ',
- 'a_hour' => 'ժամ|:count ժամ',
- 'h' => ':countժ',
- 'minute' => ':count րոպե',
- 'a_minute' => 'րոպե|:count րոպե',
- 'min' => ':countր',
- 'second' => ':count վայրկյան',
- 'a_second' => 'մի քանի վայրկյան|:count վայրկյան',
- 's' => ':countվրկ',
- 'ago' => ':time առաջ',
- 'from_now' => ':timeից',
- 'after' => ':time հետո',
- 'before' => ':time առաջ',
- 'diff_now' => 'հիմա',
- 'diff_today' => 'այսօր',
- 'diff_yesterday' => 'երեկ',
- 'diff_tomorrow' => 'վաղը',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'D MMMM YYYY թ.',
- 'LLL' => 'D MMMM YYYY թ., HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY թ., HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[այսօր] LT',
- 'nextDay' => '[վաղը] LT',
- 'nextWeek' => 'dddd [օրը ժամը] LT',
- 'lastDay' => '[երեկ] LT',
- 'lastWeek' => '[անցած] dddd [օրը ժամը] LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => function ($number, $period) {
- switch ($period) {
- case 'DDD':
- case 'w':
- case 'W':
- case 'DDDo':
- return $number.($number === 1 ? '-ին' : '-րդ');
- default:
- return $number;
- }
- },
- 'meridiem' => function ($hour) {
- if ($hour < 4) {
- return 'գիշերվա';
- }
- if ($hour < 12) {
- return 'առավոտվա';
- }
- if ($hour < 17) {
- return 'ցերեկվա';
- }
-
- return 'երեկոյան';
- },
- 'months' => ['հունվարի', 'փետրվարի', 'մարտի', 'ապրիլի', 'մայիսի', 'հունիսի', 'հուլիսի', 'օգոստոսի', 'սեպտեմբերի', 'հոկտեմբերի', 'նոյեմբերի', 'դեկտեմբերի'],
- 'months_standalone' => ['հունվար', 'փետրվար', 'մարտ', 'ապրիլ', 'մայիս', 'հունիս', 'հուլիս', 'օգոստոս', 'սեպտեմբեր', 'հոկտեմբեր', 'նոյեմբեր', 'դեկտեմբեր'],
- 'months_short' => ['հնվ', 'փտր', 'մրտ', 'ապր', 'մյս', 'հնս', 'հլս', 'օգս', 'սպտ', 'հկտ', 'նմբ', 'դկտ'],
- 'months_regexp' => '/(D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|L{2,4}|l{2,4})/',
- 'weekdays' => ['կիրակի', 'երկուշաբթի', 'երեքշաբթի', 'չորեքշաբթի', 'հինգշաբթի', 'ուրբաթ', 'շաբաթ'],
- 'weekdays_short' => ['կրկ', 'երկ', 'երք', 'չրք', 'հնգ', 'ուրբ', 'շբթ'],
- 'weekdays_min' => ['կրկ', 'երկ', 'երք', 'չրք', 'հնգ', 'ուրբ', 'շբթ'],
- 'list' => [', ', ' եւ '],
- 'first_day_of_week' => 1,
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hy_AM.php b/vendor/nesbot/carbon/src/Carbon/Lang/hy_AM.php
deleted file mode 100644
index 4587df56..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/hy_AM.php
+++ /dev/null
@@ -1,24 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Josh Soref
- * - François B
- * - Tim Fish
- * - Serhan Apaydın
- * - JD Isaacks
- */
-return array_replace_recursive(require __DIR__.'/hy.php', [
- 'from_now' => ':time հետո',
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/i18n.php b/vendor/nesbot/carbon/src/Carbon/Lang/i18n.php
deleted file mode 100644
index e65449b8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/i18n.php
+++ /dev/null
@@ -1,23 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'YYYY-MM-DD',
- ],
- 'months' => ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'],
- 'months_short' => ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'],
- 'weekdays' => ['1', '2', '3', '4', '5', '6', '7'],
- 'weekdays_short' => ['1', '2', '3', '4', '5', '6', '7'],
- 'weekdays_min' => ['1', '2', '3', '4', '5', '6', '7'],
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 4,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ia.php b/vendor/nesbot/carbon/src/Carbon/Lang/ia.php
deleted file mode 100644
index 0a0d5e61..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ia.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/ia_FR.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ia_FR.php b/vendor/nesbot/carbon/src/Carbon/Lang/ia_FR.php
deleted file mode 100644
index de4b2fa0..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ia_FR.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Fedora Project Nik Kalach nikka@fedoraproject.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD.MM.YYYY',
- ],
- 'months' => ['januario', 'februario', 'martio', 'april', 'maio', 'junio', 'julio', 'augusto', 'septembre', 'octobre', 'novembre', 'decembre'],
- 'months_short' => ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'],
- 'weekdays' => ['dominica', 'lunedi', 'martedi', 'mercuridi', 'jovedi', 'venerdi', 'sabbato'],
- 'weekdays_short' => ['dom', 'lun', 'mar', 'mer', 'jov', 'ven', 'sab'],
- 'weekdays_min' => ['dom', 'lun', 'mar', 'mer', 'jov', 'ven', 'sab'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-
- 'year' => 'anno :count',
- 'y' => 'anno :count',
- 'a_year' => 'anno :count',
-
- 'month' => ':count mense',
- 'm' => ':count mense',
- 'a_month' => ':count mense',
-
- 'week' => ':count septimana',
- 'w' => ':count septimana',
- 'a_week' => ':count septimana',
-
- 'day' => ':count die',
- 'd' => ':count die',
- 'a_day' => ':count die',
-
- 'hour' => ':count hora',
- 'h' => ':count hora',
- 'a_hour' => ':count hora',
-
- 'minute' => ':count minuscule',
- 'min' => ':count minuscule',
- 'a_minute' => ':count minuscule',
-
- 'second' => ':count secunda',
- 's' => ':count secunda',
- 'a_second' => ':count secunda',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/id.php b/vendor/nesbot/carbon/src/Carbon/Lang/id.php
deleted file mode 100644
index afaf78f2..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/id.php
+++ /dev/null
@@ -1,92 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Josh Soref
- * - du
- * - JD Isaacks
- * - Nafies Luthfi
- * - Raymundus Jati Primanda (mundusjp)
- * - diankur313
- * - a-wip0
- */
-return [
- 'year' => ':count tahun',
- 'a_year' => '{1}setahun|]1,Inf[:count tahun',
- 'y' => ':countthn',
- 'month' => ':count bulan',
- 'a_month' => '{1}sebulan|]1,Inf[:count bulan',
- 'm' => ':countbln',
- 'week' => ':count minggu',
- 'a_week' => '{1}seminggu|]1,Inf[:count minggu',
- 'w' => ':countmgg',
- 'day' => ':count hari',
- 'a_day' => '{1}sehari|]1,Inf[:count hari',
- 'd' => ':counthr',
- 'hour' => ':count jam',
- 'a_hour' => '{1}sejam|]1,Inf[:count jam',
- 'h' => ':countj',
- 'minute' => ':count menit',
- 'a_minute' => '{1}semenit|]1,Inf[:count menit',
- 'min' => ':countmnt',
- 'second' => ':count detik',
- 'a_second' => '{1}beberapa detik|]1,Inf[:count detik',
- 's' => ':countdt',
- 'ago' => ':time yang lalu',
- 'from_now' => ':time dari sekarang',
- 'after' => ':time setelahnya',
- 'before' => ':time sebelumnya',
- 'diff_now' => 'sekarang',
- 'diff_today' => 'Hari',
- 'diff_today_regexp' => 'Hari(?:\\s+ini)?(?:\\s+pukul)?',
- 'diff_yesterday' => 'kemarin',
- 'diff_yesterday_regexp' => 'Kemarin(?:\\s+pukul)?',
- 'diff_tomorrow' => 'besok',
- 'diff_tomorrow_regexp' => 'Besok(?:\\s+pukul)?',
- 'formats' => [
- 'LT' => 'HH.mm',
- 'LTS' => 'HH.mm.ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY [pukul] HH.mm',
- 'LLLL' => 'dddd, D MMMM YYYY [pukul] HH.mm',
- ],
- 'calendar' => [
- 'sameDay' => '[Hari ini pukul] LT',
- 'nextDay' => '[Besok pukul] LT',
- 'nextWeek' => 'dddd [pukul] LT',
- 'lastDay' => '[Kemarin pukul] LT',
- 'lastWeek' => 'dddd [lalu pukul] LT',
- 'sameElse' => 'L',
- ],
- 'meridiem' => function ($hour) {
- if ($hour < 11) {
- return 'pagi';
- }
- if ($hour < 15) {
- return 'siang';
- }
- if ($hour < 19) {
- return 'sore';
- }
-
- return 'malam';
- },
- 'months' => ['Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember'],
- 'months_short' => ['Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Agt', 'Sep', 'Okt', 'Nov', 'Des'],
- 'weekdays' => ['Minggu', 'Senin', 'Selasa', 'Rabu', 'Kamis', 'Jumat', 'Sabtu'],
- 'weekdays_short' => ['Min', 'Sen', 'Sel', 'Rab', 'Kam', 'Jum', 'Sab'],
- 'weekdays_min' => ['Mg', 'Sn', 'Sl', 'Rb', 'Km', 'Jm', 'Sb'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'list' => [', ', ' dan '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/id_ID.php b/vendor/nesbot/carbon/src/Carbon/Lang/id_ID.php
deleted file mode 100644
index d5953a14..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/id_ID.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/id.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ig.php b/vendor/nesbot/carbon/src/Carbon/Lang/ig.php
deleted file mode 100644
index de51e9cc..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ig.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/ig_NG.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ig_NG.php b/vendor/nesbot/carbon/src/Carbon/Lang/ig_NG.php
deleted file mode 100644
index 0034e35d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ig_NG.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - pablo@mandriva.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YY',
- ],
- 'months' => ['Jenụwarị', 'Febrụwarị', 'Maachị', 'Eprel', 'Mee', 'Juun', 'Julaị', 'Ọgọọst', 'Septemba', 'Ọktoba', 'Novemba', 'Disemba'],
- 'months_short' => ['Jen', 'Feb', 'Maa', 'Epr', 'Mee', 'Juu', 'Jul', 'Ọgọ', 'Sep', 'Ọkt', 'Nov', 'Dis'],
- 'weekdays' => ['sọnde', 'mọnde', 'tuzde', 'wenzde', 'tọsde', 'fraịde', 'satọde'],
- 'weekdays_short' => ['sọn', 'mọn', 'tuz', 'wen', 'tọs', 'fra', 'sat'],
- 'weekdays_min' => ['sọn', 'mọn', 'tuz', 'wen', 'tọs', 'fra', 'sat'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
-
- 'year' => 'afo :count',
- 'y' => 'afo :count',
- 'a_year' => 'afo :count',
-
- 'month' => 'önwa :count',
- 'm' => 'önwa :count',
- 'a_month' => 'önwa :count',
-
- 'week' => 'izu :count',
- 'w' => 'izu :count',
- 'a_week' => 'izu :count',
-
- 'day' => 'ụbọchị :count',
- 'd' => 'ụbọchị :count',
- 'a_day' => 'ụbọchị :count',
-
- 'hour' => 'awa :count',
- 'h' => 'awa :count',
- 'a_hour' => 'awa :count',
-
- 'minute' => 'minit :count',
- 'min' => 'minit :count',
- 'a_minute' => 'minit :count',
-
- 'second' => 'sekọnd :count',
- 's' => 'sekọnd :count',
- 'a_second' => 'sekọnd :count',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ii.php b/vendor/nesbot/carbon/src/Carbon/Lang/ii.php
deleted file mode 100644
index a4246c27..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ii.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['ꎸꄑ', 'ꁯꋒ'],
- 'weekdays' => ['ꑭꆏꑍ', 'ꆏꊂꋍ', 'ꆏꊂꑍ', 'ꆏꊂꌕ', 'ꆏꊂꇖ', 'ꆏꊂꉬ', 'ꆏꊂꃘ'],
- 'weekdays_short' => ['ꑭꆏ', 'ꆏꋍ', 'ꆏꑍ', 'ꆏꌕ', 'ꆏꇖ', 'ꆏꉬ', 'ꆏꃘ'],
- 'weekdays_min' => ['ꑭꆏ', 'ꆏꋍ', 'ꆏꑍ', 'ꆏꌕ', 'ꆏꇖ', 'ꆏꉬ', 'ꆏꃘ'],
- 'months' => null,
- 'months_short' => ['ꋍꆪ', 'ꑍꆪ', 'ꌕꆪ', 'ꇖꆪ', 'ꉬꆪ', 'ꃘꆪ', 'ꏃꆪ', 'ꉆꆪ', 'ꈬꆪ', 'ꊰꆪ', 'ꊰꊪꆪ', 'ꊰꑋꆪ'],
- 'formats' => [
- 'LT' => 'h:mm a',
- 'LTS' => 'h:mm:ss a',
- 'L' => 'YYYY-MM-dd',
- 'LL' => 'YYYY MMM D',
- 'LLL' => 'YYYY MMMM D h:mm a',
- 'LLLL' => 'YYYY MMMM D, dddd h:mm a',
- ],
-
- 'year' => ':count ꒉ', // less reliable
- 'y' => ':count ꒉ', // less reliable
- 'a_year' => ':count ꒉ', // less reliable
-
- 'month' => ':count ꆪ',
- 'm' => ':count ꆪ',
- 'a_month' => ':count ꆪ',
-
- 'week' => ':count ꏃ', // less reliable
- 'w' => ':count ꏃ', // less reliable
- 'a_week' => ':count ꏃ', // less reliable
-
- 'day' => ':count ꏜ', // less reliable
- 'd' => ':count ꏜ', // less reliable
- 'a_day' => ':count ꏜ', // less reliable
-
- 'hour' => ':count ꄮꈉ',
- 'h' => ':count ꄮꈉ',
- 'a_hour' => ':count ꄮꈉ',
-
- 'minute' => ':count ꀄꊭ', // less reliable
- 'min' => ':count ꀄꊭ', // less reliable
- 'a_minute' => ':count ꀄꊭ', // less reliable
-
- 'second' => ':count ꇅ', // less reliable
- 's' => ':count ꇅ', // less reliable
- 'a_second' => ':count ꇅ', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ik.php b/vendor/nesbot/carbon/src/Carbon/Lang/ik.php
deleted file mode 100644
index 7a13aa2d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ik.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/ik_CA.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ik_CA.php b/vendor/nesbot/carbon/src/Carbon/Lang/ik_CA.php
deleted file mode 100644
index bb2a109b..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ik_CA.php
+++ /dev/null
@@ -1,50 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - pablo@mandriva.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YY',
- ],
- 'months' => ['Siqiññaatchiaq', 'Siqiññaasrugruk', 'Paniqsiqsiivik', 'Qilġich Tatqiat', 'Suppivik', 'Iġñivik', 'Itchavik', 'Tiññivik', 'Amiġaiqsivik', 'Sikkuvik', 'Nippivik', 'Siqiñġiḷaq'],
- 'months_short' => ['Sñt', 'Sñs', 'Pan', 'Qil', 'Sup', 'Iġñ', 'Itc', 'Tiñ', 'Ami', 'Sik', 'Nip', 'Siq'],
- 'weekdays' => ['Minġuiqsioiq', 'Savałłiq', 'Ilaqtchiioiq', 'Qitchiioiq', 'Sisamiioiq', 'Tallimmiioiq', 'Maqinġuoiq'],
- 'weekdays_short' => ['Min', 'Sav', 'Ila', 'Qit', 'Sis', 'Tal', 'Maq'],
- 'weekdays_min' => ['Min', 'Sav', 'Ila', 'Qit', 'Sis', 'Tal', 'Maq'],
- 'day_of_first_week_of_year' => 1,
-
- 'year' => ':count ukiuq',
- 'y' => ':count ukiuq',
- 'a_year' => ':count ukiuq',
-
- 'month' => ':count Tatqiat',
- 'm' => ':count Tatqiat',
- 'a_month' => ':count Tatqiat',
-
- 'week' => ':count tatqiat', // less reliable
- 'w' => ':count tatqiat', // less reliable
- 'a_week' => ':count tatqiat', // less reliable
-
- 'day' => ':count siqiñiq', // less reliable
- 'd' => ':count siqiñiq', // less reliable
- 'a_day' => ':count siqiñiq', // less reliable
-
- 'hour' => ':count Siḷa', // less reliable
- 'h' => ':count Siḷa', // less reliable
- 'a_hour' => ':count Siḷa', // less reliable
-
- 'second' => ':count iġñiq', // less reliable
- 's' => ':count iġñiq', // less reliable
- 'a_second' => ':count iġñiq', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/in.php b/vendor/nesbot/carbon/src/Carbon/Lang/in.php
deleted file mode 100644
index d5953a14..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/in.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/id.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/is.php b/vendor/nesbot/carbon/src/Carbon/Lang/is.php
deleted file mode 100644
index 9990168c..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/is.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Kristján Ingi Geirsson
- */
-return [
- 'year' => '1 ár|:count ár',
- 'y' => '1 ár|:count ár',
- 'month' => '1 mánuður|:count mánuðir',
- 'm' => '1 mánuður|:count mánuðir',
- 'week' => '1 vika|:count vikur',
- 'w' => '1 vika|:count vikur',
- 'day' => '1 dagur|:count dagar',
- 'd' => '1 dagur|:count dagar',
- 'hour' => '1 klukkutími|:count klukkutímar',
- 'h' => '1 klukkutími|:count klukkutímar',
- 'minute' => '1 mínúta|:count mínútur',
- 'min' => '1 mínúta|:count mínútur',
- 'second' => '1 sekúnda|:count sekúndur',
- 's' => '1 sekúnda|:count sekúndur',
- 'ago' => ':time síðan',
- 'from_now' => ':time síðan',
- 'after' => ':time eftir',
- 'before' => ':time fyrir',
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' og '],
- 'meridiem' => ['fh', 'eh'],
- 'diff_now' => 'núna',
- 'diff_yesterday' => 'í gær',
- 'diff_tomorrow' => 'á morgun',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'D. MMMM YYYY',
- 'LLL' => 'D. MMMM [kl.] HH:mm',
- 'LLLL' => 'dddd D. MMMM YYYY [kl.] HH:mm',
- ],
- 'weekdays' => ['sunnudaginn', 'mánudaginn', 'þriðjudaginn', 'miðvikudaginn', 'fimmtudaginn', 'föstudaginn', 'laugardaginn'],
- 'weekdays_short' => ['sun', 'mán', 'þri', 'mið', 'fim', 'fös', 'lau'],
- 'weekdays_min' => ['sun', 'mán', 'þri', 'mið', 'fim', 'fös', 'lau'],
- 'months' => ['janúar', 'febrúar', 'mars', 'apríl', 'maí', 'júní', 'júlí', 'ágúst', 'september', 'október', 'nóvember', 'desember'],
- 'months_short' => ['jan', 'feb', 'mar', 'apr', 'maí', 'jún', 'júl', 'ágú', 'sep', 'okt', 'nóv', 'des'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/is_IS.php b/vendor/nesbot/carbon/src/Carbon/Lang/is_IS.php
deleted file mode 100644
index 4d35c448..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/is_IS.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/is.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/it.php b/vendor/nesbot/carbon/src/Carbon/Lang/it.php
deleted file mode 100644
index 605bcbb5..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/it.php
+++ /dev/null
@@ -1,106 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Ash
- * - François B
- * - Marco Perrando
- * - Massimiliano Caniparoli
- * - JD Isaacks
- * - Andrea Martini
- * - Francesco Marasco
- * - Tizianoz93
- * - Davide Casiraghi (davide-casiraghi)
- * - Pete Scopes (pdscopes)
- */
-
-use Carbon\CarbonInterface;
-
-return [
- 'year' => ':count anno|:count anni',
- 'a_year' => 'un anno|:count anni',
- 'y' => ':count anno|:count anni',
- 'month' => ':count mese|:count mesi',
- 'a_month' => 'un mese|:count mesi',
- 'm' => ':count mese|:count mesi',
- 'week' => ':count settimana|:count settimane',
- 'a_week' => 'una settimana|:count settimane',
- 'w' => ':count set.',
- 'day' => ':count giorno|:count giorni',
- 'a_day' => 'un giorno|:count giorni',
- 'd' => ':count g|:count gg',
- 'hour' => ':count ora|:count ore',
- 'a_hour' => 'un\'ora|:count ore',
- 'h' => ':count h',
- 'minute' => ':count minuto|:count minuti',
- 'a_minute' => 'un minuto|:count minuti',
- 'min' => ':count min.',
- 'second' => ':count secondo|:count secondi',
- 'a_second' => 'alcuni secondi|:count secondi',
- 's' => ':count sec.',
- 'millisecond' => ':count millisecondo|:count millisecondi',
- 'a_millisecond' => 'un millisecondo|:count millisecondi',
- 'ms' => ':countms',
- 'microsecond' => ':count microsecondo|:count microsecondi',
- 'a_microsecond' => 'un microsecondo|:count microsecondi',
- 'µs' => ':countµs',
- 'ago' => ':time fa',
- 'from_now' => function ($time) {
- return (preg_match('/^[0-9].+$/', $time) ? 'tra' : 'in')." $time";
- },
- 'after' => ':time dopo',
- 'before' => ':time prima',
- 'diff_now' => 'proprio ora',
- 'diff_today' => 'Oggi',
- 'diff_today_regexp' => 'Oggi(?:\\s+alle)?',
- 'diff_yesterday' => 'ieri',
- 'diff_yesterday_regexp' => 'Ieri(?:\\s+alle)?',
- 'diff_tomorrow' => 'domani',
- 'diff_tomorrow_regexp' => 'Domani(?:\\s+alle)?',
- 'diff_before_yesterday' => 'l\'altro ieri',
- 'diff_after_tomorrow' => 'dopodomani',
- 'period_interval' => 'ogni :interval',
- 'period_start_date' => 'dal :date',
- 'period_end_date' => 'al :date',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[Oggi alle] LT',
- 'nextDay' => '[Domani alle] LT',
- 'nextWeek' => 'dddd [alle] LT',
- 'lastDay' => '[Ieri alle] LT',
- 'lastWeek' => function (CarbonInterface $date) {
- switch ($date->dayOfWeek) {
- case 0:
- return '[la scorsa] dddd [alle] LT';
- default:
- return '[lo scorso] dddd [alle] LT';
- }
- },
- 'sameElse' => 'L',
- ],
- 'ordinal' => ':numberº',
- 'months' => ['gennaio', 'febbraio', 'marzo', 'aprile', 'maggio', 'giugno', 'luglio', 'agosto', 'settembre', 'ottobre', 'novembre', 'dicembre'],
- 'months_short' => ['gen', 'feb', 'mar', 'apr', 'mag', 'giu', 'lug', 'ago', 'set', 'ott', 'nov', 'dic'],
- 'weekdays' => ['domenica', 'lunedì', 'martedì', 'mercoledì', 'giovedì', 'venerdì', 'sabato'],
- 'weekdays_short' => ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'],
- 'weekdays_min' => ['do', 'lu', 'ma', 'me', 'gi', 've', 'sa'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' e '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/it_CH.php b/vendor/nesbot/carbon/src/Carbon/Lang/it_CH.php
deleted file mode 100644
index c23cc50e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/it_CH.php
+++ /dev/null
@@ -1,20 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Propaganistas
- */
-return array_replace_recursive(require __DIR__.'/it.php', [
- 'formats' => [
- 'L' => 'DD.MM.YYYY',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/it_IT.php b/vendor/nesbot/carbon/src/Carbon/Lang/it_IT.php
deleted file mode 100644
index a5d19818..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/it_IT.php
+++ /dev/null
@@ -1,16 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - RAP bug-glibc-locales@gnu.org
- */
-return require __DIR__.'/it.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/it_SM.php b/vendor/nesbot/carbon/src/Carbon/Lang/it_SM.php
deleted file mode 100644
index 5e8fc92f..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/it_SM.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/it.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/it_VA.php b/vendor/nesbot/carbon/src/Carbon/Lang/it_VA.php
deleted file mode 100644
index 5e8fc92f..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/it_VA.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/it.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/iu.php b/vendor/nesbot/carbon/src/Carbon/Lang/iu.php
deleted file mode 100644
index 4fa97427..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/iu.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/iu_CA.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/iu_CA.php b/vendor/nesbot/carbon/src/Carbon/Lang/iu_CA.php
deleted file mode 100644
index 6ab7e149..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/iu_CA.php
+++ /dev/null
@@ -1,54 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Pablo Saratxaga pablo@mandriva.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'MM/DD/YY',
- ],
- 'months' => ['ᔮᓄᐊᓕ', 'ᕕᕗᐊᓕ', 'ᒪᔅᓯ', 'ᐃᐳᓗ', 'ᒪᐃ', 'ᔪᓂ', 'ᔪᓚᐃ', 'ᐊᒋᓯ', 'ᓯᑎᕙ', 'ᐊᑦᑐᕙ', 'ᓄᕕᕙ', 'ᑎᓯᕝᕙ'],
- 'months_short' => ['ᔮᓄ', 'ᕕᕗ', 'ᒪᔅ', 'ᐃᐳ', 'ᒪᐃ', 'ᔪᓂ', 'ᔪᓚ', 'ᐊᒋ', 'ᓯᑎ', 'ᐊᑦ', 'ᓄᕕ', 'ᑎᓯ'],
- 'weekdays' => ['ᓈᑦᑎᖑᔭᕐᕕᒃ', 'ᓇᒡᒐᔾᔭᐅ', 'ᓇᒡᒐᔾᔭᐅᓕᖅᑭᑦ', 'ᐱᖓᓲᓕᖅᓯᐅᑦ', 'ᕿᑎᖅᑰᑦ', 'ᐅᓪᓗᕈᓘᑐᐃᓇᖅ', 'ᓯᕙᑖᕕᒃ'],
- 'weekdays_short' => ['ᓈ', 'ᓇ', 'ᓕ', 'ᐱ', 'ᕿ', 'ᐅ', 'ᓯ'],
- 'weekdays_min' => ['ᓈ', 'ᓇ', 'ᓕ', 'ᐱ', 'ᕿ', 'ᐅ', 'ᓯ'],
- 'day_of_first_week_of_year' => 1,
-
- 'year' => ':count ᐅᑭᐅᖅ',
- 'y' => ':count ᐅᑭᐅᖅ',
- 'a_year' => ':count ᐅᑭᐅᖅ',
-
- 'month' => ':count qaammat',
- 'm' => ':count qaammat',
- 'a_month' => ':count qaammat',
-
- 'week' => ':count sapaatip akunnera',
- 'w' => ':count sapaatip akunnera',
- 'a_week' => ':count sapaatip akunnera',
-
- 'day' => ':count ulloq',
- 'd' => ':count ulloq',
- 'a_day' => ':count ulloq',
-
- 'hour' => ':count ikarraq',
- 'h' => ':count ikarraq',
- 'a_hour' => ':count ikarraq',
-
- 'minute' => ':count titiqqaralaaq', // less reliable
- 'min' => ':count titiqqaralaaq', // less reliable
- 'a_minute' => ':count titiqqaralaaq', // less reliable
-
- 'second' => ':count marluk', // less reliable
- 's' => ':count marluk', // less reliable
- 'a_second' => ':count marluk', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/iw.php b/vendor/nesbot/carbon/src/Carbon/Lang/iw.php
deleted file mode 100644
index a26e3506..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/iw.php
+++ /dev/null
@@ -1,58 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'months' => ['ינואר', 'פברואר', 'מרץ', 'אפריל', 'מאי', 'יוני', 'יולי', 'אוגוסט', 'ספטמבר', 'אוקטובר', 'נובמבר', 'דצמבר'],
- 'months_short' => ['ינו׳', 'פבר׳', 'מרץ', 'אפר׳', 'מאי', 'יוני', 'יולי', 'אוג׳', 'ספט׳', 'אוק׳', 'נוב׳', 'דצמ׳'],
- 'weekdays' => ['יום ראשון', 'יום שני', 'יום שלישי', 'יום רביעי', 'יום חמישי', 'יום שישי', 'יום שבת'],
- 'weekdays_short' => ['יום א׳', 'יום ב׳', 'יום ג׳', 'יום ד׳', 'יום ה׳', 'יום ו׳', 'שבת'],
- 'weekdays_min' => ['א׳', 'ב׳', 'ג׳', 'ד׳', 'ה׳', 'ו׳', 'ש׳'],
- 'meridiem' => ['לפנה״צ', 'אחה״צ'],
- 'formats' => [
- 'LT' => 'H:mm',
- 'LTS' => 'H:mm:ss',
- 'L' => 'D.M.YYYY',
- 'LL' => 'D בMMM YYYY',
- 'LLL' => 'D בMMMM YYYY H:mm',
- 'LLLL' => 'dddd, D בMMMM YYYY H:mm',
- ],
-
- 'year' => ':count שנה',
- 'y' => ':count שנה',
- 'a_year' => ':count שנה',
-
- 'month' => ':count חודש',
- 'm' => ':count חודש',
- 'a_month' => ':count חודש',
-
- 'week' => ':count שבוע',
- 'w' => ':count שבוע',
- 'a_week' => ':count שבוע',
-
- 'day' => ':count יום',
- 'd' => ':count יום',
- 'a_day' => ':count יום',
-
- 'hour' => ':count שעה',
- 'h' => ':count שעה',
- 'a_hour' => ':count שעה',
-
- 'minute' => ':count דקה',
- 'min' => ':count דקה',
- 'a_minute' => ':count דקה',
-
- 'second' => ':count שניה',
- 's' => ':count שניה',
- 'a_second' => ':count שניה',
-
- 'ago' => 'לפני :time',
- 'from_now' => 'בעוד :time',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ja.php b/vendor/nesbot/carbon/src/Carbon/Lang/ja.php
deleted file mode 100644
index 1ca67519..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ja.php
+++ /dev/null
@@ -1,102 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Takuya Sawada
- * - Atsushi Tanaka
- * - François B
- * - Jason Katz-Brown
- * - Serhan Apaydın
- * - XueWei
- * - JD Isaacks
- * - toyama satoshi
- * - atakigawa
- */
-
-use Carbon\CarbonInterface;
-
-return [
- 'year' => ':count年',
- 'y' => ':count年',
- 'month' => ':countヶ月',
- 'm' => ':countヶ月',
- 'week' => ':count週間',
- 'w' => ':count週間',
- 'day' => ':count日',
- 'd' => ':count日',
- 'hour' => ':count時間',
- 'h' => ':count時間',
- 'minute' => ':count分',
- 'min' => ':count分',
- 'second' => ':count秒',
- 'a_second' => '{1}数秒|]1,Inf[:count秒',
- 's' => ':count秒',
- 'ago' => ':time前',
- 'from_now' => ':time後',
- 'after' => ':time後',
- 'before' => ':time前',
- 'diff_now' => '今',
- 'diff_today' => '今日',
- 'diff_yesterday' => '昨日',
- 'diff_tomorrow' => '明日',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'YYYY/MM/DD',
- 'LL' => 'YYYY年M月D日',
- 'LLL' => 'YYYY年M月D日 HH:mm',
- 'LLLL' => 'YYYY年M月D日 dddd HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[今日] LT',
- 'nextDay' => '[明日] LT',
- 'nextWeek' => function (CarbonInterface $current, CarbonInterface $other) {
- if ($other->week !== $current->week) {
- return '[来週]dddd LT';
- }
-
- return 'dddd LT';
- },
- 'lastDay' => '[昨日] LT',
- 'lastWeek' => function (CarbonInterface $current, CarbonInterface $other) {
- if ($other->week !== $current->week) {
- return '[先週]dddd LT';
- }
-
- return 'dddd LT';
- },
- 'sameElse' => 'L',
- ],
- 'ordinal' => function ($number, $period) {
- switch ($period) {
- case 'd':
- case 'D':
- case 'DDD':
- return $number.'日';
- default:
- return $number;
- }
- },
- 'meridiem' => ['午前', '午後'],
- 'months' => ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
- 'months_short' => ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
- 'weekdays' => ['日曜日', '月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日'],
- 'weekdays_short' => ['日', '月', '火', '水', '木', '金', '土'],
- 'weekdays_min' => ['日', '月', '火', '水', '木', '金', '土'],
- 'list' => '、',
- 'alt_numbers' => ['〇', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二', '十三', '十四', '十五', '十六', '十七', '十八', '十九', '二十', '二十一', '二十二', '二十三', '二十四', '二十五', '二十六', '二十七', '二十八', '二十九', '三十', '三十一', '三十二', '三十三', '三十四', '三十五', '三十六', '三十七', '三十八', '三十九', '四十', '四十一', '四十二', '四十三', '四十四', '四十五', '四十六', '四十七', '四十八', '四十九', '五十', '五十一', '五十二', '五十三', '五十四', '五十五', '五十六', '五十七', '五十八', '五十九', '六十', '六十一', '六十二', '六十三', '六十四', '六十五', '六十六', '六十七', '六十八', '六十九', '七十', '七十一', '七十二', '七十三', '七十四', '七十五', '七十六', '七十七', '七十八', '七十九', '八十', '八十一', '八十二', '八十三', '八十四', '八十五', '八十六', '八十七', '八十八', '八十九', '九十', '九十一', '九十二', '九十三', '九十四', '九十五', '九十六', '九十七', '九十八', '九十九'],
- 'alt_numbers_pow' => [
- 10000 => '万',
- 1000 => '千',
- 100 => '百',
- ],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ja_JP.php b/vendor/nesbot/carbon/src/Carbon/Lang/ja_JP.php
deleted file mode 100644
index c2836253..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ja_JP.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/ja.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/jgo.php b/vendor/nesbot/carbon/src/Carbon/Lang/jgo.php
deleted file mode 100644
index 6a1e77a8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/jgo.php
+++ /dev/null
@@ -1,13 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/jmc.php b/vendor/nesbot/carbon/src/Carbon/Lang/jmc.php
deleted file mode 100644
index ed92e8e7..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/jmc.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['utuko', 'kyiukonyi'],
- 'weekdays' => ['Jumapilyi', 'Jumatatuu', 'Jumanne', 'Jumatanu', 'Alhamisi', 'Ijumaa', 'Jumamosi'],
- 'weekdays_short' => ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'],
- 'weekdays_min' => ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'],
- 'months' => ['Januari', 'Februari', 'Machi', 'Aprilyi', 'Mei', 'Junyi', 'Julyai', 'Agusti', 'Septemba', 'Oktoba', 'Novemba', 'Desemba'],
- 'months_short' => ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/jv.php b/vendor/nesbot/carbon/src/Carbon/Lang/jv.php
deleted file mode 100644
index bcbe044e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/jv.php
+++ /dev/null
@@ -1,71 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Josh Soref
- * - tgfjt
- * - JD Isaacks
- */
-return [
- 'year' => '{1}setaun|]1,Inf[:count taun',
- 'month' => '{1}sewulan|]1,Inf[:count wulan',
- 'week' => '{1}sakminggu|]1,Inf[:count minggu',
- 'day' => '{1}sedinten|]1,Inf[:count dinten',
- 'hour' => '{1}setunggal jam|]1,Inf[:count jam',
- 'minute' => '{1}setunggal menit|]1,Inf[:count menit',
- 'second' => '{1}sawetawis detik|]1,Inf[:count detik',
- 'ago' => ':time ingkang kepengker',
- 'from_now' => 'wonten ing :time',
- 'diff_today' => 'Dinten',
- 'diff_yesterday' => 'Kala',
- 'diff_yesterday_regexp' => 'Kala(?:\\s+wingi)?(?:\\s+pukul)?',
- 'diff_tomorrow' => 'Mbenjang',
- 'diff_tomorrow_regexp' => 'Mbenjang(?:\\s+pukul)?',
- 'diff_today_regexp' => 'Dinten(?:\\s+puniko)?(?:\\s+pukul)?',
- 'formats' => [
- 'LT' => 'HH.mm',
- 'LTS' => 'HH.mm.ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY [pukul] HH.mm',
- 'LLLL' => 'dddd, D MMMM YYYY [pukul] HH.mm',
- ],
- 'calendar' => [
- 'sameDay' => '[Dinten puniko pukul] LT',
- 'nextDay' => '[Mbenjang pukul] LT',
- 'nextWeek' => 'dddd [pukul] LT',
- 'lastDay' => '[Kala wingi pukul] LT',
- 'lastWeek' => 'dddd [kepengker pukul] LT',
- 'sameElse' => 'L',
- ],
- 'meridiem' => function ($hour) {
- if ($hour < 11) {
- return 'enjing';
- }
- if ($hour < 15) {
- return 'siyang';
- }
- if ($hour < 19) {
- return 'sonten';
- }
-
- return 'ndalu';
- },
- 'months' => ['Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'Nopember', 'Desember'],
- 'months_short' => ['Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Ags', 'Sep', 'Okt', 'Nop', 'Des'],
- 'weekdays' => ['Minggu', 'Senen', 'Seloso', 'Rebu', 'Kemis', 'Jemuwah', 'Septu'],
- 'weekdays_short' => ['Min', 'Sen', 'Sel', 'Reb', 'Kem', 'Jem', 'Sep'],
- 'weekdays_min' => ['Mg', 'Sn', 'Sl', 'Rb', 'Km', 'Jm', 'Sp'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'list' => [', ', ' lan '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ka.php b/vendor/nesbot/carbon/src/Carbon/Lang/ka.php
deleted file mode 100644
index a5d563d3..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ka.php
+++ /dev/null
@@ -1,204 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Tornike Razmadze
- * - François B
- * - Lasha Dolidze
- * - Tim Fish
- * - JD Isaacks
- * - Tornike Razmadze
- * - François B
- * - Lasha Dolidze
- * - JD Isaacks
- * - LONGMAN
- * - Avtandil Kikabidze (akalongman)
- * - Levan Velijanashvili (Stichoza)
- */
-
-use Carbon\CarbonInterface;
-
-return [
- 'year' => ':count წელი',
- 'y' => ':count წელი',
- 'a_year' => '{1}წელი|]1,Inf[:count წელი',
- 'month' => ':count თვე',
- 'm' => ':count თვე',
- 'a_month' => '{1}თვე|]1,Inf[:count თვე',
- 'week' => ':count კვირა',
- 'w' => ':count კვირა',
- 'a_week' => '{1}კვირა|]1,Inf[:count კვირა',
- 'day' => ':count დღე',
- 'd' => ':count დღე',
- 'a_day' => '{1}დღე|]1,Inf[:count დღე',
- 'hour' => ':count საათი',
- 'h' => ':count საათი',
- 'a_hour' => '{1}საათი|]1,Inf[:count საათი',
- 'minute' => ':count წუთი',
- 'min' => ':count წუთი',
- 'a_minute' => '{1}წუთი|]1,Inf[:count წუთი',
- 'second' => ':count წამი',
- 's' => ':count წამი',
- 'a_second' => '{1}რამდენიმე წამი|]1,Inf[:count წამი',
- 'ago' => function ($time) {
- $replacements = [
- // year
- 'წელი' => 'წლის',
- // month
- 'თვე' => 'თვის',
- // week
- 'კვირა' => 'კვირის',
- // day
- 'დღე' => 'დღის',
- // hour
- 'საათი' => 'საათის',
- // minute
- 'წუთი' => 'წუთის',
- // second
- 'წამი' => 'წამის',
- ];
- $time = strtr($time, array_flip($replacements));
- $time = strtr($time, $replacements);
-
- return "$time წინ";
- },
- 'from_now' => function ($time) {
- $replacements = [
- // year
- 'წელი' => 'წელიწადში',
- // week
- 'კვირა' => 'კვირაში',
- // day
- 'დღე' => 'დღეში',
- // month
- 'თვე' => 'თვეში',
- // hour
- 'საათი' => 'საათში',
- // minute
- 'წუთი' => 'წუთში',
- // second
- 'წამი' => 'წამში',
- ];
- $time = strtr($time, array_flip($replacements));
- $time = strtr($time, $replacements);
-
- return $time;
- },
- 'after' => function ($time) {
- $replacements = [
- // year
- 'წელი' => 'წლის',
- // month
- 'თვე' => 'თვის',
- // week
- 'კვირა' => 'კვირის',
- // day
- 'დღე' => 'დღის',
- // hour
- 'საათი' => 'საათის',
- // minute
- 'წუთი' => 'წუთის',
- // second
- 'წამი' => 'წამის',
- ];
- $time = strtr($time, array_flip($replacements));
- $time = strtr($time, $replacements);
-
- return "$time შემდეგ";
- },
- 'before' => function ($time) {
- $replacements = [
- // year
- 'წელი' => 'წლით',
- // month
- 'თვე' => 'თვით',
- // week
- 'კვირა' => 'კვირით',
- // day
- 'დღე' => 'დღით',
- // hour
- 'საათი' => 'საათით',
- // minute
- 'წუთი' => 'წუთით',
- // second
- 'წამი' => 'წამით',
- ];
- $time = strtr($time, array_flip($replacements));
- $time = strtr($time, $replacements);
-
- return "$time ადრე";
- },
- 'diff_now' => 'ახლა',
- 'diff_today' => 'დღეს',
- 'diff_yesterday' => 'გუშინ',
- 'diff_tomorrow' => 'ხვალ',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[დღეს], LT[-ზე]',
- 'nextDay' => '[ხვალ], LT[-ზე]',
- 'nextWeek' => function (CarbonInterface $current, CarbonInterface $other) {
- return ($current->isSameWeek($other) ? '' : '[შემდეგ] ').'dddd, LT[-ზე]';
- },
- 'lastDay' => '[გუშინ], LT[-ზე]',
- 'lastWeek' => '[წინა] dddd, LT-ზე',
- 'sameElse' => 'L',
- ],
- 'ordinal' => function ($number) {
- if ($number === 0) {
- return $number;
- }
- if ($number === 1) {
- return $number.'-ლი';
- }
- if (($number < 20) || ($number <= 100 && ($number % 20 === 0)) || ($number % 100 === 0)) {
- return 'მე-'.$number;
- }
-
- return $number.'-ე';
- },
- 'months' => ['იანვარი', 'თებერვალი', 'მარტი', 'აპრილი', 'მაისი', 'ივნისი', 'ივლისი', 'აგვისტო', 'სექტემბერი', 'ოქტომბერი', 'ნოემბერი', 'დეკემბერი'],
- 'months_standalone' => ['იანვარს', 'თებერვალს', 'მარტს', 'აპრილს', 'მაისს', 'ივნისს', 'ივლისს', 'აგვისტოს', 'სექტემბერს', 'ოქტომბერს', 'ნოემბერს', 'დეკემბერს'],
- 'months_short' => ['იან', 'თებ', 'მარ', 'აპრ', 'მაი', 'ივნ', 'ივლ', 'აგვ', 'სექ', 'ოქტ', 'ნოე', 'დეკ'],
- 'months_regexp' => '/(D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|L{2,4}|l{2,4})/',
- 'weekdays' => ['კვირას', 'ორშაბათს', 'სამშაბათს', 'ოთხშაბათს', 'ხუთშაბათს', 'პარასკევს', 'შაბათს'],
- 'weekdays_standalone' => ['კვირა', 'ორშაბათი', 'სამშაბათი', 'ოთხშაბათი', 'ხუთშაბათი', 'პარასკევი', 'შაბათი'],
- 'weekdays_short' => ['კვი', 'ორშ', 'სამ', 'ოთხ', 'ხუთ', 'პარ', 'შაბ'],
- 'weekdays_min' => ['კვ', 'ორ', 'სა', 'ოთ', 'ხუ', 'პა', 'შა'],
- 'weekdays_regexp' => '/^([^d].*|.*[^d])$/',
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'list' => [', ', ' და '],
- 'meridiem' => function ($hour) {
- if ($hour >= 4) {
- if ($hour < 11) {
- return 'დილის';
- }
-
- if ($hour < 16) {
- return 'შუადღის';
- }
-
- if ($hour < 22) {
- return 'საღამოს';
- }
- }
-
- return 'ღამის';
- },
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ka_GE.php b/vendor/nesbot/carbon/src/Carbon/Lang/ka_GE.php
deleted file mode 100644
index a26d9305..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ka_GE.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/ka.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kab.php b/vendor/nesbot/carbon/src/Carbon/Lang/kab.php
deleted file mode 100644
index 94d64737..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/kab.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/kab_DZ.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kab_DZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/kab_DZ.php
deleted file mode 100644
index 796660be..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/kab_DZ.php
+++ /dev/null
@@ -1,56 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - belkacem77@gmail.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['Yennayer', 'Fuṛar', 'Meɣres', 'Yebrir', 'Mayyu', 'Yunyu', 'Yulyu', 'ɣuct', 'Ctembeṛ', 'Tubeṛ', 'Wambeṛ', 'Dujembeṛ'],
- 'months_short' => ['Yen', 'Fur', 'Meɣ', 'Yeb', 'May', 'Yun', 'Yul', 'ɣuc', 'Cte', 'Tub', 'Wam', 'Duj'],
- 'weekdays' => ['Acer', 'Arim', 'Aram', 'Ahad', 'Amhad', 'Sem', 'Sed'],
- 'weekdays_short' => ['Ace', 'Ari', 'Ara', 'Aha', 'Amh', 'Sem', 'Sed'],
- 'weekdays_min' => ['Ace', 'Ari', 'Ara', 'Aha', 'Amh', 'Sem', 'Sed'],
- 'first_day_of_week' => 6,
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['FT', 'MD'],
-
- 'year' => ':count n yiseggasen',
- 'y' => ':count n yiseggasen',
- 'a_year' => ':count n yiseggasen',
-
- 'month' => ':count n wayyuren',
- 'm' => ':count n wayyuren',
- 'a_month' => ':count n wayyuren',
-
- 'week' => ':count n ledwaṛ', // less reliable
- 'w' => ':count n ledwaṛ', // less reliable
- 'a_week' => ':count n ledwaṛ', // less reliable
-
- 'day' => ':count n wussan',
- 'd' => ':count n wussan',
- 'a_day' => ':count n wussan',
-
- 'hour' => ':count n tsaɛtin',
- 'h' => ':count n tsaɛtin',
- 'a_hour' => ':count n tsaɛtin',
-
- 'minute' => ':count n tedqiqin',
- 'min' => ':count n tedqiqin',
- 'a_minute' => ':count n tedqiqin',
-
- 'second' => ':count tasdidt', // less reliable
- 's' => ':count tasdidt', // less reliable
- 'a_second' => ':count tasdidt', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kam.php b/vendor/nesbot/carbon/src/Carbon/Lang/kam.php
deleted file mode 100644
index 0fc70d70..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/kam.php
+++ /dev/null
@@ -1,50 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['Ĩyakwakya', 'Ĩyawĩoo'],
- 'weekdays' => ['Wa kyumwa', 'Wa kwambĩlĩlya', 'Wa kelĩ', 'Wa katatũ', 'Wa kana', 'Wa katano', 'Wa thanthatũ'],
- 'weekdays_short' => ['Wky', 'Wkw', 'Wkl', 'Wtũ', 'Wkn', 'Wtn', 'Wth'],
- 'weekdays_min' => ['Wky', 'Wkw', 'Wkl', 'Wtũ', 'Wkn', 'Wtn', 'Wth'],
- 'months' => ['Mwai wa mbee', 'Mwai wa kelĩ', 'Mwai wa katatũ', 'Mwai wa kana', 'Mwai wa katano', 'Mwai wa thanthatũ', 'Mwai wa muonza', 'Mwai wa nyaanya', 'Mwai wa kenda', 'Mwai wa ĩkumi', 'Mwai wa ĩkumi na ĩmwe', 'Mwai wa ĩkumi na ilĩ'],
- 'months_short' => ['Mbe', 'Kel', 'Ktũ', 'Kan', 'Ktn', 'Tha', 'Moo', 'Nya', 'Knd', 'Ĩku', 'Ĩkm', 'Ĩkl'],
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
-
- // Too unreliable
- /*
- 'year' => ':count mbua', // less reliable
- 'y' => ':count mbua', // less reliable
- 'a_year' => ':count mbua', // less reliable
-
- 'month' => ':count ndakitali', // less reliable
- 'm' => ':count ndakitali', // less reliable
- 'a_month' => ':count ndakitali', // less reliable
-
- 'day' => ':count wia', // less reliable
- 'd' => ':count wia', // less reliable
- 'a_day' => ':count wia', // less reliable
-
- 'hour' => ':count orasan', // less reliable
- 'h' => ':count orasan', // less reliable
- 'a_hour' => ':count orasan', // less reliable
-
- 'minute' => ':count orasan', // less reliable
- 'min' => ':count orasan', // less reliable
- 'a_minute' => ':count orasan', // less reliable
- */
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kde.php b/vendor/nesbot/carbon/src/Carbon/Lang/kde.php
deleted file mode 100644
index fbcc9f3d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/kde.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['Muhi', 'Chilo'],
- 'weekdays' => ['Liduva lyapili', 'Liduva lyatatu', 'Liduva lyanchechi', 'Liduva lyannyano', 'Liduva lyannyano na linji', 'Liduva lyannyano na mavili', 'Liduva litandi'],
- 'weekdays_short' => ['Ll2', 'Ll3', 'Ll4', 'Ll5', 'Ll6', 'Ll7', 'Ll1'],
- 'weekdays_min' => ['Ll2', 'Ll3', 'Ll4', 'Ll5', 'Ll6', 'Ll7', 'Ll1'],
- 'months' => ['Mwedi Ntandi', 'Mwedi wa Pili', 'Mwedi wa Tatu', 'Mwedi wa Nchechi', 'Mwedi wa Nnyano', 'Mwedi wa Nnyano na Umo', 'Mwedi wa Nnyano na Mivili', 'Mwedi wa Nnyano na Mitatu', 'Mwedi wa Nnyano na Nchechi', 'Mwedi wa Nnyano na Nnyano', 'Mwedi wa Nnyano na Nnyano na U', 'Mwedi wa Nnyano na Nnyano na M'],
- 'months_short' => ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kea.php b/vendor/nesbot/carbon/src/Carbon/Lang/kea.php
deleted file mode 100644
index 8b6c21b9..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/kea.php
+++ /dev/null
@@ -1,49 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['a', 'p'],
- 'weekdays' => ['dumingu', 'sigunda-fera', 'tersa-fera', 'kuarta-fera', 'kinta-fera', 'sesta-fera', 'sabadu'],
- 'weekdays_short' => ['dum', 'sig', 'ter', 'kua', 'kin', 'ses', 'sab'],
- 'weekdays_min' => ['du', 'si', 'te', 'ku', 'ki', 'se', 'sa'],
- 'weekdays_standalone' => ['dumingu', 'sigunda-fera', 'tersa-fera', 'kuarta-fera', 'kinta-fera', 'sesta-fera', 'sábadu'],
- 'months' => ['Janeru', 'Febreru', 'Marsu', 'Abril', 'Maiu', 'Junhu', 'Julhu', 'Agostu', 'Setenbru', 'Otubru', 'Nuvenbru', 'Dizenbru'],
- 'months_short' => ['Jan', 'Feb', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Otu', 'Nuv', 'Diz'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D/M/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D [di] MMMM [di] YYYY HH:mm',
- 'LLLL' => 'dddd, D [di] MMMM [di] YYYY HH:mm',
- ],
-
- 'year' => ':count otunu', // less reliable
- 'y' => ':count otunu', // less reliable
- 'a_year' => ':count otunu', // less reliable
-
- 'week' => ':count día dumingu', // less reliable
- 'w' => ':count día dumingu', // less reliable
- 'a_week' => ':count día dumingu', // less reliable
-
- 'day' => ':count diâ', // less reliable
- 'd' => ':count diâ', // less reliable
- 'a_day' => ':count diâ', // less reliable
-
- 'minute' => ':count sugundu', // less reliable
- 'min' => ':count sugundu', // less reliable
- 'a_minute' => ':count sugundu', // less reliable
-
- 'second' => ':count dós', // less reliable
- 's' => ':count dós', // less reliable
- 'a_second' => ':count dós', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/khq.php b/vendor/nesbot/carbon/src/Carbon/Lang/khq.php
deleted file mode 100644
index 7a834cf0..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/khq.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['Adduha', 'Aluula'],
- 'weekdays' => ['Alhadi', 'Atini', 'Atalata', 'Alarba', 'Alhamiisa', 'Aljuma', 'Assabdu'],
- 'weekdays_short' => ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alj', 'Ass'],
- 'weekdays_min' => ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alj', 'Ass'],
- 'months' => ['Žanwiye', 'Feewiriye', 'Marsi', 'Awiril', 'Me', 'Žuweŋ', 'Žuyye', 'Ut', 'Sektanbur', 'Oktoobur', 'Noowanbur', 'Deesanbur'],
- 'months_short' => ['Žan', 'Fee', 'Mar', 'Awi', 'Me', 'Žuw', 'Žuy', 'Ut', 'Sek', 'Okt', 'Noo', 'Dee'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D/M/YYYY',
- 'LL' => 'D MMM, YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ki.php b/vendor/nesbot/carbon/src/Carbon/Lang/ki.php
deleted file mode 100644
index d86afc50..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ki.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['Kiroko', 'Hwaĩ-inĩ'],
- 'weekdays' => ['Kiumia', 'Njumatatũ', 'Njumaine', 'Njumatana', 'Aramithi', 'Njumaa', 'Njumamothi'],
- 'weekdays_short' => ['KMA', 'NTT', 'NMN', 'NMT', 'ART', 'NMA', 'NMM'],
- 'weekdays_min' => ['KMA', 'NTT', 'NMN', 'NMT', 'ART', 'NMA', 'NMM'],
- 'months' => ['Njenuarĩ', 'Mwere wa kerĩ', 'Mwere wa gatatũ', 'Mwere wa kana', 'Mwere wa gatano', 'Mwere wa gatandatũ', 'Mwere wa mũgwanja', 'Mwere wa kanana', 'Mwere wa kenda', 'Mwere wa ikũmi', 'Mwere wa ikũmi na ũmwe', 'Ndithemba'],
- 'months_short' => ['JEN', 'WKR', 'WGT', 'WKN', 'WTN', 'WTD', 'WMJ', 'WNN', 'WKD', 'WIK', 'WMW', 'DIT'],
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
-
- 'year' => ':count mĩaka', // less reliable
- 'y' => ':count mĩaka', // less reliable
- 'a_year' => ':count mĩaka', // less reliable
-
- 'month' => ':count mweri', // less reliable
- 'm' => ':count mweri', // less reliable
- 'a_month' => ':count mweri', // less reliable
-
- 'week' => ':count kiumia', // less reliable
- 'w' => ':count kiumia', // less reliable
- 'a_week' => ':count kiumia', // less reliable
-
- 'day' => ':count mũthenya', // less reliable
- 'd' => ':count mũthenya', // less reliable
- 'a_day' => ':count mũthenya', // less reliable
-
- 'hour' => ':count thaa', // less reliable
- 'h' => ':count thaa', // less reliable
- 'a_hour' => ':count thaa', // less reliable
-
- 'minute' => ':count mundu', // less reliable
- 'min' => ':count mundu', // less reliable
- 'a_minute' => ':count mundu', // less reliable
-
- 'second' => ':count igego', // less reliable
- 's' => ':count igego', // less reliable
- 'a_second' => ':count igego', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kk.php b/vendor/nesbot/carbon/src/Carbon/Lang/kk.php
deleted file mode 100644
index 59fa9aff..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/kk.php
+++ /dev/null
@@ -1,103 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Josh Soref
- * - François B
- * - Talat Uspanov
- * - Нурлан Рахимжанов
- * - Toleugazy Kali
- */
-return [
- 'year' => ':count жыл',
- 'a_year' => '{1}бір жыл|:count жыл',
- 'y' => ':count ж.',
- 'month' => ':count ай',
- 'a_month' => '{1}бір ай|:count ай',
- 'm' => ':count ай',
- 'week' => ':count апта',
- 'a_week' => '{1}бір апта',
- 'w' => ':count ап.',
- 'day' => ':count күн',
- 'a_day' => '{1}бір күн|:count күн',
- 'd' => ':count к.',
- 'hour' => ':count сағат',
- 'a_hour' => '{1}бір сағат|:count сағат',
- 'h' => ':count са.',
- 'minute' => ':count минут',
- 'a_minute' => '{1}бір минут|:count минут',
- 'min' => ':count м.',
- 'second' => ':count секунд',
- 'a_second' => '{1}бірнеше секунд|:count секунд',
- 's' => ':count се.',
- 'ago' => ':time бұрын',
- 'from_now' => ':time ішінде',
- 'after' => ':time кейін',
- 'before' => ':time бұрын',
- 'diff_now' => 'қазір',
- 'diff_today' => 'Бүгін',
- 'diff_today_regexp' => 'Бүгін(?:\\s+сағат)?',
- 'diff_yesterday' => 'кеше',
- 'diff_yesterday_regexp' => 'Кеше(?:\\s+сағат)?',
- 'diff_tomorrow' => 'ертең',
- 'diff_tomorrow_regexp' => 'Ертең(?:\\s+сағат)?',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[Бүгін сағат] LT',
- 'nextDay' => '[Ертең сағат] LT',
- 'nextWeek' => 'dddd [сағат] LT',
- 'lastDay' => '[Кеше сағат] LT',
- 'lastWeek' => '[Өткен аптаның] dddd [сағат] LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => function ($number) {
- static $suffixes = [
- 0 => '-ші',
- 1 => '-ші',
- 2 => '-ші',
- 3 => '-ші',
- 4 => '-ші',
- 5 => '-ші',
- 6 => '-шы',
- 7 => '-ші',
- 8 => '-ші',
- 9 => '-шы',
- 10 => '-шы',
- 20 => '-шы',
- 30 => '-шы',
- 40 => '-шы',
- 50 => '-ші',
- 60 => '-шы',
- 70 => '-ші',
- 80 => '-ші',
- 90 => '-шы',
- 100 => '-ші',
- ];
-
- return $number.($suffixes[$number] ?? $suffixes[$number % 10] ?? $suffixes[$number >= 100 ? 100 : -1] ?? '');
- },
- 'months' => ['қаңтар', 'ақпан', 'наурыз', 'сәуір', 'мамыр', 'маусым', 'шілде', 'тамыз', 'қыркүйек', 'қазан', 'қараша', 'желтоқсан'],
- 'months_short' => ['қаң', 'ақп', 'нау', 'сәу', 'мам', 'мау', 'шіл', 'там', 'қыр', 'қаз', 'қар', 'жел'],
- 'weekdays' => ['жексенбі', 'дүйсенбі', 'сейсенбі', 'сәрсенбі', 'бейсенбі', 'жұма', 'сенбі'],
- 'weekdays_short' => ['жек', 'дүй', 'сей', 'сәр', 'бей', 'жұм', 'сен'],
- 'weekdays_min' => ['жк', 'дй', 'сй', 'ср', 'бй', 'жм', 'сн'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'list' => [', ', ' және '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kk_KZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/kk_KZ.php
deleted file mode 100644
index 7dc5ebcc..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/kk_KZ.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/kk.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kkj.php b/vendor/nesbot/carbon/src/Carbon/Lang/kkj.php
deleted file mode 100644
index 6a1e77a8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/kkj.php
+++ /dev/null
@@ -1,13 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kl.php b/vendor/nesbot/carbon/src/Carbon/Lang/kl.php
deleted file mode 100644
index 7329a075..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/kl.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/kl_GL.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kl_GL.php b/vendor/nesbot/carbon/src/Carbon/Lang/kl_GL.php
deleted file mode 100644
index 4fed720a..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/kl_GL.php
+++ /dev/null
@@ -1,64 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Danish Standards Association bug-glibc-locales@gnu.org
- * - John Eyðstein Johannesen (mashema)
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'D. MMMM YYYY',
- 'LLL' => 'D. MMMM YYYY HH:mm',
- 'LLLL' => 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',
- ],
- 'months' => ['januaarip', 'februaarip', 'marsip', 'apriilip', 'maajip', 'juunip', 'juulip', 'aggustip', 'septembarip', 'oktobarip', 'novembarip', 'decembarip'],
- 'months_short' => ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],
- 'weekdays' => ['sapaat', 'ataasinngorneq', 'marlunngorneq', 'pingasunngorneq', 'sisamanngorneq', 'tallimanngorneq', 'arfininngorneq'],
- 'weekdays_short' => ['sap', 'ata', 'mar', 'pin', 'sis', 'tal', 'arf'],
- 'weekdays_min' => ['sap', 'ata', 'mar', 'pin', 'sis', 'tal', 'arf'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
-
- 'year' => '{1}ukioq :count|{0}:count ukiut|]1,Inf[ukiut :count',
- 'a_year' => '{1}ukioq|{0}:count ukiut|]1,Inf[ukiut :count',
- 'y' => '{1}:countyr|{0}:countyrs|]1,Inf[:countyrs',
-
- 'month' => '{1}qaammat :count|{0}:count qaammatit|]1,Inf[qaammatit :count',
- 'a_month' => '{1}qaammat|{0}:count qaammatit|]1,Inf[qaammatit :count',
- 'm' => '{1}:countmo|{0}:countmos|]1,Inf[:countmos',
-
- 'week' => '{1}:count sap. ak.|{0}:count sap. ak.|]1,Inf[:count sap. ak.',
- 'a_week' => '{1}a sap. ak.|{0}:count sap. ak.|]1,Inf[:count sap. ak.',
- 'w' => ':countw',
-
- 'day' => '{1}:count ulloq|{0}:count ullut|]1,Inf[:count ullut',
- 'a_day' => '{1}a ulloq|{0}:count ullut|]1,Inf[:count ullut',
- 'd' => ':countd',
-
- 'hour' => '{1}:count tiimi|{0}:count tiimit|]1,Inf[:count tiimit',
- 'a_hour' => '{1}tiimi|{0}:count tiimit|]1,Inf[:count tiimit',
- 'h' => ':counth',
-
- 'minute' => '{1}:count minutsi|{0}:count minutsit|]1,Inf[:count minutsit',
- 'a_minute' => '{1}a minutsi|{0}:count minutsit|]1,Inf[:count minutsit',
- 'min' => ':countm',
-
- 'second' => '{1}:count sikunti|{0}:count sikuntit|]1,Inf[:count sikuntit',
- 'a_second' => '{1}sikunti|{0}:count sikuntit|]1,Inf[:count sikuntit',
- 's' => ':counts',
-
- 'ago' => ':time matuma siorna',
-
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kln.php b/vendor/nesbot/carbon/src/Carbon/Lang/kln.php
deleted file mode 100644
index b9c39968..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/kln.php
+++ /dev/null
@@ -1,31 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['krn', 'koosk'],
- 'weekdays' => ['Kotisap', 'Kotaai', 'Koaeng’', 'Kosomok', 'Koang’wan', 'Komuut', 'Kolo'],
- 'weekdays_short' => ['Kts', 'Kot', 'Koo', 'Kos', 'Koa', 'Kom', 'Kol'],
- 'weekdays_min' => ['Kts', 'Kot', 'Koo', 'Kos', 'Koa', 'Kom', 'Kol'],
- 'months' => ['Mulgul', 'Ng’atyaato', 'Kiptaamo', 'Iwootkuut', 'Mamuut', 'Paagi', 'Ng’eiyeet', 'Rooptui', 'Bureet', 'Epeeso', 'Kipsuunde ne taai', 'Kipsuunde nebo aeng’'],
- 'months_short' => ['Mul', 'Ngat', 'Taa', 'Iwo', 'Mam', 'Paa', 'Nge', 'Roo', 'Bur', 'Epe', 'Kpt', 'Kpa'],
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
-
- 'year' => ':count maghatiat', // less reliable
- 'y' => ':count maghatiat', // less reliable
- 'a_year' => ':count maghatiat', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/km.php b/vendor/nesbot/carbon/src/Carbon/Lang/km.php
deleted file mode 100644
index da790ac8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/km.php
+++ /dev/null
@@ -1,71 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Kruy Vanna
- * - Sereysethy Touch
- * - JD Isaacks
- * - Sovichet Tep
- */
-return [
- 'year' => '{1}មួយឆ្នាំ|]1,Inf[:count ឆ្នាំ',
- 'y' => ':count ឆ្នាំ',
- 'month' => '{1}មួយខែ|]1,Inf[:count ខែ',
- 'm' => ':count ខែ',
- 'week' => ':count សប្ដាហ៍',
- 'w' => ':count សប្ដាហ៍',
- 'day' => '{1}មួយថ្ងៃ|]1,Inf[:count ថ្ងៃ',
- 'd' => ':count ថ្ងៃ',
- 'hour' => '{1}មួយម៉ោង|]1,Inf[:count ម៉ោង',
- 'h' => ':count ម៉ោង',
- 'minute' => '{1}មួយនាទី|]1,Inf[:count នាទី',
- 'min' => ':count នាទី',
- 'second' => '{1}ប៉ុន្មានវិនាទី|]1,Inf[:count វិនាទី',
- 's' => ':count វិនាទី',
- 'ago' => ':timeមុន',
- 'from_now' => ':timeទៀត',
- 'after' => 'នៅក្រោយ :time',
- 'before' => 'នៅមុន :time',
- 'diff_now' => 'ឥឡូវ',
- 'diff_today' => 'ថ្ងៃនេះ',
- 'diff_today_regexp' => 'ថ្ងៃនេះ(?:\\s+ម៉ោង)?',
- 'diff_yesterday' => 'ម្សិលមិញ',
- 'diff_yesterday_regexp' => 'ម្សិលមិញ(?:\\s+ម៉ោង)?',
- 'diff_tomorrow' => 'ថ្ងៃស្អែក',
- 'diff_tomorrow_regexp' => 'ស្អែក(?:\\s+ម៉ោង)?',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[ថ្ងៃនេះ ម៉ោង] LT',
- 'nextDay' => '[ស្អែក ម៉ោង] LT',
- 'nextWeek' => 'dddd [ម៉ោង] LT',
- 'lastDay' => '[ម្សិលមិញ ម៉ោង] LT',
- 'lastWeek' => 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => 'ទី:number',
- 'meridiem' => ['ព្រឹក', 'ល្ងាច'],
- 'months' => ['មករា', 'កុម្ភៈ', 'មីនា', 'មេសា', 'ឧសភា', 'មិថុនា', 'កក្កដា', 'សីហា', 'កញ្ញា', 'តុលា', 'វិច្ឆិកា', 'ធ្នូ'],
- 'months_short' => ['មករា', 'កុម្ភៈ', 'មីនា', 'មេសា', 'ឧសភា', 'មិថុនា', 'កក្កដា', 'សីហា', 'កញ្ញា', 'តុលា', 'វិច្ឆិកា', 'ធ្នូ'],
- 'weekdays' => ['អាទិត្យ', 'ច័ន្ទ', 'អង្គារ', 'ពុធ', 'ព្រហស្បតិ៍', 'សុក្រ', 'សៅរ៍'],
- 'weekdays_short' => ['អា', 'ច', 'អ', 'ព', 'ព្រ', 'សុ', 'ស'],
- 'weekdays_min' => ['អា', 'ច', 'អ', 'ព', 'ព្រ', 'សុ', 'ស'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', 'និង '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/km_KH.php b/vendor/nesbot/carbon/src/Carbon/Lang/km_KH.php
deleted file mode 100644
index 92e5fdbd..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/km_KH.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/km.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kn.php b/vendor/nesbot/carbon/src/Carbon/Lang/kn.php
deleted file mode 100644
index 0d2ad08b..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/kn.php
+++ /dev/null
@@ -1,75 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Josh Soref
- * - MOHAN M U
- * - François B
- * - rajeevnaikte
- */
-return [
- 'year' => '{1}ಒಂದು ವರ್ಷ|]1,Inf[:count ವರ್ಷ',
- 'month' => '{1}ಒಂದು ತಿಂಗಳು|]1,Inf[:count ತಿಂಗಳು',
- 'week' => '{1}ಒಂದು ವಾರ|]1,Inf[:count ವಾರಗಳು',
- 'day' => '{1}ಒಂದು ದಿನ|]1,Inf[:count ದಿನ',
- 'hour' => '{1}ಒಂದು ಗಂಟೆ|]1,Inf[:count ಗಂಟೆ',
- 'minute' => '{1}ಒಂದು ನಿಮಿಷ|]1,Inf[:count ನಿಮಿಷ',
- 'second' => '{1}ಕೆಲವು ಕ್ಷಣಗಳು|]1,Inf[:count ಸೆಕೆಂಡುಗಳು',
- 'ago' => ':time ಹಿಂದೆ',
- 'from_now' => ':time ನಂತರ',
- 'diff_now' => 'ಈಗ',
- 'diff_today' => 'ಇಂದು',
- 'diff_yesterday' => 'ನಿನ್ನೆ',
- 'diff_tomorrow' => 'ನಾಳೆ',
- 'formats' => [
- 'LT' => 'A h:mm',
- 'LTS' => 'A h:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY, A h:mm',
- 'LLLL' => 'dddd, D MMMM YYYY, A h:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[ಇಂದು] LT',
- 'nextDay' => '[ನಾಳೆ] LT',
- 'nextWeek' => 'dddd, LT',
- 'lastDay' => '[ನಿನ್ನೆ] LT',
- 'lastWeek' => '[ಕೊನೆಯ] dddd, LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => ':numberನೇ',
- 'meridiem' => function ($hour) {
- if ($hour < 4) {
- return 'ರಾತ್ರಿ';
- }
- if ($hour < 10) {
- return 'ಬೆಳಿಗ್ಗೆ';
- }
- if ($hour < 17) {
- return 'ಮಧ್ಯಾಹ್ನ';
- }
- if ($hour < 20) {
- return 'ಸಂಜೆ';
- }
-
- return 'ರಾತ್ರಿ';
- },
- 'months' => ['ಜನವರಿ', 'ಫೆಬ್ರವರಿ', 'ಮಾರ್ಚ್', 'ಏಪ್ರಿಲ್', 'ಮೇ', 'ಜೂನ್', 'ಜುಲೈ', 'ಆಗಸ್ಟ್', 'ಸೆಪ್ಟೆಂಬರ್', 'ಅಕ್ಟೋಬರ್', 'ನವೆಂಬರ್', 'ಡಿಸೆಂಬರ್'],
- 'months_short' => ['ಜನ', 'ಫೆಬ್ರ', 'ಮಾರ್ಚ್', 'ಏಪ್ರಿಲ್', 'ಮೇ', 'ಜೂನ್', 'ಜುಲೈ', 'ಆಗಸ್ಟ್', 'ಸೆಪ್ಟೆಂ', 'ಅಕ್ಟೋ', 'ನವೆಂ', 'ಡಿಸೆಂ'],
- 'weekdays' => ['ಭಾನುವಾರ', 'ಸೋಮವಾರ', 'ಮಂಗಳವಾರ', 'ಬುಧವಾರ', 'ಗುರುವಾರ', 'ಶುಕ್ರವಾರ', 'ಶನಿವಾರ'],
- 'weekdays_short' => ['ಭಾನು', 'ಸೋಮ', 'ಮಂಗಳ', 'ಬುಧ', 'ಗುರು', 'ಶುಕ್ರ', 'ಶನಿ'],
- 'weekdays_min' => ['ಭಾ', 'ಸೋ', 'ಮಂ', 'ಬು', 'ಗು', 'ಶು', 'ಶ'],
- 'list' => ', ',
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
- 'weekend' => [0, 0],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kn_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/kn_IN.php
deleted file mode 100644
index 30e3d886..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/kn_IN.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/kn.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ko.php b/vendor/nesbot/carbon/src/Carbon/Lang/ko.php
deleted file mode 100644
index 4fa62376..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ko.php
+++ /dev/null
@@ -1,91 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Kunal Marwaha
- * - FourwingsY
- * - François B
- * - Jason Katz-Brown
- * - Seokjun Kim
- * - Junho Kim
- * - JD Isaacks
- * - Juwon Kim
- */
-return [
- 'year' => ':count년',
- 'a_year' => '{1}일년|]1,Inf[:count년',
- 'y' => ':count년',
- 'month' => ':count개월',
- 'a_month' => '{1}한달|]1,Inf[:count개월',
- 'm' => ':count개월',
- 'week' => ':count주',
- 'a_week' => '{1}일주일|]1,Inf[:count 주',
- 'w' => ':count주일',
- 'day' => ':count일',
- 'a_day' => '{1}하루|]1,Inf[:count일',
- 'd' => ':count일',
- 'hour' => ':count시간',
- 'a_hour' => '{1}한시간|]1,Inf[:count시간',
- 'h' => ':count시간',
- 'minute' => ':count분',
- 'a_minute' => '{1}일분|]1,Inf[:count분',
- 'min' => ':count분',
- 'second' => ':count초',
- 'a_second' => '{1}몇초|]1,Inf[:count초',
- 's' => ':count초',
- 'ago' => ':time 전',
- 'from_now' => ':time 후',
- 'after' => ':time 후',
- 'before' => ':time 전',
- 'diff_now' => '지금',
- 'diff_today' => '오늘',
- 'diff_yesterday' => '어제',
- 'diff_tomorrow' => '내일',
- 'formats' => [
- 'LT' => 'A h:mm',
- 'LTS' => 'A h:mm:ss',
- 'L' => 'YYYY.MM.DD.',
- 'LL' => 'YYYY년 MMMM D일',
- 'LLL' => 'YYYY년 MMMM D일 A h:mm',
- 'LLLL' => 'YYYY년 MMMM D일 dddd A h:mm',
- ],
- 'calendar' => [
- 'sameDay' => '오늘 LT',
- 'nextDay' => '내일 LT',
- 'nextWeek' => 'dddd LT',
- 'lastDay' => '어제 LT',
- 'lastWeek' => '지난주 dddd LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => function ($number, $period) {
- switch ($period) {
- case 'd':
- case 'D':
- case 'DDD':
- return $number.'일';
- case 'M':
- return $number.'월';
- case 'w':
- case 'W':
- return $number.'주';
- default:
- return $number;
- }
- },
- 'meridiem' => ['오전', '오후'],
- 'months' => ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],
- 'months_short' => ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],
- 'weekdays' => ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일'],
- 'weekdays_short' => ['일', '월', '화', '수', '목', '금', '토'],
- 'weekdays_min' => ['일', '월', '화', '수', '목', '금', '토'],
- 'list' => ' ',
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ko_KP.php b/vendor/nesbot/carbon/src/Carbon/Lang/ko_KP.php
deleted file mode 100644
index 4ba802b3..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ko_KP.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/ko.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ko_KR.php b/vendor/nesbot/carbon/src/Carbon/Lang/ko_KR.php
deleted file mode 100644
index 9d873a27..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ko_KR.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/ko.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kok.php b/vendor/nesbot/carbon/src/Carbon/Lang/kok.php
deleted file mode 100644
index 4adcddcc..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/kok.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/kok_IN.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kok_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/kok_IN.php
deleted file mode 100644
index 92ba844c..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/kok_IN.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Red Hat, Pune bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'D-M-YY',
- ],
- 'months' => ['जानेवारी', 'फेब्रुवारी', 'मार्च', 'एप्रिल', 'मे', 'जून', 'जुलै', 'ओगस्ट', 'सेप्टेंबर', 'ओक्टोबर', 'नोव्हेंबर', 'डिसेंबर'],
- 'months_short' => ['जानेवारी', 'फेब्रुवारी', 'मार्च', 'एप्रिल', 'मे', 'जून', 'जुलै', 'ओगस्ट', 'सेप्टेंबर', 'ओक्टोबर', 'नोव्हेंबर', 'डिसेंबर'],
- 'weekdays' => ['आयतार', 'सोमार', 'मंगळवार', 'बुधवार', 'बेरेसतार', 'शुकरार', 'शेनवार'],
- 'weekdays_short' => ['आयतार', 'सोमार', 'मंगळवार', 'बुधवार', 'बेरेसतार', 'शुकरार', 'शेनवार'],
- 'weekdays_min' => ['आयतार', 'सोमार', 'मंगळवार', 'बुधवार', 'बेरेसतार', 'शुकरार', 'शेनवार'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['म.पू.', 'म.नं.'],
-
- 'year' => ':count वैशाकु', // less reliable
- 'y' => ':count वैशाकु', // less reliable
- 'a_year' => ':count वैशाकु', // less reliable
-
- 'week' => ':count आदित्यवार', // less reliable
- 'w' => ':count आदित्यवार', // less reliable
- 'a_week' => ':count आदित्यवार', // less reliable
-
- 'minute' => ':count नोंद', // less reliable
- 'min' => ':count नोंद', // less reliable
- 'a_minute' => ':count नोंद', // less reliable
-
- 'second' => ':count तेंको', // less reliable
- 's' => ':count तेंको', // less reliable
- 'a_second' => ':count तेंको', // less reliable
-
- 'month' => ':count मैनो',
- 'm' => ':count मैनो',
- 'a_month' => ':count मैनो',
-
- 'day' => ':count दिवसु',
- 'd' => ':count दिवसु',
- 'a_day' => ':count दिवसु',
-
- 'hour' => ':count घंते',
- 'h' => ':count घंते',
- 'a_hour' => ':count घंते',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ks.php b/vendor/nesbot/carbon/src/Carbon/Lang/ks.php
deleted file mode 100644
index 98760790..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ks.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/ks_IN.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ks_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/ks_IN.php
deleted file mode 100644
index ce9d5d4a..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ks_IN.php
+++ /dev/null
@@ -1,51 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Red Hat, Pune bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'M/D/YY',
- ],
- 'months' => ['جنؤری', 'فرؤری', 'مارٕچ', 'اپریل', 'میٔ', 'جوٗن', 'جوٗلایی', 'اگست', 'ستمبر', 'اکتوٗبر', 'نومبر', 'دسمبر'],
- 'months_short' => ['جنؤری', 'فرؤری', 'مارٕچ', 'اپریل', 'میٔ', 'جوٗن', 'جوٗلایی', 'اگست', 'ستمبر', 'اکتوٗبر', 'نومبر', 'دسمبر'],
- 'weekdays' => ['آتهوار', 'ژءندروار', 'بوءںوار', 'بودهوار', 'برىسوار', 'جمع', 'بٹوار'],
- 'weekdays_short' => ['آتهوار', 'ژءنتروار', 'بوءںوار', 'بودهوار', 'برىسوار', 'جمع', 'بٹوار'],
- 'weekdays_min' => ['آتهوار', 'ژءنتروار', 'بوءںوار', 'بودهوار', 'برىسوار', 'جمع', 'بٹوار'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['دوپھربرونھ', 'دوپھرپتھ'],
-
- 'year' => ':count آب', // less reliable
- 'y' => ':count آب', // less reliable
- 'a_year' => ':count آب', // less reliable
-
- 'month' => ':count रान्', // less reliable
- 'm' => ':count रान्', // less reliable
- 'a_month' => ':count रान्', // less reliable
-
- 'week' => ':count آتھٕوار', // less reliable
- 'w' => ':count آتھٕوار', // less reliable
- 'a_week' => ':count آتھٕوار', // less reliable
-
- 'hour' => ':count سۄن', // less reliable
- 'h' => ':count سۄن', // less reliable
- 'a_hour' => ':count سۄن', // less reliable
-
- 'minute' => ':count فَن', // less reliable
- 'min' => ':count فَن', // less reliable
- 'a_minute' => ':count فَن', // less reliable
-
- 'second' => ':count दोʼयुम', // less reliable
- 's' => ':count दोʼयुम', // less reliable
- 'a_second' => ':count दोʼयुम', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ks_IN@devanagari.php b/vendor/nesbot/carbon/src/Carbon/Lang/ks_IN@devanagari.php
deleted file mode 100644
index a2ae8b64..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ks_IN@devanagari.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - ks-gnome-trans-commits@lists.code.indlinux.net
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'M/D/YY',
- ],
- 'months' => ['जनवरी', 'फ़रवरी', 'मार्च', 'अप्रेल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर'],
- 'months_short' => ['जनवरी', 'फ़रवरी', 'मार्च', 'अप्रेल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर'],
- 'weekdays' => ['आथवार', 'चॅ़दुरवार', 'बोमवार', 'ब्वदवार', 'ब्रसवार', 'शोकुरवार', 'बटुवार'],
- 'weekdays_short' => ['आथ ', 'चॅ़दुर', 'बोम', 'ब्वद', 'ब्रस', 'शोकुर', 'बटु'],
- 'weekdays_min' => ['आथ ', 'चॅ़दुर', 'बोम', 'ब्वद', 'ब्रस', 'शोकुर', 'बटु'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['पूर्वाह्न', 'अपराह्न'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ksb.php b/vendor/nesbot/carbon/src/Carbon/Lang/ksb.php
deleted file mode 100644
index aaa00614..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ksb.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['makeo', 'nyiaghuo'],
- 'weekdays' => ['Jumaapii', 'Jumaatatu', 'Jumaane', 'Jumaatano', 'Alhamisi', 'Ijumaa', 'Jumaamosi'],
- 'weekdays_short' => ['Jpi', 'Jtt', 'Jmn', 'Jtn', 'Alh', 'Iju', 'Jmo'],
- 'weekdays_min' => ['Jpi', 'Jtt', 'Jmn', 'Jtn', 'Alh', 'Iju', 'Jmo'],
- 'months' => ['Januali', 'Febluali', 'Machi', 'Aplili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', 'Oktoba', 'Novemba', 'Desemba'],
- 'months_short' => ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ksf.php b/vendor/nesbot/carbon/src/Carbon/Lang/ksf.php
deleted file mode 100644
index 84a59672..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ksf.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['sárúwá', 'cɛɛ́nko'],
- 'weekdays' => ['sɔ́ndǝ', 'lǝndí', 'maadí', 'mɛkrɛdí', 'jǝǝdí', 'júmbá', 'samdí'],
- 'weekdays_short' => ['sɔ́n', 'lǝn', 'maa', 'mɛk', 'jǝǝ', 'júm', 'sam'],
- 'weekdays_min' => ['sɔ́n', 'lǝn', 'maa', 'mɛk', 'jǝǝ', 'júm', 'sam'],
- 'months' => ['ŋwíí a ntɔ́ntɔ', 'ŋwíí akǝ bɛ́ɛ', 'ŋwíí akǝ ráá', 'ŋwíí akǝ nin', 'ŋwíí akǝ táan', 'ŋwíí akǝ táafɔk', 'ŋwíí akǝ táabɛɛ', 'ŋwíí akǝ táaraa', 'ŋwíí akǝ táanin', 'ŋwíí akǝ ntɛk', 'ŋwíí akǝ ntɛk di bɔ́k', 'ŋwíí akǝ ntɛk di bɛ́ɛ'],
- 'months_short' => ['ŋ1', 'ŋ2', 'ŋ3', 'ŋ4', 'ŋ5', 'ŋ6', 'ŋ7', 'ŋ8', 'ŋ9', 'ŋ10', 'ŋ11', 'ŋ12'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D/M/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ksh.php b/vendor/nesbot/carbon/src/Carbon/Lang/ksh.php
deleted file mode 100644
index 95457e24..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ksh.php
+++ /dev/null
@@ -1,57 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['v.M.', 'n.M.'],
- 'weekdays' => ['Sunndaach', 'Mohndaach', 'Dinnsdaach', 'Metwoch', 'Dunnersdaach', 'Friidaach', 'Samsdaach'],
- 'weekdays_short' => ['Su.', 'Mo.', 'Di.', 'Me.', 'Du.', 'Fr.', 'Sa.'],
- 'weekdays_min' => ['Su', 'Mo', 'Di', 'Me', 'Du', 'Fr', 'Sa'],
- 'months' => ['Jannewa', 'Fäbrowa', 'Määz', 'Aprell', 'Mai', 'Juuni', 'Juuli', 'Oujoß', 'Septämber', 'Oktohber', 'Novämber', 'Dezämber'],
- 'months_short' => ['Jan', 'Fäb', 'Mäz', 'Apr', 'Mai', 'Jun', 'Jul', 'Ouj', 'Säp', 'Okt', 'Nov', 'Dez'],
- 'months_short_standalone' => ['Jan.', 'Fäb.', 'Mäz.', 'Apr.', 'Mai', 'Jun.', 'Jul.', 'Ouj.', 'Säp.', 'Okt.', 'Nov.', 'Dez.'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D. M. YYYY',
- 'LL' => 'D. MMM. YYYY',
- 'LLL' => 'D. MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, [dä] D. MMMM YYYY HH:mm',
- ],
-
- 'year' => ':count Johr',
- 'y' => ':count Johr',
- 'a_year' => ':count Johr',
-
- 'month' => ':count Moohnd',
- 'm' => ':count Moohnd',
- 'a_month' => ':count Moohnd',
-
- 'week' => ':count woch',
- 'w' => ':count woch',
- 'a_week' => ':count woch',
-
- 'day' => ':count Daach',
- 'd' => ':count Daach',
- 'a_day' => ':count Daach',
-
- 'hour' => ':count Uhr',
- 'h' => ':count Uhr',
- 'a_hour' => ':count Uhr',
-
- 'minute' => ':count Menutt',
- 'min' => ':count Menutt',
- 'a_minute' => ':count Menutt',
-
- 'second' => ':count Sekůndt',
- 's' => ':count Sekůndt',
- 'a_second' => ':count Sekůndt',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ku.php b/vendor/nesbot/carbon/src/Carbon/Lang/ku.php
deleted file mode 100644
index b001e301..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ku.php
+++ /dev/null
@@ -1,42 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Halwest Manguri
- * - Kardo Qadir
- */
-$months = ['کانونی دووەم', 'شوبات', 'ئازار', 'نیسان', 'ئایار', 'حوزەیران', 'تەمموز', 'ئاب', 'ئەیلول', 'تشرینی یەکەم', 'تشرینی دووەم', 'کانونی یەکەم'];
-
-$weekdays = ['دوو شەممە', 'سێ شەممە', 'چوار شەممە', 'پێنج شەممە', 'هەینی', 'شەممە', 'یەک شەممە'];
-
-return [
- 'ago' => 'پێش :time',
- 'from_now' => ':time لە ئێستاوە',
- 'after' => 'دوای :time',
- 'before' => 'پێش :time',
- 'year' => '{0}ساڵ|{1}ساڵێک|{2}٢ ساڵ|[3,10]:count ساڵ|[11,Inf]:count ساڵ',
- 'month' => '{0}مانگ|{1}مانگێک|{2}٢ مانگ|[3,10]:count مانگ|[11,Inf]:count مانگ',
- 'week' => '{0}هەفتە|{1}هەفتەیەک|{2}٢ هەفتە|[3,10]:count هەفتە|[11,Inf]:count هەفتە',
- 'day' => '{0}ڕۆژ|{1}ڕۆژێک|{2}٢ ڕۆژ|[3,10]:count ڕۆژ|[11,Inf]:count ڕۆژ',
- 'hour' => '{0}کاتژمێر|{1}کاتژمێرێک|{2}٢ کاتژمێر|[3,10]:count کاتژمێر|[11,Inf]:count کاتژمێر',
- 'minute' => '{0}خولەک|{1}خولەکێک|{2}٢ خولەک|[3,10]:count خولەک|[11,Inf]:count خولەک',
- 'second' => '{0}چرکە|{1}چرکەیەک|{2}٢ چرکە|[3,10]:count چرکە|[11,Inf]:count چرکە',
- 'months' => $months,
- 'months_standalone' => $months,
- 'months_short' => $months,
- 'weekdays' => $weekdays,
- 'weekdays_short' => $weekdays,
- 'weekdays_min' => $weekdays,
- 'list' => [', ', ' û '],
- 'first_day_of_week' => 6,
- 'day_of_first_week_of_year' => 1,
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ku_TR.php b/vendor/nesbot/carbon/src/Carbon/Lang/ku_TR.php
deleted file mode 100644
index 4243a82f..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ku_TR.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/ku.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kw.php b/vendor/nesbot/carbon/src/Carbon/Lang/kw.php
deleted file mode 100644
index 26e242e7..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/kw.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/kw_GB.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kw_GB.php b/vendor/nesbot/carbon/src/Carbon/Lang/kw_GB.php
deleted file mode 100644
index 00bf52bd..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/kw_GB.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Alastair McKinstry bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YY',
- ],
- 'months' => ['mis Genver', 'mis Hwevrer', 'mis Meurth', 'mis Ebrel', 'mis Me', 'mis Metheven', 'mis Gortheren', 'mis Est', 'mis Gwynngala', 'mis Hedra', 'mis Du', 'mis Kevardhu'],
- 'months_short' => ['Gen', 'Hwe', 'Meu', 'Ebr', 'Me', 'Met', 'Gor', 'Est', 'Gwn', 'Hed', 'Du', 'Kev'],
- 'weekdays' => ['De Sul', 'De Lun', 'De Merth', 'De Merher', 'De Yow', 'De Gwener', 'De Sadorn'],
- 'weekdays_short' => ['Sul', 'Lun', 'Mth', 'Mhr', 'Yow', 'Gwe', 'Sad'],
- 'weekdays_min' => ['Sul', 'Lun', 'Mth', 'Mhr', 'Yow', 'Gwe', 'Sad'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-
- 'year' => ':count bledhen',
- 'y' => ':count bledhen',
- 'a_year' => ':count bledhen',
-
- 'month' => ':count mis',
- 'm' => ':count mis',
- 'a_month' => ':count mis',
-
- 'week' => ':count seythen',
- 'w' => ':count seythen',
- 'a_week' => ':count seythen',
-
- 'day' => ':count dydh',
- 'd' => ':count dydh',
- 'a_day' => ':count dydh',
-
- 'hour' => ':count eur',
- 'h' => ':count eur',
- 'a_hour' => ':count eur',
-
- 'minute' => ':count mynysen',
- 'min' => ':count mynysen',
- 'a_minute' => ':count mynysen',
-
- 'second' => ':count pryjwyth',
- 's' => ':count pryjwyth',
- 'a_second' => ':count pryjwyth',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ky.php b/vendor/nesbot/carbon/src/Carbon/Lang/ky.php
deleted file mode 100644
index e0d1af10..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ky.php
+++ /dev/null
@@ -1,106 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - acutexyz
- * - Josh Soref
- * - François B
- * - Chyngyz Arystan uulu
- * - Chyngyz
- * - acutexyz
- * - Josh Soref
- * - François B
- * - Chyngyz Arystan uulu
- */
-return [
- 'year' => ':count жыл',
- 'a_year' => '{1}бир жыл|:count жыл',
- 'y' => ':count жыл',
- 'month' => ':count ай',
- 'a_month' => '{1}бир ай|:count ай',
- 'm' => ':count ай',
- 'week' => ':count апта',
- 'a_week' => '{1}бир апта|:count апта',
- 'w' => ':count апт.',
- 'day' => ':count күн',
- 'a_day' => '{1}бир күн|:count күн',
- 'd' => ':count күн',
- 'hour' => ':count саат',
- 'a_hour' => '{1}бир саат|:count саат',
- 'h' => ':count саат.',
- 'minute' => ':count мүнөт',
- 'a_minute' => '{1}бир мүнөт|:count мүнөт',
- 'min' => ':count мүн.',
- 'second' => ':count секунд',
- 'a_second' => '{1}бирнече секунд|:count секунд',
- 's' => ':count сек.',
- 'ago' => ':time мурун',
- 'from_now' => ':time ичинде',
- 'diff_now' => 'азыр',
- 'diff_today' => 'Бүгүн',
- 'diff_today_regexp' => 'Бүгүн(?:\\s+саат)?',
- 'diff_yesterday' => 'кечээ',
- 'diff_yesterday_regexp' => 'Кече(?:\\s+саат)?',
- 'diff_tomorrow' => 'эртең',
- 'diff_tomorrow_regexp' => 'Эртең(?:\\s+саат)?',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[Бүгүн саат] LT',
- 'nextDay' => '[Эртең саат] LT',
- 'nextWeek' => 'dddd [саат] LT',
- 'lastDay' => '[Кече саат] LT',
- 'lastWeek' => '[Өткен аптанын] dddd [күнү] [саат] LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => function ($number) {
- static $suffixes = [
- 0 => '-чү',
- 1 => '-чи',
- 2 => '-чи',
- 3 => '-чү',
- 4 => '-чү',
- 5 => '-чи',
- 6 => '-чы',
- 7 => '-чи',
- 8 => '-чи',
- 9 => '-чу',
- 10 => '-чу',
- 20 => '-чы',
- 30 => '-чу',
- 40 => '-чы',
- 50 => '-чү',
- 60 => '-чы',
- 70 => '-чи',
- 80 => '-чи',
- 90 => '-чу',
- 100 => '-чү',
- ];
-
- return $number.($suffixes[$number] ?? $suffixes[$number % 10] ?? $suffixes[$number >= 100 ? 100 : -1] ?? '');
- },
- 'months' => ['январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь'],
- 'months_short' => ['янв', 'фев', 'март', 'апр', 'май', 'июнь', 'июль', 'авг', 'сен', 'окт', 'ноя', 'дек'],
- 'weekdays' => ['Жекшемби', 'Дүйшөмбү', 'Шейшемби', 'Шаршемби', 'Бейшемби', 'Жума', 'Ишемби'],
- 'weekdays_short' => ['Жек', 'Дүй', 'Шей', 'Шар', 'Бей', 'Жум', 'Ише'],
- 'weekdays_min' => ['Жк', 'Дй', 'Шй', 'Шр', 'Бй', 'Жм', 'Иш'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'list' => ' ',
- 'meridiem' => ['таңкы', 'түштөн кийинки'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ky_KG.php b/vendor/nesbot/carbon/src/Carbon/Lang/ky_KG.php
deleted file mode 100644
index 9923a31e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ky_KG.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/ky.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lag.php b/vendor/nesbot/carbon/src/Carbon/Lang/lag.php
deleted file mode 100644
index f3f57f6a..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/lag.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['TOO', 'MUU'],
- 'weekdays' => ['Jumapíiri', 'Jumatátu', 'Jumaíne', 'Jumatáano', 'Alamíisi', 'Ijumáa', 'Jumamóosi'],
- 'weekdays_short' => ['Píili', 'Táatu', 'Íne', 'Táano', 'Alh', 'Ijm', 'Móosi'],
- 'weekdays_min' => ['Píili', 'Táatu', 'Íne', 'Táano', 'Alh', 'Ijm', 'Móosi'],
- 'months' => ['Kʉfúngatɨ', 'Kʉnaanɨ', 'Kʉkeenda', 'Kwiikumi', 'Kwiinyambála', 'Kwiidwaata', 'Kʉmʉʉnchɨ', 'Kʉvɨɨrɨ', 'Kʉsaatʉ', 'Kwiinyi', 'Kʉsaano', 'Kʉsasatʉ'],
- 'months_short' => ['Fúngatɨ', 'Naanɨ', 'Keenda', 'Ikúmi', 'Inyambala', 'Idwaata', 'Mʉʉnchɨ', 'Vɨɨrɨ', 'Saatʉ', 'Inyi', 'Saano', 'Sasatʉ'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lb.php b/vendor/nesbot/carbon/src/Carbon/Lang/lb.php
deleted file mode 100644
index 7636655e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/lb.php
+++ /dev/null
@@ -1,88 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Philippe Vaucher
- * - Tsutomu Kuroda
- * - dan-nl
- * - Simon Lelorrain (slelorrain)
- */
-
-use Carbon\CarbonInterface;
-
-return [
- 'year' => ':count Joer',
- 'y' => ':countJ',
- 'month' => ':count Mount|:count Méint',
- 'm' => ':countMo',
- 'week' => ':count Woch|:count Wochen',
- 'w' => ':countWo|:countWo',
- 'day' => ':count Dag|:count Deeg',
- 'd' => ':countD',
- 'hour' => ':count Stonn|:count Stonnen',
- 'h' => ':countSto',
- 'minute' => ':count Minutt|:count Minutten',
- 'min' => ':countM',
- 'second' => ':count Sekonn|:count Sekonnen',
- 's' => ':countSek',
-
- 'ago' => 'virun :time',
- 'from_now' => 'an :time',
- 'before' => ':time virdrun',
- 'after' => ':time duerno',
-
- 'diff_today' => 'Haut',
- 'diff_yesterday' => 'Gëschter',
- 'diff_yesterday_regexp' => 'Gëschter(?:\\s+um)?',
- 'diff_tomorrow' => 'Muer',
- 'diff_tomorrow_regexp' => 'Muer(?:\\s+um)?',
- 'diff_today_regexp' => 'Haut(?:\\s+um)?',
- 'formats' => [
- 'LT' => 'H:mm [Auer]',
- 'LTS' => 'H:mm:ss [Auer]',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'D. MMMM YYYY',
- 'LLL' => 'D. MMMM YYYY H:mm [Auer]',
- 'LLLL' => 'dddd, D. MMMM YYYY H:mm [Auer]',
- ],
-
- 'calendar' => [
- 'sameDay' => '[Haut um] LT',
- 'nextDay' => '[Muer um] LT',
- 'nextWeek' => 'dddd [um] LT',
- 'lastDay' => '[Gëschter um] LT',
- 'lastWeek' => function (CarbonInterface $date) {
- // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
- switch ($date->dayOfWeek) {
- case 2:
- case 4:
- return '[Leschten] dddd [um] LT';
- default:
- return '[Leschte] dddd [um] LT';
- }
- },
- 'sameElse' => 'L',
- ],
-
- 'months' => ['Januar', 'Februar', 'Mäerz', 'Abrëll', 'Mee', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'],
- 'months_short' => ['Jan.', 'Febr.', 'Mrz.', 'Abr.', 'Mee', 'Jun.', 'Jul.', 'Aug.', 'Sept.', 'Okt.', 'Nov.', 'Dez.'],
- 'weekdays' => ['Sonndeg', 'Méindeg', 'Dënschdeg', 'Mëttwoch', 'Donneschdeg', 'Freideg', 'Samschdeg'],
- 'weekdays_short' => ['So.', 'Mé.', 'Dë.', 'Më.', 'Do.', 'Fr.', 'Sa.'],
- 'weekdays_min' => ['So', 'Mé', 'Dë', 'Më', 'Do', 'Fr', 'Sa'],
- 'ordinal' => ':number.',
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' an '],
- 'meridiem' => ['moies', 'mëttes'],
- 'weekdays_short_standalone' => ['Son', 'Méi', 'Dën', 'Mët', 'Don', 'Fre', 'Sam'],
- 'months_short_standalone' => ['Jan', 'Feb', 'Mäe', 'Abr', 'Mee', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lb_LU.php b/vendor/nesbot/carbon/src/Carbon/Lang/lb_LU.php
deleted file mode 100644
index 414bd4d0..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/lb_LU.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/lb.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lg.php b/vendor/nesbot/carbon/src/Carbon/Lang/lg.php
deleted file mode 100644
index 48bc68be..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/lg.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/lg_UG.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lg_UG.php b/vendor/nesbot/carbon/src/Carbon/Lang/lg_UG.php
deleted file mode 100644
index aa022140..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/lg_UG.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Akademe ya Luganda Kizito Birabwa kompyuta@kizito.uklinux.net
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YY',
- ],
- 'months' => ['Janwaliyo', 'Febwaliyo', 'Marisi', 'Apuli', 'Maayi', 'Juuni', 'Julaayi', 'Agusito', 'Sebuttemba', 'Okitobba', 'Novemba', 'Desemba'],
- 'months_short' => ['Jan', 'Feb', 'Mar', 'Apu', 'Maa', 'Juu', 'Jul', 'Agu', 'Seb', 'Oki', 'Nov', 'Des'],
- 'weekdays' => ['Sabiiti', 'Balaza', 'Lwakubiri', 'Lwakusatu', 'Lwakuna', 'Lwakutaano', 'Lwamukaaga'],
- 'weekdays_short' => ['Sab', 'Bal', 'Lw2', 'Lw3', 'Lw4', 'Lw5', 'Lw6'],
- 'weekdays_min' => ['Sab', 'Bal', 'Lw2', 'Lw3', 'Lw4', 'Lw5', 'Lw6'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
-
- 'month' => ':count njuba', // less reliable
- 'm' => ':count njuba', // less reliable
- 'a_month' => ':count njuba', // less reliable
-
- 'year' => ':count mwaaka',
- 'y' => ':count mwaaka',
- 'a_year' => ':count mwaaka',
-
- 'week' => ':count sabbiiti',
- 'w' => ':count sabbiiti',
- 'a_week' => ':count sabbiiti',
-
- 'day' => ':count lunaku',
- 'd' => ':count lunaku',
- 'a_day' => ':count lunaku',
-
- 'hour' => 'saawa :count',
- 'h' => 'saawa :count',
- 'a_hour' => 'saawa :count',
-
- 'minute' => 'ddakiika :count',
- 'min' => 'ddakiika :count',
- 'a_minute' => 'ddakiika :count',
-
- 'second' => ':count kyʼokubiri',
- 's' => ':count kyʼokubiri',
- 'a_second' => ':count kyʼokubiri',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/li.php b/vendor/nesbot/carbon/src/Carbon/Lang/li.php
deleted file mode 100644
index 86c3009e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/li.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/li_NL.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/li_NL.php b/vendor/nesbot/carbon/src/Carbon/Lang/li_NL.php
deleted file mode 100644
index 6c5feb79..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/li_NL.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - information from Kenneth Christiansen Kenneth Christiansen, Pablo Saratxaga kenneth@gnu.org, pablo@mandriva.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD.MM.YYYY',
- ],
- 'months' => ['jannewarie', 'fibberwarie', 'miert', 'eprèl', 'meij', 'junie', 'julie', 'augustus', 'september', 'oktober', 'november', 'desember'],
- 'months_short' => ['jan', 'fib', 'mie', 'epr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des'],
- 'weekdays' => ['zóndig', 'maondig', 'daensdig', 'goonsdig', 'dónderdig', 'vriedig', 'zaoterdig'],
- 'weekdays_short' => ['zón', 'mao', 'dae', 'goo', 'dón', 'vri', 'zao'],
- 'weekdays_min' => ['zón', 'mao', 'dae', 'goo', 'dón', 'vri', 'zao'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-
- 'minute' => ':count momênt', // less reliable
- 'min' => ':count momênt', // less reliable
- 'a_minute' => ':count momênt', // less reliable
-
- 'year' => ':count jaor',
- 'y' => ':count jaor',
- 'a_year' => ':count jaor',
-
- 'month' => ':count maond',
- 'm' => ':count maond',
- 'a_month' => ':count maond',
-
- 'week' => ':count waek',
- 'w' => ':count waek',
- 'a_week' => ':count waek',
-
- 'day' => ':count daag',
- 'd' => ':count daag',
- 'a_day' => ':count daag',
-
- 'hour' => ':count oer',
- 'h' => ':count oer',
- 'a_hour' => ':count oer',
-
- 'second' => ':count Secónd',
- 's' => ':count Secónd',
- 'a_second' => ':count Secónd',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lij.php b/vendor/nesbot/carbon/src/Carbon/Lang/lij.php
deleted file mode 100644
index 45732b55..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/lij.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/lij_IT.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lij_IT.php b/vendor/nesbot/carbon/src/Carbon/Lang/lij_IT.php
deleted file mode 100644
index f8726fd2..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/lij_IT.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Gastaldi alessio.gastaldi@libero.it
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['zenâ', 'fevrâ', 'marzo', 'avrî', 'mazzo', 'zûgno', 'lûggio', 'agosto', 'settembre', 'ottobre', 'novembre', 'dixembre'],
- 'months_short' => ['zen', 'fev', 'mar', 'arv', 'maz', 'zûg', 'lûg', 'ago', 'set', 'ött', 'nov', 'dix'],
- 'weekdays' => ['domenega', 'lûnedì', 'martedì', 'mercUrdì', 'zêggia', 'venardì', 'sabbo'],
- 'weekdays_short' => ['dom', 'lûn', 'mar', 'mer', 'zêu', 'ven', 'sab'],
- 'weekdays_min' => ['dom', 'lûn', 'mar', 'mer', 'zêu', 'ven', 'sab'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-
- 'year' => ':count etæ', // less reliable
- 'y' => ':count etæ', // less reliable
- 'a_year' => ':count etæ', // less reliable
-
- 'month' => ':count meize',
- 'm' => ':count meize',
- 'a_month' => ':count meize',
-
- 'week' => ':count settemannha',
- 'w' => ':count settemannha',
- 'a_week' => ':count settemannha',
-
- 'day' => ':count giorno',
- 'd' => ':count giorno',
- 'a_day' => ':count giorno',
-
- 'hour' => ':count reléuio', // less reliable
- 'h' => ':count reléuio', // less reliable
- 'a_hour' => ':count reléuio', // less reliable
-
- 'minute' => ':count menûo',
- 'min' => ':count menûo',
- 'a_minute' => ':count menûo',
-
- 'second' => ':count segondo',
- 's' => ':count segondo',
- 'a_second' => ':count segondo',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lkt.php b/vendor/nesbot/carbon/src/Carbon/Lang/lkt.php
deleted file mode 100644
index ae73a97b..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/lkt.php
+++ /dev/null
@@ -1,41 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
-
- 'month' => ':count haŋwí', // less reliable
- 'm' => ':count haŋwí', // less reliable
- 'a_month' => ':count haŋwí', // less reliable
-
- 'week' => ':count šakówiŋ', // less reliable
- 'w' => ':count šakówiŋ', // less reliable
- 'a_week' => ':count šakówiŋ', // less reliable
-
- 'hour' => ':count maza škaŋškaŋ', // less reliable
- 'h' => ':count maza škaŋškaŋ', // less reliable
- 'a_hour' => ':count maza škaŋškaŋ', // less reliable
-
- 'minute' => ':count číkʼala', // less reliable
- 'min' => ':count číkʼala', // less reliable
- 'a_minute' => ':count číkʼala', // less reliable
-
- 'year' => ':count waníyetu',
- 'y' => ':count waníyetu',
- 'a_year' => ':count waníyetu',
-
- 'day' => ':count aŋpétu',
- 'd' => ':count aŋpétu',
- 'a_day' => ':count aŋpétu',
-
- 'second' => ':count icinuŋpa',
- 's' => ':count icinuŋpa',
- 'a_second' => ':count icinuŋpa',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ln.php b/vendor/nesbot/carbon/src/Carbon/Lang/ln.php
deleted file mode 100644
index 9d5c35dd..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ln.php
+++ /dev/null
@@ -1,60 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Ubuntu René Manassé GALEKWA renemanasse@gmail.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D/M/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
- 'months' => ['sánzá ya yambo', 'sánzá ya míbalé', 'sánzá ya mísáto', 'sánzá ya mínei', 'sánzá ya mítáno', 'sánzá ya motóbá', 'sánzá ya nsambo', 'sánzá ya mwambe', 'sánzá ya libwa', 'sánzá ya zómi', 'sánzá ya zómi na mɔ̌kɔ́', 'sánzá ya zómi na míbalé'],
- 'months_short' => ['yan', 'fbl', 'msi', 'apl', 'mai', 'yun', 'yul', 'agt', 'stb', 'ɔtb', 'nvb', 'dsb'],
- 'weekdays' => ['Lomíngo', 'Mosálá mɔ̌kɔ́', 'Misálá míbalé', 'Misálá mísáto', 'Misálá mínei', 'Misálá mítáno', 'Mpɔ́sɔ'],
- 'weekdays_short' => ['m1.', 'm2.', 'm3.', 'm4.', 'm5.', 'm6.', 'm7.'],
- 'weekdays_min' => ['m1.', 'm2.', 'm3.', 'm4.', 'm5.', 'm6.', 'm7.'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
-
- 'year' => 'mbula :count',
- 'y' => 'mbula :count',
- 'a_year' => 'mbula :count',
-
- 'month' => 'sánzá :count',
- 'm' => 'sánzá :count',
- 'a_month' => 'sánzá :count',
-
- 'week' => 'mpɔ́sɔ :count',
- 'w' => 'mpɔ́sɔ :count',
- 'a_week' => 'mpɔ́sɔ :count',
-
- 'day' => 'mokɔlɔ :count',
- 'd' => 'mokɔlɔ :count',
- 'a_day' => 'mokɔlɔ :count',
-
- 'hour' => 'ngonga :count',
- 'h' => 'ngonga :count',
- 'a_hour' => 'ngonga :count',
-
- 'minute' => 'miniti :count',
- 'min' => 'miniti :count',
- 'a_minute' => 'miniti :count',
-
- 'second' => 'segɔnde :count',
- 's' => 'segɔnde :count',
- 'a_second' => 'segɔnde :count',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ln_AO.php b/vendor/nesbot/carbon/src/Carbon/Lang/ln_AO.php
deleted file mode 100644
index 7fdb7f1b..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ln_AO.php
+++ /dev/null
@@ -1,17 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/ln.php', [
- 'weekdays' => ['eyenga', 'mokɔlɔ mwa yambo', 'mokɔlɔ mwa míbalé', 'mokɔlɔ mwa mísáto', 'mokɔlɔ ya mínéi', 'mokɔlɔ ya mítáno', 'mpɔ́sɔ'],
- 'weekdays_short' => ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'],
- 'weekdays_min' => ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'],
- 'meridiem' => ['ntɔ́ngɔ́', 'mpókwa'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ln_CD.php b/vendor/nesbot/carbon/src/Carbon/Lang/ln_CD.php
deleted file mode 100644
index 13635fcc..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ln_CD.php
+++ /dev/null
@@ -1,16 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Ubuntu René Manassé GALEKWA renemanasse@gmail.com
- */
-return require __DIR__.'/ln.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ln_CF.php b/vendor/nesbot/carbon/src/Carbon/Lang/ln_CF.php
deleted file mode 100644
index 7fdb7f1b..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ln_CF.php
+++ /dev/null
@@ -1,17 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/ln.php', [
- 'weekdays' => ['eyenga', 'mokɔlɔ mwa yambo', 'mokɔlɔ mwa míbalé', 'mokɔlɔ mwa mísáto', 'mokɔlɔ ya mínéi', 'mokɔlɔ ya mítáno', 'mpɔ́sɔ'],
- 'weekdays_short' => ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'],
- 'weekdays_min' => ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'],
- 'meridiem' => ['ntɔ́ngɔ́', 'mpókwa'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ln_CG.php b/vendor/nesbot/carbon/src/Carbon/Lang/ln_CG.php
deleted file mode 100644
index 7fdb7f1b..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ln_CG.php
+++ /dev/null
@@ -1,17 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/ln.php', [
- 'weekdays' => ['eyenga', 'mokɔlɔ mwa yambo', 'mokɔlɔ mwa míbalé', 'mokɔlɔ mwa mísáto', 'mokɔlɔ ya mínéi', 'mokɔlɔ ya mítáno', 'mpɔ́sɔ'],
- 'weekdays_short' => ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'],
- 'weekdays_min' => ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'],
- 'meridiem' => ['ntɔ́ngɔ́', 'mpókwa'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lo.php b/vendor/nesbot/carbon/src/Carbon/Lang/lo.php
deleted file mode 100644
index 48715f5c..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/lo.php
+++ /dev/null
@@ -1,62 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - François B
- * - ryanhart2
- */
-return [
- 'year' => ':count ປີ',
- 'y' => ':count ປີ',
- 'month' => ':count ເດືອນ',
- 'm' => ':count ດ. ',
- 'week' => ':count ອາທິດ',
- 'w' => ':count ອທ. ',
- 'day' => ':count ມື້',
- 'd' => ':count ມື້',
- 'hour' => ':count ຊົ່ວໂມງ',
- 'h' => ':count ຊມ. ',
- 'minute' => ':count ນາທີ',
- 'min' => ':count ນທ. ',
- 'second' => '{1}ບໍ່ເທົ່າໃດວິນາທີ|]1,Inf[:count ວິນາທີ',
- 's' => ':count ວິ. ',
- 'ago' => ':timeຜ່ານມາ',
- 'from_now' => 'ອີກ :time',
- 'diff_now' => 'ຕອນນີ້',
- 'diff_today' => 'ມື້ນີ້ເວລາ',
- 'diff_yesterday' => 'ມື້ວານນີ້ເວລາ',
- 'diff_tomorrow' => 'ມື້ອື່ນເວລາ',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'ວັນdddd D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[ມື້ນີ້ເວລາ] LT',
- 'nextDay' => '[ມື້ອື່ນເວລາ] LT',
- 'nextWeek' => '[ວັນ]dddd[ໜ້າເວລາ] LT',
- 'lastDay' => '[ມື້ວານນີ້ເວລາ] LT',
- 'lastWeek' => '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => 'ທີ່:number',
- 'meridiem' => ['ຕອນເຊົ້າ', 'ຕອນແລງ'],
- 'months' => ['ມັງກອນ', 'ກຸມພາ', 'ມີນາ', 'ເມສາ', 'ພຶດສະພາ', 'ມິຖຸນາ', 'ກໍລະກົດ', 'ສິງຫາ', 'ກັນຍາ', 'ຕຸລາ', 'ພະຈິກ', 'ທັນວາ'],
- 'months_short' => ['ມັງກອນ', 'ກຸມພາ', 'ມີນາ', 'ເມສາ', 'ພຶດສະພາ', 'ມິຖຸນາ', 'ກໍລະກົດ', 'ສິງຫາ', 'ກັນຍາ', 'ຕຸລາ', 'ພະຈິກ', 'ທັນວາ'],
- 'weekdays' => ['ອາທິດ', 'ຈັນ', 'ອັງຄານ', 'ພຸດ', 'ພະຫັດ', 'ສຸກ', 'ເສົາ'],
- 'weekdays_short' => ['ທິດ', 'ຈັນ', 'ອັງຄານ', 'ພຸດ', 'ພະຫັດ', 'ສຸກ', 'ເສົາ'],
- 'weekdays_min' => ['ທ', 'ຈ', 'ອຄ', 'ພ', 'ພຫ', 'ສກ', 'ສ'],
- 'list' => [', ', 'ແລະ '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lo_LA.php b/vendor/nesbot/carbon/src/Carbon/Lang/lo_LA.php
deleted file mode 100644
index 9b7fd9bf..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/lo_LA.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/lo.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lrc.php b/vendor/nesbot/carbon/src/Carbon/Lang/lrc.php
deleted file mode 100644
index 546e6791..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/lrc.php
+++ /dev/null
@@ -1,17 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
-
- 'minute' => ':count هنر', // less reliable
- 'min' => ':count هنر', // less reliable
- 'a_minute' => ':count هنر', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lrc_IQ.php b/vendor/nesbot/carbon/src/Carbon/Lang/lrc_IQ.php
deleted file mode 100644
index d42f5e97..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/lrc_IQ.php
+++ /dev/null
@@ -1,13 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/lrc.php', [
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lt.php b/vendor/nesbot/carbon/src/Carbon/Lang/lt.php
deleted file mode 100644
index 7d1b6f74..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/lt.php
+++ /dev/null
@@ -1,135 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Philippe Vaucher
- * - Tsutomu Kuroda
- * - tjku
- * - valdas406
- * - Justas Palumickas
- * - Max Melentiev
- * - Andrius Janauskas
- * - Juanito Fatas
- * - Akira Matsuda
- * - Christopher Dell
- * - Enrique Vidal
- * - Simone Carletti
- * - Aaron Patterson
- * - Nicolás Hock Isaza
- * - Laurynas Butkus
- * - Sven Fuchs
- * - Dominykas Tijūnaitis
- * - Justinas Bolys
- * - Ričardas
- * - Kirill Chalkin
- * - Rolandas
- * - Justinas (Gamesh)
- */
-return [
- 'year' => ':count metai|:count metai|:count metų',
- 'y' => ':count m.',
- 'month' => ':count mėnuo|:count mėnesiai|:count mėnesį',
- 'm' => ':count mėn.',
- 'week' => ':count savaitė|:count savaitės|:count savaitę',
- 'w' => ':count sav.',
- 'day' => ':count diena|:count dienos|:count dienų',
- 'd' => ':count d.',
- 'hour' => ':count valanda|:count valandos|:count valandų',
- 'h' => ':count val.',
- 'minute' => ':count minutė|:count minutės|:count minutę',
- 'min' => ':count min.',
- 'second' => ':count sekundė|:count sekundės|:count sekundžių',
- 's' => ':count sek.',
-
- 'year_ago' => ':count metus|:count metus|:count metų',
- 'month_ago' => ':count mėnesį|:count mėnesius|:count mėnesių',
- 'week_ago' => ':count savaitę|:count savaites|:count savaičių',
- 'day_ago' => ':count dieną|:count dienas|:count dienų',
- 'hour_ago' => ':count valandą|:count valandas|:count valandų',
- 'minute_ago' => ':count minutę|:count minutes|:count minučių',
- 'second_ago' => ':count sekundę|:count sekundes|:count sekundžių',
-
- 'year_from_now' => ':count metų',
- 'month_from_now' => ':count mėnesio|:count mėnesių|:count mėnesių',
- 'week_from_now' => ':count savaitės|:count savaičių|:count savaičių',
- 'day_from_now' => ':count dienos|:count dienų|:count dienų',
- 'hour_from_now' => ':count valandos|:count valandų|:count valandų',
- 'minute_from_now' => ':count minutės|:count minučių|:count minučių',
- 'second_from_now' => ':count sekundės|:count sekundžių|:count sekundžių',
-
- 'year_after' => ':count metų',
- 'month_after' => ':count mėnesio|:count mėnesių|:count mėnesių',
- 'week_after' => ':count savaitės|:count savaičių|:count savaičių',
- 'day_after' => ':count dienos|:count dienų|:count dienų',
- 'hour_after' => ':count valandos|:count valandų|:count valandų',
- 'minute_after' => ':count minutės|:count minučių|:count minučių',
- 'second_after' => ':count sekundės|:count sekundžių|:count sekundžių',
-
- 'ago' => 'prieš :time',
- 'from_now' => ':time nuo dabar',
- 'after' => 'po :time',
- 'before' => 'už :time',
-
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-
- 'diff_now' => 'ką tik',
- 'diff_today' => 'Šiandien',
- 'diff_yesterday' => 'vakar',
- 'diff_yesterday_regexp' => 'Vakar',
- 'diff_tomorrow' => 'rytoj',
- 'diff_tomorrow_regexp' => 'Rytoj',
- 'diff_before_yesterday' => 'užvakar',
- 'diff_after_tomorrow' => 'poryt',
-
- 'period_recurrences' => 'kartą|:count kartų',
- 'period_interval' => 'kiekvieną :interval',
- 'period_start_date' => 'nuo :date',
- 'period_end_date' => 'iki :date',
-
- 'months' => ['sausio', 'vasario', 'kovo', 'balandžio', 'gegužės', 'birželio', 'liepos', 'rugpjūčio', 'rugsėjo', 'spalio', 'lapkričio', 'gruodžio'],
- 'months_standalone' => ['sausis', 'vasaris', 'kovas', 'balandis', 'gegužė', 'birželis', 'liepa', 'rugpjūtis', 'rugsėjis', 'spalis', 'lapkritis', 'gruodis'],
- 'months_regexp' => '/(L{2,4}|D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?)/',
- 'months_short' => ['sau', 'vas', 'kov', 'bal', 'geg', 'bir', 'lie', 'rgp', 'rgs', 'spa', 'lap', 'gru'],
- 'weekdays' => ['sekmadienį', 'pirmadienį', 'antradienį', 'trečiadienį', 'ketvirtadienį', 'penktadienį', 'šeštadienį'],
- 'weekdays_standalone' => ['sekmadienis', 'pirmadienis', 'antradienis', 'trečiadienis', 'ketvirtadienis', 'penktadienis', 'šeštadienis'],
- 'weekdays_short' => ['sek', 'pir', 'ant', 'tre', 'ket', 'pen', 'šeš'],
- 'weekdays_min' => ['se', 'pi', 'an', 'tr', 'ke', 'pe', 'še'],
- 'list' => [', ', ' ir '],
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'YYYY-MM-DD',
- 'LL' => 'MMMM DD, YYYY',
- 'LLL' => 'DD MMM HH:mm',
- 'LLLL' => 'MMMM DD, YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[Šiandien] LT',
- 'nextDay' => '[Rytoj] LT',
- 'nextWeek' => 'dddd LT',
- 'lastDay' => '[Vakar] LT',
- 'lastWeek' => '[Paskutinį] dddd LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => function ($number) {
- switch ($number) {
- case 0:
- return '0-is';
- case 3:
- return '3-ias';
- default:
- return "$number-as";
- }
- },
- 'meridiem' => ['priešpiet', 'popiet'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lt_LT.php b/vendor/nesbot/carbon/src/Carbon/Lang/lt_LT.php
deleted file mode 100644
index f772d38b..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/lt_LT.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/lt.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lu.php b/vendor/nesbot/carbon/src/Carbon/Lang/lu.php
deleted file mode 100644
index c8cd83af..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/lu.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['Dinda', 'Dilolo'],
- 'weekdays' => ['Lumingu', 'Nkodya', 'Ndàayà', 'Ndangù', 'Njòwa', 'Ngòvya', 'Lubingu'],
- 'weekdays_short' => ['Lum', 'Nko', 'Ndy', 'Ndg', 'Njw', 'Ngv', 'Lub'],
- 'weekdays_min' => ['Lum', 'Nko', 'Ndy', 'Ndg', 'Njw', 'Ngv', 'Lub'],
- 'months' => ['Ciongo', 'Lùishi', 'Lusòlo', 'Mùuyà', 'Lumùngùlù', 'Lufuimi', 'Kabàlàshìpù', 'Lùshìkà', 'Lutongolo', 'Lungùdi', 'Kaswèkèsè', 'Ciswà'],
- 'months_short' => ['Cio', 'Lui', 'Lus', 'Muu', 'Lum', 'Luf', 'Kab', 'Lush', 'Lut', 'Lun', 'Kas', 'Cis'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D/M/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/luo.php b/vendor/nesbot/carbon/src/Carbon/Lang/luo.php
deleted file mode 100644
index b55af731..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/luo.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['OD', 'OT'],
- 'weekdays' => ['Jumapil', 'Wuok Tich', 'Tich Ariyo', 'Tich Adek', 'Tich Ang’wen', 'Tich Abich', 'Ngeso'],
- 'weekdays_short' => ['JMP', 'WUT', 'TAR', 'TAD', 'TAN', 'TAB', 'NGS'],
- 'weekdays_min' => ['JMP', 'WUT', 'TAR', 'TAD', 'TAN', 'TAB', 'NGS'],
- 'months' => ['Dwe mar Achiel', 'Dwe mar Ariyo', 'Dwe mar Adek', 'Dwe mar Ang’wen', 'Dwe mar Abich', 'Dwe mar Auchiel', 'Dwe mar Abiriyo', 'Dwe mar Aboro', 'Dwe mar Ochiko', 'Dwe mar Apar', 'Dwe mar gi achiel', 'Dwe mar Apar gi ariyo'],
- 'months_short' => ['DAC', 'DAR', 'DAD', 'DAN', 'DAH', 'DAU', 'DAO', 'DAB', 'DOC', 'DAP', 'DGI', 'DAG'],
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
-
- 'year' => 'higni :count',
- 'y' => 'higni :count',
- 'a_year' => ':higni :count',
-
- 'month' => 'dweche :count',
- 'm' => 'dweche :count',
- 'a_month' => 'dweche :count',
-
- 'week' => 'jumbe :count',
- 'w' => 'jumbe :count',
- 'a_week' => 'jumbe :count',
-
- 'day' => 'ndalo :count',
- 'd' => 'ndalo :count',
- 'a_day' => 'ndalo :count',
-
- 'hour' => 'seche :count',
- 'h' => 'seche :count',
- 'a_hour' => 'seche :count',
-
- 'minute' => 'dakika :count',
- 'min' => 'dakika :count',
- 'a_minute' => 'dakika :count',
-
- 'second' => 'nus dakika :count',
- 's' => 'nus dakika :count',
- 'a_second' => 'nus dakika :count',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/luy.php b/vendor/nesbot/carbon/src/Carbon/Lang/luy.php
deleted file mode 100644
index 2b37e3e3..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/luy.php
+++ /dev/null
@@ -1,57 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'weekdays' => ['Jumapiri', 'Jumatatu', 'Jumanne', 'Jumatano', 'Murwa wa Kanne', 'Murwa wa Katano', 'Jumamosi'],
- 'weekdays_short' => ['J2', 'J3', 'J4', 'J5', 'Al', 'Ij', 'J1'],
- 'weekdays_min' => ['J2', 'J3', 'J4', 'J5', 'Al', 'Ij', 'J1'],
- 'months' => ['Januari', 'Februari', 'Machi', 'Aprili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', 'Oktoba', 'Novemba', 'Desemba'],
- 'months_short' => ['Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'],
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
-
- // Too unreliable
- /*
- 'year' => ':count liliino', // less reliable
- 'y' => ':count liliino', // less reliable
- 'a_year' => ':count liliino', // less reliable
-
- 'month' => ':count kumwesi', // less reliable
- 'm' => ':count kumwesi', // less reliable
- 'a_month' => ':count kumwesi', // less reliable
-
- 'week' => ':count olutambi', // less reliable
- 'w' => ':count olutambi', // less reliable
- 'a_week' => ':count olutambi', // less reliable
-
- 'day' => ':count luno', // less reliable
- 'd' => ':count luno', // less reliable
- 'a_day' => ':count luno', // less reliable
-
- 'hour' => ':count ekengele', // less reliable
- 'h' => ':count ekengele', // less reliable
- 'a_hour' => ':count ekengele', // less reliable
-
- 'minute' => ':count omundu', // less reliable
- 'min' => ':count omundu', // less reliable
- 'a_minute' => ':count omundu', // less reliable
-
- 'second' => ':count liliino', // less reliable
- 's' => ':count liliino', // less reliable
- 'a_second' => ':count liliino', // less reliable
- */
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lv.php b/vendor/nesbot/carbon/src/Carbon/Lang/lv.php
deleted file mode 100644
index 693eceb5..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/lv.php
+++ /dev/null
@@ -1,182 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Carbon\CarbonInterface;
-
-/**
- * This file is part of the Carbon package.
- *
- * (c) Brian Nesbitt
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Philippe Vaucher
- * - pirminis
- * - Tsutomu Kuroda
- * - tjku
- * - Andris Zāģeris
- * - Max Melentiev
- * - Edgars Beigarts
- * - Juanito Fatas
- * - Vitauts Stočka
- * - Akira Matsuda
- * - Christopher Dell
- * - Enrique Vidal
- * - Simone Carletti
- * - Aaron Patterson
- * - Kaspars Bankovskis
- * - Nicolás Hock Isaza
- * - Viesturs Kavacs (Kavacky)
- * - zakse
- * - Janis Eglitis (janiseglitis)
- * - Guntars
- * - Juris Sudmalis
- */
-$daysOfWeek = ['svētdiena', 'pirmdiena', 'otrdiena', 'trešdiena', 'ceturtdiena', 'piektdiena', 'sestdiena'];
-$daysOfWeekLocativum = ['svētdien', 'pirmdien', 'otrdien', 'trešdien', 'ceturtdien', 'piektdien', 'sestdien'];
-
-$transformDiff = function ($input) {
- return strtr($input, [
- // Nominative => "pirms/pēc" Dative
- 'gads' => 'gada',
- 'gadi' => 'gadiem',
- 'gadu' => 'gadiem',
- 'mēnesis' => 'mēneša',
- 'mēneši' => 'mēnešiem',
- 'mēnešu' => 'mēnešiem',
- 'nedēļa' => 'nedēļas',
- 'nedēļas' => 'nedēļām',
- 'nedēļu' => 'nedēļām',
- 'diena' => 'dienas',
- 'dienas' => 'dienām',
- 'dienu' => 'dienām',
- 'stunda' => 'stundas',
- 'stundas' => 'stundām',
- 'stundu' => 'stundām',
- 'minūte' => 'minūtes',
- 'minūtes' => 'minūtēm',
- 'minūšu' => 'minūtēm',
- 'sekunde' => 'sekundes',
- 'sekundes' => 'sekundēm',
- 'sekunžu' => 'sekundēm',
- ]);
-};
-
-return [
- 'ago' => function ($time) use ($transformDiff) {
- return 'pirms '.$transformDiff($time);
- },
- 'from_now' => function ($time) use ($transformDiff) {
- return 'pēc '.$transformDiff($time);
- },
-
- 'year' => '0 gadu|:count gads|:count gadi',
- 'y' => ':count g.',
- 'a_year' => '{1}gads|0 gadu|:count gads|:count gadi',
- 'month' => '0 mēnešu|:count mēnesis|:count mēneši',
- 'm' => ':count mēn.',
- 'a_month' => '{1}mēnesis|0 mēnešu|:count mēnesis|:count mēneši',
- 'week' => '0 nedēļu|:count nedēļa|:count nedēļas',
- 'w' => ':count ned.',
- 'a_week' => '{1}nedēļa|0 nedēļu|:count nedēļa|:count nedēļas',
- 'day' => '0 dienu|:count diena|:count dienas',
- 'd' => ':count d.',
- 'a_day' => '{1}diena|0 dienu|:count diena|:count dienas',
- 'hour' => '0 stundu|:count stunda|:count stundas',
- 'h' => ':count st.',
- 'a_hour' => '{1}stunda|0 stundu|:count stunda|:count stundas',
- 'minute' => '0 minūšu|:count minūte|:count minūtes',
- 'min' => ':count min.',
- 'a_minute' => '{1}minūte|0 minūšu|:count minūte|:count minūtes',
- 'second' => '0 sekunžu|:count sekunde|:count sekundes',
- 's' => ':count sek.',
- 'a_second' => '{1}sekunde|0 sekunžu|:count sekunde|:count sekundes',
-
- 'after' => ':time vēlāk',
- 'year_after' => '0 gadus|:count gadu|:count gadus',
- 'a_year_after' => '{1}gadu|0 gadus|:count gadu|:count gadus',
- 'month_after' => '0 mēnešus|:count mēnesi|:count mēnešus',
- 'a_month_after' => '{1}mēnesi|0 mēnešus|:count mēnesi|:count mēnešus',
- 'week_after' => '0 nedēļas|:count nedēļu|:count nedēļas',
- 'a_week_after' => '{1}nedēļu|0 nedēļas|:count nedēļu|:count nedēļas',
- 'day_after' => '0 dienas|:count dienu|:count dienas',
- 'a_day_after' => '{1}dienu|0 dienas|:count dienu|:count dienas',
- 'hour_after' => '0 stundas|:count stundu|:count stundas',
- 'a_hour_after' => '{1}stundu|0 stundas|:count stundu|:count stundas',
- 'minute_after' => '0 minūtes|:count minūti|:count minūtes',
- 'a_minute_after' => '{1}minūti|0 minūtes|:count minūti|:count minūtes',
- 'second_after' => '0 sekundes|:count sekundi|:count sekundes',
- 'a_second_after' => '{1}sekundi|0 sekundes|:count sekundi|:count sekundes',
-
- 'before' => ':time agrāk',
- 'year_before' => '0 gadus|:count gadu|:count gadus',
- 'a_year_before' => '{1}gadu|0 gadus|:count gadu|:count gadus',
- 'month_before' => '0 mēnešus|:count mēnesi|:count mēnešus',
- 'a_month_before' => '{1}mēnesi|0 mēnešus|:count mēnesi|:count mēnešus',
- 'week_before' => '0 nedēļas|:count nedēļu|:count nedēļas',
- 'a_week_before' => '{1}nedēļu|0 nedēļas|:count nedēļu|:count nedēļas',
- 'day_before' => '0 dienas|:count dienu|:count dienas',
- 'a_day_before' => '{1}dienu|0 dienas|:count dienu|:count dienas',
- 'hour_before' => '0 stundas|:count stundu|:count stundas',
- 'a_hour_before' => '{1}stundu|0 stundas|:count stundu|:count stundas',
- 'minute_before' => '0 minūtes|:count minūti|:count minūtes',
- 'a_minute_before' => '{1}minūti|0 minūtes|:count minūti|:count minūtes',
- 'second_before' => '0 sekundes|:count sekundi|:count sekundes',
- 'a_second_before' => '{1}sekundi|0 sekundes|:count sekundi|:count sekundes',
-
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' un '],
-
- 'diff_now' => 'tagad',
- 'diff_today' => 'šodien',
- 'diff_yesterday' => 'vakar',
- 'diff_before_yesterday' => 'aizvakar',
- 'diff_tomorrow' => 'rīt',
- 'diff_after_tomorrow' => 'parīt',
-
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD.MM.YYYY.',
- 'LL' => 'YYYY. [gada] D. MMMM',
- 'LLL' => 'DD.MM.YYYY., HH:mm',
- 'LLLL' => 'YYYY. [gada] D. MMMM, HH:mm',
- ],
-
- 'calendar' => [
- 'sameDay' => '[šodien] [plkst.] LT',
- 'nextDay' => '[rīt] [plkst.] LT',
- 'nextWeek' => function (CarbonInterface $current, CarbonInterface $other) use ($daysOfWeekLocativum) {
- if ($current->week !== $other->week) {
- return '[nākošo] ['.$daysOfWeekLocativum[$current->dayOfWeek].'] [plkst.] LT';
- }
-
- return '['.$daysOfWeekLocativum[$current->dayOfWeek].'] [plkst.] LT';
- },
- 'lastDay' => '[vakar] [plkst.] LT',
- 'lastWeek' => function (CarbonInterface $current) use ($daysOfWeekLocativum) {
- return '[pagājušo] ['.$daysOfWeekLocativum[$current->dayOfWeek].'] [plkst.] LT';
- },
- 'sameElse' => 'L',
- ],
-
- 'weekdays' => $daysOfWeek,
- 'weekdays_short' => ['Sv.', 'P.', 'O.', 'T.', 'C.', 'Pk.', 'S.'],
- 'weekdays_min' => ['Sv.', 'P.', 'O.', 'T.', 'C.', 'Pk.', 'S.'],
- 'months' => ['janvārī', 'februārī', 'martā', 'aprīlī', 'maijā', 'jūnijā', 'jūlijā', 'augustā', 'septembrī', 'oktobrī', 'novembrī', 'decembrī'],
- 'months_short' => ['janv.', 'febr.', 'martā', 'apr.', 'maijā', 'jūn.', 'jūl.', 'aug.', 'sept.', 'okt.', 'nov.', 'dec.'],
- 'meridiem' => ['priekšpusdiena', 'pēcpusdiena'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lv_LV.php b/vendor/nesbot/carbon/src/Carbon/Lang/lv_LV.php
deleted file mode 100644
index ee91c369..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/lv_LV.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/lv.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lzh.php b/vendor/nesbot/carbon/src/Carbon/Lang/lzh.php
deleted file mode 100644
index 1180c6bb..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/lzh.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/lzh_TW.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lzh_TW.php b/vendor/nesbot/carbon/src/Carbon/Lang/lzh_TW.php
deleted file mode 100644
index 3b1493ee..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/lzh_TW.php
+++ /dev/null
@@ -1,56 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'OY[年]MMMMOD[日]',
- ],
- 'months' => ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
- 'months_short' => [' 一 ', ' 二 ', ' 三 ', ' 四 ', ' 五 ', ' 六 ', ' 七 ', ' 八 ', ' 九 ', ' 十 ', '十一', '十二'],
- 'weekdays' => ['週日', '週一', '週二', '週三', '週四', '週五', '週六'],
- 'weekdays_short' => ['日', '一', '二', '三', '四', '五', '六'],
- 'weekdays_min' => ['日', '一', '二', '三', '四', '五', '六'],
- 'day_of_first_week_of_year' => 1,
- 'alt_numbers' => ['〇', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二', '十三', '十四', '十五', '十六', '十七', '十八', '十九', '廿', '廿一', '廿二', '廿三', '廿四', '廿五', '廿六', '廿七', '廿八', '廿九', '卅', '卅一'],
- 'meridiem' => ['朝', '暮'],
-
- 'year' => ':count 夏', // less reliable
- 'y' => ':count 夏', // less reliable
- 'a_year' => ':count 夏', // less reliable
-
- 'month' => ':count 月', // less reliable
- 'm' => ':count 月', // less reliable
- 'a_month' => ':count 月', // less reliable
-
- 'hour' => ':count 氧', // less reliable
- 'h' => ':count 氧', // less reliable
- 'a_hour' => ':count 氧', // less reliable
-
- 'minute' => ':count 點', // less reliable
- 'min' => ':count 點', // less reliable
- 'a_minute' => ':count 點', // less reliable
-
- 'second' => ':count 楚', // less reliable
- 's' => ':count 楚', // less reliable
- 'a_second' => ':count 楚', // less reliable
-
- 'week' => ':count 星期',
- 'w' => ':count 星期',
- 'a_week' => ':count 星期',
-
- 'day' => ':count 日(曆法)',
- 'd' => ':count 日(曆法)',
- 'a_day' => ':count 日(曆法)',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mag.php b/vendor/nesbot/carbon/src/Carbon/Lang/mag.php
deleted file mode 100644
index 7532436d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mag.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/mag_IN.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mag_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/mag_IN.php
deleted file mode 100644
index 193f67a7..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mag_IN.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - bhashaghar@googlegroups.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'D/M/YY',
- ],
- 'months' => ['जनवरी', 'फ़रवरी', 'मार्च', 'अप्रेल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर'],
- 'months_short' => ['जनवरी', 'फ़रवरी', 'मार्च', 'अप्रेल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर'],
- 'weekdays' => ['एतवार', 'सोमार', 'मंगर', 'बुध', 'बिफे', 'सूक', 'सनिचर'],
- 'weekdays_short' => ['एतवार', 'सोमार', 'मंगर', 'बुध', 'बिफे', 'सूक', 'सनिचर'],
- 'weekdays_min' => ['एतवार', 'सोमार', 'मंगर', 'बुध', 'बिफे', 'सूक', 'सनिचर'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['पूर्वाह्न', 'अपराह्न'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mai.php b/vendor/nesbot/carbon/src/Carbon/Lang/mai.php
deleted file mode 100644
index 792b9739..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mai.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/mai_IN.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mai_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/mai_IN.php
deleted file mode 100644
index 03049d45..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mai_IN.php
+++ /dev/null
@@ -1,51 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Maithili Computing Research Center, Pune, India rajeshkajha@yahoo.com,akhilesh.k@samusng.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'D/M/YY',
- ],
- 'months' => ['बैसाख', 'जेठ', 'अषाढ़', 'सावोन', 'भादो', 'आसिन', 'कातिक', 'अगहन', 'पूस', 'माघ', 'फागुन', 'चैति'],
- 'months_short' => ['बैसाख', 'जेठ', 'अषाढ़', 'सावोन', 'भादो', 'आसिन', 'कातिक', 'अगहन', 'पूस', 'माघ', 'फागुन', 'चैति'],
- 'weekdays' => ['रविदिन', 'सोमदिन', 'मंगलदिन', 'बुधदिन', 'बृहस्पतीदिन', 'शुक्रदिन', 'शनीदिन'],
- 'weekdays_short' => ['रवि', 'सोम', 'मंगल', 'बुध', 'बृहस्पती', 'शुक्र', 'शनी'],
- 'weekdays_min' => ['रवि', 'सोम', 'मंगल', 'बुध', 'बृहस्पती', 'शुक्र', 'शनी'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['पूर्वाह्न', 'अपराह्न'],
-
- 'year' => ':count ऋतु', // less reliable
- 'y' => ':count ऋतु', // less reliable
- 'a_year' => ':count ऋतु', // less reliable
-
- 'month' => ':count महिना',
- 'm' => ':count महिना',
- 'a_month' => ':count महिना',
-
- 'week' => ':count श्रेणी:क्यालेन्डर', // less reliable
- 'w' => ':count श्रेणी:क्यालेन्डर', // less reliable
- 'a_week' => ':count श्रेणी:क्यालेन्डर', // less reliable
-
- 'day' => ':count दिन',
- 'd' => ':count दिन',
- 'a_day' => ':count दिन',
-
- 'hour' => ':count घण्टा',
- 'h' => ':count घण्टा',
- 'a_hour' => ':count घण्टा',
-
- 'minute' => ':count समय', // less reliable
- 'min' => ':count समय', // less reliable
- 'a_minute' => ':count समय', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mas.php b/vendor/nesbot/carbon/src/Carbon/Lang/mas.php
deleted file mode 100644
index cbd610c2..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mas.php
+++ /dev/null
@@ -1,51 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['Ɛnkakɛnyá', 'Ɛndámâ'],
- 'weekdays' => ['Jumapílí', 'Jumatátu', 'Jumane', 'Jumatánɔ', 'Alaámisi', 'Jumáa', 'Jumamósi'],
- 'weekdays_short' => ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'],
- 'weekdays_min' => ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'],
- 'months' => ['Oladalʉ́', 'Arát', 'Ɔɛnɨ́ɔɨŋɔk', 'Olodoyíóríê inkókúâ', 'Oloilépūnyīē inkókúâ', 'Kújúɔrɔk', 'Mórusásin', 'Ɔlɔ́ɨ́bɔ́rárɛ', 'Kúshîn', 'Olgísan', 'Pʉshʉ́ka', 'Ntʉ́ŋʉ́s'],
- 'months_short' => ['Dal', 'Ará', 'Ɔɛn', 'Doy', 'Lép', 'Rok', 'Sás', 'Bɔ́r', 'Kús', 'Gís', 'Shʉ́', 'Ntʉ́'],
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
-
- 'year' => ':count olameyu', // less reliable
- 'y' => ':count olameyu', // less reliable
- 'a_year' => ':count olameyu', // less reliable
-
- 'week' => ':count engolongeare orwiki', // less reliable
- 'w' => ':count engolongeare orwiki', // less reliable
- 'a_week' => ':count engolongeare orwiki', // less reliable
-
- 'hour' => ':count esahabu', // less reliable
- 'h' => ':count esahabu', // less reliable
- 'a_hour' => ':count esahabu', // less reliable
-
- 'second' => ':count are', // less reliable
- 's' => ':count are', // less reliable
- 'a_second' => ':count are', // less reliable
-
- 'month' => ':count olapa',
- 'm' => ':count olapa',
- 'a_month' => ':count olapa',
-
- 'day' => ':count enkolongʼ',
- 'd' => ':count enkolongʼ',
- 'a_day' => ':count enkolongʼ',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mas_TZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/mas_TZ.php
deleted file mode 100644
index 56e29053..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mas_TZ.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/mas.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mer.php b/vendor/nesbot/carbon/src/Carbon/Lang/mer.php
deleted file mode 100644
index 2e14597f..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mer.php
+++ /dev/null
@@ -1,43 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['RŨ', 'ŨG'],
- 'weekdays' => ['Kiumia', 'Muramuko', 'Wairi', 'Wethatu', 'Wena', 'Wetano', 'Jumamosi'],
- 'weekdays_short' => ['KIU', 'MRA', 'WAI', 'WET', 'WEN', 'WTN', 'JUM'],
- 'weekdays_min' => ['KIU', 'MRA', 'WAI', 'WET', 'WEN', 'WTN', 'JUM'],
- 'months' => ['Januarĩ', 'Feburuarĩ', 'Machi', 'Ĩpurũ', 'Mĩĩ', 'Njuni', 'Njuraĩ', 'Agasti', 'Septemba', 'Oktũba', 'Novemba', 'Dicemba'],
- 'months_short' => ['JAN', 'FEB', 'MAC', 'ĨPU', 'MĨĨ', 'NJU', 'NJR', 'AGA', 'SPT', 'OKT', 'NOV', 'DEC'],
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
-
- 'year' => ':count murume', // less reliable
- 'y' => ':count murume', // less reliable
- 'a_year' => ':count murume', // less reliable
-
- 'month' => ':count muchaara', // less reliable
- 'm' => ':count muchaara', // less reliable
- 'a_month' => ':count muchaara', // less reliable
-
- 'minute' => ':count monto', // less reliable
- 'min' => ':count monto', // less reliable
- 'a_minute' => ':count monto', // less reliable
-
- 'second' => ':count gikeno', // less reliable
- 's' => ':count gikeno', // less reliable
- 'a_second' => ':count gikeno', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mfe.php b/vendor/nesbot/carbon/src/Carbon/Lang/mfe.php
deleted file mode 100644
index 4d6e6b69..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mfe.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/mfe_MU.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mfe_MU.php b/vendor/nesbot/carbon/src/Carbon/Lang/mfe_MU.php
deleted file mode 100644
index 2d27b457..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mfe_MU.php
+++ /dev/null
@@ -1,53 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Samsung Electronics Co., Ltd. akhilesh.k@samsung.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YY',
- ],
- 'months' => ['zanvie', 'fevriye', 'mars', 'avril', 'me', 'zin', 'zilye', 'out', 'septam', 'oktob', 'novam', 'desam'],
- 'months_short' => ['zan', 'fev', 'mar', 'avr', 'me', 'zin', 'zil', 'out', 'sep', 'okt', 'nov', 'des'],
- 'weekdays' => ['dimans', 'lindi', 'mardi', 'merkredi', 'zedi', 'vandredi', 'samdi'],
- 'weekdays_short' => ['dim', 'lin', 'mar', 'mer', 'ze', 'van', 'sam'],
- 'weekdays_min' => ['dim', 'lin', 'mar', 'mer', 'ze', 'van', 'sam'],
-
- 'year' => ':count banané',
- 'y' => ':count banané',
- 'a_year' => ':count banané',
-
- 'month' => ':count mwa',
- 'm' => ':count mwa',
- 'a_month' => ':count mwa',
-
- 'week' => ':count sémenn',
- 'w' => ':count sémenn',
- 'a_week' => ':count sémenn',
-
- 'day' => ':count zour',
- 'd' => ':count zour',
- 'a_day' => ':count zour',
-
- 'hour' => ':count -er-tan',
- 'h' => ':count -er-tan',
- 'a_hour' => ':count -er-tan',
-
- 'minute' => ':count minitt',
- 'min' => ':count minitt',
- 'a_minute' => ':count minitt',
-
- 'second' => ':count déziém',
- 's' => ':count déziém',
- 'a_second' => ':count déziém',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mg.php b/vendor/nesbot/carbon/src/Carbon/Lang/mg.php
deleted file mode 100644
index 40bc2a82..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mg.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/mg_MG.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mg_MG.php b/vendor/nesbot/carbon/src/Carbon/Lang/mg_MG.php
deleted file mode 100644
index 6a14535a..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mg_MG.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - The Debian Project modified by GNU//Linux Malagasy Rado Ramarotafika,Do-Risika RAFIEFERANTSIARONJY rado@linuxmg.org,dourix@free.fr
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD.MM.YYYY',
- ],
- 'months' => ['Janoary', 'Febroary', 'Martsa', 'Aprily', 'Mey', 'Jona', 'Jolay', 'Aogositra', 'Septambra', 'Oktobra', 'Novambra', 'Desambra'],
- 'months_short' => ['Jan', 'Feb', 'Mar', 'Apr', 'Mey', 'Jon', 'Jol', 'Aog', 'Sep', 'Okt', 'Nov', 'Des'],
- 'weekdays' => ['alahady', 'alatsinainy', 'talata', 'alarobia', 'alakamisy', 'zoma', 'sabotsy'],
- 'weekdays_short' => ['lhd', 'lts', 'tlt', 'lrb', 'lkm', 'zom', 'sab'],
- 'weekdays_min' => ['lhd', 'lts', 'tlt', 'lrb', 'lkm', 'zom', 'sab'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
-
- 'minute' => ':count minitra', // less reliable
- 'min' => ':count minitra', // less reliable
- 'a_minute' => ':count minitra', // less reliable
-
- 'year' => ':count taona',
- 'y' => ':count taona',
- 'a_year' => ':count taona',
-
- 'month' => ':count volana',
- 'm' => ':count volana',
- 'a_month' => ':count volana',
-
- 'week' => ':count herinandro',
- 'w' => ':count herinandro',
- 'a_week' => ':count herinandro',
-
- 'day' => ':count andro',
- 'd' => ':count andro',
- 'a_day' => ':count andro',
-
- 'hour' => ':count ora',
- 'h' => ':count ora',
- 'a_hour' => ':count ora',
-
- 'second' => ':count segondra',
- 's' => ':count segondra',
- 'a_second' => ':count segondra',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mgh.php b/vendor/nesbot/carbon/src/Carbon/Lang/mgh.php
deleted file mode 100644
index 2a80960d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mgh.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['wichishu', 'mchochil’l'],
- 'weekdays' => ['Sabato', 'Jumatatu', 'Jumanne', 'Jumatano', 'Arahamisi', 'Ijumaa', 'Jumamosi'],
- 'weekdays_short' => ['Sab', 'Jtt', 'Jnn', 'Jtn', 'Ara', 'Iju', 'Jmo'],
- 'weekdays_min' => ['Sab', 'Jtt', 'Jnn', 'Jtn', 'Ara', 'Iju', 'Jmo'],
- 'months' => ['Mweri wo kwanza', 'Mweri wo unayeli', 'Mweri wo uneraru', 'Mweri wo unecheshe', 'Mweri wo unethanu', 'Mweri wo thanu na mocha', 'Mweri wo saba', 'Mweri wo nane', 'Mweri wo tisa', 'Mweri wo kumi', 'Mweri wo kumi na moja', 'Mweri wo kumi na yel’li'],
- 'months_short' => ['Kwa', 'Una', 'Rar', 'Che', 'Tha', 'Moc', 'Sab', 'Nan', 'Tis', 'Kum', 'Moj', 'Yel'],
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mgo.php b/vendor/nesbot/carbon/src/Carbon/Lang/mgo.php
deleted file mode 100644
index a126c9ff..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mgo.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'weekdays' => ['Aneg 1', 'Aneg 2', 'Aneg 3', 'Aneg 4', 'Aneg 5', 'Aneg 6', 'Aneg 7'],
- 'weekdays_short' => ['Aneg 1', 'Aneg 2', 'Aneg 3', 'Aneg 4', 'Aneg 5', 'Aneg 6', 'Aneg 7'],
- 'weekdays_min' => ['1', '2', '3', '4', '5', '6', '7'],
- 'months' => ['iməg mbegtug', 'imeg àbùbì', 'imeg mbəŋchubi', 'iməg ngwə̀t', 'iməg fog', 'iməg ichiibɔd', 'iməg àdùmbə̀ŋ', 'iməg ichika', 'iməg kud', 'iməg tèsiʼe', 'iməg zò', 'iməg krizmed'],
- 'months_short' => ['mbegtug', 'imeg àbùbì', 'imeg mbəŋchubi', 'iməg ngwə̀t', 'iməg fog', 'iməg ichiibɔd', 'iməg àdùmbə̀ŋ', 'iməg ichika', 'iməg kud', 'iməg tèsiʼe', 'iməg zò', 'iməg krizmed'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'YYYY-MM-dd',
- 'LL' => 'YYYY MMM D',
- 'LLL' => 'YYYY MMMM D HH:mm',
- 'LLLL' => 'dddd, YYYY MMMM DD HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mhr.php b/vendor/nesbot/carbon/src/Carbon/Lang/mhr.php
deleted file mode 100644
index 6bbc9f6d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mhr.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/mhr_RU.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mhr_RU.php b/vendor/nesbot/carbon/src/Carbon/Lang/mhr_RU.php
deleted file mode 100644
index 309ead9d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mhr_RU.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - PeshSajSoft Ltd. Vyacheslav Kileev slavakileev@yandex.ru
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'YYYY.MM.DD',
- ],
- 'months' => ['Шорыкйол', 'Пургыж', 'Ӱярня', 'Вӱдшор', 'Ага', 'Пеледыш', 'Сӱрем', 'Сорла', 'Идым', 'Шыжа', 'Кылме', 'Теле'],
- 'months_short' => ['Шрк', 'Пгж', 'Ӱрн', 'Вшр', 'Ага', 'Пдш', 'Срм', 'Срл', 'Идм', 'Шыж', 'Клм', 'Тел'],
- 'weekdays' => ['Рушарня', 'Шочмо', 'Кушкыжмо', 'Вӱргече', 'Изарня', 'Кугарня', 'Шуматкече'],
- 'weekdays_short' => ['Ршр', 'Шчм', 'Кжм', 'Вгч', 'Изр', 'Кгр', 'Шмт'],
- 'weekdays_min' => ['Ршр', 'Шчм', 'Кжм', 'Вгч', 'Изр', 'Кгр', 'Шмт'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
-
- 'year' => ':count идалык',
- 'y' => ':count идалык',
- 'a_year' => ':count идалык',
-
- 'month' => ':count Тылзе',
- 'm' => ':count Тылзе',
- 'a_month' => ':count Тылзе',
-
- 'week' => ':count арня',
- 'w' => ':count арня',
- 'a_week' => ':count арня',
-
- 'day' => ':count кече',
- 'd' => ':count кече',
- 'a_day' => ':count кече',
-
- 'hour' => ':count час',
- 'h' => ':count час',
- 'a_hour' => ':count час',
-
- 'minute' => ':count минут',
- 'min' => ':count минут',
- 'a_minute' => ':count минут',
-
- 'second' => ':count кокымшан',
- 's' => ':count кокымшан',
- 'a_second' => ':count кокымшан',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mi.php b/vendor/nesbot/carbon/src/Carbon/Lang/mi.php
deleted file mode 100644
index b7f51ec2..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mi.php
+++ /dev/null
@@ -1,66 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - François B
- * - John Corrigan
- * - François B
- */
-return [
- 'year' => ':count tau',
- 'a_year' => '{1}he tau|:count tau',
- 'month' => ':count marama',
- 'a_month' => '{1}he marama|:count marama',
- 'week' => ':count wiki',
- 'a_week' => '{1}he wiki|:count wiki',
- 'day' => ':count ra',
- 'a_day' => '{1}he ra|:count ra',
- 'hour' => ':count haora',
- 'a_hour' => '{1}te haora|:count haora',
- 'minute' => ':count meneti',
- 'a_minute' => '{1}he meneti|:count meneti',
- 'second' => ':count hēkona',
- 'a_second' => '{1}te hēkona ruarua|:count hēkona',
- 'ago' => ':time i mua',
- 'from_now' => 'i roto i :time',
- 'diff_yesterday' => 'inanahi',
- 'diff_yesterday_regexp' => 'inanahi(?:\\s+i)?',
- 'diff_today' => 'i teie',
- 'diff_today_regexp' => 'i teie(?:\\s+mahana,)?(?:\\s+i)?',
- 'diff_tomorrow' => 'apopo',
- 'diff_tomorrow_regexp' => 'apopo(?:\\s+i)?',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY [i] HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY [i] HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[i teie mahana, i] LT',
- 'nextDay' => '[apopo i] LT',
- 'nextWeek' => 'dddd [i] LT',
- 'lastDay' => '[inanahi i] LT',
- 'lastWeek' => 'dddd [whakamutunga i] LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => ':numberº',
- 'months' => ['Kohi-tāte', 'Hui-tanguru', 'Poutū-te-rangi', 'Paenga-whāwhā', 'Haratua', 'Pipiri', 'Hōngoingoi', 'Here-turi-kōkā', 'Mahuru', 'Whiringa-ā-nuku', 'Whiringa-ā-rangi', 'Hakihea'],
- 'months_short' => ['Kohi', 'Hui', 'Pou', 'Pae', 'Hara', 'Pipi', 'Hōngoi', 'Here', 'Mahu', 'Whi-nu', 'Whi-ra', 'Haki'],
- 'weekdays' => ['Rātapu', 'Mane', 'Tūrei', 'Wenerei', 'Tāite', 'Paraire', 'Hātarei'],
- 'weekdays_short' => ['Ta', 'Ma', 'Tū', 'We', 'Tāi', 'Pa', 'Hā'],
- 'weekdays_min' => ['Ta', 'Ma', 'Tū', 'We', 'Tāi', 'Pa', 'Hā'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' me te '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mi_NZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/mi_NZ.php
deleted file mode 100644
index 6b964e3a..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mi_NZ.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/mi.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/miq.php b/vendor/nesbot/carbon/src/Carbon/Lang/miq.php
deleted file mode 100644
index 51e5a985..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/miq.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/miq_NI.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/miq_NI.php b/vendor/nesbot/carbon/src/Carbon/Lang/miq_NI.php
deleted file mode 100644
index 57faa318..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/miq_NI.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YY',
- ],
- 'months' => ['siakwa kati', 'kuswa kati', 'kakamuk kati', 'lî wainhka kati', 'lih mairin kati', 'lî kati', 'pastara kati', 'sikla kati', 'wîs kati', 'waupasa kati', 'yahbra kati', 'trisu kati'],
- 'months_short' => ['siakwa kati', 'kuswa kati', 'kakamuk kati', 'lî wainhka kati', 'lih mairin kati', 'lî kati', 'pastara kati', 'sikla kati', 'wîs kati', 'waupasa kati', 'yahbra kati', 'trisu kati'],
- 'weekdays' => ['sandi', 'mundi', 'tiusdi', 'wensde', 'tausde', 'praidi', 'satadi'],
- 'weekdays_short' => ['san', 'mun', 'tius', 'wens', 'taus', 'prai', 'sat'],
- 'weekdays_min' => ['san', 'mun', 'tius', 'wens', 'taus', 'prai', 'sat'],
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 7,
- 'meridiem' => ['VM', 'NM'],
-
- 'month' => ':count kati', // less reliable
- 'm' => ':count kati', // less reliable
- 'a_month' => ':count kati', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mjw.php b/vendor/nesbot/carbon/src/Carbon/Lang/mjw.php
deleted file mode 100644
index 617154cd..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mjw.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/mjw_IN.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mjw_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/mjw_IN.php
deleted file mode 100644
index 58ed0d18..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mjw_IN.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Jor Teron bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'D/M/YY',
- ],
- 'months' => ['Arkoi', 'Thangthang', 'There', 'Jangmi', 'Aru', 'Vosik', 'Jakhong', 'Paipai', 'Chiti', 'Phere', 'Phaikuni', 'Matijong'],
- 'months_short' => ['Ark', 'Thang', 'The', 'Jang', 'Aru', 'Vos', 'Jak', 'Pai', 'Chi', 'Phe', 'Phai', 'Mati'],
- 'weekdays' => ['Bhomkuru', 'Urmi', 'Durmi', 'Thelang', 'Theman', 'Bhomta', 'Bhomti'],
- 'weekdays_short' => ['Bhom', 'Ur', 'Dur', 'Tkel', 'Tkem', 'Bhta', 'Bhti'],
- 'weekdays_min' => ['Bhom', 'Ur', 'Dur', 'Tkel', 'Tkem', 'Bhta', 'Bhti'],
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mk.php b/vendor/nesbot/carbon/src/Carbon/Lang/mk.php
deleted file mode 100644
index d822de09..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mk.php
+++ /dev/null
@@ -1,116 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Sashko Todorov
- * - Josh Soref
- * - François B
- * - Serhan Apaydın
- * - Borislav Mickov
- * - JD Isaacks
- * - Tomi Atanasoski
- */
-
-use Carbon\CarbonInterface;
-
-return [
- 'year' => ':count година|:count години',
- 'a_year' => 'година|:count години',
- 'y' => ':count год.',
- 'month' => ':count месец|:count месеци',
- 'a_month' => 'месец|:count месеци',
- 'm' => ':count месец|:count месеци',
- 'week' => ':count седмица|:count седмици',
- 'a_week' => 'седмица|:count седмици',
- 'w' => ':count седмица|:count седмици',
- 'day' => ':count ден|:count дена',
- 'a_day' => 'ден|:count дена',
- 'd' => ':count ден|:count дена',
- 'hour' => ':count час|:count часа',
- 'a_hour' => 'час|:count часа',
- 'h' => ':count час|:count часа',
- 'minute' => ':count минута|:count минути',
- 'a_minute' => 'минута|:count минути',
- 'min' => ':count мин.',
- 'second' => ':count секунда|:count секунди',
- 'a_second' => 'неколку секунди|:count секунди',
- 's' => ':count сек.',
- 'ago' => 'пред :time',
- 'from_now' => 'после :time',
- 'after' => 'по :time',
- 'before' => 'пред :time',
- 'diff_now' => 'сега',
- 'diff_today' => 'Денес',
- 'diff_today_regexp' => 'Денес(?:\\s+во)?',
- 'diff_yesterday' => 'вчера',
- 'diff_yesterday_regexp' => 'Вчера(?:\\s+во)?',
- 'diff_tomorrow' => 'утре',
- 'diff_tomorrow_regexp' => 'Утре(?:\\s+во)?',
- 'formats' => [
- 'LT' => 'H:mm',
- 'LTS' => 'H:mm:ss',
- 'L' => 'D.MM.YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY H:mm',
- 'LLLL' => 'dddd, D MMMM YYYY H:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[Денес во] LT',
- 'nextDay' => '[Утре во] LT',
- 'nextWeek' => '[Во] dddd [во] LT',
- 'lastDay' => '[Вчера во] LT',
- 'lastWeek' => function (CarbonInterface $date) {
- switch ($date->dayOfWeek) {
- case 0:
- case 3:
- case 6:
- return '[Изминатата] dddd [во] LT';
- default:
- return '[Изминатиот] dddd [во] LT';
- }
- },
- 'sameElse' => 'L',
- ],
- 'ordinal' => function ($number) {
- $lastDigit = $number % 10;
- $last2Digits = $number % 100;
- if ($number === 0) {
- return $number.'-ев';
- }
- if ($last2Digits === 0) {
- return $number.'-ен';
- }
- if ($last2Digits > 10 && $last2Digits < 20) {
- return $number.'-ти';
- }
- if ($lastDigit === 1) {
- return $number.'-ви';
- }
- if ($lastDigit === 2) {
- return $number.'-ри';
- }
- if ($lastDigit === 7 || $lastDigit === 8) {
- return $number.'-ми';
- }
-
- return $number.'-ти';
- },
- 'months' => ['јануари', 'февруари', 'март', 'април', 'мај', 'јуни', 'јули', 'август', 'септември', 'октомври', 'ноември', 'декември'],
- 'months_short' => ['јан', 'фев', 'мар', 'апр', 'мај', 'јун', 'јул', 'авг', 'сеп', 'окт', 'ное', 'дек'],
- 'weekdays' => ['недела', 'понеделник', 'вторник', 'среда', 'четврток', 'петок', 'сабота'],
- 'weekdays_short' => ['нед', 'пон', 'вто', 'сре', 'чет', 'пет', 'саб'],
- 'weekdays_min' => ['нe', 'пo', 'вт', 'ср', 'че', 'пе', 'сa'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'list' => [', ', ' и '],
- 'meridiem' => ['АМ', 'ПМ'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mk_MK.php b/vendor/nesbot/carbon/src/Carbon/Lang/mk_MK.php
deleted file mode 100644
index 95e2ff9c..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mk_MK.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/mk.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ml.php b/vendor/nesbot/carbon/src/Carbon/Lang/ml.php
deleted file mode 100644
index 1abd6c44..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ml.php
+++ /dev/null
@@ -1,76 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - JD Isaacks
- */
-return [
- 'year' => ':count വർഷം',
- 'a_year' => 'ഒരു വർഷം|:count വർഷം',
- 'month' => ':count മാസം',
- 'a_month' => 'ഒരു മാസം|:count മാസം',
- 'week' => ':count ആഴ്ച',
- 'a_week' => 'ഒരാഴ്ച|:count ആഴ്ച',
- 'day' => ':count ദിവസം',
- 'a_day' => 'ഒരു ദിവസം|:count ദിവസം',
- 'hour' => ':count മണിക്കൂർ',
- 'a_hour' => 'ഒരു മണിക്കൂർ|:count മണിക്കൂർ',
- 'minute' => ':count മിനിറ്റ്',
- 'a_minute' => 'ഒരു മിനിറ്റ്|:count മിനിറ്റ്',
- 'second' => ':count സെക്കൻഡ്',
- 'a_second' => 'അൽപ നിമിഷങ്ങൾ|:count സെക്കൻഡ്',
- 'ago' => ':time മുൻപ്',
- 'from_now' => ':time കഴിഞ്ഞ്',
- 'diff_now' => 'ഇപ്പോൾ',
- 'diff_today' => 'ഇന്ന്',
- 'diff_yesterday' => 'ഇന്നലെ',
- 'diff_tomorrow' => 'നാളെ',
- 'formats' => [
- 'LT' => 'A h:mm -നു',
- 'LTS' => 'A h:mm:ss -നു',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY, A h:mm -നു',
- 'LLLL' => 'dddd, D MMMM YYYY, A h:mm -നു',
- ],
- 'calendar' => [
- 'sameDay' => '[ഇന്ന്] LT',
- 'nextDay' => '[നാളെ] LT',
- 'nextWeek' => 'dddd, LT',
- 'lastDay' => '[ഇന്നലെ] LT',
- 'lastWeek' => '[കഴിഞ്ഞ] dddd, LT',
- 'sameElse' => 'L',
- ],
- 'meridiem' => function ($hour) {
- if ($hour < 4) {
- return 'രാത്രി';
- }
- if ($hour < 12) {
- return 'രാവിലെ';
- }
- if ($hour < 17) {
- return 'ഉച്ച കഴിഞ്ഞ്';
- }
- if ($hour < 20) {
- return 'വൈകുന്നേരം';
- }
-
- return 'രാത്രി';
- },
- 'months' => ['ജനുവരി', 'ഫെബ്രുവരി', 'മാർച്ച്', 'ഏപ്രിൽ', 'മേയ്', 'ജൂൺ', 'ജൂലൈ', 'ഓഗസ്റ്റ്', 'സെപ്റ്റംബർ', 'ഒക്ടോബർ', 'നവംബർ', 'ഡിസംബർ'],
- 'months_short' => ['ജനു.', 'ഫെബ്രു.', 'മാർ.', 'ഏപ്രി.', 'മേയ്', 'ജൂൺ', 'ജൂലൈ.', 'ഓഗ.', 'സെപ്റ്റ.', 'ഒക്ടോ.', 'നവം.', 'ഡിസം.'],
- 'weekdays' => ['ഞായറാഴ്ച', 'തിങ്കളാഴ്ച', 'ചൊവ്വാഴ്ച', 'ബുധനാഴ്ച', 'വ്യാഴാഴ്ച', 'വെള്ളിയാഴ്ച', 'ശനിയാഴ്ച'],
- 'weekdays_short' => ['ഞായർ', 'തിങ്കൾ', 'ചൊവ്വ', 'ബുധൻ', 'വ്യാഴം', 'വെള്ളി', 'ശനി'],
- 'weekdays_min' => ['ഞാ', 'തി', 'ചൊ', 'ബു', 'വ്യാ', 'വെ', 'ശ'],
- 'list' => ', ',
- 'weekend' => [0, 0],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ml_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/ml_IN.php
deleted file mode 100644
index 000e7958..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ml_IN.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/ml.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mn.php b/vendor/nesbot/carbon/src/Carbon/Lang/mn.php
deleted file mode 100644
index 717d199b..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mn.php
+++ /dev/null
@@ -1,98 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Philippe Vaucher
- * - Tsutomu Kuroda
- * - tjku
- * - Max Melentiev
- * - Zolzaya Erdenebaatar
- * - Tom Hughes
- * - Akira Matsuda
- * - Christopher Dell
- * - Michael Kessler
- * - Enrique Vidal
- * - Simone Carletti
- * - Aaron Patterson
- * - Nicolás Hock Isaza
- * - Ochirkhuyag
- * - Batmandakh
- */
-return [
- 'year' => ':count жил',
- 'y' => ':count жил',
- 'month' => ':count сар',
- 'm' => ':count сар',
- 'week' => ':count долоо хоног',
- 'w' => ':count долоо хоног',
- 'day' => ':count өдөр',
- 'd' => ':count өдөр',
- 'hour' => ':count цаг',
- 'h' => ':countц',
- 'minute' => ':count минут',
- 'min' => ':countм',
- 'second' => ':count секунд',
- 's' => ':countс',
-
- 'ago' => ':timeн өмнө',
- 'year_ago' => ':count жилий',
- 'month_ago' => ':count сары',
- 'day_ago' => ':count хоногий',
- 'hour_ago' => ':count цагий',
- 'minute_ago' => ':count минуты',
- 'second_ago' => ':count секунды',
-
- 'from_now' => 'одоогоос :time',
- 'year_from_now' => ':count жилийн дараа',
- 'month_from_now' => ':count сарын дараа',
- 'day_from_now' => ':count хоногийн дараа',
- 'hour_from_now' => ':count цагийн дараа',
- 'minute_from_now' => ':count минутын дараа',
- 'second_from_now' => ':count секундын дараа',
-
- // Does it required to make translation for before, after as follows? hmm, I think we've made it with ago and from now keywords already. Anyway, I've included it just in case of undesired action...
- 'after' => ':timeн дараа',
- 'year_after' => ':count жилий',
- 'month_after' => ':count сары',
- 'day_after' => ':count хоногий',
- 'hour_after' => ':count цагий',
- 'minute_after' => ':count минуты',
- 'second_after' => ':count секунды',
-
- 'before' => ':timeн өмнө',
- 'year_before' => ':count жилий',
- 'month_before' => ':count сары',
- 'day_before' => ':count хоногий',
- 'hour_before' => ':count цагий',
- 'minute_before' => ':count минуты',
- 'second_before' => ':count секунды',
-
- 'list' => ', ',
- 'diff_now' => 'одоо',
- 'diff_yesterday' => 'өчигдөр',
- 'diff_tomorrow' => 'маргааш',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'YYYY-MM-DD',
- 'LL' => 'YYYY MMMM DD',
- 'LLL' => 'YY-MM-DD, HH:mm',
- 'LLLL' => 'YYYY MMMM DD, HH:mm',
- ],
- 'weekdays' => ['Ням', 'Даваа', 'Мягмар', 'Лхагва', 'Пүрэв', 'Баасан', 'Бямба'],
- 'weekdays_short' => ['Ня', 'Да', 'Мя', 'Лх', 'Пү', 'Ба', 'Бя'],
- 'weekdays_min' => ['Ня', 'Да', 'Мя', 'Лх', 'Пү', 'Ба', 'Бя'],
- 'months' => ['1 сар', '2 сар', '3 сар', '4 сар', '5 сар', '6 сар', '7 сар', '8 сар', '9 сар', '10 сар', '11 сар', '12 сар'],
- 'months_short' => ['1 сар', '2 сар', '3 сар', '4 сар', '5 сар', '6 сар', '7 сар', '8 сар', '9 сар', '10 сар', '11 сар', '12 сар'],
- 'meridiem' => ['өглөө', 'орой'],
- 'first_day_of_week' => 1,
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mn_MN.php b/vendor/nesbot/carbon/src/Carbon/Lang/mn_MN.php
deleted file mode 100644
index e5ce426c..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mn_MN.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/mn.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mni.php b/vendor/nesbot/carbon/src/Carbon/Lang/mni.php
deleted file mode 100644
index cafa2f87..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mni.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/mni_IN.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mni_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/mni_IN.php
deleted file mode 100644
index 45d430ef..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mni_IN.php
+++ /dev/null
@@ -1,35 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Red Hat Pune libc-alpha@sourceware.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'D/M/YY',
- ],
- 'months' => ['জানুৱারি', 'ফেব্রুৱারি', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগষ্ট', 'সেপ্তেম্বর', 'ওক্তোবর', 'নবেম্বর', 'ডিসেম্বর'],
- 'months_short' => ['জান', 'ফেব', 'মার', 'এপ্রি', 'মে', 'জুন', 'জুল', 'আগ', 'সেপ', 'ওক্ত', 'নবে', 'ডিস'],
- 'weekdays' => ['নোংমাইজিং', 'নিংথৌকাবা', 'লৈবাকপোকপা', 'য়ুমশকৈশা', 'শগোলশেন', 'ইরাই', 'থাংজ'],
- 'weekdays_short' => ['নোং', 'নিং', 'লৈবাক', 'য়ুম', 'শগোল', 'ইরা', 'থাং'],
- 'weekdays_min' => ['নোং', 'নিং', 'লৈবাক', 'য়ুম', 'শগোল', 'ইরা', 'থাং'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['এ.ম.', 'প.ম.'],
-
- 'year' => ':count ইসিং', // less reliable
- 'y' => ':count ইসিং', // less reliable
- 'a_year' => ':count ইসিং', // less reliable
-
- 'second' => ':count ꯅꯤꯡꯊꯧꯀꯥꯕ', // less reliable
- 's' => ':count ꯅꯤꯡꯊꯧꯀꯥꯕ', // less reliable
- 'a_second' => ':count ꯅꯤꯡꯊꯧꯀꯥꯕ', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mo.php b/vendor/nesbot/carbon/src/Carbon/Lang/mo.php
deleted file mode 100644
index 102afcde..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mo.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/ro.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mr.php b/vendor/nesbot/carbon/src/Carbon/Lang/mr.php
deleted file mode 100644
index 4aaeafd0..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mr.php
+++ /dev/null
@@ -1,86 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Vikram-enyota
- */
-return [
- 'year' => ':count वर्ष',
- 'y' => ':count वर्ष',
- 'month' => ':count महिना|:count महिने',
- 'm' => ':count महिना|:count महिने',
- 'week' => ':count आठवडा|:count आठवडे',
- 'w' => ':count आठवडा|:count आठवडे',
- 'day' => ':count दिवस',
- 'd' => ':count दिवस',
- 'hour' => ':count तास',
- 'h' => ':count तास',
- 'minute' => ':count मिनिटे',
- 'min' => ':count मिनिटे',
- 'second' => ':count सेकंद',
- 's' => ':count सेकंद',
-
- 'ago' => ':timeपूर्वी',
- 'from_now' => ':timeमध्ये',
- 'before' => ':timeपूर्वी',
- 'after' => ':timeनंतर',
-
- 'diff_now' => 'आत्ता',
- 'diff_today' => 'आज',
- 'diff_yesterday' => 'काल',
- 'diff_tomorrow' => 'उद्या',
-
- 'formats' => [
- 'LT' => 'A h:mm वाजता',
- 'LTS' => 'A h:mm:ss वाजता',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY, A h:mm वाजता',
- 'LLLL' => 'dddd, D MMMM YYYY, A h:mm वाजता',
- ],
-
- 'calendar' => [
- 'sameDay' => '[आज] LT',
- 'nextDay' => '[उद्या] LT',
- 'nextWeek' => 'dddd, LT',
- 'lastDay' => '[काल] LT',
- 'lastWeek' => '[मागील] dddd, LT',
- 'sameElse' => 'L',
- ],
-
- 'meridiem' => function ($hour) {
- if ($hour < 4) {
- return 'रात्री';
- }
- if ($hour < 10) {
- return 'सकाळी';
- }
- if ($hour < 17) {
- return 'दुपारी';
- }
- if ($hour < 20) {
- return 'सायंकाळी';
- }
-
- return 'रात्री';
- },
-
- 'months' => ['जानेवारी', 'फेब्रुवारी', 'मार्च', 'एप्रिल', 'मे', 'जून', 'जुलै', 'ऑगस्ट', 'सप्टेंबर', 'ऑक्टोबर', 'नोव्हेंबर', 'डिसेंबर'],
- 'months_short' => ['जाने.', 'फेब्रु.', 'मार्च.', 'एप्रि.', 'मे.', 'जून.', 'जुलै.', 'ऑग.', 'सप्टें.', 'ऑक्टो.', 'नोव्हें.', 'डिसें.'],
- 'weekdays' => ['रविवार', 'सोमवार', 'मंगळवार', 'बुधवार', 'गुरूवार', 'शुक्रवार', 'शनिवार'],
- 'weekdays_short' => ['रवि', 'सोम', 'मंगळ', 'बुध', 'गुरू', 'शुक्र', 'शनि'],
- 'weekdays_min' => ['र', 'सो', 'मं', 'बु', 'गु', 'शु', 'श'],
- 'list' => [', ', ' आणि '],
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
- 'weekend' => [0, 0],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mr_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/mr_IN.php
deleted file mode 100644
index 7bca919f..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mr_IN.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/mr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ms.php b/vendor/nesbot/carbon/src/Carbon/Lang/ms.php
deleted file mode 100644
index 36934eeb..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ms.php
+++ /dev/null
@@ -1,104 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Josh Soref
- * - Azri Jamil
- * - JD Isaacks
- * - Josh Soref
- * - Azri Jamil
- * - Hariadi Hinta
- * - Ashraf Kamarudin
- */
-return [
- 'year' => ':count tahun',
- 'a_year' => '{1}setahun|]1,Inf[:count tahun',
- 'y' => ':count tahun',
- 'month' => ':count bulan',
- 'a_month' => '{1}sebulan|]1,Inf[:count bulan',
- 'm' => ':count bulan',
- 'week' => ':count minggu',
- 'a_week' => '{1}seminggu|]1,Inf[:count minggu',
- 'w' => ':count minggu',
- 'day' => ':count hari',
- 'a_day' => '{1}sehari|]1,Inf[:count hari',
- 'd' => ':count hari',
- 'hour' => ':count jam',
- 'a_hour' => '{1}sejam|]1,Inf[:count jam',
- 'h' => ':count jam',
- 'minute' => ':count minit',
- 'a_minute' => '{1}seminit|]1,Inf[:count minit',
- 'min' => ':count minit',
- 'second' => ':count saat',
- 'a_second' => '{1}beberapa saat|]1,Inf[:count saat',
- 'millisecond' => ':count milisaat',
- 'a_millisecond' => '{1}semilisaat|]1,Inf[:count milliseconds',
- 'microsecond' => ':count mikrodetik',
- 'a_microsecond' => '{1}semikrodetik|]1,Inf[:count mikrodetik',
- 's' => ':count saat',
- 'ago' => ':time yang lepas',
- 'from_now' => ':time dari sekarang',
- 'after' => ':time kemudian',
- 'before' => ':time lepas',
- 'diff_now' => 'sekarang',
- 'diff_today' => 'Hari',
- 'diff_today_regexp' => 'Hari(?:\\s+ini)?(?:\\s+pukul)?',
- 'diff_yesterday' => 'semalam',
- 'diff_yesterday_regexp' => 'Semalam(?:\\s+pukul)?',
- 'diff_tomorrow' => 'esok',
- 'diff_tomorrow_regexp' => 'Esok(?:\\s+pukul)?',
- 'diff_before_yesterday' => 'kelmarin',
- 'diff_after_tomorrow' => 'lusa',
- 'formats' => [
- 'LT' => 'HH.mm',
- 'LTS' => 'HH.mm.ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY [pukul] HH.mm',
- 'LLLL' => 'dddd, D MMMM YYYY [pukul] HH.mm',
- ],
- 'calendar' => [
- 'sameDay' => '[Hari ini pukul] LT',
- 'nextDay' => '[Esok pukul] LT',
- 'nextWeek' => 'dddd [pukul] LT',
- 'lastDay' => '[Kelmarin pukul] LT',
- 'lastWeek' => 'dddd [lepas pukul] LT',
- 'sameElse' => 'L',
- ],
- 'meridiem' => function ($hour) {
- if ($hour < 1) {
- return 'tengah malam';
- }
-
- if ($hour < 12) {
- return 'pagi';
- }
-
- if ($hour < 13) {
- return 'tengah hari';
- }
-
- if ($hour < 19) {
- return 'petang';
- }
-
- return 'malam';
- },
- 'months' => ['Januari', 'Februari', 'Mac', 'April', 'Mei', 'Jun', 'Julai', 'Ogos', 'September', 'Oktober', 'November', 'Disember'],
- 'months_short' => ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ogs', 'Sep', 'Okt', 'Nov', 'Dis'],
- 'weekdays' => ['Ahad', 'Isnin', 'Selasa', 'Rabu', 'Khamis', 'Jumaat', 'Sabtu'],
- 'weekdays_short' => ['Ahd', 'Isn', 'Sel', 'Rab', 'Kha', 'Jum', 'Sab'],
- 'weekdays_min' => ['Ah', 'Is', 'Sl', 'Rb', 'Km', 'Jm', 'Sb'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'list' => [', ', ' dan '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ms_BN.php b/vendor/nesbot/carbon/src/Carbon/Lang/ms_BN.php
deleted file mode 100644
index ef837a2d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ms_BN.php
+++ /dev/null
@@ -1,22 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/ms.php', [
- 'formats' => [
- 'LT' => 'h:mm a',
- 'LTS' => 'h:mm:ss a',
- 'L' => 'D/MM/yy',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY, h:mm a',
- 'LLLL' => 'dd MMMM YYYY, h:mm a',
- ],
- 'meridiem' => ['a', 'p'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ms_MY.php b/vendor/nesbot/carbon/src/Carbon/Lang/ms_MY.php
deleted file mode 100644
index 970d6048..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ms_MY.php
+++ /dev/null
@@ -1,18 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Josh Soref
- * - Azri Jamil
- * - JD Isaacks
- */
-return require __DIR__.'/ms.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ms_SG.php b/vendor/nesbot/carbon/src/Carbon/Lang/ms_SG.php
deleted file mode 100644
index 77cb83d2..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ms_SG.php
+++ /dev/null
@@ -1,22 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/ms.php', [
- 'formats' => [
- 'LT' => 'h:mm a',
- 'LTS' => 'h:mm:ss a',
- 'L' => 'D/MM/yy',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY, h:mm a',
- 'LLLL' => 'dddd, D MMMM YYYY, h:mm a',
- ],
- 'meridiem' => ['a', 'p'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mt.php b/vendor/nesbot/carbon/src/Carbon/Lang/mt.php
deleted file mode 100644
index e8aadcc9..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mt.php
+++ /dev/null
@@ -1,65 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Alessandro Maruccia
- */
-return [
- 'year' => 'sena|:count sni|:count sni|:count sni',
- 'y' => 'sa sena|:count snin|:count snin|:count snin',
- 'month' => 'xahar|:count xhur|:count xhur|:count xhur',
- 'm' => ':count xahar|:count xhur|:count xhur|:count xhur',
- 'week' => 'gimgħa|:count ġimgħat|:count ġimgħat|:count ġimgħat',
- 'w' => 'ġimgħa|:count ġimgħat|:count ġimgħat|:count ġimgħat',
- 'day' => 'ġurnata|:count ġranet|:count ġranet|:count ġranet',
- 'd' => 'ġurnata|:count ġranet|:count ġranet|:count ġranet',
- 'hour' => 'siegħa|:count siegħat|:count siegħat|:count siegħat',
- 'h' => 'siegħa|:count sigħat|:count sigħat|:count sigħat',
- 'minute' => 'minuta|:count minuti|:count minuti|:count minuti',
- 'min' => 'min.|:count min.|:count min.|:count min.',
- 'second' => 'ftit sekondi|:count sekondi|:count sekondi|:count sekondi',
- 's' => 'sek.|:count sek.|:count sek.|:count sek.',
- 'ago' => ':time ilu',
- 'from_now' => 'f’ :time',
- 'diff_now' => 'issa',
- 'diff_today' => 'Illum',
- 'diff_today_regexp' => 'Illum(?:\\s+fil-)?',
- 'diff_yesterday' => 'lbieraħ',
- 'diff_yesterday_regexp' => 'Il-bieraħ(?:\\s+fil-)?',
- 'diff_tomorrow' => 'għada',
- 'diff_tomorrow_regexp' => 'Għada(?:\\s+fil-)?',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[Illum fil-]LT',
- 'nextDay' => '[Għada fil-]LT',
- 'nextWeek' => 'dddd [fil-]LT',
- 'lastDay' => '[Il-bieraħ fil-]LT',
- 'lastWeek' => 'dddd [li għadda] [fil-]LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => ':numberº',
- 'months' => ['Jannar', 'Frar', 'Marzu', 'April', 'Mejju', 'Ġunju', 'Lulju', 'Awwissu', 'Settembru', 'Ottubru', 'Novembru', 'Diċembru'],
- 'months_short' => ['Jan', 'Fra', 'Mar', 'Apr', 'Mej', 'Ġun', 'Lul', 'Aww', 'Set', 'Ott', 'Nov', 'Diċ'],
- 'weekdays' => ['Il-Ħadd', 'It-Tnejn', 'It-Tlieta', 'L-Erbgħa', 'Il-Ħamis', 'Il-Ġimgħa', 'Is-Sibt'],
- 'weekdays_short' => ['Ħad', 'Tne', 'Tli', 'Erb', 'Ħam', 'Ġim', 'Sib'],
- 'weekdays_min' => ['Ħa', 'Tn', 'Tl', 'Er', 'Ħa', 'Ġi', 'Si'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' u '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mt_MT.php b/vendor/nesbot/carbon/src/Carbon/Lang/mt_MT.php
deleted file mode 100644
index 9534f687..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mt_MT.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/mt.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mua.php b/vendor/nesbot/carbon/src/Carbon/Lang/mua.php
deleted file mode 100644
index a3a3c6fd..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mua.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['comme', 'lilli'],
- 'weekdays' => ['Com’yakke', 'Comlaaɗii', 'Comzyiiɗii', 'Comkolle', 'Comkaldǝɓlii', 'Comgaisuu', 'Comzyeɓsuu'],
- 'weekdays_short' => ['Cya', 'Cla', 'Czi', 'Cko', 'Cka', 'Cga', 'Cze'],
- 'weekdays_min' => ['Cya', 'Cla', 'Czi', 'Cko', 'Cka', 'Cga', 'Cze'],
- 'months' => ['Fĩi Loo', 'Cokcwaklaŋne', 'Cokcwaklii', 'Fĩi Marfoo', 'Madǝǝuutǝbijaŋ', 'Mamǝŋgwãafahbii', 'Mamǝŋgwãalii', 'Madǝmbii', 'Fĩi Dǝɓlii', 'Fĩi Mundaŋ', 'Fĩi Gwahlle', 'Fĩi Yuru'],
- 'months_short' => ['FLO', 'CLA', 'CKI', 'FMF', 'MAD', 'MBI', 'MLI', 'MAM', 'FDE', 'FMU', 'FGW', 'FYU'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D/M/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/my.php b/vendor/nesbot/carbon/src/Carbon/Lang/my.php
deleted file mode 100644
index bbdfba40..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/my.php
+++ /dev/null
@@ -1,70 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Josh Soref
- * - JD Isaacks
- * - Nay Lin Aung
- */
-return [
- 'year' => '{1}တစ်နှစ်|]1,Inf[:count နှစ်',
- 'y' => ':count နှစ်',
- 'month' => '{1}တစ်လ|]1,Inf[:count လ',
- 'm' => ':count လ',
- 'week' => ':count ပတ်',
- 'w' => ':count ပတ်',
- 'day' => '{1}တစ်ရက်|]1,Inf[:count ရက်',
- 'd' => ':count ရက်',
- 'hour' => '{1}တစ်နာရီ|]1,Inf[:count နာရီ',
- 'h' => ':count နာရီ',
- 'minute' => '{1}တစ်မိနစ်|]1,Inf[:count မိနစ်',
- 'min' => ':count မိနစ်',
- 'second' => '{1}စက္ကန်.အနည်းငယ်|]1,Inf[:count စက္ကန့်',
- 's' => ':count စက္ကန့်',
- 'ago' => 'လွန်ခဲ့သော :time က',
- 'from_now' => 'လာမည့် :time မှာ',
- 'after' => ':time ကြာပြီးနောက်',
- 'before' => ':time မတိုင်ခင်',
- 'diff_now' => 'အခုလေးတင်',
- 'diff_today' => 'ယနေ.',
- 'diff_yesterday' => 'မနေ့က',
- 'diff_yesterday_regexp' => 'မနေ.က',
- 'diff_tomorrow' => 'မနက်ဖြန်',
- 'diff_before_yesterday' => 'တမြန်နေ့က',
- 'diff_after_tomorrow' => 'တဘက်ခါ',
- 'period_recurrences' => ':count ကြိမ်',
- 'formats' => [
- 'LT' => 'Oh:Om A',
- 'LTS' => 'Oh:Om:Os A',
- 'L' => 'OD/OM/OY',
- 'LL' => 'OD MMMM OY',
- 'LLL' => 'OD MMMM OY Oh:Om A',
- 'LLLL' => 'dddd OD MMMM OY Oh:Om A',
- ],
- 'calendar' => [
- 'sameDay' => '[ယနေ.] LT [မှာ]',
- 'nextDay' => '[မနက်ဖြန်] LT [မှာ]',
- 'nextWeek' => 'dddd LT [မှာ]',
- 'lastDay' => '[မနေ.က] LT [မှာ]',
- 'lastWeek' => '[ပြီးခဲ့သော] dddd LT [မှာ]',
- 'sameElse' => 'L',
- ],
- 'months' => ['ဇန်နဝါရီ', 'ဖေဖော်ဝါရီ', 'မတ်', 'ဧပြီ', 'မေ', 'ဇွန်', 'ဇူလိုင်', 'သြဂုတ်', 'စက်တင်ဘာ', 'အောက်တိုဘာ', 'နိုဝင်ဘာ', 'ဒီဇင်ဘာ'],
- 'months_short' => ['ဇန်', 'ဖေ', 'မတ်', 'ပြီ', 'မေ', 'ဇွန်', 'လိုင်', 'သြ', 'စက်', 'အောက်', 'နို', 'ဒီ'],
- 'weekdays' => ['တနင်္ဂနွေ', 'တနင်္လာ', 'အင်္ဂါ', 'ဗုဒ္ဓဟူး', 'ကြာသပတေး', 'သောကြာ', 'စနေ'],
- 'weekdays_short' => ['နွေ', 'လာ', 'ဂါ', 'ဟူး', 'ကြာ', 'သော', 'နေ'],
- 'weekdays_min' => ['နွေ', 'လာ', 'ဂါ', 'ဟူး', 'ကြာ', 'သော', 'နေ'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'alt_numbers' => ['၀၀', '၀၁', '၀၂', '၀၃', '၀၄', '၀၅', '၀၆', '၀၇', '၀၈', '၀၉', '၁၀', '၁၁', '၁၂', '၁၃', '၁၄', '၁၅', '၁၆', '၁၇', '၁၈', '၁၉', '၂၀', '၂၁', '၂၂', '၂၃', '၂၄', '၂၅', '၂၆', '၂၇', '၂၈', '၂၉', '၃၀', '၃၁', '၃၂', '၃၃', '၃၄', '၃၅', '၃၆', '၃၇', '၃၈', '၃၉', '၄၀', '၄၁', '၄၂', '၄၃', '၄၄', '၄၅', '၄၆', '၄၇', '၄၈', '၄၉', '၅၀', '၅၁', '၅၂', '၅၃', '၅၄', '၅၅', '၅၆', '၅၇', '၅၈', '၅၉', '၆၀', '၆၁', '၆၂', '၆၃', '၆၄', '၆၅', '၆၆', '၆၇', '၆၈', '၆၉', '၇၀', '၇၁', '၇၂', '၇၃', '၇၄', '၇၅', '၇၆', '၇၇', '၇၈', '၇၉', '၈၀', '၈၁', '၈၂', '၈၃', '၈၄', '၈၅', '၈၆', '၈၇', '၈၈', '၈၉', '၉၀', '၉၁', '၉၂', '၉၃', '၉၄', '၉၅', '၉၆', '၉၇', '၉၈', '၉၉'],
- 'meridiem' => ['နံနက်', 'ညနေ'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/my_MM.php b/vendor/nesbot/carbon/src/Carbon/Lang/my_MM.php
deleted file mode 100644
index a0108dd4..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/my_MM.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/my.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mzn.php b/vendor/nesbot/carbon/src/Carbon/Lang/mzn.php
deleted file mode 100644
index 70f5f23c..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/mzn.php
+++ /dev/null
@@ -1,25 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/fa.php', [
- 'months' => ['ژانویه', 'فوریه', 'مارس', 'آوریل', 'مه', 'ژوئن', 'ژوئیه', 'اوت', 'سپتامبر', 'اکتبر', 'نوامبر', 'دسامبر'],
- 'months_short' => ['ژانویه', 'فوریه', 'مارس', 'آوریل', 'مه', 'ژوئن', 'ژوئیه', 'اوت', 'سپتامبر', 'اکتبر', 'نوامبر', 'دسامبر'],
- 'first_day_of_week' => 6,
- 'weekend' => [5, 5],
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'YYYY-MM-dd',
- 'LL' => 'YYYY MMM D',
- 'LLL' => 'YYYY MMMM D HH:mm',
- 'LLLL' => 'YYYY MMMM D, dddd HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nan.php b/vendor/nesbot/carbon/src/Carbon/Lang/nan.php
deleted file mode 100644
index 0affece8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/nan.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/nan_TW.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nan_TW.php b/vendor/nesbot/carbon/src/Carbon/Lang/nan_TW.php
deleted file mode 100644
index 5c50aa48..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/nan_TW.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'YYYY年MM月DD日',
- ],
- 'months' => ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
- 'months_short' => [' 1月', ' 2月', ' 3月', ' 4月', ' 5月', ' 6月', ' 7月', ' 8月', ' 9月', '10月', '11月', '12月'],
- 'weekdays' => ['禮拜日', '禮拜一', '禮拜二', '禮拜三', '禮拜四', '禮拜五', '禮拜六'],
- 'weekdays_short' => ['日', '一', '二', '三', '四', '五', '六'],
- 'weekdays_min' => ['日', '一', '二', '三', '四', '五', '六'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['頂晡', '下晡'],
-
- 'year' => ':count 年',
- 'y' => ':count 年',
- 'a_year' => ':count 年',
-
- 'month' => ':count goe̍h',
- 'm' => ':count goe̍h',
- 'a_month' => ':count goe̍h',
-
- 'week' => ':count lé-pài',
- 'w' => ':count lé-pài',
- 'a_week' => ':count lé-pài',
-
- 'day' => ':count 日',
- 'd' => ':count 日',
- 'a_day' => ':count 日',
-
- 'hour' => ':count tiám-cheng',
- 'h' => ':count tiám-cheng',
- 'a_hour' => ':count tiám-cheng',
-
- 'minute' => ':count Hun-cheng',
- 'min' => ':count Hun-cheng',
- 'a_minute' => ':count Hun-cheng',
-
- 'second' => ':count Bió',
- 's' => ':count Bió',
- 'a_second' => ':count Bió',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nan_TW@latin.php b/vendor/nesbot/carbon/src/Carbon/Lang/nan_TW@latin.php
deleted file mode 100644
index 99ca2a42..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/nan_TW@latin.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Arne Goetje arne@canonical.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'YYYY-MM-DD',
- ],
- 'months' => ['1goe̍h', '2goe̍h', '3goe̍h', '4goe̍h', '5goe̍h', '6goe̍h', '7goe̍h', '8goe̍h', '9goe̍h', '10goe̍h', '11goe̍h', '12goe̍h'],
- 'months_short' => ['1g', '2g', '3g', '4g', '5g', '6g', '7g', '8g', '9g', '10g', '11g', '12g'],
- 'weekdays' => ['lé-pài-ji̍t', 'pài-it', 'pài-jī', 'pài-saⁿ', 'pài-sì', 'pài-gō͘', 'pài-la̍k'],
- 'weekdays_short' => ['lp', 'p1', 'p2', 'p3', 'p4', 'p5', 'p6'],
- 'weekdays_min' => ['lp', 'p1', 'p2', 'p3', 'p4', 'p5', 'p6'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['téng-po͘', 'ē-po͘'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/naq.php b/vendor/nesbot/carbon/src/Carbon/Lang/naq.php
deleted file mode 100644
index fbd9be91..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/naq.php
+++ /dev/null
@@ -1,52 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['ǁgoagas', 'ǃuias'],
- 'weekdays' => ['Sontaxtsees', 'Mantaxtsees', 'Denstaxtsees', 'Wunstaxtsees', 'Dondertaxtsees', 'Fraitaxtsees', 'Satertaxtsees'],
- 'weekdays_short' => ['Son', 'Ma', 'De', 'Wu', 'Do', 'Fr', 'Sat'],
- 'weekdays_min' => ['Son', 'Ma', 'De', 'Wu', 'Do', 'Fr', 'Sat'],
- 'months' => ['ǃKhanni', 'ǃKhanǀgôab', 'ǀKhuuǁkhâb', 'ǃHôaǂkhaib', 'ǃKhaitsâb', 'Gamaǀaeb', 'ǂKhoesaob', 'Aoǁkhuumûǁkhâb', 'Taraǀkhuumûǁkhâb', 'ǂNûǁnâiseb', 'ǀHooǂgaeb', 'Hôasoreǁkhâb'],
- 'months_short' => ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'h:mm a',
- 'LTS' => 'h:mm:ss a',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY h:mm a',
- 'LLLL' => 'dddd, D MMMM YYYY h:mm a',
- ],
-
- 'year' => ':count kurigu',
- 'y' => ':count kurigu',
- 'a_year' => ':count kurigu',
-
- 'month' => ':count ǁaub', // less reliable
- 'm' => ':count ǁaub', // less reliable
- 'a_month' => ':count ǁaub', // less reliable
-
- 'week' => ':count hû', // less reliable
- 'w' => ':count hû', // less reliable
- 'a_week' => ':count hû', // less reliable
-
- 'day' => ':count ǀhobas', // less reliable
- 'd' => ':count ǀhobas', // less reliable
- 'a_day' => ':count ǀhobas', // less reliable
-
- 'hour' => ':count ǂgaes', // less reliable
- 'h' => ':count ǂgaes', // less reliable
- 'a_hour' => ':count ǂgaes', // less reliable
-
- 'minute' => ':count minutga', // less reliable
- 'min' => ':count minutga', // less reliable
- 'a_minute' => ':count minutga', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nb.php b/vendor/nesbot/carbon/src/Carbon/Lang/nb.php
deleted file mode 100644
index 371ee840..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/nb.php
+++ /dev/null
@@ -1,84 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - François B
- * - Alexander Tømmerås
- * - Sigurd Gartmann
- * - JD Isaacks
- */
-return [
- 'year' => ':count år|:count år',
- 'a_year' => 'ett år|:count år',
- 'y' => ':count år|:count år',
- 'month' => ':count måned|:count måneder',
- 'a_month' => 'en måned|:count måneder',
- 'm' => ':count md.',
- 'week' => ':count uke|:count uker',
- 'a_week' => 'en uke|:count uker',
- 'w' => ':count u.',
- 'day' => ':count dag|:count dager',
- 'a_day' => 'en dag|:count dager',
- 'd' => ':count d.',
- 'hour' => ':count time|:count timer',
- 'a_hour' => 'en time|:count timer',
- 'h' => ':count t',
- 'minute' => ':count minutt|:count minutter',
- 'a_minute' => 'ett minutt|:count minutter',
- 'min' => ':count min',
- 'second' => ':count sekund|:count sekunder',
- 'a_second' => 'noen sekunder|:count sekunder',
- 's' => ':count sek',
- 'ago' => ':time siden',
- 'from_now' => 'om :time',
- 'after' => ':time etter',
- 'before' => ':time før',
- 'diff_now' => 'akkurat nå',
- 'diff_today' => 'i dag',
- 'diff_today_regexp' => 'i dag(?:\\s+kl.)?',
- 'diff_yesterday' => 'i går',
- 'diff_yesterday_regexp' => 'i går(?:\\s+kl.)?',
- 'diff_tomorrow' => 'i morgen',
- 'diff_tomorrow_regexp' => 'i morgen(?:\\s+kl.)?',
- 'diff_before_yesterday' => 'i forgårs',
- 'diff_after_tomorrow' => 'i overmorgen',
- 'period_recurrences' => 'en gang|:count ganger',
- 'period_interval' => 'hver :interval',
- 'period_start_date' => 'fra :date',
- 'period_end_date' => 'til :date',
- 'months' => ['januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember'],
- 'months_short' => ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des'],
- 'weekdays' => ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'],
- 'weekdays_short' => ['søn', 'man', 'tir', 'ons', 'tor', 'fre', 'lør'],
- 'weekdays_min' => ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'],
- 'ordinal' => ':number.',
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'D. MMMM YYYY',
- 'LLL' => 'D. MMMM YYYY [kl.] HH:mm',
- 'LLLL' => 'dddd D. MMMM YYYY [kl.] HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[i dag kl.] LT',
- 'nextDay' => '[i morgen kl.] LT',
- 'nextWeek' => 'dddd [kl.] LT',
- 'lastDay' => '[i går kl.] LT',
- 'lastWeek' => '[forrige] dddd [kl.] LT',
- 'sameElse' => 'L',
- ],
- 'list' => [', ', ' og '],
- 'meridiem' => ['a.m.', 'p.m.'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nb_NO.php b/vendor/nesbot/carbon/src/Carbon/Lang/nb_NO.php
deleted file mode 100644
index 31678c53..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/nb_NO.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/nb.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nb_SJ.php b/vendor/nesbot/carbon/src/Carbon/Lang/nb_SJ.php
deleted file mode 100644
index ce0210bc..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/nb_SJ.php
+++ /dev/null
@@ -1,18 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/nb.php', [
- 'formats' => [
- 'LL' => 'D. MMM YYYY',
- 'LLL' => 'D. MMMM YYYY, HH:mm',
- 'LLLL' => 'dddd D. MMMM YYYY, HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nd.php b/vendor/nesbot/carbon/src/Carbon/Lang/nd.php
deleted file mode 100644
index f75d9a71..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/nd.php
+++ /dev/null
@@ -1,54 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'weekdays' => ['Sonto', 'Mvulo', 'Sibili', 'Sithathu', 'Sine', 'Sihlanu', 'Mgqibelo'],
- 'weekdays_short' => ['Son', 'Mvu', 'Sib', 'Sit', 'Sin', 'Sih', 'Mgq'],
- 'weekdays_min' => ['Son', 'Mvu', 'Sib', 'Sit', 'Sin', 'Sih', 'Mgq'],
- 'months' => ['Zibandlela', 'Nhlolanja', 'Mbimbitho', 'Mabasa', 'Nkwenkwezi', 'Nhlangula', 'Ntulikazi', 'Ncwabakazi', 'Mpandula', 'Mfumfu', 'Lwezi', 'Mpalakazi'],
- 'months_short' => ['Zib', 'Nhlo', 'Mbi', 'Mab', 'Nkw', 'Nhla', 'Ntu', 'Ncw', 'Mpan', 'Mfu', 'Lwe', 'Mpal'],
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
-
- 'year' => 'okweminyaka engu-:count', // less reliable
- 'y' => 'okweminyaka engu-:count', // less reliable
- 'a_year' => 'okweminyaka engu-:count', // less reliable
-
- 'month' => 'inyanga ezingu-:count',
- 'm' => 'inyanga ezingu-:count',
- 'a_month' => 'inyanga ezingu-:count',
-
- 'week' => 'amaviki angu-:count',
- 'w' => 'amaviki angu-:count',
- 'a_week' => 'amaviki angu-:count',
-
- 'day' => 'kwamalanga angu-:count',
- 'd' => 'kwamalanga angu-:count',
- 'a_day' => 'kwamalanga angu-:count',
-
- 'hour' => 'amahola angu-:count',
- 'h' => 'amahola angu-:count',
- 'a_hour' => 'amahola angu-:count',
-
- 'minute' => 'imizuzu engu-:count',
- 'min' => 'imizuzu engu-:count',
- 'a_minute' => 'imizuzu engu-:count',
-
- 'second' => 'imizuzwana engu-:count',
- 's' => 'imizuzwana engu-:count',
- 'a_second' => 'imizuzwana engu-:count',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nds.php b/vendor/nesbot/carbon/src/Carbon/Lang/nds.php
deleted file mode 100644
index c0b3775e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/nds.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/nds_DE.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nds_DE.php b/vendor/nesbot/carbon/src/Carbon/Lang/nds_DE.php
deleted file mode 100644
index eb6e77e6..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/nds_DE.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - information from Kenneth Christiansen Kenneth Christiansen, Pablo Saratxaga kenneth@gnu.org, pablo@mandrakesoft.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD.MM.YYYY',
- ],
- 'months' => ['Jannuaar', 'Feberwaar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'],
- 'months_short' => ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],
- 'weekdays' => ['Sünndag', 'Maandag', 'Dingsdag', 'Middeweek', 'Dunnersdag', 'Freedag', 'Sünnavend'],
- 'weekdays_short' => ['Sdag', 'Maan', 'Ding', 'Migg', 'Dunn', 'Free', 'Svd.'],
- 'weekdays_min' => ['Sdag', 'Maan', 'Ding', 'Migg', 'Dunn', 'Free', 'Svd.'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-
- 'year' => ':count Johr',
- 'y' => ':count Johr',
- 'a_year' => ':count Johr',
-
- 'month' => ':count Maand',
- 'm' => ':count Maand',
- 'a_month' => ':count Maand',
-
- 'week' => ':count Week',
- 'w' => ':count Week',
- 'a_week' => ':count Week',
-
- 'day' => ':count Dag',
- 'd' => ':count Dag',
- 'a_day' => ':count Dag',
-
- 'hour' => ':count Stünn',
- 'h' => ':count Stünn',
- 'a_hour' => ':count Stünn',
-
- 'minute' => ':count Minuut',
- 'min' => ':count Minuut',
- 'a_minute' => ':count Minuut',
-
- 'second' => ':count sekunn',
- 's' => ':count sekunn',
- 'a_second' => ':count sekunn',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nds_NL.php b/vendor/nesbot/carbon/src/Carbon/Lang/nds_NL.php
deleted file mode 100644
index de2c57bc..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/nds_NL.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - information from Kenneth Christiansen Kenneth Christiansen, Pablo Saratxaga kenneth@gnu.org, pablo@mandrakesoft.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD.MM.YYYY',
- ],
- 'months' => ['Jaunuwoa', 'Februwoa', 'Moaz', 'Aprell', 'Mai', 'Juni', 'Juli', 'August', 'Septamba', 'Oktoba', 'Nowamba', 'Dezamba'],
- 'months_short' => ['Jan', 'Feb', 'Moz', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Now', 'Dez'],
- 'weekdays' => ['Sinndag', 'Mondag', 'Dingsdag', 'Meddwäakj', 'Donnadag', 'Friedag', 'Sinnowend'],
- 'weekdays_short' => ['Sdg', 'Mdg', 'Dsg', 'Mwk', 'Ddg', 'Fdg', 'Swd'],
- 'weekdays_min' => ['Sdg', 'Mdg', 'Dsg', 'Mwk', 'Ddg', 'Fdg', 'Swd'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ne.php b/vendor/nesbot/carbon/src/Carbon/Lang/ne.php
deleted file mode 100644
index d4caf0e2..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ne.php
+++ /dev/null
@@ -1,82 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - nootanghimire
- * - Josh Soref
- * - Nj Subedi
- * - JD Isaacks
- */
-return [
- 'year' => 'एक बर्ष|:count बर्ष',
- 'y' => ':count वर्ष',
- 'month' => 'एक महिना|:count महिना',
- 'm' => ':count महिना',
- 'week' => ':count हप्ता',
- 'w' => ':count हप्ता',
- 'day' => 'एक दिन|:count दिन',
- 'd' => ':count दिन',
- 'hour' => 'एक घण्टा|:count घण्टा',
- 'h' => ':count घण्टा',
- 'minute' => 'एक मिनेट|:count मिनेट',
- 'min' => ':count मिनेट',
- 'second' => 'केही क्षण|:count सेकेण्ड',
- 's' => ':count सेकेण्ड',
- 'ago' => ':time अगाडि',
- 'from_now' => ':timeमा',
- 'after' => ':time पछि',
- 'before' => ':time अघि',
- 'diff_now' => 'अहिले',
- 'diff_today' => 'आज',
- 'diff_yesterday' => 'हिजो',
- 'diff_tomorrow' => 'भोलि',
- 'formats' => [
- 'LT' => 'Aको h:mm बजे',
- 'LTS' => 'Aको h:mm:ss बजे',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY, Aको h:mm बजे',
- 'LLLL' => 'dddd, D MMMM YYYY, Aको h:mm बजे',
- ],
- 'calendar' => [
- 'sameDay' => '[आज] LT',
- 'nextDay' => '[भोलि] LT',
- 'nextWeek' => '[आउँदो] dddd[,] LT',
- 'lastDay' => '[हिजो] LT',
- 'lastWeek' => '[गएको] dddd[,] LT',
- 'sameElse' => 'L',
- ],
- 'meridiem' => function ($hour) {
- if ($hour < 3) {
- return 'राति';
- }
- if ($hour < 12) {
- return 'बिहान';
- }
- if ($hour < 16) {
- return 'दिउँसो';
- }
- if ($hour < 20) {
- return 'साँझ';
- }
-
- return 'राति';
- },
- 'months' => ['जनवरी', 'फेब्रुवरी', 'मार्च', 'अप्रिल', 'मई', 'जुन', 'जुलाई', 'अगष्ट', 'सेप्टेम्बर', 'अक्टोबर', 'नोभेम्बर', 'डिसेम्बर'],
- 'months_short' => ['जन.', 'फेब्रु.', 'मार्च', 'अप्रि.', 'मई', 'जुन', 'जुलाई.', 'अग.', 'सेप्ट.', 'अक्टो.', 'नोभे.', 'डिसे.'],
- 'weekdays' => ['आइतबार', 'सोमबार', 'मङ्गलबार', 'बुधबार', 'बिहिबार', 'शुक्रबार', 'शनिबार'],
- 'weekdays_short' => ['आइत.', 'सोम.', 'मङ्गल.', 'बुध.', 'बिहि.', 'शुक्र.', 'शनि.'],
- 'weekdays_min' => ['आ.', 'सो.', 'मं.', 'बु.', 'बि.', 'शु.', 'श.'],
- 'list' => [', ', ' र '],
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ne_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/ne_IN.php
deleted file mode 100644
index f68d00e3..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ne_IN.php
+++ /dev/null
@@ -1,25 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/ne.php', [
- 'formats' => [
- 'LT' => 'h:mm a',
- 'LTS' => 'h:mm:ss a',
- 'L' => 'yy/M/d',
- 'LL' => 'YYYY MMM D',
- 'LLL' => 'YYYY MMMM D, h:mm a',
- 'LLLL' => 'YYYY MMMM D, dddd, h:mm a',
- ],
- 'months' => ['जनवरी', 'फेब्रुअरी', 'मार्च', 'अप्रिल', 'मे', 'जुन', 'जुलाई', 'अगस्ट', 'सेप्टेम्बर', 'अक्टोबर', 'नोभेम्बर', 'डिसेम्बर'],
- 'months_short' => ['जनवरी', 'फेब्रुअरी', 'मार्च', 'अप्रिल', 'मे', 'जुन', 'जुलाई', 'अगस्ट', 'सेप्टेम्बर', 'अक्टोबर', 'नोभेम्बर', 'डिसेम्बर'],
- 'weekend' => [0, 0],
- 'meridiem' => ['पूर्वाह्न', 'अपराह्न'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ne_NP.php b/vendor/nesbot/carbon/src/Carbon/Lang/ne_NP.php
deleted file mode 100644
index 27840c0f..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ne_NP.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/ne.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nhn.php b/vendor/nesbot/carbon/src/Carbon/Lang/nhn.php
deleted file mode 100644
index 5a858315..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/nhn.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/nhn_MX.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nhn_MX.php b/vendor/nesbot/carbon/src/Carbon/Lang/nhn_MX.php
deleted file mode 100644
index 9db88a12..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/nhn_MX.php
+++ /dev/null
@@ -1,50 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - RAP libc-alpha@sourceware.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YY',
- ],
- 'months' => ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre'],
- 'months_short' => ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'sep', 'oct', 'nov', 'dic'],
- 'weekdays' => ['teoilhuitl', 'ceilhuitl', 'omeilhuitl', 'yeilhuitl', 'nahuilhuitl', 'macuililhuitl', 'chicuaceilhuitl'],
- 'weekdays_short' => ['teo', 'cei', 'ome', 'yei', 'nau', 'mac', 'chi'],
- 'weekdays_min' => ['teo', 'cei', 'ome', 'yei', 'nau', 'mac', 'chi'],
- 'day_of_first_week_of_year' => 1,
-
- 'month' => ':count metztli', // less reliable
- 'm' => ':count metztli', // less reliable
- 'a_month' => ':count metztli', // less reliable
-
- 'week' => ':count tonalli', // less reliable
- 'w' => ':count tonalli', // less reliable
- 'a_week' => ':count tonalli', // less reliable
-
- 'day' => ':count tonatih', // less reliable
- 'd' => ':count tonatih', // less reliable
- 'a_day' => ':count tonatih', // less reliable
-
- 'minute' => ':count toltecayotl', // less reliable
- 'min' => ':count toltecayotl', // less reliable
- 'a_minute' => ':count toltecayotl', // less reliable
-
- 'second' => ':count ome', // less reliable
- 's' => ':count ome', // less reliable
- 'a_second' => ':count ome', // less reliable
-
- 'year' => ':count xihuitl',
- 'y' => ':count xihuitl',
- 'a_year' => ':count xihuitl',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/niu.php b/vendor/nesbot/carbon/src/Carbon/Lang/niu.php
deleted file mode 100644
index bd9be8aa..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/niu.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/niu_NU.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/niu_NU.php b/vendor/nesbot/carbon/src/Carbon/Lang/niu_NU.php
deleted file mode 100644
index 6e7a697b..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/niu_NU.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - RockET Systems Emani Fakaotimanava-Lui emani@niue.nu
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YY',
- ],
- 'months' => ['Ianuali', 'Fepuali', 'Masi', 'Apelila', 'Me', 'Iuni', 'Iulai', 'Aokuso', 'Sepetema', 'Oketopa', 'Novema', 'Tesemo'],
- 'months_short' => ['Ian', 'Fep', 'Mas', 'Ape', 'Me', 'Iun', 'Iul', 'Aok', 'Sep', 'Oke', 'Nov', 'Tes'],
- 'weekdays' => ['Aho Tapu', 'Aho Gofua', 'Aho Ua', 'Aho Lotu', 'Aho Tuloto', 'Aho Falaile', 'Aho Faiumu'],
- 'weekdays_short' => ['Tapu', 'Gofua', 'Ua', 'Lotu', 'Tuloto', 'Falaile', 'Faiumu'],
- 'weekdays_min' => ['Tapu', 'Gofua', 'Ua', 'Lotu', 'Tuloto', 'Falaile', 'Faiumu'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
-
- 'year' => ':count tau',
- 'y' => ':count tau',
- 'a_year' => ':count tau',
-
- 'month' => ':count mahina',
- 'm' => ':count mahina',
- 'a_month' => ':count mahina',
-
- 'week' => ':count faahi tapu',
- 'w' => ':count faahi tapu',
- 'a_week' => ':count faahi tapu',
-
- 'day' => ':count aho',
- 'd' => ':count aho',
- 'a_day' => ':count aho',
-
- 'hour' => ':count e tulā',
- 'h' => ':count e tulā',
- 'a_hour' => ':count e tulā',
-
- 'minute' => ':count minuti',
- 'min' => ':count minuti',
- 'a_minute' => ':count minuti',
-
- 'second' => ':count sekone',
- 's' => ':count sekone',
- 'a_second' => ':count sekone',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nl.php b/vendor/nesbot/carbon/src/Carbon/Lang/nl.php
deleted file mode 100644
index 2d737703..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/nl.php
+++ /dev/null
@@ -1,113 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Roy
- * - Stephan
- * - François B
- * - Tim Fish
- * - Kevin Huang
- * - Jacob Middag
- * - JD Isaacks
- * - Roy
- * - Stephan
- * - François B
- * - Tim Fish
- * - Jacob Middag
- * - JD Isaacks
- * - Propaganistas
- * - MegaXLR
- * - adriaanzon
- * - MonkeyPhysics
- * - JeroenG
- * - RikSomers
- * - proclame
- * - Rik de Groot (hwdegroot)
- */
-return [
- 'year' => ':count jaar|:count jaar',
- 'a_year' => 'een jaar|:count jaar',
- 'y' => ':countj',
- 'month' => ':count maand|:count maanden',
- 'a_month' => 'een maand|:count maanden',
- 'm' => ':countmnd',
- 'week' => ':count week|:count weken',
- 'a_week' => 'een week|:count weken',
- 'w' => ':countw',
- 'day' => ':count dag|:count dagen',
- 'a_day' => 'een dag|:count dagen',
- 'd' => ':countd',
- 'hour' => ':count uur|:count uur',
- 'a_hour' => 'een uur|:count uur',
- 'h' => ':countu',
- 'minute' => ':count minuut|:count minuten',
- 'a_minute' => 'een minuut|:count minuten',
- 'min' => ':countmin',
- 'second' => ':count seconde|:count seconden',
- 'a_second' => 'een paar seconden|:count seconden',
- 's' => ':counts',
- 'ago' => ':time geleden',
- 'from_now' => 'over :time',
- 'after' => ':time later',
- 'before' => ':time eerder',
- 'diff_now' => 'nu',
- 'diff_today' => 'vandaag',
- 'diff_today_regexp' => 'vandaag(?:\\s+om)?',
- 'diff_yesterday' => 'gisteren',
- 'diff_yesterday_regexp' => 'gisteren(?:\\s+om)?',
- 'diff_tomorrow' => 'morgen',
- 'diff_tomorrow_regexp' => 'morgen(?:\\s+om)?',
- 'diff_after_tomorrow' => 'overmorgen',
- 'diff_before_yesterday' => 'eergisteren',
- 'period_recurrences' => ':count keer',
- 'period_interval' => function (string $interval = '') {
- /** @var string $output */
- $output = preg_replace('/^(een|één|1)\s+/u', '', $interval);
-
- if (preg_match('/^(een|één|1)( jaar|j| uur|u)/u', $interval)) {
- return "elk $output";
- }
-
- return "elke $output";
- },
- 'period_start_date' => 'van :date',
- 'period_end_date' => 'tot :date',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD-MM-YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[vandaag om] LT',
- 'nextDay' => '[morgen om] LT',
- 'nextWeek' => 'dddd [om] LT',
- 'lastDay' => '[gisteren om] LT',
- 'lastWeek' => '[afgelopen] dddd [om] LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => function ($number) {
- return $number.(($number === 1 || $number === 8 || $number >= 20) ? 'ste' : 'de');
- },
- 'months' => ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'],
- 'months_short' => ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],
- 'mmm_suffix' => '.',
- 'weekdays' => ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],
- 'weekdays_short' => ['zo.', 'ma.', 'di.', 'wo.', 'do.', 'vr.', 'za.'],
- 'weekdays_min' => ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' en '],
- 'meridiem' => ['\'s ochtends', '\'s middags'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nl_AW.php b/vendor/nesbot/carbon/src/Carbon/Lang/nl_AW.php
deleted file mode 100644
index 5ec136d1..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/nl_AW.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Free Software Foundation, Inc. bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/nl.php', [
- 'formats' => [
- 'L' => 'DD-MM-YY',
- ],
- 'months' => ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'],
- 'months_short' => ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],
- 'weekdays' => ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],
- 'weekdays_short' => ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],
- 'weekdays_min' => ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nl_BE.php b/vendor/nesbot/carbon/src/Carbon/Lang/nl_BE.php
deleted file mode 100644
index 037f5b4a..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/nl_BE.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Roy
- * - Stephan
- * - François B
- * - Tim Fish
- * - Kevin Huang
- * - Jacob Middag
- * - JD Isaacks
- * - Propaganistas
- */
-return array_replace_recursive(require __DIR__.'/nl.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nl_BQ.php b/vendor/nesbot/carbon/src/Carbon/Lang/nl_BQ.php
deleted file mode 100644
index c269197b..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/nl_BQ.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/nl.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nl_CW.php b/vendor/nesbot/carbon/src/Carbon/Lang/nl_CW.php
deleted file mode 100644
index c269197b..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/nl_CW.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/nl.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nl_NL.php b/vendor/nesbot/carbon/src/Carbon/Lang/nl_NL.php
deleted file mode 100644
index 14e4853e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/nl_NL.php
+++ /dev/null
@@ -1,24 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - RAP bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/nl.php', [
- 'months' => ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'],
- 'months_short' => ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],
- 'weekdays' => ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],
- 'weekdays_short' => ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],
- 'weekdays_min' => ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nl_SR.php b/vendor/nesbot/carbon/src/Carbon/Lang/nl_SR.php
deleted file mode 100644
index c269197b..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/nl_SR.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/nl.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nl_SX.php b/vendor/nesbot/carbon/src/Carbon/Lang/nl_SX.php
deleted file mode 100644
index c269197b..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/nl_SX.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/nl.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nmg.php b/vendor/nesbot/carbon/src/Carbon/Lang/nmg.php
deleted file mode 100644
index 4d1df6e5..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/nmg.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['maná', 'kugú'],
- 'weekdays' => ['sɔ́ndɔ', 'mɔ́ndɔ', 'sɔ́ndɔ mafú mába', 'sɔ́ndɔ mafú málal', 'sɔ́ndɔ mafú mána', 'mabágá má sukul', 'sásadi'],
- 'weekdays_short' => ['sɔ́n', 'mɔ́n', 'smb', 'sml', 'smn', 'mbs', 'sas'],
- 'weekdays_min' => ['sɔ́n', 'mɔ́n', 'smb', 'sml', 'smn', 'mbs', 'sas'],
- 'months' => ['ngwɛn matáhra', 'ngwɛn ńmba', 'ngwɛn ńlal', 'ngwɛn ńna', 'ngwɛn ńtan', 'ngwɛn ńtuó', 'ngwɛn hɛmbuɛrí', 'ngwɛn lɔmbi', 'ngwɛn rɛbvuâ', 'ngwɛn wum', 'ngwɛn wum navǔr', 'krísimin'],
- 'months_short' => ['ng1', 'ng2', 'ng3', 'ng4', 'ng5', 'ng6', 'ng7', 'ng8', 'ng9', 'ng10', 'ng11', 'kris'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D/M/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nn.php b/vendor/nesbot/carbon/src/Carbon/Lang/nn.php
deleted file mode 100644
index 041f7b29..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/nn.php
+++ /dev/null
@@ -1,78 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - François B
- * - Alexander Tømmerås
- * - Øystein
- * - JD Isaacks
- * - Gaute Hvoslef Kvalnes (gaute)
- */
-return [
- 'year' => ':count år',
- 'a_year' => 'eit år|:count år',
- 'y' => ':count år',
- 'month' => ':count månad|:count månader',
- 'a_month' => 'ein månad|:count månader',
- 'm' => ':count md',
- 'week' => ':count veke|:count veker',
- 'a_week' => 'ei veke|:count veker',
- 'w' => ':countv',
- 'day' => ':count dag|:count dagar',
- 'a_day' => 'ein dag|:count dagar',
- 'd' => ':countd',
- 'hour' => ':count time|:count timar',
- 'a_hour' => 'ein time|:count timar',
- 'h' => ':countt',
- 'minute' => ':count minutt',
- 'a_minute' => 'eit minutt|:count minutt',
- 'min' => ':countm',
- 'second' => ':count sekund',
- 'a_second' => 'nokre sekund|:count sekund',
- 's' => ':counts',
- 'ago' => ':time sidan',
- 'from_now' => 'om :time',
- 'after' => ':time etter',
- 'before' => ':time før',
- 'diff_today' => 'I dag',
- 'diff_yesterday' => 'I går',
- 'diff_yesterday_regexp' => 'I går(?:\\s+klokka)?',
- 'diff_tomorrow' => 'I morgon',
- 'diff_tomorrow_regexp' => 'I morgon(?:\\s+klokka)?',
- 'diff_today_regexp' => 'I dag(?:\\s+klokka)?',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'D. MMMM YYYY',
- 'LLL' => 'D. MMMM YYYY [kl.] H:mm',
- 'LLLL' => 'dddd D. MMMM YYYY [kl.] HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[I dag klokka] LT',
- 'nextDay' => '[I morgon klokka] LT',
- 'nextWeek' => 'dddd [klokka] LT',
- 'lastDay' => '[I går klokka] LT',
- 'lastWeek' => '[Føregåande] dddd [klokka] LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => ':number.',
- 'months' => ['januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember'],
- 'months_short' => ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des'],
- 'weekdays' => ['sundag', 'måndag', 'tysdag', 'onsdag', 'torsdag', 'fredag', 'laurdag'],
- 'weekdays_short' => ['sun', 'mån', 'tys', 'ons', 'tor', 'fre', 'lau'],
- 'weekdays_min' => ['su', 'må', 'ty', 'on', 'to', 'fr', 'la'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' og '],
- 'meridiem' => ['f.m.', 'e.m.'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nn_NO.php b/vendor/nesbot/carbon/src/Carbon/Lang/nn_NO.php
deleted file mode 100644
index 8e168711..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/nn_NO.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/nn.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nnh.php b/vendor/nesbot/carbon/src/Carbon/Lang/nnh.php
deleted file mode 100644
index 007d2399..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/nnh.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['mbaʼámbaʼ', 'ncwònzém'],
- 'weekdays' => null,
- 'weekdays_short' => ['lyɛʼɛ́ sẅíŋtè', 'mvfò lyɛ̌ʼ', 'mbɔ́ɔntè mvfò lyɛ̌ʼ', 'tsètsɛ̀ɛ lyɛ̌ʼ', 'mbɔ́ɔntè tsetsɛ̀ɛ lyɛ̌ʼ', 'mvfò màga lyɛ̌ʼ', 'màga lyɛ̌ʼ'],
- 'weekdays_min' => null,
- 'months' => null,
- 'months_short' => ['saŋ tsetsɛ̀ɛ lùm', 'saŋ kàg ngwóŋ', 'saŋ lepyè shúm', 'saŋ cÿó', 'saŋ tsɛ̀ɛ cÿó', 'saŋ njÿoláʼ', 'saŋ tyɛ̀b tyɛ̀b mbʉ̀ŋ', 'saŋ mbʉ̀ŋ', 'saŋ ngwɔ̀ʼ mbÿɛ', 'saŋ tàŋa tsetsáʼ', 'saŋ mejwoŋó', 'saŋ lùm'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/yy',
- 'LL' => 'D MMM, YYYY',
- 'LLL' => '[lyɛ]̌ʼ d [na] MMMM, YYYY HH:mm',
- 'LLLL' => 'dddd , [lyɛ]̌ʼ d [na] MMMM, YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/no.php b/vendor/nesbot/carbon/src/Carbon/Lang/no.php
deleted file mode 100644
index f4497c75..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/no.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Daniel S. Billing
- * - Paul
- * - Jimmie Johansson
- * - Jens Herlevsen
- */
-return array_replace_recursive(require __DIR__.'/nb.php', [
- 'formats' => [
- 'LLL' => 'D. MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D. MMMM YYYY [kl.] HH:mm',
- ],
- 'calendar' => [
- 'nextWeek' => 'på dddd [kl.] LT',
- 'lastWeek' => '[i] dddd[s kl.] LT',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nr.php b/vendor/nesbot/carbon/src/Carbon/Lang/nr.php
deleted file mode 100644
index 1bc999f9..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/nr.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/nr_ZA.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nr_ZA.php b/vendor/nesbot/carbon/src/Carbon/Lang/nr_ZA.php
deleted file mode 100644
index f9a7be82..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/nr_ZA.php
+++ /dev/null
@@ -1,26 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Zuza Software Foundation (Translate.org.za) Dwayne Bailey dwayne@translate.org.za
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['Janabari', 'uFeberbari', 'uMatjhi', 'u-Apreli', 'Meyi', 'Juni', 'Julayi', 'Arhostosi', 'Septemba', 'Oktoba', 'Usinyikhaba', 'Disemba'],
- 'months_short' => ['Jan', 'Feb', 'Mat', 'Apr', 'Mey', 'Jun', 'Jul', 'Arh', 'Sep', 'Okt', 'Usi', 'Dis'],
- 'weekdays' => ['uSonto', 'uMvulo', 'uLesibili', 'lesithathu', 'uLesine', 'ngoLesihlanu', 'umGqibelo'],
- 'weekdays_short' => ['Son', 'Mvu', 'Bil', 'Tha', 'Ne', 'Hla', 'Gqi'],
- 'weekdays_min' => ['Son', 'Mvu', 'Bil', 'Tha', 'Ne', 'Hla', 'Gqi'],
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nso.php b/vendor/nesbot/carbon/src/Carbon/Lang/nso.php
deleted file mode 100644
index 2a6cabbf..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/nso.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/nso_ZA.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nso_ZA.php b/vendor/nesbot/carbon/src/Carbon/Lang/nso_ZA.php
deleted file mode 100644
index b08fe6dc..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/nso_ZA.php
+++ /dev/null
@@ -1,54 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Zuza Software Foundation (Translate.org.za) Dwayne Bailey dwayne@translate.org.za
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['Janaware', 'Febereware', 'Matšhe', 'Aprele', 'Mei', 'June', 'Julae', 'Agostose', 'Setemere', 'Oktobere', 'Nofemere', 'Disemere'],
- 'months_short' => ['Jan', 'Feb', 'Mat', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Set', 'Okt', 'Nof', 'Dis'],
- 'weekdays' => ['LaMorena', 'Mošupologo', 'Labobedi', 'Laboraro', 'Labone', 'Labohlano', 'Mokibelo'],
- 'weekdays_short' => ['Son', 'Moš', 'Bed', 'Rar', 'Ne', 'Hla', 'Mok'],
- 'weekdays_min' => ['Son', 'Moš', 'Bed', 'Rar', 'Ne', 'Hla', 'Mok'],
- 'day_of_first_week_of_year' => 1,
-
- 'year' => ':count ngwaga',
- 'y' => ':count ngwaga',
- 'a_year' => ':count ngwaga',
-
- 'month' => ':count Kgwedi',
- 'm' => ':count Kgwedi',
- 'a_month' => ':count Kgwedi',
-
- 'week' => ':count Beke',
- 'w' => ':count Beke',
- 'a_week' => ':count Beke',
-
- 'day' => ':count Letšatši',
- 'd' => ':count Letšatši',
- 'a_day' => ':count Letšatši',
-
- 'hour' => ':count Iri',
- 'h' => ':count Iri',
- 'a_hour' => ':count Iri',
-
- 'minute' => ':count Motsotso',
- 'min' => ':count Motsotso',
- 'a_minute' => ':count Motsotso',
-
- 'second' => ':count motsotswana',
- 's' => ':count motsotswana',
- 'a_second' => ':count motsotswana',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nus.php b/vendor/nesbot/carbon/src/Carbon/Lang/nus.php
deleted file mode 100644
index 789bc391..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/nus.php
+++ /dev/null
@@ -1,36 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['RW', 'TŊ'],
- 'weekdays' => ['Cäŋ kuɔth', 'Jiec la̱t', 'Rɛw lätni', 'Diɔ̱k lätni', 'Ŋuaan lätni', 'Dhieec lätni', 'Bäkɛl lätni'],
- 'weekdays_short' => ['Cäŋ', 'Jiec', 'Rɛw', 'Diɔ̱k', 'Ŋuaan', 'Dhieec', 'Bäkɛl'],
- 'weekdays_min' => ['Cäŋ', 'Jiec', 'Rɛw', 'Diɔ̱k', 'Ŋuaan', 'Dhieec', 'Bäkɛl'],
- 'months' => ['Tiop thar pɛt', 'Pɛt', 'Duɔ̱ɔ̱ŋ', 'Guak', 'Duät', 'Kornyoot', 'Pay yie̱tni', 'Tho̱o̱r', 'Tɛɛr', 'Laath', 'Kur', 'Tio̱p in di̱i̱t'],
- 'months_short' => ['Tiop', 'Pɛt', 'Duɔ̱ɔ̱', 'Guak', 'Duä', 'Kor', 'Pay', 'Thoo', 'Tɛɛ', 'Laa', 'Kur', 'Tid'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'h:mm a',
- 'LTS' => 'h:mm:ss a',
- 'L' => 'D/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY h:mm a',
- 'LLLL' => 'dddd D MMMM YYYY h:mm a',
- ],
-
- 'year' => ':count jiök', // less reliable
- 'y' => ':count jiök', // less reliable
- 'a_year' => ':count jiök', // less reliable
-
- 'month' => ':count pay', // less reliable
- 'm' => ':count pay', // less reliable
- 'a_month' => ':count pay', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nyn.php b/vendor/nesbot/carbon/src/Carbon/Lang/nyn.php
deleted file mode 100644
index 8660ea42..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/nyn.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'weekdays' => ['Sande', 'Orwokubanza', 'Orwakabiri', 'Orwakashatu', 'Orwakana', 'Orwakataano', 'Orwamukaaga'],
- 'weekdays_short' => ['SAN', 'ORK', 'OKB', 'OKS', 'OKN', 'OKT', 'OMK'],
- 'weekdays_min' => ['SAN', 'ORK', 'OKB', 'OKS', 'OKN', 'OKT', 'OMK'],
- 'months' => ['Okwokubanza', 'Okwakabiri', 'Okwakashatu', 'Okwakana', 'Okwakataana', 'Okwamukaaga', 'Okwamushanju', 'Okwamunaana', 'Okwamwenda', 'Okwaikumi', 'Okwaikumi na kumwe', 'Okwaikumi na ibiri'],
- 'months_short' => ['KBZ', 'KBR', 'KST', 'KKN', 'KTN', 'KMK', 'KMS', 'KMN', 'KMW', 'KKM', 'KNK', 'KNB'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/oc.php b/vendor/nesbot/carbon/src/Carbon/Lang/oc.php
deleted file mode 100644
index 89693e67..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/oc.php
+++ /dev/null
@@ -1,100 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Quentí
- */
-// @codeCoverageIgnoreStart
-use Symfony\Component\Translation\PluralizationRules;
-
-if (class_exists('Symfony\\Component\\Translation\\PluralizationRules')) {
- PluralizationRules::set(function ($number) {
- return $number == 1 ? 0 : 1;
- }, 'oc');
-}
-// @codeCoverageIgnoreEnd
-
-return [
- 'year' => ':count an|:count ans',
- 'a_year' => 'un an|:count ans',
- 'y' => ':count an|:count ans',
- 'month' => ':count mes|:count meses',
- 'a_month' => 'un mes|:count meses',
- 'm' => ':count mes|:count meses',
- 'week' => ':count setmana|:count setmanas',
- 'a_week' => 'una setmana|:count setmanas',
- 'w' => ':count setmana|:count setmanas',
- 'day' => ':count jorn|:count jorns',
- 'a_day' => 'un jorn|:count jorns',
- 'd' => ':count jorn|:count jorns',
- 'hour' => ':count ora|:count oras',
- 'a_hour' => 'una ora|:count oras',
- 'h' => ':count ora|:count oras',
- 'minute' => ':count minuta|:count minutas',
- 'a_minute' => 'una minuta|:count minutas',
- 'min' => ':count minuta|:count minutas',
- 'second' => ':count segonda|:count segondas',
- 'a_second' => 'una segonda|:count segondas',
- 's' => ':count segonda|:count segondas',
- 'ago' => 'fa :time',
- 'from_now' => 'd\'aquí :time',
- 'after' => ':time aprèp',
- 'before' => ':time abans',
- 'diff_now' => 'ara meteis',
- 'diff_today' => 'Uèi',
- 'diff_today_regexp' => 'Uèi(?:\\s+a)?',
- 'diff_yesterday' => 'ièr',
- 'diff_yesterday_regexp' => 'Ièr(?:\\s+a)?',
- 'diff_tomorrow' => 'deman',
- 'diff_tomorrow_regexp' => 'Deman(?:\\s+a)?',
- 'diff_before_yesterday' => 'ièr delà',
- 'diff_after_tomorrow' => 'deman passat',
- 'period_recurrences' => ':count còp|:count còps',
- 'period_interval' => 'cada :interval',
- 'period_start_date' => 'de :date',
- 'period_end_date' => 'fins a :date',
- 'formats' => [
- 'LT' => 'H:mm',
- 'LTS' => 'H:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM [de] YYYY',
- 'LLL' => 'D MMMM [de] YYYY [a] H:mm',
- 'LLLL' => 'dddd D MMMM [de] YYYY [a] H:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[Uèi a] LT',
- 'nextDay' => '[Deman a] LT',
- 'nextWeek' => 'dddd [a] LT',
- 'lastDay' => '[Ièr a] LT',
- 'lastWeek' => 'dddd [passat a] LT',
- 'sameElse' => 'L',
- ],
- 'months' => ['de genièr', 'de febrièr', 'de març', 'd\'abrial', 'de mai', 'de junh', 'de julhet', 'd\'agost', 'de setembre', 'd’octòbre', 'de novembre', 'de decembre'],
- 'months_standalone' => ['genièr', 'febrièr', 'març', 'abrial', 'mai', 'junh', 'julh', 'agost', 'setembre', 'octòbre', 'novembre', 'decembre'],
- 'months_short' => ['gen.', 'feb.', 'març', 'abr.', 'mai', 'junh', 'julh', 'ago.', 'sep.', 'oct.', 'nov.', 'dec.'],
- 'weekdays' => ['dimenge', 'diluns', 'dimars', 'dimècres', 'dijòus', 'divendres', 'dissabte'],
- 'weekdays_short' => ['dg', 'dl', 'dm', 'dc', 'dj', 'dv', 'ds'],
- 'weekdays_min' => ['dg', 'dl', 'dm', 'dc', 'dj', 'dv', 'ds'],
- 'ordinal' => function ($number, string $period = '') {
- $ordinal = [1 => 'èr', 2 => 'nd'][(int) $number] ?? 'en';
-
- // feminine for year, week, hour, minute, second
- if (preg_match('/^[yYwWhHgGis]$/', $period)) {
- $ordinal .= 'a';
- }
-
- return $number.$ordinal;
- },
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' e '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/oc_FR.php b/vendor/nesbot/carbon/src/Carbon/Lang/oc_FR.php
deleted file mode 100644
index 01eb5c14..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/oc_FR.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/oc.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/om.php b/vendor/nesbot/carbon/src/Carbon/Lang/om.php
deleted file mode 100644
index b8d5a0b0..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/om.php
+++ /dev/null
@@ -1,60 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Ge'ez Frontier Foundation & Sagalee Oromoo Publishing Co. Inc. locales@geez.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'dd-MMM-YYYY',
- 'LLL' => 'dd MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, MMMM D, YYYY HH:mm',
- ],
- 'months' => ['Amajjii', 'Guraandhala', 'Bitooteessa', 'Elba', 'Caamsa', 'Waxabajjii', 'Adooleessa', 'Hagayya', 'Fuulbana', 'Onkololeessa', 'Sadaasa', 'Muddee'],
- 'months_short' => ['Ama', 'Gur', 'Bit', 'Elb', 'Cam', 'Wax', 'Ado', 'Hag', 'Ful', 'Onk', 'Sad', 'Mud'],
- 'weekdays' => ['Dilbata', 'Wiixata', 'Qibxata', 'Roobii', 'Kamiisa', 'Jimaata', 'Sanbata'],
- 'weekdays_short' => ['Dil', 'Wix', 'Qib', 'Rob', 'Kam', 'Jim', 'San'],
- 'weekdays_min' => ['Dil', 'Wix', 'Qib', 'Rob', 'Kam', 'Jim', 'San'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['WD', 'WB'],
-
- 'year' => 'wggoota :count',
- 'y' => 'wggoota :count',
- 'a_year' => 'wggoota :count',
-
- 'month' => 'ji’a :count',
- 'm' => 'ji’a :count',
- 'a_month' => 'ji’a :count',
-
- 'week' => 'torban :count',
- 'w' => 'torban :count',
- 'a_week' => 'torban :count',
-
- 'day' => 'guyyaa :count',
- 'd' => 'guyyaa :count',
- 'a_day' => 'guyyaa :count',
-
- 'hour' => 'saʼaatii :count',
- 'h' => 'saʼaatii :count',
- 'a_hour' => 'saʼaatii :count',
-
- 'minute' => 'daqiiqaa :count',
- 'min' => 'daqiiqaa :count',
- 'a_minute' => 'daqiiqaa :count',
-
- 'second' => 'sekoondii :count',
- 's' => 'sekoondii :count',
- 'a_second' => 'sekoondii :count',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/om_ET.php b/vendor/nesbot/carbon/src/Carbon/Lang/om_ET.php
deleted file mode 100644
index 044760e3..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/om_ET.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/om.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/om_KE.php b/vendor/nesbot/carbon/src/Carbon/Lang/om_KE.php
deleted file mode 100644
index f5a4d1c9..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/om_KE.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/om.php', [
- 'day_of_first_week_of_year' => 0,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/or.php b/vendor/nesbot/carbon/src/Carbon/Lang/or.php
deleted file mode 100644
index 3aa71732..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/or.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/or_IN.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/or_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/or_IN.php
deleted file mode 100644
index 57a89f5d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/or_IN.php
+++ /dev/null
@@ -1,51 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - IBM AP Linux Technology Center, Yamato Software Laboratory bug-glibc@gnu.org
- */
-return [
- 'diff_now' => 'ବର୍ତ୍ତମାନ',
- 'diff_yesterday' => 'ଗତକାଲି',
- 'diff_tomorrow' => 'ଆସନ୍ତାକାଲି',
- 'formats' => [
- 'LT' => 'Oh:Om A',
- 'LTS' => 'Oh:Om:Os A',
- 'L' => 'OD-OM-OY',
- 'LL' => 'OD MMMM OY',
- 'LLL' => 'OD MMMM OY Oh:Om A',
- 'LLLL' => 'dddd OD MMMM OY Oh:Om A',
- ],
- 'months' => ['ଜାନୁଆରୀ', 'ଫେବୃଆରୀ', 'ମାର୍ଚ୍ଚ', 'ଅପ୍ରେଲ', 'ମଇ', 'ଜୁନ', 'ଜୁଲାଇ', 'ଅଗଷ୍ଟ', 'ସେପ୍ଟେମ୍ବର', 'ଅକ୍ଟୋବର', 'ନଭେମ୍ବର', 'ଡିସେମ୍ବର'],
- 'months_short' => ['ଜାନୁଆରୀ', 'ଫେବୃଆରୀ', 'ମାର୍ଚ୍ଚ', 'ଅପ୍ରେଲ', 'ମଇ', 'ଜୁନ', 'ଜୁଲାଇ', 'ଅଗଷ୍ଟ', 'ସେପ୍ଟେମ୍ବର', 'ଅକ୍ଟୋବର', 'ନଭେମ୍ବର', 'ଡିସେମ୍ବର'],
- 'weekdays' => ['ରବିବାର', 'ସୋମବାର', 'ମଙ୍ଗଳବାର', 'ବୁଧବାର', 'ଗୁରୁବାର', 'ଶୁକ୍ରବାର', 'ଶନିବାର'],
- 'weekdays_short' => ['ରବି', 'ସୋମ', 'ମଙ୍ଗଳ', 'ବୁଧ', 'ଗୁରୁ', 'ଶୁକ୍ର', 'ଶନି'],
- 'weekdays_min' => ['ରବି', 'ସୋମ', 'ମଙ୍ଗଳ', 'ବୁଧ', 'ଗୁରୁ', 'ଶୁକ୍ର', 'ଶନି'],
- 'day_of_first_week_of_year' => 1,
- 'alt_numbers' => ['୦', '୧', '୨', '୩', '୪', '୫', '୬', '୭', '୮', '୯', '୧୦', '୧୧', '୧୨', '୧୩', '୧୪', '୧୫', '୧୬', '୧୭', '୧୮', '୧୯', '୨୦', '୨୧', '୨୨', '୨୩', '୨୪', '୨୫', '୨୬', '୨୭', '୨୮', '୨୯', '୩୦', '୩୧', '୩୨', '୩୩', '୩୪', '୩୫', '୩୬', '୩୭', '୩୮', '୩୯', '୪୦', '୪୧', '୪୨', '୪୩', '୪୪', '୪୫', '୪୬', '୪୭', '୪୮', '୪୯', '୫୦', '୫୧', '୫୨', '୫୩', '୫୪', '୫୫', '୫୬', '୫୭', '୫୮', '୫୯', '୬୦', '୬୧', '୬୨', '୬୩', '୬୪', '୬୫', '୬୬', '୬୭', '୬୮', '୬୯', '୭୦', '୭୧', '୭୨', '୭୩', '୭୪', '୭୫', '୭୬', '୭୭', '୭୮', '୭୯', '୮୦', '୮୧', '୮୨', '୮୩', '୮୪', '୮୫', '୮୬', '୮୭', '୮୮', '୮୯', '୯୦', '୯୧', '୯୨', '୯୩', '୯୪', '୯୫', '୯୬', '୯୭', '୯୮', '୯୯'],
- 'year' => ':count ବର୍ଷ',
- 'y' => ':count ବ.',
- 'month' => ':count ମାସ',
- 'm' => ':count ମା.',
- 'week' => ':count ସପ୍ତାହ',
- 'w' => ':count ସପ୍ତା.',
- 'day' => ':count ଦିନ',
- 'd' => ':count ଦିନ',
- 'hour' => ':count ଘଣ୍ତ',
- 'h' => ':count ଘ.',
- 'minute' => ':count ମିନଟ',
- 'min' => ':count ମି.',
- 'second' => ':count ସେକଣ୍ଢ',
- 's' => ':count ସେ.',
- 'ago' => ':time ପୂର୍ବେ',
- 'from_now' => ':timeରେ',
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/os.php b/vendor/nesbot/carbon/src/Carbon/Lang/os.php
deleted file mode 100644
index 5f55e8a2..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/os.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/os_RU.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/os_RU.php b/vendor/nesbot/carbon/src/Carbon/Lang/os_RU.php
deleted file mode 100644
index 9592d15d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/os_RU.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD.MM.YYYY',
- ],
- 'months' => ['январы', 'февралы', 'мартъийы', 'апрелы', 'майы', 'июны', 'июлы', 'августы', 'сентябры', 'октябры', 'ноябры', 'декабры'],
- 'months_short' => ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'],
- 'weekdays' => ['Хуыцаубон', 'Къуырисæр', 'Дыццæг', 'Æртыццæг', 'Цыппæрæм', 'Майрæмбон', 'Сабат'],
- 'weekdays_short' => ['Хцб', 'Крс', 'Дцг', 'Æрт', 'Цпр', 'Мрб', 'Сбт'],
- 'weekdays_min' => ['Хцб', 'Крс', 'Дцг', 'Æрт', 'Цпр', 'Мрб', 'Сбт'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
-
- 'minute' => ':count гыццыл', // less reliable
- 'min' => ':count гыццыл', // less reliable
- 'a_minute' => ':count гыццыл', // less reliable
-
- 'second' => ':count æндæр', // less reliable
- 's' => ':count æндæр', // less reliable
- 'a_second' => ':count æндæр', // less reliable
-
- 'year' => ':count аз',
- 'y' => ':count аз',
- 'a_year' => ':count аз',
-
- 'month' => ':count мӕй',
- 'm' => ':count мӕй',
- 'a_month' => ':count мӕй',
-
- 'week' => ':count къуыри',
- 'w' => ':count къуыри',
- 'a_week' => ':count къуыри',
-
- 'day' => ':count бон',
- 'd' => ':count бон',
- 'a_day' => ':count бон',
-
- 'hour' => ':count сахат',
- 'h' => ':count сахат',
- 'a_hour' => ':count сахат',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pa.php b/vendor/nesbot/carbon/src/Carbon/Lang/pa.php
deleted file mode 100644
index 48b20331..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/pa.php
+++ /dev/null
@@ -1,76 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Philippe Vaucher
- * - Tsutomu Kuroda
- * - Punjab
- */
-return [
- 'year' => 'ਇੱਕ ਸਾਲ|:count ਸਾਲ',
- 'month' => 'ਇੱਕ ਮਹੀਨਾ|:count ਮਹੀਨੇ',
- 'week' => 'ਹਫਤਾ|:count ਹਫ਼ਤੇ',
- 'day' => 'ਇੱਕ ਦਿਨ|:count ਦਿਨ',
- 'hour' => 'ਇੱਕ ਘੰਟਾ|:count ਘੰਟੇ',
- 'minute' => 'ਇਕ ਮਿੰਟ|:count ਮਿੰਟ',
- 'second' => 'ਕੁਝ ਸਕਿੰਟ|:count ਸਕਿੰਟ',
- 'ago' => ':time ਪਹਿਲਾਂ',
- 'from_now' => ':time ਵਿੱਚ',
- 'before' => ':time ਤੋਂ ਪਹਿਲਾਂ',
- 'after' => ':time ਤੋਂ ਬਾਅਦ',
- 'diff_now' => 'ਹੁਣ',
- 'diff_today' => 'ਅਜ',
- 'diff_yesterday' => 'ਕਲ',
- 'diff_tomorrow' => 'ਕਲ',
- 'formats' => [
- 'LT' => 'A h:mm ਵਜੇ',
- 'LTS' => 'A h:mm:ss ਵਜੇ',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY, A h:mm ਵਜੇ',
- 'LLLL' => 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',
- ],
- 'calendar' => [
- 'sameDay' => '[ਅਜ] LT',
- 'nextDay' => '[ਕਲ] LT',
- 'nextWeek' => '[ਅਗਲਾ] dddd, LT',
- 'lastDay' => '[ਕਲ] LT',
- 'lastWeek' => '[ਪਿਛਲੇ] dddd, LT',
- 'sameElse' => 'L',
- ],
- 'meridiem' => function ($hour) {
- if ($hour < 4) {
- return 'ਰਾਤ';
- }
- if ($hour < 10) {
- return 'ਸਵੇਰ';
- }
- if ($hour < 17) {
- return 'ਦੁਪਹਿਰ';
- }
- if ($hour < 20) {
- return 'ਸ਼ਾਮ';
- }
-
- return 'ਰਾਤ';
- },
- 'months' => ['ਜਨਵਰੀ', 'ਫ਼ਰਵਰੀ', 'ਮਾਰਚ', 'ਅਪ੍ਰੈਲ', 'ਮਈ', 'ਜੂਨ', 'ਜੁਲਾਈ', 'ਅਗਸਤ', 'ਸਤੰਬਰ', 'ਅਕਤੂਬਰ', 'ਨਵੰਬਰ', 'ਦਸੰਬਰ'],
- 'months_short' => ['ਜਨਵਰੀ', 'ਫ਼ਰਵਰੀ', 'ਮਾਰਚ', 'ਅਪ੍ਰੈਲ', 'ਮਈ', 'ਜੂਨ', 'ਜੁਲਾਈ', 'ਅਗਸਤ', 'ਸਤੰਬਰ', 'ਅਕਤੂਬਰ', 'ਨਵੰਬਰ', 'ਦਸੰਬਰ'],
- 'weekdays' => ['ਐਤਵਾਰ', 'ਸੋਮਵਾਰ', 'ਮੰਗਲਵਾਰ', 'ਬੁਧਵਾਰ', 'ਵੀਰਵਾਰ', 'ਸ਼ੁੱਕਰਵਾਰ', 'ਸ਼ਨੀਚਰਵਾਰ'],
- 'weekdays_short' => ['ਐਤ', 'ਸੋਮ', 'ਮੰਗਲ', 'ਬੁਧ', 'ਵੀਰ', 'ਸ਼ੁਕਰ', 'ਸ਼ਨੀ'],
- 'weekdays_min' => ['ਐਤ', 'ਸੋਮ', 'ਮੰਗਲ', 'ਬੁਧ', 'ਵੀਰ', 'ਸ਼ੁਕਰ', 'ਸ਼ਨੀ'],
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
- 'list' => [', ', ' ਅਤੇ '],
- 'weekend' => [0, 0],
- 'alt_numbers' => ['੦', '੧', '੨', '੩', '੪', '੫', '੬', '੭', '੮', '੯'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pa_Arab.php b/vendor/nesbot/carbon/src/Carbon/Lang/pa_Arab.php
deleted file mode 100644
index 39b06532..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/pa_Arab.php
+++ /dev/null
@@ -1,26 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/ur.php', [
- 'weekdays' => ['اتوار', 'پیر', 'منگل', 'بُدھ', 'جمعرات', 'جمعہ', 'ہفتہ'],
- 'weekdays_short' => ['اتوار', 'پیر', 'منگل', 'بُدھ', 'جمعرات', 'جمعہ', 'ہفتہ'],
- 'weekdays_min' => ['اتوار', 'پیر', 'منگل', 'بُدھ', 'جمعرات', 'جمعہ', 'ہفتہ'],
- 'months' => ['جنوری', 'فروری', 'مارچ', 'اپریل', 'مئ', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', 'دسمبر'],
- 'months_short' => ['جنوری', 'فروری', 'مارچ', 'اپریل', 'مئ', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', 'دسمبر'],
- 'formats' => [
- 'LT' => 'h:mm a',
- 'LTS' => 'h:mm:ss a',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY h:mm a',
- 'LLLL' => 'dddd, DD MMMM YYYY h:mm a',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pa_Guru.php b/vendor/nesbot/carbon/src/Carbon/Lang/pa_Guru.php
deleted file mode 100644
index 7adff5c3..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/pa_Guru.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/pa.php', [
- 'formats' => [
- 'LT' => 'h:mm a',
- 'LTS' => 'h:mm:ss a',
- 'L' => 'D/M/yy',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY, h:mm a',
- 'LLLL' => 'dddd, D MMMM YYYY, h:mm a',
- ],
- 'months' => ['ਜਨਵਰੀ', 'ਫ਼ਰਵਰੀ', 'ਮਾਰਚ', 'ਅਪ੍ਰੈਲ', 'ਮਈ', 'ਜੂਨ', 'ਜੁਲਾਈ', 'ਅਗਸਤ', 'ਸਤੰਬਰ', 'ਅਕਤੂਬਰ', 'ਨਵੰਬਰ', 'ਦਸੰਬਰ'],
- 'months_short' => ['ਜਨ', 'ਫ਼ਰ', 'ਮਾਰਚ', 'ਅਪ੍ਰੈ', 'ਮਈ', 'ਜੂਨ', 'ਜੁਲਾ', 'ਅਗ', 'ਸਤੰ', 'ਅਕਤੂ', 'ਨਵੰ', 'ਦਸੰ'],
- 'weekdays' => ['ਐਤਵਾਰ', 'ਸੋਮਵਾਰ', 'ਮੰਗਲਵਾਰ', 'ਬੁੱਧਵਾਰ', 'ਵੀਰਵਾਰ', 'ਸ਼ੁੱਕਰਵਾਰ', 'ਸ਼ਨਿੱਚਰਵਾਰ'],
- 'weekdays_short' => ['ਐਤ', 'ਸੋਮ', 'ਮੰਗਲ', 'ਬੁੱਧ', 'ਵੀਰ', 'ਸ਼ੁੱਕਰ', 'ਸ਼ਨਿੱਚਰ'],
- 'weekdays_min' => ['ਐਤ', 'ਸੋਮ', 'ਮੰਗ', 'ਬੁੱਧ', 'ਵੀਰ', 'ਸ਼ੁੱਕ', 'ਸ਼ਨਿੱ'],
- 'weekend' => [0, 0],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pa_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/pa_IN.php
deleted file mode 100644
index ca67642a..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/pa_IN.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Guo Xiang Tan
- * - Josh Soref
- * - Ash
- * - harpreetkhalsagtbit
- */
-return require __DIR__.'/pa.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pa_PK.php b/vendor/nesbot/carbon/src/Carbon/Lang/pa_PK.php
deleted file mode 100644
index f9af11c6..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/pa_PK.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['جنوري', 'فروري', 'مارچ', 'اپريل', 'مٓی', 'جون', 'جولاي', 'اگست', 'ستمبر', 'اكتوبر', 'نومبر', 'دسمبر'],
- 'months_short' => ['جنوري', 'فروري', 'مارچ', 'اپريل', 'مٓی', 'جون', 'جولاي', 'اگست', 'ستمبر', 'اكتوبر', 'نومبر', 'دسمبر'],
- 'weekdays' => ['اتوار', 'پير', 'منگل', 'بدھ', 'جمعرات', 'جمعه', 'هفته'],
- 'weekdays_short' => ['اتوار', 'پير', 'منگل', 'بدھ', 'جمعرات', 'جمعه', 'هفته'],
- 'weekdays_min' => ['اتوار', 'پير', 'منگل', 'بدھ', 'جمعرات', 'جمعه', 'هفته'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['ص', 'ش'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pap.php b/vendor/nesbot/carbon/src/Carbon/Lang/pap.php
deleted file mode 100644
index b4c1706f..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/pap.php
+++ /dev/null
@@ -1,39 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return [
- 'formats' => [
- 'LT' => 'HH.mm',
- 'LTS' => 'HH.mm:ss',
- 'L' => 'DD-MM-YY',
- 'LL' => 'MMMM [di] DD, YYYY',
- 'LLL' => 'DD MMM HH.mm',
- 'LLLL' => 'MMMM DD, YYYY HH.mm',
- ],
- 'months' => ['yanüari', 'febrüari', 'mart', 'aprel', 'mei', 'yüni', 'yüli', 'ougùstùs', 'sèptèmber', 'oktober', 'novèmber', 'desèmber'],
- 'months_short' => ['yan', 'feb', 'mar', 'apr', 'mei', 'yün', 'yül', 'oug', 'sèp', 'okt', 'nov', 'des'],
- 'weekdays' => ['djadomingo', 'djaluna', 'djamars', 'djawebs', 'djarason', 'djabierne', 'djasabra'],
- 'weekdays_short' => ['do', 'lu', 'ma', 'we', 'ra', 'bi', 'sa'],
- 'weekdays_min' => ['do', 'lu', 'ma', 'we', 'ra', 'bi', 'sa'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'year' => ':count aña',
- 'month' => ':count luna',
- 'week' => ':count siman',
- 'day' => ':count dia',
- 'hour' => ':count ora',
- 'minute' => ':count minüt',
- 'second' => ':count sekònde',
- 'list' => [', ', ' i '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pap_AW.php b/vendor/nesbot/carbon/src/Carbon/Lang/pap_AW.php
deleted file mode 100644
index e9a48ffc..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/pap_AW.php
+++ /dev/null
@@ -1,16 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - information from native speaker Pablo Saratxaga pablo@mandrakesoft.com
- */
-return require __DIR__.'/pap.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pap_CW.php b/vendor/nesbot/carbon/src/Carbon/Lang/pap_CW.php
deleted file mode 100644
index e9a48ffc..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/pap_CW.php
+++ /dev/null
@@ -1,16 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - information from native speaker Pablo Saratxaga pablo@mandrakesoft.com
- */
-return require __DIR__.'/pap.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pl.php b/vendor/nesbot/carbon/src/Carbon/Lang/pl.php
deleted file mode 100644
index 109f3e4c..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/pl.php
+++ /dev/null
@@ -1,120 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Wacław Jacek
- * - François B
- * - Tim Fish
- * - Serhan Apaydın
- * - Massimiliano Caniparoli
- * - JD Isaacks
- * - Jakub Szwacz
- * - Jan
- * - Paul
- * - damlys
- * - Marek (marast78)
- * - Peter (UnrulyNatives)
- * - Qrzysio
- * - Jan (aso824)
- * - diverpl
- */
-
-use Carbon\CarbonInterface;
-
-return [
- 'year' => ':count rok|:count lata|:count lat',
- 'a_year' => 'rok|:count lata|:count lat',
- 'y' => ':count r|:count l|:count l',
- 'month' => ':count miesiąc|:count miesiące|:count miesięcy',
- 'a_month' => 'miesiąc|:count miesiące|:count miesięcy',
- 'm' => ':count mies.',
- 'week' => ':count tydzień|:count tygodnie|:count tygodni',
- 'a_week' => 'tydzień|:count tygodnie|:count tygodni',
- 'w' => ':count tyg.',
- 'day' => ':count dzień|:count dni|:count dni',
- 'a_day' => 'dzień|:count dni|:count dni',
- 'd' => ':count d',
- 'hour' => ':count godzina|:count godziny|:count godzin',
- 'a_hour' => 'godzina|:count godziny|:count godzin',
- 'h' => ':count godz.',
- 'minute' => ':count minuta|:count minuty|:count minut',
- 'a_minute' => 'minuta|:count minuty|:count minut',
- 'min' => ':count min',
- 'second' => ':count sekunda|:count sekundy|:count sekund',
- 'a_second' => '{1}kilka sekund|:count sekunda|:count sekundy|:count sekund',
- 's' => ':count sek.',
- 'ago' => ':time temu',
- 'from_now' => 'za :time',
- 'after' => ':time po',
- 'before' => ':time przed',
- 'diff_now' => 'przed chwilą',
- 'diff_today' => 'Dziś',
- 'diff_today_regexp' => 'Dziś(?:\\s+o)?',
- 'diff_yesterday' => 'wczoraj',
- 'diff_yesterday_regexp' => 'Wczoraj(?:\\s+o)?',
- 'diff_tomorrow' => 'jutro',
- 'diff_tomorrow_regexp' => 'Jutro(?:\\s+o)?',
- 'diff_before_yesterday' => 'przedwczoraj',
- 'diff_after_tomorrow' => 'pojutrze',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[Dziś o] LT',
- 'nextDay' => '[Jutro o] LT',
- 'nextWeek' => function (CarbonInterface $date) {
- switch ($date->dayOfWeek) {
- case 0:
- return '[W niedzielę o] LT';
- case 2:
- return '[We wtorek o] LT';
- case 3:
- return '[W środę o] LT';
- case 6:
- return '[W sobotę o] LT';
- default:
- return '[W] dddd [o] LT';
- }
- },
- 'lastDay' => '[Wczoraj o] LT',
- 'lastWeek' => function (CarbonInterface $date) {
- switch ($date->dayOfWeek) {
- case 0:
- return '[W zeszłą niedzielę o] LT';
- case 3:
- return '[W zeszłą środę o] LT';
- case 6:
- return '[W zeszłą sobotę o] LT';
- default:
- return '[W zeszły] dddd [o] LT';
- }
- },
- 'sameElse' => 'L',
- ],
- 'ordinal' => ':number.',
- 'months' => ['stycznia', 'lutego', 'marca', 'kwietnia', 'maja', 'czerwca', 'lipca', 'sierpnia', 'września', 'października', 'listopada', 'grudnia'],
- 'months_standalone' => ['styczeń', 'luty', 'marzec', 'kwiecień', 'maj', 'czerwiec', 'lipiec', 'sierpień', 'wrzesień', 'październik', 'listopad', 'grudzień'],
- 'months_short' => ['sty', 'lut', 'mar', 'kwi', 'maj', 'cze', 'lip', 'sie', 'wrz', 'paź', 'lis', 'gru'],
- 'months_regexp' => '/(DD?o?\.?(\[[^\[\]]*\]|\s)+MMMM?|L{2,4}|l{2,4})/',
- 'weekdays' => ['niedziela', 'poniedziałek', 'wtorek', 'środa', 'czwartek', 'piątek', 'sobota'],
- 'weekdays_short' => ['ndz', 'pon', 'wt', 'śr', 'czw', 'pt', 'sob'],
- 'weekdays_min' => ['Nd', 'Pn', 'Wt', 'Śr', 'Cz', 'Pt', 'So'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' i '],
- 'meridiem' => ['przed południem', 'po południu'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pl_PL.php b/vendor/nesbot/carbon/src/Carbon/Lang/pl_PL.php
deleted file mode 100644
index 222bcdb4..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/pl_PL.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/pl.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/prg.php b/vendor/nesbot/carbon/src/Carbon/Lang/prg.php
deleted file mode 100644
index 6e63f4ad..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/prg.php
+++ /dev/null
@@ -1,52 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'months' => ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'M12'],
- 'months_short' => ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'M12'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'YYYY-MM-dd',
- 'LL' => 'YYYY MMM D',
- 'LLL' => 'YYYY MMMM D HH:mm',
- 'LLLL' => 'YYYY MMMM D, dddd HH:mm',
- ],
-
- 'year' => ':count meta',
- 'y' => ':count meta',
- 'a_year' => ':count meta',
-
- 'month' => ':count mēniks', // less reliable
- 'm' => ':count mēniks', // less reliable
- 'a_month' => ':count mēniks', // less reliable
-
- 'week' => ':count sawaītin', // less reliable
- 'w' => ':count sawaītin', // less reliable
- 'a_week' => ':count sawaītin', // less reliable
-
- 'day' => ':count di',
- 'd' => ':count di',
- 'a_day' => ':count di',
-
- 'hour' => ':count bruktēt', // less reliable
- 'h' => ':count bruktēt', // less reliable
- 'a_hour' => ':count bruktēt', // less reliable
-
- 'minute' => ':count līkuts', // less reliable
- 'min' => ':count līkuts', // less reliable
- 'a_minute' => ':count līkuts', // less reliable
-
- 'second' => ':count kitan', // less reliable
- 's' => ':count kitan', // less reliable
- 'a_second' => ':count kitan', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ps.php b/vendor/nesbot/carbon/src/Carbon/Lang/ps.php
deleted file mode 100644
index a928b28e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ps.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Muhammad Nasir Rahimi
- * - Nassim Nasibullah (spinzar)
- */
-return [
- 'year' => ':count کال|:count کاله',
- 'y' => ':countکال|:countکاله',
- 'month' => ':count مياشت|:count مياشتي',
- 'm' => ':countمياشت|:countمياشتي',
- 'week' => ':count اونۍ|:count اونۍ',
- 'w' => ':countاونۍ|:countاونۍ',
- 'day' => ':count ورځ|:count ورځي',
- 'd' => ':countورځ|:countورځي',
- 'hour' => ':count ساعت|:count ساعته',
- 'h' => ':countساعت|:countساعته',
- 'minute' => ':count دقيقه|:count دقيقې',
- 'min' => ':countدقيقه|:countدقيقې',
- 'second' => ':count ثانيه|:count ثانيې',
- 's' => ':countثانيه|:countثانيې',
- 'ago' => ':time دمخه',
- 'from_now' => ':time له اوس څخه',
- 'after' => ':time وروسته',
- 'before' => ':time دمخه',
- 'list' => ['، ', ' او '],
- 'meridiem' => ['غ.م.', 'غ.و.'],
- 'weekdays' => ['اتوار', 'ګل', 'نهه', 'شورو', 'زيارت', 'جمعه', 'خالي'],
- 'weekdays_short' => ['ا', 'ګ', 'ن', 'ش', 'ز', 'ج', 'خ'],
- 'weekdays_min' => ['ا', 'ګ', 'ن', 'ش', 'ز', 'ج', 'خ'],
- 'months' => ['جنوري', 'فبروري', 'مارچ', 'اپریل', 'مۍ', 'جون', 'جولای', 'اگست', 'سېپتمبر', 'اکتوبر', 'نومبر', 'دسمبر'],
- 'months_short' => ['جنوري', 'فبروري', 'مارچ', 'اپریل', 'مۍ', 'جون', 'جولای', 'اگست', 'سېپتمبر', 'اکتوبر', 'نومبر', 'دسمبر'],
- 'months_standalone' => ['جنوري', 'فېبروري', 'مارچ', 'اپریل', 'مۍ', 'جون', 'جولای', 'اگست', 'سپتمبر', 'اکتوبر', 'نومبر', 'دسمبر'],
- 'months_short_standalone' => ['جنوري', 'فبروري', 'مارچ', 'اپریل', 'مۍ', 'جون', 'جولای', 'اگست', 'سپتمبر', 'اکتوبر', 'نومبر', 'دسمبر'],
- 'first_day_of_week' => 6,
- 'weekend' => [4, 5],
- 'formats' => [
- 'LT' => 'H:mm',
- 'LTS' => 'H:mm:ss',
- 'L' => 'YYYY/M/d',
- 'LL' => 'YYYY MMM D',
- 'LLL' => 'د YYYY د MMMM D H:mm',
- 'LLLL' => 'dddd د YYYY د MMMM D H:mm',
- ],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ps_AF.php b/vendor/nesbot/carbon/src/Carbon/Lang/ps_AF.php
deleted file mode 100644
index 6ec51804..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ps_AF.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/ps.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pt.php b/vendor/nesbot/carbon/src/Carbon/Lang/pt.php
deleted file mode 100644
index 0af89499..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/pt.php
+++ /dev/null
@@ -1,107 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Cassiano Montanari
- * - Matt Pope
- * - François B
- * - Prodis
- * - JD Isaacks
- * - Raphael Amorim
- * - João Magalhães
- * - victortobias
- * - Paulo Freitas
- * - Sebastian Thierer
- * - Claudson Martins (claudsonm)
- */
-
-use Carbon\CarbonInterface;
-
-return [
- 'year' => ':count ano|:count anos',
- 'a_year' => 'um ano|:count anos',
- 'y' => ':counta',
- 'month' => ':count mês|:count meses',
- 'a_month' => 'um mês|:count meses',
- 'm' => ':countm',
- 'week' => ':count semana|:count semanas',
- 'a_week' => 'uma semana|:count semanas',
- 'w' => ':countsem',
- 'day' => ':count dia|:count dias',
- 'a_day' => 'um dia|:count dias',
- 'd' => ':countd',
- 'hour' => ':count hora|:count horas',
- 'a_hour' => 'uma hora|:count horas',
- 'h' => ':counth',
- 'minute' => ':count minuto|:count minutos',
- 'a_minute' => 'um minuto|:count minutos',
- 'min' => ':countmin',
- 'second' => ':count segundo|:count segundos',
- 'a_second' => 'alguns segundos|:count segundos',
- 's' => ':counts',
- 'millisecond' => ':count milissegundo|:count milissegundos',
- 'a_millisecond' => 'um milissegundo|:count milissegundos',
- 'ms' => ':countms',
- 'microsecond' => ':count microssegundo|:count microssegundos',
- 'a_microsecond' => 'um microssegundo|:count microssegundos',
- 'µs' => ':countµs',
- 'ago' => 'há :time',
- 'from_now' => 'em :time',
- 'after' => ':time depois',
- 'before' => ':time antes',
- 'diff_now' => 'agora',
- 'diff_today' => 'Hoje',
- 'diff_today_regexp' => 'Hoje(?:\\s+às)?',
- 'diff_yesterday' => 'ontem',
- 'diff_yesterday_regexp' => 'Ontem(?:\\s+às)?',
- 'diff_tomorrow' => 'amanhã',
- 'diff_tomorrow_regexp' => 'Amanhã(?:\\s+às)?',
- 'diff_before_yesterday' => 'anteontem',
- 'diff_after_tomorrow' => 'depois de amanhã',
- 'period_recurrences' => 'uma vez|:count vezes',
- 'period_interval' => 'cada :interval',
- 'period_start_date' => 'de :date',
- 'period_end_date' => 'até :date',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D [de] MMMM [de] YYYY',
- 'LLL' => 'D [de] MMMM [de] YYYY HH:mm',
- 'LLLL' => 'dddd, D [de] MMMM [de] YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[Hoje às] LT',
- 'nextDay' => '[Amanhã às] LT',
- 'nextWeek' => 'dddd [às] LT',
- 'lastDay' => '[Ontem às] LT',
- 'lastWeek' => function (CarbonInterface $date) {
- switch ($date->dayOfWeek) {
- case 0:
- case 6:
- return '[Último] dddd [às] LT';
- default:
- return '[Última] dddd [às] LT';
- }
- },
- 'sameElse' => 'L',
- ],
- 'ordinal' => ':numberº',
- 'months' => ['janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', 'outubro', 'novembro', 'dezembro'],
- 'months_short' => ['jan', 'fev', 'mar', 'abr', 'mai', 'jun', 'jul', 'ago', 'set', 'out', 'nov', 'dez'],
- 'weekdays' => ['domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', 'sábado'],
- 'weekdays_short' => ['dom', 'seg', 'ter', 'qua', 'qui', 'sex', 'sáb'],
- 'weekdays_min' => ['Do', '2ª', '3ª', '4ª', '5ª', '6ª', 'Sá'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' e '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pt_AO.php b/vendor/nesbot/carbon/src/Carbon/Lang/pt_AO.php
deleted file mode 100644
index 22c01ec5..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/pt_AO.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/pt.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pt_BR.php b/vendor/nesbot/carbon/src/Carbon/Lang/pt_BR.php
deleted file mode 100644
index e917c5cd..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/pt_BR.php
+++ /dev/null
@@ -1,39 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Cassiano Montanari
- * - Eduardo Dalla Vecchia
- * - David Rodrigues
- * - Matt Pope
- * - François B
- * - Prodis
- * - Marlon Maxwel
- * - JD Isaacks
- * - Raphael Amorim
- * - Rafael Raupp
- * - felipeleite1
- * - swalker
- * - Lucas Macedo
- * - Paulo Freitas
- * - Sebastian Thierer
- */
-return array_replace_recursive(require __DIR__.'/pt.php', [
- 'period_recurrences' => 'uma|:count vez',
- 'period_interval' => 'toda :interval',
- 'formats' => [
- 'LLL' => 'D [de] MMMM [de] YYYY [às] HH:mm',
- 'LLLL' => 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',
- ],
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pt_CH.php b/vendor/nesbot/carbon/src/Carbon/Lang/pt_CH.php
deleted file mode 100644
index 22c01ec5..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/pt_CH.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/pt.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pt_CV.php b/vendor/nesbot/carbon/src/Carbon/Lang/pt_CV.php
deleted file mode 100644
index 22c01ec5..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/pt_CV.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/pt.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pt_GQ.php b/vendor/nesbot/carbon/src/Carbon/Lang/pt_GQ.php
deleted file mode 100644
index 22c01ec5..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/pt_GQ.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/pt.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pt_GW.php b/vendor/nesbot/carbon/src/Carbon/Lang/pt_GW.php
deleted file mode 100644
index 22c01ec5..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/pt_GW.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/pt.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pt_LU.php b/vendor/nesbot/carbon/src/Carbon/Lang/pt_LU.php
deleted file mode 100644
index 22c01ec5..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/pt_LU.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/pt.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pt_MO.php b/vendor/nesbot/carbon/src/Carbon/Lang/pt_MO.php
deleted file mode 100644
index f2b5eab7..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/pt_MO.php
+++ /dev/null
@@ -1,20 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/pt.php', [
- 'formats' => [
- 'LT' => 'h:mm a',
- 'LTS' => 'h:mm:ss a',
- 'LLL' => 'D [de] MMMM [de] YYYY, h:mm a',
- 'LLLL' => 'dddd, D [de] MMMM [de] YYYY, h:mm a',
- ],
- 'first_day_of_week' => 0,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pt_MZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/pt_MZ.php
deleted file mode 100644
index fbc0c97b..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/pt_MZ.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/pt.php', [
- 'first_day_of_week' => 0,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pt_PT.php b/vendor/nesbot/carbon/src/Carbon/Lang/pt_PT.php
deleted file mode 100644
index 2a76fc1f..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/pt_PT.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - RAP bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/pt.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', 'outubro', 'novembro', 'dezembro'],
- 'months_short' => ['jan', 'fev', 'mar', 'abr', 'mai', 'jun', 'jul', 'ago', 'set', 'out', 'nov', 'dez'],
- 'weekdays' => ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'],
- 'weekdays_short' => ['dom', 'seg', 'ter', 'qua', 'qui', 'sex', 'sáb'],
- 'weekdays_min' => ['dom', 'seg', 'ter', 'qua', 'qui', 'sex', 'sáb'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pt_ST.php b/vendor/nesbot/carbon/src/Carbon/Lang/pt_ST.php
deleted file mode 100644
index 22c01ec5..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/pt_ST.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/pt.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pt_TL.php b/vendor/nesbot/carbon/src/Carbon/Lang/pt_TL.php
deleted file mode 100644
index 22c01ec5..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/pt_TL.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/pt.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/qu.php b/vendor/nesbot/carbon/src/Carbon/Lang/qu.php
deleted file mode 100644
index 65278cd1..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/qu.php
+++ /dev/null
@@ -1,22 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/es_UY.php', [
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM, YYYY HH:mm',
- ],
- 'first_day_of_week' => 0,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/qu_BO.php b/vendor/nesbot/carbon/src/Carbon/Lang/qu_BO.php
deleted file mode 100644
index d5db6bf5..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/qu_BO.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/qu.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/qu_EC.php b/vendor/nesbot/carbon/src/Carbon/Lang/qu_EC.php
deleted file mode 100644
index d5db6bf5..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/qu_EC.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/qu.php', [
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/quz.php b/vendor/nesbot/carbon/src/Carbon/Lang/quz.php
deleted file mode 100644
index 1640c02f..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/quz.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/quz_PE.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/quz_PE.php b/vendor/nesbot/carbon/src/Carbon/Lang/quz_PE.php
deleted file mode 100644
index d3229189..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/quz_PE.php
+++ /dev/null
@@ -1,54 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Sugar Labs // OLPC sugarlabs.org libc-alpha@sourceware.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YY',
- ],
- 'months' => ['iniru', 'phiwriru', 'marsu', 'awril', 'mayu', 'huniyu', 'huliyu', 'agustu', 'siptiyimri', 'uktuwri', 'nuwiyimri', 'tisiyimri'],
- 'months_short' => ['ini', 'phi', 'mar', 'awr', 'may', 'hun', 'hul', 'agu', 'sip', 'ukt', 'nuw', 'tis'],
- 'weekdays' => ['tuminku', 'lunis', 'martis', 'miyirkulis', 'juywis', 'wiyirnis', 'sawatu'],
- 'weekdays_short' => ['tum', 'lun', 'mar', 'miy', 'juy', 'wiy', 'saw'],
- 'weekdays_min' => ['tum', 'lun', 'mar', 'miy', 'juy', 'wiy', 'saw'],
- 'day_of_first_week_of_year' => 1,
-
- 'minute' => ':count uchuy', // less reliable
- 'min' => ':count uchuy', // less reliable
- 'a_minute' => ':count uchuy', // less reliable
-
- 'year' => ':count wata',
- 'y' => ':count wata',
- 'a_year' => ':count wata',
-
- 'month' => ':count killa',
- 'm' => ':count killa',
- 'a_month' => ':count killa',
-
- 'week' => ':count simana',
- 'w' => ':count simana',
- 'a_week' => ':count simana',
-
- 'day' => ':count pʼunchaw',
- 'd' => ':count pʼunchaw',
- 'a_day' => ':count pʼunchaw',
-
- 'hour' => ':count ura',
- 'h' => ':count ura',
- 'a_hour' => ':count ura',
-
- 'second' => ':count iskay ñiqin',
- 's' => ':count iskay ñiqin',
- 'a_second' => ':count iskay ñiqin',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/raj.php b/vendor/nesbot/carbon/src/Carbon/Lang/raj.php
deleted file mode 100644
index 26138c9b..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/raj.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/raj_IN.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/raj_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/raj_IN.php
deleted file mode 100644
index 7b4589cd..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/raj_IN.php
+++ /dev/null
@@ -1,47 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - meghrajsuthar03@gmail.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'D/M/YY',
- ],
- 'months' => ['जनवरी', 'फरवरी', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितंबर', 'अक्टूबर', 'नवंबर', 'दिसंबर'],
- 'months_short' => ['जन', 'फर', 'मार्च', 'अप्रै', 'मई', 'जून', 'जुल', 'अग', 'सित', 'अक्टू', 'नव', 'दिस'],
- 'weekdays' => ['रविवार', 'सोमवार', 'मंगल्लवार', 'बुधवार', 'बृहस्पतिवार', 'शुक्रवार', 'शनिवार'],
- 'weekdays_short' => ['रवि', 'सोम', 'मंगल', 'बुध', 'बृहस्पति', 'शुक्र', 'शनि'],
- 'weekdays_min' => ['रवि', 'सोम', 'मंगल', 'बुध', 'बृहस्पति', 'शुक्र', 'शनि'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['पूर्वाह्न', 'अपराह्न'],
-
- 'year' => ':count आंहू', // less reliable
- 'y' => ':count आंहू', // less reliable
- 'a_year' => ':count आंहू', // less reliable
-
- 'month' => ':count सूरज', // less reliable
- 'm' => ':count सूरज', // less reliable
- 'a_month' => ':count सूरज', // less reliable
-
- 'week' => ':count निवाज', // less reliable
- 'w' => ':count निवाज', // less reliable
- 'a_week' => ':count निवाज', // less reliable
-
- 'day' => ':count अेक', // less reliable
- 'd' => ':count अेक', // less reliable
- 'a_day' => ':count अेक', // less reliable
-
- 'hour' => ':count दुनियांण', // less reliable
- 'h' => ':count दुनियांण', // less reliable
- 'a_hour' => ':count दुनियांण', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/rm.php b/vendor/nesbot/carbon/src/Carbon/Lang/rm.php
deleted file mode 100644
index 1843f456..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/rm.php
+++ /dev/null
@@ -1,51 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Philippe Vaucher
- * - tjku
- * - Max Melentiev
- * - Juanito Fatas
- * - Tsutomu Kuroda
- * - Akira Matsuda
- * - Christopher Dell
- * - Enrique Vidal
- * - Simone Carletti
- * - Aaron Patterson
- * - Nicolás Hock Isaza
- * - sebastian de castelberg
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'Do MMMM YYYY',
- 'LLL' => 'Do MMMM, HH:mm [Uhr]',
- 'LLLL' => 'dddd, Do MMMM YYYY, HH:mm [Uhr]',
- ],
- 'year' => ':count onn|:count onns',
- 'month' => ':count mais',
- 'week' => ':count emna|:count emnas',
- 'day' => ':count di|:count dis',
- 'hour' => ':count oura|:count ouras',
- 'minute' => ':count minuta|:count minutas',
- 'second' => ':count secunda|:count secundas',
- 'weekdays' => ['dumengia', 'glindesdi', 'mardi', 'mesemna', 'gievgia', 'venderdi', 'sonda'],
- 'weekdays_short' => ['du', 'gli', 'ma', 'me', 'gie', 've', 'so'],
- 'weekdays_min' => ['du', 'gli', 'ma', 'me', 'gie', 've', 'so'],
- 'months' => ['schaner', 'favrer', 'mars', 'avrigl', 'matg', 'zercladur', 'fanadur', 'avust', 'settember', 'october', 'november', 'december'],
- 'months_short' => ['schan', 'favr', 'mars', 'avr', 'matg', 'zercl', 'fan', 'avust', 'sett', 'oct', 'nov', 'dec'],
- 'meridiem' => ['avantmezdi', 'suentermezdi'],
- 'list' => [', ', ' e '],
- 'first_day_of_week' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/rn.php b/vendor/nesbot/carbon/src/Carbon/Lang/rn.php
deleted file mode 100644
index 8ab958eb..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/rn.php
+++ /dev/null
@@ -1,56 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['Z.MU.', 'Z.MW.'],
- 'weekdays' => ['Ku w’indwi', 'Ku wa mbere', 'Ku wa kabiri', 'Ku wa gatatu', 'Ku wa kane', 'Ku wa gatanu', 'Ku wa gatandatu'],
- 'weekdays_short' => ['cu.', 'mbe.', 'kab.', 'gtu.', 'kan.', 'gnu.', 'gnd.'],
- 'weekdays_min' => ['cu.', 'mbe.', 'kab.', 'gtu.', 'kan.', 'gnu.', 'gnd.'],
- 'months' => ['Nzero', 'Ruhuhuma', 'Ntwarante', 'Ndamukiza', 'Rusama', 'Ruheshi', 'Mukakaro', 'Nyandagaro', 'Nyakanga', 'Gitugutu', 'Munyonyo', 'Kigarama'],
- 'months_short' => ['Mut.', 'Gas.', 'Wer.', 'Mat.', 'Gic.', 'Kam.', 'Nya.', 'Kan.', 'Nze.', 'Ukw.', 'Ugu.', 'Uku.'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D/M/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
-
- 'year' => 'imyaka :count',
- 'y' => 'imyaka :count',
- 'a_year' => 'imyaka :count',
-
- 'month' => 'amezi :count',
- 'm' => 'amezi :count',
- 'a_month' => 'amezi :count',
-
- 'week' => 'indwi :count',
- 'w' => 'indwi :count',
- 'a_week' => 'indwi :count',
-
- 'day' => 'imisi :count',
- 'd' => 'imisi :count',
- 'a_day' => 'imisi :count',
-
- 'hour' => 'amasaha :count',
- 'h' => 'amasaha :count',
- 'a_hour' => 'amasaha :count',
-
- 'minute' => 'iminuta :count',
- 'min' => 'iminuta :count',
- 'a_minute' => 'iminuta :count',
-
- 'second' => 'inguvu :count', // less reliable
- 's' => 'inguvu :count', // less reliable
- 'a_second' => 'inguvu :count', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ro.php b/vendor/nesbot/carbon/src/Carbon/Lang/ro.php
deleted file mode 100644
index 868a3279..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ro.php
+++ /dev/null
@@ -1,77 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Josh Soref
- * - JD Isaacks
- * - Cătălin Georgescu
- * - Valentin Ivaşcu (oriceon)
- */
-return [
- 'year' => ':count an|:count ani|:count ani',
- 'a_year' => 'un an|:count ani|:count ani',
- 'y' => ':count a.',
- 'month' => ':count lună|:count luni|:count luni',
- 'a_month' => 'o lună|:count luni|:count luni',
- 'm' => ':count l.',
- 'week' => ':count săptămână|:count săptămâni|:count săptămâni',
- 'a_week' => 'o săptămână|:count săptămâni|:count săptămâni',
- 'w' => ':count săp.',
- 'day' => ':count zi|:count zile|:count zile',
- 'a_day' => 'o zi|:count zile|:count zile',
- 'd' => ':count z.',
- 'hour' => ':count oră|:count ore|:count ore',
- 'a_hour' => 'o oră|:count ore|:count ore',
- 'h' => ':count o.',
- 'minute' => ':count minut|:count minute|:count minute',
- 'a_minute' => 'un minut|:count minute|:count minute',
- 'min' => ':count m.',
- 'second' => ':count secundă|:count secunde|:count secunde',
- 'a_second' => 'câteva secunde|:count secunde|:count secunde',
- 's' => ':count sec.',
- 'ago' => ':time în urmă',
- 'from_now' => 'peste :time',
- 'after' => 'peste :time',
- 'before' => 'acum :time',
- 'diff_now' => 'acum',
- 'diff_today' => 'azi',
- 'diff_today_regexp' => 'azi(?:\\s+la)?',
- 'diff_yesterday' => 'ieri',
- 'diff_yesterday_regexp' => 'ieri(?:\\s+la)?',
- 'diff_tomorrow' => 'mâine',
- 'diff_tomorrow_regexp' => 'mâine(?:\\s+la)?',
- 'formats' => [
- 'LT' => 'H:mm',
- 'LTS' => 'H:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY H:mm',
- 'LLLL' => 'dddd, D MMMM YYYY H:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[azi la] LT',
- 'nextDay' => '[mâine la] LT',
- 'nextWeek' => 'dddd [la] LT',
- 'lastDay' => '[ieri la] LT',
- 'lastWeek' => '[fosta] dddd [la] LT',
- 'sameElse' => 'L',
- ],
- 'months' => ['ianuarie', 'februarie', 'martie', 'aprilie', 'mai', 'iunie', 'iulie', 'august', 'septembrie', 'octombrie', 'noiembrie', 'decembrie'],
- 'months_short' => ['ian.', 'feb.', 'mar.', 'apr.', 'mai', 'iun.', 'iul.', 'aug.', 'sept.', 'oct.', 'nov.', 'dec.'],
- 'weekdays' => ['duminică', 'luni', 'marți', 'miercuri', 'joi', 'vineri', 'sâmbătă'],
- 'weekdays_short' => ['dum', 'lun', 'mar', 'mie', 'joi', 'vin', 'sâm'],
- 'weekdays_min' => ['du', 'lu', 'ma', 'mi', 'jo', 'vi', 'sâ'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'list' => [', ', ' și '],
- 'meridiem' => ['a.m.', 'p.m.'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ro_MD.php b/vendor/nesbot/carbon/src/Carbon/Lang/ro_MD.php
deleted file mode 100644
index ad1d2fa8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ro_MD.php
+++ /dev/null
@@ -1,21 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/ro.php', [
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY, HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY, HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ro_RO.php b/vendor/nesbot/carbon/src/Carbon/Lang/ro_RO.php
deleted file mode 100644
index 102afcde..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ro_RO.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/ro.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/rof.php b/vendor/nesbot/carbon/src/Carbon/Lang/rof.php
deleted file mode 100644
index 205fc266..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/rof.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['kang’ama', 'kingoto'],
- 'weekdays' => ['Ijumapili', 'Ijumatatu', 'Ijumanne', 'Ijumatano', 'Alhamisi', 'Ijumaa', 'Ijumamosi'],
- 'weekdays_short' => ['Ijp', 'Ijt', 'Ijn', 'Ijtn', 'Alh', 'Iju', 'Ijm'],
- 'weekdays_min' => ['Ijp', 'Ijt', 'Ijn', 'Ijtn', 'Alh', 'Iju', 'Ijm'],
- 'months' => ['Mweri wa kwanza', 'Mweri wa kaili', 'Mweri wa katatu', 'Mweri wa kaana', 'Mweri wa tanu', 'Mweri wa sita', 'Mweri wa saba', 'Mweri wa nane', 'Mweri wa tisa', 'Mweri wa ikumi', 'Mweri wa ikumi na moja', 'Mweri wa ikumi na mbili'],
- 'months_short' => ['M1', 'M2', 'M3', 'M4', 'M5', 'M6', 'M7', 'M8', 'M9', 'M10', 'M11', 'M12'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ru.php b/vendor/nesbot/carbon/src/Carbon/Lang/ru.php
deleted file mode 100644
index 673b043b..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ru.php
+++ /dev/null
@@ -1,191 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Bari Badamshin
- * - Jørn Ølmheim
- * - François B
- * - Tim Fish
- * - Коренберг Марк (imac)
- * - Serhan Apaydın
- * - RomeroMsk
- * - vsn4ik
- * - JD Isaacks
- * - Bari Badamshin
- * - Jørn Ølmheim
- * - François B
- * - Коренберг Марк (imac)
- * - Serhan Apaydın
- * - RomeroMsk
- * - vsn4ik
- * - JD Isaacks
- * - Fellzo
- * - andrey-helldar
- * - Pavel Skripkin (psxx)
- * - AlexWalkerson
- * - Vladislav UnsealedOne
- * - dima-bzz
- */
-
-use Carbon\CarbonInterface;
-
-$transformDiff = function ($input) {
- return strtr($input, [
- 'неделя' => 'неделю',
- 'секунда' => 'секунду',
- 'минута' => 'минуту',
- ]);
-};
-
-return [
- 'year' => ':count год|:count года|:count лет',
- 'y' => ':count г.|:count г.|:count л.',
- 'a_year' => '{1}год|:count год|:count года|:count лет',
- 'month' => ':count месяц|:count месяца|:count месяцев',
- 'm' => ':count мес.',
- 'a_month' => '{1}месяц|:count месяц|:count месяца|:count месяцев',
- 'week' => ':count неделя|:count недели|:count недель',
- 'w' => ':count нед.',
- 'a_week' => '{1}неделя|:count неделю|:count недели|:count недель',
- 'day' => ':count день|:count дня|:count дней',
- 'd' => ':count д.',
- 'a_day' => '{1}день|:count день|:count дня|:count дней',
- 'hour' => ':count час|:count часа|:count часов',
- 'h' => ':count ч.',
- 'a_hour' => '{1}час|:count час|:count часа|:count часов',
- 'minute' => ':count минута|:count минуты|:count минут',
- 'min' => ':count мин.',
- 'a_minute' => '{1}минута|:count минута|:count минуты|:count минут',
- 'second' => ':count секунда|:count секунды|:count секунд',
- 's' => ':count сек.',
- 'a_second' => '{1}несколько секунд|:count секунду|:count секунды|:count секунд',
- 'ago' => function ($time) use ($transformDiff) {
- return $transformDiff($time).' назад';
- },
- 'from_now' => function ($time) use ($transformDiff) {
- return 'через '.$transformDiff($time);
- },
- 'after' => function ($time) use ($transformDiff) {
- return $transformDiff($time).' после';
- },
- 'before' => function ($time) use ($transformDiff) {
- return $transformDiff($time).' до';
- },
- 'diff_now' => 'только что',
- 'diff_today' => 'Сегодня,',
- 'diff_today_regexp' => 'Сегодня,?(?:\\s+в)?',
- 'diff_yesterday' => 'вчера',
- 'diff_yesterday_regexp' => 'Вчера,?(?:\\s+в)?',
- 'diff_tomorrow' => 'завтра',
- 'diff_tomorrow_regexp' => 'Завтра,?(?:\\s+в)?',
- 'diff_before_yesterday' => 'позавчера',
- 'diff_after_tomorrow' => 'послезавтра',
- 'formats' => [
- 'LT' => 'H:mm',
- 'LTS' => 'H:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'D MMMM YYYY г.',
- 'LLL' => 'D MMMM YYYY г., H:mm',
- 'LLLL' => 'dddd, D MMMM YYYY г., H:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[Сегодня, в] LT',
- 'nextDay' => '[Завтра, в] LT',
- 'nextWeek' => function (CarbonInterface $current, CarbonInterface $other) {
- if ($current->week !== $other->week) {
- switch ($current->dayOfWeek) {
- case 0:
- return '[В следующее] dddd, [в] LT';
- case 1:
- case 2:
- case 4:
- return '[В следующий] dddd, [в] LT';
- case 3:
- case 5:
- case 6:
- return '[В следующую] dddd, [в] LT';
- }
- }
-
- if ($current->dayOfWeek === 2) {
- return '[Во] dddd, [в] LT';
- }
-
- return '[В] dddd, [в] LT';
- },
- 'lastDay' => '[Вчера, в] LT',
- 'lastWeek' => function (CarbonInterface $current, CarbonInterface $other) {
- if ($current->week !== $other->week) {
- switch ($current->dayOfWeek) {
- case 0:
- return '[В прошлое] dddd, [в] LT';
- case 1:
- case 2:
- case 4:
- return '[В прошлый] dddd, [в] LT';
- case 3:
- case 5:
- case 6:
- return '[В прошлую] dddd, [в] LT';
- }
- }
-
- if ($current->dayOfWeek === 2) {
- return '[Во] dddd, [в] LT';
- }
-
- return '[В] dddd, [в] LT';
- },
- 'sameElse' => 'L',
- ],
- 'ordinal' => function ($number, $period) {
- switch ($period) {
- case 'M':
- case 'd':
- case 'DDD':
- return $number.'-й';
- case 'D':
- return $number.'-го';
- case 'w':
- case 'W':
- return $number.'-я';
- default:
- return $number;
- }
- },
- 'meridiem' => function ($hour) {
- if ($hour < 4) {
- return 'ночи';
- }
- if ($hour < 12) {
- return 'утра';
- }
- if ($hour < 17) {
- return 'дня';
- }
-
- return 'вечера';
- },
- 'months' => ['января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря'],
- 'months_standalone' => ['январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь'],
- 'months_short' => ['янв', 'фев', 'мар', 'апр', 'мая', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек'],
- 'months_short_standalone' => ['янв', 'фев', 'мар', 'апр', 'май', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек'],
- 'months_regexp' => '/(DD?o?\.?(\[[^\[\]]*\]|\s)+MMMM?|L{2,4}|l{2,4})/',
- 'weekdays' => ['воскресенье', 'понедельник', 'вторник', 'среду', 'четверг', 'пятницу', 'субботу'],
- 'weekdays_standalone' => ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'],
- 'weekdays_short' => ['вск', 'пнд', 'втр', 'срд', 'чтв', 'птн', 'сбт'],
- 'weekdays_min' => ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'],
- 'weekdays_regexp' => '/\[\s*(В|в)\s*((?:прошлую|следующую|эту)\s*)?\]\s*dddd/',
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'list' => [', ', ' и '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ru_BY.php b/vendor/nesbot/carbon/src/Carbon/Lang/ru_BY.php
deleted file mode 100644
index 8ca7df34..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ru_BY.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/ru.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ru_KG.php b/vendor/nesbot/carbon/src/Carbon/Lang/ru_KG.php
deleted file mode 100644
index 8ca7df34..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ru_KG.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/ru.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ru_KZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/ru_KZ.php
deleted file mode 100644
index 8ca7df34..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ru_KZ.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/ru.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ru_MD.php b/vendor/nesbot/carbon/src/Carbon/Lang/ru_MD.php
deleted file mode 100644
index 8ca7df34..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ru_MD.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/ru.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ru_RU.php b/vendor/nesbot/carbon/src/Carbon/Lang/ru_RU.php
deleted file mode 100644
index 8ca7df34..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ru_RU.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/ru.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ru_UA.php b/vendor/nesbot/carbon/src/Carbon/Lang/ru_UA.php
deleted file mode 100644
index db958d68..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ru_UA.php
+++ /dev/null
@@ -1,20 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - RFC 2319 bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/ru.php', [
- 'weekdays' => ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'],
- 'weekdays_short' => ['вск', 'пнд', 'вто', 'срд', 'чтв', 'птн', 'суб'],
- 'weekdays_min' => ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'су'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/rw.php b/vendor/nesbot/carbon/src/Carbon/Lang/rw.php
deleted file mode 100644
index bc4a347f..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/rw.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/rw_RW.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/rw_RW.php b/vendor/nesbot/carbon/src/Carbon/Lang/rw_RW.php
deleted file mode 100644
index 9b3e0682..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/rw_RW.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Rwanda Steve Murphy murf@e-tools.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD.MM.YYYY',
- ],
- 'months' => ['Mutarama', 'Gashyantare', 'Werurwe', 'Mata', 'Gicuransi', 'Kamena', 'Nyakanga', 'Kanama', 'Nzeli', 'Ukwakira', 'Ugushyingo', 'Ukuboza'],
- 'months_short' => ['Mut', 'Gas', 'Wer', 'Mat', 'Gic', 'Kam', 'Nya', 'Kan', 'Nze', 'Ukw', 'Ugu', 'Uku'],
- 'weekdays' => ['Ku cyumweru', 'Kuwa mbere', 'Kuwa kabiri', 'Kuwa gatatu', 'Kuwa kane', 'Kuwa gatanu', 'Kuwa gatandatu'],
- 'weekdays_short' => ['Mwe', 'Mbe', 'Kab', 'Gtu', 'Kan', 'Gnu', 'Gnd'],
- 'weekdays_min' => ['Mwe', 'Mbe', 'Kab', 'Gtu', 'Kan', 'Gnu', 'Gnd'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
-
- 'second' => ':count vuna', // less reliable
- 's' => ':count vuna', // less reliable
- 'a_second' => ':count vuna', // less reliable
-
- 'year' => 'aka :count',
- 'y' => 'aka :count',
- 'a_year' => 'aka :count',
-
- 'month' => 'ezi :count',
- 'm' => 'ezi :count',
- 'a_month' => 'ezi :count',
-
- 'week' => ':count icyumweru',
- 'w' => ':count icyumweru',
- 'a_week' => ':count icyumweru',
-
- 'day' => ':count nsi',
- 'd' => ':count nsi',
- 'a_day' => ':count nsi',
-
- 'hour' => 'saha :count',
- 'h' => 'saha :count',
- 'a_hour' => 'saha :count',
-
- 'minute' => ':count -nzinya',
- 'min' => ':count -nzinya',
- 'a_minute' => ':count -nzinya',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/rwk.php b/vendor/nesbot/carbon/src/Carbon/Lang/rwk.php
deleted file mode 100644
index ed92e8e7..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/rwk.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['utuko', 'kyiukonyi'],
- 'weekdays' => ['Jumapilyi', 'Jumatatuu', 'Jumanne', 'Jumatanu', 'Alhamisi', 'Ijumaa', 'Jumamosi'],
- 'weekdays_short' => ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'],
- 'weekdays_min' => ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'],
- 'months' => ['Januari', 'Februari', 'Machi', 'Aprilyi', 'Mei', 'Junyi', 'Julyai', 'Agusti', 'Septemba', 'Oktoba', 'Novemba', 'Desemba'],
- 'months_short' => ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sa.php b/vendor/nesbot/carbon/src/Carbon/Lang/sa.php
deleted file mode 100644
index 1357c030..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sa.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/sa_IN.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sa_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/sa_IN.php
deleted file mode 100644
index cfda9a63..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sa_IN.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - The Debian project Christian Perrier bubulle@debian.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'D-MM-YY',
- ],
- 'months' => ['जनवरी', 'फ़रवरी', 'मार्च', 'अप्रेल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर'],
- 'months_short' => ['जनवरी', 'फ़रवरी', 'मार्च', 'अप्रेल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर'],
- 'weekdays' => ['रविवासर:', 'सोमवासर:', 'मंगलवासर:', 'बुधवासर:', 'बृहस्पतिवासरः', 'शुक्रवासर', 'शनिवासर:'],
- 'weekdays_short' => ['रविः', 'सोम:', 'मंगल:', 'बुध:', 'बृहस्पतिः', 'शुक्र', 'शनि:'],
- 'weekdays_min' => ['रविः', 'सोम:', 'मंगल:', 'बुध:', 'बृहस्पतिः', 'शुक्र', 'शनि:'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['पूर्वाह्न', 'अपराह्न'],
-
- 'minute' => ':count होरा', // less reliable
- 'min' => ':count होरा', // less reliable
- 'a_minute' => ':count होरा', // less reliable
-
- 'year' => ':count वर्ष',
- 'y' => ':count वर्ष',
- 'a_year' => ':count वर्ष',
-
- 'month' => ':count मास',
- 'm' => ':count मास',
- 'a_month' => ':count मास',
-
- 'week' => ':count सप्ताहः saptahaĥ',
- 'w' => ':count सप्ताहः saptahaĥ',
- 'a_week' => ':count सप्ताहः saptahaĥ',
-
- 'day' => ':count दिन',
- 'd' => ':count दिन',
- 'a_day' => ':count दिन',
-
- 'hour' => ':count घण्टा',
- 'h' => ':count घण्टा',
- 'a_hour' => ':count घण्टा',
-
- 'second' => ':count द्वितीयः',
- 's' => ':count द्वितीयः',
- 'a_second' => ':count द्वितीयः',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sah.php b/vendor/nesbot/carbon/src/Carbon/Lang/sah.php
deleted file mode 100644
index b8288242..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sah.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/sah_RU.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sah_RU.php b/vendor/nesbot/carbon/src/Carbon/Lang/sah_RU.php
deleted file mode 100644
index 94cc0cb0..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sah_RU.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Valery Timiriliyev Valery Timiriliyev timiriliyev@gmail.com
- */
-return array_replace_recursive(require __DIR__.'/ru.php', [
- 'formats' => [
- 'L' => 'YYYY.MM.DD',
- ],
- 'months' => ['тохсунньу', 'олунньу', 'кулун тутар', 'муус устар', 'ыам ыйын', 'бэс ыйын', 'от ыйын', 'атырдьах ыйын', 'балаҕан ыйын', 'алтынньы', 'сэтинньи', 'ахсынньы'],
- 'months_short' => ['тохс', 'олун', 'кул', 'муус', 'ыам', 'бэс', 'от', 'атыр', 'бал', 'алт', 'сэт', 'ахс'],
- 'weekdays' => ['баскыһыанньа', 'бэнидиэнньик', 'оптуорунньук', 'сэрэдэ', 'чэппиэр', 'бээтинсэ', 'субуота'],
- 'weekdays_short' => ['бс', 'бн', 'оп', 'ср', 'чп', 'бт', 'сб'],
- 'weekdays_min' => ['бс', 'бн', 'оп', 'ср', 'чп', 'бт', 'сб'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/saq.php b/vendor/nesbot/carbon/src/Carbon/Lang/saq.php
deleted file mode 100644
index ff8bf604..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/saq.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['Tesiran', 'Teipa'],
- 'weekdays' => ['Mderot ee are', 'Mderot ee kuni', 'Mderot ee ong’wan', 'Mderot ee inet', 'Mderot ee ile', 'Mderot ee sapa', 'Mderot ee kwe'],
- 'weekdays_short' => ['Are', 'Kun', 'Ong', 'Ine', 'Ile', 'Sap', 'Kwe'],
- 'weekdays_min' => ['Are', 'Kun', 'Ong', 'Ine', 'Ile', 'Sap', 'Kwe'],
- 'months' => ['Lapa le obo', 'Lapa le waare', 'Lapa le okuni', 'Lapa le ong’wan', 'Lapa le imet', 'Lapa le ile', 'Lapa le sapa', 'Lapa le isiet', 'Lapa le saal', 'Lapa le tomon', 'Lapa le tomon obo', 'Lapa le tomon waare'],
- 'months_short' => ['Obo', 'Waa', 'Oku', 'Ong', 'Ime', 'Ile', 'Sap', 'Isi', 'Saa', 'Tom', 'Tob', 'Tow'],
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sat.php b/vendor/nesbot/carbon/src/Carbon/Lang/sat.php
deleted file mode 100644
index c9914c66..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sat.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/sat_IN.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sat_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/sat_IN.php
deleted file mode 100644
index 632b1af6..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sat_IN.php
+++ /dev/null
@@ -1,54 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Red Hat Pune libc-alpha@sourceware.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'D/M/YY',
- ],
- 'months' => ['जनवरी', 'फरवरी', 'मार्च', 'अप्रेल', 'मई', 'जुन', 'जुलाई', 'अगस्त', 'सितम्बर', 'अखथबर', 'नवम्बर', 'दिसम्बर'],
- 'months_short' => ['जनवरी', 'फरवरी', 'मार्च', 'अप्रेल', 'मई', 'जुन', 'जुलाई', 'अगस्त', 'सितम्बर', 'अखथबर', 'नवम्बर', 'दिसम्बर'],
- 'weekdays' => ['सिंगेमाँहाँ', 'ओतेमाँहाँ', 'बालेमाँहाँ', 'सागुनमाँहाँ', 'सारदीमाँहाँ', 'जारुममाँहाँ', 'ञुहुममाँहाँ'],
- 'weekdays_short' => ['सिंगे', 'ओते', 'बाले', 'सागुन', 'सारदी', 'जारुम', 'ञुहुम'],
- 'weekdays_min' => ['सिंगे', 'ओते', 'बाले', 'सागुन', 'सारदी', 'जारुम', 'ञुहुम'],
- 'day_of_first_week_of_year' => 1,
-
- 'month' => ':count ńindạ cando', // less reliable
- 'm' => ':count ńindạ cando', // less reliable
- 'a_month' => ':count ńindạ cando', // less reliable
-
- 'week' => ':count mãhã', // less reliable
- 'w' => ':count mãhã', // less reliable
- 'a_week' => ':count mãhã', // less reliable
-
- 'hour' => ':count ᱥᱳᱱᱚ', // less reliable
- 'h' => ':count ᱥᱳᱱᱚ', // less reliable
- 'a_hour' => ':count ᱥᱳᱱᱚ', // less reliable
-
- 'minute' => ':count ᱯᱤᱞᱪᱩ', // less reliable
- 'min' => ':count ᱯᱤᱞᱪᱩ', // less reliable
- 'a_minute' => ':count ᱯᱤᱞᱪᱩ', // less reliable
-
- 'second' => ':count ar', // less reliable
- 's' => ':count ar', // less reliable
- 'a_second' => ':count ar', // less reliable
-
- 'year' => ':count ne̲s',
- 'y' => ':count ne̲s',
- 'a_year' => ':count ne̲s',
-
- 'day' => ':count ᱫᱤᱱ',
- 'd' => ':count ᱫᱤᱱ',
- 'a_day' => ':count ᱫᱤᱱ',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sbp.php b/vendor/nesbot/carbon/src/Carbon/Lang/sbp.php
deleted file mode 100644
index e29ca379..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sbp.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['Lwamilawu', 'Pashamihe'],
- 'weekdays' => ['Mulungu', 'Jumatatu', 'Jumanne', 'Jumatano', 'Alahamisi', 'Ijumaa', 'Jumamosi'],
- 'weekdays_short' => ['Mul', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'],
- 'weekdays_min' => ['Mul', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'],
- 'months' => ['Mupalangulwa', 'Mwitope', 'Mushende', 'Munyi', 'Mushende Magali', 'Mujimbi', 'Mushipepo', 'Mupuguto', 'Munyense', 'Mokhu', 'Musongandembwe', 'Muhaano'],
- 'months_short' => ['Mup', 'Mwi', 'Msh', 'Mun', 'Mag', 'Muj', 'Msp', 'Mpg', 'Mye', 'Mok', 'Mus', 'Muh'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sc.php b/vendor/nesbot/carbon/src/Carbon/Lang/sc.php
deleted file mode 100644
index 7178cf4f..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sc.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/sc_IT.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sc_IT.php b/vendor/nesbot/carbon/src/Carbon/Lang/sc_IT.php
deleted file mode 100644
index 5d1e4cec..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sc_IT.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Sardinian Translators Team Massimeddu Cireddu massimeddu@gmail.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD. MM. YY',
- ],
- 'months' => ['Ghennàrgiu', 'Freàrgiu', 'Martzu', 'Abrile', 'Maju', 'Làmpadas', 'Argiolas//Trìulas', 'Austu', 'Cabudanni', 'Santugaine//Ladàmine', 'Onniasantu//Santandria', 'Nadale//Idas'],
- 'months_short' => ['Ghe', 'Fre', 'Mar', 'Abr', 'Maj', 'Làm', 'Arg', 'Aus', 'Cab', 'Lad', 'Onn', 'Nad'],
- 'weekdays' => ['Domìnigu', 'Lunis', 'Martis', 'Mèrcuris', 'Giòbia', 'Chenàbura', 'Sàbadu'],
- 'weekdays_short' => ['Dom', 'Lun', 'Mar', 'Mèr', 'Giò', 'Che', 'Sàb'],
- 'weekdays_min' => ['Dom', 'Lun', 'Mar', 'Mèr', 'Giò', 'Che', 'Sàb'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-
- 'minute' => ':count mementu', // less reliable
- 'min' => ':count mementu', // less reliable
- 'a_minute' => ':count mementu', // less reliable
-
- 'year' => ':count annu',
- 'y' => ':count annu',
- 'a_year' => ':count annu',
-
- 'month' => ':count mese',
- 'm' => ':count mese',
- 'a_month' => ':count mese',
-
- 'week' => ':count chida',
- 'w' => ':count chida',
- 'a_week' => ':count chida',
-
- 'day' => ':count dí',
- 'd' => ':count dí',
- 'a_day' => ':count dí',
-
- 'hour' => ':count ora',
- 'h' => ':count ora',
- 'a_hour' => ':count ora',
-
- 'second' => ':count secundu',
- 's' => ':count secundu',
- 'a_second' => ':count secundu',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sd.php b/vendor/nesbot/carbon/src/Carbon/Lang/sd.php
deleted file mode 100644
index 0022c5a9..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sd.php
+++ /dev/null
@@ -1,81 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-$months = [
- 'جنوري',
- 'فيبروري',
- 'مارچ',
- 'اپريل',
- 'مئي',
- 'جون',
- 'جولاءِ',
- 'آگسٽ',
- 'سيپٽمبر',
- 'آڪٽوبر',
- 'نومبر',
- 'ڊسمبر',
-];
-
-$weekdays = [
- 'آچر',
- 'سومر',
- 'اڱارو',
- 'اربع',
- 'خميس',
- 'جمع',
- 'ڇنڇر',
-];
-
-/*
- * Authors:
- * - Narain Sagar
- * - Sawood Alam
- * - Narain Sagar
- */
-return [
- 'year' => '{1}'.'هڪ سال'.'|:count '.'سال',
- 'month' => '{1}'.'هڪ مهينو'.'|:count '.'مهينا',
- 'week' => '{1}'.'ھڪ ھفتو'.'|:count '.'هفتا',
- 'day' => '{1}'.'هڪ ڏينهن'.'|:count '.'ڏينهن',
- 'hour' => '{1}'.'هڪ ڪلاڪ'.'|:count '.'ڪلاڪ',
- 'minute' => '{1}'.'هڪ منٽ'.'|:count '.'منٽ',
- 'second' => '{1}'.'چند سيڪنڊ'.'|:count '.'سيڪنڊ',
- 'ago' => ':time اڳ',
- 'from_now' => ':time پوء',
- 'diff_yesterday' => 'ڪالهه',
- 'diff_today' => 'اڄ',
- 'diff_tomorrow' => 'سڀاڻي',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd، D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[اڄ] LT',
- 'nextDay' => '[سڀاڻي] LT',
- 'nextWeek' => 'dddd [اڳين هفتي تي] LT',
- 'lastDay' => '[ڪالهه] LT',
- 'lastWeek' => '[گزريل هفتي] dddd [تي] LT',
- 'sameElse' => 'L',
- ],
- 'meridiem' => ['صبح', 'شام'],
- 'months' => $months,
- 'months_short' => $months,
- 'weekdays' => $weekdays,
- 'weekdays_short' => $weekdays,
- 'weekdays_min' => $weekdays,
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => ['، ', ' ۽ '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sd_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/sd_IN.php
deleted file mode 100644
index de1dad05..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sd_IN.php
+++ /dev/null
@@ -1,26 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Red Hat, Pune bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/sd.php', [
- 'formats' => [
- 'L' => 'D/M/YY',
- ],
- 'months' => ['جنوري', 'فبروري', 'مارچ', 'اپريل', 'مي', 'جون', 'جولاءِ', 'آگسٽ', 'سيپٽيمبر', 'آڪٽوبر', 'نومبر', 'ڊسمبر'],
- 'months_short' => ['جنوري', 'فبروري', 'مارچ', 'اپريل', 'مي', 'جون', 'جولاءِ', 'آگسٽ', 'سيپٽيمبر', 'آڪٽوبر', 'نومبر', 'ڊسمبر'],
- 'weekdays' => ['آرتوارُ', 'سومرُ', 'منگلُ', 'ٻُڌرُ', 'وسپت', 'جُمو', 'ڇنڇر'],
- 'weekdays_short' => ['آرتوارُ', 'سومرُ', 'منگلُ', 'ٻُڌرُ', 'وسپت', 'جُمو', 'ڇنڇر'],
- 'weekdays_min' => ['آرتوارُ', 'سومرُ', 'منگلُ', 'ٻُڌرُ', 'وسپت', 'جُمو', 'ڇنڇر'],
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sd_IN@devanagari.php b/vendor/nesbot/carbon/src/Carbon/Lang/sd_IN@devanagari.php
deleted file mode 100644
index 061fcc16..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sd_IN@devanagari.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Red Hat, Pune bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/sd.php', [
- 'formats' => [
- 'L' => 'D/M/YY',
- ],
- 'months' => ['जनवरी', 'फबरवरी', 'मार्चि', 'अप्रेल', 'मे', 'जूनि', 'जूलाइ', 'आगस्टु', 'सेप्टेंबरू', 'आक्टूबरू', 'नवंबरू', 'ॾिसंबरू'],
- 'months_short' => ['जनवरी', 'फबरवरी', 'मार्चि', 'अप्रेल', 'मे', 'जूनि', 'जूलाइ', 'आगस्टु', 'सेप्टेंबरू', 'आक्टूबरू', 'नवंबरू', 'ॾिसंबरू'],
- 'weekdays' => ['आर्तवारू', 'सूमरू', 'मंगलू', 'ॿुधरू', 'विस्पति', 'जुमो', 'छंछस'],
- 'weekdays_short' => ['आर्तवारू', 'सूमरू', 'मंगलू', 'ॿुधरू', 'विस्पति', 'जुमो', 'छंछस'],
- 'weekdays_min' => ['आर्तवारू', 'सूमरू', 'मंगलू', 'ॿुधरू', 'विस्पति', 'जुमो', 'छंछस'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['म.पू.', 'म.नं.'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/se.php b/vendor/nesbot/carbon/src/Carbon/Lang/se.php
deleted file mode 100644
index 7c4b92a5..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/se.php
+++ /dev/null
@@ -1,73 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - François B
- * - Karamell
- */
-return [
- 'year' => '{1}:count jahki|:count jagit',
- 'a_year' => '{1}okta jahki|:count jagit',
- 'y' => ':count j.',
- 'month' => '{1}:count mánnu|:count mánut',
- 'a_month' => '{1}okta mánnu|:count mánut',
- 'm' => ':count mán.',
- 'week' => '{1}:count vahkku|:count vahkku',
- 'a_week' => '{1}okta vahkku|:count vahkku',
- 'w' => ':count v.',
- 'day' => '{1}:count beaivi|:count beaivvit',
- 'a_day' => '{1}okta beaivi|:count beaivvit',
- 'd' => ':count b.',
- 'hour' => '{1}:count diimmu|:count diimmut',
- 'a_hour' => '{1}okta diimmu|:count diimmut',
- 'h' => ':count d.',
- 'minute' => '{1}:count minuhta|:count minuhtat',
- 'a_minute' => '{1}okta minuhta|:count minuhtat',
- 'min' => ':count min.',
- 'second' => '{1}:count sekunddat|:count sekunddat',
- 'a_second' => '{1}moadde sekunddat|:count sekunddat',
- 's' => ':count s.',
- 'ago' => 'maŋit :time',
- 'from_now' => ':time geažes',
- 'diff_yesterday' => 'ikte',
- 'diff_yesterday_regexp' => 'ikte(?:\\s+ti)?',
- 'diff_today' => 'otne',
- 'diff_today_regexp' => 'otne(?:\\s+ti)?',
- 'diff_tomorrow' => 'ihttin',
- 'diff_tomorrow_regexp' => 'ihttin(?:\\s+ti)?',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'MMMM D. [b.] YYYY',
- 'LLL' => 'MMMM D. [b.] YYYY [ti.] HH:mm',
- 'LLLL' => 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[otne ti] LT',
- 'nextDay' => '[ihttin ti] LT',
- 'nextWeek' => 'dddd [ti] LT',
- 'lastDay' => '[ikte ti] LT',
- 'lastWeek' => '[ovddit] dddd [ti] LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => ':number.',
- 'months' => ['ođđajagemánnu', 'guovvamánnu', 'njukčamánnu', 'cuoŋománnu', 'miessemánnu', 'geassemánnu', 'suoidnemánnu', 'borgemánnu', 'čakčamánnu', 'golggotmánnu', 'skábmamánnu', 'juovlamánnu'],
- 'months_short' => ['ođđj', 'guov', 'njuk', 'cuo', 'mies', 'geas', 'suoi', 'borg', 'čakč', 'golg', 'skáb', 'juov'],
- 'weekdays' => ['sotnabeaivi', 'vuossárga', 'maŋŋebárga', 'gaskavahkku', 'duorastat', 'bearjadat', 'lávvardat'],
- 'weekdays_short' => ['sotn', 'vuos', 'maŋ', 'gask', 'duor', 'bear', 'láv'],
- 'weekdays_min' => ['s', 'v', 'm', 'g', 'd', 'b', 'L'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' ja '],
- 'meridiem' => ['i.b.', 'e.b.'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/se_FI.php b/vendor/nesbot/carbon/src/Carbon/Lang/se_FI.php
deleted file mode 100644
index cf01805d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/se_FI.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/se.php', [
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
- 'months' => ['ođđajagemánnu', 'guovvamánnu', 'njukčamánnu', 'cuoŋománnu', 'miessemánnu', 'geassemánnu', 'suoidnemánnu', 'borgemánnu', 'čakčamánnu', 'golggotmánnu', 'skábmamánnu', 'juovlamánnu'],
- 'months_short' => ['ođđj', 'guov', 'njuk', 'cuoŋ', 'mies', 'geas', 'suoi', 'borg', 'čakč', 'golg', 'skáb', 'juov'],
- 'weekdays' => ['sotnabeaivi', 'mánnodat', 'disdat', 'gaskavahkku', 'duorastat', 'bearjadat', 'lávvordat'],
- 'weekdays_short' => ['so', 'má', 'di', 'ga', 'du', 'be', 'lá'],
- 'weekdays_min' => ['so', 'má', 'di', 'ga', 'du', 'be', 'lá'],
- 'meridiem' => ['i', 'e'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/se_NO.php b/vendor/nesbot/carbon/src/Carbon/Lang/se_NO.php
deleted file mode 100644
index 177c7e94..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/se_NO.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/se.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/se_SE.php b/vendor/nesbot/carbon/src/Carbon/Lang/se_SE.php
deleted file mode 100644
index 177c7e94..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/se_SE.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/se.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/seh.php b/vendor/nesbot/carbon/src/Carbon/Lang/seh.php
deleted file mode 100644
index babf9afb..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/seh.php
+++ /dev/null
@@ -1,26 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'weekdays' => ['Dimingu', 'Chiposi', 'Chipiri', 'Chitatu', 'Chinai', 'Chishanu', 'Sabudu'],
- 'weekdays_short' => ['Dim', 'Pos', 'Pir', 'Tat', 'Nai', 'Sha', 'Sab'],
- 'weekdays_min' => ['Dim', 'Pos', 'Pir', 'Tat', 'Nai', 'Sha', 'Sab'],
- 'months' => ['Janeiro', 'Fevreiro', 'Marco', 'Abril', 'Maio', 'Junho', 'Julho', 'Augusto', 'Setembro', 'Otubro', 'Novembro', 'Decembro'],
- 'months_short' => ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Aug', 'Set', 'Otu', 'Nov', 'Dec'],
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D/M/YYYY',
- 'LL' => 'd [de] MMM [de] YYYY',
- 'LLL' => 'd [de] MMMM [de] YYYY HH:mm',
- 'LLLL' => 'dddd, d [de] MMMM [de] YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ses.php b/vendor/nesbot/carbon/src/Carbon/Lang/ses.php
deleted file mode 100644
index e1099e65..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ses.php
+++ /dev/null
@@ -1,56 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['Adduha', 'Aluula'],
- 'weekdays' => ['Alhadi', 'Atinni', 'Atalaata', 'Alarba', 'Alhamiisa', 'Alzuma', 'Asibti'],
- 'weekdays_short' => ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alz', 'Asi'],
- 'weekdays_min' => ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alz', 'Asi'],
- 'months' => ['Žanwiye', 'Feewiriye', 'Marsi', 'Awiril', 'Me', 'Žuweŋ', 'Žuyye', 'Ut', 'Sektanbur', 'Oktoobur', 'Noowanbur', 'Deesanbur'],
- 'months_short' => ['Žan', 'Fee', 'Mar', 'Awi', 'Me', 'Žuw', 'Žuy', 'Ut', 'Sek', 'Okt', 'Noo', 'Dee'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D/M/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
-
- 'month' => ':count alaada', // less reliable
- 'm' => ':count alaada', // less reliable
- 'a_month' => ':count alaada', // less reliable
-
- 'hour' => ':count ɲaajin', // less reliable
- 'h' => ':count ɲaajin', // less reliable
- 'a_hour' => ':count ɲaajin', // less reliable
-
- 'minute' => ':count zarbu', // less reliable
- 'min' => ':count zarbu', // less reliable
- 'a_minute' => ':count zarbu', // less reliable
-
- 'year' => ':count jiiri',
- 'y' => ':count jiiri',
- 'a_year' => ':count jiiri',
-
- 'week' => ':count jirbiiyye',
- 'w' => ':count jirbiiyye',
- 'a_week' => ':count jirbiiyye',
-
- 'day' => ':count zaari',
- 'd' => ':count zaari',
- 'a_day' => ':count zaari',
-
- 'second' => ':count ihinkante',
- 's' => ':count ihinkante',
- 'a_second' => ':count ihinkante',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sg.php b/vendor/nesbot/carbon/src/Carbon/Lang/sg.php
deleted file mode 100644
index 9264e893..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sg.php
+++ /dev/null
@@ -1,52 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['ND', 'LK'],
- 'weekdays' => ['Bikua-ôko', 'Bïkua-ûse', 'Bïkua-ptâ', 'Bïkua-usïö', 'Bïkua-okü', 'Lâpôsö', 'Lâyenga'],
- 'weekdays_short' => ['Bk1', 'Bk2', 'Bk3', 'Bk4', 'Bk5', 'Lâp', 'Lây'],
- 'weekdays_min' => ['Bk1', 'Bk2', 'Bk3', 'Bk4', 'Bk5', 'Lâp', 'Lây'],
- 'months' => ['Nyenye', 'Fulundïgi', 'Mbängü', 'Ngubùe', 'Bêläwü', 'Föndo', 'Lengua', 'Kükürü', 'Mvuka', 'Ngberere', 'Nabändüru', 'Kakauka'],
- 'months_short' => ['Nye', 'Ful', 'Mbä', 'Ngu', 'Bêl', 'Fön', 'Len', 'Kük', 'Mvu', 'Ngb', 'Nab', 'Kak'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D/M/YYYY',
- 'LL' => 'D MMM, YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
-
- 'year' => ':count dā', // less reliable
- 'y' => ':count dā', // less reliable
- 'a_year' => ':count dā', // less reliable
-
- 'week' => ':count bïkua-okü', // less reliable
- 'w' => ':count bïkua-okü', // less reliable
- 'a_week' => ':count bïkua-okü', // less reliable
-
- 'day' => ':count ziggawâ', // less reliable
- 'd' => ':count ziggawâ', // less reliable
- 'a_day' => ':count ziggawâ', // less reliable
-
- 'hour' => ':count yângâködörö', // less reliable
- 'h' => ':count yângâködörö', // less reliable
- 'a_hour' => ':count yângâködörö', // less reliable
-
- 'second' => ':count bïkua-ôko', // less reliable
- 's' => ':count bïkua-ôko', // less reliable
- 'a_second' => ':count bïkua-ôko', // less reliable
-
- 'month' => ':count Nze tî ngu',
- 'm' => ':count Nze tî ngu',
- 'a_month' => ':count Nze tî ngu',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sgs.php b/vendor/nesbot/carbon/src/Carbon/Lang/sgs.php
deleted file mode 100644
index 864b9892..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sgs.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/sgs_LT.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sgs_LT.php b/vendor/nesbot/carbon/src/Carbon/Lang/sgs_LT.php
deleted file mode 100644
index aa9e942e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sgs_LT.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Arnas Udovičius bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'YYYY.MM.DD',
- ],
- 'months' => ['sausė', 'vasarė', 'kuova', 'balondė', 'gegožės', 'bėrželė', 'lëpas', 'rogpjūtė', 'siejės', 'spalė', 'lapkrėstė', 'grůdė'],
- 'months_short' => ['Sau', 'Vas', 'Kuo', 'Bal', 'Geg', 'Bėr', 'Lëp', 'Rgp', 'Sie', 'Spa', 'Lap', 'Grd'],
- 'weekdays' => ['nedielės dëna', 'panedielis', 'oterninks', 'sereda', 'četvergs', 'petnīčė', 'sobata'],
- 'weekdays_short' => ['Nd', 'Pn', 'Ot', 'Sr', 'Čt', 'Pt', 'Sb'],
- 'weekdays_min' => ['Nd', 'Pn', 'Ot', 'Sr', 'Čt', 'Pt', 'Sb'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-
- 'minute' => ':count mažos', // less reliable
- 'min' => ':count mažos', // less reliable
- 'a_minute' => ':count mažos', // less reliable
-
- 'year' => ':count metā',
- 'y' => ':count metā',
- 'a_year' => ':count metā',
-
- 'month' => ':count mienou',
- 'm' => ':count mienou',
- 'a_month' => ':count mienou',
-
- 'week' => ':count nedielė',
- 'w' => ':count nedielė',
- 'a_week' => ':count nedielė',
-
- 'day' => ':count dīna',
- 'd' => ':count dīna',
- 'a_day' => ':count dīna',
-
- 'hour' => ':count adīna',
- 'h' => ':count adīna',
- 'a_hour' => ':count adīna',
-
- 'second' => ':count Sekondė',
- 's' => ':count Sekondė',
- 'a_second' => ':count Sekondė',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sh.php b/vendor/nesbot/carbon/src/Carbon/Lang/sh.php
deleted file mode 100644
index e4aa5a1c..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sh.php
+++ /dev/null
@@ -1,68 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-// @codeCoverageIgnoreStart
-use Symfony\Component\Translation\PluralizationRules;
-
-if (class_exists('Symfony\\Component\\Translation\\PluralizationRules')) {
- PluralizationRules::set(function ($number) {
- return (($number % 10 == 1) && ($number % 100 != 11)) ? 0 : ((($number % 10 >= 2) && ($number % 10 <= 4) && (($number % 100 < 10) || ($number % 100 >= 20))) ? 1 : 2);
- }, 'sh');
-}
-// @codeCoverageIgnoreEnd
-
-/*
- * Authors:
- * - Томица Кораћ
- * - Enrique Vidal
- * - Christopher Dell
- * - dmilisic
- * - danijel
- * - Miroslav Matkovic (mikki021)
- */
-return [
- 'diff_now' => 'sada',
- 'diff_yesterday' => 'juče',
- 'diff_tomorrow' => 'sutra',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'MMMM D, YYYY',
- 'LLL' => 'DD MMM HH:mm',
- 'LLLL' => 'MMMM DD, YYYY HH:mm',
- ],
- 'year' => ':count godina|:count godine|:count godina',
- 'y' => ':count g.',
- 'month' => ':count mesec|:count meseca|:count meseci',
- 'm' => ':count m.',
- 'week' => ':count nedelja|:count nedelje|:count nedelja',
- 'w' => ':count n.',
- 'day' => ':count dan|:count dana|:count dana',
- 'd' => ':count d.',
- 'hour' => ':count sat|:count sata|:count sati',
- 'h' => ':count č.',
- 'minute' => ':count minut|:count minuta|:count minuta',
- 'min' => ':count min.',
- 'second' => ':count sekund|:count sekunde|:count sekundi',
- 's' => ':count s.',
- 'ago' => 'pre :time',
- 'from_now' => 'za :time',
- 'after' => 'nakon :time',
- 'before' => ':time raniјe',
- 'weekdays' => ['Nedelja', 'Ponedeljak', 'Utorak', 'Sreda', 'Četvrtak', 'Petak', 'Subota'],
- 'weekdays_short' => ['Ned', 'Pon', 'Uto', 'Sre', 'Čet', 'Pet', 'Sub'],
- 'weekdays_min' => ['Ned', 'Pon', 'Uto', 'Sre', 'Čet', 'Pet', 'Sub'],
- 'months' => ['Januar', 'Februar', 'Mart', 'April', 'Maj', 'Jun', 'Jul', 'Avgust', 'Septembar', 'Oktobar', 'Novembar', 'Decembar'],
- 'months_short' => ['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Avg', 'Sep', 'Okt', 'Nov', 'Dec'],
- 'list' => [', ', ' i '],
- 'meridiem' => ['pre podne', 'po podne'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/shi.php b/vendor/nesbot/carbon/src/Carbon/Lang/shi.php
deleted file mode 100644
index 78151869..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/shi.php
+++ /dev/null
@@ -1,57 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['ⵜⵉⴼⴰⵡⵜ', 'ⵜⴰⴷⴳⴳⵯⴰⵜ'],
- 'weekdays' => ['ⴰⵙⴰⵎⴰⵙ', 'ⴰⵢⵏⴰⵙ', 'ⴰⵙⵉⵏⴰⵙ', 'ⴰⴽⵕⴰⵙ', 'ⴰⴽⵡⴰⵙ', 'ⵙⵉⵎⵡⴰⵙ', 'ⴰⵙⵉⴹⵢⴰⵙ'],
- 'weekdays_short' => ['ⴰⵙⴰ', 'ⴰⵢⵏ', 'ⴰⵙⵉ', 'ⴰⴽⵕ', 'ⴰⴽⵡ', 'ⴰⵙⵉⵎ', 'ⴰⵙⵉⴹ'],
- 'weekdays_min' => ['ⴰⵙⴰ', 'ⴰⵢⵏ', 'ⴰⵙⵉ', 'ⴰⴽⵕ', 'ⴰⴽⵡ', 'ⴰⵙⵉⵎ', 'ⴰⵙⵉⴹ'],
- 'months' => ['ⵉⵏⵏⴰⵢⵔ', 'ⴱⵕⴰⵢⵕ', 'ⵎⴰⵕⵚ', 'ⵉⴱⵔⵉⵔ', 'ⵎⴰⵢⵢⵓ', 'ⵢⵓⵏⵢⵓ', 'ⵢⵓⵍⵢⵓⵣ', 'ⵖⵓⵛⵜ', 'ⵛⵓⵜⴰⵏⴱⵉⵔ', 'ⴽⵜⵓⴱⵔ', 'ⵏⵓⵡⴰⵏⴱⵉⵔ', 'ⴷⵓⵊⴰⵏⴱⵉⵔ'],
- 'months_short' => ['ⵉⵏⵏ', 'ⴱⵕⴰ', 'ⵎⴰⵕ', 'ⵉⴱⵔ', 'ⵎⴰⵢ', 'ⵢⵓⵏ', 'ⵢⵓⵍ', 'ⵖⵓⵛ', 'ⵛⵓⵜ', 'ⴽⵜⵓ', 'ⵏⵓⵡ', 'ⴷⵓⵊ'],
- 'first_day_of_week' => 6,
- 'weekend' => [5, 6],
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D/M/YYYY',
- 'LL' => 'D MMM, YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
-
- 'year' => ':count aseggwas',
- 'y' => ':count aseggwas',
- 'a_year' => ':count aseggwas',
-
- 'month' => ':count ayyur',
- 'm' => ':count ayyur',
- 'a_month' => ':count ayyur',
-
- 'week' => ':count imalass',
- 'w' => ':count imalass',
- 'a_week' => ':count imalass',
-
- 'day' => ':count ass',
- 'd' => ':count ass',
- 'a_day' => ':count ass',
-
- 'hour' => ':count urɣ', // less reliable
- 'h' => ':count urɣ', // less reliable
- 'a_hour' => ':count urɣ', // less reliable
-
- 'minute' => ':count ⴰⵎⵥⵉ', // less reliable
- 'min' => ':count ⴰⵎⵥⵉ', // less reliable
- 'a_minute' => ':count ⴰⵎⵥⵉ', // less reliable
-
- 'second' => ':count sin', // less reliable
- 's' => ':count sin', // less reliable
- 'a_second' => ':count sin', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/shi_Latn.php b/vendor/nesbot/carbon/src/Carbon/Lang/shi_Latn.php
deleted file mode 100644
index cddfb242..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/shi_Latn.php
+++ /dev/null
@@ -1,33 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/shi.php', [
- 'meridiem' => ['tifawt', 'tadggʷat'],
- 'weekdays' => ['asamas', 'aynas', 'asinas', 'akṛas', 'akwas', 'asimwas', 'asiḍyas'],
- 'weekdays_short' => ['asa', 'ayn', 'asi', 'akṛ', 'akw', 'asim', 'asiḍ'],
- 'weekdays_min' => ['asa', 'ayn', 'asi', 'akṛ', 'akw', 'asim', 'asiḍ'],
- 'months' => ['innayr', 'bṛayṛ', 'maṛṣ', 'ibrir', 'mayyu', 'yunyu', 'yulyuz', 'ɣuct', 'cutanbir', 'ktubr', 'nuwanbir', 'dujanbir'],
- 'months_short' => ['inn', 'bṛa', 'maṛ', 'ibr', 'may', 'yun', 'yul', 'ɣuc', 'cut', 'ktu', 'nuw', 'duj'],
- 'first_day_of_week' => 6,
- 'weekend' => [5, 6],
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D/M/YYYY',
- 'LL' => 'D MMM, YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
-
- 'minute' => ':count agur', // less reliable
- 'min' => ':count agur', // less reliable
- 'a_minute' => ':count agur', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/shi_Tfng.php b/vendor/nesbot/carbon/src/Carbon/Lang/shi_Tfng.php
deleted file mode 100644
index f3df1f2c..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/shi_Tfng.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/shi.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/shn.php b/vendor/nesbot/carbon/src/Carbon/Lang/shn.php
deleted file mode 100644
index fe7b1ea5..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/shn.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/shn_MM.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/shn_MM.php b/vendor/nesbot/carbon/src/Carbon/Lang/shn_MM.php
deleted file mode 100644
index f399acf0..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/shn_MM.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - ubuntu Myanmar LoCo Team https://ubuntu-mm.net Bone Pyae Sone bone.burma@mail.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'OY MMM OD dddd',
- ],
- 'months' => ['လိူၼ်ၵမ်', 'လိူၼ်သၢမ်', 'လိူၼ်သီ', 'လိူၼ်ႁႃႈ', 'လိူၼ်ႁူၵ်း', 'လိူၼ်ၸဵတ်း', 'လိူၼ်ပႅတ်ႇ', 'လိူၼ်ၵဝ်ႈ', 'လိူၼ်သိပ်း', 'လိူၼ်သိပ်းဢိတ်း', 'လိူၼ်သိပ်းဢိတ်းသွင်', 'လိူၼ်ၸဵင်'],
- 'months_short' => ['လိူၼ်ၵမ်', 'လိူၼ်သၢမ်', 'လိူၼ်သီ', 'လိူၼ်ႁႃႈ', 'လိူၼ်ႁူၵ်း', 'လိူၼ်ၸဵတ်း', 'လိူၼ်ပႅတ်ႇ', 'လိူၼ်ၵဝ်ႈ', 'လိူၼ်သိပ်း', 'လိူၼ်သိပ်းဢိတ်း', 'လိူၼ်သိပ်းဢိတ်းသွင်', 'လိူၼ်ၸဵင်'],
- 'weekdays' => ['ဝၼ်းဢႃးတိတ်ႉ', 'ဝၼ်းၸၼ်', 'ဝၼ်းဢၢင်းၵၢၼ်း', 'ဝၼ်းပူတ်ႉ', 'ဝၼ်းၽတ်း', 'ဝၼ်းသုၵ်း', 'ဝၼ်းသဝ်'],
- 'weekdays_short' => ['တိတ့်', 'ၸၼ်', 'ၵၢၼ်း', 'ပုတ့်', 'ၽတ်း', 'သုၵ်း', 'သဝ်'],
- 'weekdays_min' => ['တိတ့်', 'ၸၼ်', 'ၵၢၼ်း', 'ပုတ့်', 'ၽတ်း', 'သုၵ်း', 'သဝ်'],
- 'alt_numbers' => ['႐႐', '႐႑', '႐႒', '႐႓', '႐႔', '႐႕', '႐႖', '႐႗', '႐႘', '႐႙', '႑႐', '႑႑', '႑႒', '႑႓', '႑႔', '႑႕', '႑႖', '႑႗', '႑႘', '႑႙', '႒႐', '႒႑', '႒႒', '႒႓', '႒႔', '႒႕', '႒႖', '႒႗', '႒႘', '႒႙', '႓႐', '႓႑', '႓႒', '႓႓', '႓႔', '႓႕', '႓႖', '႓႗', '႓႘', '႓႙', '႔႐', '႔႑', '႔႒', '႔႓', '႔႔', '႔႕', '႔႖', '႔႗', '႔႘', '႔႙', '႕႐', '႕႑', '႕႒', '႕႓', '႕႔', '႕႕', '႕႖', '႕႗', '႕႘', '႕႙', '႖႐', '႖႑', '႖႒', '႖႓', '႖႔', '႖႕', '႖႖', '႖႗', '႖႘', '႖႙', '႗႐', '႗႑', '႗႒', '႗႓', '႗႔', '႗႕', '႗႖', '႗႗', '႗႘', '႗႙', '႘႐', '႘႑', '႘႒', '႘႓', '႘႔', '႘႕', '႘႖', '႘႗', '႘႘', '႘႙', '႙႐', '႙႑', '႙႒', '႙႓', '႙႔', '႙႕', '႙႖', '႙႗', '႙႘', '႙႙'],
- 'meridiem' => ['ၵၢင်ၼႂ်', 'တၢမ်းၶမ်ႈ'],
-
- 'month' => ':count လိူၼ်', // less reliable
- 'm' => ':count လိူၼ်', // less reliable
- 'a_month' => ':count လိူၼ်', // less reliable
-
- 'week' => ':count ဝၼ်း', // less reliable
- 'w' => ':count ဝၼ်း', // less reliable
- 'a_week' => ':count ဝၼ်း', // less reliable
-
- 'hour' => ':count ຕີ', // less reliable
- 'h' => ':count ຕີ', // less reliable
- 'a_hour' => ':count ຕີ', // less reliable
-
- 'minute' => ':count ເດັກ', // less reliable
- 'min' => ':count ເດັກ', // less reliable
- 'a_minute' => ':count ເດັກ', // less reliable
-
- 'second' => ':count ဢိုၼ်ႇ', // less reliable
- 's' => ':count ဢိုၼ်ႇ', // less reliable
- 'a_second' => ':count ဢိုၼ်ႇ', // less reliable
-
- 'year' => ':count ပီ',
- 'y' => ':count ပီ',
- 'a_year' => ':count ပီ',
-
- 'day' => ':count ກາງວັນ',
- 'd' => ':count ກາງວັນ',
- 'a_day' => ':count ກາງວັນ',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/shs.php b/vendor/nesbot/carbon/src/Carbon/Lang/shs.php
deleted file mode 100644
index 8d2e1d7d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/shs.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/shs_CA.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/shs_CA.php b/vendor/nesbot/carbon/src/Carbon/Lang/shs_CA.php
deleted file mode 100644
index 08d385e6..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/shs_CA.php
+++ /dev/null
@@ -1,38 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Neskie Manuel bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YY',
- ],
- 'months' => ['Pellkwet̓min', 'Pelctsipwen̓ten', 'Pellsqépts', 'Peslléwten', 'Pell7ell7é7llqten', 'Pelltspéntsk', 'Pelltqwelq̓wél̓t', 'Pellct̓éxel̓cten', 'Pesqelqlélten', 'Pesllwélsten', 'Pellc7ell7é7llcwten̓', 'Pelltetétq̓em'],
- 'months_short' => ['Kwe', 'Tsi', 'Sqe', 'Éwt', 'Ell', 'Tsp', 'Tqw', 'Ct̓é', 'Qel', 'Wél', 'U7l', 'Tet'],
- 'weekdays' => ['Sxetspesq̓t', 'Spetkesq̓t', 'Selesq̓t', 'Skellesq̓t', 'Smesesq̓t', 'Stselkstesq̓t', 'Stqmekstesq̓t'],
- 'weekdays_short' => ['Sxe', 'Spe', 'Sel', 'Ske', 'Sme', 'Sts', 'Stq'],
- 'weekdays_min' => ['Sxe', 'Spe', 'Sel', 'Ske', 'Sme', 'Sts', 'Stq'],
- 'day_of_first_week_of_year' => 1,
-
- 'year' => ':count sqlélten', // less reliable
- 'y' => ':count sqlélten', // less reliable
- 'a_year' => ':count sqlélten', // less reliable
-
- 'month' => ':count swewll', // less reliable
- 'm' => ':count swewll', // less reliable
- 'a_month' => ':count swewll', // less reliable
-
- 'hour' => ':count seqwlút', // less reliable
- 'h' => ':count seqwlút', // less reliable
- 'a_hour' => ':count seqwlút', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/si.php b/vendor/nesbot/carbon/src/Carbon/Lang/si.php
deleted file mode 100644
index 636bf691..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/si.php
+++ /dev/null
@@ -1,78 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - François B
- * - Serhan Apaydın
- * - JD Isaacks
- * - Malinda Weerasinghe (MalindaWMD)
- */
-return [
- 'year' => '{1}වසර 1|වසර :count',
- 'a_year' => '{1}වසරක්|වසර :count',
- 'month' => '{1}මාස 1|මාස :count',
- 'a_month' => '{1}මාසය|මාස :count',
- 'week' => '{1}සති 1|සති :count',
- 'a_week' => '{1}සතියක්|සති :count',
- 'day' => '{1}දින 1|දින :count',
- 'a_day' => '{1}දිනක්|දින :count',
- 'hour' => '{1}පැය 1|පැය :count',
- 'a_hour' => '{1}පැයක්|පැය :count',
- 'minute' => '{1}මිනිත්තු 1|මිනිත්තු :count',
- 'a_minute' => '{1}මිනිත්තුවක්|මිනිත්තු :count',
- 'second' => '{1}තත්පර 1|තත්පර :count',
- 'a_second' => '{1}තත්පර කිහිපයකට|තත්පර :count',
- 'ago' => ':time කට පෙර',
- 'from_now' => function ($time) {
- if (preg_match('/දින \d/u', $time)) {
- return $time.' න්';
- }
-
- return $time.' කින්';
- },
- 'before' => ':time කට පෙර',
- 'after' => function ($time) {
- if (preg_match('/දින \d/u', $time)) {
- return $time.' න්';
- }
-
- return $time.' කින්';
- },
- 'diff_now' => 'දැන්',
- 'diff_today' => 'අද',
- 'diff_yesterday' => 'ඊයේ',
- 'diff_tomorrow' => 'හෙට',
- 'formats' => [
- 'LT' => 'a h:mm',
- 'LTS' => 'a h:mm:ss',
- 'L' => 'YYYY/MM/DD',
- 'LL' => 'YYYY MMMM D',
- 'LLL' => 'YYYY MMMM D, a h:mm',
- 'LLLL' => 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',
- ],
- 'calendar' => [
- 'sameDay' => '[අද] LT[ට]',
- 'nextDay' => '[හෙට] LT[ට]',
- 'nextWeek' => 'dddd LT[ට]',
- 'lastDay' => '[ඊයේ] LT[ට]',
- 'lastWeek' => '[පසුගිය] dddd LT[ට]',
- 'sameElse' => 'L',
- ],
- 'ordinal' => ':number වැනි',
- 'meridiem' => ['පෙර වරු', 'පස් වරු', 'පෙ.ව.', 'ප.ව.'],
- 'months' => ['ජනවාරි', 'පෙබරවාරි', 'මාර්තු', 'අප්රේල්', 'මැයි', 'ජූනි', 'ජූලි', 'අගෝස්තු', 'සැප්තැම්බර්', 'ඔක්තෝබර්', 'නොවැම්බර්', 'දෙසැම්බර්'],
- 'months_short' => ['ජන', 'පෙබ', 'මාර්', 'අප්', 'මැයි', 'ජූනි', 'ජූලි', 'අගෝ', 'සැප්', 'ඔක්', 'නොවැ', 'දෙසැ'],
- 'weekdays' => ['ඉරිදා', 'සඳුදා', 'අඟහරුවාදා', 'බදාදා', 'බ්රහස්පතින්දා', 'සිකුරාදා', 'සෙනසුරාදා'],
- 'weekdays_short' => ['ඉරි', 'සඳු', 'අඟ', 'බදා', 'බ්රහ', 'සිකු', 'සෙන'],
- 'weekdays_min' => ['ඉ', 'ස', 'අ', 'බ', 'බ්ර', 'සි', 'සෙ'],
- 'first_day_of_week' => 1,
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/si_LK.php b/vendor/nesbot/carbon/src/Carbon/Lang/si_LK.php
deleted file mode 100644
index 81c44e0e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/si_LK.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/si.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sid.php b/vendor/nesbot/carbon/src/Carbon/Lang/sid.php
deleted file mode 100644
index b1c65218..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sid.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/sid_ET.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sid_ET.php b/vendor/nesbot/carbon/src/Carbon/Lang/sid_ET.php
deleted file mode 100644
index 1296f9be..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sid_ET.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Ge'ez Frontier Foundation locales@geez.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
- 'months_short' => ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
- 'weekdays' => ['Sambata', 'Sanyo', 'Maakisanyo', 'Roowe', 'Hamuse', 'Arbe', 'Qidaame'],
- 'weekdays_short' => ['Sam', 'San', 'Mak', 'Row', 'Ham', 'Arb', 'Qid'],
- 'weekdays_min' => ['Sam', 'San', 'Mak', 'Row', 'Ham', 'Arb', 'Qid'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['soodo', 'hawwaro'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sk.php b/vendor/nesbot/carbon/src/Carbon/Lang/sk.php
deleted file mode 100644
index fd0f6b3e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sk.php
+++ /dev/null
@@ -1,81 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Philippe Vaucher
- * - Martin Suja
- * - Tsutomu Kuroda
- * - tjku
- * - Max Melentiev
- * - Juanito Fatas
- * - Ivan Stana
- * - Akira Matsuda
- * - Christopher Dell
- * - James McKinney
- * - Enrique Vidal
- * - Simone Carletti
- * - Aaron Patterson
- * - Jozef Fulop
- * - Nicolás Hock Isaza
- * - Tom Hughes
- * - Simon Hürlimann (CyT)
- * - jofi
- * - Jakub ADAMEC
- * - Marek Adamický
- */
-return [
- 'year' => 'rok|:count roky|:count rokov',
- 'y' => ':count r',
- 'month' => 'mesiac|:count mesiace|:count mesiacov',
- 'm' => ':count m',
- 'week' => 'týždeň|:count týždne|:count týždňov',
- 'w' => ':count t',
- 'day' => 'deň|:count dni|:count dní',
- 'd' => ':count d',
- 'hour' => 'hodinu|:count hodiny|:count hodín',
- 'h' => ':count h',
- 'minute' => 'minútu|:count minúty|:count minút',
- 'min' => ':count min',
- 'second' => 'sekundu|:count sekundy|:count sekúnd',
- 's' => ':count s',
- 'ago' => 'pred :time',
- 'from_now' => 'za :time',
- 'after' => 'o :time neskôr',
- 'before' => ':time predtým',
- 'year_ago' => 'rokom|:count rokmi|:count rokmi',
- 'month_ago' => 'mesiacom|:count mesiacmi|:count mesiacmi',
- 'week_ago' => 'týždňom|:count týždňami|:count týždňami',
- 'day_ago' => 'dňom|:count dňami|:count dňami',
- 'hour_ago' => 'hodinou|:count hodinami|:count hodinami',
- 'minute_ago' => 'minútou|:count minútami|:count minútami',
- 'second_ago' => 'sekundou|:count sekundami|:count sekundami',
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' a '],
- 'diff_now' => 'teraz',
- 'diff_yesterday' => 'včera',
- 'diff_tomorrow' => 'zajtra',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'DD. MMMM YYYY',
- 'LLL' => 'D. M. HH:mm',
- 'LLLL' => 'dddd D. MMMM YYYY HH:mm',
- ],
- 'weekdays' => ['nedeľa', 'pondelok', 'utorok', 'streda', 'štvrtok', 'piatok', 'sobota'],
- 'weekdays_short' => ['ne', 'po', 'ut', 'st', 'št', 'pi', 'so'],
- 'weekdays_min' => ['ne', 'po', 'ut', 'st', 'št', 'pi', 'so'],
- 'months' => ['január', 'február', 'marec', 'apríl', 'máj', 'jún', 'júl', 'august', 'september', 'október', 'november', 'december'],
- 'months_short' => ['jan', 'feb', 'mar', 'apr', 'máj', 'jún', 'júl', 'aug', 'sep', 'okt', 'nov', 'dec'],
- 'meridiem' => ['dopoludnia', 'popoludní'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sk_SK.php b/vendor/nesbot/carbon/src/Carbon/Lang/sk_SK.php
deleted file mode 100644
index 0515601a..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sk_SK.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/sk.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sl.php b/vendor/nesbot/carbon/src/Carbon/Lang/sl.php
deleted file mode 100644
index 2e197212..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sl.php
+++ /dev/null
@@ -1,129 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Philippe Vaucher
- * - Tsutomu Kuroda
- * - tjku
- * - Max Melentiev
- * - Juanito Fatas
- * - Akira Matsuda
- * - Christopher Dell
- * - Enrique Vidal
- * - Simone Carletti
- * - Aaron Patterson
- * - Nicolás Hock Isaza
- * - Miha Rebernik
- * - Gal Jakič (morpheus7CS)
- * - Glavić
- * - Anže Časar
- * - Lovro Tramšek (Lovro1107)
- * - burut13
- */
-
-use Carbon\CarbonInterface;
-
-return [
- 'year' => ':count leto|:count leti|:count leta|:count let',
- 'y' => ':count leto|:count leti|:count leta|:count let',
- 'month' => ':count mesec|:count meseca|:count mesece|:count mesecev',
- 'm' => ':count mes.',
- 'week' => ':count teden|:count tedna|:count tedne|:count tednov',
- 'w' => ':count ted.',
- 'day' => ':count dan|:count dni|:count dni|:count dni',
- 'd' => ':count dan|:count dni|:count dni|:count dni',
- 'hour' => ':count ura|:count uri|:count ure|:count ur',
- 'h' => ':count h',
- 'minute' => ':count minuta|:count minuti|:count minute|:count minut',
- 'min' => ':count min.',
- 'second' => ':count sekunda|:count sekundi|:count sekunde|:count sekund',
- 'a_second' => '{1}nekaj sekund|:count sekunda|:count sekundi|:count sekunde|:count sekund',
- 's' => ':count s',
-
- 'year_ago' => ':count letom|:count leti|:count leti|:count leti',
- 'y_ago' => ':count letom|:count leti|:count leti|:count leti',
- 'month_ago' => ':count mesecem|:count meseci|:count meseci|:count meseci',
- 'week_ago' => ':count tednom|:count tednoma|:count tedni|:count tedni',
- 'day_ago' => ':count dnem|:count dnevoma|:count dnevi|:count dnevi',
- 'd_ago' => ':count dnem|:count dnevoma|:count dnevi|:count dnevi',
- 'hour_ago' => ':count uro|:count urama|:count urami|:count urami',
- 'minute_ago' => ':count minuto|:count minutama|:count minutami|:count minutami',
- 'second_ago' => ':count sekundo|:count sekundama|:count sekundami|:count sekundami',
-
- 'day_from_now' => ':count dan|:count dneva|:count dni|:count dni',
- 'd_from_now' => ':count dan|:count dneva|:count dni|:count dni',
- 'hour_from_now' => ':count uro|:count uri|:count ure|:count ur',
- 'minute_from_now' => ':count minuto|:count minuti|:count minute|:count minut',
- 'second_from_now' => ':count sekundo|:count sekundi|:count sekunde|:count sekund',
-
- 'ago' => 'pred :time',
- 'from_now' => 'čez :time',
- 'after' => ':time kasneje',
- 'before' => ':time prej',
-
- 'diff_now' => 'ravnokar',
- 'diff_today' => 'danes',
- 'diff_today_regexp' => 'danes(?:\\s+ob)?',
- 'diff_yesterday' => 'včeraj',
- 'diff_yesterday_regexp' => 'včeraj(?:\\s+ob)?',
- 'diff_tomorrow' => 'jutri',
- 'diff_tomorrow_regexp' => 'jutri(?:\\s+ob)?',
- 'diff_before_yesterday' => 'predvčerajšnjim',
- 'diff_after_tomorrow' => 'pojutrišnjem',
-
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
-
- 'period_start_date' => 'od :date',
- 'period_end_date' => 'do :date',
-
- 'formats' => [
- 'LT' => 'H:mm',
- 'LTS' => 'H:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'D. MMMM YYYY',
- 'LLL' => 'D. MMMM YYYY H:mm',
- 'LLLL' => 'dddd, D. MMMM YYYY H:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[danes ob] LT',
- 'nextDay' => '[jutri ob] LT',
- 'nextWeek' => 'dddd [ob] LT',
- 'lastDay' => '[včeraj ob] LT',
- 'lastWeek' => function (CarbonInterface $date) {
- switch ($date->dayOfWeek) {
- case 0:
- return '[preteklo] [nedeljo] [ob] LT';
- case 1:
- return '[pretekli] [ponedeljek] [ob] LT';
- case 2:
- return '[pretekli] [torek] [ob] LT';
- case 3:
- return '[preteklo] [sredo] [ob] LT';
- case 4:
- return '[pretekli] [četrtek] [ob] LT';
- case 5:
- return '[pretekli] [petek] [ob] LT';
- case 6:
- return '[preteklo] [soboto] [ob] LT';
- }
- },
- 'sameElse' => 'L',
- ],
- 'months' => ['januar', 'februar', 'marec', 'april', 'maj', 'junij', 'julij', 'avgust', 'september', 'oktober', 'november', 'december'],
- 'months_short' => ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'avg', 'sep', 'okt', 'nov', 'dec'],
- 'weekdays' => ['nedelja', 'ponedeljek', 'torek', 'sreda', 'četrtek', 'petek', 'sobota'],
- 'weekdays_short' => ['ned', 'pon', 'tor', 'sre', 'čet', 'pet', 'sob'],
- 'weekdays_min' => ['ne', 'po', 'to', 'sr', 'če', 'pe', 'so'],
- 'list' => [', ', ' in '],
- 'meridiem' => ['dopoldan', 'popoldan'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sl_SI.php b/vendor/nesbot/carbon/src/Carbon/Lang/sl_SI.php
deleted file mode 100644
index 5dad8c81..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sl_SI.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/sl.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sm.php b/vendor/nesbot/carbon/src/Carbon/Lang/sm.php
deleted file mode 100644
index e8c118ac..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sm.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/sm_WS.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sm_WS.php b/vendor/nesbot/carbon/src/Carbon/Lang/sm_WS.php
deleted file mode 100644
index f0660687..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sm_WS.php
+++ /dev/null
@@ -1,53 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Samsung Electronics Co., Ltd. akhilesh.k@samsung.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['Ianuari', 'Fepuari', 'Mati', 'Aperila', 'Me', 'Iuni', 'Iulai', 'Auguso', 'Setema', 'Oketopa', 'Novema', 'Tesema'],
- 'months_short' => ['Ian', 'Fep', 'Mat', 'Ape', 'Me', 'Iun', 'Iul', 'Aug', 'Set', 'Oke', 'Nov', 'Tes'],
- 'weekdays' => ['Aso Sa', 'Aso Gafua', 'Aso Lua', 'Aso Lulu', 'Aso Tofi', 'Aso Farail', 'Aso To\'ana\'i'],
- 'weekdays_short' => ['Aso Sa', 'Aso Gaf', 'Aso Lua', 'Aso Lul', 'Aso Tof', 'Aso Far', 'Aso To\''],
- 'weekdays_min' => ['Aso Sa', 'Aso Gaf', 'Aso Lua', 'Aso Lul', 'Aso Tof', 'Aso Far', 'Aso To\''],
-
- 'hour' => ':count uati', // less reliable
- 'h' => ':count uati', // less reliable
- 'a_hour' => ':count uati', // less reliable
-
- 'minute' => ':count itiiti', // less reliable
- 'min' => ':count itiiti', // less reliable
- 'a_minute' => ':count itiiti', // less reliable
-
- 'second' => ':count lua', // less reliable
- 's' => ':count lua', // less reliable
- 'a_second' => ':count lua', // less reliable
-
- 'year' => ':count tausaga',
- 'y' => ':count tausaga',
- 'a_year' => ':count tausaga',
-
- 'month' => ':count māsina',
- 'm' => ':count māsina',
- 'a_month' => ':count māsina',
-
- 'week' => ':count vaiaso',
- 'w' => ':count vaiaso',
- 'a_week' => ':count vaiaso',
-
- 'day' => ':count aso',
- 'd' => ':count aso',
- 'a_day' => ':count aso',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/smn.php b/vendor/nesbot/carbon/src/Carbon/Lang/smn.php
deleted file mode 100644
index 20add023..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/smn.php
+++ /dev/null
@@ -1,57 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['ip.', 'ep.'],
- 'weekdays' => ['pasepeeivi', 'vuossaargâ', 'majebaargâ', 'koskoho', 'tuorâstuv', 'vástuppeeivi', 'lávurduv'],
- 'weekdays_short' => ['pas', 'vuo', 'maj', 'kos', 'tuo', 'vás', 'láv'],
- 'weekdays_min' => ['pa', 'vu', 'ma', 'ko', 'tu', 'vá', 'lá'],
- 'weekdays_standalone' => ['pasepeivi', 'vuossargâ', 'majebargâ', 'koskokko', 'tuorâstâh', 'vástuppeivi', 'lávurdâh'],
- 'months' => ['uđđâivemáánu', 'kuovâmáánu', 'njuhčâmáánu', 'cuáŋuimáánu', 'vyesimáánu', 'kesimáánu', 'syeinimáánu', 'porgemáánu', 'čohčâmáánu', 'roovvâdmáánu', 'skammâmáánu', 'juovlâmáánu'],
- 'months_short' => ['uđiv', 'kuovâ', 'njuhčâ', 'cuáŋui', 'vyesi', 'kesi', 'syeini', 'porge', 'čohčâ', 'roovvâd', 'skammâ', 'juovlâ'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'H.mm',
- 'LTS' => 'H.mm.ss',
- 'L' => 'D.M.YYYY',
- 'LL' => 'MMM D. YYYY',
- 'LLL' => 'MMMM D. YYYY H.mm',
- 'LLLL' => 'dddd, MMMM D. YYYY H.mm',
- ],
-
- 'hour' => ':count äigi', // less reliable
- 'h' => ':count äigi', // less reliable
- 'a_hour' => ':count äigi', // less reliable
-
- 'year' => ':count ihe',
- 'y' => ':count ihe',
- 'a_year' => ':count ihe',
-
- 'month' => ':count mánuppaje',
- 'm' => ':count mánuppaje',
- 'a_month' => ':count mánuppaje',
-
- 'week' => ':count okko',
- 'w' => ':count okko',
- 'a_week' => ':count okko',
-
- 'day' => ':count peivi',
- 'd' => ':count peivi',
- 'a_day' => ':count peivi',
-
- 'minute' => ':count miinut',
- 'min' => ':count miinut',
- 'a_minute' => ':count miinut',
-
- 'second' => ':count nubbe',
- 's' => ':count nubbe',
- 'a_second' => ':count nubbe',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sn.php b/vendor/nesbot/carbon/src/Carbon/Lang/sn.php
deleted file mode 100644
index 4f25028a..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sn.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['a', 'p'],
- 'weekdays' => ['Svondo', 'Muvhuro', 'Chipiri', 'Chitatu', 'China', 'Chishanu', 'Mugovera'],
- 'weekdays_short' => ['Svo', 'Muv', 'Chp', 'Cht', 'Chn', 'Chs', 'Mug'],
- 'weekdays_min' => ['Sv', 'Mu', 'Cp', 'Ct', 'Cn', 'Cs', 'Mg'],
- 'months' => ['Ndira', 'Kukadzi', 'Kurume', 'Kubvumbi', 'Chivabvu', 'Chikumi', 'Chikunguru', 'Nyamavhuvhu', 'Gunyana', 'Gumiguru', 'Mbudzi', 'Zvita'],
- 'months_short' => ['Ndi', 'Kuk', 'Kur', 'Kub', 'Chv', 'Chk', 'Chg', 'Nya', 'Gun', 'Gum', 'Mbu', 'Zvi'],
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'YYYY-MM-dd',
- 'LL' => 'YYYY MMM D',
- 'LLL' => 'YYYY MMMM D HH:mm',
- 'LLLL' => 'YYYY MMMM D, dddd HH:mm',
- ],
-
- 'year' => 'makore :count',
- 'y' => 'makore :count',
- 'a_year' => 'makore :count',
-
- 'month' => 'mwedzi :count',
- 'm' => 'mwedzi :count',
- 'a_month' => 'mwedzi :count',
-
- 'week' => 'vhiki :count',
- 'w' => 'vhiki :count',
- 'a_week' => 'vhiki :count',
-
- 'day' => 'mazuva :count',
- 'd' => 'mazuva :count',
- 'a_day' => 'mazuva :count',
-
- 'hour' => 'maawa :count',
- 'h' => 'maawa :count',
- 'a_hour' => 'maawa :count',
-
- 'minute' => 'minitsi :count',
- 'min' => 'minitsi :count',
- 'a_minute' => 'minitsi :count',
-
- 'second' => 'sekonzi :count',
- 's' => 'sekonzi :count',
- 'a_second' => 'sekonzi :count',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/so.php b/vendor/nesbot/carbon/src/Carbon/Lang/so.php
deleted file mode 100644
index 57852719..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/so.php
+++ /dev/null
@@ -1,74 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Author:
- * - Abdifatah Abdilahi(@abdifatahz)
- */
-return [
- 'year' => ':count sanad|:count sanadood',
- 'a_year' => 'sanad|:count sanadood',
- 'y' => '{1}:countsn|{0}:countsns|]1,Inf[:countsn',
- 'month' => ':count bil|:count bilood',
- 'a_month' => 'bil|:count bilood',
- 'm' => ':countbil',
- 'week' => ':count isbuuc',
- 'a_week' => 'isbuuc|:count isbuuc',
- 'w' => ':countis',
- 'day' => ':count maalin|:count maalmood',
- 'a_day' => 'maalin|:count maalmood',
- 'd' => ':countml',
- 'hour' => ':count saac',
- 'a_hour' => 'saacad|:count saac',
- 'h' => ':countsc',
- 'minute' => ':count daqiiqo',
- 'a_minute' => 'daqiiqo|:count daqiiqo',
- 'min' => ':countdq',
- 'second' => ':count ilbidhiqsi',
- 'a_second' => 'xooga ilbidhiqsiyo|:count ilbidhiqsi',
- 's' => ':countil',
- 'ago' => ':time kahor',
- 'from_now' => ':time gudahood',
- 'after' => ':time kedib',
- 'before' => ':time kahor',
- 'diff_now' => 'hada',
- 'diff_today' => 'maanta',
- 'diff_today_regexp' => 'maanta(?:\s+markay\s+(?:tahay|ahayd))?',
- 'diff_yesterday' => 'shalayto',
- 'diff_yesterday_regexp' => 'shalayto(?:\s+markay\s+ahayd)?',
- 'diff_tomorrow' => 'beri',
- 'diff_tomorrow_regexp' => 'beri(?:\s+markay\s+tahay)?',
- 'diff_before_yesterday' => 'doraato',
- 'diff_after_tomorrow' => 'saadanbe',
- 'period_recurrences' => 'mar|:count jeer',
- 'period_interval' => ':interval kasta',
- 'period_start_date' => 'laga bilaabo :date',
- 'period_end_date' => 'ilaa :date',
- 'months' => ['Janaayo', 'Febraayo', 'Abriil', 'Maajo', 'Juun', 'Luuliyo', 'Agoosto', 'Sebteembar', 'Oktoobar', 'Nofeembar', 'Diseembar'],
- 'months_short' => ['Jan', 'Feb', 'Mar', 'Abr', 'Mjo', 'Jun', 'Lyo', 'Agt', 'Seb', 'Okt', 'Nof', 'Dis'],
- 'weekdays' => ['Axad', 'Isniin', 'Talaada', 'Arbaca', 'Khamiis', 'Jimce', 'Sabti'],
- 'weekdays_short' => ['Axd', 'Isn', 'Tal', 'Arb', 'Kha', 'Jim', 'Sbt'],
- 'weekdays_min' => ['Ax', 'Is', 'Ta', 'Ar', 'Kh', 'Ji', 'Sa'],
- 'list' => [', ', ' and '],
- 'first_day_of_week' => 6,
- 'day_of_first_week_of_year' => 1,
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'calendar' => [
- 'sameDay' => '[Maanta markay tahay] LT',
- 'nextDay' => '[Beri markay tahay] LT',
- 'nextWeek' => 'dddd [markay tahay] LT',
- 'lastDay' => '[Shalay markay ahayd] LT',
- 'lastWeek' => '[Hore] dddd [Markay ahayd] LT',
- 'sameElse' => 'L',
- ],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/so_DJ.php b/vendor/nesbot/carbon/src/Carbon/Lang/so_DJ.php
deleted file mode 100644
index 273dda8d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/so_DJ.php
+++ /dev/null
@@ -1,20 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Ge'ez Frontier Foundation locales@geez.org
- */
-return array_replace_recursive(require __DIR__.'/so.php', [
- 'formats' => [
- 'L' => 'DD.MM.YYYY',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/so_ET.php b/vendor/nesbot/carbon/src/Carbon/Lang/so_ET.php
deleted file mode 100644
index 7b699715..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/so_ET.php
+++ /dev/null
@@ -1,16 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Ge'ez Frontier Foundation locales@geez.org
- */
-return require __DIR__.'/so.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/so_KE.php b/vendor/nesbot/carbon/src/Carbon/Lang/so_KE.php
deleted file mode 100644
index 7b699715..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/so_KE.php
+++ /dev/null
@@ -1,16 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Ge'ez Frontier Foundation locales@geez.org
- */
-return require __DIR__.'/so.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/so_SO.php b/vendor/nesbot/carbon/src/Carbon/Lang/so_SO.php
deleted file mode 100644
index 7b699715..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/so_SO.php
+++ /dev/null
@@ -1,16 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Ge'ez Frontier Foundation locales@geez.org
- */
-return require __DIR__.'/so.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sq.php b/vendor/nesbot/carbon/src/Carbon/Lang/sq.php
deleted file mode 100644
index ffa592ec..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sq.php
+++ /dev/null
@@ -1,79 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - François B
- * - JD Isaacks
- * - Fadion Dashi
- */
-return [
- 'year' => ':count vit|:count vjet',
- 'a_year' => 'një vit|:count vite',
- 'y' => ':count v.',
- 'month' => ':count muaj',
- 'a_month' => 'një muaj|:count muaj',
- 'm' => ':count muaj',
- 'week' => ':count javë',
- 'a_week' => ':count javë|:count javë',
- 'w' => ':count j.',
- 'day' => ':count ditë',
- 'a_day' => 'një ditë|:count ditë',
- 'd' => ':count d.',
- 'hour' => ':count orë',
- 'a_hour' => 'një orë|:count orë',
- 'h' => ':count o.',
- 'minute' => ':count minutë|:count minuta',
- 'a_minute' => 'një minutë|:count minuta',
- 'min' => ':count min.',
- 'second' => ':count sekondë|:count sekonda',
- 'a_second' => 'disa sekonda|:count sekonda',
- 's' => ':count s.',
- 'ago' => ':time më parë',
- 'from_now' => 'në :time',
- 'after' => ':time pas',
- 'before' => ':time para',
- 'diff_now' => 'tani',
- 'diff_today' => 'Sot',
- 'diff_today_regexp' => 'Sot(?:\\s+në)?',
- 'diff_yesterday' => 'dje',
- 'diff_yesterday_regexp' => 'Dje(?:\\s+në)?',
- 'diff_tomorrow' => 'nesër',
- 'diff_tomorrow_regexp' => 'Nesër(?:\\s+në)?',
- 'diff_before_yesterday' => 'pardje',
- 'diff_after_tomorrow' => 'pasnesër',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[Sot në] LT',
- 'nextDay' => '[Nesër në] LT',
- 'nextWeek' => 'dddd [në] LT',
- 'lastDay' => '[Dje në] LT',
- 'lastWeek' => 'dddd [e kaluar në] LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => ':number.',
- 'meridiem' => ['PD', 'MD'],
- 'months' => ['janar', 'shkurt', 'mars', 'prill', 'maj', 'qershor', 'korrik', 'gusht', 'shtator', 'tetor', 'nëntor', 'dhjetor'],
- 'months_short' => ['jan', 'shk', 'mar', 'pri', 'maj', 'qer', 'kor', 'gus', 'sht', 'tet', 'nën', 'dhj'],
- 'weekdays' => ['e diel', 'e hënë', 'e martë', 'e mërkurë', 'e enjte', 'e premte', 'e shtunë'],
- 'weekdays_short' => ['die', 'hën', 'mar', 'mër', 'enj', 'pre', 'sht'],
- 'weekdays_min' => ['d', 'h', 'ma', 'më', 'e', 'p', 'sh'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' dhe '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sq_AL.php b/vendor/nesbot/carbon/src/Carbon/Lang/sq_AL.php
deleted file mode 100644
index ea5df3f2..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sq_AL.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/sq.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sq_MK.php b/vendor/nesbot/carbon/src/Carbon/Lang/sq_MK.php
deleted file mode 100644
index 62f752c4..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sq_MK.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/sq.php', [
- 'formats' => [
- 'L' => 'D.M.YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY, HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY, HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sq_XK.php b/vendor/nesbot/carbon/src/Carbon/Lang/sq_XK.php
deleted file mode 100644
index 62f752c4..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sq_XK.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/sq.php', [
- 'formats' => [
- 'L' => 'D.M.YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY, HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY, HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sr.php b/vendor/nesbot/carbon/src/Carbon/Lang/sr.php
deleted file mode 100644
index 68ba663a..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sr.php
+++ /dev/null
@@ -1,112 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Josh Soref
- * - François B
- * - shaishavgandhi05
- * - Serhan Apaydın
- * - JD Isaacks
- * - Glavić
- * - Milos Sakovic
- */
-
-use Carbon\CarbonInterface;
-
-return [
- 'year' => ':count godina|:count godine|:count godina',
- 'y' => ':count g.',
- 'month' => ':count mesec|:count meseca|:count meseci',
- 'm' => ':count mj.',
- 'week' => ':count nedelja|:count nedelje|:count nedelja',
- 'w' => ':count ned.',
- 'day' => ':count dan|:count dana|:count dana',
- 'd' => ':count d.',
- 'hour' => ':count sat|:count sata|:count sati',
- 'h' => ':count č.',
- 'minute' => ':count minut|:count minuta|:count minuta',
- 'min' => ':count min.',
- 'second' => ':count sekundu|:count sekunde|:count sekundi',
- 's' => ':count sek.',
- 'ago' => 'pre :time',
- 'from_now' => 'za :time',
- 'after' => 'nakon :time',
- 'before' => 'pre :time',
-
- 'year_from_now' => ':count godinu|:count godine|:count godina',
- 'year_ago' => ':count godinu|:count godine|:count godina',
- 'week_from_now' => ':count nedelju|:count nedelje|:count nedelja',
- 'week_ago' => ':count nedelju|:count nedelje|:count nedelja',
-
- 'diff_now' => 'upravo sada',
- 'diff_today' => 'danas',
- 'diff_today_regexp' => 'danas(?:\\s+u)?',
- 'diff_yesterday' => 'juče',
- 'diff_yesterday_regexp' => 'juče(?:\\s+u)?',
- 'diff_tomorrow' => 'sutra',
- 'diff_tomorrow_regexp' => 'sutra(?:\\s+u)?',
- 'diff_before_yesterday' => 'prekjuče',
- 'diff_after_tomorrow' => 'preksutra',
- 'formats' => [
- 'LT' => 'H:mm',
- 'LTS' => 'H:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'D. MMMM YYYY',
- 'LLL' => 'D. MMMM YYYY H:mm',
- 'LLLL' => 'dddd, D. MMMM YYYY H:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[danas u] LT',
- 'nextDay' => '[sutra u] LT',
- 'nextWeek' => function (CarbonInterface $date) {
- switch ($date->dayOfWeek) {
- case 0:
- return '[u nedelju u] LT';
- case 3:
- return '[u sredu u] LT';
- case 6:
- return '[u subotu u] LT';
- default:
- return '[u] dddd [u] LT';
- }
- },
- 'lastDay' => '[juče u] LT',
- 'lastWeek' => function (CarbonInterface $date) {
- switch ($date->dayOfWeek) {
- case 0:
- return '[prošle nedelje u] LT';
- case 1:
- return '[prošlog ponedeljka u] LT';
- case 2:
- return '[prošlog utorka u] LT';
- case 3:
- return '[prošle srede u] LT';
- case 4:
- return '[prošlog četvrtka u] LT';
- case 5:
- return '[prošlog petka u] LT';
- default:
- return '[prošle subote u] LT';
- }
- },
- 'sameElse' => 'L',
- ],
- 'ordinal' => ':number.',
- 'months' => ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar'],
- 'months_short' => ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun', 'jul', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'],
- 'weekdays' => ['nedelja', 'ponedeljak', 'utorak', 'sreda', 'četvrtak', 'petak', 'subota'],
- 'weekdays_short' => ['ned.', 'pon.', 'uto.', 'sre.', 'čet.', 'pet.', 'sub.'],
- 'weekdays_min' => ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'list' => [', ', ' i '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl.php b/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl.php
deleted file mode 100644
index c09df19c..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl.php
+++ /dev/null
@@ -1,112 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Josh Soref
- * - François B
- * - shaishavgandhi05
- * - Serhan Apaydın
- * - JD Isaacks
- * - Glavić
- * - Nikola Zeravcic
- * - Milos Sakovic
- */
-
-use Carbon\CarbonInterface;
-
-return [
- 'year' => '{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54}:count године|[0,Inf[:count година',
- 'y' => ':count г.',
- 'month' => '{1}:count месец|{2,3,4}:count месеца|[0,Inf[:count месеци',
- 'm' => ':count м.',
- 'week' => '{1}:count недеља|{2,3,4}:count недеље|[0,Inf[:count недеља',
- 'w' => ':count нед.',
- 'day' => '{1,21,31}:count дан|[0,Inf[:count дана',
- 'd' => ':count д.',
- 'hour' => '{1,21}:count сат|{2,3,4,22,23,24}:count сата|[0,Inf[:count сати',
- 'h' => ':count ч.',
- 'minute' => '{1,21,31,41,51}:count минут|[0,Inf[:count минута',
- 'min' => ':count мин.',
- 'second' => '{1,21,31,41,51}:count секунд|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54}:count секунде|[0,Inf[:count секунди',
- 's' => ':count сек.',
- 'ago' => 'пре :time',
- 'from_now' => 'за :time',
- 'after' => ':time након',
- 'before' => ':time пре',
- 'year_from_now' => '{1,21,31,41,51}:count годину|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54}:count године|[0,Inf[:count година',
- 'year_ago' => '{1,21,31,41,51}:count годину|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54}:count године|[0,Inf[:count година',
- 'week_from_now' => '{1}:count недељу|{2,3,4}:count недеље|[0,Inf[:count недеља',
- 'week_ago' => '{1}:count недељу|{2,3,4}:count недеље|[0,Inf[:count недеља',
- 'diff_now' => 'управо сада',
- 'diff_today' => 'данас',
- 'diff_today_regexp' => 'данас(?:\\s+у)?',
- 'diff_yesterday' => 'јуче',
- 'diff_yesterday_regexp' => 'јуче(?:\\s+у)?',
- 'diff_tomorrow' => 'сутра',
- 'diff_tomorrow_regexp' => 'сутра(?:\\s+у)?',
- 'diff_before_yesterday' => 'прекјуче',
- 'diff_after_tomorrow' => 'прекосутра',
- 'formats' => [
- 'LT' => 'H:mm',
- 'LTS' => 'H:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'D. MMMM YYYY',
- 'LLL' => 'D. MMMM YYYY H:mm',
- 'LLLL' => 'dddd, D. MMMM YYYY H:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[данас у] LT',
- 'nextDay' => '[сутра у] LT',
- 'nextWeek' => function (CarbonInterface $date) {
- switch ($date->dayOfWeek) {
- case 0:
- return '[у недељу у] LT';
- case 3:
- return '[у среду у] LT';
- case 6:
- return '[у суботу у] LT';
- default:
- return '[у] dddd [у] LT';
- }
- },
- 'lastDay' => '[јуче у] LT',
- 'lastWeek' => function (CarbonInterface $date) {
- switch ($date->dayOfWeek) {
- case 0:
- return '[прошле недеље у] LT';
- case 1:
- return '[прошлог понедељка у] LT';
- case 2:
- return '[прошлог уторка у] LT';
- case 3:
- return '[прошле среде у] LT';
- case 4:
- return '[прошлог четвртка у] LT';
- case 5:
- return '[прошлог петка у] LT';
- default:
- return '[прошле суботе у] LT';
- }
- },
- 'sameElse' => 'L',
- ],
- 'ordinal' => ':number.',
- 'months' => ['јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', 'новембар', 'децембар'],
- 'months_short' => ['јан.', 'феб.', 'мар.', 'апр.', 'мај', 'јун', 'јул', 'авг.', 'сеп.', 'окт.', 'нов.', 'дец.'],
- 'weekdays' => ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'],
- 'weekdays_short' => ['нед.', 'пон.', 'уто.', 'сре.', 'чет.', 'пет.', 'суб.'],
- 'weekdays_min' => ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'list' => [', ', ' и '],
- 'meridiem' => ['АМ', 'ПМ'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_BA.php b/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_BA.php
deleted file mode 100644
index 0fb63d76..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_BA.php
+++ /dev/null
@@ -1,23 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/sr_Cyrl.php', [
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D.M.yy.',
- 'LL' => 'DD.MM.YYYY.',
- 'LLL' => 'DD. MMMM YYYY. HH:mm',
- 'LLLL' => 'dddd, DD. MMMM YYYY. HH:mm',
- ],
- 'weekdays' => ['недјеља', 'понедељак', 'уторак', 'сриједа', 'четвртак', 'петак', 'субота'],
- 'weekdays_short' => ['нед.', 'пон.', 'ут.', 'ср.', 'чет.', 'пет.', 'суб.'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_ME.php b/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_ME.php
deleted file mode 100644
index d13229ab..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_ME.php
+++ /dev/null
@@ -1,109 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Glavić
- * - Milos Sakovic
- */
-
-use Carbon\CarbonInterface;
-
-return [
- 'year' => '{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54}:count године|[0,Inf[:count година',
- 'y' => ':count г.',
- 'month' => '{1}:count мјесец|{2,3,4}:count мјесеца|[0,Inf[:count мјесеци',
- 'm' => ':count мј.',
- 'week' => '{1}:count недјеља|{2,3,4}:count недјеље|[0,Inf[:count недјеља',
- 'w' => ':count нед.',
- 'day' => '{1,21,31}:count дан|[0,Inf[:count дана',
- 'd' => ':count д.',
- 'hour' => '{1,21}:count сат|{2,3,4,22,23,24}:count сата|[0,Inf[:count сати',
- 'h' => ':count ч.',
- 'minute' => '{1,21,31,41,51}:count минут|[0,Inf[:count минута',
- 'min' => ':count мин.',
- 'second' => '{1,21,31,41,51}:count секунд|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54}:count секунде|[0,Inf[:count секунди',
- 's' => ':count сек.',
- 'ago' => 'прије :time',
- 'from_now' => 'за :time',
- 'after' => ':time након',
- 'before' => ':time прије',
-
- 'year_from_now' => '{1,21,31,41,51}:count годину|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54}:count године|[0,Inf[:count година',
- 'year_ago' => '{1,21,31,41,51}:count годину|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54}:count године|[0,Inf[:count година',
-
- 'week_from_now' => '{1}:count недјељу|{2,3,4}:count недјеље|[0,Inf[:count недјеља',
- 'week_ago' => '{1}:count недјељу|{2,3,4}:count недјеље|[0,Inf[:count недјеља',
-
- 'diff_now' => 'управо сада',
- 'diff_today' => 'данас',
- 'diff_today_regexp' => 'данас(?:\\s+у)?',
- 'diff_yesterday' => 'јуче',
- 'diff_yesterday_regexp' => 'јуче(?:\\s+у)?',
- 'diff_tomorrow' => 'сутра',
- 'diff_tomorrow_regexp' => 'сутра(?:\\s+у)?',
- 'diff_before_yesterday' => 'прекјуче',
- 'diff_after_tomorrow' => 'прекосјутра',
- 'formats' => [
- 'LT' => 'H:mm',
- 'LTS' => 'H:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'D. MMMM YYYY',
- 'LLL' => 'D. MMMM YYYY H:mm',
- 'LLLL' => 'dddd, D. MMMM YYYY H:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[данас у] LT',
- 'nextDay' => '[сутра у] LT',
- 'nextWeek' => function (CarbonInterface $date) {
- switch ($date->dayOfWeek) {
- case 0:
- return '[у недељу у] LT';
- case 3:
- return '[у среду у] LT';
- case 6:
- return '[у суботу у] LT';
- default:
- return '[у] dddd [у] LT';
- }
- },
- 'lastDay' => '[јуче у] LT',
- 'lastWeek' => function (CarbonInterface $date) {
- switch ($date->dayOfWeek) {
- case 0:
- return '[прошле недеље у] LT';
- case 1:
- return '[прошлог понедељка у] LT';
- case 2:
- return '[прошлог уторка у] LT';
- case 3:
- return '[прошле среде у] LT';
- case 4:
- return '[прошлог четвртка у] LT';
- case 5:
- return '[прошлог петка у] LT';
- default:
- return '[прошле суботе у] LT';
- }
- },
- 'sameElse' => 'L',
- ],
- 'ordinal' => ':number.',
- 'months' => ['јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', 'новембар', 'децембар'],
- 'months_short' => ['јан.', 'феб.', 'мар.', 'апр.', 'мај', 'јун', 'јул', 'авг.', 'сеп.', 'окт.', 'нов.', 'дец.'],
- 'weekdays' => ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'],
- 'weekdays_short' => ['нед.', 'пон.', 'уто.', 'сре.', 'чет.', 'пет.', 'суб.'],
- 'weekdays_min' => ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'list' => [', ', ' и '],
- 'meridiem' => ['АМ', 'ПМ'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_XK.php b/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_XK.php
deleted file mode 100644
index 492baf0c..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_XK.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/sr_Cyrl_BA.php', [
- 'weekdays' => ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn.php b/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn.php
deleted file mode 100644
index 99716747..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/sr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_BA.php b/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_BA.php
deleted file mode 100644
index 897c674a..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_BA.php
+++ /dev/null
@@ -1,23 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/sr_Latn.php', [
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D.M.yy.',
- 'LL' => 'DD.MM.YYYY.',
- 'LLL' => 'DD. MMMM YYYY. HH:mm',
- 'LLLL' => 'dddd, DD. MMMM YYYY. HH:mm',
- ],
- 'weekdays' => ['nedjelja', 'ponedeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'],
- 'weekdays_short' => ['ned.', 'pon.', 'ut.', 'sr.', 'čet.', 'pet.', 'sub.'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_ME.php b/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_ME.php
deleted file mode 100644
index e2133ef1..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_ME.php
+++ /dev/null
@@ -1,66 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Glavić
- * - Milos Sakovic
- */
-
-use Carbon\CarbonInterface;
-
-return array_replace_recursive(require __DIR__.'/sr.php', [
- 'month' => ':count mjesec|:count mjeseca|:count mjeseci',
- 'week' => ':count nedjelja|:count nedjelje|:count nedjelja',
- 'second' => ':count sekund|:count sekunde|:count sekundi',
- 'ago' => 'prije :time',
- 'from_now' => 'za :time',
- 'after' => ':time nakon',
- 'before' => ':time prije',
- 'week_from_now' => ':count nedjelju|:count nedjelje|:count nedjelja',
- 'week_ago' => ':count nedjelju|:count nedjelje|:count nedjelja',
- 'diff_tomorrow' => 'sjutra',
- 'calendar' => [
- 'nextDay' => '[sjutra u] LT',
- 'nextWeek' => function (CarbonInterface $date) {
- switch ($date->dayOfWeek) {
- case 0:
- return '[u nedjelju u] LT';
- case 3:
- return '[u srijedu u] LT';
- case 6:
- return '[u subotu u] LT';
- default:
- return '[u] dddd [u] LT';
- }
- },
- 'lastWeek' => function (CarbonInterface $date) {
- switch ($date->dayOfWeek) {
- case 0:
- return '[prošle nedjelje u] LT';
- case 1:
- return '[prošle nedjelje u] LT';
- case 2:
- return '[prošlog utorka u] LT';
- case 3:
- return '[prošle srijede u] LT';
- case 4:
- return '[prošlog četvrtka u] LT';
- case 5:
- return '[prošlog petka u] LT';
- default:
- return '[prošle subote u] LT';
- }
- },
- ],
- 'weekdays' => ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'],
- 'weekdays_short' => ['ned.', 'pon.', 'uto.', 'sri.', 'čet.', 'pet.', 'sub.'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_XK.php b/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_XK.php
deleted file mode 100644
index d0b9d10b..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_XK.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/sr_Latn_BA.php', [
- 'weekdays' => ['nedelja', 'ponedeljak', 'utorak', 'sreda', 'četvrtak', 'petak', 'subota'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sr_ME.php b/vendor/nesbot/carbon/src/Carbon/Lang/sr_ME.php
deleted file mode 100644
index d7c65b91..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sr_ME.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/sr_Latn_ME.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sr_RS.php b/vendor/nesbot/carbon/src/Carbon/Lang/sr_RS.php
deleted file mode 100644
index bc5e04bf..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sr_RS.php
+++ /dev/null
@@ -1,16 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - sr_YU, sr_CS locale Danilo Segan bug-glibc-locales@gnu.org
- */
-return require __DIR__.'/sr_Cyrl.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sr_RS@latin.php b/vendor/nesbot/carbon/src/Carbon/Lang/sr_RS@latin.php
deleted file mode 100644
index 99716747..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sr_RS@latin.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/sr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ss.php b/vendor/nesbot/carbon/src/Carbon/Lang/ss.php
deleted file mode 100644
index cd4b9190..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ss.php
+++ /dev/null
@@ -1,78 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - François B
- * - Nicolai Davies
- */
-return [
- 'year' => '{1}umnyaka|:count iminyaka',
- 'month' => '{1}inyanga|:count tinyanga',
- 'week' => '{1}:count liviki|:count emaviki',
- 'day' => '{1}lilanga|:count emalanga',
- 'hour' => '{1}lihora|:count emahora',
- 'minute' => '{1}umzuzu|:count emizuzu',
- 'second' => '{1}emizuzwana lomcane|:count mzuzwana',
- 'ago' => 'wenteka nga :time',
- 'from_now' => 'nga :time',
- 'diff_yesterday' => 'Itolo',
- 'diff_yesterday_regexp' => 'Itolo(?:\\s+nga)?',
- 'diff_today' => 'Namuhla',
- 'diff_today_regexp' => 'Namuhla(?:\\s+nga)?',
- 'diff_tomorrow' => 'Kusasa',
- 'diff_tomorrow_regexp' => 'Kusasa(?:\\s+nga)?',
- 'formats' => [
- 'LT' => 'h:mm A',
- 'LTS' => 'h:mm:ss A',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY h:mm A',
- 'LLLL' => 'dddd, D MMMM YYYY h:mm A',
- ],
- 'calendar' => [
- 'sameDay' => '[Namuhla nga] LT',
- 'nextDay' => '[Kusasa nga] LT',
- 'nextWeek' => 'dddd [nga] LT',
- 'lastDay' => '[Itolo nga] LT',
- 'lastWeek' => 'dddd [leliphelile] [nga] LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => function ($number) {
- $lastDigit = $number % 10;
-
- return $number.(
- (~~($number % 100 / 10) === 1) ? 'e' : (
- ($lastDigit === 1 || $lastDigit === 2) ? 'a' : 'e'
- )
- );
- },
- 'meridiem' => function ($hour) {
- if ($hour < 11) {
- return 'ekuseni';
- }
- if ($hour < 15) {
- return 'emini';
- }
- if ($hour < 19) {
- return 'entsambama';
- }
-
- return 'ebusuku';
- },
- 'months' => ['Bhimbidvwane', 'Indlovana', 'Indlov\'lenkhulu', 'Mabasa', 'Inkhwekhweti', 'Inhlaba', 'Kholwane', 'Ingci', 'Inyoni', 'Imphala', 'Lweti', 'Ingongoni'],
- 'months_short' => ['Bhi', 'Ina', 'Inu', 'Mab', 'Ink', 'Inh', 'Kho', 'Igc', 'Iny', 'Imp', 'Lwe', 'Igo'],
- 'weekdays' => ['Lisontfo', 'Umsombuluko', 'Lesibili', 'Lesitsatfu', 'Lesine', 'Lesihlanu', 'Umgcibelo'],
- 'weekdays_short' => ['Lis', 'Umb', 'Lsb', 'Les', 'Lsi', 'Lsh', 'Umg'],
- 'weekdays_min' => ['Li', 'Us', 'Lb', 'Lt', 'Ls', 'Lh', 'Ug'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ss_ZA.php b/vendor/nesbot/carbon/src/Carbon/Lang/ss_ZA.php
deleted file mode 100644
index ba89527c..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ss_ZA.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/ss.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/st.php b/vendor/nesbot/carbon/src/Carbon/Lang/st.php
deleted file mode 100644
index b065445b..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/st.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/st_ZA.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/st_ZA.php b/vendor/nesbot/carbon/src/Carbon/Lang/st_ZA.php
deleted file mode 100644
index 5bce7f20..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/st_ZA.php
+++ /dev/null
@@ -1,54 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Zuza Software Foundation (Translate.org.za) Dwayne Bailey dwayne@translate.org.za
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['Pherekgong', 'Hlakola', 'Tlhakubele', 'Mmese', 'Motsheanong', 'Phupjane', 'Phupu', 'Phato', 'Leotse', 'Mphalane', 'Pudungwana', 'Tshitwe'],
- 'months_short' => ['Phe', 'Hla', 'TlH', 'Mme', 'Mot', 'Jan', 'Upu', 'Pha', 'Leo', 'Mph', 'Pud', 'Tsh'],
- 'weekdays' => ['Sontaha', 'Mantaha', 'Labobedi', 'Laboraro', 'Labone', 'Labohlano', 'Moqebelo'],
- 'weekdays_short' => ['Son', 'Mma', 'Bed', 'Rar', 'Ne', 'Hla', 'Moq'],
- 'weekdays_min' => ['Son', 'Mma', 'Bed', 'Rar', 'Ne', 'Hla', 'Moq'],
- 'day_of_first_week_of_year' => 1,
-
- 'week' => ':count Sontaha', // less reliable
- 'w' => ':count Sontaha', // less reliable
- 'a_week' => ':count Sontaha', // less reliable
-
- 'day' => ':count letsatsi', // less reliable
- 'd' => ':count letsatsi', // less reliable
- 'a_day' => ':count letsatsi', // less reliable
-
- 'hour' => ':count sešupanako', // less reliable
- 'h' => ':count sešupanako', // less reliable
- 'a_hour' => ':count sešupanako', // less reliable
-
- 'minute' => ':count menyane', // less reliable
- 'min' => ':count menyane', // less reliable
- 'a_minute' => ':count menyane', // less reliable
-
- 'second' => ':count thusa', // less reliable
- 's' => ':count thusa', // less reliable
- 'a_second' => ':count thusa', // less reliable
-
- 'year' => ':count selemo',
- 'y' => ':count selemo',
- 'a_year' => ':count selemo',
-
- 'month' => ':count kgwedi',
- 'm' => ':count kgwedi',
- 'a_month' => ':count kgwedi',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sv.php b/vendor/nesbot/carbon/src/Carbon/Lang/sv.php
deleted file mode 100644
index ca33e1c4..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sv.php
+++ /dev/null
@@ -1,87 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - François B
- * - Kristoffer Snabb
- * - JD Isaacks
- * - Jens Herlevsen
- * - Nightpine
- * - Anders Nygren (litemerafrukt)
- */
-return [
- 'year' => ':count år',
- 'a_year' => 'ett år|:count år',
- 'y' => ':count år',
- 'month' => ':count månad|:count månader',
- 'a_month' => 'en månad|:count månader',
- 'm' => ':count mån',
- 'week' => ':count vecka|:count veckor',
- 'a_week' => 'en vecka|:count veckor',
- 'w' => ':count v',
- 'day' => ':count dag|:count dagar',
- 'a_day' => 'en dag|:count dagar',
- 'd' => ':count dgr',
- 'hour' => ':count timme|:count timmar',
- 'a_hour' => 'en timme|:count timmar',
- 'h' => ':count tim',
- 'minute' => ':count minut|:count minuter',
- 'a_minute' => 'en minut|:count minuter',
- 'min' => ':count min',
- 'second' => ':count sekund|:count sekunder',
- 'a_second' => 'några sekunder|:count sekunder',
- 's' => ':count s',
- 'ago' => 'för :time sedan',
- 'from_now' => 'om :time',
- 'after' => ':time efter',
- 'before' => ':time före',
- 'diff_now' => 'nu',
- 'diff_today' => 'I dag',
- 'diff_yesterday' => 'i går',
- 'diff_yesterday_regexp' => 'I går',
- 'diff_tomorrow' => 'i morgon',
- 'diff_tomorrow_regexp' => 'I morgon',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'YYYY-MM-DD',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY [kl.] HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY [kl.] HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[I dag] LT',
- 'nextDay' => '[I morgon] LT',
- 'nextWeek' => '[På] dddd LT',
- 'lastDay' => '[I går] LT',
- 'lastWeek' => '[I] dddd[s] LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => function ($number) {
- $lastDigit = $number % 10;
-
- return $number.(
- (~~($number % 100 / 10) === 1) ? 'e' : (
- ($lastDigit === 1 || $lastDigit === 2) ? 'a' : 'e'
- )
- );
- },
- 'months' => ['januari', 'februari', 'mars', 'april', 'maj', 'juni', 'juli', 'augusti', 'september', 'oktober', 'november', 'december'],
- 'months_short' => ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],
- 'weekdays' => ['söndag', 'måndag', 'tisdag', 'onsdag', 'torsdag', 'fredag', 'lördag'],
- 'weekdays_short' => ['sön', 'mån', 'tis', 'ons', 'tors', 'fre', 'lör'],
- 'weekdays_min' => ['sö', 'må', 'ti', 'on', 'to', 'fr', 'lö'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' och '],
- 'meridiem' => ['fm', 'em'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sv_AX.php b/vendor/nesbot/carbon/src/Carbon/Lang/sv_AX.php
deleted file mode 100644
index 70cc5585..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sv_AX.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/sv.php', [
- 'formats' => [
- 'L' => 'YYYY-MM-dd',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sv_FI.php b/vendor/nesbot/carbon/src/Carbon/Lang/sv_FI.php
deleted file mode 100644
index d7182c83..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sv_FI.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/sv.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sv_SE.php b/vendor/nesbot/carbon/src/Carbon/Lang/sv_SE.php
deleted file mode 100644
index d7182c83..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sv_SE.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/sv.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sw.php b/vendor/nesbot/carbon/src/Carbon/Lang/sw.php
deleted file mode 100644
index f8630d53..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sw.php
+++ /dev/null
@@ -1,74 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - leyluj
- * - Josh Soref
- * - ryanhart2
- */
-return [
- 'year' => 'mwaka :count|miaka :count',
- 'a_year' => 'mwaka mmoja|miaka :count',
- 'y' => 'mwaka :count|miaka :count',
- 'month' => 'mwezi :count|miezi :count',
- 'a_month' => 'mwezi mmoja|miezi :count',
- 'm' => 'mwezi :count|miezi :count',
- 'week' => 'wiki :count',
- 'a_week' => 'wiki mmoja|wiki :count',
- 'w' => 'w. :count',
- 'day' => 'siku :count',
- 'a_day' => 'siku moja|masiku :count',
- 'd' => 'si. :count',
- 'hour' => 'saa :count|masaa :count',
- 'a_hour' => 'saa limoja|masaa :count',
- 'h' => 'saa :count|masaa :count',
- 'minute' => 'dakika :count',
- 'a_minute' => 'dakika moja|dakika :count',
- 'min' => 'd. :count',
- 'second' => 'sekunde :count',
- 'a_second' => 'hivi punde|sekunde :count',
- 's' => 'se. :count',
- 'ago' => 'tokea :time',
- 'from_now' => ':time baadaye',
- 'after' => ':time baada',
- 'before' => ':time kabla',
- 'diff_now' => 'sasa hivi',
- 'diff_today' => 'leo',
- 'diff_today_regexp' => 'leo(?:\\s+saa)?',
- 'diff_yesterday' => 'jana',
- 'diff_tomorrow' => 'kesho',
- 'diff_tomorrow_regexp' => 'kesho(?:\\s+saa)?',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[leo saa] LT',
- 'nextDay' => '[kesho saa] LT',
- 'nextWeek' => '[wiki ijayo] dddd [saat] LT',
- 'lastDay' => '[jana] LT',
- 'lastWeek' => '[wiki iliyopita] dddd [saat] LT',
- 'sameElse' => 'L',
- ],
- 'months' => ['Januari', 'Februari', 'Machi', 'Aprili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', 'Oktoba', 'Novemba', 'Desemba'],
- 'months_short' => ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'],
- 'weekdays' => ['Jumapili', 'Jumatatu', 'Jumanne', 'Jumatano', 'Alhamisi', 'Ijumaa', 'Jumamosi'],
- 'weekdays_short' => ['Jpl', 'Jtat', 'Jnne', 'Jtan', 'Alh', 'Ijm', 'Jmos'],
- 'weekdays_min' => ['J2', 'J3', 'J4', 'J5', 'Al', 'Ij', 'J1'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'list' => [', ', ' na '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sw_CD.php b/vendor/nesbot/carbon/src/Carbon/Lang/sw_CD.php
deleted file mode 100644
index ec9117b5..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sw_CD.php
+++ /dev/null
@@ -1,17 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/sw.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sw_KE.php b/vendor/nesbot/carbon/src/Carbon/Lang/sw_KE.php
deleted file mode 100644
index 2ace0db2..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sw_KE.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Kamusi Project Martin Benjamin locales@kamusi.org
- */
-return array_replace_recursive(require __DIR__.'/sw.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['Januari', 'Februari', 'Machi', 'Aprili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', 'Oktoba', 'Novemba', 'Desemba'],
- 'months_short' => ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'],
- 'weekdays' => ['Jumapili', 'Jumatatu', 'Jumanne', 'Jumatano', 'Alhamisi', 'Ijumaa', 'Jumamosi'],
- 'weekdays_short' => ['J2', 'J3', 'J4', 'J5', 'Alh', 'Ij', 'J1'],
- 'weekdays_min' => ['J2', 'J3', 'J4', 'J5', 'Alh', 'Ij', 'J1'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['asubuhi', 'alasiri'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sw_TZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/sw_TZ.php
deleted file mode 100644
index fab3cd68..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sw_TZ.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Kamusi Project Martin Benjamin locales@kamusi.org
- */
-return array_replace_recursive(require __DIR__.'/sw.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['Januari', 'Februari', 'Machi', 'Aprili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', 'Oktoba', 'Novemba', 'Desemba'],
- 'months_short' => ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'],
- 'weekdays' => ['Jumapili', 'Jumatatu', 'Jumanne', 'Jumatano', 'Alhamisi', 'Ijumaa', 'Jumamosi'],
- 'weekdays_short' => ['J2', 'J3', 'J4', 'J5', 'Alh', 'Ij', 'J1'],
- 'weekdays_min' => ['J2', 'J3', 'J4', 'J5', 'Alh', 'Ij', 'J1'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['asubuhi', 'alasiri'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sw_UG.php b/vendor/nesbot/carbon/src/Carbon/Lang/sw_UG.php
deleted file mode 100644
index ec9117b5..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/sw_UG.php
+++ /dev/null
@@ -1,17 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/sw.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/szl.php b/vendor/nesbot/carbon/src/Carbon/Lang/szl.php
deleted file mode 100644
index 4429c4f5..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/szl.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/szl_PL.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/szl_PL.php b/vendor/nesbot/carbon/src/Carbon/Lang/szl_PL.php
deleted file mode 100644
index 4b0b5410..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/szl_PL.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - szl_PL locale Przemyslaw Buczkowski libc-alpha@sourceware.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD.MM.YYYY',
- ],
- 'months' => ['styczyń', 'luty', 'merc', 'kwjeciyń', 'moj', 'czyrwjyń', 'lipjyń', 'siyrpjyń', 'wrzesiyń', 'październik', 'listopad', 'grudziyń'],
- 'months_short' => ['sty', 'lut', 'mer', 'kwj', 'moj', 'czy', 'lip', 'siy', 'wrz', 'paź', 'lis', 'gru'],
- 'weekdays' => ['niydziela', 'pyńdziŏek', 'wtŏrek', 'strzŏda', 'sztwortek', 'pjōntek', 'sobŏta'],
- 'weekdays_short' => ['niy', 'pyń', 'wtŏ', 'str', 'szt', 'pjō', 'sob'],
- 'weekdays_min' => ['niy', 'pyń', 'wtŏ', 'str', 'szt', 'pjō', 'sob'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-
- 'year' => ':count rok',
- 'y' => ':count rok',
- 'a_year' => ':count rok',
-
- 'month' => ':count mjeśůnc',
- 'm' => ':count mjeśůnc',
- 'a_month' => ':count mjeśůnc',
-
- 'week' => ':count Tydźyń',
- 'w' => ':count Tydźyń',
- 'a_week' => ':count Tydźyń',
-
- 'day' => ':count dźyń',
- 'd' => ':count dźyń',
- 'a_day' => ':count dźyń',
-
- 'hour' => ':count godzina',
- 'h' => ':count godzina',
- 'a_hour' => ':count godzina',
-
- 'minute' => ':count Minuta',
- 'min' => ':count Minuta',
- 'a_minute' => ':count Minuta',
-
- 'second' => ':count Sekůnda',
- 's' => ':count Sekůnda',
- 'a_second' => ':count Sekůnda',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ta.php b/vendor/nesbot/carbon/src/Carbon/Lang/ta.php
deleted file mode 100644
index c1d89cbb..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ta.php
+++ /dev/null
@@ -1,97 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Josh Soref
- * - François B
- * - JD Isaacks
- * - Satheez
- */
-return [
- 'year' => ':count வருடம்|:count ஆண்டுகள்',
- 'a_year' => 'ஒரு வருடம்|:count ஆண்டுகள்',
- 'y' => ':count வருட.|:count ஆண்.',
- 'month' => ':count மாதம்|:count மாதங்கள்',
- 'a_month' => 'ஒரு மாதம்|:count மாதங்கள்',
- 'm' => ':count மாத.',
- 'week' => ':count வாரம்|:count வாரங்கள்',
- 'a_week' => 'ஒரு வாரம்|:count வாரங்கள்',
- 'w' => ':count வார.',
- 'day' => ':count நாள்|:count நாட்கள்',
- 'a_day' => 'ஒரு நாள்|:count நாட்கள்',
- 'd' => ':count நாள்|:count நாட்.',
- 'hour' => ':count மணி நேரம்|:count மணி நேரம்',
- 'a_hour' => 'ஒரு மணி நேரம்|:count மணி நேரம்',
- 'h' => ':count மணி.',
- 'minute' => ':count நிமிடம்|:count நிமிடங்கள்',
- 'a_minute' => 'ஒரு நிமிடம்|:count நிமிடங்கள்',
- 'min' => ':count நிமி.',
- 'second' => ':count சில விநாடிகள்|:count விநாடிகள்',
- 'a_second' => 'ஒரு சில விநாடிகள்|:count விநாடிகள்',
- 's' => ':count விநா.',
- 'ago' => ':time முன்',
- 'from_now' => ':time இல்',
- 'before' => ':time முன்',
- 'after' => ':time பின்',
- 'diff_now' => 'இப்போது',
- 'diff_today' => 'இன்று',
- 'diff_yesterday' => 'நேற்று',
- 'diff_tomorrow' => 'நாளை',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY, HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY, HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[இன்று] LT',
- 'nextDay' => '[நாளை] LT',
- 'nextWeek' => 'dddd, LT',
- 'lastDay' => '[நேற்று] LT',
- 'lastWeek' => '[கடந்த வாரம்] dddd, LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => ':numberவது',
- 'meridiem' => function ($hour) {
- if ($hour < 2) {
- return ' யாமம்';
- }
- if ($hour < 6) {
- return ' வைகறை';
- }
- if ($hour < 10) {
- return ' காலை';
- }
- if ($hour < 14) {
- return ' நண்பகல்';
- }
- if ($hour < 18) {
- return ' எற்பாடு';
- }
- if ($hour < 22) {
- return ' மாலை';
- }
-
- return ' யாமம்';
- },
- 'months' => ['ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டெம்பர்', 'அக்டோபர்', 'நவம்பர்', 'டிசம்பர்'],
- 'months_short' => ['ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டெம்பர்', 'அக்டோபர்', 'நவம்பர்', 'டிசம்பர்'],
- 'weekdays' => ['ஞாயிற்றுக்கிழமை', 'திங்கட்கிழமை', 'செவ்வாய்கிழமை', 'புதன்கிழமை', 'வியாழக்கிழமை', 'வெள்ளிக்கிழமை', 'சனிக்கிழமை'],
- 'weekdays_short' => ['ஞாயிறு', 'திங்கள்', 'செவ்வாய்', 'புதன்', 'வியாழன்', 'வெள்ளி', 'சனி'],
- 'weekdays_min' => ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'],
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
- 'list' => [', ', ' மற்றும் '],
- 'weekend' => [0, 0],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ta_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/ta_IN.php
deleted file mode 100644
index 492d4c56..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ta_IN.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/ta.php', [
- 'formats' => [
- 'L' => 'D/M/YY',
- ],
- 'months' => ['ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டம்பர்', 'அக்டோபர்', 'நவம்பர்', 'டிசம்பர்'],
- 'months_short' => ['ஜன.', 'பிப்.', 'மார்.', 'ஏப்.', 'மே', 'ஜூன்', 'ஜூலை', 'ஆக.', 'செப்.', 'அக்.', 'நவ.', 'டிச.'],
- 'weekdays' => ['ஞாயிறு', 'திங்கள்', 'செவ்வாய்', 'புதன்', 'வியாழன்', 'வெள்ளி', 'சனி'],
- 'weekdays_short' => ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'],
- 'weekdays_min' => ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['காலை', 'மாலை'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ta_LK.php b/vendor/nesbot/carbon/src/Carbon/Lang/ta_LK.php
deleted file mode 100644
index 8e2afbf6..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ta_LK.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - J.Yogaraj 94-777-315206 yogaraj.ubuntu@gmail.com
- */
-return array_replace_recursive(require __DIR__.'/ta.php', [
- 'formats' => [
- 'L' => 'D/M/YY',
- ],
- 'months' => ['ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டம்பர்', 'அக்டோபர்', 'நவம்பர்', 'டிசம்பர்'],
- 'months_short' => ['ஜன', 'பிப்', 'மார்', 'ஏப்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆக', 'செப்', 'அக்', 'நவ', 'டிச'],
- 'weekdays' => ['ஞாயிறு', 'திங்கள்', 'செவ்வாய்', 'புதன்', 'வியாழன்', 'வெள்ளி', 'சனி'],
- 'weekdays_short' => ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'],
- 'weekdays_min' => ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['காலை', 'மாலை'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ta_MY.php b/vendor/nesbot/carbon/src/Carbon/Lang/ta_MY.php
deleted file mode 100644
index a6cd8b51..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ta_MY.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/ta.php', [
- 'formats' => [
- 'LT' => 'a h:mm',
- 'LTS' => 'a h:mm:ss',
- 'L' => 'D/M/yy',
- 'LL' => 'D MMM, YYYY',
- 'LLL' => 'D MMMM, YYYY, a h:mm',
- 'LLLL' => 'dddd, D MMMM, YYYY, a h:mm',
- ],
- 'months' => ['ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டம்பர்', 'அக்டோபர்', 'நவம்பர்', 'டிசம்பர்'],
- 'months_short' => ['ஜன.', 'பிப்.', 'மார்.', 'ஏப்.', 'மே', 'ஜூன்', 'ஜூலை', 'ஆக.', 'செப்.', 'அக்.', 'நவ.', 'டிச.'],
- 'weekdays' => ['ஞாயிறு', 'திங்கள்', 'செவ்வாய்', 'புதன்', 'வியாழன்', 'வெள்ளி', 'சனி'],
- 'weekdays_short' => ['ஞாயி.', 'திங்.', 'செவ்.', 'புத.', 'வியா.', 'வெள்.', 'சனி'],
- 'weekdays_min' => ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'],
- 'first_day_of_week' => 1,
- 'meridiem' => ['மு.ப', 'பி.ப'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ta_SG.php b/vendor/nesbot/carbon/src/Carbon/Lang/ta_SG.php
deleted file mode 100644
index 7dbedeee..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ta_SG.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/ta.php', [
- 'formats' => [
- 'LT' => 'a h:mm',
- 'LTS' => 'a h:mm:ss',
- 'L' => 'D/M/yy',
- 'LL' => 'D MMM, YYYY',
- 'LLL' => 'D MMMM, YYYY, a h:mm',
- 'LLLL' => 'dddd, D MMMM, YYYY, a h:mm',
- ],
- 'months' => ['ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டம்பர்', 'அக்டோபர்', 'நவம்பர்', 'டிசம்பர்'],
- 'months_short' => ['ஜன.', 'பிப்.', 'மார்.', 'ஏப்.', 'மே', 'ஜூன்', 'ஜூலை', 'ஆக.', 'செப்.', 'அக்.', 'நவ.', 'டிச.'],
- 'weekdays' => ['ஞாயிறு', 'திங்கள்', 'செவ்வாய்', 'புதன்', 'வியாழன்', 'வெள்ளி', 'சனி'],
- 'weekdays_short' => ['ஞாயி.', 'திங்.', 'செவ்.', 'புத.', 'வியா.', 'வெள்.', 'சனி'],
- 'weekdays_min' => ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'],
- 'meridiem' => ['மு.ப', 'பி.ப'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tcy.php b/vendor/nesbot/carbon/src/Carbon/Lang/tcy.php
deleted file mode 100644
index 2eb99057..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/tcy.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/tcy_IN.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tcy_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/tcy_IN.php
deleted file mode 100644
index 2ff20e0e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/tcy_IN.php
+++ /dev/null
@@ -1,39 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - IndLinux.org, Samsung Electronics Co., Ltd. alexey.merzlyakov@samsung.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'D/M/YY',
- ],
- 'months' => ['ಜನವರಿ', 'ಫೆಬ್ರುವರಿ', 'ಮಾರ್ಚ್', 'ಏಪ್ರಿಲ್', 'ಮೇ', 'ಜೂನ್', 'ಜುಲೈ', 'ಆಗಸ್ಟ್', 'ಸೆಪ್ಟೆಂಬರ್', 'ಅಕ್ಟೋಬರ್', 'ನವೆಂಬರ್', 'ಡಿಸೆಂಬರ್'],
- 'months_short' => ['ಜ', 'ಫೆ', 'ಮಾ', 'ಏ', 'ಮೇ', 'ಜೂ', 'ಜು', 'ಆ', 'ಸೆ', 'ಅ', 'ನ', 'ಡಿ'],
- 'weekdays' => ['ಐಥಾರ', 'ಸೋಮಾರ', 'ಅಂಗರೆ', 'ಬುಧಾರ', 'ಗುರುವಾರ', 'ಶುಕ್ರರ', 'ಶನಿವಾರ'],
- 'weekdays_short' => ['ಐ', 'ಸೋ', 'ಅಂ', 'ಬು', 'ಗು', 'ಶು', 'ಶ'],
- 'weekdays_min' => ['ಐ', 'ಸೋ', 'ಅಂ', 'ಬು', 'ಗು', 'ಶು', 'ಶ'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['ಕಾಂಡೆ', 'ಬಯ್ಯ'],
-
- 'year' => ':count ನೀರ್', // less reliable
- 'y' => ':count ನೀರ್', // less reliable
- 'a_year' => ':count ನೀರ್', // less reliable
-
- 'month' => ':count ಮೀನ್', // less reliable
- 'm' => ':count ಮೀನ್', // less reliable
- 'a_month' => ':count ಮೀನ್', // less reliable
-
- 'day' => ':count ಸುಗ್ಗಿ', // less reliable
- 'd' => ':count ಸುಗ್ಗಿ', // less reliable
- 'a_day' => ':count ಸುಗ್ಗಿ', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/te.php b/vendor/nesbot/carbon/src/Carbon/Lang/te.php
deleted file mode 100644
index ac38218f..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/te.php
+++ /dev/null
@@ -1,89 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Kunal Marwaha
- * - Josh Soref
- * - François B
- * - kc
- */
-return [
- 'year' => ':count సంవత్సరం|:count సంవత్సరాలు',
- 'a_year' => 'ఒక సంవత్సరం|:count సంవత్సరాలు',
- 'y' => ':count సం.',
- 'month' => ':count నెల|:count నెలలు',
- 'a_month' => 'ఒక నెల|:count నెలలు',
- 'm' => ':count నెల|:count నెల.',
- 'week' => ':count వారం|:count వారాలు',
- 'a_week' => 'ఒక వారం|:count వారాలు',
- 'w' => ':count వార.|:count వారా.',
- 'day' => ':count రోజు|:count రోజులు',
- 'a_day' => 'ఒక రోజు|:count రోజులు',
- 'd' => ':count రోజు|:count రోజు.',
- 'hour' => ':count గంట|:count గంటలు',
- 'a_hour' => 'ఒక గంట|:count గంటలు',
- 'h' => ':count గం.',
- 'minute' => ':count నిమిషం|:count నిమిషాలు',
- 'a_minute' => 'ఒక నిమిషం|:count నిమిషాలు',
- 'min' => ':count నిమి.',
- 'second' => ':count సెకను|:count సెకన్లు',
- 'a_second' => 'కొన్ని క్షణాలు|:count సెకన్లు',
- 's' => ':count సెక.',
- 'ago' => ':time క్రితం',
- 'from_now' => ':time లో',
- 'diff_now' => 'ప్రస్తుతం',
- 'diff_today' => 'నేడు',
- 'diff_yesterday' => 'నిన్న',
- 'diff_tomorrow' => 'రేపు',
- 'formats' => [
- 'LT' => 'A h:mm',
- 'LTS' => 'A h:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY, A h:mm',
- 'LLLL' => 'dddd, D MMMM YYYY, A h:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[నేడు] LT',
- 'nextDay' => '[రేపు] LT',
- 'nextWeek' => 'dddd, LT',
- 'lastDay' => '[నిన్న] LT',
- 'lastWeek' => '[గత] dddd, LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => ':numberవ',
- 'meridiem' => function ($hour) {
- if ($hour < 4) {
- return 'రాత్రి';
- }
- if ($hour < 10) {
- return 'ఉదయం';
- }
- if ($hour < 17) {
- return 'మధ్యాహ్నం';
- }
- if ($hour < 20) {
- return 'సాయంత్రం';
- }
-
- return ' రాత్రి';
- },
- 'months' => ['జనవరి', 'ఫిబ్రవరి', 'మార్చి', 'ఏప్రిల్', 'మే', 'జూన్', 'జూలై', 'ఆగస్టు', 'సెప్టెంబర్', 'అక్టోబర్', 'నవంబర్', 'డిసెంబర్'],
- 'months_short' => ['జన.', 'ఫిబ్ర.', 'మార్చి', 'ఏప్రి.', 'మే', 'జూన్', 'జూలై', 'ఆగ.', 'సెప్.', 'అక్టో.', 'నవ.', 'డిసె.'],
- 'weekdays' => ['ఆదివారం', 'సోమవారం', 'మంగళవారం', 'బుధవారం', 'గురువారం', 'శుక్రవారం', 'శనివారం'],
- 'weekdays_short' => ['ఆది', 'సోమ', 'మంగళ', 'బుధ', 'గురు', 'శుక్ర', 'శని'],
- 'weekdays_min' => ['ఆ', 'సో', 'మం', 'బు', 'గు', 'శు', 'శ'],
- 'list' => ', ',
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
- 'weekend' => [0, 0],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/te_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/te_IN.php
deleted file mode 100644
index 3963f8d5..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/te_IN.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/te.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/teo.php b/vendor/nesbot/carbon/src/Carbon/Lang/teo.php
deleted file mode 100644
index ca30c37d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/teo.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/ta.php', [
- 'meridiem' => ['Taparachu', 'Ebongi'],
- 'weekdays' => ['Nakaejuma', 'Nakaebarasa', 'Nakaare', 'Nakauni', 'Nakaung’on', 'Nakakany', 'Nakasabiti'],
- 'weekdays_short' => ['Jum', 'Bar', 'Aar', 'Uni', 'Ung', 'Kan', 'Sab'],
- 'weekdays_min' => ['Jum', 'Bar', 'Aar', 'Uni', 'Ung', 'Kan', 'Sab'],
- 'months' => ['Orara', 'Omuk', 'Okwamg’', 'Odung’el', 'Omaruk', 'Omodok’king’ol', 'Ojola', 'Opedel', 'Osokosokoma', 'Otibar', 'Olabor', 'Opoo'],
- 'months_short' => ['Rar', 'Muk', 'Kwa', 'Dun', 'Mar', 'Mod', 'Jol', 'Ped', 'Sok', 'Tib', 'Lab', 'Poo'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/teo_KE.php b/vendor/nesbot/carbon/src/Carbon/Lang/teo_KE.php
deleted file mode 100644
index 010a04f5..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/teo_KE.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/teo.php', [
- 'first_day_of_week' => 0,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tet.php b/vendor/nesbot/carbon/src/Carbon/Lang/tet.php
deleted file mode 100644
index d0544d4e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/tet.php
+++ /dev/null
@@ -1,64 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Joshua Brooks
- * - François B
- */
-return [
- 'year' => 'tinan :count',
- 'a_year' => '{1}tinan ida|tinan :count',
- 'month' => 'fulan :count',
- 'a_month' => '{1}fulan ida|fulan :count',
- 'week' => 'semana :count',
- 'a_week' => '{1}semana ida|semana :count',
- 'day' => 'loron :count',
- 'a_day' => '{1}loron ida|loron :count',
- 'hour' => 'oras :count',
- 'a_hour' => '{1}oras ida|oras :count',
- 'minute' => 'minutu :count',
- 'a_minute' => '{1}minutu ida|minutu :count',
- 'second' => 'segundu :count',
- 'a_second' => '{1}segundu balun|segundu :count',
- 'ago' => ':time liuba',
- 'from_now' => 'iha :time',
- 'diff_yesterday' => 'Horiseik',
- 'diff_yesterday_regexp' => 'Horiseik(?:\\s+iha)?',
- 'diff_today' => 'Ohin',
- 'diff_today_regexp' => 'Ohin(?:\\s+iha)?',
- 'diff_tomorrow' => 'Aban',
- 'diff_tomorrow_regexp' => 'Aban(?:\\s+iha)?',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[Ohin iha] LT',
- 'nextDay' => '[Aban iha] LT',
- 'nextWeek' => 'dddd [iha] LT',
- 'lastDay' => '[Horiseik iha] LT',
- 'lastWeek' => 'dddd [semana kotuk] [iha] LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => ':numberº',
- 'months' => ['Janeiru', 'Fevereiru', 'Marsu', 'Abril', 'Maiu', 'Juñu', 'Jullu', 'Agustu', 'Setembru', 'Outubru', 'Novembru', 'Dezembru'],
- 'months_short' => ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'],
- 'weekdays' => ['Domingu', 'Segunda', 'Tersa', 'Kuarta', 'Kinta', 'Sesta', 'Sabadu'],
- 'weekdays_short' => ['Dom', 'Seg', 'Ters', 'Kua', 'Kint', 'Sest', 'Sab'],
- 'weekdays_min' => ['Do', 'Seg', 'Te', 'Ku', 'Ki', 'Ses', 'Sa'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tg.php b/vendor/nesbot/carbon/src/Carbon/Lang/tg.php
deleted file mode 100644
index b7df893c..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/tg.php
+++ /dev/null
@@ -1,104 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Orif N. Jr
- */
-return [
- 'year' => '{1}як сол|:count сол',
- 'month' => '{1}як моҳ|:count моҳ',
- 'week' => '{1}як ҳафта|:count ҳафта',
- 'day' => '{1}як рӯз|:count рӯз',
- 'hour' => '{1}як соат|:count соат',
- 'minute' => '{1}як дақиқа|:count дақиқа',
- 'second' => '{1}якчанд сония|:count сония',
- 'ago' => ':time пеш',
- 'from_now' => 'баъди :time',
- 'diff_today' => 'Имрӯз',
- 'diff_yesterday' => 'Дирӯз',
- 'diff_yesterday_regexp' => 'Дирӯз(?:\\s+соати)?',
- 'diff_tomorrow' => 'Пагоҳ',
- 'diff_tomorrow_regexp' => 'Пагоҳ(?:\\s+соати)?',
- 'diff_today_regexp' => 'Имрӯз(?:\\s+соати)?',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[Имрӯз соати] LT',
- 'nextDay' => '[Пагоҳ соати] LT',
- 'nextWeek' => 'dddd[и] [ҳафтаи оянда соати] LT',
- 'lastDay' => '[Дирӯз соати] LT',
- 'lastWeek' => 'dddd[и] [ҳафтаи гузашта соати] LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => function ($number) {
- if ($number === 0) { // special case for zero
- return "$number-ıncı";
- }
-
- static $suffixes = [
- 0 => '-ум',
- 1 => '-ум',
- 2 => '-юм',
- 3 => '-юм',
- 4 => '-ум',
- 5 => '-ум',
- 6 => '-ум',
- 7 => '-ум',
- 8 => '-ум',
- 9 => '-ум',
- 10 => '-ум',
- 12 => '-ум',
- 13 => '-ум',
- 20 => '-ум',
- 30 => '-юм',
- 40 => '-ум',
- 50 => '-ум',
- 60 => '-ум',
- 70 => '-ум',
- 80 => '-ум',
- 90 => '-ум',
- 100 => '-ум',
- ];
-
- return $number.($suffixes[$number] ?? $suffixes[$number % 10] ?? $suffixes[$number >= 100 ? 100 : -1] ?? '');
- },
- 'meridiem' => function ($hour) {
- if ($hour < 4) {
- return 'шаб';
- }
- if ($hour < 11) {
- return 'субҳ';
- }
- if ($hour < 16) {
- return 'рӯз';
- }
- if ($hour < 19) {
- return 'бегоҳ';
- }
-
- return 'шаб';
- },
- 'months' => ['январ', 'феврал', 'март', 'апрел', 'май', 'июн', 'июл', 'август', 'сентябр', 'октябр', 'ноябр', 'декабр'],
- 'months_short' => ['янв', 'фев', 'мар', 'апр', 'май', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек'],
- 'weekdays' => ['якшанбе', 'душанбе', 'сешанбе', 'чоршанбе', 'панҷшанбе', 'ҷумъа', 'шанбе'],
- 'weekdays_short' => ['яшб', 'дшб', 'сшб', 'чшб', 'пшб', 'ҷум', 'шнб'],
- 'weekdays_min' => ['яш', 'дш', 'сш', 'чш', 'пш', 'ҷм', 'шб'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'list' => [', ', ' ва '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tg_TJ.php b/vendor/nesbot/carbon/src/Carbon/Lang/tg_TJ.php
deleted file mode 100644
index badc7d1f..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/tg_TJ.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/tg.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/th.php b/vendor/nesbot/carbon/src/Carbon/Lang/th.php
deleted file mode 100644
index 6397f6e4..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/th.php
+++ /dev/null
@@ -1,73 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Nate Whittaker
- * - John MacAslan
- * - Chanintorn Asavavichairoj
- * - JD Isaacks
- * - ROKAISAKKON
- * - RO'KAISAKKON
- * - Andreas Möller
- * - nithisa
- */
-return [
- 'year' => ':count ปี',
- 'y' => ':count ปี',
- 'month' => ':count เดือน',
- 'm' => ':count เดือน',
- 'week' => ':count สัปดาห์',
- 'w' => ':count สัปดาห์',
- 'day' => ':count วัน',
- 'd' => ':count วัน',
- 'hour' => ':count ชั่วโมง',
- 'h' => ':count ชั่วโมง',
- 'minute' => ':count นาที',
- 'min' => ':count นาที',
- 'second' => ':count วินาที',
- 'a_second' => '{1}ไม่กี่วินาที|]1,Inf[:count วินาที',
- 's' => ':count วินาที',
- 'ago' => ':timeที่แล้ว',
- 'from_now' => 'อีก :time',
- 'after' => ':timeหลังจากนี้',
- 'before' => ':timeก่อน',
- 'diff_now' => 'ขณะนี้',
- 'diff_today' => 'วันนี้',
- 'diff_today_regexp' => 'วันนี้(?:\\s+เวลา)?',
- 'diff_yesterday' => 'เมื่อวาน',
- 'diff_yesterday_regexp' => 'เมื่อวานนี้(?:\\s+เวลา)?',
- 'diff_tomorrow' => 'พรุ่งนี้',
- 'diff_tomorrow_regexp' => 'พรุ่งนี้(?:\\s+เวลา)?',
- 'formats' => [
- 'LT' => 'H:mm',
- 'LTS' => 'H:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY เวลา H:mm',
- 'LLLL' => 'วันddddที่ D MMMM YYYY เวลา H:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[วันนี้ เวลา] LT',
- 'nextDay' => '[พรุ่งนี้ เวลา] LT',
- 'nextWeek' => 'dddd[หน้า เวลา] LT',
- 'lastDay' => '[เมื่อวานนี้ เวลา] LT',
- 'lastWeek' => '[วัน]dddd[ที่แล้ว เวลา] LT',
- 'sameElse' => 'L',
- ],
- 'meridiem' => ['ก่อนเที่ยง', 'หลังเที่ยง'],
- 'months' => ['มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม'],
- 'months_short' => ['ม.ค.', 'ก.พ.', 'มี.ค.', 'เม.ย.', 'พ.ค.', 'มิ.ย.', 'ก.ค.', 'ส.ค.', 'ก.ย.', 'ต.ค.', 'พ.ย.', 'ธ.ค.'],
- 'weekdays' => ['อาทิตย์', 'จันทร์', 'อังคาร', 'พุธ', 'พฤหัสบดี', 'ศุกร์', 'เสาร์'],
- 'weekdays_short' => ['อาทิตย์', 'จันทร์', 'อังคาร', 'พุธ', 'พฤหัส', 'ศุกร์', 'เสาร์'],
- 'weekdays_min' => ['อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'],
- 'list' => [', ', ' และ '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/th_TH.php b/vendor/nesbot/carbon/src/Carbon/Lang/th_TH.php
deleted file mode 100644
index b9f94b2d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/th_TH.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/th.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/the.php b/vendor/nesbot/carbon/src/Carbon/Lang/the.php
deleted file mode 100644
index 85f8333b..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/the.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/the_NP.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/the_NP.php b/vendor/nesbot/carbon/src/Carbon/Lang/the_NP.php
deleted file mode 100644
index 34da1627..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/the_NP.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Chitwanix OS Development info@chitwanix.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'dddd DD MMM YYYY',
- ],
- 'months' => ['जनवरी', 'फ़रवरी', 'मार्च', 'अप्रेल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर'],
- 'months_short' => ['जनवरी', 'फ़रवरी', 'मार्च', 'अप्रेल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर'],
- 'weekdays' => ['आइतबार', 'सोमबार', 'मंगलबार', 'बुधबार', 'बिहिबार', 'शुक्रबार', 'शनिबार'],
- 'weekdays_short' => ['आइत', 'सोम', 'मंगल', 'बुध', 'बिहि', 'शुक्र', 'शनि'],
- 'weekdays_min' => ['आइत', 'सोम', 'मंगल', 'बुध', 'बिहि', 'शुक्र', 'शनि'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['पूर्वाह्न', 'अपराह्न'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ti.php b/vendor/nesbot/carbon/src/Carbon/Lang/ti.php
deleted file mode 100644
index ffd32369..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ti.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/ti_ER.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ti_ER.php b/vendor/nesbot/carbon/src/Carbon/Lang/ti_ER.php
deleted file mode 100644
index 310c51cc..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ti_ER.php
+++ /dev/null
@@ -1,56 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Ge'ez Frontier Foundation locales@geez.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['ጥሪ', 'ለካቲት', 'መጋቢት', 'ሚያዝያ', 'ግንቦት', 'ሰነ', 'ሓምለ', 'ነሓሰ', 'መስከረም', 'ጥቅምቲ', 'ሕዳር', 'ታሕሳስ'],
- 'months_short' => ['ጥሪ ', 'ለካቲ', 'መጋቢ', 'ሚያዝ', 'ግንቦ', 'ሰነ ', 'ሓምለ', 'ነሓሰ', 'መስከ', 'ጥቅም', 'ሕዳር', 'ታሕሳ'],
- 'weekdays' => ['ሰንበት', 'ሰኑይ', 'ሰሉስ', 'ረቡዕ', 'ሓሙስ', 'ዓርቢ', 'ቀዳም'],
- 'weekdays_short' => ['ሰንበ', 'ሰኑይ', 'ሰሉስ', 'ረቡዕ', 'ሓሙስ', 'ዓርቢ', 'ቀዳም'],
- 'weekdays_min' => ['ሰንበ', 'ሰኑይ', 'ሰሉስ', 'ረቡዕ', 'ሓሙስ', 'ዓርቢ', 'ቀዳም'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['ንጉሆ ሰዓተ', 'ድሕር ሰዓት'],
-
- 'year' => ':count ዓመት',
- 'y' => ':count ዓመት',
- 'a_year' => ':count ዓመት',
-
- 'month' => 'ወርሒ :count',
- 'm' => 'ወርሒ :count',
- 'a_month' => 'ወርሒ :count',
-
- 'week' => ':count ሰሙን',
- 'w' => ':count ሰሙን',
- 'a_week' => ':count ሰሙን',
-
- 'day' => ':count መዓልቲ',
- 'd' => ':count መዓልቲ',
- 'a_day' => ':count መዓልቲ',
-
- 'hour' => ':count ሰዓት',
- 'h' => ':count ሰዓት',
- 'a_hour' => ':count ሰዓት',
-
- 'minute' => ':count ደቒቕ',
- 'min' => ':count ደቒቕ',
- 'a_minute' => ':count ደቒቕ',
-
- 'second' => ':count ሰከንድ',
- 's' => ':count ሰከንድ',
- 'a_second' => ':count ሰከንድ',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ti_ET.php b/vendor/nesbot/carbon/src/Carbon/Lang/ti_ET.php
deleted file mode 100644
index 024217f2..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ti_ET.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Ge'ez Frontier Foundation locales@geez.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['ጃንዩወሪ', 'ፌብሩወሪ', 'ማርች', 'ኤፕረል', 'ሜይ', 'ጁን', 'ጁላይ', 'ኦገስት', 'ሴፕቴምበር', 'ኦክተውበር', 'ኖቬምበር', 'ዲሴምበር'],
- 'months_short' => ['ጃንዩ', 'ፌብሩ', 'ማርች', 'ኤፕረ', 'ሜይ ', 'ጁን ', 'ጁላይ', 'ኦገስ', 'ሴፕቴ', 'ኦክተ', 'ኖቬም', 'ዲሴም'],
- 'weekdays' => ['ሰንበት', 'ሰኑይ', 'ሰሉስ', 'ረቡዕ', 'ሓሙስ', 'ዓርቢ', 'ቀዳም'],
- 'weekdays_short' => ['ሰንበ', 'ሰኑይ', 'ሰሉስ', 'ረቡዕ', 'ሓሙስ', 'ዓርቢ', 'ቀዳም'],
- 'weekdays_min' => ['ሰንበ', 'ሰኑይ', 'ሰሉስ', 'ረቡዕ', 'ሓሙስ', 'ዓርቢ', 'ቀዳም'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['ንጉሆ ሰዓተ', 'ድሕር ሰዓት'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tig.php b/vendor/nesbot/carbon/src/Carbon/Lang/tig.php
deleted file mode 100644
index 186fe713..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/tig.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/tig_ER.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tig_ER.php b/vendor/nesbot/carbon/src/Carbon/Lang/tig_ER.php
deleted file mode 100644
index 46887b05..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/tig_ER.php
+++ /dev/null
@@ -1,56 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Ge'ez Frontier Foundation locales@geez.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['ጥሪ', 'ለካቲት', 'መጋቢት', 'ሚያዝያ', 'ግንቦት', 'ሰነ', 'ሓምለ', 'ነሓሰ', 'መስከረም', 'ጥቅምቲ', 'ሕዳር', 'ታሕሳስ'],
- 'months_short' => ['ጥሪ ', 'ለካቲ', 'መጋቢ', 'ሚያዝ', 'ግንቦ', 'ሰነ ', 'ሓምለ', 'ነሓሰ', 'መስከ', 'ጥቅም', 'ሕዳር', 'ታሕሳ'],
- 'weekdays' => ['ሰንበት ዓባይ', 'ሰኖ', 'ታላሸኖ', 'ኣረርባዓ', 'ከሚሽ', 'ጅምዓት', 'ሰንበት ንኢሽ'],
- 'weekdays_short' => ['ሰ//ዓ', 'ሰኖ ', 'ታላሸ', 'ኣረር', 'ከሚሽ', 'ጅምዓ', 'ሰ//ን'],
- 'weekdays_min' => ['ሰ//ዓ', 'ሰኖ ', 'ታላሸ', 'ኣረር', 'ከሚሽ', 'ጅምዓ', 'ሰ//ን'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['ቀደም ሰር ምዕል', 'ሓቆ ሰር ምዕል'],
-
- 'year' => ':count ማይ', // less reliable
- 'y' => ':count ማይ', // less reliable
- 'a_year' => ':count ማይ', // less reliable
-
- 'month' => ':count ሸምሽ', // less reliable
- 'm' => ':count ሸምሽ', // less reliable
- 'a_month' => ':count ሸምሽ', // less reliable
-
- 'week' => ':count ሰቡዕ', // less reliable
- 'w' => ':count ሰቡዕ', // less reliable
- 'a_week' => ':count ሰቡዕ', // less reliable
-
- 'day' => ':count ዎሮ', // less reliable
- 'd' => ':count ዎሮ', // less reliable
- 'a_day' => ':count ዎሮ', // less reliable
-
- 'hour' => ':count ሰዓት', // less reliable
- 'h' => ':count ሰዓት', // less reliable
- 'a_hour' => ':count ሰዓት', // less reliable
-
- 'minute' => ':count ካልኣይት', // less reliable
- 'min' => ':count ካልኣይት', // less reliable
- 'a_minute' => ':count ካልኣይት', // less reliable
-
- 'second' => ':count ካልኣይ',
- 's' => ':count ካልኣይ',
- 'a_second' => ':count ካልኣይ',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tk.php b/vendor/nesbot/carbon/src/Carbon/Lang/tk.php
deleted file mode 100644
index d8f7d19d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/tk.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/tk_TM.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tk_TM.php b/vendor/nesbot/carbon/src/Carbon/Lang/tk_TM.php
deleted file mode 100644
index f949a430..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/tk_TM.php
+++ /dev/null
@@ -1,77 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Authors:
- * - Ghorban M. Tavakoly Pablo Saratxaga & Ghorban M. Tavakoly pablo@walon.org & gmt314@yahoo.com
- * - SuperManPHP
- * - Maksat Meredow (isadma)
- */
-$transformDiff = function ($input) {
- return strtr($input, [
- 'sekunt' => 'sekunt',
- 'hepde' => 'hepde',
- ]);
-};
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD.MM.YYYY',
- ],
- 'months' => ['Ýanwar', 'Fewral', 'Mart', 'Aprel', 'Maý', 'Iýun', 'Iýul', 'Awgust', 'Sentýabr', 'Oktýabr', 'Noýabr', 'Dekabr'],
- 'months_short' => ['Ýan', 'Few', 'Mar', 'Apr', 'Maý', 'Iýn', 'Iýl', 'Awg', 'Sen', 'Okt', 'Noý', 'Dek'],
- 'weekdays' => ['Duşenbe', 'Sişenbe', 'Çarşenbe', 'Penşenbe', 'Anna', 'Şenbe', 'Ýekşenbe'],
- 'weekdays_short' => ['Duş', 'Siş', 'Çar', 'Pen', 'Ann', 'Şen', 'Ýek'],
- 'weekdays_min' => ['Du', 'Si', 'Ça', 'Pe', 'An', 'Şe', 'Ýe'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
-
- 'year' => ':count ýyl',
- 'y' => ':count ýyl',
- 'a_year' => ':count ýyl',
-
- 'month' => ':count aý',
- 'm' => ':count aý',
- 'a_month' => ':count aý',
-
- 'week' => ':count hepde',
- 'w' => ':count hepde',
- 'a_week' => ':count hepde',
-
- 'day' => ':count gün',
- 'd' => ':count gün',
- 'a_day' => ':count gün',
-
- 'hour' => ':count sagat',
- 'h' => ':count sagat',
- 'a_hour' => ':count sagat',
-
- 'minute' => ':count minut',
- 'min' => ':count minut',
- 'a_minute' => ':count minut',
-
- 'second' => ':count sekunt',
- 's' => ':count sekunt',
- 'a_second' => ':count sekunt',
-
- 'ago' => function ($time) use ($transformDiff) {
- return $transformDiff($time).' ozal';
- },
- 'from_now' => function ($time) use ($transformDiff) {
- return $transformDiff($time).' soňra';
- },
- 'after' => function ($time) use ($transformDiff) {
- return $transformDiff($time).' soň';
- },
- 'before' => function ($time) use ($transformDiff) {
- return $transformDiff($time).' öň';
- },
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tl.php b/vendor/nesbot/carbon/src/Carbon/Lang/tl.php
deleted file mode 100644
index 410a2660..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/tl.php
+++ /dev/null
@@ -1,61 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return [
- 'year' => ':count taon',
- 'a_year' => '{1}isang taon|:count taon',
- 'month' => ':count buwan',
- 'a_month' => '{1}isang buwan|:count buwan',
- 'week' => ':count linggo',
- 'a_week' => '{1}isang linggo|:count linggo',
- 'day' => ':count araw',
- 'a_day' => '{1}isang araw|:count araw',
- 'hour' => ':count oras',
- 'a_hour' => '{1}isang oras|:count oras',
- 'minute' => ':count minuto',
- 'a_minute' => '{1}isang minuto|:count minuto',
- 'min' => ':count min.',
- 'second' => ':count segundo',
- 'a_second' => '{1}ilang segundo|:count segundo',
- 's' => ':count seg.',
- 'ago' => ':time ang nakalipas',
- 'from_now' => 'sa loob ng :time',
- 'diff_now' => 'ngayon',
- 'diff_today' => 'ngayong',
- 'diff_today_regexp' => 'ngayong(?:\\s+araw)?',
- 'diff_yesterday' => 'kahapon',
- 'diff_tomorrow' => 'bukas',
- 'diff_tomorrow_regexp' => 'Bukas(?:\\s+ng)?',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'MM/D/YYYY',
- 'LL' => 'MMMM D, YYYY',
- 'LLL' => 'MMMM D, YYYY HH:mm',
- 'LLLL' => 'dddd, MMMM DD, YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => 'LT [ngayong araw]',
- 'nextDay' => '[Bukas ng] LT',
- 'nextWeek' => 'LT [sa susunod na] dddd',
- 'lastDay' => 'LT [kahapon]',
- 'lastWeek' => 'LT [noong nakaraang] dddd',
- 'sameElse' => 'L',
- ],
- 'months' => ['Enero', 'Pebrero', 'Marso', 'Abril', 'Mayo', 'Hunyo', 'Hulyo', 'Agosto', 'Setyembre', 'Oktubre', 'Nobyembre', 'Disyembre'],
- 'months_short' => ['Ene', 'Peb', 'Mar', 'Abr', 'May', 'Hun', 'Hul', 'Ago', 'Set', 'Okt', 'Nob', 'Dis'],
- 'weekdays' => ['Linggo', 'Lunes', 'Martes', 'Miyerkules', 'Huwebes', 'Biyernes', 'Sabado'],
- 'weekdays_short' => ['Lin', 'Lun', 'Mar', 'Miy', 'Huw', 'Biy', 'Sab'],
- 'weekdays_min' => ['Li', 'Lu', 'Ma', 'Mi', 'Hu', 'Bi', 'Sab'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' at '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tl_PH.php b/vendor/nesbot/carbon/src/Carbon/Lang/tl_PH.php
deleted file mode 100644
index 95f508c3..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/tl_PH.php
+++ /dev/null
@@ -1,18 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - François B
- * - Ian De La Cruz
- * - JD Isaacks
- */
-return require __DIR__.'/tl.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tlh.php b/vendor/nesbot/carbon/src/Carbon/Lang/tlh.php
deleted file mode 100644
index fbf9e6f7..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/tlh.php
+++ /dev/null
@@ -1,72 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - François B
- * - Serhan Apaydın
- * - Dominika
- */
-return [
- 'year' => '{1}wa’ DIS|:count DIS',
- 'month' => '{1}wa’ jar|:count jar',
- 'week' => '{1}wa’ hogh|:count hogh',
- 'day' => '{1}wa’ jaj|:count jaj',
- 'hour' => '{1}wa’ rep|:count rep',
- 'minute' => '{1}wa’ tup|:count tup',
- 'second' => '{1}puS lup|:count lup',
- 'ago' => function ($time) {
- $output = strtr($time, [
- 'jaj' => 'Hu’',
- 'jar' => 'wen',
- 'DIS' => 'ben',
- ]);
-
- return $output === $time ? "$time ret" : $output;
- },
- 'from_now' => function ($time) {
- $output = strtr($time, [
- 'jaj' => 'leS',
- 'jar' => 'waQ',
- 'DIS' => 'nem',
- ]);
-
- return $output === $time ? "$time pIq" : $output;
- },
- 'diff_yesterday' => 'wa’Hu’',
- 'diff_today' => 'DaHjaj',
- 'diff_tomorrow' => 'wa’leS',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[DaHjaj] LT',
- 'nextDay' => '[wa’leS] LT',
- 'nextWeek' => 'LLL',
- 'lastDay' => '[wa’Hu’] LT',
- 'lastWeek' => 'LLL',
- 'sameElse' => 'L',
- ],
- 'ordinal' => ':number.',
- 'months' => ['tera’ jar wa’', 'tera’ jar cha’', 'tera’ jar wej', 'tera’ jar loS', 'tera’ jar vagh', 'tera’ jar jav', 'tera’ jar Soch', 'tera’ jar chorgh', 'tera’ jar Hut', 'tera’ jar wa’maH', 'tera’ jar wa’maH wa’', 'tera’ jar wa’maH cha’'],
- 'months_short' => ['jar wa’', 'jar cha’', 'jar wej', 'jar loS', 'jar vagh', 'jar jav', 'jar Soch', 'jar chorgh', 'jar Hut', 'jar wa’maH', 'jar wa’maH wa’', 'jar wa’maH cha’'],
- 'weekdays' => ['lojmItjaj', 'DaSjaj', 'povjaj', 'ghItlhjaj', 'loghjaj', 'buqjaj', 'ghInjaj'],
- 'weekdays_short' => ['lojmItjaj', 'DaSjaj', 'povjaj', 'ghItlhjaj', 'loghjaj', 'buqjaj', 'ghInjaj'],
- 'weekdays_min' => ['lojmItjaj', 'DaSjaj', 'povjaj', 'ghItlhjaj', 'loghjaj', 'buqjaj', 'ghInjaj'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' ’ej '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tn.php b/vendor/nesbot/carbon/src/Carbon/Lang/tn.php
deleted file mode 100644
index f29bdf68..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/tn.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/tn_ZA.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tn_ZA.php b/vendor/nesbot/carbon/src/Carbon/Lang/tn_ZA.php
deleted file mode 100644
index aada7db5..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/tn_ZA.php
+++ /dev/null
@@ -1,54 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Zuza Software Foundation (Translate.org.za) Dwayne Bailey dwayne@translate.org.za
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['Ferikgong', 'Tlhakole', 'Mopitlwe', 'Moranang', 'Motsheganong', 'Seetebosigo', 'Phukwi', 'Phatwe', 'Lwetse', 'Diphalane', 'Ngwanatsele', 'Sedimonthole'],
- 'months_short' => ['Fer', 'Tlh', 'Mop', 'Mor', 'Mot', 'See', 'Phu', 'Pha', 'Lwe', 'Dip', 'Ngw', 'Sed'],
- 'weekdays' => ['laTshipi', 'Mosupologo', 'Labobedi', 'Laboraro', 'Labone', 'Labotlhano', 'Lamatlhatso'],
- 'weekdays_short' => ['Tsh', 'Mos', 'Bed', 'Rar', 'Ne', 'Tlh', 'Mat'],
- 'weekdays_min' => ['Tsh', 'Mos', 'Bed', 'Rar', 'Ne', 'Tlh', 'Mat'],
- 'day_of_first_week_of_year' => 1,
-
- 'year' => 'dingwaga di le :count',
- 'y' => 'dingwaga di le :count',
- 'a_year' => 'dingwaga di le :count',
-
- 'month' => 'dikgwedi di le :count',
- 'm' => 'dikgwedi di le :count',
- 'a_month' => 'dikgwedi di le :count',
-
- 'week' => 'dibeke di le :count',
- 'w' => 'dibeke di le :count',
- 'a_week' => 'dibeke di le :count',
-
- 'day' => 'malatsi :count',
- 'd' => 'malatsi :count',
- 'a_day' => 'malatsi :count',
-
- 'hour' => 'diura di le :count',
- 'h' => 'diura di le :count',
- 'a_hour' => 'diura di le :count',
-
- 'minute' => 'metsotso e le :count',
- 'min' => 'metsotso e le :count',
- 'a_minute' => 'metsotso e le :count',
-
- 'second' => 'metsotswana e le :count',
- 's' => 'metsotswana e le :count',
- 'a_second' => 'metsotswana e le :count',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/to.php b/vendor/nesbot/carbon/src/Carbon/Lang/to.php
deleted file mode 100644
index 20581bba..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/to.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/to_TO.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/to_TO.php b/vendor/nesbot/carbon/src/Carbon/Lang/to_TO.php
deleted file mode 100644
index 335c69a8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/to_TO.php
+++ /dev/null
@@ -1,54 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - International Components for Unicode akhilesh.k@samsung.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'dddd DD MMM YYYY',
- ],
- 'months' => ['Sānuali', 'Fēpueli', 'Maʻasi', 'ʻEpeleli', 'Mē', 'Sune', 'Siulai', 'ʻAokosi', 'Sepitema', 'ʻOkatopa', 'Nōvema', 'Tīsema'],
- 'months_short' => ['Sān', 'Fēp', 'Maʻa', 'ʻEpe', 'Mē', 'Sun', 'Siu', 'ʻAok', 'Sep', 'ʻOka', 'Nōv', 'Tīs'],
- 'weekdays' => ['Sāpate', 'Mōnite', 'Tūsite', 'Pulelulu', 'Tuʻapulelulu', 'Falaite', 'Tokonaki'],
- 'weekdays_short' => ['Sāp', 'Mōn', 'Tūs', 'Pul', 'Tuʻa', 'Fal', 'Tok'],
- 'weekdays_min' => ['Sāp', 'Mōn', 'Tūs', 'Pul', 'Tuʻa', 'Fal', 'Tok'],
- 'meridiem' => ['hengihengi', 'efiafi'],
-
- 'year' => ':count fitu', // less reliable
- 'y' => ':count fitu', // less reliable
- 'a_year' => ':count fitu', // less reliable
-
- 'month' => ':count mahina', // less reliable
- 'm' => ':count mahina', // less reliable
- 'a_month' => ':count mahina', // less reliable
-
- 'week' => ':count Sapate', // less reliable
- 'w' => ':count Sapate', // less reliable
- 'a_week' => ':count Sapate', // less reliable
-
- 'day' => ':count ʻaho', // less reliable
- 'd' => ':count ʻaho', // less reliable
- 'a_day' => ':count ʻaho', // less reliable
-
- 'hour' => ':count houa',
- 'h' => ':count houa',
- 'a_hour' => ':count houa',
-
- 'minute' => ':count miniti',
- 'min' => ':count miniti',
- 'a_minute' => ':count miniti',
-
- 'second' => ':count sekoni',
- 's' => ':count sekoni',
- 'a_second' => ':count sekoni',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tpi.php b/vendor/nesbot/carbon/src/Carbon/Lang/tpi.php
deleted file mode 100644
index 7d38daed..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/tpi.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/tpi_PG.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tpi_PG.php b/vendor/nesbot/carbon/src/Carbon/Lang/tpi_PG.php
deleted file mode 100644
index 5f58c44c..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/tpi_PG.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Samsung Electronics Co., Ltd. akhilesh.k@samsung.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['Janueri', 'Februeri', 'Mas', 'Epril', 'Me', 'Jun', 'Julai', 'Ogas', 'Septemba', 'Oktoba', 'Novemba', 'Desemba'],
- 'months_short' => ['Jan', 'Feb', 'Mas', 'Epr', 'Me', 'Jun', 'Jul', 'Oga', 'Sep', 'Okt', 'Nov', 'Des'],
- 'weekdays' => ['Sande', 'Mande', 'Tunde', 'Trinde', 'Fonde', 'Fraide', 'Sarere'],
- 'weekdays_short' => ['San', 'Man', 'Tun', 'Tri', 'Fon', 'Fra', 'Sar'],
- 'weekdays_min' => ['San', 'Man', 'Tun', 'Tri', 'Fon', 'Fra', 'Sar'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['biknait', 'apinun'],
-
- 'year' => 'yia :count',
- 'y' => 'yia :count',
- 'a_year' => 'yia :count',
-
- 'month' => ':count mun',
- 'm' => ':count mun',
- 'a_month' => ':count mun',
-
- 'week' => ':count wik',
- 'w' => ':count wik',
- 'a_week' => ':count wik',
-
- 'day' => ':count de',
- 'd' => ':count de',
- 'a_day' => ':count de',
-
- 'hour' => ':count aua',
- 'h' => ':count aua',
- 'a_hour' => ':count aua',
-
- 'minute' => ':count minit',
- 'min' => ':count minit',
- 'a_minute' => ':count minit',
-
- 'second' => ':count namba tu',
- 's' => ':count namba tu',
- 'a_second' => ':count namba tu',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tr.php b/vendor/nesbot/carbon/src/Carbon/Lang/tr.php
deleted file mode 100644
index f5d9f4cc..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/tr.php
+++ /dev/null
@@ -1,121 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Josh Soref
- * - Alan Agius
- * - Erhan Gundogan
- * - François B
- * - JD Isaacks
- * - Murat Yüksel
- * - Baran Şengül
- * - Selami (selamialtin)
- * - TeomanBey
- */
-return [
- 'year' => ':count yıl',
- 'a_year' => '{1}bir yıl|]1,Inf[:count yıl',
- 'y' => ':county',
- 'month' => ':count ay',
- 'a_month' => '{1}bir ay|]1,Inf[:count ay',
- 'm' => ':countay',
- 'week' => ':count hafta',
- 'a_week' => '{1}bir hafta|]1,Inf[:count hafta',
- 'w' => ':counth',
- 'day' => ':count gün',
- 'a_day' => '{1}bir gün|]1,Inf[:count gün',
- 'd' => ':countg',
- 'hour' => ':count saat',
- 'a_hour' => '{1}bir saat|]1,Inf[:count saat',
- 'h' => ':countsa',
- 'minute' => ':count dakika',
- 'a_minute' => '{1}bir dakika|]1,Inf[:count dakika',
- 'min' => ':countdk',
- 'second' => ':count saniye',
- 'a_second' => '{1}birkaç saniye|]1,Inf[:count saniye',
- 's' => ':countsn',
- 'ago' => ':time önce',
- 'from_now' => ':time sonra',
- 'after' => ':time sonra',
- 'before' => ':time önce',
- 'diff_now' => 'şimdi',
- 'diff_today' => 'bugün',
- 'diff_today_regexp' => 'bugün(?:\\s+saat)?',
- 'diff_yesterday' => 'dün',
- 'diff_tomorrow' => 'yarın',
- 'diff_tomorrow_regexp' => 'yarın(?:\\s+saat)?',
- 'diff_before_yesterday' => 'evvelsi gün',
- 'diff_after_tomorrow' => 'öbür gün',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[bugün saat] LT',
- 'nextDay' => '[yarın saat] LT',
- 'nextWeek' => '[gelecek] dddd [saat] LT',
- 'lastDay' => '[dün] LT',
- 'lastWeek' => '[geçen] dddd [saat] LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => function ($number, $period) {
- switch ($period) {
- case 'd':
- case 'D':
- case 'Do':
- case 'DD':
- return $number;
- default:
- if ($number === 0) { // special case for zero
- return "$number'ıncı";
- }
-
- static $suffixes = [
- 1 => '\'inci',
- 5 => '\'inci',
- 8 => '\'inci',
- 70 => '\'inci',
- 80 => '\'inci',
- 2 => '\'nci',
- 7 => '\'nci',
- 20 => '\'nci',
- 50 => '\'nci',
- 3 => '\'üncü',
- 4 => '\'üncü',
- 100 => '\'üncü',
- 6 => '\'ncı',
- 9 => '\'uncu',
- 10 => '\'uncu',
- 30 => '\'uncu',
- 60 => '\'ıncı',
- 90 => '\'ıncı',
- ];
-
- $lastDigit = $number % 10;
-
- return $number.($suffixes[$lastDigit] ?? $suffixes[$number % 100 - $lastDigit] ?? $suffixes[$number >= 100 ? 100 : -1] ?? '');
- }
- },
- 'meridiem' => ['ÖÖ', 'ÖS', 'öö', 'ös'],
- 'months' => ['Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran', 'Temmuz', 'Ağustos', 'Eylül', 'Ekim', 'Kasım', 'Aralık'],
- 'months_short' => ['Oca', 'Şub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'Ağu', 'Eyl', 'Eki', 'Kas', 'Ara'],
- 'weekdays' => ['Pazar', 'Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi'],
- 'weekdays_short' => ['Paz', 'Pts', 'Sal', 'Çar', 'Per', 'Cum', 'Cts'],
- 'weekdays_min' => ['Pz', 'Pt', 'Sa', 'Ça', 'Pe', 'Cu', 'Ct'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'list' => [', ', ' ve '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tr_CY.php b/vendor/nesbot/carbon/src/Carbon/Lang/tr_CY.php
deleted file mode 100644
index 23f11449..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/tr_CY.php
+++ /dev/null
@@ -1,23 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/tr.php', [
- 'weekdays_short' => ['Paz', 'Pzt', 'Sal', 'Çar', 'Per', 'Cum', 'Cmt'],
- 'weekdays_min' => ['Pa', 'Pt', 'Sa', 'Ça', 'Pe', 'Cu', 'Ct'],
- 'formats' => [
- 'LT' => 'h:mm a',
- 'LTS' => 'h:mm:ss a',
- 'L' => 'D.MM.YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY h:mm a',
- 'LLLL' => 'D MMMM YYYY dddd h:mm a',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tr_TR.php b/vendor/nesbot/carbon/src/Carbon/Lang/tr_TR.php
deleted file mode 100644
index 9e994824..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/tr_TR.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/tr.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ts.php b/vendor/nesbot/carbon/src/Carbon/Lang/ts.php
deleted file mode 100644
index 525736bf..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ts.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/ts_ZA.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ts_ZA.php b/vendor/nesbot/carbon/src/Carbon/Lang/ts_ZA.php
deleted file mode 100644
index 37a24ec4..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ts_ZA.php
+++ /dev/null
@@ -1,54 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Zuza Software Foundation (Translate.org.za) Dwayne Bailey dwayne@translate.org.za
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['Sunguti', 'Nyenyenyani', 'Nyenyankulu', 'Dzivamisoko', 'Mudyaxihi', 'Khotavuxika', 'Mawuwani', 'Mhawuri', 'Ndzhati', 'Nhlangula', 'Hukuri', 'N\'wendzamhala'],
- 'months_short' => ['Sun', 'Yan', 'Kul', 'Dzi', 'Mud', 'Kho', 'Maw', 'Mha', 'Ndz', 'Nhl', 'Huk', 'N\'w'],
- 'weekdays' => ['Sonto', 'Musumbhunuku', 'Ravumbirhi', 'Ravunharhu', 'Ravumune', 'Ravuntlhanu', 'Mugqivela'],
- 'weekdays_short' => ['Son', 'Mus', 'Bir', 'Har', 'Ne', 'Tlh', 'Mug'],
- 'weekdays_min' => ['Son', 'Mus', 'Bir', 'Har', 'Ne', 'Tlh', 'Mug'],
- 'day_of_first_week_of_year' => 1,
-
- 'year' => 'malembe ya :count',
- 'y' => 'malembe ya :count',
- 'a_year' => 'malembe ya :count',
-
- 'month' => 'tin’hweti ta :count',
- 'm' => 'tin’hweti ta :count',
- 'a_month' => 'tin’hweti ta :count',
-
- 'week' => 'mavhiki ya :count',
- 'w' => 'mavhiki ya :count',
- 'a_week' => 'mavhiki ya :count',
-
- 'day' => 'masiku :count',
- 'd' => 'masiku :count',
- 'a_day' => 'masiku :count',
-
- 'hour' => 'tiawara ta :count',
- 'h' => 'tiawara ta :count',
- 'a_hour' => 'tiawara ta :count',
-
- 'minute' => 'timinete ta :count',
- 'min' => 'timinete ta :count',
- 'a_minute' => 'timinete ta :count',
-
- 'second' => 'tisekoni ta :count',
- 's' => 'tisekoni ta :count',
- 'a_second' => 'tisekoni ta :count',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tt.php b/vendor/nesbot/carbon/src/Carbon/Lang/tt.php
deleted file mode 100644
index d67d896e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/tt.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/tt_RU.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tt_RU.php b/vendor/nesbot/carbon/src/Carbon/Lang/tt_RU.php
deleted file mode 100644
index 38e42d05..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/tt_RU.php
+++ /dev/null
@@ -1,39 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Rinat Norkin Pablo Saratxaga, Rinat Norkin pablo@mandrakesoft.com, rinat@taif.ru
- */
-return [
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'DD MMM, HH:mm',
- 'LLLL' => 'DD MMMM YYYY, HH:mm',
- ],
- 'months' => ['января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря'],
- 'months_short' => ['янв', 'фев', 'мар', 'апр', 'май', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек'],
- 'weekdays' => ['якшәмбе', 'дышәмбе', 'сишәмбе', 'чәршәәмбе', 'пәнҗешмбе', 'җомга', 'шимбә'],
- 'weekdays_short' => ['якш', 'дыш', 'сиш', 'чәрш', 'пәнҗ', 'җом', 'шим'],
- 'weekdays_min' => ['якш', 'дыш', 'сиш', 'чәрш', 'пәнҗ', 'җом', 'шим'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'year' => ':count ел',
- 'month' => ':count ай',
- 'week' => ':count атна',
- 'day' => ':count көн',
- 'hour' => ':count сәгать',
- 'minute' => ':count минут',
- 'second' => ':count секунд',
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tt_RU@iqtelif.php b/vendor/nesbot/carbon/src/Carbon/Lang/tt_RU@iqtelif.php
deleted file mode 100644
index 16b8efb1..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/tt_RU@iqtelif.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Reshat Sabiq tatar.iqtelif.i18n@gmail.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD.MM.YYYY',
- ],
- 'months' => ['Ğınwar', 'Fiwral\'', 'Mart', 'April', 'May', 'Yün', 'Yül', 'Awgust', 'Sintebír', 'Üktebír', 'Noyebír', 'Dikebír'],
- 'months_short' => ['Ğın', 'Fiw', 'Mar', 'Apr', 'May', 'Yün', 'Yül', 'Awg', 'Sin', 'Ükt', 'Noy', 'Dik'],
- 'weekdays' => ['Yekşembí', 'Düşembí', 'Sişembí', 'Çerşembí', 'Pencíşembí', 'Comğa', 'Şimbe'],
- 'weekdays_short' => ['Yek', 'Düş', 'Siş', 'Çer', 'Pen', 'Com', 'Şim'],
- 'weekdays_min' => ['Yek', 'Düş', 'Siş', 'Çer', 'Pen', 'Com', 'Şim'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['ÖA', 'ÖS'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/twq.php b/vendor/nesbot/carbon/src/Carbon/Lang/twq.php
deleted file mode 100644
index 5cbb46e0..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/twq.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/ses.php', [
- 'meridiem' => ['Subbaahi', 'Zaarikay b'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tzl.php b/vendor/nesbot/carbon/src/Carbon/Lang/tzl.php
deleted file mode 100644
index 50bf26d2..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/tzl.php
+++ /dev/null
@@ -1,65 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return [
- 'year' => '[0,1]:count ar|:count ars',
- 'y' => '[0,1]:count ar|:count ars',
- 'month' => '[0,1]:count mes|:count mesen',
- 'm' => '[0,1]:count mes|:count mesen',
- 'week' => '[0,1]:count seifetziua|:count seifetziuas',
- 'w' => '[0,1]:count seifetziua|:count seifetziuas',
- 'day' => '[0,1]:count ziua|:count ziuas',
- 'd' => '[0,1]:count ziua|:count ziuas',
- 'hour' => '[0,1]:count þora|:count þoras',
- 'h' => '[0,1]:count þora|:count þoras',
- 'minute' => '[0,1]:count míut|:count míuts',
- 'min' => '[0,1]:count míut|:count míuts',
- 'second' => ':count secunds',
- 's' => ':count secunds',
-
- 'ago' => 'ja :time',
- 'from_now' => 'osprei :time',
-
- 'diff_yesterday' => 'ieiri',
- 'diff_yesterday_regexp' => 'ieiri(?:\\s+à)?',
- 'diff_today' => 'oxhi',
- 'diff_today_regexp' => 'oxhi(?:\\s+à)?',
- 'diff_tomorrow' => 'demà',
- 'diff_tomorrow_regexp' => 'demà(?:\\s+à)?',
-
- 'formats' => [
- 'LT' => 'HH.mm',
- 'LTS' => 'HH.mm.ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'D. MMMM [dallas] YYYY',
- 'LLL' => 'D. MMMM [dallas] YYYY HH.mm',
- 'LLLL' => 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',
- ],
-
- 'calendar' => [
- 'sameDay' => '[oxhi à] LT',
- 'nextDay' => '[demà à] LT',
- 'nextWeek' => 'dddd [à] LT',
- 'lastDay' => '[ieiri à] LT',
- 'lastWeek' => '[sür el] dddd [lasteu à] LT',
- 'sameElse' => 'L',
- ],
-
- 'meridiem' => ["D'A", "D'O"],
- 'months' => ['Januar', 'Fevraglh', 'Març', 'Avrïu', 'Mai', 'Gün', 'Julia', 'Guscht', 'Setemvar', 'Listopäts', 'Noemvar', 'Zecemvar'],
- 'months_short' => ['Jan', 'Fev', 'Mar', 'Avr', 'Mai', 'Gün', 'Jul', 'Gus', 'Set', 'Lis', 'Noe', 'Zec'],
- 'weekdays' => ['Súladi', 'Lúneçi', 'Maitzi', 'Márcuri', 'Xhúadi', 'Viénerçi', 'Sáturi'],
- 'weekdays_short' => ['Súl', 'Lún', 'Mai', 'Már', 'Xhú', 'Vié', 'Sát'],
- 'weekdays_min' => ['Sú', 'Lú', 'Ma', 'Má', 'Xh', 'Vi', 'Sá'],
- 'ordinal' => ':number.',
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tzm.php b/vendor/nesbot/carbon/src/Carbon/Lang/tzm.php
deleted file mode 100644
index 2a1a0f2b..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/tzm.php
+++ /dev/null
@@ -1,57 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Josh Soref
- * - JD Isaacks
- */
-return [
- 'year' => '{1}ⴰⵙⴳⴰⵙ|:count ⵉⵙⴳⴰⵙⵏ',
- 'month' => '{1}ⴰⵢoⵓⵔ|:count ⵉⵢⵢⵉⵔⵏ',
- 'week' => ':count ⵉⵎⴰⵍⴰⵙⵙ',
- 'day' => '{1}ⴰⵙⵙ|:count oⵙⵙⴰⵏ',
- 'hour' => '{1}ⵙⴰⵄⴰ|:count ⵜⴰⵙⵙⴰⵄⵉⵏ',
- 'minute' => '{1}ⵎⵉⵏⵓⴺ|:count ⵎⵉⵏⵓⴺ',
- 'second' => '{1}ⵉⵎⵉⴽ|:count ⵉⵎⵉⴽ',
- 'ago' => 'ⵢⴰⵏ :time',
- 'from_now' => 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ :time',
- 'diff_today' => 'ⴰⵙⴷⵅ',
- 'diff_yesterday' => 'ⴰⵚⴰⵏⵜ',
- 'diff_yesterday_regexp' => 'ⴰⵚⴰⵏⵜ(?:\\s+ⴴ)?',
- 'diff_tomorrow' => 'ⴰⵙⴽⴰ',
- 'diff_tomorrow_regexp' => 'ⴰⵙⴽⴰ(?:\\s+ⴴ)?',
- 'diff_today_regexp' => 'ⴰⵙⴷⵅ(?:\\s+ⴴ)?',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[ⴰⵙⴷⵅ ⴴ] LT',
- 'nextDay' => '[ⴰⵙⴽⴰ ⴴ] LT',
- 'nextWeek' => 'dddd [ⴴ] LT',
- 'lastDay' => '[ⴰⵚⴰⵏⵜ ⴴ] LT',
- 'lastWeek' => 'dddd [ⴴ] LT',
- 'sameElse' => 'L',
- ],
- 'months' => ['ⵉⵏⵏⴰⵢⵔ', 'ⴱⵕⴰⵢⵕ', 'ⵎⴰⵕⵚ', 'ⵉⴱⵔⵉⵔ', 'ⵎⴰⵢⵢⵓ', 'ⵢⵓⵏⵢⵓ', 'ⵢⵓⵍⵢⵓⵣ', 'ⵖⵓⵛⵜ', 'ⵛⵓⵜⴰⵏⴱⵉⵔ', 'ⴽⵟⵓⴱⵕ', 'ⵏⵓⵡⴰⵏⴱⵉⵔ', 'ⴷⵓⵊⵏⴱⵉⵔ'],
- 'months_short' => ['ⵉⵏⵏⴰⵢⵔ', 'ⴱⵕⴰⵢⵕ', 'ⵎⴰⵕⵚ', 'ⵉⴱⵔⵉⵔ', 'ⵎⴰⵢⵢⵓ', 'ⵢⵓⵏⵢⵓ', 'ⵢⵓⵍⵢⵓⵣ', 'ⵖⵓⵛⵜ', 'ⵛⵓⵜⴰⵏⴱⵉⵔ', 'ⴽⵟⵓⴱⵕ', 'ⵏⵓⵡⴰⵏⴱⵉⵔ', 'ⴷⵓⵊⵏⴱⵉⵔ'],
- 'weekdays' => ['ⴰⵙⴰⵎⴰⵙ', 'ⴰⵢⵏⴰⵙ', 'ⴰⵙⵉⵏⴰⵙ', 'ⴰⴽⵔⴰⵙ', 'ⴰⴽⵡⴰⵙ', 'ⴰⵙⵉⵎⵡⴰⵙ', 'ⴰⵙⵉⴹⵢⴰⵙ'],
- 'weekdays_short' => ['ⴰⵙⴰⵎⴰⵙ', 'ⴰⵢⵏⴰⵙ', 'ⴰⵙⵉⵏⴰⵙ', 'ⴰⴽⵔⴰⵙ', 'ⴰⴽⵡⴰⵙ', 'ⴰⵙⵉⵎⵡⴰⵙ', 'ⴰⵙⵉⴹⵢⴰⵙ'],
- 'weekdays_min' => ['ⴰⵙⴰⵎⴰⵙ', 'ⴰⵢⵏⴰⵙ', 'ⴰⵙⵉⵏⴰⵙ', 'ⴰⴽⵔⴰⵙ', 'ⴰⴽⵡⴰⵙ', 'ⴰⵙⵉⵎⵡⴰⵙ', 'ⴰⵙⵉⴹⵢⴰⵙ'],
- 'first_day_of_week' => 6,
- 'day_of_first_week_of_year' => 1,
- 'weekend' => [5, 6],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tzm_Latn.php b/vendor/nesbot/carbon/src/Carbon/Lang/tzm_Latn.php
deleted file mode 100644
index 5840d209..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/tzm_Latn.php
+++ /dev/null
@@ -1,64 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Josh Soref
- * - JD Isaacks
- */
-return [
- 'year' => '{1}:count asgas|:count isgasn',
- 'a_year' => 'asgas|:count isgasn',
- 'month' => '{1}:count ayowr|:count iyyirn',
- 'a_month' => 'ayowr|:count iyyirn',
- 'week' => ':count imalass',
- 'a_week' => ':imalass',
- 'day' => '{1}:count ass|:count ossan',
- 'a_day' => 'ass|:count ossan',
- 'hour' => '{1}:count saɛa|:count tassaɛin',
- 'a_hour' => '{1}saɛa|:count tassaɛin',
- 'minute' => ':count minuḍ',
- 'a_minute' => '{1}minuḍ|:count minuḍ',
- 'second' => ':count imik',
- 'a_second' => '{1}imik|:count imik',
- 'ago' => 'yan :time',
- 'from_now' => 'dadkh s yan :time',
- 'diff_yesterday' => 'assant',
- 'diff_yesterday_regexp' => 'assant(?:\\s+g)?',
- 'diff_today' => 'asdkh',
- 'diff_today_regexp' => 'asdkh(?:\\s+g)?',
- 'diff_tomorrow' => 'aska',
- 'diff_tomorrow_regexp' => 'aska(?:\\s+g)?',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[asdkh g] LT',
- 'nextDay' => '[aska g] LT',
- 'nextWeek' => 'dddd [g] LT',
- 'lastDay' => '[assant g] LT',
- 'lastWeek' => 'dddd [g] LT',
- 'sameElse' => 'L',
- ],
- 'months' => ['innayr', 'brˤayrˤ', 'marˤsˤ', 'ibrir', 'mayyw', 'ywnyw', 'ywlywz', 'ɣwšt', 'šwtanbir', 'ktˤwbrˤ', 'nwwanbir', 'dwjnbir'],
- 'months_short' => ['innayr', 'brˤayrˤ', 'marˤsˤ', 'ibrir', 'mayyw', 'ywnyw', 'ywlywz', 'ɣwšt', 'šwtanbir', 'ktˤwbrˤ', 'nwwanbir', 'dwjnbir'],
- 'weekdays' => ['asamas', 'aynas', 'asinas', 'akras', 'akwas', 'asimwas', 'asiḍyas'],
- 'weekdays_short' => ['asamas', 'aynas', 'asinas', 'akras', 'akwas', 'asimwas', 'asiḍyas'],
- 'weekdays_min' => ['asamas', 'aynas', 'asinas', 'akras', 'akwas', 'asimwas', 'asiḍyas'],
- 'meridiem' => ['Zdat azal', 'Ḍeffir aza'],
- 'first_day_of_week' => 6,
- 'day_of_first_week_of_year' => 1,
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ug.php b/vendor/nesbot/carbon/src/Carbon/Lang/ug.php
deleted file mode 100644
index 259b99a4..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ug.php
+++ /dev/null
@@ -1,90 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Philippe Vaucher
- * - Tsutomu Kuroda
- * - yasinn
- */
-return [
- 'year' => '{1}'.'بىر يىل'.'|:count '.'يىل',
- 'month' => '{1}'.'بىر ئاي'.'|:count '.'ئاي',
- 'week' => '{1}'.'بىر ھەپتە'.'|:count '.'ھەپتە',
- 'day' => '{1}'.'بىر كۈن'.'|:count '.'كۈن',
- 'hour' => '{1}'.'بىر سائەت'.'|:count '.'سائەت',
- 'minute' => '{1}'.'بىر مىنۇت'.'|:count '.'مىنۇت',
- 'second' => '{1}'.'نەچچە سېكونت'.'|:count '.'سېكونت',
- 'ago' => ':time بۇرۇن',
- 'from_now' => ':time كېيىن',
- 'diff_today' => 'بۈگۈن',
- 'diff_yesterday' => 'تۆنۈگۈن',
- 'diff_tomorrow' => 'ئەتە',
- 'diff_tomorrow_regexp' => 'ئەتە(?:\\s+سائەت)?',
- 'diff_today_regexp' => 'بۈگۈن(?:\\s+سائەت)?',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'YYYY-MM-DD',
- 'LL' => 'YYYY-يىلىM-ئاينىڭD-كۈنى',
- 'LLL' => 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
- 'LLLL' => 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[بۈگۈن سائەت] LT',
- 'nextDay' => '[ئەتە سائەت] LT',
- 'nextWeek' => '[كېلەركى] dddd [سائەت] LT',
- 'lastDay' => '[تۆنۈگۈن] LT',
- 'lastWeek' => '[ئالدىنقى] dddd [سائەت] LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => function ($number, $period) {
- switch ($period) {
- case 'd':
- case 'D':
- case 'DDD':
- return $number.'-كۈنى';
- case 'w':
- case 'W':
- return $number.'-ھەپتە';
- default:
- return $number;
- }
- },
- 'meridiem' => function ($hour, $minute) {
- $time = $hour * 100 + $minute;
- if ($time < 600) {
- return 'يېرىم كېچە';
- }
- if ($time < 900) {
- return 'سەھەر';
- }
- if ($time < 1130) {
- return 'چۈشتىن بۇرۇن';
- }
- if ($time < 1230) {
- return 'چۈش';
- }
- if ($time < 1800) {
- return 'چۈشتىن كېيىن';
- }
-
- return 'كەچ';
- },
- 'months' => ['يانۋار', 'فېۋرال', 'مارت', 'ئاپرېل', 'ماي', 'ئىيۇن', 'ئىيۇل', 'ئاۋغۇست', 'سېنتەبىر', 'ئۆكتەبىر', 'نويابىر', 'دېكابىر'],
- 'months_short' => ['يانۋار', 'فېۋرال', 'مارت', 'ئاپرېل', 'ماي', 'ئىيۇن', 'ئىيۇل', 'ئاۋغۇست', 'سېنتەبىر', 'ئۆكتەبىر', 'نويابىر', 'دېكابىر'],
- 'weekdays' => ['يەكشەنبە', 'دۈشەنبە', 'سەيشەنبە', 'چارشەنبە', 'پەيشەنبە', 'جۈمە', 'شەنبە'],
- 'weekdays_short' => ['يە', 'دۈ', 'سە', 'چا', 'پە', 'جۈ', 'شە'],
- 'weekdays_min' => ['يە', 'دۈ', 'سە', 'چا', 'پە', 'جۈ', 'شە'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'list' => [', ', ' ۋە '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ug_CN.php b/vendor/nesbot/carbon/src/Carbon/Lang/ug_CN.php
deleted file mode 100644
index deb828c5..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ug_CN.php
+++ /dev/null
@@ -1,17 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Kunal Marwaha
- * - Alim Boyaq
- */
-return require __DIR__.'/ug.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/uk.php b/vendor/nesbot/carbon/src/Carbon/Lang/uk.php
deleted file mode 100644
index b267b000..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/uk.php
+++ /dev/null
@@ -1,211 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Carbon\CarbonInterface;
-
-$processHoursFunction = function (CarbonInterface $date, string $format) {
- return $format.'о'.($date->hour === 11 ? 'б' : '').'] LT';
-};
-
-/*
- * Authors:
- * - Kunal Marwaha
- * - Josh Soref
- * - François B
- * - Tim Fish
- * - Serhan Apaydın
- * - Max Mykhailenko
- * - JD Isaacks
- * - Max Kovpak
- * - AucT
- * - Philippe Vaucher
- * - Ilya Shaplyko
- * - Vadym Ievsieiev
- * - Denys Kurets
- * - Igor Kasyanchuk
- * - Tsutomu Kuroda
- * - tjku
- * - Max Melentiev
- * - Oleh
- * - epaminond
- * - Juanito Fatas
- * - Vitalii Khustochka
- * - Akira Matsuda
- * - Christopher Dell
- * - Enrique Vidal
- * - Simone Carletti
- * - Aaron Patterson
- * - Andriy Tyurnikov
- * - Nicolás Hock Isaza
- * - Iwakura Taro
- * - Andrii Ponomarov
- * - alecrabbit
- * - vystepanenko
- * - AlexWalkerson
- * - Andre Havryliuk (Andrend)
- * - Max Datsenko (datsenko-md)
- */
-return [
- 'year' => ':count рік|:count роки|:count років',
- 'y' => ':countр',
- 'a_year' => '{1}рік|:count рік|:count роки|:count років',
- 'month' => ':count місяць|:count місяці|:count місяців',
- 'm' => ':countм',
- 'a_month' => '{1}місяць|:count місяць|:count місяці|:count місяців',
- 'week' => ':count тиждень|:count тижні|:count тижнів',
- 'w' => ':countт',
- 'a_week' => '{1}тиждень|:count тиждень|:count тижні|:count тижнів',
- 'day' => ':count день|:count дні|:count днів',
- 'd' => ':countд',
- 'a_day' => '{1}день|:count день|:count дні|:count днів',
- 'hour' => ':count година|:count години|:count годин',
- 'h' => ':countг',
- 'a_hour' => '{1}година|:count година|:count години|:count годин',
- 'minute' => ':count хвилина|:count хвилини|:count хвилин',
- 'min' => ':countхв',
- 'a_minute' => '{1}хвилина|:count хвилина|:count хвилини|:count хвилин',
- 'second' => ':count секунда|:count секунди|:count секунд',
- 's' => ':countсек',
- 'a_second' => '{1}декілька секунд|:count секунда|:count секунди|:count секунд',
-
- 'hour_ago' => ':count годину|:count години|:count годин',
- 'a_hour_ago' => '{1}годину|:count годину|:count години|:count годин',
- 'minute_ago' => ':count хвилину|:count хвилини|:count хвилин',
- 'a_minute_ago' => '{1}хвилину|:count хвилину|:count хвилини|:count хвилин',
- 'second_ago' => ':count секунду|:count секунди|:count секунд',
- 'a_second_ago' => '{1}декілька секунд|:count секунду|:count секунди|:count секунд',
-
- 'hour_from_now' => ':count годину|:count години|:count годин',
- 'a_hour_from_now' => '{1}годину|:count годину|:count години|:count годин',
- 'minute_from_now' => ':count хвилину|:count хвилини|:count хвилин',
- 'a_minute_from_now' => '{1}хвилину|:count хвилину|:count хвилини|:count хвилин',
- 'second_from_now' => ':count секунду|:count секунди|:count секунд',
- 'a_second_from_now' => '{1}декілька секунд|:count секунду|:count секунди|:count секунд',
-
- 'hour_after' => ':count годину|:count години|:count годин',
- 'a_hour_after' => '{1}годину|:count годину|:count години|:count годин',
- 'minute_after' => ':count хвилину|:count хвилини|:count хвилин',
- 'a_minute_after' => '{1}хвилину|:count хвилину|:count хвилини|:count хвилин',
- 'second_after' => ':count секунду|:count секунди|:count секунд',
- 'a_second_after' => '{1}декілька секунд|:count секунду|:count секунди|:count секунд',
-
- 'hour_before' => ':count годину|:count години|:count годин',
- 'a_hour_before' => '{1}годину|:count годину|:count години|:count годин',
- 'minute_before' => ':count хвилину|:count хвилини|:count хвилин',
- 'a_minute_before' => '{1}хвилину|:count хвилину|:count хвилини|:count хвилин',
- 'second_before' => ':count секунду|:count секунди|:count секунд',
- 'a_second_before' => '{1}декілька секунд|:count секунду|:count секунди|:count секунд',
-
- 'ago' => ':time тому',
- 'from_now' => 'за :time',
- 'after' => ':time після',
- 'before' => ':time до',
- 'diff_now' => 'щойно',
- 'diff_today' => 'Сьогодні',
- 'diff_today_regexp' => 'Сьогодні(?:\\s+о)?',
- 'diff_yesterday' => 'вчора',
- 'diff_yesterday_regexp' => 'Вчора(?:\\s+о)?',
- 'diff_tomorrow' => 'завтра',
- 'diff_tomorrow_regexp' => 'Завтра(?:\\s+о)?',
- 'diff_before_yesterday' => 'позавчора',
- 'diff_after_tomorrow' => 'післязавтра',
- 'period_recurrences' => 'один раз|:count рази|:count разів',
- 'period_interval' => 'кожні :interval',
- 'period_start_date' => 'з :date',
- 'period_end_date' => 'до :date',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY, HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY, HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => function (CarbonInterface $date) use ($processHoursFunction) {
- return $processHoursFunction($date, '[Сьогодні ');
- },
- 'nextDay' => function (CarbonInterface $date) use ($processHoursFunction) {
- return $processHoursFunction($date, '[Завтра ');
- },
- 'nextWeek' => function (CarbonInterface $date) use ($processHoursFunction) {
- return $processHoursFunction($date, '[У] dddd [');
- },
- 'lastDay' => function (CarbonInterface $date) use ($processHoursFunction) {
- return $processHoursFunction($date, '[Вчора ');
- },
- 'lastWeek' => function (CarbonInterface $date) use ($processHoursFunction) {
- switch ($date->dayOfWeek) {
- case 0:
- case 3:
- case 5:
- case 6:
- return $processHoursFunction($date, '[Минулої] dddd [');
- default:
- return $processHoursFunction($date, '[Минулого] dddd [');
- }
- },
- 'sameElse' => 'L',
- ],
- 'ordinal' => function ($number, $period) {
- switch ($period) {
- case 'M':
- case 'd':
- case 'DDD':
- case 'w':
- case 'W':
- return $number.'-й';
- case 'D':
- return $number.'-го';
- default:
- return $number;
- }
- },
- 'meridiem' => function ($hour) {
- if ($hour < 4) {
- return 'ночі';
- }
- if ($hour < 12) {
- return 'ранку';
- }
- if ($hour < 17) {
- return 'дня';
- }
-
- return 'вечора';
- },
- 'months' => ['січня', 'лютого', 'березня', 'квітня', 'травня', 'червня', 'липня', 'серпня', 'вересня', 'жовтня', 'листопада', 'грудня'],
- 'months_standalone' => ['січень', 'лютий', 'березень', 'квітень', 'травень', 'червень', 'липень', 'серпень', 'вересень', 'жовтень', 'листопад', 'грудень'],
- 'months_short' => ['січ', 'лют', 'бер', 'кві', 'тра', 'чер', 'лип', 'сер', 'вер', 'жов', 'лис', 'гру'],
- 'months_regexp' => '/(D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|L{2,4}|l{2,4})/',
- 'weekdays' => function (CarbonInterface $date, $format, $index) {
- static $words = [
- 'nominative' => ['неділя', 'понеділок', 'вівторок', 'середа', 'четвер', 'п’ятниця', 'субота'],
- 'accusative' => ['неділю', 'понеділок', 'вівторок', 'середу', 'четвер', 'п’ятницю', 'суботу'],
- 'genitive' => ['неділі', 'понеділка', 'вівторка', 'середи', 'четверга', 'п’ятниці', 'суботи'],
- ];
-
- $nounCase = preg_match('/(\[(В|в|У|у)\])\s+dddd/u', $format)
- ? 'accusative'
- : (
- preg_match('/\[?(?:минулої|наступної)?\s*\]\s+dddd/u', $format)
- ? 'genitive'
- : 'nominative'
- );
-
- return $words[$nounCase][$index] ?? null;
- },
- 'weekdays_short' => ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'],
- 'weekdays_min' => ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'list' => [', ', ' i '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/uk_UA.php b/vendor/nesbot/carbon/src/Carbon/Lang/uk_UA.php
deleted file mode 100644
index bd11d86e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/uk_UA.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/uk.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/unm.php b/vendor/nesbot/carbon/src/Carbon/Lang/unm.php
deleted file mode 100644
index d3f19f06..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/unm.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/unm_US.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/unm_US.php b/vendor/nesbot/carbon/src/Carbon/Lang/unm_US.php
deleted file mode 100644
index fa5c374e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/unm_US.php
+++ /dev/null
@@ -1,57 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YY',
- ],
- 'months' => ['enikwsi', 'chkwali', 'xamokhwite', 'kwetayoxe', 'tainipen', 'kichinipen', 'lainipen', 'winaminke', 'kichitahkok', 'puksit', 'wini', 'muxkotae'],
- 'months_short' => ['eni', 'chk', 'xam', 'kwe', 'tai', 'nip', 'lai', 'win', 'tah', 'puk', 'kun', 'mux'],
- 'weekdays' => ['kentuwei', 'manteke', 'tusteke', 'lelai', 'tasteke', 'pelaiteke', 'sateteke'],
- 'weekdays_short' => ['ken', 'man', 'tus', 'lel', 'tas', 'pel', 'sat'],
- 'weekdays_min' => ['ken', 'man', 'tus', 'lel', 'tas', 'pel', 'sat'],
- 'day_of_first_week_of_year' => 1,
-
- // Too unreliable
- /*
- 'year' => ':count kaxtëne',
- 'y' => ':count kaxtëne',
- 'a_year' => ':count kaxtëne',
-
- 'month' => ':count piskewëni kishux', // less reliable
- 'm' => ':count piskewëni kishux', // less reliable
- 'a_month' => ':count piskewëni kishux', // less reliable
-
- 'week' => ':count kishku', // less reliable
- 'w' => ':count kishku', // less reliable
- 'a_week' => ':count kishku', // less reliable
-
- 'day' => ':count kishku',
- 'd' => ':count kishku',
- 'a_day' => ':count kishku',
-
- 'hour' => ':count xkuk', // less reliable
- 'h' => ':count xkuk', // less reliable
- 'a_hour' => ':count xkuk', // less reliable
-
- 'minute' => ':count txituwàk', // less reliable
- 'min' => ':count txituwàk', // less reliable
- 'a_minute' => ':count txituwàk', // less reliable
-
- 'second' => ':count nisha', // less reliable
- 's' => ':count nisha', // less reliable
- 'a_second' => ':count nisha', // less reliable
- */
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ur.php b/vendor/nesbot/carbon/src/Carbon/Lang/ur.php
deleted file mode 100644
index dc16c2c3..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ur.php
+++ /dev/null
@@ -1,94 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-$months = [
- 'جنوری',
- 'فروری',
- 'مارچ',
- 'اپریل',
- 'مئی',
- 'جون',
- 'جولائی',
- 'اگست',
- 'ستمبر',
- 'اکتوبر',
- 'نومبر',
- 'دسمبر',
-];
-
-$weekdays = [
- 'اتوار',
- 'پیر',
- 'منگل',
- 'بدھ',
- 'جمعرات',
- 'جمعہ',
- 'ہفتہ',
-];
-
-/*
- * Authors:
- * - Sawood Alam
- * - Mehshan
- * - Philippe Vaucher
- * - Tsutomu Kuroda
- * - tjku
- * - Zaid Akram
- * - Max Melentiev
- * - hafezdivandari
- * - Hossein Jabbari
- * - nimamo
- */
-return [
- 'year' => 'ایک سال|:count سال',
- 'month' => 'ایک ماہ|:count ماہ',
- 'week' => ':count ہفتے',
- 'day' => 'ایک دن|:count دن',
- 'hour' => 'ایک گھنٹہ|:count گھنٹے',
- 'minute' => 'ایک منٹ|:count منٹ',
- 'second' => 'چند سیکنڈ|:count سیکنڈ',
- 'ago' => ':time قبل',
- 'from_now' => ':time بعد',
- 'after' => ':time بعد',
- 'before' => ':time پہلے',
- 'diff_now' => 'اب',
- 'diff_today' => 'آج',
- 'diff_today_regexp' => 'آج(?:\\s+بوقت)?',
- 'diff_yesterday' => 'گزشتہ کل',
- 'diff_yesterday_regexp' => 'گذشتہ(?:\\s+روز)?(?:\\s+بوقت)?',
- 'diff_tomorrow' => 'آئندہ کل',
- 'diff_tomorrow_regexp' => 'کل(?:\\s+بوقت)?',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd، D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[آج بوقت] LT',
- 'nextDay' => '[کل بوقت] LT',
- 'nextWeek' => 'dddd [بوقت] LT',
- 'lastDay' => '[گذشتہ روز بوقت] LT',
- 'lastWeek' => '[گذشتہ] dddd [بوقت] LT',
- 'sameElse' => 'L',
- ],
- 'meridiem' => ['صبح', 'شام'],
- 'months' => $months,
- 'months_short' => $months,
- 'weekdays' => $weekdays,
- 'weekdays_short' => $weekdays,
- 'weekdays_min' => $weekdays,
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => ['، ', ' اور '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ur_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/ur_IN.php
deleted file mode 100644
index f81c84d3..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ur_IN.php
+++ /dev/null
@@ -1,26 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Red Hat, Pune bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/ur.php', [
- 'formats' => [
- 'L' => 'D/M/YY',
- ],
- 'months' => ['جنوری', 'فروری', 'مارچ', 'اپریل', 'مئی', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', 'دسمبر'],
- 'months_short' => ['جنوری', 'فروری', 'مارچ', 'اپریل', 'مئی', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', 'دسمبر'],
- 'weekdays' => ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'سنیچر'],
- 'weekdays_short' => ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'سنیچر'],
- 'weekdays_min' => ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'سنیچر'],
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ur_PK.php b/vendor/nesbot/carbon/src/Carbon/Lang/ur_PK.php
deleted file mode 100644
index 8cd593db..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ur_PK.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/ur.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['جنوری', 'فروری', 'مارچ', 'اپریل', 'مئی', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', 'دسمبر'],
- 'months_short' => ['جنوری', 'فروری', 'مارچ', 'اپریل', 'مئی', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', 'دسمبر'],
- 'weekdays' => ['اتوار', 'پير', 'منگل', 'بدھ', 'جمعرات', 'جمعه', 'هفته'],
- 'weekdays_short' => ['اتوار', 'پير', 'منگل', 'بدھ', 'جمعرات', 'جمعه', 'هفته'],
- 'weekdays_min' => ['اتوار', 'پير', 'منگل', 'بدھ', 'جمعرات', 'جمعه', 'هفته'],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['ص', 'ش'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/uz.php b/vendor/nesbot/carbon/src/Carbon/Lang/uz.php
deleted file mode 100644
index 61f3b64b..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/uz.php
+++ /dev/null
@@ -1,85 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Dmitriy Shabanov
- * - JD Isaacks
- * - Inoyatulloh
- * - Jamshid
- * - aarkhipov
- * - Philippe Vaucher
- * - felixthemagnificent
- * - Tsutomu Kuroda
- * - tjku
- * - Max Melentiev
- * - Juanito Fatas
- * - Alisher Ulugbekov
- * - Ergashev Adizbek
- */
-return [
- 'year' => ':count йил',
- 'a_year' => '{1}бир йил|:count йил',
- 'y' => ':count й',
- 'month' => ':count ой',
- 'a_month' => '{1}бир ой|:count ой',
- 'm' => ':count о',
- 'week' => ':count ҳафта',
- 'a_week' => '{1}бир ҳафта|:count ҳафта',
- 'w' => ':count ҳ',
- 'day' => ':count кун',
- 'a_day' => '{1}бир кун|:count кун',
- 'd' => ':count к',
- 'hour' => ':count соат',
- 'a_hour' => '{1}бир соат|:count соат',
- 'h' => ':count с',
- 'minute' => ':count дақиқа',
- 'a_minute' => '{1}бир дақиқа|:count дақиқа',
- 'min' => ':count д',
- 'second' => ':count сония',
- 'a_second' => '{1}сония|:count сония',
- 's' => ':count с',
- 'ago' => ':time аввал',
- 'from_now' => 'Якин :time ичида',
- 'after' => ':timeдан кейин',
- 'before' => ':time олдин',
- 'diff_now' => 'ҳозир',
- 'diff_today' => 'Бугун',
- 'diff_today_regexp' => 'Бугун(?:\\s+соат)?',
- 'diff_yesterday' => 'Кеча',
- 'diff_yesterday_regexp' => 'Кеча(?:\\s+соат)?',
- 'diff_tomorrow' => 'Эртага',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'D MMMM YYYY, dddd HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[Бугун соат] LT [да]',
- 'nextDay' => '[Эртага] LT [да]',
- 'nextWeek' => 'dddd [куни соат] LT [да]',
- 'lastDay' => '[Кеча соат] LT [да]',
- 'lastWeek' => '[Утган] dddd [куни соат] LT [да]',
- 'sameElse' => 'L',
- ],
- 'months' => ['январ', 'феврал', 'март', 'апрел', 'май', 'июн', 'июл', 'август', 'сентябр', 'октябр', 'ноябр', 'декабр'],
- 'months_short' => ['янв', 'фев', 'мар', 'апр', 'май', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек'],
- 'weekdays' => ['якшанба', 'душанба', 'сешанба', 'чоршанба', 'пайшанба', 'жума', 'шанба'],
- 'weekdays_short' => ['якш', 'душ', 'сеш', 'чор', 'пай', 'жум', 'шан'],
- 'weekdays_min' => ['як', 'ду', 'се', 'чо', 'па', 'жу', 'ша'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['эрталаб', 'кечаси'],
- 'list' => [', ', ' ва '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/uz_Arab.php b/vendor/nesbot/carbon/src/Carbon/Lang/uz_Arab.php
deleted file mode 100644
index ffb51319..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/uz_Arab.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/fa.php', [
- 'weekdays' => ['یکشنبه', 'دوشنبه', 'سهشنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه'],
- 'weekdays_short' => ['ی.', 'د.', 'س.', 'چ.', 'پ.', 'ج.', 'ش.'],
- 'weekdays_min' => ['ی.', 'د.', 'س.', 'چ.', 'پ.', 'ج.', 'ش.'],
- 'months' => ['جنوری', 'فبروری', 'مارچ', 'اپریل', 'می', 'جون', 'جولای', 'اگست', 'سپتمبر', 'اکتوبر', 'نومبر', 'دسمبر'],
- 'months_short' => ['جنو', 'فبر', 'مار', 'اپر', 'می', 'جون', 'جول', 'اگس', 'سپت', 'اکت', 'نوم', 'دسم'],
- 'first_day_of_week' => 6,
- 'weekend' => [4, 5],
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'YYYY-MM-dd',
- 'LL' => 'YYYY MMM D',
- 'LLL' => 'YYYY MMMM D HH:mm',
- 'LLLL' => 'YYYY MMMM D, dddd HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/uz_Cyrl.php b/vendor/nesbot/carbon/src/Carbon/Lang/uz_Cyrl.php
deleted file mode 100644
index 89e99718..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/uz_Cyrl.php
+++ /dev/null
@@ -1,20 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/uz.php', [
- 'formats' => [
- 'L' => 'DD/MM/yy',
- 'LL' => 'D MMM, YYYY',
- 'LLL' => 'D MMMM, YYYY HH:mm',
- 'LLLL' => 'dddd, DD MMMM, YYYY HH:mm',
- ],
- 'meridiem' => ['ТО', 'ТК'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/uz_Latn.php b/vendor/nesbot/carbon/src/Carbon/Lang/uz_Latn.php
deleted file mode 100644
index ecceeaa3..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/uz_Latn.php
+++ /dev/null
@@ -1,74 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Josh Soref
- * - Rasulbek
- * - Ilyosjon Kamoldinov (ilyosjon09)
- */
-return [
- 'year' => ':count yil',
- 'a_year' => '{1}bir yil|:count yil',
- 'y' => ':count y',
- 'month' => ':count oy',
- 'a_month' => '{1}bir oy|:count oy',
- 'm' => ':count o',
- 'week' => ':count hafta',
- 'a_week' => '{1}bir hafta|:count hafta',
- 'w' => ':count h',
- 'day' => ':count kun',
- 'a_day' => '{1}bir kun|:count kun',
- 'd' => ':count k',
- 'hour' => ':count soat',
- 'a_hour' => '{1}bir soat|:count soat',
- 'h' => ':count soat',
- 'minute' => ':count daqiqa',
- 'a_minute' => '{1}bir daqiqa|:count daqiqa',
- 'min' => ':count d',
- 'second' => ':count soniya',
- 'a_second' => '{1}soniya|:count soniya',
- 's' => ':count son.',
- 'ago' => ':time avval',
- 'from_now' => 'Yaqin :time ichida',
- 'after' => ':timedan keyin',
- 'before' => ':time oldin',
- 'diff_yesterday' => 'Kecha',
- 'diff_yesterday_regexp' => 'Kecha(?:\\s+soat)?',
- 'diff_today' => 'Bugun',
- 'diff_today_regexp' => 'Bugun(?:\\s+soat)?',
- 'diff_tomorrow' => 'Ertaga',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'D MMMM YYYY, dddd HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[Bugun soat] LT [da]',
- 'nextDay' => '[Ertaga] LT [da]',
- 'nextWeek' => 'dddd [kuni soat] LT [da]',
- 'lastDay' => '[Kecha soat] LT [da]',
- 'lastWeek' => '[O\'tgan] dddd [kuni soat] LT [da]',
- 'sameElse' => 'L',
- ],
- 'months' => ['Yanvar', 'Fevral', 'Mart', 'Aprel', 'May', 'Iyun', 'Iyul', 'Avgust', 'Sentabr', 'Oktabr', 'Noyabr', 'Dekabr'],
- 'months_short' => ['Yan', 'Fev', 'Mar', 'Apr', 'May', 'Iyun', 'Iyul', 'Avg', 'Sen', 'Okt', 'Noy', 'Dek'],
- 'weekdays' => ['Yakshanba', 'Dushanba', 'Seshanba', 'Chorshanba', 'Payshanba', 'Juma', 'Shanba'],
- 'weekdays_short' => ['Yak', 'Dush', 'Sesh', 'Chor', 'Pay', 'Jum', 'Shan'],
- 'weekdays_min' => ['Ya', 'Du', 'Se', 'Cho', 'Pa', 'Ju', 'Sha'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'list' => [', ', ' va '],
- 'meridiem' => ['TO', 'TK'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/uz_UZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/uz_UZ.php
deleted file mode 100644
index d41bfee2..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/uz_UZ.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Bobir Ismailov Bobir Ismailov, Pablo Saratxaga, Mashrab Kuvatov bobir_is@yahoo.com, pablo@mandrakesoft.com, kmashrab@uni-bremen.de
- */
-return array_replace_recursive(require __DIR__.'/uz_Latn.php', [
- 'formats' => [
- 'L' => 'DD/MM/YY',
- ],
- 'months' => ['Yanvar', 'Fevral', 'Mart', 'Aprel', 'May', 'Iyun', 'Iyul', 'Avgust', 'Sentabr', 'Oktabr', 'Noyabr', 'Dekabr'],
- 'months_short' => ['Yan', 'Fev', 'Mar', 'Apr', 'May', 'Iyn', 'Iyl', 'Avg', 'Sen', 'Okt', 'Noy', 'Dek'],
- 'weekdays' => ['Yakshanba', 'Dushanba', 'Seshanba', 'Chorshanba', 'Payshanba', 'Juma', 'Shanba'],
- 'weekdays_short' => ['Yak', 'Du', 'Se', 'Cho', 'Pay', 'Ju', 'Sha'],
- 'weekdays_min' => ['Yak', 'Du', 'Se', 'Cho', 'Pay', 'Ju', 'Sha'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/uz_UZ@cyrillic.php b/vendor/nesbot/carbon/src/Carbon/Lang/uz_UZ@cyrillic.php
deleted file mode 100644
index 2fa967c9..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/uz_UZ@cyrillic.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Mashrab Kuvatov Mashrab Kuvatov, Pablo Saratxaga kmashrab@uni-bremen.de, pablo@mandrakesoft.com
- */
-return array_replace_recursive(require __DIR__.'/uz.php', [
- 'formats' => [
- 'L' => 'DD/MM/YY',
- ],
- 'months' => ['Январ', 'Феврал', 'Март', 'Апрел', 'Май', 'Июн', 'Июл', 'Август', 'Сентябр', 'Октябр', 'Ноябр', 'Декабр'],
- 'months_short' => ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'],
- 'weekdays' => ['Якшанба', 'Душанба', 'Сешанба', 'Чоршанба', 'Пайшанба', 'Жума', 'Шанба'],
- 'weekdays_short' => ['Якш', 'Душ', 'Сеш', 'Чор', 'Пай', 'Жум', 'Шан'],
- 'weekdays_min' => ['Якш', 'Душ', 'Сеш', 'Чор', 'Пай', 'Жум', 'Шан'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/vai.php b/vendor/nesbot/carbon/src/Carbon/Lang/vai.php
deleted file mode 100644
index 3c378dfb..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/vai.php
+++ /dev/null
@@ -1,35 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'weekdays' => ['ꕞꕌꔵ', 'ꗳꗡꘉ', 'ꕚꕞꕚ', 'ꕉꕞꕒ', 'ꕉꔤꕆꕢ', 'ꕉꔤꕀꕮ', 'ꔻꔬꔳ'],
- 'weekdays_short' => ['ꕞꕌꔵ', 'ꗳꗡꘉ', 'ꕚꕞꕚ', 'ꕉꕞꕒ', 'ꕉꔤꕆꕢ', 'ꕉꔤꕀꕮ', 'ꔻꔬꔳ'],
- 'weekdays_min' => ['ꕞꕌꔵ', 'ꗳꗡꘉ', 'ꕚꕞꕚ', 'ꕉꕞꕒ', 'ꕉꔤꕆꕢ', 'ꕉꔤꕀꕮ', 'ꔻꔬꔳ'],
- 'months' => ['ꖨꖕ ꕪꕴ ꔞꔀꕮꕊ', 'ꕒꕡꖝꖕ', 'ꕾꖺ', 'ꖢꖕ', 'ꖑꕱ', 'ꖱꘋ', 'ꖱꕞꔤ', 'ꗛꔕ', 'ꕢꕌ', 'ꕭꖃ', 'ꔞꘋꕔꕿ ꕸꖃꗏ', 'ꖨꖕ ꕪꕴ ꗏꖺꕮꕊ'],
- 'months_short' => ['ꖨꖕꔞ', 'ꕒꕡ', 'ꕾꖺ', 'ꖢꖕ', 'ꖑꕱ', 'ꖱꘋ', 'ꖱꕞ', 'ꗛꔕ', 'ꕢꕌ', 'ꕭꖃ', 'ꔞꘋ', 'ꖨꖕꗏ'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'h:mm a',
- 'LTS' => 'h:mm:ss a',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY h:mm a',
- 'LLLL' => 'dddd, D MMMM YYYY h:mm a',
- ],
-
- 'year' => ':count ꕀ', // less reliable
- 'y' => ':count ꕀ', // less reliable
- 'a_year' => ':count ꕀ', // less reliable
-
- 'second' => ':count ꗱꕞꕯꕊ', // less reliable
- 's' => ':count ꗱꕞꕯꕊ', // less reliable
- 'a_second' => ':count ꗱꕞꕯꕊ', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/vai_Latn.php b/vendor/nesbot/carbon/src/Carbon/Lang/vai_Latn.php
deleted file mode 100644
index 51e83cc5..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/vai_Latn.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'weekdays' => ['lahadi', 'tɛɛnɛɛ', 'talata', 'alaba', 'aimisa', 'aijima', 'siɓiti'],
- 'weekdays_short' => ['lahadi', 'tɛɛnɛɛ', 'talata', 'alaba', 'aimisa', 'aijima', 'siɓiti'],
- 'weekdays_min' => ['lahadi', 'tɛɛnɛɛ', 'talata', 'alaba', 'aimisa', 'aijima', 'siɓiti'],
- 'months' => ['luukao kemã', 'ɓandaɓu', 'vɔɔ', 'fulu', 'goo', '6', '7', 'kɔnde', 'saah', 'galo', 'kenpkato ɓololɔ', 'luukao lɔma'],
- 'months_short' => ['luukao kemã', 'ɓandaɓu', 'vɔɔ', 'fulu', 'goo', '6', '7', 'kɔnde', 'saah', 'galo', 'kenpkato ɓololɔ', 'luukao lɔma'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'h:mm a',
- 'LTS' => 'h:mm:ss a',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY h:mm a',
- 'LLLL' => 'dddd, D MMMM YYYY h:mm a',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/vai_Vaii.php b/vendor/nesbot/carbon/src/Carbon/Lang/vai_Vaii.php
deleted file mode 100644
index b4bb533f..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/vai_Vaii.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/vai.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ve.php b/vendor/nesbot/carbon/src/Carbon/Lang/ve.php
deleted file mode 100644
index 7f10aeb9..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ve.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/ve_ZA.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ve_ZA.php b/vendor/nesbot/carbon/src/Carbon/Lang/ve_ZA.php
deleted file mode 100644
index 5eb2b912..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/ve_ZA.php
+++ /dev/null
@@ -1,49 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Zuza Software Foundation (Translate.org.za) Dwayne Bailey dwayne@translate.org.za
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['Phando', 'Luhuhi', 'Ṱhafamuhwe', 'Lambamai', 'Shundunthule', 'Fulwi', 'Fulwana', 'Ṱhangule', 'Khubvumedzi', 'Tshimedzi', 'Ḽara', 'Nyendavhusiku'],
- 'months_short' => ['Pha', 'Luh', 'Fam', 'Lam', 'Shu', 'Lwi', 'Lwa', 'Ngu', 'Khu', 'Tsh', 'Ḽar', 'Nye'],
- 'weekdays' => ['Swondaha', 'Musumbuluwo', 'Ḽavhuvhili', 'Ḽavhuraru', 'Ḽavhuṋa', 'Ḽavhuṱanu', 'Mugivhela'],
- 'weekdays_short' => ['Swo', 'Mus', 'Vhi', 'Rar', 'ṋa', 'Ṱan', 'Mug'],
- 'weekdays_min' => ['Swo', 'Mus', 'Vhi', 'Rar', 'ṋa', 'Ṱan', 'Mug'],
- 'day_of_first_week_of_year' => 1,
-
- // Too unreliable
- /*
- 'day' => ':count vhege', // less reliable
- 'd' => ':count vhege', // less reliable
- 'a_day' => ':count vhege', // less reliable
-
- 'hour' => ':count watshi', // less reliable
- 'h' => ':count watshi', // less reliable
- 'a_hour' => ':count watshi', // less reliable
-
- 'minute' => ':count watshi', // less reliable
- 'min' => ':count watshi', // less reliable
- 'a_minute' => ':count watshi', // less reliable
-
- 'second' => ':count Mu', // less reliable
- 's' => ':count Mu', // less reliable
- 'a_second' => ':count Mu', // less reliable
-
- 'week' => ':count vhege',
- 'w' => ':count vhege',
- 'a_week' => ':count vhege',
- */
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/vi.php b/vendor/nesbot/carbon/src/Carbon/Lang/vi.php
deleted file mode 100644
index 73e2852e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/vi.php
+++ /dev/null
@@ -1,76 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - François B
- * - Andre Polykanine A.K.A. Menelion Elensúlë
- * - JD Isaacks
- */
-return [
- 'year' => ':count năm',
- 'a_year' => '{1}một năm|]1, Inf[:count năm',
- 'y' => ':count năm',
- 'month' => ':count tháng',
- 'a_month' => '{1}một tháng|]1, Inf[:count tháng',
- 'm' => ':count tháng',
- 'week' => ':count tuần',
- 'a_week' => '{1}một tuần|]1, Inf[:count tuần',
- 'w' => ':count tuần',
- 'day' => ':count ngày',
- 'a_day' => '{1}một ngày|]1, Inf[:count ngày',
- 'd' => ':count ngày',
- 'hour' => ':count giờ',
- 'a_hour' => '{1}một giờ|]1, Inf[:count giờ',
- 'h' => ':count giờ',
- 'minute' => ':count phút',
- 'a_minute' => '{1}một phút|]1, Inf[:count phút',
- 'min' => ':count phút',
- 'second' => ':count giây',
- 'a_second' => '{1}vài giây|]1, Inf[:count giây',
- 's' => ':count giây',
- 'ago' => ':time trước',
- 'from_now' => ':time tới',
- 'after' => ':time sau',
- 'before' => ':time trước',
- 'diff_now' => 'bây giờ',
- 'diff_today' => 'Hôm',
- 'diff_today_regexp' => 'Hôm(?:\\s+nay)?(?:\\s+lúc)?',
- 'diff_yesterday' => 'Hôm qua',
- 'diff_yesterday_regexp' => 'Hôm(?:\\s+qua)?(?:\\s+lúc)?',
- 'diff_tomorrow' => 'Ngày mai',
- 'diff_tomorrow_regexp' => 'Ngày(?:\\s+mai)?(?:\\s+lúc)?',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM [năm] YYYY',
- 'LLL' => 'D MMMM [năm] YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM [năm] YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[Hôm nay lúc] LT',
- 'nextDay' => '[Ngày mai lúc] LT',
- 'nextWeek' => 'dddd [tuần tới lúc] LT',
- 'lastDay' => '[Hôm qua lúc] LT',
- 'lastWeek' => 'dddd [tuần trước lúc] LT',
- 'sameElse' => 'L',
- ],
- 'meridiem' => ['SA', 'CH'],
- 'months' => ['tháng 1', 'tháng 2', 'tháng 3', 'tháng 4', 'tháng 5', 'tháng 6', 'tháng 7', 'tháng 8', 'tháng 9', 'tháng 10', 'tháng 11', 'tháng 12'],
- 'months_short' => ['Th01', 'Th02', 'Th03', 'Th04', 'Th05', 'Th06', 'Th07', 'Th08', 'Th09', 'Th10', 'Th11', 'Th12'],
- 'weekdays' => ['chủ nhật', 'thứ hai', 'thứ ba', 'thứ tư', 'thứ năm', 'thứ sáu', 'thứ bảy'],
- 'weekdays_short' => ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],
- 'weekdays_min' => ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => [', ', ' và '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/vi_VN.php b/vendor/nesbot/carbon/src/Carbon/Lang/vi_VN.php
deleted file mode 100644
index 18d89876..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/vi_VN.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/vi.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/vo.php b/vendor/nesbot/carbon/src/Carbon/Lang/vo.php
deleted file mode 100644
index e273033f..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/vo.php
+++ /dev/null
@@ -1,52 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'months' => ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'M12'],
- 'months_short' => ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'M12'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'YYYY-MM-dd',
- 'LL' => 'YYYY MMM D',
- 'LLL' => 'YYYY MMMM D HH:mm',
- 'LLLL' => 'YYYY MMMM D, dddd HH:mm',
- ],
-
- 'year' => ':count yel',
- 'y' => ':count yel',
- 'a_year' => ':count yel',
-
- 'month' => ':count mul',
- 'm' => ':count mul',
- 'a_month' => ':count mul',
-
- 'week' => ':count vig',
- 'w' => ':count vig',
- 'a_week' => ':count vig',
-
- 'day' => ':count del',
- 'd' => ':count del',
- 'a_day' => ':count del',
-
- 'hour' => ':count düp',
- 'h' => ':count düp',
- 'a_hour' => ':count düp',
-
- 'minute' => ':count minut',
- 'min' => ':count minut',
- 'a_minute' => ':count minut',
-
- 'second' => ':count sekun',
- 's' => ':count sekun',
- 'a_second' => ':count sekun',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/vun.php b/vendor/nesbot/carbon/src/Carbon/Lang/vun.php
deleted file mode 100644
index ed92e8e7..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/vun.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['utuko', 'kyiukonyi'],
- 'weekdays' => ['Jumapilyi', 'Jumatatuu', 'Jumanne', 'Jumatanu', 'Alhamisi', 'Ijumaa', 'Jumamosi'],
- 'weekdays_short' => ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'],
- 'weekdays_min' => ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'],
- 'months' => ['Januari', 'Februari', 'Machi', 'Aprilyi', 'Mei', 'Junyi', 'Julyai', 'Agusti', 'Septemba', 'Oktoba', 'Novemba', 'Desemba'],
- 'months_short' => ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/wa.php b/vendor/nesbot/carbon/src/Carbon/Lang/wa.php
deleted file mode 100644
index f6dc4ccd..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/wa.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/wa_BE.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/wa_BE.php b/vendor/nesbot/carbon/src/Carbon/Lang/wa_BE.php
deleted file mode 100644
index a76d80d9..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/wa_BE.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Djan SACRE Pablo Saratxaga pablo@mandrakesoft.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['di djanvî', 'di fevrî', 'di måss', 'd’ avri', 'di may', 'di djun', 'di djulete', 'd’ awousse', 'di setimbe', 'd’ octôbe', 'di nôvimbe', 'di decimbe'],
- 'months_short' => ['dja', 'fev', 'mås', 'avr', 'may', 'djn', 'djl', 'awo', 'set', 'oct', 'nôv', 'dec'],
- 'weekdays' => ['dimegne', 'londi', 'mårdi', 'mierkidi', 'djudi', 'vénrdi', 'semdi'],
- 'weekdays_short' => ['dim', 'lon', 'mår', 'mie', 'dju', 'vén', 'sem'],
- 'weekdays_min' => ['dim', 'lon', 'mår', 'mie', 'dju', 'vén', 'sem'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-
- 'year' => ':count anêye',
- 'y' => ':count anêye',
- 'a_year' => ':count anêye',
-
- 'month' => ':count meûs',
- 'm' => ':count meûs',
- 'a_month' => ':count meûs',
-
- 'week' => ':count samwinne',
- 'w' => ':count samwinne',
- 'a_week' => ':count samwinne',
-
- 'day' => ':count djoû',
- 'd' => ':count djoû',
- 'a_day' => ':count djoû',
-
- 'hour' => ':count eure',
- 'h' => ':count eure',
- 'a_hour' => ':count eure',
-
- 'minute' => ':count munute',
- 'min' => ':count munute',
- 'a_minute' => ':count munute',
-
- 'second' => ':count Sigonde',
- 's' => ':count Sigonde',
- 'a_second' => ':count Sigonde',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/wae.php b/vendor/nesbot/carbon/src/Carbon/Lang/wae.php
deleted file mode 100644
index bf57f23e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/wae.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/wae_CH.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/wae_CH.php b/vendor/nesbot/carbon/src/Carbon/Lang/wae_CH.php
deleted file mode 100644
index 2af50b4b..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/wae_CH.php
+++ /dev/null
@@ -1,31 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Walser Translation Team ml@translate-wae.ch
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'YYYY-MM-DD',
- ],
- 'months' => ['Jenner', 'Hornig', 'Märze', 'Abrille', 'Meije', 'Bráčet', 'Heiwet', 'Öigšte', 'Herbštmánet', 'Wímánet', 'Wintermánet', 'Chrištmánet'],
- 'months_short' => ['Jen', 'Hor', 'Mär', 'Abr', 'Mei', 'Brá', 'Hei', 'Öig', 'Her', 'Wím', 'Win', 'Chr'],
- 'weekdays' => ['Suntag', 'Mäntag', 'Zischtag', 'Mittwuch', 'Frontag', 'Fritag', 'Samschtag'],
- 'weekdays_short' => ['Sun', 'Män', 'Zis', 'Mit', 'Fro', 'Fri', 'Sam'],
- 'weekdays_min' => ['Sun', 'Män', 'Zis', 'Mit', 'Fro', 'Fri', 'Sam'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
-
- 'month' => ':count Maano', // less reliable
- 'm' => ':count Maano', // less reliable
- 'a_month' => ':count Maano', // less reliable
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/wal.php b/vendor/nesbot/carbon/src/Carbon/Lang/wal.php
deleted file mode 100644
index e8ec40ff..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/wal.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/wal_ET.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/wal_ET.php b/vendor/nesbot/carbon/src/Carbon/Lang/wal_ET.php
deleted file mode 100644
index a4e619a8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/wal_ET.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Ge'ez Frontier Foundation locales@geez.org
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['ጃንዩወሪ', 'ፌብሩወሪ', 'ማርች', 'ኤፕረል', 'ሜይ', 'ጁን', 'ጁላይ', 'ኦገስት', 'ሴፕቴምበር', 'ኦክተውበር', 'ኖቬምበር', 'ዲሴምበር'],
- 'months_short' => ['ጃንዩ', 'ፌብሩ', 'ማርች', 'ኤፕረ', 'ሜይ ', 'ጁን ', 'ጁላይ', 'ኦገስ', 'ሴፕቴ', 'ኦክተ', 'ኖቬም', 'ዲሴም'],
- 'weekdays' => ['ወጋ', 'ሳይኖ', 'ማቆሳኛ', 'አሩዋ', 'ሃሙሳ', 'አርባ', 'ቄራ'],
- 'weekdays_short' => ['ወጋ ', 'ሳይኖ', 'ማቆሳ', 'አሩዋ', 'ሃሙሳ', 'አርባ', 'ቄራ '],
- 'weekdays_min' => ['ወጋ ', 'ሳይኖ', 'ማቆሳ', 'አሩዋ', 'ሃሙሳ', 'አርባ', 'ቄራ '],
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['ማለዶ', 'ቃማ'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/wo.php b/vendor/nesbot/carbon/src/Carbon/Lang/wo.php
deleted file mode 100644
index 74b95df0..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/wo.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/wo_SN.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/wo_SN.php b/vendor/nesbot/carbon/src/Carbon/Lang/wo_SN.php
deleted file mode 100644
index f8a85b3e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/wo_SN.php
+++ /dev/null
@@ -1,39 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - The Debian Project Christian Perrier bubulle@debian.org
- */
-return [
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD.MM.YYYY',
- 'LL' => 'MMMM DD, YYYY',
- 'LLL' => 'DD MMM HH:mm',
- 'LLLL' => 'MMMM DD, YYYY HH:mm',
- ],
- 'months' => ['sanwiy\'e', 'feebriy\'e', 'mars', 'awril', 'me', 'suwen', 'sulet', 'uut', 'septaambar', 'oktoobar', 'nowaambar', 'desaambar'],
- 'months_short' => ['san', 'fee', 'mar', 'awr', 'me ', 'suw', 'sul', 'uut', 'sep', 'okt', 'now', 'des'],
- 'weekdays' => ['dib\'eer', 'altine', 'talaata', 'allarba', 'alxames', 'ajjuma', 'gaawu'],
- 'weekdays_short' => ['dib', 'alt', 'tal', 'all', 'alx', 'ajj', 'gaa'],
- 'weekdays_min' => ['dib', 'alt', 'tal', 'all', 'alx', 'ajj', 'gaa'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'year' => ':count at',
- 'month' => ':count wèr',
- 'week' => ':count ayubés',
- 'day' => ':count bés',
- 'hour' => ':count waxtu',
- 'minute' => ':count simili',
- 'second' => ':count saa',
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/xh.php b/vendor/nesbot/carbon/src/Carbon/Lang/xh.php
deleted file mode 100644
index e88c78d9..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/xh.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/xh_ZA.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/xh_ZA.php b/vendor/nesbot/carbon/src/Carbon/Lang/xh_ZA.php
deleted file mode 100644
index 910f8311..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/xh_ZA.php
+++ /dev/null
@@ -1,54 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Zuza Software Foundation (Translate.org.za) Dwayne Bailey dwayne@translate.org.za
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['eyoMqungu', 'eyoMdumba', 'eyoKwindla', 'uTshazimpuzi', 'uCanzibe', 'eyeSilimela', 'eyeKhala', 'eyeThupa', 'eyoMsintsi', 'eyeDwarha', 'eyeNkanga', 'eyoMnga'],
- 'months_short' => ['Mqu', 'Mdu', 'Kwi', 'Tsh', 'Can', 'Sil', 'Kha', 'Thu', 'Msi', 'Dwa', 'Nka', 'Mng'],
- 'weekdays' => ['iCawa', 'uMvulo', 'lwesiBini', 'lwesiThathu', 'ulweSine', 'lwesiHlanu', 'uMgqibelo'],
- 'weekdays_short' => ['Caw', 'Mvu', 'Bin', 'Tha', 'Sin', 'Hla', 'Mgq'],
- 'weekdays_min' => ['Caw', 'Mvu', 'Bin', 'Tha', 'Sin', 'Hla', 'Mgq'],
- 'day_of_first_week_of_year' => 1,
-
- 'year' => ':count ihlobo', // less reliable
- 'y' => ':count ihlobo', // less reliable
- 'a_year' => ':count ihlobo', // less reliable
-
- 'hour' => ':count iwotshi', // less reliable
- 'h' => ':count iwotshi', // less reliable
- 'a_hour' => ':count iwotshi', // less reliable
-
- 'minute' => ':count ingqalelo', // less reliable
- 'min' => ':count ingqalelo', // less reliable
- 'a_minute' => ':count ingqalelo', // less reliable
-
- 'second' => ':count nceda', // less reliable
- 's' => ':count nceda', // less reliable
- 'a_second' => ':count nceda', // less reliable
-
- 'month' => ':count inyanga',
- 'm' => ':count inyanga',
- 'a_month' => ':count inyanga',
-
- 'week' => ':count veki',
- 'w' => ':count veki',
- 'a_week' => ':count veki',
-
- 'day' => ':count imini',
- 'd' => ':count imini',
- 'a_day' => ':count imini',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/xog.php b/vendor/nesbot/carbon/src/Carbon/Lang/xog.php
deleted file mode 100644
index eb55b4ab..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/xog.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['Munkyo', 'Eigulo'],
- 'weekdays' => ['Sabiiti', 'Balaza', 'Owokubili', 'Owokusatu', 'Olokuna', 'Olokutaanu', 'Olomukaaga'],
- 'weekdays_short' => ['Sabi', 'Bala', 'Kubi', 'Kusa', 'Kuna', 'Kuta', 'Muka'],
- 'weekdays_min' => ['Sabi', 'Bala', 'Kubi', 'Kusa', 'Kuna', 'Kuta', 'Muka'],
- 'months' => ['Janwaliyo', 'Febwaliyo', 'Marisi', 'Apuli', 'Maayi', 'Juuni', 'Julaayi', 'Agusito', 'Sebuttemba', 'Okitobba', 'Novemba', 'Desemba'],
- 'months_short' => ['Jan', 'Feb', 'Mar', 'Apu', 'Maa', 'Juu', 'Jul', 'Agu', 'Seb', 'Oki', 'Nov', 'Des'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/yav.php b/vendor/nesbot/carbon/src/Carbon/Lang/yav.php
deleted file mode 100644
index 225a20d8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/yav.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'meridiem' => ['kiɛmɛ́ɛm', 'kisɛ́ndɛ'],
- 'weekdays' => ['sɔ́ndiɛ', 'móndie', 'muányáŋmóndie', 'metúkpíápɛ', 'kúpélimetúkpiapɛ', 'feléte', 'séselé'],
- 'weekdays_short' => ['sd', 'md', 'mw', 'et', 'kl', 'fl', 'ss'],
- 'weekdays_min' => ['sd', 'md', 'mw', 'et', 'kl', 'fl', 'ss'],
- 'months' => ['pikítíkítie, oólí ú kutúan', 'siɛyɛ́, oóli ú kándíɛ', 'ɔnsúmbɔl, oóli ú kátátúɛ', 'mesiŋ, oóli ú kénie', 'ensil, oóli ú kátánuɛ', 'ɔsɔn', 'efute', 'pisuyú', 'imɛŋ i puɔs', 'imɛŋ i putúk,oóli ú kátíɛ', 'makandikɛ', 'pilɔndɔ́'],
- 'months_short' => ['o.1', 'o.2', 'o.3', 'o.4', 'o.5', 'o.6', 'o.7', 'o.8', 'o.9', 'o.10', 'o.11', 'o.12'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'D/M/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/yi.php b/vendor/nesbot/carbon/src/Carbon/Lang/yi.php
deleted file mode 100644
index 8f320229..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/yi.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/yi_US.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/yi_US.php b/vendor/nesbot/carbon/src/Carbon/Lang/yi_US.php
deleted file mode 100644
index f764d36f..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/yi_US.php
+++ /dev/null
@@ -1,54 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - http://www.uyip.org/ Pablo Saratxaga pablo@mandrakesoft.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YY',
- ],
- 'months' => ['יאַנואַר', 'פֿעברואַר', 'מערץ', 'אַפּריל', 'מיי', 'יוני', 'יולי', 'אויגוסט', 'סעפּטעמבער', 'אקטאבער', 'נאוועמבער', 'דעצעמבער'],
- 'months_short' => ['יאַנ', 'פֿעב', 'מאַר', 'אַפּר', 'מײַ ', 'יונ', 'יול', 'אױג', 'סעפּ', 'אָקט', 'נאָװ', 'דעצ'],
- 'weekdays' => ['זונטיק', 'מאָנטיק', 'דינסטיק', 'מיטװאָך', 'דאָנערשטיק', 'פֿרײַטיק', 'שבת'],
- 'weekdays_short' => ['זונ\'', 'מאָנ\'', 'דינ\'', 'מיט\'', 'דאָנ\'', 'פֿרײַ\'', 'שבת'],
- 'weekdays_min' => ['זונ\'', 'מאָנ\'', 'דינ\'', 'מיט\'', 'דאָנ\'', 'פֿרײַ\'', 'שבת'],
- 'day_of_first_week_of_year' => 1,
-
- 'year' => ':count יאר',
- 'y' => ':count יאר',
- 'a_year' => ':count יאר',
-
- 'month' => ':count חודש',
- 'm' => ':count חודש',
- 'a_month' => ':count חודש',
-
- 'week' => ':count וואָך',
- 'w' => ':count וואָך',
- 'a_week' => ':count וואָך',
-
- 'day' => ':count טאָג',
- 'd' => ':count טאָג',
- 'a_day' => ':count טאָג',
-
- 'hour' => ':count שעה',
- 'h' => ':count שעה',
- 'a_hour' => ':count שעה',
-
- 'minute' => ':count מינוט',
- 'min' => ':count מינוט',
- 'a_minute' => ':count מינוט',
-
- 'second' => ':count סעקונדע',
- 's' => ':count סעקונדע',
- 'a_second' => ':count סעקונדע',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/yo.php b/vendor/nesbot/carbon/src/Carbon/Lang/yo.php
deleted file mode 100644
index 0a829810..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/yo.php
+++ /dev/null
@@ -1,65 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - François B
- * - Atolagbe Abisoye
- */
-return [
- 'year' => 'ọdún :count',
- 'a_year' => '{1}ọdún kan|ọdún :count',
- 'month' => 'osù :count',
- 'a_month' => '{1}osù kan|osù :count',
- 'week' => 'ọsẹ :count',
- 'a_week' => '{1}ọsẹ kan|ọsẹ :count',
- 'day' => 'ọjọ́ :count',
- 'a_day' => '{1}ọjọ́ kan|ọjọ́ :count',
- 'hour' => 'wákati :count',
- 'a_hour' => '{1}wákati kan|wákati :count',
- 'minute' => 'ìsẹjú :count',
- 'a_minute' => '{1}ìsẹjú kan|ìsẹjú :count',
- 'second' => 'iaayá :count',
- 'a_second' => '{1}ìsẹjú aayá die|aayá :count',
- 'ago' => ':time kọjá',
- 'from_now' => 'ní :time',
- 'diff_yesterday' => 'Àna',
- 'diff_yesterday_regexp' => 'Àna(?:\\s+ni)?',
- 'diff_today' => 'Ònì',
- 'diff_today_regexp' => 'Ònì(?:\\s+ni)?',
- 'diff_tomorrow' => 'Ọ̀la',
- 'diff_tomorrow_regexp' => 'Ọ̀la(?:\\s+ni)?',
- 'formats' => [
- 'LT' => 'h:mm A',
- 'LTS' => 'h:mm:ss A',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY h:mm A',
- 'LLLL' => 'dddd, D MMMM YYYY h:mm A',
- ],
- 'calendar' => [
- 'sameDay' => '[Ònì ni] LT',
- 'nextDay' => '[Ọ̀la ni] LT',
- 'nextWeek' => 'dddd [Ọsẹ̀ tón\'bọ] [ni] LT',
- 'lastDay' => '[Àna ni] LT',
- 'lastWeek' => 'dddd [Ọsẹ̀ tólọ́] [ni] LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => 'ọjọ́ :number',
- 'months' => ['Sẹ́rẹ́', 'Èrèlè', 'Ẹrẹ̀nà', 'Ìgbé', 'Èbibi', 'Òkùdu', 'Agẹmo', 'Ògún', 'Owewe', 'Ọ̀wàrà', 'Bélú', 'Ọ̀pẹ̀̀'],
- 'months_short' => ['Sẹ́r', 'Èrl', 'Ẹrn', 'Ìgb', 'Èbi', 'Òkù', 'Agẹ', 'Ògú', 'Owe', 'Ọ̀wà', 'Bél', 'Ọ̀pẹ̀̀'],
- 'weekdays' => ['Àìkú', 'Ajé', 'Ìsẹ́gun', 'Ọjọ́rú', 'Ọjọ́bọ', 'Ẹtì', 'Àbámẹ́ta'],
- 'weekdays_short' => ['Àìk', 'Ajé', 'Ìsẹ́', 'Ọjr', 'Ọjb', 'Ẹtì', 'Àbá'],
- 'weekdays_min' => ['Àì', 'Aj', 'Ìs', 'Ọr', 'Ọb', 'Ẹt', 'Àb'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'meridiem' => ['Àárọ̀', 'Ọ̀sán'],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/yo_BJ.php b/vendor/nesbot/carbon/src/Carbon/Lang/yo_BJ.php
deleted file mode 100644
index 12b9e815..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/yo_BJ.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array_replace_recursive(require __DIR__.'/yo.php', [
- 'meridiem' => ['Àárɔ̀', 'Ɔ̀sán'],
- 'weekdays' => ['Ɔjɔ́ Àìkú', 'Ɔjɔ́ Ajé', 'Ɔjɔ́ Ìsɛ́gun', 'Ɔjɔ́rú', 'Ɔjɔ́bɔ', 'Ɔjɔ́ Ɛtì', 'Ɔjɔ́ Àbámɛ́ta'],
- 'weekdays_short' => ['Àìkú', 'Ajé', 'Ìsɛ́gun', 'Ɔjɔ́rú', 'Ɔjɔ́bɔ', 'Ɛtì', 'Àbámɛ́ta'],
- 'weekdays_min' => ['Àìkú', 'Ajé', 'Ìsɛ́gun', 'Ɔjɔ́rú', 'Ɔjɔ́bɔ', 'Ɛtì', 'Àbámɛ́ta'],
- 'months' => ['Oshù Shɛ́rɛ́', 'Oshù Èrèlè', 'Oshù Ɛrɛ̀nà', 'Oshù Ìgbé', 'Oshù Ɛ̀bibi', 'Oshù Òkúdu', 'Oshù Agɛmɔ', 'Oshù Ògún', 'Oshù Owewe', 'Oshù Ɔ̀wàrà', 'Oshù Bélú', 'Oshù Ɔ̀pɛ̀'],
- 'months_short' => ['Shɛ́rɛ́', 'Èrèlè', 'Ɛrɛ̀nà', 'Ìgbé', 'Ɛ̀bibi', 'Òkúdu', 'Agɛmɔ', 'Ògún', 'Owewe', 'Ɔ̀wàrà', 'Bélú', 'Ɔ̀pɛ̀'],
- 'first_day_of_week' => 1,
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd, D MMMM YYYY HH:mm',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/yo_NG.php b/vendor/nesbot/carbon/src/Carbon/Lang/yo_NG.php
deleted file mode 100644
index 6860bc1a..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/yo_NG.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/yo.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/yue.php b/vendor/nesbot/carbon/src/Carbon/Lang/yue.php
deleted file mode 100644
index ce233a4f..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/yue.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/yue_HK.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/yue_HK.php b/vendor/nesbot/carbon/src/Carbon/Lang/yue_HK.php
deleted file mode 100644
index 4e7d5c36..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/yue_HK.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/zh_HK.php', [
- 'formats' => [
- 'L' => 'YYYY年MM月DD日 dddd',
- ],
- 'months' => ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
- 'months_short' => ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
- 'weekdays' => ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],
- 'weekdays_short' => ['日', '一', '二', '三', '四', '五', '六'],
- 'weekdays_min' => ['日', '一', '二', '三', '四', '五', '六'],
- 'first_day_of_week' => 0,
- 'day_of_first_week_of_year' => 1,
- 'meridiem' => ['上午', '下午'],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/yue_Hans.php b/vendor/nesbot/carbon/src/Carbon/Lang/yue_Hans.php
deleted file mode 100644
index db913caa..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/yue_Hans.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/zh_Hans.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/yue_Hant.php b/vendor/nesbot/carbon/src/Carbon/Lang/yue_Hant.php
deleted file mode 100644
index e2526f13..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/yue_Hant.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/zh_Hant.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/yuw.php b/vendor/nesbot/carbon/src/Carbon/Lang/yuw.php
deleted file mode 100644
index 8efdc937..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/yuw.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/yuw_PG.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/yuw_PG.php b/vendor/nesbot/carbon/src/Carbon/Lang/yuw_PG.php
deleted file mode 100644
index b99ad2e8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/yuw_PG.php
+++ /dev/null
@@ -1,26 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Information from native speakers Hannah Sarvasy nungon.localization@gmail.com
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YY',
- ],
- 'months' => ['jenuari', 'febuari', 'mas', 'epril', 'mei', 'jun', 'julai', 'ögus', 'septemba', 'öktoba', 'nöwemba', 'diksemba'],
- 'months_short' => ['jen', 'feb', 'mas', 'epr', 'mei', 'jun', 'jul', 'ögu', 'sep', 'ökt', 'nöw', 'dis'],
- 'weekdays' => ['sönda', 'mönda', 'sinda', 'mitiwö', 'sogipbono', 'nenggo', 'söndanggie'],
- 'weekdays_short' => ['sön', 'mön', 'sin', 'mit', 'soi', 'nen', 'sab'],
- 'weekdays_min' => ['sön', 'mön', 'sin', 'mit', 'soi', 'nen', 'sab'],
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zgh.php b/vendor/nesbot/carbon/src/Carbon/Lang/zgh.php
deleted file mode 100644
index 4d2c3b37..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/zgh.php
+++ /dev/null
@@ -1,80 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - BAKTETE Miloud
- */
-return [
- 'year' => ':count ⵓⵙⴳⴳⵯⴰⵙ|:count ⵉⵙⴳⴳⵓⵙⴰ',
- 'a_year' => 'ⵓⵙⴳⴳⵯⴰⵙ|:count ⵉⵙⴳⴳⵓⵙⴰ',
- 'y' => ':count ⵓⵙⴳⴳⵯⴰⵙ|:count ⵉⵙⴳⴳⵓⵙⴰ',
- 'month' => ':count ⵡⴰⵢⵢⵓⵔ|:count ⴰⵢⵢⵓⵔⵏ',
- 'a_month' => 'ⵉⴷⵊ ⵡⴰⵢⵢⵓⵔ|:count ⴰⵢⵢⵓⵔⵏ',
- 'm' => ':count ⴰⵢⵢⵓⵔⵏ',
- 'week' => ':count ⵉⵎⴰⵍⴰⵙⵙ|:count ⵉⵎⴰⵍⴰⵙⵙⵏ',
- 'a_week' => 'ⵉⵛⵜ ⵉⵎⴰⵍⴰⵙⵙ|:count ⵉⵎⴰⵍⴰⵙⵙⵏ',
- 'w' => ':count ⵉⵎⴰⵍⴰⵙⵙ.',
- 'day' => ':count ⵡⴰⵙⵙ|:count ⵓⵙⵙⴰⵏ',
- 'a_day' => 'ⵉⴷⵊ ⵡⴰⵙⵙ|:count ⵓⵙⵙⴰⵏ',
- 'd' => ':count ⵓ',
- 'hour' => ':count ⵜⵙⵔⴰⴳⵜ|:count ⵜⵉⵙⵔⴰⴳⵉⵏ',
- 'a_hour' => 'ⵉⵛⵜ ⵜⵙⵔⴰⴳⵜ|:count ⵜⵉⵙⵔⴰⴳⵉⵏ',
- 'h' => ':count ⵜ',
- 'minute' => ':count ⵜⵓⵙⴷⵉⴷⵜ|:count ⵜⵓⵙⴷⵉⴷⵉⵏ',
- 'a_minute' => 'ⵉⵛⵜ ⵜⵓⵙⴷⵉⴷⵜ|:count ⵜⵓⵙⴷⵉⴷⵉⵏ',
- 'min' => ':count ⵜⵓⵙ',
- 'second' => ':count ⵜⵙⵉⵏⵜ|:count ⵜⵉⵙⵉⵏⴰ',
- 'a_second' => 'ⴽⵔⴰ ⵜⵉⵙⵉⵏⴰ|:count ⵜⵉⵙⵉⵏⴰ',
- 's' => ':count ⵜ',
- 'ago' => 'ⵣⴳ :time',
- 'from_now' => 'ⴷⴳ :time',
- 'after' => ':time ⴰⵡⴰⵔ',
- 'before' => ':time ⴷⴰⵜ',
- 'diff_now' => 'ⴰⴷⵡⴰⵍⵉ',
- 'diff_today' => 'ⴰⵙⵙ',
- 'diff_today_regexp' => 'ⴰⵙⵙ(?:\\s+ⴰ/ⴰⴷ)?(?:\\s+ⴳ)?',
- 'diff_yesterday' => 'ⴰⵙⵙⵏⵏⴰⵟ',
- 'diff_yesterday_regexp' => 'ⴰⵙⵙⵏⵏⴰⵟ(?:\\s+ⴳ)?',
- 'diff_tomorrow' => 'ⴰⵙⴽⴽⴰ',
- 'diff_tomorrow_regexp' => 'ⴰⵙⴽⴽⴰ(?:\\s+ⴳ)?',
- 'diff_before_yesterday' => 'ⴼⵔ ⵉⴹⵏⵏⴰⵟ',
- 'diff_after_tomorrow' => 'ⵏⴰⴼ ⵓⵙⴽⴽⴰ',
- 'period_recurrences' => ':count ⵜⵉⴽⴽⴰⵍ',
- 'period_interval' => 'ⴽⵓ :interval',
- 'period_start_date' => 'ⴳ :date',
- 'period_end_date' => 'ⵉ :date',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'DD/MM/YYYY',
- 'LL' => 'D MMMM YYYY',
- 'LLL' => 'D MMMM YYYY HH:mm',
- 'LLLL' => 'dddd D MMMM YYYY HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[ⴰⵙⵙ ⴰ/ⴰⴷ ⴳ] LT',
- 'nextDay' => '[ⴰⵙⴽⴽⴰ ⴳ] LT',
- 'nextWeek' => 'dddd [ⴳ] LT',
- 'lastDay' => '[ⴰⵙⵙⵏⵏⴰⵟ ⴳ] LT',
- 'lastWeek' => 'dddd [ⴰⵎⴳⴳⴰⵔⵓ ⴳ] LT',
- 'sameElse' => 'L',
- ],
- 'meridiem' => ['ⵜⵉⴼⴰⵡⵜ', 'ⵜⴰⴷⴳⴳⵯⴰⵜ'],
- 'months' => ['ⵉⵏⵏⴰⵢⵔ', 'ⴱⵕⴰⵢⵕ', 'ⵎⴰⵕⵚ', 'ⵉⴱⵔⵉⵔ', 'ⵎⴰⵢⵢⵓ', 'ⵢⵓⵏⵢⵓ', 'ⵢⵓⵍⵢⵓⵣ', 'ⵖⵓⵛⵜ', 'ⵛⵓⵜⴰⵏⴱⵉⵔ', 'ⴽⵟⵓⴱⵕ', 'ⵏⵓⵡⴰⵏⴱⵉⵔ', 'ⴷⵓⵊⴰⵏⴱⵉⵔ'],
- 'months_short' => ['ⵉⵏⵏ', 'ⴱⵕⴰ', 'ⵎⴰⵕ', 'ⵉⴱⵔ', 'ⵎⴰⵢ', 'ⵢⵓⵏ', 'ⵢⵓⵍ', 'ⵖⵓⵛ', 'ⵛⵓⵜ', 'ⴽⵟⵓ', 'ⵏⵓⵡ', 'ⴷⵓⵊ'],
- 'weekdays' => ['ⵓⵙⴰⵎⴰⵙ', 'ⵡⴰⵢⵏⴰⵙ', 'ⵓⵙⵉⵏⴰⵙ', 'ⵡⴰⴽⵕⴰⵙ', 'ⵓⴽⵡⴰⵙ', 'ⵓⵙⵉⵎⵡⴰⵙ', 'ⵓⵙⵉⴹⵢⴰⵙ'],
- 'weekdays_short' => ['ⵓⵙⴰ', 'ⵡⴰⵢ', 'ⵓⵙⵉ', 'ⵡⴰⴽ', 'ⵓⴽⵡ', 'ⵓⵙⵉⵎ', 'ⵓⵙⵉⴹ'],
- 'weekdays_min' => ['ⵓⵙⴰ', 'ⵡⴰⵢ', 'ⵓⵙⵉ', 'ⵡⴰⴽ', 'ⵓⴽⵡ', 'ⵓⵙⵉⵎ', 'ⵓⵙⵉⴹ'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 1,
- 'list' => [', ', ' ⴷ '],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh.php
deleted file mode 100644
index 1187c3d7..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/zh.php
+++ /dev/null
@@ -1,29 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - xuri
- * - sycuato
- * - bokideckonja
- * - Luo Ning
- * - William Yang (williamyang233)
- */
-return array_merge(require __DIR__.'/zh_Hans.php', [
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'YYYY/MM/DD',
- 'LL' => 'YYYY年M月D日',
- 'LLL' => 'YYYY年M月D日 A h点mm分',
- 'LLLL' => 'YYYY年M月D日dddd A h点mm分',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh_CN.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh_CN.php
deleted file mode 100644
index 9c05d5a8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/zh_CN.php
+++ /dev/null
@@ -1,33 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - monkeycon
- * - François B
- * - Jason Katz-Brown
- * - Serhan Apaydın
- * - Matt Johnson
- * - JD Isaacks
- * - Zeno Zeng
- * - Chris Hemp
- * - shankesgk2
- */
-return array_merge(require __DIR__.'/zh.php', [
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'YYYY/MM/DD',
- 'LL' => 'YYYY年M月D日',
- 'LLL' => 'YYYY年M月D日Ah点mm分',
- 'LLLL' => 'YYYY年M月D日ddddAh点mm分',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh_HK.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh_HK.php
deleted file mode 100644
index c3ee9fcb..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/zh_HK.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/zh_Hant_HK.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans.php
deleted file mode 100644
index 9b91785e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans.php
+++ /dev/null
@@ -1,109 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - monkeycon
- * - François B
- * - Jason Katz-Brown
- * - Konstantin Konev
- * - Chris Lam
- * - Serhan Apaydın
- * - Gary Lo
- * - JD Isaacks
- * - Chris Hemp
- * - shankesgk2
- * - Daniel Cheung (danvim)
- */
-return [
- 'year' => ':count:optional-space年',
- 'y' => ':count:optional-space年',
- 'month' => ':count:optional-space个月',
- 'm' => ':count:optional-space个月',
- 'week' => ':count:optional-space周',
- 'w' => ':count:optional-space周',
- 'day' => ':count:optional-space天',
- 'd' => ':count:optional-space天',
- 'hour' => ':count:optional-space小时',
- 'h' => ':count:optional-space小时',
- 'minute' => ':count:optional-space分钟',
- 'min' => ':count:optional-space分钟',
- 'second' => ':count:optional-space秒',
- 'a_second' => '{1}几秒|]1,Inf[:count:optional-space秒',
- 's' => ':count:optional-space秒',
- 'ago' => ':time前',
- 'from_now' => ':time后',
- 'after' => ':time后',
- 'before' => ':time前',
- 'diff_now' => '现在',
- 'diff_today' => '今天',
- 'diff_yesterday' => '昨天',
- 'diff_tomorrow' => '明天',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'YYYY/MM/DD',
- 'LL' => 'YYYY年M月D日',
- 'LLL' => 'YYYY年M月D日 HH:mm',
- 'LLLL' => 'YYYY年M月D日dddd HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[今天]LT',
- 'nextDay' => '[明天]LT',
- 'nextWeek' => '[下]ddddLT',
- 'lastDay' => '[昨天]LT',
- 'lastWeek' => '[上]ddddLT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => function ($number, $period) {
- switch ($period) {
- case 'd':
- case 'D':
- case 'DDD':
- return $number.'日';
- case 'M':
- return $number.'月';
- case 'w':
- case 'W':
- return $number.'周';
- default:
- return $number;
- }
- },
- 'meridiem' => function ($hour, $minute) {
- $time = $hour * 100 + $minute;
- if ($time < 600) {
- return '凌晨';
- }
- if ($time < 900) {
- return '早上';
- }
- if ($time < 1130) {
- return '上午';
- }
- if ($time < 1230) {
- return '中午';
- }
- if ($time < 1800) {
- return '下午';
- }
-
- return '晚上';
- },
- 'months' => ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
- 'months_short' => ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
- 'weekdays' => ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],
- 'weekdays_short' => ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],
- 'weekdays_min' => ['日', '一', '二', '三', '四', '五', '六'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => '',
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_HK.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_HK.php
deleted file mode 100644
index db913caa..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_HK.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/zh_Hans.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_MO.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_MO.php
deleted file mode 100644
index db913caa..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_MO.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/zh_Hans.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_SG.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_SG.php
deleted file mode 100644
index db913caa..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_SG.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/zh_Hans.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant.php
deleted file mode 100644
index a27b6109..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant.php
+++ /dev/null
@@ -1,111 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Adam
- * - monkeycon
- * - François B
- * - Jason Katz-Brown
- * - Chris Lam
- * - Serhan Apaydın
- * - Gary Lo
- * - JD Isaacks
- * - Chris Hemp
- * - Eddie
- * - KID
- * - shankesgk2
- * - Daniel Cheung (danvim)
- */
-return [
- 'year' => ':count:optional-space年',
- 'y' => ':count:optional-space年',
- 'month' => ':count:optional-space個月',
- 'm' => ':count:optional-space月',
- 'week' => ':count:optional-space週',
- 'w' => ':count:optional-space週',
- 'day' => ':count:optional-space天',
- 'd' => ':count:optional-space天',
- 'hour' => ':count:optional-space小時',
- 'h' => ':count:optional-space小時',
- 'minute' => ':count:optional-space分鐘',
- 'min' => ':count:optional-space分鐘',
- 'second' => ':count:optional-space秒',
- 'a_second' => '{1}幾秒|]1,Inf[:count:optional-space秒',
- 's' => ':count:optional-space秒',
- 'ago' => ':time前',
- 'from_now' => ':time後',
- 'after' => ':time後',
- 'before' => ':time前',
- 'diff_now' => '現在',
- 'diff_today' => '今天',
- 'diff_yesterday' => '昨天',
- 'diff_tomorrow' => '明天',
- 'formats' => [
- 'LT' => 'HH:mm',
- 'LTS' => 'HH:mm:ss',
- 'L' => 'YYYY/MM/DD',
- 'LL' => 'YYYY年M月D日',
- 'LLL' => 'YYYY年M月D日 HH:mm',
- 'LLLL' => 'YYYY年M月D日dddd HH:mm',
- ],
- 'calendar' => [
- 'sameDay' => '[今天] LT',
- 'nextDay' => '[明天] LT',
- 'nextWeek' => '[下]dddd LT',
- 'lastDay' => '[昨天] LT',
- 'lastWeek' => '[上]dddd LT',
- 'sameElse' => 'L',
- ],
- 'ordinal' => function ($number, $period) {
- switch ($period) {
- case 'd':
- case 'D':
- case 'DDD':
- return $number.'日';
- case 'M':
- return $number.'月';
- case 'w':
- case 'W':
- return $number.'周';
- default:
- return $number;
- }
- },
- 'meridiem' => function ($hour, $minute) {
- $time = $hour * 100 + $minute;
- if ($time < 600) {
- return '凌晨';
- }
- if ($time < 900) {
- return '早上';
- }
- if ($time < 1130) {
- return '上午';
- }
- if ($time < 1230) {
- return '中午';
- }
- if ($time < 1800) {
- return '下午';
- }
-
- return '晚上';
- },
- 'months' => ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
- 'months_short' => ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
- 'weekdays' => ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],
- 'weekdays_short' => ['週日', '週一', '週二', '週三', '週四', '週五', '週六'],
- 'weekdays_min' => ['日', '一', '二', '三', '四', '五', '六'],
- 'first_day_of_week' => 1,
- 'day_of_first_week_of_year' => 4,
- 'list' => '',
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_HK.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_HK.php
deleted file mode 100644
index e2526f13..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_HK.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/zh_Hant.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_MO.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_MO.php
deleted file mode 100644
index e2526f13..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_MO.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/zh_Hant.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_TW.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_TW.php
deleted file mode 100644
index e2526f13..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_TW.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/zh_Hant.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh_MO.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh_MO.php
deleted file mode 100644
index 1c86d477..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/zh_MO.php
+++ /dev/null
@@ -1,21 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - tarunvelli
- * - Eddie
- * - KID
- * - shankesgk2
- */
-return array_replace_recursive(require __DIR__.'/zh_Hant.php', [
- 'after' => ':time后',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh_SG.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh_SG.php
deleted file mode 100644
index c451a562..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/zh_SG.php
+++ /dev/null
@@ -1,26 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/zh.php', [
- 'formats' => [
- 'L' => 'YYYY年MM月DD日',
- ],
- 'months' => ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
- 'months_short' => ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
- 'weekdays' => ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],
- 'weekdays_short' => ['日', '一', '二', '三', '四', '五', '六'],
- 'weekdays_min' => ['日', '一', '二', '三', '四', '五', '六'],
- 'day_of_first_week_of_year' => 1,
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh_TW.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh_TW.php
deleted file mode 100644
index c6789ed2..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/zh_TW.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return require __DIR__.'/zh_Hant_TW.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh_YUE.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh_YUE.php
deleted file mode 100644
index b0d9ba86..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/zh_YUE.php
+++ /dev/null
@@ -1,20 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org
- */
-return array_replace_recursive(require __DIR__.'/zh.php', [
- 'formats' => [
- 'L' => 'YYYY-MM-DD',
- ],
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zu.php b/vendor/nesbot/carbon/src/Carbon/Lang/zu.php
deleted file mode 100644
index 9a6cce02..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/zu.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Unknown default region, use the first alphabetically.
- */
-return require __DIR__.'/zu_ZA.php';
diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zu_ZA.php b/vendor/nesbot/carbon/src/Carbon/Lang/zu_ZA.php
deleted file mode 100644
index 6bfb72f0..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Lang/zu_ZA.php
+++ /dev/null
@@ -1,54 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Authors:
- * - Zuza Software Foundation (Translate.org.za) Dwayne Bailey dwayne@translate.org.za
- */
-return array_replace_recursive(require __DIR__.'/en.php', [
- 'formats' => [
- 'L' => 'DD/MM/YYYY',
- ],
- 'months' => ['Januwari', 'Februwari', 'Mashi', 'Ephreli', 'Meyi', 'Juni', 'Julayi', 'Agasti', 'Septhemba', 'Okthoba', 'Novemba', 'Disemba'],
- 'months_short' => ['Jan', 'Feb', 'Mas', 'Eph', 'Mey', 'Jun', 'Jul', 'Aga', 'Sep', 'Okt', 'Nov', 'Dis'],
- 'weekdays' => ['iSonto', 'uMsombuluko', 'uLwesibili', 'uLwesithathu', 'uLwesine', 'uLwesihlanu', 'uMgqibelo'],
- 'weekdays_short' => ['Son', 'Mso', 'Bil', 'Tha', 'Sin', 'Hla', 'Mgq'],
- 'weekdays_min' => ['Son', 'Mso', 'Bil', 'Tha', 'Sin', 'Hla', 'Mgq'],
- 'day_of_first_week_of_year' => 1,
-
- 'year' => 'kweminyaka engu-:count',
- 'y' => 'kweminyaka engu-:count',
- 'a_year' => 'kweminyaka engu-:count',
-
- 'month' => 'izinyanga ezingu-:count',
- 'm' => 'izinyanga ezingu-:count',
- 'a_month' => 'izinyanga ezingu-:count',
-
- 'week' => 'lwamasonto angu-:count',
- 'w' => 'lwamasonto angu-:count',
- 'a_week' => 'lwamasonto angu-:count',
-
- 'day' => 'ezingaba ngu-:count',
- 'd' => 'ezingaba ngu-:count',
- 'a_day' => 'ezingaba ngu-:count',
-
- 'hour' => 'amahora angu-:count',
- 'h' => 'amahora angu-:count',
- 'a_hour' => 'amahora angu-:count',
-
- 'minute' => 'ngemizuzu engu-:count',
- 'min' => 'ngemizuzu engu-:count',
- 'a_minute' => 'ngemizuzu engu-:count',
-
- 'second' => 'imizuzwana engu-:count',
- 's' => 'imizuzwana engu-:count',
- 'a_second' => 'imizuzwana engu-:count',
-]);
diff --git a/vendor/nesbot/carbon/src/Carbon/Language.php b/vendor/nesbot/carbon/src/Carbon/Language.php
deleted file mode 100644
index 1fb5bafd..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Language.php
+++ /dev/null
@@ -1,342 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon;
-
-use JsonSerializable;
-use ReturnTypeWillChange;
-
-class Language implements JsonSerializable
-{
- /**
- * @var array
- */
- protected static $languagesNames;
-
- /**
- * @var array
- */
- protected static $regionsNames;
-
- /**
- * @var string
- */
- protected $id;
-
- /**
- * @var string
- */
- protected $code;
-
- /**
- * @var string|null
- */
- protected $variant;
-
- /**
- * @var string|null
- */
- protected $region;
-
- /**
- * @var array
- */
- protected $names;
-
- /**
- * @var string
- */
- protected $isoName;
-
- /**
- * @var string
- */
- protected $nativeName;
-
- public function __construct(string $id)
- {
- $this->id = str_replace('-', '_', $id);
- $parts = explode('_', $this->id);
- $this->code = $parts[0];
-
- if (isset($parts[1])) {
- if (!preg_match('/^[A-Z]+$/', $parts[1])) {
- $this->variant = $parts[1];
- $parts[1] = $parts[2] ?? null;
- }
- if ($parts[1]) {
- $this->region = $parts[1];
- }
- }
- }
-
- /**
- * Get the list of the known languages.
- *
- * @return array
- */
- public static function all()
- {
- if (!static::$languagesNames) {
- static::$languagesNames = require __DIR__.'/List/languages.php';
- }
-
- return static::$languagesNames;
- }
-
- /**
- * Get the list of the known regions.
- *
- * @return array
- */
- public static function regions()
- {
- if (!static::$regionsNames) {
- static::$regionsNames = require __DIR__.'/List/regions.php';
- }
-
- return static::$regionsNames;
- }
-
- /**
- * Get both isoName and nativeName as an array.
- *
- * @return array
- */
- public function getNames(): array
- {
- if (!$this->names) {
- $this->names = static::all()[$this->code] ?? [
- 'isoName' => $this->code,
- 'nativeName' => $this->code,
- ];
- }
-
- return $this->names;
- }
-
- /**
- * Returns the original locale ID.
- *
- * @return string
- */
- public function getId(): string
- {
- return $this->id;
- }
-
- /**
- * Returns the code of the locale "en"/"fr".
- *
- * @return string
- */
- public function getCode(): string
- {
- return $this->code;
- }
-
- /**
- * Returns the variant code such as cyrl/latn.
- *
- * @return string|null
- */
- public function getVariant(): ?string
- {
- return $this->variant;
- }
-
- /**
- * Returns the variant such as Cyrillic/Latin.
- *
- * @return string|null
- */
- public function getVariantName(): ?string
- {
- if ($this->variant === 'Latn') {
- return 'Latin';
- }
-
- if ($this->variant === 'Cyrl') {
- return 'Cyrillic';
- }
-
- return $this->variant;
- }
-
- /**
- * Returns the region part of the locale.
- *
- * @return string|null
- */
- public function getRegion(): ?string
- {
- return $this->region;
- }
-
- /**
- * Returns the region name for the current language.
- *
- * @return string|null
- */
- public function getRegionName(): ?string
- {
- return $this->region ? (static::regions()[$this->region] ?? $this->region) : null;
- }
-
- /**
- * Returns the long ISO language name.
- *
- * @return string
- */
- public function getFullIsoName(): string
- {
- if (!$this->isoName) {
- $this->isoName = $this->getNames()['isoName'];
- }
-
- return $this->isoName;
- }
-
- /**
- * Set the ISO language name.
- *
- * @param string $isoName
- */
- public function setIsoName(string $isoName): self
- {
- $this->isoName = $isoName;
-
- return $this;
- }
-
- /**
- * Return the full name of the language in this language.
- *
- * @return string
- */
- public function getFullNativeName(): string
- {
- if (!$this->nativeName) {
- $this->nativeName = $this->getNames()['nativeName'];
- }
-
- return $this->nativeName;
- }
-
- /**
- * Set the name of the language in this language.
- *
- * @param string $nativeName
- */
- public function setNativeName(string $nativeName): self
- {
- $this->nativeName = $nativeName;
-
- return $this;
- }
-
- /**
- * Returns the short ISO language name.
- *
- * @return string
- */
- public function getIsoName(): string
- {
- $name = $this->getFullIsoName();
-
- return trim(strstr($name, ',', true) ?: $name);
- }
-
- /**
- * Get the short name of the language in this language.
- *
- * @return string
- */
- public function getNativeName(): string
- {
- $name = $this->getFullNativeName();
-
- return trim(strstr($name, ',', true) ?: $name);
- }
-
- /**
- * Get a string with short ISO name, region in parentheses if applicable, variant in parentheses if applicable.
- *
- * @return string
- */
- public function getIsoDescription()
- {
- $region = $this->getRegionName();
- $variant = $this->getVariantName();
-
- return $this->getIsoName().($region ? ' ('.$region.')' : '').($variant ? ' ('.$variant.')' : '');
- }
-
- /**
- * Get a string with short native name, region in parentheses if applicable, variant in parentheses if applicable.
- *
- * @return string
- */
- public function getNativeDescription()
- {
- $region = $this->getRegionName();
- $variant = $this->getVariantName();
-
- return $this->getNativeName().($region ? ' ('.$region.')' : '').($variant ? ' ('.$variant.')' : '');
- }
-
- /**
- * Get a string with long ISO name, region in parentheses if applicable, variant in parentheses if applicable.
- *
- * @return string
- */
- public function getFullIsoDescription()
- {
- $region = $this->getRegionName();
- $variant = $this->getVariantName();
-
- return $this->getFullIsoName().($region ? ' ('.$region.')' : '').($variant ? ' ('.$variant.')' : '');
- }
-
- /**
- * Get a string with long native name, region in parentheses if applicable, variant in parentheses if applicable.
- *
- * @return string
- */
- public function getFullNativeDescription()
- {
- $region = $this->getRegionName();
- $variant = $this->getVariantName();
-
- return $this->getFullNativeName().($region ? ' ('.$region.')' : '').($variant ? ' ('.$variant.')' : '');
- }
-
- /**
- * Returns the original locale ID.
- *
- * @return string
- */
- public function __toString()
- {
- return $this->getId();
- }
-
- /**
- * Get a string with short ISO name, region in parentheses if applicable, variant in parentheses if applicable.
- *
- * @return string
- */
- #[ReturnTypeWillChange]
- public function jsonSerialize()
- {
- return $this->getIsoDescription();
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Laravel/ServiceProvider.php b/vendor/nesbot/carbon/src/Carbon/Laravel/ServiceProvider.php
deleted file mode 100644
index 8be0569e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Laravel/ServiceProvider.php
+++ /dev/null
@@ -1,79 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Laravel;
-
-use Carbon\Carbon;
-use Carbon\CarbonImmutable;
-use Carbon\CarbonInterval;
-use Carbon\CarbonPeriod;
-use Illuminate\Contracts\Events\Dispatcher as DispatcherContract;
-use Illuminate\Events\Dispatcher;
-use Illuminate\Events\EventDispatcher;
-use Illuminate\Support\Carbon as IlluminateCarbon;
-use Illuminate\Support\Facades\Date;
-use Throwable;
-
-class ServiceProvider extends \Illuminate\Support\ServiceProvider
-{
- public function boot()
- {
- $this->updateLocale();
-
- if (!$this->app->bound('events')) {
- return;
- }
-
- $service = $this;
- $events = $this->app['events'];
-
- if ($this->isEventDispatcher($events)) {
- $events->listen(class_exists('Illuminate\Foundation\Events\LocaleUpdated') ? 'Illuminate\Foundation\Events\LocaleUpdated' : 'locale.changed', function () use ($service) {
- $service->updateLocale();
- });
- }
- }
-
- public function updateLocale()
- {
- $app = $this->app && method_exists($this->app, 'getLocale') ? $this->app : app('translator');
- $locale = $app->getLocale();
- Carbon::setLocale($locale);
- CarbonImmutable::setLocale($locale);
- CarbonPeriod::setLocale($locale);
- CarbonInterval::setLocale($locale);
-
- if (class_exists(IlluminateCarbon::class)) {
- IlluminateCarbon::setLocale($locale);
- }
-
- if (class_exists(Date::class)) {
- try {
- $root = Date::getFacadeRoot();
- $root->setLocale($locale);
- } catch (Throwable $e) {
- // Non Carbon class in use in Date facade
- }
- }
- }
-
- public function register()
- {
- // Needed for Laravel < 5.3 compatibility
- }
-
- protected function isEventDispatcher($instance)
- {
- return $instance instanceof EventDispatcher
- || $instance instanceof Dispatcher
- || $instance instanceof DispatcherContract;
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/List/languages.php b/vendor/nesbot/carbon/src/Carbon/List/languages.php
deleted file mode 100644
index 5b5d9a1e..00000000
--- a/vendor/nesbot/carbon/src/Carbon/List/languages.php
+++ /dev/null
@@ -1,1239 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return [
- /*
- * ISO 639-2
- */
- 'ab' => [
- 'isoName' => 'Abkhazian',
- 'nativeName' => 'аҧсуа бызшәа, аҧсшәа',
- ],
- 'aa' => [
- 'isoName' => 'Afar',
- 'nativeName' => 'Afaraf',
- ],
- 'af' => [
- 'isoName' => 'Afrikaans',
- 'nativeName' => 'Afrikaans',
- ],
- 'ak' => [
- 'isoName' => 'Akan',
- 'nativeName' => 'Akan',
- ],
- 'sq' => [
- 'isoName' => 'Albanian',
- 'nativeName' => 'Shqip',
- ],
- 'am' => [
- 'isoName' => 'Amharic',
- 'nativeName' => 'አማርኛ',
- ],
- 'ar' => [
- 'isoName' => 'Arabic',
- 'nativeName' => 'العربية',
- ],
- 'an' => [
- 'isoName' => 'Aragonese',
- 'nativeName' => 'aragonés',
- ],
- 'hy' => [
- 'isoName' => 'Armenian',
- 'nativeName' => 'Հայերեն',
- ],
- 'as' => [
- 'isoName' => 'Assamese',
- 'nativeName' => 'অসমীয়া',
- ],
- 'av' => [
- 'isoName' => 'Avaric',
- 'nativeName' => 'авар мацӀ, магӀарул мацӀ',
- ],
- 'ae' => [
- 'isoName' => 'Avestan',
- 'nativeName' => 'avesta',
- ],
- 'ay' => [
- 'isoName' => 'Aymara',
- 'nativeName' => 'aymar aru',
- ],
- 'az' => [
- 'isoName' => 'Azerbaijani',
- 'nativeName' => 'azərbaycan dili',
- ],
- 'bm' => [
- 'isoName' => 'Bambara',
- 'nativeName' => 'bamanankan',
- ],
- 'ba' => [
- 'isoName' => 'Bashkir',
- 'nativeName' => 'башҡорт теле',
- ],
- 'eu' => [
- 'isoName' => 'Basque',
- 'nativeName' => 'euskara, euskera',
- ],
- 'be' => [
- 'isoName' => 'Belarusian',
- 'nativeName' => 'беларуская мова',
- ],
- 'bn' => [
- 'isoName' => 'Bengali',
- 'nativeName' => 'বাংলা',
- ],
- 'bh' => [
- 'isoName' => 'Bihari languages',
- 'nativeName' => 'भोजपुरी',
- ],
- 'bi' => [
- 'isoName' => 'Bislama',
- 'nativeName' => 'Bislama',
- ],
- 'bs' => [
- 'isoName' => 'Bosnian',
- 'nativeName' => 'bosanski jezik',
- ],
- 'br' => [
- 'isoName' => 'Breton',
- 'nativeName' => 'brezhoneg',
- ],
- 'bg' => [
- 'isoName' => 'Bulgarian',
- 'nativeName' => 'български език',
- ],
- 'my' => [
- 'isoName' => 'Burmese',
- 'nativeName' => 'ဗမာစာ',
- ],
- 'ca' => [
- 'isoName' => 'Catalan, Valencian',
- 'nativeName' => 'català, valencià',
- ],
- 'ch' => [
- 'isoName' => 'Chamorro',
- 'nativeName' => 'Chamoru',
- ],
- 'ce' => [
- 'isoName' => 'Chechen',
- 'nativeName' => 'нохчийн мотт',
- ],
- 'ny' => [
- 'isoName' => 'Chichewa, Chewa, Nyanja',
- 'nativeName' => 'chiCheŵa, chinyanja',
- ],
- 'zh' => [
- 'isoName' => 'Chinese',
- 'nativeName' => '中文 (Zhōngwén), 汉语, 漢語',
- ],
- 'cv' => [
- 'isoName' => 'Chuvash',
- 'nativeName' => 'чӑваш чӗлхи',
- ],
- 'kw' => [
- 'isoName' => 'Cornish',
- 'nativeName' => 'Kernewek',
- ],
- 'co' => [
- 'isoName' => 'Corsican',
- 'nativeName' => 'corsu, lingua corsa',
- ],
- 'cr' => [
- 'isoName' => 'Cree',
- 'nativeName' => 'ᓀᐦᐃᔭᐍᐏᐣ',
- ],
- 'hr' => [
- 'isoName' => 'Croatian',
- 'nativeName' => 'hrvatski jezik',
- ],
- 'cs' => [
- 'isoName' => 'Czech',
- 'nativeName' => 'čeština, český jazyk',
- ],
- 'da' => [
- 'isoName' => 'Danish',
- 'nativeName' => 'dansk',
- ],
- 'dv' => [
- 'isoName' => 'Divehi, Dhivehi, Maldivian',
- 'nativeName' => 'ދިވެހި',
- ],
- 'nl' => [
- 'isoName' => 'Dutch, Flemish',
- 'nativeName' => 'Nederlands, Vlaams',
- ],
- 'dz' => [
- 'isoName' => 'Dzongkha',
- 'nativeName' => 'རྫོང་ཁ',
- ],
- 'en' => [
- 'isoName' => 'English',
- 'nativeName' => 'English',
- ],
- 'eo' => [
- 'isoName' => 'Esperanto',
- 'nativeName' => 'Esperanto',
- ],
- 'et' => [
- 'isoName' => 'Estonian',
- 'nativeName' => 'eesti, eesti keel',
- ],
- 'ee' => [
- 'isoName' => 'Ewe',
- 'nativeName' => 'Eʋegbe',
- ],
- 'fo' => [
- 'isoName' => 'Faroese',
- 'nativeName' => 'føroyskt',
- ],
- 'fj' => [
- 'isoName' => 'Fijian',
- 'nativeName' => 'vosa Vakaviti',
- ],
- 'fi' => [
- 'isoName' => 'Finnish',
- 'nativeName' => 'suomi, suomen kieli',
- ],
- 'fr' => [
- 'isoName' => 'French',
- 'nativeName' => 'français',
- ],
- 'ff' => [
- 'isoName' => 'Fulah',
- 'nativeName' => 'Fulfulde, Pulaar, Pular',
- ],
- 'gl' => [
- 'isoName' => 'Galician',
- 'nativeName' => 'Galego',
- ],
- 'ka' => [
- 'isoName' => 'Georgian',
- 'nativeName' => 'ქართული',
- ],
- 'de' => [
- 'isoName' => 'German',
- 'nativeName' => 'Deutsch',
- ],
- 'el' => [
- 'isoName' => 'Greek (modern)',
- 'nativeName' => 'ελληνικά',
- ],
- 'gn' => [
- 'isoName' => 'Guaraní',
- 'nativeName' => 'Avañe\'ẽ',
- ],
- 'gu' => [
- 'isoName' => 'Gujarati',
- 'nativeName' => 'ગુજરાતી',
- ],
- 'ht' => [
- 'isoName' => 'Haitian, Haitian Creole',
- 'nativeName' => 'Kreyòl ayisyen',
- ],
- 'ha' => [
- 'isoName' => 'Hausa',
- 'nativeName' => '(Hausa) هَوُسَ',
- ],
- 'he' => [
- 'isoName' => 'Hebrew (modern)',
- 'nativeName' => 'עברית',
- ],
- 'hz' => [
- 'isoName' => 'Herero',
- 'nativeName' => 'Otjiherero',
- ],
- 'hi' => [
- 'isoName' => 'Hindi',
- 'nativeName' => 'हिन्दी, हिंदी',
- ],
- 'ho' => [
- 'isoName' => 'Hiri Motu',
- 'nativeName' => 'Hiri Motu',
- ],
- 'hu' => [
- 'isoName' => 'Hungarian',
- 'nativeName' => 'magyar',
- ],
- 'ia' => [
- 'isoName' => 'Interlingua',
- 'nativeName' => 'Interlingua',
- ],
- 'id' => [
- 'isoName' => 'Indonesian',
- 'nativeName' => 'Bahasa Indonesia',
- ],
- 'ie' => [
- 'isoName' => 'Interlingue',
- 'nativeName' => 'Originally called Occidental; then Interlingue after WWII',
- ],
- 'ga' => [
- 'isoName' => 'Irish',
- 'nativeName' => 'Gaeilge',
- ],
- 'ig' => [
- 'isoName' => 'Igbo',
- 'nativeName' => 'Asụsụ Igbo',
- ],
- 'ik' => [
- 'isoName' => 'Inupiaq',
- 'nativeName' => 'Iñupiaq, Iñupiatun',
- ],
- 'io' => [
- 'isoName' => 'Ido',
- 'nativeName' => 'Ido',
- ],
- 'is' => [
- 'isoName' => 'Icelandic',
- 'nativeName' => 'Íslenska',
- ],
- 'it' => [
- 'isoName' => 'Italian',
- 'nativeName' => 'Italiano',
- ],
- 'iu' => [
- 'isoName' => 'Inuktitut',
- 'nativeName' => 'ᐃᓄᒃᑎᑐᑦ',
- ],
- 'ja' => [
- 'isoName' => 'Japanese',
- 'nativeName' => '日本語 (にほんご)',
- ],
- 'jv' => [
- 'isoName' => 'Javanese',
- 'nativeName' => 'ꦧꦱꦗꦮ, Basa Jawa',
- ],
- 'kl' => [
- 'isoName' => 'Kalaallisut, Greenlandic',
- 'nativeName' => 'kalaallisut, kalaallit oqaasii',
- ],
- 'kn' => [
- 'isoName' => 'Kannada',
- 'nativeName' => 'ಕನ್ನಡ',
- ],
- 'kr' => [
- 'isoName' => 'Kanuri',
- 'nativeName' => 'Kanuri',
- ],
- 'ks' => [
- 'isoName' => 'Kashmiri',
- 'nativeName' => 'कश्मीरी, كشميري',
- ],
- 'kk' => [
- 'isoName' => 'Kazakh',
- 'nativeName' => 'қазақ тілі',
- ],
- 'km' => [
- 'isoName' => 'Central Khmer',
- 'nativeName' => 'ខ្មែរ, ខេមរភាសា, ភាសាខ្មែរ',
- ],
- 'ki' => [
- 'isoName' => 'Kikuyu, Gikuyu',
- 'nativeName' => 'Gĩkũyũ',
- ],
- 'rw' => [
- 'isoName' => 'Kinyarwanda',
- 'nativeName' => 'Ikinyarwanda',
- ],
- 'ky' => [
- 'isoName' => 'Kirghiz, Kyrgyz',
- 'nativeName' => 'Кыргызча, Кыргыз тили',
- ],
- 'kv' => [
- 'isoName' => 'Komi',
- 'nativeName' => 'коми кыв',
- ],
- 'kg' => [
- 'isoName' => 'Kongo',
- 'nativeName' => 'Kikongo',
- ],
- 'ko' => [
- 'isoName' => 'Korean',
- 'nativeName' => '한국어',
- ],
- 'ku' => [
- 'isoName' => 'Kurdish',
- 'nativeName' => 'Kurdî, کوردی',
- ],
- 'kj' => [
- 'isoName' => 'Kuanyama, Kwanyama',
- 'nativeName' => 'Kuanyama',
- ],
- 'la' => [
- 'isoName' => 'Latin',
- 'nativeName' => 'latine, lingua latina',
- ],
- 'lb' => [
- 'isoName' => 'Luxembourgish, Letzeburgesch',
- 'nativeName' => 'Lëtzebuergesch',
- ],
- 'lg' => [
- 'isoName' => 'Ganda',
- 'nativeName' => 'Luganda',
- ],
- 'li' => [
- 'isoName' => 'Limburgan, Limburger, Limburgish',
- 'nativeName' => 'Limburgs',
- ],
- 'ln' => [
- 'isoName' => 'Lingala',
- 'nativeName' => 'Lingála',
- ],
- 'lo' => [
- 'isoName' => 'Lao',
- 'nativeName' => 'ພາສາລາວ',
- ],
- 'lt' => [
- 'isoName' => 'Lithuanian',
- 'nativeName' => 'lietuvių kalba',
- ],
- 'lu' => [
- 'isoName' => 'Luba-Katanga',
- 'nativeName' => 'Kiluba',
- ],
- 'lv' => [
- 'isoName' => 'Latvian',
- 'nativeName' => 'latviešu valoda',
- ],
- 'gv' => [
- 'isoName' => 'Manx',
- 'nativeName' => 'Gaelg, Gailck',
- ],
- 'mk' => [
- 'isoName' => 'Macedonian',
- 'nativeName' => 'македонски јазик',
- ],
- 'mg' => [
- 'isoName' => 'Malagasy',
- 'nativeName' => 'fiteny malagasy',
- ],
- 'ms' => [
- 'isoName' => 'Malay',
- 'nativeName' => 'Bahasa Melayu, بهاس ملايو',
- ],
- 'ml' => [
- 'isoName' => 'Malayalam',
- 'nativeName' => 'മലയാളം',
- ],
- 'mt' => [
- 'isoName' => 'Maltese',
- 'nativeName' => 'Malti',
- ],
- 'mi' => [
- 'isoName' => 'Maori',
- 'nativeName' => 'te reo Māori',
- ],
- 'mr' => [
- 'isoName' => 'Marathi',
- 'nativeName' => 'मराठी',
- ],
- 'mh' => [
- 'isoName' => 'Marshallese',
- 'nativeName' => 'Kajin M̧ajeļ',
- ],
- 'mn' => [
- 'isoName' => 'Mongolian',
- 'nativeName' => 'Монгол хэл',
- ],
- 'na' => [
- 'isoName' => 'Nauru',
- 'nativeName' => 'Dorerin Naoero',
- ],
- 'nv' => [
- 'isoName' => 'Navajo, Navaho',
- 'nativeName' => 'Diné bizaad',
- ],
- 'nd' => [
- 'isoName' => 'North Ndebele',
- 'nativeName' => 'isiNdebele',
- ],
- 'ne' => [
- 'isoName' => 'Nepali',
- 'nativeName' => 'नेपाली',
- ],
- 'ng' => [
- 'isoName' => 'Ndonga',
- 'nativeName' => 'Owambo',
- ],
- 'nb' => [
- 'isoName' => 'Norwegian Bokmål',
- 'nativeName' => 'Norsk Bokmål',
- ],
- 'nn' => [
- 'isoName' => 'Norwegian Nynorsk',
- 'nativeName' => 'Norsk Nynorsk',
- ],
- 'no' => [
- 'isoName' => 'Norwegian',
- 'nativeName' => 'Norsk',
- ],
- 'ii' => [
- 'isoName' => 'Sichuan Yi, Nuosu',
- 'nativeName' => 'ꆈꌠ꒿ Nuosuhxop',
- ],
- 'nr' => [
- 'isoName' => 'South Ndebele',
- 'nativeName' => 'isiNdebele',
- ],
- 'oc' => [
- 'isoName' => 'Occitan',
- 'nativeName' => 'occitan, lenga d\'òc',
- ],
- 'oj' => [
- 'isoName' => 'Ojibwa',
- 'nativeName' => 'ᐊᓂᔑᓈᐯᒧᐎᓐ',
- ],
- 'cu' => [
- 'isoName' => 'Church Slavic, Church Slavonic, Old Church Slavonic, Old Slavonic, Old Bulgarian',
- 'nativeName' => 'ѩзыкъ словѣньскъ',
- ],
- 'om' => [
- 'isoName' => 'Oromo',
- 'nativeName' => 'Afaan Oromoo',
- ],
- 'or' => [
- 'isoName' => 'Oriya',
- 'nativeName' => 'ଓଡ଼ିଆ',
- ],
- 'os' => [
- 'isoName' => 'Ossetian, Ossetic',
- 'nativeName' => 'ирон æвзаг',
- ],
- 'pa' => [
- 'isoName' => 'Panjabi, Punjabi',
- 'nativeName' => 'ਪੰਜਾਬੀ',
- ],
- 'pi' => [
- 'isoName' => 'Pali',
- 'nativeName' => 'पाऴि',
- ],
- 'fa' => [
- 'isoName' => 'Persian',
- 'nativeName' => 'فارسی',
- ],
- 'pl' => [
- 'isoName' => 'Polish',
- 'nativeName' => 'język polski, polszczyzna',
- ],
- 'ps' => [
- 'isoName' => 'Pashto, Pushto',
- 'nativeName' => 'پښتو',
- ],
- 'pt' => [
- 'isoName' => 'Portuguese',
- 'nativeName' => 'Português',
- ],
- 'qu' => [
- 'isoName' => 'Quechua',
- 'nativeName' => 'Runa Simi, Kichwa',
- ],
- 'rm' => [
- 'isoName' => 'Romansh',
- 'nativeName' => 'Rumantsch Grischun',
- ],
- 'rn' => [
- 'isoName' => 'Rundi',
- 'nativeName' => 'Ikirundi',
- ],
- 'ro' => [
- 'isoName' => 'Romanian, Moldavian, Moldovan',
- 'nativeName' => 'Română',
- ],
- 'ru' => [
- 'isoName' => 'Russian',
- 'nativeName' => 'русский',
- ],
- 'sa' => [
- 'isoName' => 'Sanskrit',
- 'nativeName' => 'संस्कृतम्',
- ],
- 'sc' => [
- 'isoName' => 'Sardinian',
- 'nativeName' => 'sardu',
- ],
- 'sd' => [
- 'isoName' => 'Sindhi',
- 'nativeName' => 'सिन्धी, سنڌي، سندھی',
- ],
- 'se' => [
- 'isoName' => 'Northern Sami',
- 'nativeName' => 'Davvisámegiella',
- ],
- 'sm' => [
- 'isoName' => 'Samoan',
- 'nativeName' => 'gagana fa\'a Samoa',
- ],
- 'sg' => [
- 'isoName' => 'Sango',
- 'nativeName' => 'yângâ tî sängö',
- ],
- 'sr' => [
- 'isoName' => 'Serbian',
- 'nativeName' => 'српски језик',
- ],
- 'gd' => [
- 'isoName' => 'Gaelic, Scottish Gaelic',
- 'nativeName' => 'Gàidhlig',
- ],
- 'sn' => [
- 'isoName' => 'Shona',
- 'nativeName' => 'chiShona',
- ],
- 'si' => [
- 'isoName' => 'Sinhala, Sinhalese',
- 'nativeName' => 'සිංහල',
- ],
- 'sk' => [
- 'isoName' => 'Slovak',
- 'nativeName' => 'Slovenčina, Slovenský Jazyk',
- ],
- 'sl' => [
- 'isoName' => 'Slovene',
- 'nativeName' => 'Slovenski Jezik, Slovenščina',
- ],
- 'so' => [
- 'isoName' => 'Somali',
- 'nativeName' => 'Soomaaliga, af Soomaali',
- ],
- 'st' => [
- 'isoName' => 'Southern Sotho',
- 'nativeName' => 'Sesotho',
- ],
- 'es' => [
- 'isoName' => 'Spanish, Castilian',
- 'nativeName' => 'Español',
- ],
- 'su' => [
- 'isoName' => 'Sundanese',
- 'nativeName' => 'Basa Sunda',
- ],
- 'sw' => [
- 'isoName' => 'Swahili',
- 'nativeName' => 'Kiswahili',
- ],
- 'ss' => [
- 'isoName' => 'Swati',
- 'nativeName' => 'SiSwati',
- ],
- 'sv' => [
- 'isoName' => 'Swedish',
- 'nativeName' => 'Svenska',
- ],
- 'ta' => [
- 'isoName' => 'Tamil',
- 'nativeName' => 'தமிழ்',
- ],
- 'te' => [
- 'isoName' => 'Telugu',
- 'nativeName' => 'తెలుగు',
- ],
- 'tg' => [
- 'isoName' => 'Tajik',
- 'nativeName' => 'тоҷикӣ, toçikī, تاجیکی',
- ],
- 'th' => [
- 'isoName' => 'Thai',
- 'nativeName' => 'ไทย',
- ],
- 'ti' => [
- 'isoName' => 'Tigrinya',
- 'nativeName' => 'ትግርኛ',
- ],
- 'bo' => [
- 'isoName' => 'Tibetan',
- 'nativeName' => 'བོད་ཡིག',
- ],
- 'tk' => [
- 'isoName' => 'Turkmen',
- 'nativeName' => 'Türkmen, Түркмен',
- ],
- 'tl' => [
- 'isoName' => 'Tagalog',
- 'nativeName' => 'Wikang Tagalog',
- ],
- 'tn' => [
- 'isoName' => 'Tswana',
- 'nativeName' => 'Setswana',
- ],
- 'to' => [
- 'isoName' => 'Tongan (Tonga Islands)',
- 'nativeName' => 'Faka Tonga',
- ],
- 'tr' => [
- 'isoName' => 'Turkish',
- 'nativeName' => 'Türkçe',
- ],
- 'ts' => [
- 'isoName' => 'Tsonga',
- 'nativeName' => 'Xitsonga',
- ],
- 'tt' => [
- 'isoName' => 'Tatar',
- 'nativeName' => 'татар теле, tatar tele',
- ],
- 'tw' => [
- 'isoName' => 'Twi',
- 'nativeName' => 'Twi',
- ],
- 'ty' => [
- 'isoName' => 'Tahitian',
- 'nativeName' => 'Reo Tahiti',
- ],
- 'ug' => [
- 'isoName' => 'Uighur, Uyghur',
- 'nativeName' => 'Uyƣurqə, ئۇيغۇرچ',
- ],
- 'uk' => [
- 'isoName' => 'Ukrainian',
- 'nativeName' => 'Українська',
- ],
- 'ur' => [
- 'isoName' => 'Urdu',
- 'nativeName' => 'اردو',
- ],
- 'uz' => [
- 'isoName' => 'Uzbek',
- 'nativeName' => 'Oʻzbek, Ўзбек, أۇزبېك',
- ],
- 've' => [
- 'isoName' => 'Venda',
- 'nativeName' => 'Tshivenḓa',
- ],
- 'vi' => [
- 'isoName' => 'Vietnamese',
- 'nativeName' => 'Tiếng Việt',
- ],
- 'vo' => [
- 'isoName' => 'Volapük',
- 'nativeName' => 'Volapük',
- ],
- 'wa' => [
- 'isoName' => 'Walloon',
- 'nativeName' => 'Walon',
- ],
- 'cy' => [
- 'isoName' => 'Welsh',
- 'nativeName' => 'Cymraeg',
- ],
- 'wo' => [
- 'isoName' => 'Wolof',
- 'nativeName' => 'Wollof',
- ],
- 'fy' => [
- 'isoName' => 'Western Frisian',
- 'nativeName' => 'Frysk',
- ],
- 'xh' => [
- 'isoName' => 'Xhosa',
- 'nativeName' => 'isiXhosa',
- ],
- 'yi' => [
- 'isoName' => 'Yiddish',
- 'nativeName' => 'ייִדיש',
- ],
- 'yo' => [
- 'isoName' => 'Yoruba',
- 'nativeName' => 'Yorùbá',
- ],
- 'za' => [
- 'isoName' => 'Zhuang, Chuang',
- 'nativeName' => 'Saɯ cueŋƅ, Saw cuengh',
- ],
- 'zu' => [
- 'isoName' => 'Zulu',
- 'nativeName' => 'isiZulu',
- ],
- /*
- * Add ISO 639-3 languages available in Carbon
- */
- 'agq' => [
- 'isoName' => 'Aghem',
- 'nativeName' => 'Aghem',
- ],
- 'agr' => [
- 'isoName' => 'Aguaruna',
- 'nativeName' => 'Aguaruna',
- ],
- 'anp' => [
- 'isoName' => 'Angika',
- 'nativeName' => 'Angika',
- ],
- 'asa' => [
- 'isoName' => 'Asu',
- 'nativeName' => 'Asu',
- ],
- 'ast' => [
- 'isoName' => 'Asturian',
- 'nativeName' => 'Asturian',
- ],
- 'ayc' => [
- 'isoName' => 'Southern Aymara',
- 'nativeName' => 'Southern Aymara',
- ],
- 'bas' => [
- 'isoName' => 'Basaa',
- 'nativeName' => 'Basaa',
- ],
- 'bem' => [
- 'isoName' => 'Bemba',
- 'nativeName' => 'Bemba',
- ],
- 'bez' => [
- 'isoName' => 'Bena',
- 'nativeName' => 'Bena',
- ],
- 'bhb' => [
- 'isoName' => 'Bhili',
- 'nativeName' => 'Bhili',
- ],
- 'bho' => [
- 'isoName' => 'Bhojpuri',
- 'nativeName' => 'Bhojpuri',
- ],
- 'brx' => [
- 'isoName' => 'Bodo',
- 'nativeName' => 'Bodo',
- ],
- 'byn' => [
- 'isoName' => 'Bilin',
- 'nativeName' => 'Bilin',
- ],
- 'ccp' => [
- 'isoName' => 'Chakma',
- 'nativeName' => 'Chakma',
- ],
- 'cgg' => [
- 'isoName' => 'Chiga',
- 'nativeName' => 'Chiga',
- ],
- 'chr' => [
- 'isoName' => 'Cherokee',
- 'nativeName' => 'Cherokee',
- ],
- 'cmn' => [
- 'isoName' => 'Chinese',
- 'nativeName' => 'Chinese',
- ],
- 'crh' => [
- 'isoName' => 'Crimean Turkish',
- 'nativeName' => 'Crimean Turkish',
- ],
- 'csb' => [
- 'isoName' => 'Kashubian',
- 'nativeName' => 'Kashubian',
- ],
- 'dav' => [
- 'isoName' => 'Taita',
- 'nativeName' => 'Taita',
- ],
- 'dje' => [
- 'isoName' => 'Zarma',
- 'nativeName' => 'Zarma',
- ],
- 'doi' => [
- 'isoName' => 'Dogri (macrolanguage)',
- 'nativeName' => 'Dogri (macrolanguage)',
- ],
- 'dsb' => [
- 'isoName' => 'Lower Sorbian',
- 'nativeName' => 'Lower Sorbian',
- ],
- 'dua' => [
- 'isoName' => 'Duala',
- 'nativeName' => 'Duala',
- ],
- 'dyo' => [
- 'isoName' => 'Jola-Fonyi',
- 'nativeName' => 'Jola-Fonyi',
- ],
- 'ebu' => [
- 'isoName' => 'Embu',
- 'nativeName' => 'Embu',
- ],
- 'ewo' => [
- 'isoName' => 'Ewondo',
- 'nativeName' => 'Ewondo',
- ],
- 'fil' => [
- 'isoName' => 'Filipino',
- 'nativeName' => 'Filipino',
- ],
- 'fur' => [
- 'isoName' => 'Friulian',
- 'nativeName' => 'Friulian',
- ],
- 'gez' => [
- 'isoName' => 'Geez',
- 'nativeName' => 'Geez',
- ],
- 'gom' => [
- 'isoName' => 'Konkani, Goan',
- 'nativeName' => 'ಕೊಂಕಣಿ',
- ],
- 'gsw' => [
- 'isoName' => 'Swiss German',
- 'nativeName' => 'Swiss German',
- ],
- 'guz' => [
- 'isoName' => 'Gusii',
- 'nativeName' => 'Gusii',
- ],
- 'hak' => [
- 'isoName' => 'Hakka Chinese',
- 'nativeName' => 'Hakka Chinese',
- ],
- 'haw' => [
- 'isoName' => 'Hawaiian',
- 'nativeName' => 'Hawaiian',
- ],
- 'hif' => [
- 'isoName' => 'Fiji Hindi',
- 'nativeName' => 'Fiji Hindi',
- ],
- 'hne' => [
- 'isoName' => 'Chhattisgarhi',
- 'nativeName' => 'Chhattisgarhi',
- ],
- 'hsb' => [
- 'isoName' => 'Upper Sorbian',
- 'nativeName' => 'Upper Sorbian',
- ],
- 'jgo' => [
- 'isoName' => 'Ngomba',
- 'nativeName' => 'Ngomba',
- ],
- 'jmc' => [
- 'isoName' => 'Machame',
- 'nativeName' => 'Machame',
- ],
- 'kab' => [
- 'isoName' => 'Kabyle',
- 'nativeName' => 'Kabyle',
- ],
- 'kam' => [
- 'isoName' => 'Kamba',
- 'nativeName' => 'Kamba',
- ],
- 'kde' => [
- 'isoName' => 'Makonde',
- 'nativeName' => 'Makonde',
- ],
- 'kea' => [
- 'isoName' => 'Kabuverdianu',
- 'nativeName' => 'Kabuverdianu',
- ],
- 'khq' => [
- 'isoName' => 'Koyra Chiini',
- 'nativeName' => 'Koyra Chiini',
- ],
- 'kkj' => [
- 'isoName' => 'Kako',
- 'nativeName' => 'Kako',
- ],
- 'kln' => [
- 'isoName' => 'Kalenjin',
- 'nativeName' => 'Kalenjin',
- ],
- 'kok' => [
- 'isoName' => 'Konkani',
- 'nativeName' => 'Konkani',
- ],
- 'ksb' => [
- 'isoName' => 'Shambala',
- 'nativeName' => 'Shambala',
- ],
- 'ksf' => [
- 'isoName' => 'Bafia',
- 'nativeName' => 'Bafia',
- ],
- 'ksh' => [
- 'isoName' => 'Colognian',
- 'nativeName' => 'Colognian',
- ],
- 'lag' => [
- 'isoName' => 'Langi',
- 'nativeName' => 'Langi',
- ],
- 'lij' => [
- 'isoName' => 'Ligurian',
- 'nativeName' => 'Ligurian',
- ],
- 'lkt' => [
- 'isoName' => 'Lakota',
- 'nativeName' => 'Lakota',
- ],
- 'lrc' => [
- 'isoName' => 'Northern Luri',
- 'nativeName' => 'Northern Luri',
- ],
- 'luo' => [
- 'isoName' => 'Luo',
- 'nativeName' => 'Luo',
- ],
- 'luy' => [
- 'isoName' => 'Luyia',
- 'nativeName' => 'Luyia',
- ],
- 'lzh' => [
- 'isoName' => 'Literary Chinese',
- 'nativeName' => 'Literary Chinese',
- ],
- 'mag' => [
- 'isoName' => 'Magahi',
- 'nativeName' => 'Magahi',
- ],
- 'mai' => [
- 'isoName' => 'Maithili',
- 'nativeName' => 'Maithili',
- ],
- 'mas' => [
- 'isoName' => 'Masai',
- 'nativeName' => 'Masai',
- ],
- 'mer' => [
- 'isoName' => 'Meru',
- 'nativeName' => 'Meru',
- ],
- 'mfe' => [
- 'isoName' => 'Morisyen',
- 'nativeName' => 'Morisyen',
- ],
- 'mgh' => [
- 'isoName' => 'Makhuwa-Meetto',
- 'nativeName' => 'Makhuwa-Meetto',
- ],
- 'mgo' => [
- 'isoName' => 'Metaʼ',
- 'nativeName' => 'Metaʼ',
- ],
- 'mhr' => [
- 'isoName' => 'Eastern Mari',
- 'nativeName' => 'Eastern Mari',
- ],
- 'miq' => [
- 'isoName' => 'Mískito',
- 'nativeName' => 'Mískito',
- ],
- 'mjw' => [
- 'isoName' => 'Karbi',
- 'nativeName' => 'Karbi',
- ],
- 'mni' => [
- 'isoName' => 'Manipuri',
- 'nativeName' => 'Manipuri',
- ],
- 'mua' => [
- 'isoName' => 'Mundang',
- 'nativeName' => 'Mundang',
- ],
- 'mzn' => [
- 'isoName' => 'Mazanderani',
- 'nativeName' => 'Mazanderani',
- ],
- 'nan' => [
- 'isoName' => 'Min Nan Chinese',
- 'nativeName' => 'Min Nan Chinese',
- ],
- 'naq' => [
- 'isoName' => 'Nama',
- 'nativeName' => 'Nama',
- ],
- 'nds' => [
- 'isoName' => 'Low German',
- 'nativeName' => 'Low German',
- ],
- 'nhn' => [
- 'isoName' => 'Central Nahuatl',
- 'nativeName' => 'Central Nahuatl',
- ],
- 'niu' => [
- 'isoName' => 'Niuean',
- 'nativeName' => 'Niuean',
- ],
- 'nmg' => [
- 'isoName' => 'Kwasio',
- 'nativeName' => 'Kwasio',
- ],
- 'nnh' => [
- 'isoName' => 'Ngiemboon',
- 'nativeName' => 'Ngiemboon',
- ],
- 'nso' => [
- 'isoName' => 'Northern Sotho',
- 'nativeName' => 'Northern Sotho',
- ],
- 'nus' => [
- 'isoName' => 'Nuer',
- 'nativeName' => 'Nuer',
- ],
- 'nyn' => [
- 'isoName' => 'Nyankole',
- 'nativeName' => 'Nyankole',
- ],
- 'pap' => [
- 'isoName' => 'Papiamento',
- 'nativeName' => 'Papiamento',
- ],
- 'prg' => [
- 'isoName' => 'Prussian',
- 'nativeName' => 'Prussian',
- ],
- 'quz' => [
- 'isoName' => 'Cusco Quechua',
- 'nativeName' => 'Cusco Quechua',
- ],
- 'raj' => [
- 'isoName' => 'Rajasthani',
- 'nativeName' => 'Rajasthani',
- ],
- 'rof' => [
- 'isoName' => 'Rombo',
- 'nativeName' => 'Rombo',
- ],
- 'rwk' => [
- 'isoName' => 'Rwa',
- 'nativeName' => 'Rwa',
- ],
- 'sah' => [
- 'isoName' => 'Sakha',
- 'nativeName' => 'Sakha',
- ],
- 'saq' => [
- 'isoName' => 'Samburu',
- 'nativeName' => 'Samburu',
- ],
- 'sat' => [
- 'isoName' => 'Santali',
- 'nativeName' => 'Santali',
- ],
- 'sbp' => [
- 'isoName' => 'Sangu',
- 'nativeName' => 'Sangu',
- ],
- 'scr' => [
- 'isoName' => 'Serbo Croatian',
- 'nativeName' => 'Serbo Croatian',
- ],
- 'seh' => [
- 'isoName' => 'Sena',
- 'nativeName' => 'Sena',
- ],
- 'ses' => [
- 'isoName' => 'Koyraboro Senni',
- 'nativeName' => 'Koyraboro Senni',
- ],
- 'sgs' => [
- 'isoName' => 'Samogitian',
- 'nativeName' => 'Samogitian',
- ],
- 'shi' => [
- 'isoName' => 'Tachelhit',
- 'nativeName' => 'Tachelhit',
- ],
- 'shn' => [
- 'isoName' => 'Shan',
- 'nativeName' => 'Shan',
- ],
- 'shs' => [
- 'isoName' => 'Shuswap',
- 'nativeName' => 'Shuswap',
- ],
- 'sid' => [
- 'isoName' => 'Sidamo',
- 'nativeName' => 'Sidamo',
- ],
- 'smn' => [
- 'isoName' => 'Inari Sami',
- 'nativeName' => 'Inari Sami',
- ],
- 'szl' => [
- 'isoName' => 'Silesian',
- 'nativeName' => 'Silesian',
- ],
- 'tcy' => [
- 'isoName' => 'Tulu',
- 'nativeName' => 'Tulu',
- ],
- 'teo' => [
- 'isoName' => 'Teso',
- 'nativeName' => 'Teso',
- ],
- 'tet' => [
- 'isoName' => 'Tetum',
- 'nativeName' => 'Tetum',
- ],
- 'the' => [
- 'isoName' => 'Chitwania Tharu',
- 'nativeName' => 'Chitwania Tharu',
- ],
- 'tig' => [
- 'isoName' => 'Tigre',
- 'nativeName' => 'Tigre',
- ],
- 'tlh' => [
- 'isoName' => 'Klingon',
- 'nativeName' => 'tlhIngan Hol',
- ],
- 'tpi' => [
- 'isoName' => 'Tok Pisin',
- 'nativeName' => 'Tok Pisin',
- ],
- 'twq' => [
- 'isoName' => 'Tasawaq',
- 'nativeName' => 'Tasawaq',
- ],
- 'tzl' => [
- 'isoName' => 'Talossan',
- 'nativeName' => 'Talossan',
- ],
- 'tzm' => [
- 'isoName' => 'Tamazight, Central Atlas',
- 'nativeName' => 'ⵜⵎⴰⵣⵉⵖⵜ',
- ],
- 'unm' => [
- 'isoName' => 'Unami',
- 'nativeName' => 'Unami',
- ],
- 'vai' => [
- 'isoName' => 'Vai',
- 'nativeName' => 'Vai',
- ],
- 'vun' => [
- 'isoName' => 'Vunjo',
- 'nativeName' => 'Vunjo',
- ],
- 'wae' => [
- 'isoName' => 'Walser',
- 'nativeName' => 'Walser',
- ],
- 'wal' => [
- 'isoName' => 'Wolaytta',
- 'nativeName' => 'Wolaytta',
- ],
- 'xog' => [
- 'isoName' => 'Soga',
- 'nativeName' => 'Soga',
- ],
- 'yav' => [
- 'isoName' => 'Yangben',
- 'nativeName' => 'Yangben',
- ],
- 'yue' => [
- 'isoName' => 'Cantonese',
- 'nativeName' => 'Cantonese',
- ],
- 'yuw' => [
- 'isoName' => 'Yau (Morobe Province)',
- 'nativeName' => 'Yau (Morobe Province)',
- ],
- 'zgh' => [
- 'isoName' => 'Standard Moroccan Tamazight',
- 'nativeName' => 'Standard Moroccan Tamazight',
- ],
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/List/regions.php b/vendor/nesbot/carbon/src/Carbon/List/regions.php
deleted file mode 100644
index 8ab8a9e3..00000000
--- a/vendor/nesbot/carbon/src/Carbon/List/regions.php
+++ /dev/null
@@ -1,265 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * ISO 3166-2
- */
-return [
- 'AD' => 'Andorra',
- 'AE' => 'United Arab Emirates',
- 'AF' => 'Afghanistan',
- 'AG' => 'Antigua and Barbuda',
- 'AI' => 'Anguilla',
- 'AL' => 'Albania',
- 'AM' => 'Armenia',
- 'AO' => 'Angola',
- 'AQ' => 'Antarctica',
- 'AR' => 'Argentina',
- 'AS' => 'American Samoa',
- 'AT' => 'Austria',
- 'AU' => 'Australia',
- 'AW' => 'Aruba',
- 'AX' => 'Åland Islands',
- 'AZ' => 'Azerbaijan',
- 'BA' => 'Bosnia and Herzegovina',
- 'BB' => 'Barbados',
- 'BD' => 'Bangladesh',
- 'BE' => 'Belgium',
- 'BF' => 'Burkina Faso',
- 'BG' => 'Bulgaria',
- 'BH' => 'Bahrain',
- 'BI' => 'Burundi',
- 'BJ' => 'Benin',
- 'BL' => 'Saint Barthélemy',
- 'BM' => 'Bermuda',
- 'BN' => 'Brunei Darussalam',
- 'BO' => 'Bolivia (Plurinational State of)',
- 'BQ' => 'Bonaire, Sint Eustatius and Saba',
- 'BR' => 'Brazil',
- 'BS' => 'Bahamas',
- 'BT' => 'Bhutan',
- 'BV' => 'Bouvet Island',
- 'BW' => 'Botswana',
- 'BY' => 'Belarus',
- 'BZ' => 'Belize',
- 'CA' => 'Canada',
- 'CC' => 'Cocos (Keeling) Islands',
- 'CD' => 'Congo, Democratic Republic of the',
- 'CF' => 'Central African Republic',
- 'CG' => 'Congo',
- 'CH' => 'Switzerland',
- 'CI' => 'Côte d\'Ivoire',
- 'CK' => 'Cook Islands',
- 'CL' => 'Chile',
- 'CM' => 'Cameroon',
- 'CN' => 'China',
- 'CO' => 'Colombia',
- 'CR' => 'Costa Rica',
- 'CU' => 'Cuba',
- 'CV' => 'Cabo Verde',
- 'CW' => 'Curaçao',
- 'CX' => 'Christmas Island',
- 'CY' => 'Cyprus',
- 'CZ' => 'Czechia',
- 'DE' => 'Germany',
- 'DJ' => 'Djibouti',
- 'DK' => 'Denmark',
- 'DM' => 'Dominica',
- 'DO' => 'Dominican Republic',
- 'DZ' => 'Algeria',
- 'EC' => 'Ecuador',
- 'EE' => 'Estonia',
- 'EG' => 'Egypt',
- 'EH' => 'Western Sahara',
- 'ER' => 'Eritrea',
- 'ES' => 'Spain',
- 'ET' => 'Ethiopia',
- 'FI' => 'Finland',
- 'FJ' => 'Fiji',
- 'FK' => 'Falkland Islands (Malvinas)',
- 'FM' => 'Micronesia (Federated States of)',
- 'FO' => 'Faroe Islands',
- 'FR' => 'France',
- 'GA' => 'Gabon',
- 'GB' => 'United Kingdom of Great Britain and Northern Ireland',
- 'GD' => 'Grenada',
- 'GE' => 'Georgia',
- 'GF' => 'French Guiana',
- 'GG' => 'Guernsey',
- 'GH' => 'Ghana',
- 'GI' => 'Gibraltar',
- 'GL' => 'Greenland',
- 'GM' => 'Gambia',
- 'GN' => 'Guinea',
- 'GP' => 'Guadeloupe',
- 'GQ' => 'Equatorial Guinea',
- 'GR' => 'Greece',
- 'GS' => 'South Georgia and the South Sandwich Islands',
- 'GT' => 'Guatemala',
- 'GU' => 'Guam',
- 'GW' => 'Guinea-Bissau',
- 'GY' => 'Guyana',
- 'HK' => 'Hong Kong',
- 'HM' => 'Heard Island and McDonald Islands',
- 'HN' => 'Honduras',
- 'HR' => 'Croatia',
- 'HT' => 'Haiti',
- 'HU' => 'Hungary',
- 'ID' => 'Indonesia',
- 'IE' => 'Ireland',
- 'IL' => 'Israel',
- 'IM' => 'Isle of Man',
- 'IN' => 'India',
- 'IO' => 'British Indian Ocean Territory',
- 'IQ' => 'Iraq',
- 'IR' => 'Iran (Islamic Republic of)',
- 'IS' => 'Iceland',
- 'IT' => 'Italy',
- 'JE' => 'Jersey',
- 'JM' => 'Jamaica',
- 'JO' => 'Jordan',
- 'JP' => 'Japan',
- 'KE' => 'Kenya',
- 'KG' => 'Kyrgyzstan',
- 'KH' => 'Cambodia',
- 'KI' => 'Kiribati',
- 'KM' => 'Comoros',
- 'KN' => 'Saint Kitts and Nevis',
- 'KP' => 'Korea (Democratic People\'s Republic of)',
- 'KR' => 'Korea, Republic of',
- 'KW' => 'Kuwait',
- 'KY' => 'Cayman Islands',
- 'KZ' => 'Kazakhstan',
- 'LA' => 'Lao People\'s Democratic Republic',
- 'LB' => 'Lebanon',
- 'LC' => 'Saint Lucia',
- 'LI' => 'Liechtenstein',
- 'LK' => 'Sri Lanka',
- 'LR' => 'Liberia',
- 'LS' => 'Lesotho',
- 'LT' => 'Lithuania',
- 'LU' => 'Luxembourg',
- 'LV' => 'Latvia',
- 'LY' => 'Libya',
- 'MA' => 'Morocco',
- 'MC' => 'Monaco',
- 'MD' => 'Moldova, Republic of',
- 'ME' => 'Montenegro',
- 'MF' => 'Saint Martin (French part)',
- 'MG' => 'Madagascar',
- 'MH' => 'Marshall Islands',
- 'MK' => 'Macedonia, the former Yugoslav Republic of',
- 'ML' => 'Mali',
- 'MM' => 'Myanmar',
- 'MN' => 'Mongolia',
- 'MO' => 'Macao',
- 'MP' => 'Northern Mariana Islands',
- 'MQ' => 'Martinique',
- 'MR' => 'Mauritania',
- 'MS' => 'Montserrat',
- 'MT' => 'Malta',
- 'MU' => 'Mauritius',
- 'MV' => 'Maldives',
- 'MW' => 'Malawi',
- 'MX' => 'Mexico',
- 'MY' => 'Malaysia',
- 'MZ' => 'Mozambique',
- 'NA' => 'Namibia',
- 'NC' => 'New Caledonia',
- 'NE' => 'Niger',
- 'NF' => 'Norfolk Island',
- 'NG' => 'Nigeria',
- 'NI' => 'Nicaragua',
- 'NL' => 'Netherlands',
- 'NO' => 'Norway',
- 'NP' => 'Nepal',
- 'NR' => 'Nauru',
- 'NU' => 'Niue',
- 'NZ' => 'New Zealand',
- 'OM' => 'Oman',
- 'PA' => 'Panama',
- 'PE' => 'Peru',
- 'PF' => 'French Polynesia',
- 'PG' => 'Papua New Guinea',
- 'PH' => 'Philippines',
- 'PK' => 'Pakistan',
- 'PL' => 'Poland',
- 'PM' => 'Saint Pierre and Miquelon',
- 'PN' => 'Pitcairn',
- 'PR' => 'Puerto Rico',
- 'PS' => 'Palestine, State of',
- 'PT' => 'Portugal',
- 'PW' => 'Palau',
- 'PY' => 'Paraguay',
- 'QA' => 'Qatar',
- 'RE' => 'Réunion',
- 'RO' => 'Romania',
- 'RS' => 'Serbia',
- 'RU' => 'Russian Federation',
- 'RW' => 'Rwanda',
- 'SA' => 'Saudi Arabia',
- 'SB' => 'Solomon Islands',
- 'SC' => 'Seychelles',
- 'SD' => 'Sudan',
- 'SE' => 'Sweden',
- 'SG' => 'Singapore',
- 'SH' => 'Saint Helena, Ascension and Tristan da Cunha',
- 'SI' => 'Slovenia',
- 'SJ' => 'Svalbard and Jan Mayen',
- 'SK' => 'Slovakia',
- 'SL' => 'Sierra Leone',
- 'SM' => 'San Marino',
- 'SN' => 'Senegal',
- 'SO' => 'Somalia',
- 'SR' => 'Suriname',
- 'SS' => 'South Sudan',
- 'ST' => 'Sao Tome and Principe',
- 'SV' => 'El Salvador',
- 'SX' => 'Sint Maarten (Dutch part)',
- 'SY' => 'Syrian Arab Republic',
- 'SZ' => 'Eswatini',
- 'TC' => 'Turks and Caicos Islands',
- 'TD' => 'Chad',
- 'TF' => 'French Southern Territories',
- 'TG' => 'Togo',
- 'TH' => 'Thailand',
- 'TJ' => 'Tajikistan',
- 'TK' => 'Tokelau',
- 'TL' => 'Timor-Leste',
- 'TM' => 'Turkmenistan',
- 'TN' => 'Tunisia',
- 'TO' => 'Tonga',
- 'TR' => 'Turkey',
- 'TT' => 'Trinidad and Tobago',
- 'TV' => 'Tuvalu',
- 'TW' => 'Taiwan, Province of China',
- 'TZ' => 'Tanzania, United Republic of',
- 'UA' => 'Ukraine',
- 'UG' => 'Uganda',
- 'UM' => 'United States Minor Outlying Islands',
- 'US' => 'United States of America',
- 'UY' => 'Uruguay',
- 'UZ' => 'Uzbekistan',
- 'VA' => 'Holy See',
- 'VC' => 'Saint Vincent and the Grenadines',
- 'VE' => 'Venezuela (Bolivarian Republic of)',
- 'VG' => 'Virgin Islands (British)',
- 'VI' => 'Virgin Islands (U.S.)',
- 'VN' => 'Viet Nam',
- 'VU' => 'Vanuatu',
- 'WF' => 'Wallis and Futuna',
- 'WS' => 'Samoa',
- 'YE' => 'Yemen',
- 'YT' => 'Mayotte',
- 'ZA' => 'South Africa',
- 'ZM' => 'Zambia',
- 'ZW' => 'Zimbabwe',
-];
diff --git a/vendor/nesbot/carbon/src/Carbon/PHPStan/Macro.php b/vendor/nesbot/carbon/src/Carbon/PHPStan/Macro.php
deleted file mode 100644
index baee2041..00000000
--- a/vendor/nesbot/carbon/src/Carbon/PHPStan/Macro.php
+++ /dev/null
@@ -1,247 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\PHPStan;
-
-use Closure;
-use PHPStan\Reflection\Php\BuiltinMethodReflection;
-use PHPStan\TrinaryLogic;
-use ReflectionClass;
-use ReflectionFunction;
-use ReflectionMethod;
-use ReflectionParameter;
-use ReflectionType;
-use stdClass;
-use Throwable;
-
-final class Macro implements BuiltinMethodReflection
-{
- /**
- * The class name.
- *
- * @var class-string
- */
- private $className;
-
- /**
- * The method name.
- *
- * @var string
- */
- private $methodName;
-
- /**
- * The reflection function/method.
- *
- * @var ReflectionFunction|ReflectionMethod
- */
- private $reflectionFunction;
-
- /**
- * The parameters.
- *
- * @var ReflectionParameter[]
- */
- private $parameters;
-
- /**
- * The is static.
- *
- * @var bool
- */
- private $static = false;
-
- /**
- * Macro constructor.
- *
- * @param string $className
- * @phpstan-param class-string $className
- *
- * @param string $methodName
- * @param callable $macro
- */
- public function __construct(string $className, string $methodName, $macro)
- {
- $this->className = $className;
- $this->methodName = $methodName;
- $this->reflectionFunction = \is_array($macro)
- ? new ReflectionMethod($macro[0], $macro[1])
- : new ReflectionFunction($macro);
- $this->parameters = $this->reflectionFunction->getParameters();
-
- if ($this->reflectionFunction->isClosure()) {
- try {
- $closure = $this->reflectionFunction->getClosure();
- $boundClosure = Closure::bind($closure, new stdClass());
- $this->static = (!$boundClosure || (new ReflectionFunction($boundClosure))->getClosureThis() === null);
- } catch (Throwable $e) {
- $this->static = true;
- }
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDeclaringClass(): ReflectionClass
- {
- return new ReflectionClass($this->className);
- }
-
- /**
- * {@inheritdoc}
- */
- public function isPrivate(): bool
- {
- return false;
- }
-
- /**
- * {@inheritdoc}
- */
- public function isPublic(): bool
- {
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function isFinal(): bool
- {
- return false;
- }
-
- /**
- * {@inheritdoc}
- */
- public function isInternal(): bool
- {
- return false;
- }
-
- /**
- * {@inheritdoc}
- */
- public function isAbstract(): bool
- {
- return false;
- }
-
- /**
- * {@inheritdoc}
- */
- public function isStatic(): bool
- {
- return $this->static;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDocComment(): ?string
- {
- return $this->reflectionFunction->getDocComment() ?: null;
- }
-
- /**
- * {@inheritdoc}
- *
- * @return string|false
- */
- public function getFileName()
- {
- return $this->reflectionFunction->getFileName();
- }
-
- /**
- * {@inheritdoc}
- */
- public function getName(): string
- {
- return $this->methodName;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getParameters(): array
- {
- return $this->parameters;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getReturnType(): ?ReflectionType
- {
- return $this->reflectionFunction->getReturnType();
- }
-
- /**
- * {@inheritdoc}
- *
- * @return int|false
- */
- public function getStartLine()
- {
- return $this->reflectionFunction->getStartLine();
- }
-
- /**
- * {@inheritdoc}
- *
- * @return int|false
- */
- public function getEndLine()
- {
- return $this->reflectionFunction->getEndLine();
- }
-
- /**
- * {@inheritdoc}
- */
- public function isDeprecated(): TrinaryLogic
- {
- return TrinaryLogic::createFromBoolean(
- $this->reflectionFunction->isDeprecated() ||
- preg_match('/@deprecated/i', $this->getDocComment() ?: '')
- );
- }
-
- /**
- * {@inheritdoc}
- */
- public function isVariadic(): bool
- {
- return $this->reflectionFunction->isVariadic();
- }
-
- /**
- * {@inheritdoc}
- */
- public function getPrototype(): BuiltinMethodReflection
- {
- return $this;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getReflection(): ?ReflectionMethod
- {
- return $this->reflectionFunction instanceof ReflectionMethod
- ? $this->reflectionFunction
- : null;
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/PHPStan/MacroExtension.php b/vendor/nesbot/carbon/src/Carbon/PHPStan/MacroExtension.php
deleted file mode 100644
index 8e2524c0..00000000
--- a/vendor/nesbot/carbon/src/Carbon/PHPStan/MacroExtension.php
+++ /dev/null
@@ -1,78 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\PHPStan;
-
-use PHPStan\Reflection\ClassReflection;
-use PHPStan\Reflection\MethodReflection;
-use PHPStan\Reflection\MethodsClassReflectionExtension;
-use PHPStan\Reflection\Php\PhpMethodReflectionFactory;
-use PHPStan\Type\TypehintHelper;
-
-/**
- * Class MacroExtension.
- *
- * @codeCoverageIgnore Pure PHPStan wrapper.
- */
-final class MacroExtension implements MethodsClassReflectionExtension
-{
- /**
- * @var PhpMethodReflectionFactory
- */
- protected $methodReflectionFactory;
-
- /**
- * @var MacroScanner
- */
- protected $scanner;
-
- /**
- * Extension constructor.
- *
- * @param PhpMethodReflectionFactory $methodReflectionFactory
- */
- public function __construct(PhpMethodReflectionFactory $methodReflectionFactory)
- {
- $this->scanner = new MacroScanner();
- $this->methodReflectionFactory = $methodReflectionFactory;
- }
-
- /**
- * {@inheritdoc}
- */
- public function hasMethod(ClassReflection $classReflection, string $methodName): bool
- {
- return $this->scanner->hasMethod($classReflection->getName(), $methodName);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getMethod(ClassReflection $classReflection, string $methodName): MethodReflection
- {
- $builtinMacro = $this->scanner->getMethod($classReflection->getName(), $methodName);
-
- return $this->methodReflectionFactory->create(
- $classReflection,
- null,
- $builtinMacro,
- $classReflection->getActiveTemplateTypeMap(),
- [],
- TypehintHelper::decideTypeFromReflection($builtinMacro->getReturnType()),
- null,
- null,
- $builtinMacro->isDeprecated()->yes(),
- $builtinMacro->isInternal(),
- $builtinMacro->isFinal(),
- $builtinMacro->getDocComment()
- );
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/PHPStan/MacroScanner.php b/vendor/nesbot/carbon/src/Carbon/PHPStan/MacroScanner.php
deleted file mode 100644
index d169939d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/PHPStan/MacroScanner.php
+++ /dev/null
@@ -1,63 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\PHPStan;
-
-use Carbon\CarbonInterface;
-use ReflectionClass;
-use ReflectionException;
-
-final class MacroScanner
-{
- /**
- * Return true if the given pair class-method is a Carbon macro.
- *
- * @param string $className
- * @phpstan-param class-string $className
- *
- * @param string $methodName
- *
- * @return bool
- */
- public function hasMethod(string $className, string $methodName): bool
- {
- return is_a($className, CarbonInterface::class, true) &&
- \is_callable([$className, 'hasMacro']) &&
- $className::hasMacro($methodName);
- }
-
- /**
- * Return the Macro for a given pair class-method.
- *
- * @param string $className
- * @phpstan-param class-string $className
- *
- * @param string $methodName
- *
- * @throws ReflectionException
- *
- * @return Macro
- */
- public function getMethod(string $className, string $methodName): Macro
- {
- $reflectionClass = new ReflectionClass($className);
- $property = $reflectionClass->getProperty('globalMacros');
-
- $property->setAccessible(true);
- $macro = $property->getValue()[$methodName];
-
- return new Macro(
- $className,
- $methodName,
- $macro
- );
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Boundaries.php b/vendor/nesbot/carbon/src/Carbon/Traits/Boundaries.php
deleted file mode 100644
index 71bbb723..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Traits/Boundaries.php
+++ /dev/null
@@ -1,443 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Traits;
-
-use Carbon\Exceptions\UnknownUnitException;
-
-/**
- * Trait Boundaries.
- *
- * startOf, endOf and derived method for each unit.
- *
- * Depends on the following properties:
- *
- * @property int $year
- * @property int $month
- * @property int $daysInMonth
- * @property int $quarter
- *
- * Depends on the following methods:
- *
- * @method $this setTime(int $hour, int $minute, int $second = 0, int $microseconds = 0)
- * @method $this setDate(int $year, int $month, int $day)
- * @method $this addMonths(int $value = 1)
- */
-trait Boundaries
-{
- /**
- * Resets the time to 00:00:00 start of day
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->startOfDay();
- * ```
- *
- * @return static
- */
- public function startOfDay()
- {
- return $this->setTime(0, 0, 0, 0);
- }
-
- /**
- * Resets the time to 23:59:59.999999 end of day
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->endOfDay();
- * ```
- *
- * @return static
- */
- public function endOfDay()
- {
- return $this->setTime(static::HOURS_PER_DAY - 1, static::MINUTES_PER_HOUR - 1, static::SECONDS_PER_MINUTE - 1, static::MICROSECONDS_PER_SECOND - 1);
- }
-
- /**
- * Resets the date to the first day of the month and the time to 00:00:00
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->startOfMonth();
- * ```
- *
- * @return static
- */
- public function startOfMonth()
- {
- return $this->setDate($this->year, $this->month, 1)->startOfDay();
- }
-
- /**
- * Resets the date to end of the month and time to 23:59:59.999999
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->endOfMonth();
- * ```
- *
- * @return static
- */
- public function endOfMonth()
- {
- return $this->setDate($this->year, $this->month, $this->daysInMonth)->endOfDay();
- }
-
- /**
- * Resets the date to the first day of the quarter and the time to 00:00:00
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->startOfQuarter();
- * ```
- *
- * @return static
- */
- public function startOfQuarter()
- {
- $month = ($this->quarter - 1) * static::MONTHS_PER_QUARTER + 1;
-
- return $this->setDate($this->year, $month, 1)->startOfDay();
- }
-
- /**
- * Resets the date to end of the quarter and time to 23:59:59.999999
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->endOfQuarter();
- * ```
- *
- * @return static
- */
- public function endOfQuarter()
- {
- return $this->startOfQuarter()->addMonths(static::MONTHS_PER_QUARTER - 1)->endOfMonth();
- }
-
- /**
- * Resets the date to the first day of the year and the time to 00:00:00
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->startOfYear();
- * ```
- *
- * @return static
- */
- public function startOfYear()
- {
- return $this->setDate($this->year, 1, 1)->startOfDay();
- }
-
- /**
- * Resets the date to end of the year and time to 23:59:59.999999
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->endOfYear();
- * ```
- *
- * @return static
- */
- public function endOfYear()
- {
- return $this->setDate($this->year, 12, 31)->endOfDay();
- }
-
- /**
- * Resets the date to the first day of the decade and the time to 00:00:00
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->startOfDecade();
- * ```
- *
- * @return static
- */
- public function startOfDecade()
- {
- $year = $this->year - $this->year % static::YEARS_PER_DECADE;
-
- return $this->setDate($year, 1, 1)->startOfDay();
- }
-
- /**
- * Resets the date to end of the decade and time to 23:59:59.999999
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->endOfDecade();
- * ```
- *
- * @return static
- */
- public function endOfDecade()
- {
- $year = $this->year - $this->year % static::YEARS_PER_DECADE + static::YEARS_PER_DECADE - 1;
-
- return $this->setDate($year, 12, 31)->endOfDay();
- }
-
- /**
- * Resets the date to the first day of the century and the time to 00:00:00
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->startOfCentury();
- * ```
- *
- * @return static
- */
- public function startOfCentury()
- {
- $year = $this->year - ($this->year - 1) % static::YEARS_PER_CENTURY;
-
- return $this->setDate($year, 1, 1)->startOfDay();
- }
-
- /**
- * Resets the date to end of the century and time to 23:59:59.999999
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->endOfCentury();
- * ```
- *
- * @return static
- */
- public function endOfCentury()
- {
- $year = $this->year - 1 - ($this->year - 1) % static::YEARS_PER_CENTURY + static::YEARS_PER_CENTURY;
-
- return $this->setDate($year, 12, 31)->endOfDay();
- }
-
- /**
- * Resets the date to the first day of the millennium and the time to 00:00:00
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->startOfMillennium();
- * ```
- *
- * @return static
- */
- public function startOfMillennium()
- {
- $year = $this->year - ($this->year - 1) % static::YEARS_PER_MILLENNIUM;
-
- return $this->setDate($year, 1, 1)->startOfDay();
- }
-
- /**
- * Resets the date to end of the millennium and time to 23:59:59.999999
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->endOfMillennium();
- * ```
- *
- * @return static
- */
- public function endOfMillennium()
- {
- $year = $this->year - 1 - ($this->year - 1) % static::YEARS_PER_MILLENNIUM + static::YEARS_PER_MILLENNIUM;
-
- return $this->setDate($year, 12, 31)->endOfDay();
- }
-
- /**
- * Resets the date to the first day of week (defined in $weekStartsAt) and the time to 00:00:00
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->startOfWeek() . "\n";
- * echo Carbon::parse('2018-07-25 12:45:16')->locale('ar')->startOfWeek() . "\n";
- * echo Carbon::parse('2018-07-25 12:45:16')->startOfWeek(Carbon::SUNDAY) . "\n";
- * ```
- *
- * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week
- *
- * @return static
- */
- public function startOfWeek($weekStartsAt = null)
- {
- return $this->subDays((7 + $this->dayOfWeek - ($weekStartsAt ?? $this->firstWeekDay)) % 7)->startOfDay();
- }
-
- /**
- * Resets the date to end of week (defined in $weekEndsAt) and time to 23:59:59.999999
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->endOfWeek() . "\n";
- * echo Carbon::parse('2018-07-25 12:45:16')->locale('ar')->endOfWeek() . "\n";
- * echo Carbon::parse('2018-07-25 12:45:16')->endOfWeek(Carbon::SATURDAY) . "\n";
- * ```
- *
- * @param int $weekEndsAt optional start allow you to specify the day of week to use to end the week
- *
- * @return static
- */
- public function endOfWeek($weekEndsAt = null)
- {
- return $this->addDays((7 - $this->dayOfWeek + ($weekEndsAt ?? $this->lastWeekDay)) % 7)->endOfDay();
- }
-
- /**
- * Modify to start of current hour, minutes and seconds become 0
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->startOfHour();
- * ```
- *
- * @return static
- */
- public function startOfHour()
- {
- return $this->setTime($this->hour, 0, 0, 0);
- }
-
- /**
- * Modify to end of current hour, minutes and seconds become 59
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->endOfHour();
- * ```
- *
- * @return static
- */
- public function endOfHour()
- {
- return $this->setTime($this->hour, static::MINUTES_PER_HOUR - 1, static::SECONDS_PER_MINUTE - 1, static::MICROSECONDS_PER_SECOND - 1);
- }
-
- /**
- * Modify to start of current minute, seconds become 0
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->startOfMinute();
- * ```
- *
- * @return static
- */
- public function startOfMinute()
- {
- return $this->setTime($this->hour, $this->minute, 0, 0);
- }
-
- /**
- * Modify to end of current minute, seconds become 59
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16')->endOfMinute();
- * ```
- *
- * @return static
- */
- public function endOfMinute()
- {
- return $this->setTime($this->hour, $this->minute, static::SECONDS_PER_MINUTE - 1, static::MICROSECONDS_PER_SECOND - 1);
- }
-
- /**
- * Modify to start of current second, microseconds become 0
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16.334455')
- * ->startOfSecond()
- * ->format('H:i:s.u');
- * ```
- *
- * @return static
- */
- public function startOfSecond()
- {
- return $this->setTime($this->hour, $this->minute, $this->second, 0);
- }
-
- /**
- * Modify to end of current second, microseconds become 999999
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16.334455')
- * ->endOfSecond()
- * ->format('H:i:s.u');
- * ```
- *
- * @return static
- */
- public function endOfSecond()
- {
- return $this->setTime($this->hour, $this->minute, $this->second, static::MICROSECONDS_PER_SECOND - 1);
- }
-
- /**
- * Modify to start of current given unit.
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16.334455')
- * ->startOf('month')
- * ->endOf('week', Carbon::FRIDAY);
- * ```
- *
- * @param string $unit
- * @param array $params
- *
- * @return static
- */
- public function startOf($unit, ...$params)
- {
- $ucfUnit = ucfirst(static::singularUnit($unit));
- $method = "startOf$ucfUnit";
- if (!method_exists($this, $method)) {
- throw new UnknownUnitException($unit);
- }
-
- return $this->$method(...$params);
- }
-
- /**
- * Modify to end of current given unit.
- *
- * @example
- * ```
- * echo Carbon::parse('2018-07-25 12:45:16.334455')
- * ->startOf('month')
- * ->endOf('week', Carbon::FRIDAY);
- * ```
- *
- * @param string $unit
- * @param array $params
- *
- * @return static
- */
- public function endOf($unit, ...$params)
- {
- $ucfUnit = ucfirst(static::singularUnit($unit));
- $method = "endOf$ucfUnit";
- if (!method_exists($this, $method)) {
- throw new UnknownUnitException($unit);
- }
-
- return $this->$method(...$params);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Cast.php b/vendor/nesbot/carbon/src/Carbon/Traits/Cast.php
deleted file mode 100644
index 5f7c7c01..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Traits/Cast.php
+++ /dev/null
@@ -1,43 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Traits;
-
-use Carbon\Exceptions\InvalidCastException;
-use DateTimeInterface;
-
-/**
- * Trait Cast.
- *
- * Utils to cast into an other class.
- */
-trait Cast
-{
- /**
- * Cast the current instance into the given class.
- *
- * @param string $className The $className::instance() method will be called to cast the current object.
- *
- * @return DateTimeInterface
- */
- public function cast(string $className)
- {
- if (!method_exists($className, 'instance')) {
- if (is_a($className, DateTimeInterface::class, true)) {
- return new $className($this->rawFormat('Y-m-d H:i:s.u'), $this->getTimezone());
- }
-
- throw new InvalidCastException("$className has not the instance() method needed to cast the date.");
- }
-
- return $className::instance($this);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Comparison.php b/vendor/nesbot/carbon/src/Carbon/Traits/Comparison.php
deleted file mode 100644
index 68240b7c..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Traits/Comparison.php
+++ /dev/null
@@ -1,1070 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Traits;
-
-use BadMethodCallException;
-use Carbon\CarbonInterface;
-use Carbon\Exceptions\BadComparisonUnitException;
-use InvalidArgumentException;
-
-/**
- * Trait Comparison.
- *
- * Comparison utils and testers. All the following methods return booleans.
- * nowWithSameTz
- *
- * Depends on the following methods:
- *
- * @method static resolveCarbon($date)
- * @method static copy()
- * @method static nowWithSameTz()
- * @method static static yesterday($timezone = null)
- * @method static static tomorrow($timezone = null)
- */
-trait Comparison
-{
- /** @var bool */
- protected $endOfTime = false;
-
- /** @var bool */
- protected $startOfTime = false;
-
- /**
- * Determines if the instance is equal to another
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25 12:45:16')->eq('2018-07-25 12:45:16'); // true
- * Carbon::parse('2018-07-25 12:45:16')->eq(Carbon::parse('2018-07-25 12:45:16')); // true
- * Carbon::parse('2018-07-25 12:45:16')->eq('2018-07-25 12:45:17'); // false
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @see equalTo()
- *
- * @return bool
- */
- public function eq($date): bool
- {
- return $this->equalTo($date);
- }
-
- /**
- * Determines if the instance is equal to another
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25 12:45:16')->equalTo('2018-07-25 12:45:16'); // true
- * Carbon::parse('2018-07-25 12:45:16')->equalTo(Carbon::parse('2018-07-25 12:45:16')); // true
- * Carbon::parse('2018-07-25 12:45:16')->equalTo('2018-07-25 12:45:17'); // false
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @return bool
- */
- public function equalTo($date): bool
- {
- return $this == $date;
- }
-
- /**
- * Determines if the instance is not equal to another
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25 12:45:16')->ne('2018-07-25 12:45:16'); // false
- * Carbon::parse('2018-07-25 12:45:16')->ne(Carbon::parse('2018-07-25 12:45:16')); // false
- * Carbon::parse('2018-07-25 12:45:16')->ne('2018-07-25 12:45:17'); // true
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @see notEqualTo()
- *
- * @return bool
- */
- public function ne($date): bool
- {
- return $this->notEqualTo($date);
- }
-
- /**
- * Determines if the instance is not equal to another
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25 12:45:16')->notEqualTo('2018-07-25 12:45:16'); // false
- * Carbon::parse('2018-07-25 12:45:16')->notEqualTo(Carbon::parse('2018-07-25 12:45:16')); // false
- * Carbon::parse('2018-07-25 12:45:16')->notEqualTo('2018-07-25 12:45:17'); // true
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @return bool
- */
- public function notEqualTo($date): bool
- {
- return !$this->equalTo($date);
- }
-
- /**
- * Determines if the instance is greater (after) than another
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:15'); // true
- * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:16'); // false
- * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:17'); // false
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @see greaterThan()
- *
- * @return bool
- */
- public function gt($date): bool
- {
- return $this->greaterThan($date);
- }
-
- /**
- * Determines if the instance is greater (after) than another
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:15'); // true
- * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:16'); // false
- * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:17'); // false
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @return bool
- */
- public function greaterThan($date): bool
- {
- return $this > $date;
- }
-
- /**
- * Determines if the instance is greater (after) than another
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:15'); // true
- * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:16'); // false
- * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:17'); // false
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @see greaterThan()
- *
- * @return bool
- */
- public function isAfter($date): bool
- {
- return $this->greaterThan($date);
- }
-
- /**
- * Determines if the instance is greater (after) than or equal to another
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:15'); // true
- * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:16'); // true
- * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:17'); // false
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @see greaterThanOrEqualTo()
- *
- * @return bool
- */
- public function gte($date): bool
- {
- return $this->greaterThanOrEqualTo($date);
- }
-
- /**
- * Determines if the instance is greater (after) than or equal to another
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:15'); // true
- * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:16'); // true
- * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:17'); // false
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @return bool
- */
- public function greaterThanOrEqualTo($date): bool
- {
- return $this >= $date;
- }
-
- /**
- * Determines if the instance is less (before) than another
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:15'); // false
- * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:16'); // false
- * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:17'); // true
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @see lessThan()
- *
- * @return bool
- */
- public function lt($date): bool
- {
- return $this->lessThan($date);
- }
-
- /**
- * Determines if the instance is less (before) than another
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:15'); // false
- * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:16'); // false
- * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:17'); // true
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @return bool
- */
- public function lessThan($date): bool
- {
- return $this < $date;
- }
-
- /**
- * Determines if the instance is less (before) than another
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:15'); // false
- * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:16'); // false
- * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:17'); // true
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @see lessThan()
- *
- * @return bool
- */
- public function isBefore($date): bool
- {
- return $this->lessThan($date);
- }
-
- /**
- * Determines if the instance is less (before) or equal to another
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:15'); // false
- * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:16'); // true
- * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:17'); // true
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @see lessThanOrEqualTo()
- *
- * @return bool
- */
- public function lte($date): bool
- {
- return $this->lessThanOrEqualTo($date);
- }
-
- /**
- * Determines if the instance is less (before) or equal to another
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:15'); // false
- * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:16'); // true
- * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:17'); // true
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @return bool
- */
- public function lessThanOrEqualTo($date): bool
- {
- return $this <= $date;
- }
-
- /**
- * Determines if the instance is between two others.
- *
- * The third argument allow you to specify if bounds are included or not (true by default)
- * but for when you including/excluding bounds may produce different results in your application,
- * we recommend to use the explicit methods ->betweenIncluded() or ->betweenExcluded() instead.
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25')->between('2018-07-14', '2018-08-01'); // true
- * Carbon::parse('2018-07-25')->between('2018-08-01', '2018-08-20'); // false
- * Carbon::parse('2018-07-25')->between('2018-07-25', '2018-08-01'); // true
- * Carbon::parse('2018-07-25')->between('2018-07-25', '2018-08-01', false); // false
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2
- * @param bool $equal Indicates if an equal to comparison should be done
- *
- * @return bool
- */
- public function between($date1, $date2, $equal = true): bool
- {
- $date1 = $this->resolveCarbon($date1);
- $date2 = $this->resolveCarbon($date2);
-
- if ($date1->greaterThan($date2)) {
- [$date1, $date2] = [$date2, $date1];
- }
-
- if ($equal) {
- return $this->greaterThanOrEqualTo($date1) && $this->lessThanOrEqualTo($date2);
- }
-
- return $this->greaterThan($date1) && $this->lessThan($date2);
- }
-
- /**
- * Determines if the instance is between two others, bounds included.
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25')->betweenIncluded('2018-07-14', '2018-08-01'); // true
- * Carbon::parse('2018-07-25')->betweenIncluded('2018-08-01', '2018-08-20'); // false
- * Carbon::parse('2018-07-25')->betweenIncluded('2018-07-25', '2018-08-01'); // true
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2
- *
- * @return bool
- */
- public function betweenIncluded($date1, $date2): bool
- {
- return $this->between($date1, $date2, true);
- }
-
- /**
- * Determines if the instance is between two others, bounds excluded.
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25')->betweenExcluded('2018-07-14', '2018-08-01'); // true
- * Carbon::parse('2018-07-25')->betweenExcluded('2018-08-01', '2018-08-20'); // false
- * Carbon::parse('2018-07-25')->betweenExcluded('2018-07-25', '2018-08-01'); // false
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2
- *
- * @return bool
- */
- public function betweenExcluded($date1, $date2): bool
- {
- return $this->between($date1, $date2, false);
- }
-
- /**
- * Determines if the instance is between two others
- *
- * @example
- * ```
- * Carbon::parse('2018-07-25')->isBetween('2018-07-14', '2018-08-01'); // true
- * Carbon::parse('2018-07-25')->isBetween('2018-08-01', '2018-08-20'); // false
- * Carbon::parse('2018-07-25')->isBetween('2018-07-25', '2018-08-01'); // true
- * Carbon::parse('2018-07-25')->isBetween('2018-07-25', '2018-08-01', false); // false
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2
- * @param bool $equal Indicates if an equal to comparison should be done
- *
- * @return bool
- */
- public function isBetween($date1, $date2, $equal = true): bool
- {
- return $this->between($date1, $date2, $equal);
- }
-
- /**
- * Determines if the instance is a weekday.
- *
- * @example
- * ```
- * Carbon::parse('2019-07-14')->isWeekday(); // false
- * Carbon::parse('2019-07-15')->isWeekday(); // true
- * ```
- *
- * @return bool
- */
- public function isWeekday()
- {
- return !$this->isWeekend();
- }
-
- /**
- * Determines if the instance is a weekend day.
- *
- * @example
- * ```
- * Carbon::parse('2019-07-14')->isWeekend(); // true
- * Carbon::parse('2019-07-15')->isWeekend(); // false
- * ```
- *
- * @return bool
- */
- public function isWeekend()
- {
- return \in_array($this->dayOfWeek, static::$weekendDays);
- }
-
- /**
- * Determines if the instance is yesterday.
- *
- * @example
- * ```
- * Carbon::yesterday()->isYesterday(); // true
- * Carbon::tomorrow()->isYesterday(); // false
- * ```
- *
- * @return bool
- */
- public function isYesterday()
- {
- return $this->toDateString() === static::yesterday($this->getTimezone())->toDateString();
- }
-
- /**
- * Determines if the instance is today.
- *
- * @example
- * ```
- * Carbon::today()->isToday(); // true
- * Carbon::tomorrow()->isToday(); // false
- * ```
- *
- * @return bool
- */
- public function isToday()
- {
- return $this->toDateString() === $this->nowWithSameTz()->toDateString();
- }
-
- /**
- * Determines if the instance is tomorrow.
- *
- * @example
- * ```
- * Carbon::tomorrow()->isTomorrow(); // true
- * Carbon::yesterday()->isTomorrow(); // false
- * ```
- *
- * @return bool
- */
- public function isTomorrow()
- {
- return $this->toDateString() === static::tomorrow($this->getTimezone())->toDateString();
- }
-
- /**
- * Determines if the instance is in the future, ie. greater (after) than now.
- *
- * @example
- * ```
- * Carbon::now()->addHours(5)->isFuture(); // true
- * Carbon::now()->subHours(5)->isFuture(); // false
- * ```
- *
- * @return bool
- */
- public function isFuture()
- {
- return $this->greaterThan($this->nowWithSameTz());
- }
-
- /**
- * Determines if the instance is in the past, ie. less (before) than now.
- *
- * @example
- * ```
- * Carbon::now()->subHours(5)->isPast(); // true
- * Carbon::now()->addHours(5)->isPast(); // false
- * ```
- *
- * @return bool
- */
- public function isPast()
- {
- return $this->lessThan($this->nowWithSameTz());
- }
-
- /**
- * Determines if the instance is a leap year.
- *
- * @example
- * ```
- * Carbon::parse('2020-01-01')->isLeapYear(); // true
- * Carbon::parse('2019-01-01')->isLeapYear(); // false
- * ```
- *
- * @return bool
- */
- public function isLeapYear()
- {
- return $this->rawFormat('L') === '1';
- }
-
- /**
- * Determines if the instance is a long year
- *
- * @example
- * ```
- * Carbon::parse('2015-01-01')->isLongYear(); // true
- * Carbon::parse('2016-01-01')->isLongYear(); // false
- * ```
- *
- * @see https://en.wikipedia.org/wiki/ISO_8601#Week_dates
- *
- * @return bool
- */
- public function isLongYear()
- {
- return static::create($this->year, 12, 28, 0, 0, 0, $this->tz)->weekOfYear === 53;
- }
-
- /**
- * Compares the formatted values of the two dates.
- *
- * @example
- * ```
- * Carbon::parse('2019-06-13')->isSameAs('Y-d', Carbon::parse('2019-12-13')); // true
- * Carbon::parse('2019-06-13')->isSameAs('Y-d', Carbon::parse('2019-06-14')); // false
- * ```
- *
- * @param string $format date formats to compare.
- * @param \Carbon\Carbon|\DateTimeInterface|string|null $date instance to compare with or null to use current day.
- *
- * @return bool
- */
- public function isSameAs($format, $date = null)
- {
- return $this->rawFormat($format) === $this->resolveCarbon($date)->rawFormat($format);
- }
-
- /**
- * Determines if the instance is in the current unit given.
- *
- * @example
- * ```
- * Carbon::parse('2019-01-13')->isSameUnit('year', Carbon::parse('2019-12-25')); // true
- * Carbon::parse('2018-12-13')->isSameUnit('year', Carbon::parse('2019-12-25')); // false
- * ```
- *
- * @param string $unit singular unit string
- * @param \Carbon\Carbon|\DateTimeInterface|null $date instance to compare with or null to use current day.
- *
- * @throws BadComparisonUnitException
- *
- * @return bool
- */
- public function isSameUnit($unit, $date = null)
- {
- $units = [
- // @call isSameUnit
- 'year' => 'Y',
- // @call isSameUnit
- 'week' => 'o-W',
- // @call isSameUnit
- 'day' => 'Y-m-d',
- // @call isSameUnit
- 'hour' => 'Y-m-d H',
- // @call isSameUnit
- 'minute' => 'Y-m-d H:i',
- // @call isSameUnit
- 'second' => 'Y-m-d H:i:s',
- // @call isSameUnit
- 'micro' => 'Y-m-d H:i:s.u',
- // @call isSameUnit
- 'microsecond' => 'Y-m-d H:i:s.u',
- ];
-
- if (!isset($units[$unit])) {
- if (isset($this->$unit)) {
- return $this->resolveCarbon($date)->$unit === $this->$unit;
- }
-
- if ($this->localStrictModeEnabled ?? static::isStrictModeEnabled()) {
- throw new BadComparisonUnitException($unit);
- }
-
- return false;
- }
-
- return $this->isSameAs($units[$unit], $date);
- }
-
- /**
- * Determines if the instance is in the current unit given.
- *
- * @example
- * ```
- * Carbon::now()->isCurrentUnit('hour'); // true
- * Carbon::now()->subHours(2)->isCurrentUnit('hour'); // false
- * ```
- *
- * @param string $unit The unit to test.
- *
- * @throws BadMethodCallException
- *
- * @return bool
- */
- public function isCurrentUnit($unit)
- {
- return $this->{'isSame'.ucfirst($unit)}();
- }
-
- /**
- * Checks if the passed in date is in the same quarter as the instance quarter (and year if needed).
- *
- * @example
- * ```
- * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2019-03-01')); // true
- * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2019-04-01')); // false
- * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2018-03-01')); // false
- * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2018-03-01'), false); // true
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|string|null $date The instance to compare with or null to use current day.
- * @param bool $ofSameYear Check if it is the same month in the same year.
- *
- * @return bool
- */
- public function isSameQuarter($date = null, $ofSameYear = true)
- {
- $date = $this->resolveCarbon($date);
-
- return $this->quarter === $date->quarter && (!$ofSameYear || $this->isSameYear($date));
- }
-
- /**
- * Checks if the passed in date is in the same month as the instance´s month.
- *
- * @example
- * ```
- * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2019-01-01')); // true
- * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2019-02-01')); // false
- * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2018-01-01')); // false
- * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2018-01-01'), false); // true
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|null $date The instance to compare with or null to use the current date.
- * @param bool $ofSameYear Check if it is the same month in the same year.
- *
- * @return bool
- */
- public function isSameMonth($date = null, $ofSameYear = true)
- {
- return $this->isSameAs($ofSameYear ? 'Y-m' : 'm', $date);
- }
-
- /**
- * Checks if this day is a specific day of the week.
- *
- * @example
- * ```
- * Carbon::parse('2019-07-17')->isDayOfWeek(Carbon::WEDNESDAY); // true
- * Carbon::parse('2019-07-17')->isDayOfWeek(Carbon::FRIDAY); // false
- * Carbon::parse('2019-07-17')->isDayOfWeek('Wednesday'); // true
- * Carbon::parse('2019-07-17')->isDayOfWeek('Friday'); // false
- * ```
- *
- * @param int $dayOfWeek
- *
- * @return bool
- */
- public function isDayOfWeek($dayOfWeek)
- {
- if (\is_string($dayOfWeek) && \defined($constant = static::class.'::'.strtoupper($dayOfWeek))) {
- $dayOfWeek = \constant($constant);
- }
-
- return $this->dayOfWeek === $dayOfWeek;
- }
-
- /**
- * Check if its the birthday. Compares the date/month values of the two dates.
- *
- * @example
- * ```
- * Carbon::now()->subYears(5)->isBirthday(); // true
- * Carbon::now()->subYears(5)->subDay()->isBirthday(); // false
- * Carbon::parse('2019-06-05')->isBirthday(Carbon::parse('2001-06-05')); // true
- * Carbon::parse('2019-06-05')->isBirthday(Carbon::parse('2001-06-06')); // false
- * ```
- *
- * @param \Carbon\Carbon|\DateTimeInterface|null $date The instance to compare with or null to use current day.
- *
- * @return bool
- */
- public function isBirthday($date = null)
- {
- return $this->isSameAs('md', $date);
- }
-
- /**
- * Check if today is the last day of the Month
- *
- * @example
- * ```
- * Carbon::parse('2019-02-28')->isLastOfMonth(); // true
- * Carbon::parse('2019-03-28')->isLastOfMonth(); // false
- * Carbon::parse('2019-03-30')->isLastOfMonth(); // false
- * Carbon::parse('2019-03-31')->isLastOfMonth(); // true
- * Carbon::parse('2019-04-30')->isLastOfMonth(); // true
- * ```
- *
- * @return bool
- */
- public function isLastOfMonth()
- {
- return $this->day === $this->daysInMonth;
- }
-
- /**
- * Check if the instance is start of day / midnight.
- *
- * @example
- * ```
- * Carbon::parse('2019-02-28 00:00:00')->isStartOfDay(); // true
- * Carbon::parse('2019-02-28 00:00:00.999999')->isStartOfDay(); // true
- * Carbon::parse('2019-02-28 00:00:01')->isStartOfDay(); // false
- * Carbon::parse('2019-02-28 00:00:00.000000')->isStartOfDay(true); // true
- * Carbon::parse('2019-02-28 00:00:00.000012')->isStartOfDay(true); // false
- * ```
- *
- * @param bool $checkMicroseconds check time at microseconds precision
- *
- * @return bool
- */
- public function isStartOfDay($checkMicroseconds = false)
- {
- /* @var CarbonInterface $this */
- return $checkMicroseconds
- ? $this->rawFormat('H:i:s.u') === '00:00:00.000000'
- : $this->rawFormat('H:i:s') === '00:00:00';
- }
-
- /**
- * Check if the instance is end of day.
- *
- * @example
- * ```
- * Carbon::parse('2019-02-28 23:59:59.999999')->isEndOfDay(); // true
- * Carbon::parse('2019-02-28 23:59:59.123456')->isEndOfDay(); // true
- * Carbon::parse('2019-02-28 23:59:59')->isEndOfDay(); // true
- * Carbon::parse('2019-02-28 23:59:58.999999')->isEndOfDay(); // false
- * Carbon::parse('2019-02-28 23:59:59.999999')->isEndOfDay(true); // true
- * Carbon::parse('2019-02-28 23:59:59.123456')->isEndOfDay(true); // false
- * Carbon::parse('2019-02-28 23:59:59')->isEndOfDay(true); // false
- * ```
- *
- * @param bool $checkMicroseconds check time at microseconds precision
- *
- * @return bool
- */
- public function isEndOfDay($checkMicroseconds = false)
- {
- /* @var CarbonInterface $this */
- return $checkMicroseconds
- ? $this->rawFormat('H:i:s.u') === '23:59:59.999999'
- : $this->rawFormat('H:i:s') === '23:59:59';
- }
-
- /**
- * Check if the instance is start of day / midnight.
- *
- * @example
- * ```
- * Carbon::parse('2019-02-28 00:00:00')->isMidnight(); // true
- * Carbon::parse('2019-02-28 00:00:00.999999')->isMidnight(); // true
- * Carbon::parse('2019-02-28 00:00:01')->isMidnight(); // false
- * ```
- *
- * @return bool
- */
- public function isMidnight()
- {
- return $this->isStartOfDay();
- }
-
- /**
- * Check if the instance is midday.
- *
- * @example
- * ```
- * Carbon::parse('2019-02-28 11:59:59.999999')->isMidday(); // false
- * Carbon::parse('2019-02-28 12:00:00')->isMidday(); // true
- * Carbon::parse('2019-02-28 12:00:00.999999')->isMidday(); // true
- * Carbon::parse('2019-02-28 12:00:01')->isMidday(); // false
- * ```
- *
- * @return bool
- */
- public function isMidday()
- {
- /* @var CarbonInterface $this */
- return $this->rawFormat('G:i:s') === static::$midDayAt.':00:00';
- }
-
- /**
- * Checks if the (date)time string is in a given format.
- *
- * @example
- * ```
- * Carbon::hasFormat('11:12:45', 'h:i:s'); // true
- * Carbon::hasFormat('13:12:45', 'h:i:s'); // false
- * ```
- *
- * @param string $date
- * @param string $format
- *
- * @return bool
- */
- public static function hasFormat($date, $format)
- {
- // createFromFormat() is known to handle edge cases silently.
- // E.g. "1975-5-1" (Y-n-j) will still be parsed correctly when "Y-m-d" is supplied as the format.
- // To ensure we're really testing against our desired format, perform an additional regex validation.
-
- return self::matchFormatPattern((string) $date, preg_quote((string) $format, '/'), static::$regexFormats);
- }
-
- /**
- * Checks if the (date)time string is in a given format.
- *
- * @example
- * ```
- * Carbon::hasFormatWithModifiers('31/08/2015', 'd#m#Y'); // true
- * Carbon::hasFormatWithModifiers('31/08/2015', 'm#d#Y'); // false
- * ```
- *
- * @param string $date
- * @param string $format
- *
- * @return bool
- */
- public static function hasFormatWithModifiers($date, $format): bool
- {
- return self::matchFormatPattern((string) $date, (string) $format, array_merge(static::$regexFormats, static::$regexFormatModifiers));
- }
-
- /**
- * Checks if the (date)time string is in a given format and valid to create a
- * new instance.
- *
- * @example
- * ```
- * Carbon::canBeCreatedFromFormat('11:12:45', 'h:i:s'); // true
- * Carbon::canBeCreatedFromFormat('13:12:45', 'h:i:s'); // false
- * ```
- *
- * @param string $date
- * @param string $format
- *
- * @return bool
- */
- public static function canBeCreatedFromFormat($date, $format)
- {
- try {
- // Try to create a DateTime object. Throws an InvalidArgumentException if the provided time string
- // doesn't match the format in any way.
- if (!static::rawCreateFromFormat($format, $date)) {
- return false;
- }
- } catch (InvalidArgumentException $e) {
- return false;
- }
-
- return static::hasFormatWithModifiers($date, $format);
- }
-
- /**
- * Returns true if the current date matches the given string.
- *
- * @example
- * ```
- * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2019')); // true
- * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2018')); // false
- * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2019-06')); // true
- * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('06-02')); // true
- * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2019-06-02')); // true
- * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('Sunday')); // true
- * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('June')); // true
- * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12:23')); // true
- * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12:23:45')); // true
- * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12:23:00')); // false
- * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12h')); // true
- * var_dump(Carbon::parse('2019-06-02 15:23:45')->is('3pm')); // true
- * var_dump(Carbon::parse('2019-06-02 15:23:45')->is('3am')); // false
- * ```
- *
- * @param string $tester day name, month name, hour, date, etc. as string
- *
- * @return bool
- */
- public function is(string $tester)
- {
- $tester = trim($tester);
-
- if (preg_match('/^\d+$/', $tester)) {
- return $this->year === (int) $tester;
- }
-
- if (preg_match('/^\d{3,}-\d{1,2}$/', $tester)) {
- return $this->isSameMonth(static::parse($tester));
- }
-
- if (preg_match('/^\d{1,2}-\d{1,2}$/', $tester)) {
- return $this->isSameDay(static::parse($this->year.'-'.$tester));
- }
-
- $modifier = preg_replace('/(\d)h$/i', '$1:00', $tester);
-
- /* @var CarbonInterface $max */
- $median = static::parse('5555-06-15 12:30:30.555555')->modify($modifier);
- $current = $this->avoidMutation();
- /* @var CarbonInterface $other */
- $other = $this->avoidMutation()->modify($modifier);
-
- if ($current->eq($other)) {
- return true;
- }
-
- if (preg_match('/\d:\d{1,2}:\d{1,2}$/', $tester)) {
- return $current->startOfSecond()->eq($other);
- }
-
- if (preg_match('/\d:\d{1,2}$/', $tester)) {
- return $current->startOfMinute()->eq($other);
- }
-
- if (preg_match('/\d(h|am|pm)$/', $tester)) {
- return $current->startOfHour()->eq($other);
- }
-
- if (preg_match(
- '/^(january|february|march|april|may|june|july|august|september|october|november|december)\s+\d+$/i',
- $tester
- )) {
- return $current->startOfMonth()->eq($other->startOfMonth());
- }
-
- $units = [
- 'month' => [1, 'year'],
- 'day' => [1, 'month'],
- 'hour' => [0, 'day'],
- 'minute' => [0, 'hour'],
- 'second' => [0, 'minute'],
- 'microsecond' => [0, 'second'],
- ];
-
- foreach ($units as $unit => [$minimum, $startUnit]) {
- if ($minimum === $median->$unit) {
- $current = $current->startOf($startUnit);
-
- break;
- }
- }
-
- return $current->eq($other);
- }
-
- /**
- * Checks if the (date)time string is in a given format with
- * given list of pattern replacements.
- *
- * @example
- * ```
- * Carbon::hasFormat('11:12:45', 'h:i:s'); // true
- * Carbon::hasFormat('13:12:45', 'h:i:s'); // false
- * ```
- *
- * @param string $date
- * @param string $format
- * @param array $replacements
- *
- * @return bool
- */
- private static function matchFormatPattern(string $date, string $format, array $replacements): bool
- {
- // Preg quote, but remove escaped backslashes since we'll deal with escaped characters in the format string.
- $regex = str_replace('\\\\', '\\', $format);
- // Replace not-escaped letters
- $regex = preg_replace_callback(
- '/(?startOfTime ?? false;
- }
-
- /**
- * Returns true if the date was created using CarbonImmutable::endOfTime()
- *
- * @return bool
- */
- public function isEndOfTime(): bool
- {
- return $this->endOfTime ?? false;
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Converter.php b/vendor/nesbot/carbon/src/Carbon/Traits/Converter.php
deleted file mode 100644
index 8fe008a5..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Traits/Converter.php
+++ /dev/null
@@ -1,653 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Traits;
-
-use Carbon\Carbon;
-use Carbon\CarbonImmutable;
-use Carbon\CarbonInterface;
-use Carbon\CarbonInterval;
-use Carbon\CarbonPeriod;
-use Carbon\Exceptions\UnitException;
-use Closure;
-use DateTime;
-use DateTimeImmutable;
-use ReturnTypeWillChange;
-
-/**
- * Trait Converter.
- *
- * Change date into different string formats and types and
- * handle the string cast.
- *
- * Depends on the following methods:
- *
- * @method static copy()
- */
-trait Converter
-{
- /**
- * Format to use for __toString method when type juggling occurs.
- *
- * @var string|Closure|null
- */
- protected static $toStringFormat;
-
- /**
- * Reset the format used to the default when type juggling a Carbon instance to a string
- *
- * @return void
- */
- public static function resetToStringFormat()
- {
- static::setToStringFormat(null);
- }
-
- /**
- * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather let Carbon object being casted to string with DEFAULT_TO_STRING_FORMAT, and
- * use other method or custom format passed to format() method if you need to dump an other string
- * format.
- *
- * Set the default format used when type juggling a Carbon instance to a string
- *
- * @param string|Closure|null $format
- *
- * @return void
- */
- public static function setToStringFormat($format)
- {
- static::$toStringFormat = $format;
- }
-
- /**
- * Returns the formatted date string on success or FALSE on failure.
- *
- * @see https://php.net/manual/en/datetime.format.php
- *
- * @param string $format
- *
- * @return string
- */
- #[ReturnTypeWillChange]
- public function format($format)
- {
- $function = $this->localFormatFunction ?: static::$formatFunction;
-
- if (!$function) {
- return $this->rawFormat($format);
- }
-
- if (\is_string($function) && method_exists($this, $function)) {
- $function = [$this, $function];
- }
-
- return $function(...\func_get_args());
- }
-
- /**
- * @see https://php.net/manual/en/datetime.format.php
- *
- * @param string $format
- *
- * @return string
- */
- public function rawFormat($format)
- {
- return parent::format($format);
- }
-
- /**
- * Format the instance as a string using the set format
- *
- * @example
- * ```
- * echo Carbon::now(); // Carbon instances can be casted to string
- * ```
- *
- * @return string
- */
- public function __toString()
- {
- $format = $this->localToStringFormat ?? static::$toStringFormat;
-
- return $format instanceof Closure
- ? $format($this)
- : $this->rawFormat($format ?: (
- \defined('static::DEFAULT_TO_STRING_FORMAT')
- ? static::DEFAULT_TO_STRING_FORMAT
- : CarbonInterface::DEFAULT_TO_STRING_FORMAT
- ));
- }
-
- /**
- * Format the instance as date
- *
- * @example
- * ```
- * echo Carbon::now()->toDateString();
- * ```
- *
- * @return string
- */
- public function toDateString()
- {
- return $this->rawFormat('Y-m-d');
- }
-
- /**
- * Format the instance as a readable date
- *
- * @example
- * ```
- * echo Carbon::now()->toFormattedDateString();
- * ```
- *
- * @return string
- */
- public function toFormattedDateString()
- {
- return $this->rawFormat('M j, Y');
- }
-
- /**
- * Format the instance as time
- *
- * @example
- * ```
- * echo Carbon::now()->toTimeString();
- * ```
- *
- * @param string $unitPrecision
- *
- * @return string
- */
- public function toTimeString($unitPrecision = 'second')
- {
- return $this->rawFormat(static::getTimeFormatByPrecision($unitPrecision));
- }
-
- /**
- * Format the instance as date and time
- *
- * @example
- * ```
- * echo Carbon::now()->toDateTimeString();
- * ```
- *
- * @param string $unitPrecision
- *
- * @return string
- */
- public function toDateTimeString($unitPrecision = 'second')
- {
- return $this->rawFormat('Y-m-d '.static::getTimeFormatByPrecision($unitPrecision));
- }
-
- /**
- * Return a format from H:i to H:i:s.u according to given unit precision.
- *
- * @param string $unitPrecision "minute", "second", "millisecond" or "microsecond"
- *
- * @return string
- */
- public static function getTimeFormatByPrecision($unitPrecision)
- {
- switch (static::singularUnit($unitPrecision)) {
- case 'minute':
- return 'H:i';
- case 'second':
- return 'H:i:s';
- case 'm':
- case 'millisecond':
- return 'H:i:s.v';
- case 'µ':
- case 'microsecond':
- return 'H:i:s.u';
- }
-
- throw new UnitException('Precision unit expected among: minute, second, millisecond and microsecond.');
- }
-
- /**
- * Format the instance as date and time T-separated with no timezone
- *
- * @example
- * ```
- * echo Carbon::now()->toDateTimeLocalString();
- * echo "\n";
- * echo Carbon::now()->toDateTimeLocalString('minute'); // You can specify precision among: minute, second, millisecond and microsecond
- * ```
- *
- * @param string $unitPrecision
- *
- * @return string
- */
- public function toDateTimeLocalString($unitPrecision = 'second')
- {
- return $this->rawFormat('Y-m-d\T'.static::getTimeFormatByPrecision($unitPrecision));
- }
-
- /**
- * Format the instance with day, date and time
- *
- * @example
- * ```
- * echo Carbon::now()->toDayDateTimeString();
- * ```
- *
- * @return string
- */
- public function toDayDateTimeString()
- {
- return $this->rawFormat('D, M j, Y g:i A');
- }
-
- /**
- * Format the instance as ATOM
- *
- * @example
- * ```
- * echo Carbon::now()->toAtomString();
- * ```
- *
- * @return string
- */
- public function toAtomString()
- {
- return $this->rawFormat(DateTime::ATOM);
- }
-
- /**
- * Format the instance as COOKIE
- *
- * @example
- * ```
- * echo Carbon::now()->toCookieString();
- * ```
- *
- * @return string
- */
- public function toCookieString()
- {
- return $this->rawFormat(DateTime::COOKIE);
- }
-
- /**
- * Format the instance as ISO8601
- *
- * @example
- * ```
- * echo Carbon::now()->toIso8601String();
- * ```
- *
- * @return string
- */
- public function toIso8601String()
- {
- return $this->toAtomString();
- }
-
- /**
- * Format the instance as RFC822
- *
- * @example
- * ```
- * echo Carbon::now()->toRfc822String();
- * ```
- *
- * @return string
- */
- public function toRfc822String()
- {
- return $this->rawFormat(DateTime::RFC822);
- }
-
- /**
- * Convert the instance to UTC and return as Zulu ISO8601
- *
- * @example
- * ```
- * echo Carbon::now()->toIso8601ZuluString();
- * ```
- *
- * @param string $unitPrecision
- *
- * @return string
- */
- public function toIso8601ZuluString($unitPrecision = 'second')
- {
- return $this->avoidMutation()
- ->utc()
- ->rawFormat('Y-m-d\T'.static::getTimeFormatByPrecision($unitPrecision).'\Z');
- }
-
- /**
- * Format the instance as RFC850
- *
- * @example
- * ```
- * echo Carbon::now()->toRfc850String();
- * ```
- *
- * @return string
- */
- public function toRfc850String()
- {
- return $this->rawFormat(DateTime::RFC850);
- }
-
- /**
- * Format the instance as RFC1036
- *
- * @example
- * ```
- * echo Carbon::now()->toRfc1036String();
- * ```
- *
- * @return string
- */
- public function toRfc1036String()
- {
- return $this->rawFormat(DateTime::RFC1036);
- }
-
- /**
- * Format the instance as RFC1123
- *
- * @example
- * ```
- * echo Carbon::now()->toRfc1123String();
- * ```
- *
- * @return string
- */
- public function toRfc1123String()
- {
- return $this->rawFormat(DateTime::RFC1123);
- }
-
- /**
- * Format the instance as RFC2822
- *
- * @example
- * ```
- * echo Carbon::now()->toRfc2822String();
- * ```
- *
- * @return string
- */
- public function toRfc2822String()
- {
- return $this->rawFormat(DateTime::RFC2822);
- }
-
- /**
- * Format the instance as RFC3339
- *
- * @param bool $extended
- *
- * @example
- * ```
- * echo Carbon::now()->toRfc3339String() . "\n";
- * echo Carbon::now()->toRfc3339String(true) . "\n";
- * ```
- *
- * @return string
- */
- public function toRfc3339String($extended = false)
- {
- $format = DateTime::RFC3339;
- if ($extended) {
- $format = DateTime::RFC3339_EXTENDED;
- }
-
- return $this->rawFormat($format);
- }
-
- /**
- * Format the instance as RSS
- *
- * @example
- * ```
- * echo Carbon::now()->toRssString();
- * ```
- *
- * @return string
- */
- public function toRssString()
- {
- return $this->rawFormat(DateTime::RSS);
- }
-
- /**
- * Format the instance as W3C
- *
- * @example
- * ```
- * echo Carbon::now()->toW3cString();
- * ```
- *
- * @return string
- */
- public function toW3cString()
- {
- return $this->rawFormat(DateTime::W3C);
- }
-
- /**
- * Format the instance as RFC7231
- *
- * @example
- * ```
- * echo Carbon::now()->toRfc7231String();
- * ```
- *
- * @return string
- */
- public function toRfc7231String()
- {
- return $this->avoidMutation()
- ->setTimezone('GMT')
- ->rawFormat(\defined('static::RFC7231_FORMAT') ? static::RFC7231_FORMAT : CarbonInterface::RFC7231_FORMAT);
- }
-
- /**
- * Get default array representation.
- *
- * @example
- * ```
- * var_dump(Carbon::now()->toArray());
- * ```
- *
- * @return array
- */
- public function toArray()
- {
- return [
- 'year' => $this->year,
- 'month' => $this->month,
- 'day' => $this->day,
- 'dayOfWeek' => $this->dayOfWeek,
- 'dayOfYear' => $this->dayOfYear,
- 'hour' => $this->hour,
- 'minute' => $this->minute,
- 'second' => $this->second,
- 'micro' => $this->micro,
- 'timestamp' => $this->timestamp,
- 'formatted' => $this->rawFormat(\defined('static::DEFAULT_TO_STRING_FORMAT') ? static::DEFAULT_TO_STRING_FORMAT : CarbonInterface::DEFAULT_TO_STRING_FORMAT),
- 'timezone' => $this->timezone,
- ];
- }
-
- /**
- * Get default object representation.
- *
- * @example
- * ```
- * var_dump(Carbon::now()->toObject());
- * ```
- *
- * @return object
- */
- public function toObject()
- {
- return (object) $this->toArray();
- }
-
- /**
- * Returns english human readable complete date string.
- *
- * @example
- * ```
- * echo Carbon::now()->toString();
- * ```
- *
- * @return string
- */
- public function toString()
- {
- return $this->avoidMutation()->locale('en')->isoFormat('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
- }
-
- /**
- * Return the ISO-8601 string (ex: 1977-04-22T06:00:00Z, if $keepOffset truthy, offset will be kept:
- * 1977-04-22T01:00:00-05:00).
- *
- * @example
- * ```
- * echo Carbon::now('America/Toronto')->toISOString() . "\n";
- * echo Carbon::now('America/Toronto')->toISOString(true) . "\n";
- * ```
- *
- * @param bool $keepOffset Pass true to keep the date offset. Else forced to UTC.
- *
- * @return null|string
- */
- public function toISOString($keepOffset = false)
- {
- if (!$this->isValid()) {
- return null;
- }
-
- $yearFormat = $this->year < 0 || $this->year > 9999 ? 'YYYYYY' : 'YYYY';
- $tzFormat = $keepOffset ? 'Z' : '[Z]';
- $date = $keepOffset ? $this : $this->avoidMutation()->utc();
-
- return $date->isoFormat("$yearFormat-MM-DD[T]HH:mm:ss.SSSSSS$tzFormat");
- }
-
- /**
- * Return the ISO-8601 string (ex: 1977-04-22T06:00:00Z) with UTC timezone.
- *
- * @example
- * ```
- * echo Carbon::now('America/Toronto')->toJSON();
- * ```
- *
- * @return null|string
- */
- public function toJSON()
- {
- return $this->toISOString();
- }
-
- /**
- * Return native DateTime PHP object matching the current instance.
- *
- * @example
- * ```
- * var_dump(Carbon::now()->toDateTime());
- * ```
- *
- * @return DateTime
- */
- public function toDateTime()
- {
- return new DateTime($this->rawFormat('Y-m-d H:i:s.u'), $this->getTimezone());
- }
-
- /**
- * Return native toDateTimeImmutable PHP object matching the current instance.
- *
- * @example
- * ```
- * var_dump(Carbon::now()->toDateTimeImmutable());
- * ```
- *
- * @return DateTimeImmutable
- */
- public function toDateTimeImmutable()
- {
- return new DateTimeImmutable($this->rawFormat('Y-m-d H:i:s.u'), $this->getTimezone());
- }
-
- /**
- * @alias toDateTime
- *
- * Return native DateTime PHP object matching the current instance.
- *
- * @example
- * ```
- * var_dump(Carbon::now()->toDate());
- * ```
- *
- * @return DateTime
- */
- public function toDate()
- {
- return $this->toDateTime();
- }
-
- /**
- * Create a iterable CarbonPeriod object from current date to a given end date (and optional interval).
- *
- * @param \DateTimeInterface|Carbon|CarbonImmutable|int|null $end period end date or recurrences count if int
- * @param int|\DateInterval|string|null $interval period default interval or number of the given $unit
- * @param string|null $unit if specified, $interval must be an integer
- *
- * @return CarbonPeriod
- */
- public function toPeriod($end = null, $interval = null, $unit = null)
- {
- if ($unit) {
- $interval = CarbonInterval::make("$interval ".static::pluralUnit($unit));
- }
-
- $period = (new CarbonPeriod())->setDateClass(static::class)->setStartDate($this);
-
- if ($interval) {
- $period->setDateInterval($interval);
- }
-
- if (\is_int($end) || \is_string($end) && ctype_digit($end)) {
- $period->setRecurrences($end);
- } elseif ($end) {
- $period->setEndDate($end);
- }
-
- return $period;
- }
-
- /**
- * Create a iterable CarbonPeriod object from current date to a given end date (and optional interval).
- *
- * @param \DateTimeInterface|Carbon|CarbonImmutable|null $end period end date
- * @param int|\DateInterval|string|null $interval period default interval or number of the given $unit
- * @param string|null $unit if specified, $interval must be an integer
- *
- * @return CarbonPeriod
- */
- public function range($end = null, $interval = null, $unit = null)
- {
- return $this->toPeriod($end, $interval, $unit);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Creator.php b/vendor/nesbot/carbon/src/Carbon/Traits/Creator.php
deleted file mode 100644
index f90195a0..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Traits/Creator.php
+++ /dev/null
@@ -1,943 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Traits;
-
-use Carbon\Carbon;
-use Carbon\CarbonImmutable;
-use Carbon\CarbonInterface;
-use Carbon\Exceptions\InvalidDateException;
-use Carbon\Exceptions\InvalidFormatException;
-use Carbon\Exceptions\OutOfRangeException;
-use Carbon\Translator;
-use Closure;
-use DateTimeInterface;
-use DateTimeZone;
-use Exception;
-use ReturnTypeWillChange;
-
-/**
- * Trait Creator.
- *
- * Static creators.
- *
- * Depends on the following methods:
- *
- * @method static Carbon|CarbonImmutable getTestNow()
- */
-trait Creator
-{
- use ObjectInitialisation;
-
- /**
- * The errors that can occur.
- *
- * @var array
- */
- protected static $lastErrors;
-
- /**
- * Create a new Carbon instance.
- *
- * Please see the testing aids section (specifically static::setTestNow())
- * for more on the possibility of this constructor returning a test instance.
- *
- * @param DateTimeInterface|string|null $time
- * @param DateTimeZone|string|null $tz
- *
- * @throws InvalidFormatException
- */
- public function __construct($time = null, $tz = null)
- {
- if ($time instanceof DateTimeInterface) {
- $time = $this->constructTimezoneFromDateTime($time, $tz)->format('Y-m-d H:i:s.u');
- }
-
- if (is_numeric($time) && (!\is_string($time) || !preg_match('/^\d{1,14}$/', $time))) {
- $time = static::createFromTimestampUTC($time)->format('Y-m-d\TH:i:s.uP');
- }
-
- // If the class has a test now set and we are trying to create a now()
- // instance then override as required
- $isNow = empty($time) || $time === 'now';
-
- if (method_exists(static::class, 'hasTestNow') &&
- method_exists(static::class, 'getTestNow') &&
- static::hasTestNow() &&
- ($isNow || static::hasRelativeKeywords($time))
- ) {
- static::mockConstructorParameters($time, $tz);
- }
-
- // Work-around for PHP bug https://bugs.php.net/bug.php?id=67127
- if (!str_contains((string) .1, '.')) {
- $locale = setlocale(LC_NUMERIC, '0');
- setlocale(LC_NUMERIC, 'C');
- }
-
- try {
- parent::__construct($time ?: 'now', static::safeCreateDateTimeZone($tz) ?: null);
- } catch (Exception $exception) {
- throw new InvalidFormatException($exception->getMessage(), 0, $exception);
- }
-
- $this->constructedObjectId = spl_object_hash($this);
-
- if (isset($locale)) {
- setlocale(LC_NUMERIC, $locale);
- }
-
- static::setLastErrors(parent::getLastErrors());
- }
-
- /**
- * Get timezone from a datetime instance.
- *
- * @param DateTimeInterface $date
- * @param DateTimeZone|string|null $tz
- *
- * @return DateTimeInterface
- */
- private function constructTimezoneFromDateTime(DateTimeInterface $date, &$tz)
- {
- if ($tz !== null) {
- $safeTz = static::safeCreateDateTimeZone($tz);
-
- if ($safeTz) {
- return $date->setTimezone($safeTz);
- }
-
- return $date;
- }
-
- $tz = $date->getTimezone();
-
- return $date;
- }
-
- /**
- * Update constructedObjectId on cloned.
- */
- public function __clone()
- {
- $this->constructedObjectId = spl_object_hash($this);
- }
-
- /**
- * Create a Carbon instance from a DateTime one.
- *
- * @param DateTimeInterface $date
- *
- * @return static
- */
- public static function instance($date)
- {
- if ($date instanceof static) {
- return clone $date;
- }
-
- static::expectDateTime($date);
-
- $instance = new static($date->format('Y-m-d H:i:s.u'), $date->getTimezone());
-
- if ($date instanceof CarbonInterface || $date instanceof Options) {
- $settings = $date->getSettings();
-
- if (!$date->hasLocalTranslator()) {
- unset($settings['locale']);
- }
-
- $instance->settings($settings);
- }
-
- return $instance;
- }
-
- /**
- * Create a carbon instance from a string.
- *
- * This is an alias for the constructor that allows better fluent syntax
- * as it allows you to do Carbon::parse('Monday next week')->fn() rather
- * than (new Carbon('Monday next week'))->fn().
- *
- * @param string|DateTimeInterface|null $time
- * @param DateTimeZone|string|null $tz
- *
- * @throws InvalidFormatException
- *
- * @return static
- */
- public static function rawParse($time = null, $tz = null)
- {
- if ($time instanceof DateTimeInterface) {
- return static::instance($time);
- }
-
- try {
- return new static($time, $tz);
- } catch (Exception $exception) {
- $date = @static::now($tz)->change($time);
-
- if (!$date) {
- throw new InvalidFormatException("Could not parse '$time': ".$exception->getMessage(), 0, $exception);
- }
-
- return $date;
- }
- }
-
- /**
- * Create a carbon instance from a string.
- *
- * This is an alias for the constructor that allows better fluent syntax
- * as it allows you to do Carbon::parse('Monday next week')->fn() rather
- * than (new Carbon('Monday next week'))->fn().
- *
- * @param string|DateTimeInterface|null $time
- * @param DateTimeZone|string|null $tz
- *
- * @throws InvalidFormatException
- *
- * @return static
- */
- public static function parse($time = null, $tz = null)
- {
- $function = static::$parseFunction;
-
- if (!$function) {
- return static::rawParse($time, $tz);
- }
-
- if (\is_string($function) && method_exists(static::class, $function)) {
- $function = [static::class, $function];
- }
-
- return $function(...\func_get_args());
- }
-
- /**
- * Create a carbon instance from a localized string (in French, Japanese, Arabic, etc.).
- *
- * @param string $time date/time string in the given language (may also contain English).
- * @param string|null $locale if locale is null or not specified, current global locale will be
- * used instead.
- * @param DateTimeZone|string|null $tz optional timezone for the new instance.
- *
- * @throws InvalidFormatException
- *
- * @return static
- */
- public static function parseFromLocale($time, $locale = null, $tz = null)
- {
- return static::rawParse(static::translateTimeString($time, $locale, 'en'), $tz);
- }
-
- /**
- * Get a Carbon instance for the current date and time.
- *
- * @param DateTimeZone|string|null $tz
- *
- * @return static
- */
- public static function now($tz = null)
- {
- return new static(null, $tz);
- }
-
- /**
- * Create a Carbon instance for today.
- *
- * @param DateTimeZone|string|null $tz
- *
- * @return static
- */
- public static function today($tz = null)
- {
- return static::rawParse('today', $tz);
- }
-
- /**
- * Create a Carbon instance for tomorrow.
- *
- * @param DateTimeZone|string|null $tz
- *
- * @return static
- */
- public static function tomorrow($tz = null)
- {
- return static::rawParse('tomorrow', $tz);
- }
-
- /**
- * Create a Carbon instance for yesterday.
- *
- * @param DateTimeZone|string|null $tz
- *
- * @return static
- */
- public static function yesterday($tz = null)
- {
- return static::rawParse('yesterday', $tz);
- }
-
- /**
- * Create a Carbon instance for the greatest supported date.
- *
- * @return static
- */
- public static function maxValue()
- {
- if (self::$PHPIntSize === 4) {
- // 32 bit
- return static::createFromTimestamp(PHP_INT_MAX); // @codeCoverageIgnore
- }
-
- // 64 bit
- return static::create(9999, 12, 31, 23, 59, 59);
- }
-
- /**
- * Create a Carbon instance for the lowest supported date.
- *
- * @return static
- */
- public static function minValue()
- {
- if (self::$PHPIntSize === 4) {
- // 32 bit
- return static::createFromTimestamp(~PHP_INT_MAX); // @codeCoverageIgnore
- }
-
- // 64 bit
- return static::create(1, 1, 1, 0, 0, 0);
- }
-
- private static function assertBetween($unit, $value, $min, $max)
- {
- if (static::isStrictModeEnabled() && ($value < $min || $value > $max)) {
- throw new OutOfRangeException($unit, $min, $max, $value);
- }
- }
-
- private static function createNowInstance($tz)
- {
- if (!static::hasTestNow()) {
- return static::now($tz);
- }
-
- $now = static::getTestNow();
-
- if ($now instanceof Closure) {
- return $now(static::now($tz));
- }
-
- return $now->avoidMutation()->tz($tz);
- }
-
- /**
- * Create a new Carbon instance from a specific date and time.
- *
- * If any of $year, $month or $day are set to null their now() values will
- * be used.
- *
- * If $hour is null it will be set to its now() value and the default
- * values for $minute and $second will be their now() values.
- *
- * If $hour is not null then the default values for $minute and $second
- * will be 0.
- *
- * @param int|null $year
- * @param int|null $month
- * @param int|null $day
- * @param int|null $hour
- * @param int|null $minute
- * @param int|null $second
- * @param DateTimeZone|string|null $tz
- *
- * @throws InvalidFormatException
- *
- * @return static|false
- */
- public static function create($year = 0, $month = 1, $day = 1, $hour = 0, $minute = 0, $second = 0, $tz = null)
- {
- if (\is_string($year) && !is_numeric($year) || $year instanceof DateTimeInterface) {
- return static::parse($year, $tz ?: (\is_string($month) || $month instanceof DateTimeZone ? $month : null));
- }
-
- $defaults = null;
- $getDefault = function ($unit) use ($tz, &$defaults) {
- if ($defaults === null) {
- $now = self::createNowInstance($tz);
-
- $defaults = array_combine([
- 'year',
- 'month',
- 'day',
- 'hour',
- 'minute',
- 'second',
- ], explode('-', $now->rawFormat('Y-n-j-G-i-s.u')));
- }
-
- return $defaults[$unit];
- };
-
- $year = $year ?? $getDefault('year');
- $month = $month ?? $getDefault('month');
- $day = $day ?? $getDefault('day');
- $hour = $hour ?? $getDefault('hour');
- $minute = $minute ?? $getDefault('minute');
- $second = (float) ($second ?? $getDefault('second'));
-
- self::assertBetween('month', $month, 0, 99);
- self::assertBetween('day', $day, 0, 99);
- self::assertBetween('hour', $hour, 0, 99);
- self::assertBetween('minute', $minute, 0, 99);
- self::assertBetween('second', $second, 0, 99);
-
- $fixYear = null;
-
- if ($year < 0) {
- $fixYear = $year;
- $year = 0;
- } elseif ($year > 9999) {
- $fixYear = $year - 9999;
- $year = 9999;
- }
-
- $second = ($second < 10 ? '0' : '').number_format($second, 6);
- $instance = static::rawCreateFromFormat('!Y-n-j G:i:s.u', sprintf('%s-%s-%s %s:%02s:%02s', $year, $month, $day, $hour, $minute, $second), $tz);
-
- if ($fixYear !== null) {
- $instance = $instance->addYears($fixYear);
- }
-
- return $instance;
- }
-
- /**
- * Create a new safe Carbon instance from a specific date and time.
- *
- * If any of $year, $month or $day are set to null their now() values will
- * be used.
- *
- * If $hour is null it will be set to its now() value and the default
- * values for $minute and $second will be their now() values.
- *
- * If $hour is not null then the default values for $minute and $second
- * will be 0.
- *
- * If one of the set values is not valid, an InvalidDateException
- * will be thrown.
- *
- * @param int|null $year
- * @param int|null $month
- * @param int|null $day
- * @param int|null $hour
- * @param int|null $minute
- * @param int|null $second
- * @param DateTimeZone|string|null $tz
- *
- * @throws InvalidDateException
- *
- * @return static|false
- */
- public static function createSafe($year = null, $month = null, $day = null, $hour = null, $minute = null, $second = null, $tz = null)
- {
- $fields = static::getRangesByUnit();
-
- foreach ($fields as $field => $range) {
- if ($$field !== null && (!\is_int($$field) || $$field < $range[0] || $$field > $range[1])) {
- if (static::isStrictModeEnabled()) {
- throw new InvalidDateException($field, $$field);
- }
-
- return false;
- }
- }
-
- $instance = static::create($year, $month, $day, $hour, $minute, $second, $tz);
-
- foreach (array_reverse($fields) as $field => $range) {
- if ($$field !== null && (!\is_int($$field) || $$field !== $instance->$field)) {
- if (static::isStrictModeEnabled()) {
- throw new InvalidDateException($field, $$field);
- }
-
- return false;
- }
- }
-
- return $instance;
- }
-
- /**
- * Create a new Carbon instance from a specific date and time using strict validation.
- *
- * @see create()
- *
- * @param int|null $year
- * @param int|null $month
- * @param int|null $day
- * @param int|null $hour
- * @param int|null $minute
- * @param int|null $second
- * @param DateTimeZone|string|null $tz
- *
- * @throws InvalidFormatException
- *
- * @return static
- */
- public static function createStrict(?int $year = 0, ?int $month = 1, ?int $day = 1, ?int $hour = 0, ?int $minute = 0, ?int $second = 0, $tz = null): self
- {
- $initialStrictMode = static::isStrictModeEnabled();
- static::useStrictMode(true);
-
- try {
- $date = static::create($year, $month, $day, $hour, $minute, $second, $tz);
- } finally {
- static::useStrictMode($initialStrictMode);
- }
-
- return $date;
- }
-
- /**
- * Create a Carbon instance from just a date. The time portion is set to now.
- *
- * @param int|null $year
- * @param int|null $month
- * @param int|null $day
- * @param DateTimeZone|string|null $tz
- *
- * @throws InvalidFormatException
- *
- * @return static
- */
- public static function createFromDate($year = null, $month = null, $day = null, $tz = null)
- {
- return static::create($year, $month, $day, null, null, null, $tz);
- }
-
- /**
- * Create a Carbon instance from just a date. The time portion is set to midnight.
- *
- * @param int|null $year
- * @param int|null $month
- * @param int|null $day
- * @param DateTimeZone|string|null $tz
- *
- * @throws InvalidFormatException
- *
- * @return static
- */
- public static function createMidnightDate($year = null, $month = null, $day = null, $tz = null)
- {
- return static::create($year, $month, $day, 0, 0, 0, $tz);
- }
-
- /**
- * Create a Carbon instance from just a time. The date portion is set to today.
- *
- * @param int|null $hour
- * @param int|null $minute
- * @param int|null $second
- * @param DateTimeZone|string|null $tz
- *
- * @throws InvalidFormatException
- *
- * @return static
- */
- public static function createFromTime($hour = 0, $minute = 0, $second = 0, $tz = null)
- {
- return static::create(null, null, null, $hour, $minute, $second, $tz);
- }
-
- /**
- * Create a Carbon instance from a time string. The date portion is set to today.
- *
- * @param string $time
- * @param DateTimeZone|string|null $tz
- *
- * @throws InvalidFormatException
- *
- * @return static
- */
- public static function createFromTimeString($time, $tz = null)
- {
- return static::today($tz)->setTimeFromTimeString($time);
- }
-
- /**
- * @param string $format Datetime format
- * @param string $time
- * @param DateTimeZone|string|false|null $originalTz
- *
- * @return DateTimeInterface|false
- */
- private static function createFromFormatAndTimezone($format, $time, $originalTz)
- {
- // Work-around for https://bugs.php.net/bug.php?id=75577
- // @codeCoverageIgnoreStart
- if (version_compare(PHP_VERSION, '7.3.0-dev', '<')) {
- $format = str_replace('.v', '.u', $format);
- }
- // @codeCoverageIgnoreEnd
-
- if ($originalTz === null) {
- return parent::createFromFormat($format, (string) $time);
- }
-
- $tz = \is_int($originalTz)
- ? @timezone_name_from_abbr('', (int) ($originalTz * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE), 1)
- : $originalTz;
-
- $tz = static::safeCreateDateTimeZone($tz, $originalTz);
-
- if ($tz === false) {
- return false;
- }
-
- return parent::createFromFormat($format, (string) $time, $tz);
- }
-
- /**
- * Create a Carbon instance from a specific format.
- *
- * @param string $format Datetime format
- * @param string $time
- * @param DateTimeZone|string|false|null $tz
- *
- * @throws InvalidFormatException
- *
- * @return static|false
- */
- public static function rawCreateFromFormat($format, $time, $tz = null)
- {
- // Work-around for https://bugs.php.net/bug.php?id=80141
- $format = preg_replace('/(?getTimezone();
- }
-
- // Set microseconds to zero to match behavior of DateTime::createFromFormat()
- // See https://bugs.php.net/bug.php?id=74332
- $mock = $mock->copy()->microsecond(0);
-
- // Prepend mock datetime only if the format does not contain non escaped unix epoch reset flag.
- if (!preg_match("/{$nonEscaped}[!|]/", $format)) {
- $format = static::MOCK_DATETIME_FORMAT.' '.$format;
- $time = ($mock instanceof self ? $mock->rawFormat(static::MOCK_DATETIME_FORMAT) : $mock->format(static::MOCK_DATETIME_FORMAT)).' '.$time;
- }
-
- // Regenerate date from the modified format to base result on the mocked instance instead of now.
- $date = self::createFromFormatAndTimezone($format, $time, $tz);
- }
-
- if ($date instanceof DateTimeInterface) {
- $instance = static::instance($date);
- $instance::setLastErrors($lastErrors);
-
- return $instance;
- }
-
- if (static::isStrictModeEnabled()) {
- throw new InvalidFormatException(implode(PHP_EOL, $lastErrors['errors']));
- }
-
- return false;
- }
-
- /**
- * Create a Carbon instance from a specific format.
- *
- * @param string $format Datetime format
- * @param string $time
- * @param DateTimeZone|string|false|null $tz
- *
- * @throws InvalidFormatException
- *
- * @return static|false
- */
- #[ReturnTypeWillChange]
- public static function createFromFormat($format, $time, $tz = null)
- {
- $function = static::$createFromFormatFunction;
-
- if (!$function) {
- return static::rawCreateFromFormat($format, $time, $tz);
- }
-
- if (\is_string($function) && method_exists(static::class, $function)) {
- $function = [static::class, $function];
- }
-
- return $function(...\func_get_args());
- }
-
- /**
- * Create a Carbon instance from a specific ISO format (same replacements as ->isoFormat()).
- *
- * @param string $format Datetime format
- * @param string $time
- * @param DateTimeZone|string|false|null $tz optional timezone
- * @param string|null $locale locale to be used for LTS, LT, LL, LLL, etc. macro-formats (en by fault, unneeded if no such macro-format in use)
- * @param \Symfony\Component\Translation\TranslatorInterface $translator optional custom translator to use for macro-formats
- *
- * @throws InvalidFormatException
- *
- * @return static|false
- */
- public static function createFromIsoFormat($format, $time, $tz = null, $locale = 'en', $translator = null)
- {
- $format = preg_replace_callback('/(? static::getTranslationMessageWith($translator, 'formats.LT', $locale, 'h:mm A'),
- 'LTS' => static::getTranslationMessageWith($translator, 'formats.LTS', $locale, 'h:mm:ss A'),
- 'L' => static::getTranslationMessageWith($translator, 'formats.L', $locale, 'MM/DD/YYYY'),
- 'LL' => static::getTranslationMessageWith($translator, 'formats.LL', $locale, 'MMMM D, YYYY'),
- 'LLL' => static::getTranslationMessageWith($translator, 'formats.LLL', $locale, 'MMMM D, YYYY h:mm A'),
- 'LLLL' => static::getTranslationMessageWith($translator, 'formats.LLLL', $locale, 'dddd, MMMM D, YYYY h:mm A'),
- ];
- }
-
- return $formats[$code] ?? preg_replace_callback(
- '/MMMM|MM|DD|dddd/',
- function ($code) {
- return mb_substr($code[0], 1);
- },
- $formats[strtoupper($code)] ?? ''
- );
- }, $format);
-
- $format = preg_replace_callback('/(? 'd',
- 'OM' => 'M',
- 'OY' => 'Y',
- 'OH' => 'G',
- 'Oh' => 'g',
- 'Om' => 'i',
- 'Os' => 's',
- 'D' => 'd',
- 'DD' => 'd',
- 'Do' => 'd',
- 'd' => '!',
- 'dd' => '!',
- 'ddd' => 'D',
- 'dddd' => 'D',
- 'DDD' => 'z',
- 'DDDD' => 'z',
- 'DDDo' => 'z',
- 'e' => '!',
- 'E' => '!',
- 'H' => 'G',
- 'HH' => 'H',
- 'h' => 'g',
- 'hh' => 'h',
- 'k' => 'G',
- 'kk' => 'G',
- 'hmm' => 'gi',
- 'hmmss' => 'gis',
- 'Hmm' => 'Gi',
- 'Hmmss' => 'Gis',
- 'm' => 'i',
- 'mm' => 'i',
- 'a' => 'a',
- 'A' => 'a',
- 's' => 's',
- 'ss' => 's',
- 'S' => '*',
- 'SS' => '*',
- 'SSS' => '*',
- 'SSSS' => '*',
- 'SSSSS' => '*',
- 'SSSSSS' => 'u',
- 'SSSSSSS' => 'u*',
- 'SSSSSSSS' => 'u*',
- 'SSSSSSSSS' => 'u*',
- 'M' => 'm',
- 'MM' => 'm',
- 'MMM' => 'M',
- 'MMMM' => 'M',
- 'Mo' => 'm',
- 'Q' => '!',
- 'Qo' => '!',
- 'G' => '!',
- 'GG' => '!',
- 'GGG' => '!',
- 'GGGG' => '!',
- 'GGGGG' => '!',
- 'g' => '!',
- 'gg' => '!',
- 'ggg' => '!',
- 'gggg' => '!',
- 'ggggg' => '!',
- 'W' => '!',
- 'WW' => '!',
- 'Wo' => '!',
- 'w' => '!',
- 'ww' => '!',
- 'wo' => '!',
- 'x' => 'U???',
- 'X' => 'U',
- 'Y' => 'Y',
- 'YY' => 'y',
- 'YYYY' => 'Y',
- 'YYYYY' => 'Y',
- 'YYYYYY' => 'Y',
- 'z' => 'e',
- 'zz' => 'e',
- 'Z' => 'e',
- 'ZZ' => 'e',
- ];
- }
-
- $format = $replacements[$code] ?? '?';
-
- if ($format === '!') {
- throw new InvalidFormatException("Format $code not supported for creation.");
- }
-
- return $format;
- }, $format);
-
- return static::rawCreateFromFormat($format, $time, $tz);
- }
-
- /**
- * Create a Carbon instance from a specific format and a string in a given language.
- *
- * @param string $format Datetime format
- * @param string $locale
- * @param string $time
- * @param DateTimeZone|string|false|null $tz
- *
- * @throws InvalidFormatException
- *
- * @return static|false
- */
- public static function createFromLocaleFormat($format, $locale, $time, $tz = null)
- {
- return static::rawCreateFromFormat($format, static::translateTimeString($time, $locale, 'en'), $tz);
- }
-
- /**
- * Create a Carbon instance from a specific ISO format and a string in a given language.
- *
- * @param string $format Datetime ISO format
- * @param string $locale
- * @param string $time
- * @param DateTimeZone|string|false|null $tz
- *
- * @throws InvalidFormatException
- *
- * @return static|false
- */
- public static function createFromLocaleIsoFormat($format, $locale, $time, $tz = null)
- {
- $time = static::translateTimeString($time, $locale, 'en', CarbonInterface::TRANSLATE_MONTHS | CarbonInterface::TRANSLATE_DAYS | CarbonInterface::TRANSLATE_MERIDIEM);
-
- return static::createFromIsoFormat($format, $time, $tz, $locale);
- }
-
- /**
- * Make a Carbon instance from given variable if possible.
- *
- * Always return a new instance. Parse only strings and only these likely to be dates (skip intervals
- * and recurrences). Throw an exception for invalid format, but otherwise return null.
- *
- * @param mixed $var
- *
- * @throws InvalidFormatException
- *
- * @return static|null
- */
- public static function make($var)
- {
- if ($var instanceof DateTimeInterface) {
- return static::instance($var);
- }
-
- $date = null;
-
- if (\is_string($var)) {
- $var = trim($var);
-
- if (!preg_match('/^P[0-9T]/', $var) &&
- !preg_match('/^R[0-9]/', $var) &&
- preg_match('/[a-z0-9]/i', $var)
- ) {
- $date = static::parse($var);
- }
- }
-
- return $date;
- }
-
- /**
- * Set last errors.
- *
- * @param array $lastErrors
- *
- * @return void
- */
- private static function setLastErrors(array $lastErrors)
- {
- static::$lastErrors = $lastErrors;
- }
-
- /**
- * {@inheritdoc}
- *
- * @return array
- */
- #[ReturnTypeWillChange]
- public static function getLastErrors()
- {
- return static::$lastErrors;
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Date.php b/vendor/nesbot/carbon/src/Carbon/Traits/Date.php
deleted file mode 100644
index fc180fe4..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Traits/Date.php
+++ /dev/null
@@ -1,2670 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Traits;
-
-use BadMethodCallException;
-use Carbon\Carbon;
-use Carbon\CarbonInterface;
-use Carbon\CarbonPeriod;
-use Carbon\CarbonTimeZone;
-use Carbon\Exceptions\BadComparisonUnitException;
-use Carbon\Exceptions\ImmutableException;
-use Carbon\Exceptions\InvalidTimeZoneException;
-use Carbon\Exceptions\InvalidTypeException;
-use Carbon\Exceptions\UnknownGetterException;
-use Carbon\Exceptions\UnknownMethodException;
-use Carbon\Exceptions\UnknownSetterException;
-use Carbon\Exceptions\UnknownUnitException;
-use Closure;
-use DateInterval;
-use DatePeriod;
-use DateTime;
-use DateTimeImmutable;
-use DateTimeInterface;
-use DateTimeZone;
-use InvalidArgumentException;
-use ReflectionException;
-use ReturnTypeWillChange;
-use Throwable;
-
-/**
- * A simple API extension for DateTime.
- *
- *
- *
- * @property int $year
- * @property int $yearIso
- * @property int $month
- * @property int $day
- * @property int $hour
- * @property int $minute
- * @property int $second
- * @property int $micro
- * @property int $microsecond
- * @property int|float|string $timestamp seconds since the Unix Epoch
- * @property string $englishDayOfWeek the day of week in English
- * @property string $shortEnglishDayOfWeek the abbreviated day of week in English
- * @property string $englishMonth the month in English
- * @property string $shortEnglishMonth the abbreviated month in English
- * @property string $localeDayOfWeek the day of week in current locale LC_TIME
- * @property string $shortLocaleDayOfWeek the abbreviated day of week in current locale LC_TIME
- * @property string $localeMonth the month in current locale LC_TIME
- * @property string $shortLocaleMonth the abbreviated month in current locale LC_TIME
- * @property int $milliseconds
- * @property int $millisecond
- * @property int $milli
- * @property int $week 1 through 53
- * @property int $isoWeek 1 through 53
- * @property int $weekYear year according to week format
- * @property int $isoWeekYear year according to ISO week format
- * @property int $dayOfYear 1 through 366
- * @property int $age does a diffInYears() with default parameters
- * @property int $offset the timezone offset in seconds from UTC
- * @property int $offsetMinutes the timezone offset in minutes from UTC
- * @property int $offsetHours the timezone offset in hours from UTC
- * @property CarbonTimeZone $timezone the current timezone
- * @property CarbonTimeZone $tz alias of $timezone
- * @property-read int $dayOfWeek 0 (for Sunday) through 6 (for Saturday)
- * @property-read int $dayOfWeekIso 1 (for Monday) through 7 (for Sunday)
- * @property-read int $weekOfYear ISO-8601 week number of year, weeks starting on Monday
- * @property-read int $daysInMonth number of days in the given month
- * @property-read string $latinMeridiem "am"/"pm" (Ante meridiem or Post meridiem latin lowercase mark)
- * @property-read string $latinUpperMeridiem "AM"/"PM" (Ante meridiem or Post meridiem latin uppercase mark)
- * @property-read string $timezoneAbbreviatedName the current timezone abbreviated name
- * @property-read string $tzAbbrName alias of $timezoneAbbreviatedName
- * @property-read string $dayName long name of weekday translated according to Carbon locale, in english if no translation available for current language
- * @property-read string $shortDayName short name of weekday translated according to Carbon locale, in english if no translation available for current language
- * @property-read string $minDayName very short name of weekday translated according to Carbon locale, in english if no translation available for current language
- * @property-read string $monthName long name of month translated according to Carbon locale, in english if no translation available for current language
- * @property-read string $shortMonthName short name of month translated according to Carbon locale, in english if no translation available for current language
- * @property-read string $meridiem lowercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language
- * @property-read string $upperMeridiem uppercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language
- * @property-read int $noZeroHour current hour from 1 to 24
- * @property-read int $weeksInYear 51 through 53
- * @property-read int $isoWeeksInYear 51 through 53
- * @property-read int $weekOfMonth 1 through 5
- * @property-read int $weekNumberInMonth 1 through 5
- * @property-read int $firstWeekDay 0 through 6
- * @property-read int $lastWeekDay 0 through 6
- * @property-read int $daysInYear 365 or 366
- * @property-read int $quarter the quarter of this instance, 1 - 4
- * @property-read int $decade the decade of this instance
- * @property-read int $century the century of this instance
- * @property-read int $millennium the millennium of this instance
- * @property-read bool $dst daylight savings time indicator, true if DST, false otherwise
- * @property-read bool $local checks if the timezone is local, true if local, false otherwise
- * @property-read bool $utc checks if the timezone is UTC, true if UTC, false otherwise
- * @property-read string $timezoneName the current timezone name
- * @property-read string $tzName alias of $timezoneName
- * @property-read string $locale locale of the current instance
- *
- * @method bool isUtc() Check if the current instance has UTC timezone. (Both isUtc and isUTC cases are valid.)
- * @method bool isLocal() Check if the current instance has non-UTC timezone.
- * @method bool isValid() Check if the current instance is a valid date.
- * @method bool isDST() Check if the current instance is in a daylight saving time.
- * @method bool isSunday() Checks if the instance day is sunday.
- * @method bool isMonday() Checks if the instance day is monday.
- * @method bool isTuesday() Checks if the instance day is tuesday.
- * @method bool isWednesday() Checks if the instance day is wednesday.
- * @method bool isThursday() Checks if the instance day is thursday.
- * @method bool isFriday() Checks if the instance day is friday.
- * @method bool isSaturday() Checks if the instance day is saturday.
- * @method bool isSameYear(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same year as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentYear() Checks if the instance is in the same year as the current moment.
- * @method bool isNextYear() Checks if the instance is in the same year as the current moment next year.
- * @method bool isLastYear() Checks if the instance is in the same year as the current moment last year.
- * @method bool isSameWeek(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same week as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentWeek() Checks if the instance is in the same week as the current moment.
- * @method bool isNextWeek() Checks if the instance is in the same week as the current moment next week.
- * @method bool isLastWeek() Checks if the instance is in the same week as the current moment last week.
- * @method bool isSameDay(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same day as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentDay() Checks if the instance is in the same day as the current moment.
- * @method bool isNextDay() Checks if the instance is in the same day as the current moment next day.
- * @method bool isLastDay() Checks if the instance is in the same day as the current moment last day.
- * @method bool isSameHour(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same hour as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentHour() Checks if the instance is in the same hour as the current moment.
- * @method bool isNextHour() Checks if the instance is in the same hour as the current moment next hour.
- * @method bool isLastHour() Checks if the instance is in the same hour as the current moment last hour.
- * @method bool isSameMinute(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same minute as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentMinute() Checks if the instance is in the same minute as the current moment.
- * @method bool isNextMinute() Checks if the instance is in the same minute as the current moment next minute.
- * @method bool isLastMinute() Checks if the instance is in the same minute as the current moment last minute.
- * @method bool isSameSecond(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same second as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentSecond() Checks if the instance is in the same second as the current moment.
- * @method bool isNextSecond() Checks if the instance is in the same second as the current moment next second.
- * @method bool isLastSecond() Checks if the instance is in the same second as the current moment last second.
- * @method bool isSameMicro(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentMicro() Checks if the instance is in the same microsecond as the current moment.
- * @method bool isNextMicro() Checks if the instance is in the same microsecond as the current moment next microsecond.
- * @method bool isLastMicro() Checks if the instance is in the same microsecond as the current moment last microsecond.
- * @method bool isSameMicrosecond(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentMicrosecond() Checks if the instance is in the same microsecond as the current moment.
- * @method bool isNextMicrosecond() Checks if the instance is in the same microsecond as the current moment next microsecond.
- * @method bool isLastMicrosecond() Checks if the instance is in the same microsecond as the current moment last microsecond.
- * @method bool isCurrentMonth() Checks if the instance is in the same month as the current moment.
- * @method bool isNextMonth() Checks if the instance is in the same month as the current moment next month.
- * @method bool isLastMonth() Checks if the instance is in the same month as the current moment last month.
- * @method bool isCurrentQuarter() Checks if the instance is in the same quarter as the current moment.
- * @method bool isNextQuarter() Checks if the instance is in the same quarter as the current moment next quarter.
- * @method bool isLastQuarter() Checks if the instance is in the same quarter as the current moment last quarter.
- * @method bool isSameDecade(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same decade as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentDecade() Checks if the instance is in the same decade as the current moment.
- * @method bool isNextDecade() Checks if the instance is in the same decade as the current moment next decade.
- * @method bool isLastDecade() Checks if the instance is in the same decade as the current moment last decade.
- * @method bool isSameCentury(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same century as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentCentury() Checks if the instance is in the same century as the current moment.
- * @method bool isNextCentury() Checks if the instance is in the same century as the current moment next century.
- * @method bool isLastCentury() Checks if the instance is in the same century as the current moment last century.
- * @method bool isSameMillennium(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same millennium as the instance. If null passed, compare to now (with the same timezone).
- * @method bool isCurrentMillennium() Checks if the instance is in the same millennium as the current moment.
- * @method bool isNextMillennium() Checks if the instance is in the same millennium as the current moment next millennium.
- * @method bool isLastMillennium() Checks if the instance is in the same millennium as the current moment last millennium.
- * @method CarbonInterface years(int $value) Set current instance year to the given value.
- * @method CarbonInterface year(int $value) Set current instance year to the given value.
- * @method CarbonInterface setYears(int $value) Set current instance year to the given value.
- * @method CarbonInterface setYear(int $value) Set current instance year to the given value.
- * @method CarbonInterface months(int $value) Set current instance month to the given value.
- * @method CarbonInterface month(int $value) Set current instance month to the given value.
- * @method CarbonInterface setMonths(int $value) Set current instance month to the given value.
- * @method CarbonInterface setMonth(int $value) Set current instance month to the given value.
- * @method CarbonInterface days(int $value) Set current instance day to the given value.
- * @method CarbonInterface day(int $value) Set current instance day to the given value.
- * @method CarbonInterface setDays(int $value) Set current instance day to the given value.
- * @method CarbonInterface setDay(int $value) Set current instance day to the given value.
- * @method CarbonInterface hours(int $value) Set current instance hour to the given value.
- * @method CarbonInterface hour(int $value) Set current instance hour to the given value.
- * @method CarbonInterface setHours(int $value) Set current instance hour to the given value.
- * @method CarbonInterface setHour(int $value) Set current instance hour to the given value.
- * @method CarbonInterface minutes(int $value) Set current instance minute to the given value.
- * @method CarbonInterface minute(int $value) Set current instance minute to the given value.
- * @method CarbonInterface setMinutes(int $value) Set current instance minute to the given value.
- * @method CarbonInterface setMinute(int $value) Set current instance minute to the given value.
- * @method CarbonInterface seconds(int $value) Set current instance second to the given value.
- * @method CarbonInterface second(int $value) Set current instance second to the given value.
- * @method CarbonInterface setSeconds(int $value) Set current instance second to the given value.
- * @method CarbonInterface setSecond(int $value) Set current instance second to the given value.
- * @method CarbonInterface millis(int $value) Set current instance millisecond to the given value.
- * @method CarbonInterface milli(int $value) Set current instance millisecond to the given value.
- * @method CarbonInterface setMillis(int $value) Set current instance millisecond to the given value.
- * @method CarbonInterface setMilli(int $value) Set current instance millisecond to the given value.
- * @method CarbonInterface milliseconds(int $value) Set current instance millisecond to the given value.
- * @method CarbonInterface millisecond(int $value) Set current instance millisecond to the given value.
- * @method CarbonInterface setMilliseconds(int $value) Set current instance millisecond to the given value.
- * @method CarbonInterface setMillisecond(int $value) Set current instance millisecond to the given value.
- * @method CarbonInterface micros(int $value) Set current instance microsecond to the given value.
- * @method CarbonInterface micro(int $value) Set current instance microsecond to the given value.
- * @method CarbonInterface setMicros(int $value) Set current instance microsecond to the given value.
- * @method CarbonInterface setMicro(int $value) Set current instance microsecond to the given value.
- * @method CarbonInterface microseconds(int $value) Set current instance microsecond to the given value.
- * @method CarbonInterface microsecond(int $value) Set current instance microsecond to the given value.
- * @method CarbonInterface setMicroseconds(int $value) Set current instance microsecond to the given value.
- * @method CarbonInterface setMicrosecond(int $value) Set current instance microsecond to the given value.
- * @method CarbonInterface addYears(int $value = 1) Add years (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addYear() Add one year to the instance (using date interval).
- * @method CarbonInterface subYears(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subYear() Sub one year to the instance (using date interval).
- * @method CarbonInterface addYearsWithOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface addYearWithOverflow() Add one year to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface subYearsWithOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface subYearWithOverflow() Sub one year to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface addYearsWithoutOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addYearWithoutOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subYearsWithoutOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subYearWithoutOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addYearsWithNoOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addYearWithNoOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subYearsWithNoOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subYearWithNoOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addYearsNoOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addYearNoOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subYearsNoOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subYearNoOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addMonths(int $value = 1) Add months (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addMonth() Add one month to the instance (using date interval).
- * @method CarbonInterface subMonths(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subMonth() Sub one month to the instance (using date interval).
- * @method CarbonInterface addMonthsWithOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface addMonthWithOverflow() Add one month to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface subMonthsWithOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface subMonthWithOverflow() Sub one month to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface addMonthsWithoutOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addMonthWithoutOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subMonthsWithoutOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subMonthWithoutOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addMonthsWithNoOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addMonthWithNoOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subMonthsWithNoOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subMonthWithNoOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addMonthsNoOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addMonthNoOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subMonthsNoOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subMonthNoOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addDays(int $value = 1) Add days (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addDay() Add one day to the instance (using date interval).
- * @method CarbonInterface subDays(int $value = 1) Sub days (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subDay() Sub one day to the instance (using date interval).
- * @method CarbonInterface addHours(int $value = 1) Add hours (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addHour() Add one hour to the instance (using date interval).
- * @method CarbonInterface subHours(int $value = 1) Sub hours (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subHour() Sub one hour to the instance (using date interval).
- * @method CarbonInterface addMinutes(int $value = 1) Add minutes (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addMinute() Add one minute to the instance (using date interval).
- * @method CarbonInterface subMinutes(int $value = 1) Sub minutes (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subMinute() Sub one minute to the instance (using date interval).
- * @method CarbonInterface addSeconds(int $value = 1) Add seconds (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addSecond() Add one second to the instance (using date interval).
- * @method CarbonInterface subSeconds(int $value = 1) Sub seconds (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subSecond() Sub one second to the instance (using date interval).
- * @method CarbonInterface addMillis(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addMilli() Add one millisecond to the instance (using date interval).
- * @method CarbonInterface subMillis(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subMilli() Sub one millisecond to the instance (using date interval).
- * @method CarbonInterface addMilliseconds(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addMillisecond() Add one millisecond to the instance (using date interval).
- * @method CarbonInterface subMilliseconds(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subMillisecond() Sub one millisecond to the instance (using date interval).
- * @method CarbonInterface addMicros(int $value = 1) Add microseconds (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addMicro() Add one microsecond to the instance (using date interval).
- * @method CarbonInterface subMicros(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subMicro() Sub one microsecond to the instance (using date interval).
- * @method CarbonInterface addMicroseconds(int $value = 1) Add microseconds (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addMicrosecond() Add one microsecond to the instance (using date interval).
- * @method CarbonInterface subMicroseconds(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subMicrosecond() Sub one microsecond to the instance (using date interval).
- * @method CarbonInterface addMillennia(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addMillennium() Add one millennium to the instance (using date interval).
- * @method CarbonInterface subMillennia(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subMillennium() Sub one millennium to the instance (using date interval).
- * @method CarbonInterface addMillenniaWithOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface addMillenniumWithOverflow() Add one millennium to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface subMillenniaWithOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface subMillenniumWithOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface addMillenniaWithoutOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addMillenniumWithoutOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subMillenniaWithoutOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subMillenniumWithoutOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addMillenniaWithNoOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addMillenniumWithNoOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subMillenniaWithNoOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subMillenniumWithNoOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addMillenniaNoOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addMillenniumNoOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subMillenniaNoOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subMillenniumNoOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addCenturies(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addCentury() Add one century to the instance (using date interval).
- * @method CarbonInterface subCenturies(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subCentury() Sub one century to the instance (using date interval).
- * @method CarbonInterface addCenturiesWithOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface addCenturyWithOverflow() Add one century to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface subCenturiesWithOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface subCenturyWithOverflow() Sub one century to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface addCenturiesWithoutOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addCenturyWithoutOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subCenturiesWithoutOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subCenturyWithoutOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addCenturiesWithNoOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addCenturyWithNoOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subCenturiesWithNoOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subCenturyWithNoOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addCenturiesNoOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addCenturyNoOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subCenturiesNoOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subCenturyNoOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addDecades(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addDecade() Add one decade to the instance (using date interval).
- * @method CarbonInterface subDecades(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subDecade() Sub one decade to the instance (using date interval).
- * @method CarbonInterface addDecadesWithOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface addDecadeWithOverflow() Add one decade to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface subDecadesWithOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface subDecadeWithOverflow() Sub one decade to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface addDecadesWithoutOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addDecadeWithoutOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subDecadesWithoutOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subDecadeWithoutOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addDecadesWithNoOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addDecadeWithNoOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subDecadesWithNoOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subDecadeWithNoOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addDecadesNoOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addDecadeNoOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subDecadesNoOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subDecadeNoOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addQuarters(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addQuarter() Add one quarter to the instance (using date interval).
- * @method CarbonInterface subQuarters(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subQuarter() Sub one quarter to the instance (using date interval).
- * @method CarbonInterface addQuartersWithOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface addQuarterWithOverflow() Add one quarter to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface subQuartersWithOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface subQuarterWithOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly allowed.
- * @method CarbonInterface addQuartersWithoutOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addQuarterWithoutOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subQuartersWithoutOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subQuarterWithoutOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addQuartersWithNoOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addQuarterWithNoOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subQuartersWithNoOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subQuarterWithNoOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addQuartersNoOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addQuarterNoOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subQuartersNoOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface subQuarterNoOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden.
- * @method CarbonInterface addWeeks(int $value = 1) Add weeks (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addWeek() Add one week to the instance (using date interval).
- * @method CarbonInterface subWeeks(int $value = 1) Sub weeks (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subWeek() Sub one week to the instance (using date interval).
- * @method CarbonInterface addWeekdays(int $value = 1) Add weekdays (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface addWeekday() Add one weekday to the instance (using date interval).
- * @method CarbonInterface subWeekdays(int $value = 1) Sub weekdays (the $value count passed in) to the instance (using date interval).
- * @method CarbonInterface subWeekday() Sub one weekday to the instance (using date interval).
- * @method CarbonInterface addRealMicros(int $value = 1) Add microseconds (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface addRealMicro() Add one microsecond to the instance (using timestamp).
- * @method CarbonInterface subRealMicros(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface subRealMicro() Sub one microsecond to the instance (using timestamp).
- * @method CarbonPeriod microsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given.
- * @method CarbonInterface addRealMicroseconds(int $value = 1) Add microseconds (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface addRealMicrosecond() Add one microsecond to the instance (using timestamp).
- * @method CarbonInterface subRealMicroseconds(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface subRealMicrosecond() Sub one microsecond to the instance (using timestamp).
- * @method CarbonPeriod microsecondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given.
- * @method CarbonInterface addRealMillis(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface addRealMilli() Add one millisecond to the instance (using timestamp).
- * @method CarbonInterface subRealMillis(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface subRealMilli() Sub one millisecond to the instance (using timestamp).
- * @method CarbonPeriod millisUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given.
- * @method CarbonInterface addRealMilliseconds(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface addRealMillisecond() Add one millisecond to the instance (using timestamp).
- * @method CarbonInterface subRealMilliseconds(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface subRealMillisecond() Sub one millisecond to the instance (using timestamp).
- * @method CarbonPeriod millisecondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given.
- * @method CarbonInterface addRealSeconds(int $value = 1) Add seconds (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface addRealSecond() Add one second to the instance (using timestamp).
- * @method CarbonInterface subRealSeconds(int $value = 1) Sub seconds (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface subRealSecond() Sub one second to the instance (using timestamp).
- * @method CarbonPeriod secondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each second or every X seconds if a factor is given.
- * @method CarbonInterface addRealMinutes(int $value = 1) Add minutes (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface addRealMinute() Add one minute to the instance (using timestamp).
- * @method CarbonInterface subRealMinutes(int $value = 1) Sub minutes (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface subRealMinute() Sub one minute to the instance (using timestamp).
- * @method CarbonPeriod minutesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each minute or every X minutes if a factor is given.
- * @method CarbonInterface addRealHours(int $value = 1) Add hours (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface addRealHour() Add one hour to the instance (using timestamp).
- * @method CarbonInterface subRealHours(int $value = 1) Sub hours (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface subRealHour() Sub one hour to the instance (using timestamp).
- * @method CarbonPeriod hoursUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each hour or every X hours if a factor is given.
- * @method CarbonInterface addRealDays(int $value = 1) Add days (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface addRealDay() Add one day to the instance (using timestamp).
- * @method CarbonInterface subRealDays(int $value = 1) Sub days (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface subRealDay() Sub one day to the instance (using timestamp).
- * @method CarbonPeriod daysUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each day or every X days if a factor is given.
- * @method CarbonInterface addRealWeeks(int $value = 1) Add weeks (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface addRealWeek() Add one week to the instance (using timestamp).
- * @method CarbonInterface subRealWeeks(int $value = 1) Sub weeks (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface subRealWeek() Sub one week to the instance (using timestamp).
- * @method CarbonPeriod weeksUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each week or every X weeks if a factor is given.
- * @method CarbonInterface addRealMonths(int $value = 1) Add months (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface addRealMonth() Add one month to the instance (using timestamp).
- * @method CarbonInterface subRealMonths(int $value = 1) Sub months (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface subRealMonth() Sub one month to the instance (using timestamp).
- * @method CarbonPeriod monthsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each month or every X months if a factor is given.
- * @method CarbonInterface addRealQuarters(int $value = 1) Add quarters (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface addRealQuarter() Add one quarter to the instance (using timestamp).
- * @method CarbonInterface subRealQuarters(int $value = 1) Sub quarters (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface subRealQuarter() Sub one quarter to the instance (using timestamp).
- * @method CarbonPeriod quartersUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each quarter or every X quarters if a factor is given.
- * @method CarbonInterface addRealYears(int $value = 1) Add years (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface addRealYear() Add one year to the instance (using timestamp).
- * @method CarbonInterface subRealYears(int $value = 1) Sub years (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface subRealYear() Sub one year to the instance (using timestamp).
- * @method CarbonPeriod yearsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each year or every X years if a factor is given.
- * @method CarbonInterface addRealDecades(int $value = 1) Add decades (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface addRealDecade() Add one decade to the instance (using timestamp).
- * @method CarbonInterface subRealDecades(int $value = 1) Sub decades (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface subRealDecade() Sub one decade to the instance (using timestamp).
- * @method CarbonPeriod decadesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each decade or every X decades if a factor is given.
- * @method CarbonInterface addRealCenturies(int $value = 1) Add centuries (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface addRealCentury() Add one century to the instance (using timestamp).
- * @method CarbonInterface subRealCenturies(int $value = 1) Sub centuries (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface subRealCentury() Sub one century to the instance (using timestamp).
- * @method CarbonPeriod centuriesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each century or every X centuries if a factor is given.
- * @method CarbonInterface addRealMillennia(int $value = 1) Add millennia (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface addRealMillennium() Add one millennium to the instance (using timestamp).
- * @method CarbonInterface subRealMillennia(int $value = 1) Sub millennia (the $value count passed in) to the instance (using timestamp).
- * @method CarbonInterface subRealMillennium() Sub one millennium to the instance (using timestamp).
- * @method CarbonPeriod millenniaUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millennium or every X millennia if a factor is given.
- * @method CarbonInterface roundYear(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function.
- * @method CarbonInterface roundYears(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function.
- * @method CarbonInterface floorYear(float $precision = 1) Truncate the current instance year with given precision.
- * @method CarbonInterface floorYears(float $precision = 1) Truncate the current instance year with given precision.
- * @method CarbonInterface ceilYear(float $precision = 1) Ceil the current instance year with given precision.
- * @method CarbonInterface ceilYears(float $precision = 1) Ceil the current instance year with given precision.
- * @method CarbonInterface roundMonth(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function.
- * @method CarbonInterface roundMonths(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function.
- * @method CarbonInterface floorMonth(float $precision = 1) Truncate the current instance month with given precision.
- * @method CarbonInterface floorMonths(float $precision = 1) Truncate the current instance month with given precision.
- * @method CarbonInterface ceilMonth(float $precision = 1) Ceil the current instance month with given precision.
- * @method CarbonInterface ceilMonths(float $precision = 1) Ceil the current instance month with given precision.
- * @method CarbonInterface roundDay(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function.
- * @method CarbonInterface roundDays(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function.
- * @method CarbonInterface floorDay(float $precision = 1) Truncate the current instance day with given precision.
- * @method CarbonInterface floorDays(float $precision = 1) Truncate the current instance day with given precision.
- * @method CarbonInterface ceilDay(float $precision = 1) Ceil the current instance day with given precision.
- * @method CarbonInterface ceilDays(float $precision = 1) Ceil the current instance day with given precision.
- * @method CarbonInterface roundHour(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function.
- * @method CarbonInterface roundHours(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function.
- * @method CarbonInterface floorHour(float $precision = 1) Truncate the current instance hour with given precision.
- * @method CarbonInterface floorHours(float $precision = 1) Truncate the current instance hour with given precision.
- * @method CarbonInterface ceilHour(float $precision = 1) Ceil the current instance hour with given precision.
- * @method CarbonInterface ceilHours(float $precision = 1) Ceil the current instance hour with given precision.
- * @method CarbonInterface roundMinute(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function.
- * @method CarbonInterface roundMinutes(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function.
- * @method CarbonInterface floorMinute(float $precision = 1) Truncate the current instance minute with given precision.
- * @method CarbonInterface floorMinutes(float $precision = 1) Truncate the current instance minute with given precision.
- * @method CarbonInterface ceilMinute(float $precision = 1) Ceil the current instance minute with given precision.
- * @method CarbonInterface ceilMinutes(float $precision = 1) Ceil the current instance minute with given precision.
- * @method CarbonInterface roundSecond(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function.
- * @method CarbonInterface roundSeconds(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function.
- * @method CarbonInterface floorSecond(float $precision = 1) Truncate the current instance second with given precision.
- * @method CarbonInterface floorSeconds(float $precision = 1) Truncate the current instance second with given precision.
- * @method CarbonInterface ceilSecond(float $precision = 1) Ceil the current instance second with given precision.
- * @method CarbonInterface ceilSeconds(float $precision = 1) Ceil the current instance second with given precision.
- * @method CarbonInterface roundMillennium(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function.
- * @method CarbonInterface roundMillennia(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function.
- * @method CarbonInterface floorMillennium(float $precision = 1) Truncate the current instance millennium with given precision.
- * @method CarbonInterface floorMillennia(float $precision = 1) Truncate the current instance millennium with given precision.
- * @method CarbonInterface ceilMillennium(float $precision = 1) Ceil the current instance millennium with given precision.
- * @method CarbonInterface ceilMillennia(float $precision = 1) Ceil the current instance millennium with given precision.
- * @method CarbonInterface roundCentury(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function.
- * @method CarbonInterface roundCenturies(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function.
- * @method CarbonInterface floorCentury(float $precision = 1) Truncate the current instance century with given precision.
- * @method CarbonInterface floorCenturies(float $precision = 1) Truncate the current instance century with given precision.
- * @method CarbonInterface ceilCentury(float $precision = 1) Ceil the current instance century with given precision.
- * @method CarbonInterface ceilCenturies(float $precision = 1) Ceil the current instance century with given precision.
- * @method CarbonInterface roundDecade(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function.
- * @method CarbonInterface roundDecades(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function.
- * @method CarbonInterface floorDecade(float $precision = 1) Truncate the current instance decade with given precision.
- * @method CarbonInterface floorDecades(float $precision = 1) Truncate the current instance decade with given precision.
- * @method CarbonInterface ceilDecade(float $precision = 1) Ceil the current instance decade with given precision.
- * @method CarbonInterface ceilDecades(float $precision = 1) Ceil the current instance decade with given precision.
- * @method CarbonInterface roundQuarter(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function.
- * @method CarbonInterface roundQuarters(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function.
- * @method CarbonInterface floorQuarter(float $precision = 1) Truncate the current instance quarter with given precision.
- * @method CarbonInterface floorQuarters(float $precision = 1) Truncate the current instance quarter with given precision.
- * @method CarbonInterface ceilQuarter(float $precision = 1) Ceil the current instance quarter with given precision.
- * @method CarbonInterface ceilQuarters(float $precision = 1) Ceil the current instance quarter with given precision.
- * @method CarbonInterface roundMillisecond(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function.
- * @method CarbonInterface roundMilliseconds(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function.
- * @method CarbonInterface floorMillisecond(float $precision = 1) Truncate the current instance millisecond with given precision.
- * @method CarbonInterface floorMilliseconds(float $precision = 1) Truncate the current instance millisecond with given precision.
- * @method CarbonInterface ceilMillisecond(float $precision = 1) Ceil the current instance millisecond with given precision.
- * @method CarbonInterface ceilMilliseconds(float $precision = 1) Ceil the current instance millisecond with given precision.
- * @method CarbonInterface roundMicrosecond(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function.
- * @method CarbonInterface roundMicroseconds(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function.
- * @method CarbonInterface floorMicrosecond(float $precision = 1) Truncate the current instance microsecond with given precision.
- * @method CarbonInterface floorMicroseconds(float $precision = 1) Truncate the current instance microsecond with given precision.
- * @method CarbonInterface ceilMicrosecond(float $precision = 1) Ceil the current instance microsecond with given precision.
- * @method CarbonInterface ceilMicroseconds(float $precision = 1) Ceil the current instance microsecond with given precision.
- * @method string shortAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- * @method string longAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- * @method string shortRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- * @method string longRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- * @method string shortRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- * @method string longRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- * @method string shortRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- * @method string longRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
- *
- *
- */
-trait Date
-{
- use Boundaries;
- use Comparison;
- use Converter;
- use Creator;
- use Difference;
- use Macro;
- use Modifiers;
- use Mutability;
- use ObjectInitialisation;
- use Options;
- use Rounding;
- use Serialization;
- use Test;
- use Timestamp;
- use Units;
- use Week;
-
- /**
- * Names of days of the week.
- *
- * @var array
- */
- protected static $days = [
- // @call isDayOfWeek
- CarbonInterface::SUNDAY => 'Sunday',
- // @call isDayOfWeek
- CarbonInterface::MONDAY => 'Monday',
- // @call isDayOfWeek
- CarbonInterface::TUESDAY => 'Tuesday',
- // @call isDayOfWeek
- CarbonInterface::WEDNESDAY => 'Wednesday',
- // @call isDayOfWeek
- CarbonInterface::THURSDAY => 'Thursday',
- // @call isDayOfWeek
- CarbonInterface::FRIDAY => 'Friday',
- // @call isDayOfWeek
- CarbonInterface::SATURDAY => 'Saturday',
- ];
-
- /**
- * Will UTF8 encoding be used to print localized date/time ?
- *
- * @var bool
- */
- protected static $utf8 = false;
-
- /**
- * List of unit and magic methods associated as doc-comments.
- *
- * @var array
- */
- protected static $units = [
- // @call setUnit
- // @call addUnit
- 'year',
- // @call setUnit
- // @call addUnit
- 'month',
- // @call setUnit
- // @call addUnit
- 'day',
- // @call setUnit
- // @call addUnit
- 'hour',
- // @call setUnit
- // @call addUnit
- 'minute',
- // @call setUnit
- // @call addUnit
- 'second',
- // @call setUnit
- // @call addUnit
- 'milli',
- // @call setUnit
- // @call addUnit
- 'millisecond',
- // @call setUnit
- // @call addUnit
- 'micro',
- // @call setUnit
- // @call addUnit
- 'microsecond',
- ];
-
- /**
- * Creates a DateTimeZone from a string, DateTimeZone or integer offset.
- *
- * @param DateTimeZone|string|int|null $object original value to get CarbonTimeZone from it.
- * @param DateTimeZone|string|int|null $objectDump dump of the object for error messages.
- *
- * @throws InvalidTimeZoneException
- *
- * @return CarbonTimeZone|false
- */
- protected static function safeCreateDateTimeZone($object, $objectDump = null)
- {
- return CarbonTimeZone::instance($object, $objectDump);
- }
-
- /**
- * Get the TimeZone associated with the Carbon instance (as CarbonTimeZone).
- *
- * @return CarbonTimeZone
- *
- * @link https://php.net/manual/en/datetime.gettimezone.php
- */
- #[ReturnTypeWillChange]
- public function getTimezone()
- {
- return CarbonTimeZone::instance(parent::getTimezone());
- }
-
- /**
- * List of minimum and maximums for each unit.
- *
- * @return array
- */
- protected static function getRangesByUnit()
- {
- return [
- // @call roundUnit
- 'year' => [1, 9999],
- // @call roundUnit
- 'month' => [1, static::MONTHS_PER_YEAR],
- // @call roundUnit
- 'day' => [1, 31],
- // @call roundUnit
- 'hour' => [0, static::HOURS_PER_DAY - 1],
- // @call roundUnit
- 'minute' => [0, static::MINUTES_PER_HOUR - 1],
- // @call roundUnit
- 'second' => [0, static::SECONDS_PER_MINUTE - 1],
- ];
- }
-
- /**
- * Get a copy of the instance.
- *
- * @return static
- */
- public function copy()
- {
- return clone $this;
- }
-
- /**
- * @alias copy
- *
- * Get a copy of the instance.
- *
- * @return static
- */
- public function clone()
- {
- return clone $this;
- }
-
- /**
- * Clone the current instance if it's mutable.
- *
- * This method is convenient to ensure you don't mutate the initial object
- * but avoid to make a useless copy of it if it's already immutable.
- *
- * @return static
- */
- public function avoidMutation(): self
- {
- if ($this instanceof DateTimeImmutable) {
- return $this;
- }
-
- return clone $this;
- }
-
- /**
- * Returns a present instance in the same timezone.
- *
- * @return static
- */
- public function nowWithSameTz()
- {
- return static::now($this->getTimezone());
- }
-
- /**
- * Throws an exception if the given object is not a DateTime and does not implement DateTimeInterface.
- *
- * @param mixed $date
- * @param string|array $other
- *
- * @throws InvalidTypeException
- */
- protected static function expectDateTime($date, $other = [])
- {
- $message = 'Expected ';
- foreach ((array) $other as $expect) {
- $message .= "$expect, ";
- }
-
- if (!$date instanceof DateTime && !$date instanceof DateTimeInterface) {
- throw new InvalidTypeException(
- $message.'DateTime or DateTimeInterface, '.
- (\is_object($date) ? \get_class($date) : \gettype($date)).' given'
- );
- }
- }
-
- /**
- * Return the Carbon instance passed through, a now instance in the same timezone
- * if null given or parse the input if string given.
- *
- * @param Carbon|DateTimeInterface|string|null $date
- *
- * @return static
- */
- protected function resolveCarbon($date = null)
- {
- if (!$date) {
- return $this->nowWithSameTz();
- }
-
- if (\is_string($date)) {
- return static::parse($date, $this->getTimezone());
- }
-
- static::expectDateTime($date, ['null', 'string']);
-
- return $date instanceof self ? $date : static::instance($date);
- }
-
- /**
- * Return the Carbon instance passed through, a now instance in UTC
- * if null given or parse the input if string given (using current timezone
- * then switching to UTC).
- *
- * @param Carbon|DateTimeInterface|string|null $date
- *
- * @return static
- */
- protected function resolveUTC($date = null): self
- {
- if (!$date) {
- return static::now('UTC');
- }
-
- if (\is_string($date)) {
- return static::parse($date, $this->getTimezone())->utc();
- }
-
- static::expectDateTime($date, ['null', 'string']);
-
- return $date instanceof self ? $date : static::instance($date)->utc();
- }
-
- /**
- * Return the Carbon instance passed through, a now instance in the same timezone
- * if null given or parse the input if string given.
- *
- * @param Carbon|\Carbon\CarbonPeriod|\Carbon\CarbonInterval|\DateInterval|\DatePeriod|DateTimeInterface|string|null $date
- *
- * @return static
- */
- public function carbonize($date = null)
- {
- if ($date instanceof DateInterval) {
- return $this->avoidMutation()->add($date);
- }
-
- if ($date instanceof DatePeriod || $date instanceof CarbonPeriod) {
- $date = $date->getStartDate();
- }
-
- return $this->resolveCarbon($date);
- }
-
- ///////////////////////////////////////////////////////////////////
- ///////////////////////// GETTERS AND SETTERS /////////////////////
- ///////////////////////////////////////////////////////////////////
-
- /**
- * Get a part of the Carbon object
- *
- * @param string $name
- *
- * @throws UnknownGetterException
- *
- * @return string|int|bool|DateTimeZone|null
- */
- public function __get($name)
- {
- return $this->get($name);
- }
-
- /**
- * Get a part of the Carbon object
- *
- * @param string $name
- *
- * @throws UnknownGetterException
- *
- * @return string|int|bool|DateTimeZone|null
- */
- public function get($name)
- {
- static $formats = [
- // @property int
- 'year' => 'Y',
- // @property int
- 'yearIso' => 'o',
- // @property int
- // @call isSameUnit
- 'month' => 'n',
- // @property int
- 'day' => 'j',
- // @property int
- 'hour' => 'G',
- // @property int
- 'minute' => 'i',
- // @property int
- 'second' => 's',
- // @property int
- 'micro' => 'u',
- // @property int
- 'microsecond' => 'u',
- // @property-read int 0 (for Sunday) through 6 (for Saturday)
- 'dayOfWeek' => 'w',
- // @property-read int 1 (for Monday) through 7 (for Sunday)
- 'dayOfWeekIso' => 'N',
- // @property-read int ISO-8601 week number of year, weeks starting on Monday
- 'weekOfYear' => 'W',
- // @property-read int number of days in the given month
- 'daysInMonth' => 't',
- // @property int|float|string seconds since the Unix Epoch
- 'timestamp' => 'U',
- // @property-read string "am"/"pm" (Ante meridiem or Post meridiem latin lowercase mark)
- 'latinMeridiem' => 'a',
- // @property-read string "AM"/"PM" (Ante meridiem or Post meridiem latin uppercase mark)
- 'latinUpperMeridiem' => 'A',
- // @property string the day of week in English
- 'englishDayOfWeek' => 'l',
- // @property string the abbreviated day of week in English
- 'shortEnglishDayOfWeek' => 'D',
- // @property string the month in English
- 'englishMonth' => 'F',
- // @property string the abbreviated month in English
- 'shortEnglishMonth' => 'M',
- // @property string the day of week in current locale LC_TIME
- 'localeDayOfWeek' => '%A',
- // @property string the abbreviated day of week in current locale LC_TIME
- 'shortLocaleDayOfWeek' => '%a',
- // @property string the month in current locale LC_TIME
- 'localeMonth' => '%B',
- // @property string the abbreviated month in current locale LC_TIME
- 'shortLocaleMonth' => '%b',
- // @property-read string $timezoneAbbreviatedName the current timezone abbreviated name
- 'timezoneAbbreviatedName' => 'T',
- // @property-read string $tzAbbrName alias of $timezoneAbbreviatedName
- 'tzAbbrName' => 'T',
- ];
-
- switch (true) {
- case isset($formats[$name]):
- $format = $formats[$name];
- $method = str_starts_with($format, '%') ? 'formatLocalized' : 'rawFormat';
- $value = $this->$method($format);
-
- return is_numeric($value) ? (int) $value : $value;
-
- // @property-read string long name of weekday translated according to Carbon locale, in english if no translation available for current language
- case $name === 'dayName':
- return $this->getTranslatedDayName();
- // @property-read string short name of weekday translated according to Carbon locale, in english if no translation available for current language
- case $name === 'shortDayName':
- return $this->getTranslatedShortDayName();
- // @property-read string very short name of weekday translated according to Carbon locale, in english if no translation available for current language
- case $name === 'minDayName':
- return $this->getTranslatedMinDayName();
- // @property-read string long name of month translated according to Carbon locale, in english if no translation available for current language
- case $name === 'monthName':
- return $this->getTranslatedMonthName();
- // @property-read string short name of month translated according to Carbon locale, in english if no translation available for current language
- case $name === 'shortMonthName':
- return $this->getTranslatedShortMonthName();
- // @property-read string lowercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language
- case $name === 'meridiem':
- return $this->meridiem(true);
- // @property-read string uppercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language
- case $name === 'upperMeridiem':
- return $this->meridiem();
- // @property-read int current hour from 1 to 24
- case $name === 'noZeroHour':
- return $this->hour ?: 24;
- // @property int
- case $name === 'milliseconds':
- // @property int
- case $name === 'millisecond':
- // @property int
- case $name === 'milli':
- return (int) floor($this->rawFormat('u') / 1000);
-
- // @property int 1 through 53
- case $name === 'week':
- return (int) $this->week();
-
- // @property int 1 through 53
- case $name === 'isoWeek':
- return (int) $this->isoWeek();
-
- // @property int year according to week format
- case $name === 'weekYear':
- return (int) $this->weekYear();
-
- // @property int year according to ISO week format
- case $name === 'isoWeekYear':
- return (int) $this->isoWeekYear();
-
- // @property-read int 51 through 53
- case $name === 'weeksInYear':
- return $this->weeksInYear();
-
- // @property-read int 51 through 53
- case $name === 'isoWeeksInYear':
- return $this->isoWeeksInYear();
-
- // @property-read int 1 through 5
- case $name === 'weekOfMonth':
- return (int) ceil($this->day / static::DAYS_PER_WEEK);
-
- // @property-read int 1 through 5
- case $name === 'weekNumberInMonth':
- return (int) ceil(($this->day + $this->avoidMutation()->startOfMonth()->dayOfWeekIso - 1) / static::DAYS_PER_WEEK);
-
- // @property-read int 0 through 6
- case $name === 'firstWeekDay':
- return $this->localTranslator ? ($this->getTranslationMessage('first_day_of_week') ?? 0) : static::getWeekStartsAt();
-
- // @property-read int 0 through 6
- case $name === 'lastWeekDay':
- return $this->localTranslator ? (($this->getTranslationMessage('first_day_of_week') ?? 0) + static::DAYS_PER_WEEK - 1) % static::DAYS_PER_WEEK : static::getWeekEndsAt();
-
- // @property int 1 through 366
- case $name === 'dayOfYear':
- return 1 + (int) ($this->rawFormat('z'));
-
- // @property-read int 365 or 366
- case $name === 'daysInYear':
- return $this->isLeapYear() ? 366 : 365;
-
- // @property int does a diffInYears() with default parameters
- case $name === 'age':
- return $this->diffInYears();
-
- // @property-read int the quarter of this instance, 1 - 4
- // @call isSameUnit
- case $name === 'quarter':
- return (int) ceil($this->month / static::MONTHS_PER_QUARTER);
-
- // @property-read int the decade of this instance
- // @call isSameUnit
- case $name === 'decade':
- return (int) ceil($this->year / static::YEARS_PER_DECADE);
-
- // @property-read int the century of this instance
- // @call isSameUnit
- case $name === 'century':
- $factor = 1;
- $year = $this->year;
- if ($year < 0) {
- $year = -$year;
- $factor = -1;
- }
-
- return (int) ($factor * ceil($year / static::YEARS_PER_CENTURY));
-
- // @property-read int the millennium of this instance
- // @call isSameUnit
- case $name === 'millennium':
- $factor = 1;
- $year = $this->year;
- if ($year < 0) {
- $year = -$year;
- $factor = -1;
- }
-
- return (int) ($factor * ceil($year / static::YEARS_PER_MILLENNIUM));
-
- // @property int the timezone offset in seconds from UTC
- case $name === 'offset':
- return $this->getOffset();
-
- // @property int the timezone offset in minutes from UTC
- case $name === 'offsetMinutes':
- return $this->getOffset() / static::SECONDS_PER_MINUTE;
-
- // @property int the timezone offset in hours from UTC
- case $name === 'offsetHours':
- return $this->getOffset() / static::SECONDS_PER_MINUTE / static::MINUTES_PER_HOUR;
-
- // @property-read bool daylight savings time indicator, true if DST, false otherwise
- case $name === 'dst':
- return $this->rawFormat('I') === '1';
-
- // @property-read bool checks if the timezone is local, true if local, false otherwise
- case $name === 'local':
- return $this->getOffset() === $this->avoidMutation()->setTimezone(date_default_timezone_get())->getOffset();
-
- // @property-read bool checks if the timezone is UTC, true if UTC, false otherwise
- case $name === 'utc':
- return $this->getOffset() === 0;
-
- // @property CarbonTimeZone $timezone the current timezone
- // @property CarbonTimeZone $tz alias of $timezone
- case $name === 'timezone' || $name === 'tz':
- return CarbonTimeZone::instance($this->getTimezone());
-
- // @property-read string $timezoneName the current timezone name
- // @property-read string $tzName alias of $timezoneName
- case $name === 'timezoneName' || $name === 'tzName':
- return $this->getTimezone()->getName();
-
- // @property-read string locale of the current instance
- case $name === 'locale':
- return $this->getTranslatorLocale();
-
- default:
- $macro = $this->getLocalMacro('get'.ucfirst($name));
-
- if ($macro) {
- return $this->executeCallableWithContext($macro);
- }
-
- throw new UnknownGetterException($name);
- }
- }
-
- /**
- * Check if an attribute exists on the object
- *
- * @param string $name
- *
- * @return bool
- */
- public function __isset($name)
- {
- try {
- $this->__get($name);
- } catch (UnknownGetterException | ReflectionException $e) {
- return false;
- }
-
- return true;
- }
-
- /**
- * Set a part of the Carbon object
- *
- * @param string $name
- * @param string|int|DateTimeZone $value
- *
- * @throws UnknownSetterException|ReflectionException
- *
- * @return void
- */
- public function __set($name, $value)
- {
- if ($this->constructedObjectId === spl_object_hash($this)) {
- $this->set($name, $value);
-
- return;
- }
-
- $this->$name = $value;
- }
-
- /**
- * Set a part of the Carbon object
- *
- * @param string|array $name
- * @param string|int|DateTimeZone $value
- *
- * @throws ImmutableException|UnknownSetterException
- *
- * @return $this
- */
- public function set($name, $value = null)
- {
- if ($this->isImmutable()) {
- throw new ImmutableException(sprintf('%s class', static::class));
- }
-
- if (\is_array($name)) {
- foreach ($name as $key => $value) {
- $this->set($key, $value);
- }
-
- return $this;
- }
-
- switch ($name) {
- case 'milliseconds':
- case 'millisecond':
- case 'milli':
- case 'microseconds':
- case 'microsecond':
- case 'micro':
- if (str_starts_with($name, 'milli')) {
- $value *= 1000;
- }
-
- while ($value < 0) {
- $this->subSecond();
- $value += static::MICROSECONDS_PER_SECOND;
- }
-
- while ($value >= static::MICROSECONDS_PER_SECOND) {
- $this->addSecond();
- $value -= static::MICROSECONDS_PER_SECOND;
- }
-
- $this->modify($this->rawFormat('H:i:s.').str_pad((string) round($value), 6, '0', STR_PAD_LEFT));
-
- break;
-
- case 'year':
- case 'month':
- case 'day':
- case 'hour':
- case 'minute':
- case 'second':
- [$year, $month, $day, $hour, $minute, $second] = array_map('intval', explode('-', $this->rawFormat('Y-n-j-G-i-s')));
- $$name = $value;
- $this->setDateTime($year, $month, $day, $hour, $minute, $second);
-
- break;
-
- case 'week':
- $this->week($value);
-
- break;
-
- case 'isoWeek':
- $this->isoWeek($value);
-
- break;
-
- case 'weekYear':
- $this->weekYear($value);
-
- break;
-
- case 'isoWeekYear':
- $this->isoWeekYear($value);
-
- break;
-
- case 'dayOfYear':
- $this->addDays($value - $this->dayOfYear);
-
- break;
-
- case 'timestamp':
- $this->setTimestamp($value);
-
- break;
-
- case 'offset':
- $this->setTimezone(static::safeCreateDateTimeZone($value / static::SECONDS_PER_MINUTE / static::MINUTES_PER_HOUR));
-
- break;
-
- case 'offsetMinutes':
- $this->setTimezone(static::safeCreateDateTimeZone($value / static::MINUTES_PER_HOUR));
-
- break;
-
- case 'offsetHours':
- $this->setTimezone(static::safeCreateDateTimeZone($value));
-
- break;
-
- case 'timezone':
- case 'tz':
- $this->setTimezone($value);
-
- break;
-
- default:
- $macro = $this->getLocalMacro('set'.ucfirst($name));
-
- if ($macro) {
- $this->executeCallableWithContext($macro, $value);
-
- break;
- }
-
- if ($this->localStrictModeEnabled ?? static::isStrictModeEnabled()) {
- throw new UnknownSetterException($name);
- }
-
- $this->$name = $value;
- }
-
- return $this;
- }
-
- protected function getTranslatedFormByRegExp($baseKey, $keySuffix, $context, $subKey, $defaultValue)
- {
- $key = $baseKey.$keySuffix;
- $standaloneKey = "${key}_standalone";
- $baseTranslation = $this->getTranslationMessage($key);
-
- if ($baseTranslation instanceof Closure) {
- return $baseTranslation($this, $context, $subKey) ?: $defaultValue;
- }
-
- if (
- $this->getTranslationMessage("$standaloneKey.$subKey") &&
- (!$context || ($regExp = $this->getTranslationMessage("${baseKey}_regexp")) && !preg_match($regExp, $context))
- ) {
- $key = $standaloneKey;
- }
-
- return $this->getTranslationMessage("$key.$subKey", null, $defaultValue);
- }
-
- /**
- * Get the translation of the current week day name (with context for languages with multiple forms).
- *
- * @param string|null $context whole format string
- * @param string $keySuffix "", "_short" or "_min"
- * @param string|null $defaultValue default value if translation missing
- *
- * @return string
- */
- public function getTranslatedDayName($context = null, $keySuffix = '', $defaultValue = null)
- {
- return $this->getTranslatedFormByRegExp('weekdays', $keySuffix, $context, $this->dayOfWeek, $defaultValue ?: $this->englishDayOfWeek);
- }
-
- /**
- * Get the translation of the current short week day name (with context for languages with multiple forms).
- *
- * @param string|null $context whole format string
- *
- * @return string
- */
- public function getTranslatedShortDayName($context = null)
- {
- return $this->getTranslatedDayName($context, '_short', $this->shortEnglishDayOfWeek);
- }
-
- /**
- * Get the translation of the current abbreviated week day name (with context for languages with multiple forms).
- *
- * @param string|null $context whole format string
- *
- * @return string
- */
- public function getTranslatedMinDayName($context = null)
- {
- return $this->getTranslatedDayName($context, '_min', $this->shortEnglishDayOfWeek);
- }
-
- /**
- * Get the translation of the current month day name (with context for languages with multiple forms).
- *
- * @param string|null $context whole format string
- * @param string $keySuffix "" or "_short"
- * @param string|null $defaultValue default value if translation missing
- *
- * @return string
- */
- public function getTranslatedMonthName($context = null, $keySuffix = '', $defaultValue = null)
- {
- return $this->getTranslatedFormByRegExp('months', $keySuffix, $context, $this->month - 1, $defaultValue ?: $this->englishMonth);
- }
-
- /**
- * Get the translation of the current short month day name (with context for languages with multiple forms).
- *
- * @param string|null $context whole format string
- *
- * @return string
- */
- public function getTranslatedShortMonthName($context = null)
- {
- return $this->getTranslatedMonthName($context, '_short', $this->shortEnglishMonth);
- }
-
- /**
- * Get/set the day of year.
- *
- * @param int|null $value new value for day of year if using as setter.
- *
- * @return static|int
- */
- public function dayOfYear($value = null)
- {
- $dayOfYear = $this->dayOfYear;
-
- return $value === null ? $dayOfYear : $this->addDays($value - $dayOfYear);
- }
-
- /**
- * Get/set the weekday from 0 (Sunday) to 6 (Saturday).
- *
- * @param int|null $value new value for weekday if using as setter.
- *
- * @return static|int
- */
- public function weekday($value = null)
- {
- $dayOfWeek = ($this->dayOfWeek + 7 - (int) ($this->getTranslationMessage('first_day_of_week') ?? 0)) % 7;
-
- return $value === null ? $dayOfWeek : $this->addDays($value - $dayOfWeek);
- }
-
- /**
- * Get/set the ISO weekday from 1 (Monday) to 7 (Sunday).
- *
- * @param int|null $value new value for weekday if using as setter.
- *
- * @return static|int
- */
- public function isoWeekday($value = null)
- {
- $dayOfWeekIso = $this->dayOfWeekIso;
-
- return $value === null ? $dayOfWeekIso : $this->addDays($value - $dayOfWeekIso);
- }
-
- /**
- * Set any unit to a new value without overflowing current other unit given.
- *
- * @param string $valueUnit unit name to modify
- * @param int $value new value for the input unit
- * @param string $overflowUnit unit name to not overflow
- *
- * @return static
- */
- public function setUnitNoOverflow($valueUnit, $value, $overflowUnit)
- {
- try {
- $original = $this->avoidMutation();
- /** @var static $date */
- $date = $this->$valueUnit($value);
- $end = $original->avoidMutation()->endOf($overflowUnit);
- $start = $original->avoidMutation()->startOf($overflowUnit);
- if ($date < $start) {
- $date = $date->setDateTimeFrom($start);
- } elseif ($date > $end) {
- $date = $date->setDateTimeFrom($end);
- }
-
- return $date;
- } catch (BadMethodCallException | ReflectionException $exception) {
- throw new UnknownUnitException($valueUnit, 0, $exception);
- }
- }
-
- /**
- * Add any unit to a new value without overflowing current other unit given.
- *
- * @param string $valueUnit unit name to modify
- * @param int $value amount to add to the input unit
- * @param string $overflowUnit unit name to not overflow
- *
- * @return static
- */
- public function addUnitNoOverflow($valueUnit, $value, $overflowUnit)
- {
- return $this->setUnitNoOverflow($valueUnit, $this->$valueUnit + $value, $overflowUnit);
- }
-
- /**
- * Subtract any unit to a new value without overflowing current other unit given.
- *
- * @param string $valueUnit unit name to modify
- * @param int $value amount to subtract to the input unit
- * @param string $overflowUnit unit name to not overflow
- *
- * @return static
- */
- public function subUnitNoOverflow($valueUnit, $value, $overflowUnit)
- {
- return $this->setUnitNoOverflow($valueUnit, $this->$valueUnit - $value, $overflowUnit);
- }
-
- /**
- * Returns the minutes offset to UTC if no arguments passed, else set the timezone with given minutes shift passed.
- *
- * @param int|null $minuteOffset
- *
- * @return int|static
- */
- public function utcOffset(int $minuteOffset = null)
- {
- if (\func_num_args() < 1) {
- return $this->offsetMinutes;
- }
-
- return $this->setTimezone(CarbonTimeZone::createFromMinuteOffset($minuteOffset));
- }
-
- /**
- * Set the date with gregorian year, month and day numbers.
- *
- * @see https://php.net/manual/en/datetime.setdate.php
- *
- * @param int $year
- * @param int $month
- * @param int $day
- *
- * @return static
- */
- #[ReturnTypeWillChange]
- public function setDate($year, $month, $day)
- {
- return parent::setDate((int) $year, (int) $month, (int) $day);
- }
-
- /**
- * Set a date according to the ISO 8601 standard - using weeks and day offsets rather than specific dates.
- *
- * @see https://php.net/manual/en/datetime.setisodate.php
- *
- * @param int $year
- * @param int $week
- * @param int $day
- *
- * @return static
- */
- #[ReturnTypeWillChange]
- public function setISODate($year, $week, $day = 1)
- {
- return parent::setISODate((int) $year, (int) $week, (int) $day);
- }
-
- /**
- * Set the date and time all together.
- *
- * @param int $year
- * @param int $month
- * @param int $day
- * @param int $hour
- * @param int $minute
- * @param int $second
- * @param int $microseconds
- *
- * @return static
- */
- public function setDateTime($year, $month, $day, $hour, $minute, $second = 0, $microseconds = 0)
- {
- return $this->setDate($year, $month, $day)->setTime((int) $hour, (int) $minute, (int) $second, (int) $microseconds);
- }
-
- /**
- * Resets the current time of the DateTime object to a different time.
- *
- * @see https://php.net/manual/en/datetime.settime.php
- *
- * @param int $hour
- * @param int $minute
- * @param int $second
- * @param int $microseconds
- *
- * @return static
- */
- #[ReturnTypeWillChange]
- public function setTime($hour, $minute, $second = 0, $microseconds = 0)
- {
- return parent::setTime((int) $hour, (int) $minute, (int) $second, (int) $microseconds);
- }
-
- /**
- * Set the instance's timestamp.
- *
- * Timestamp input can be given as int, float or a string containing one or more numbers.
- *
- * @param float|int|string $unixTimestamp
- *
- * @return static
- */
- #[ReturnTypeWillChange]
- public function setTimestamp($unixTimestamp)
- {
- [$timestamp, $microseconds] = self::getIntegerAndDecimalParts($unixTimestamp);
-
- return parent::setTimestamp((int) $timestamp)->setMicroseconds((int) $microseconds);
- }
-
- /**
- * Set the time by time string.
- *
- * @param string $time
- *
- * @return static
- */
- public function setTimeFromTimeString($time)
- {
- if (!str_contains($time, ':')) {
- $time .= ':0';
- }
-
- return $this->modify($time);
- }
-
- /**
- * @alias setTimezone
- *
- * @param DateTimeZone|string $value
- *
- * @return static
- */
- public function timezone($value)
- {
- return $this->setTimezone($value);
- }
-
- /**
- * Set the timezone or returns the timezone name if no arguments passed.
- *
- * @param DateTimeZone|string $value
- *
- * @return static|string
- */
- public function tz($value = null)
- {
- if (\func_num_args() < 1) {
- return $this->tzName;
- }
-
- return $this->setTimezone($value);
- }
-
- /**
- * Set the instance's timezone from a string or object.
- *
- * @param DateTimeZone|string $value
- *
- * @return static
- */
- #[ReturnTypeWillChange]
- public function setTimezone($value)
- {
- $tz = static::safeCreateDateTimeZone($value);
-
- if ($tz === false && !self::isStrictModeEnabled()) {
- $tz = new CarbonTimeZone();
- }
-
- return parent::setTimezone($tz);
- }
-
- /**
- * Set the instance's timezone from a string or object and add/subtract the offset difference.
- *
- * @param DateTimeZone|string $value
- *
- * @return static
- */
- public function shiftTimezone($value)
- {
- $dateTimeString = $this->format('Y-m-d H:i:s.u');
-
- return $this
- ->setTimezone($value)
- ->modify($dateTimeString);
- }
-
- /**
- * Set the instance's timezone to UTC.
- *
- * @return static
- */
- public function utc()
- {
- return $this->setTimezone('UTC');
- }
-
- /**
- * Set the year, month, and date for this instance to that of the passed instance.
- *
- * @param Carbon|DateTimeInterface $date now if null
- *
- * @return static
- */
- public function setDateFrom($date = null)
- {
- $date = $this->resolveCarbon($date);
-
- return $this->setDate($date->year, $date->month, $date->day);
- }
-
- /**
- * Set the hour, minute, second and microseconds for this instance to that of the passed instance.
- *
- * @param Carbon|DateTimeInterface $date now if null
- *
- * @return static
- */
- public function setTimeFrom($date = null)
- {
- $date = $this->resolveCarbon($date);
-
- return $this->setTime($date->hour, $date->minute, $date->second, $date->microsecond);
- }
-
- /**
- * Set the date and time for this instance to that of the passed instance.
- *
- * @param Carbon|DateTimeInterface $date
- *
- * @return static
- */
- public function setDateTimeFrom($date = null)
- {
- $date = $this->resolveCarbon($date);
-
- return $this->modify($date->rawFormat('Y-m-d H:i:s.u'));
- }
-
- /**
- * Get the days of the week
- *
- * @return array
- */
- public static function getDays()
- {
- return static::$days;
- }
-
- ///////////////////////////////////////////////////////////////////
- /////////////////////// WEEK SPECIAL DAYS /////////////////////////
- ///////////////////////////////////////////////////////////////////
-
- private static function getFirstDayOfWeek(): int
- {
- return (int) static::getTranslationMessageWith(
- static::getTranslator(),
- 'first_day_of_week'
- );
- }
-
- /**
- * Get the first day of week
- *
- * @return int
- */
- public static function getWeekStartsAt()
- {
- if (static::$weekStartsAt === static::WEEK_DAY_AUTO) {
- return static::getFirstDayOfWeek();
- }
-
- return static::$weekStartsAt;
- }
-
- /**
- * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * Use $weekEndsAt optional parameter instead when using endOfWeek method. You can also use the
- * 'first_day_of_week' locale setting to change the start of week according to current locale
- * selected and implicitly the end of week.
- *
- * Set the first day of week
- *
- * @param int|string $day week start day (or 'auto' to get the first day of week from Carbon::getLocale() culture).
- *
- * @return void
- */
- public static function setWeekStartsAt($day)
- {
- static::$weekStartsAt = $day === static::WEEK_DAY_AUTO ? $day : max(0, (7 + $day) % 7);
- }
-
- /**
- * Get the last day of week
- *
- * @return int
- */
- public static function getWeekEndsAt()
- {
- if (static::$weekStartsAt === static::WEEK_DAY_AUTO) {
- return (int) (static::DAYS_PER_WEEK - 1 + static::getFirstDayOfWeek()) % static::DAYS_PER_WEEK;
- }
-
- return static::$weekEndsAt;
- }
-
- /**
- * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * Use $weekStartsAt optional parameter instead when using startOfWeek, floorWeek, ceilWeek
- * or roundWeek method. You can also use the 'first_day_of_week' locale setting to change the
- * start of week according to current locale selected and implicitly the end of week.
- *
- * Set the last day of week
- *
- * @param int|string $day week end day (or 'auto' to get the day before the first day of week
- * from Carbon::getLocale() culture).
- *
- * @return void
- */
- public static function setWeekEndsAt($day)
- {
- static::$weekEndsAt = $day === static::WEEK_DAY_AUTO ? $day : max(0, (7 + $day) % 7);
- }
-
- /**
- * Get weekend days
- *
- * @return array
- */
- public static function getWeekendDays()
- {
- return static::$weekendDays;
- }
-
- /**
- * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather consider week-end is always saturday and sunday, and if you have some custom
- * week-end days to handle, give to those days an other name and create a macro for them:
- *
- * ```
- * Carbon::macro('isDayOff', function ($date) {
- * return $date->isSunday() || $date->isMonday();
- * });
- * Carbon::macro('isNotDayOff', function ($date) {
- * return !$date->isDayOff();
- * });
- * if ($someDate->isDayOff()) ...
- * if ($someDate->isNotDayOff()) ...
- * // Add 5 not-off days
- * $count = 5;
- * while ($someDate->isDayOff() || ($count-- > 0)) {
- * $someDate->addDay();
- * }
- * ```
- *
- * Set weekend days
- *
- * @param array $days
- *
- * @return void
- */
- public static function setWeekendDays($days)
- {
- static::$weekendDays = $days;
- }
-
- /**
- * Determine if a time string will produce a relative date.
- *
- * @param string $time
- *
- * @return bool true if time match a relative date, false if absolute or invalid time string
- */
- public static function hasRelativeKeywords($time)
- {
- if (!$time || strtotime($time) === false) {
- return false;
- }
-
- $date1 = new DateTime('2000-01-01T00:00:00Z');
- $date1->modify($time);
- $date2 = new DateTime('2001-12-25T00:00:00Z');
- $date2->modify($time);
-
- return $date1 != $date2;
- }
-
- ///////////////////////////////////////////////////////////////////
- /////////////////////// STRING FORMATTING /////////////////////////
- ///////////////////////////////////////////////////////////////////
-
- /**
- * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use UTF-8 language packages on every machine.
- *
- * Set if UTF8 will be used for localized date/time.
- *
- * @param bool $utf8
- */
- public static function setUtf8($utf8)
- {
- static::$utf8 = $utf8;
- }
-
- /**
- * Format the instance with the current locale. You can set the current
- * locale using setlocale() https://php.net/setlocale.
- *
- * @param string $format
- *
- * @return string
- */
- public function formatLocalized($format)
- {
- // Check for Windows to find and replace the %e modifier correctly.
- if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
- $format = preg_replace('#(?toDateTimeString()));
-
- return static::$utf8 ? utf8_encode($formatted) : $formatted;
- }
-
- /**
- * Returns list of locale formats for ISO formatting.
- *
- * @param string|null $locale current locale used if null
- *
- * @return array
- */
- public function getIsoFormats($locale = null)
- {
- return [
- 'LT' => $this->getTranslationMessage('formats.LT', $locale, 'h:mm A'),
- 'LTS' => $this->getTranslationMessage('formats.LTS', $locale, 'h:mm:ss A'),
- 'L' => $this->getTranslationMessage('formats.L', $locale, 'MM/DD/YYYY'),
- 'LL' => $this->getTranslationMessage('formats.LL', $locale, 'MMMM D, YYYY'),
- 'LLL' => $this->getTranslationMessage('formats.LLL', $locale, 'MMMM D, YYYY h:mm A'),
- 'LLLL' => $this->getTranslationMessage('formats.LLLL', $locale, 'dddd, MMMM D, YYYY h:mm A'),
- ];
- }
-
- /**
- * Returns list of calendar formats for ISO formatting.
- *
- * @param string|null $locale current locale used if null
- *
- * @return array
- */
- public function getCalendarFormats($locale = null)
- {
- return [
- 'sameDay' => $this->getTranslationMessage('calendar.sameDay', $locale, '[Today at] LT'),
- 'nextDay' => $this->getTranslationMessage('calendar.nextDay', $locale, '[Tomorrow at] LT'),
- 'nextWeek' => $this->getTranslationMessage('calendar.nextWeek', $locale, 'dddd [at] LT'),
- 'lastDay' => $this->getTranslationMessage('calendar.lastDay', $locale, '[Yesterday at] LT'),
- 'lastWeek' => $this->getTranslationMessage('calendar.lastWeek', $locale, '[Last] dddd [at] LT'),
- 'sameElse' => $this->getTranslationMessage('calendar.sameElse', $locale, 'L'),
- ];
- }
-
- /**
- * Returns list of locale units for ISO formatting.
- *
- * @return array
- */
- public static function getIsoUnits()
- {
- static $units = null;
-
- if ($units === null) {
- $units = [
- 'OD' => ['getAltNumber', ['day']],
- 'OM' => ['getAltNumber', ['month']],
- 'OY' => ['getAltNumber', ['year']],
- 'OH' => ['getAltNumber', ['hour']],
- 'Oh' => ['getAltNumber', ['h']],
- 'Om' => ['getAltNumber', ['minute']],
- 'Os' => ['getAltNumber', ['second']],
- 'D' => 'day',
- 'DD' => ['rawFormat', ['d']],
- 'Do' => ['ordinal', ['day', 'D']],
- 'd' => 'dayOfWeek',
- 'dd' => function (CarbonInterface $date, $originalFormat = null) {
- return $date->getTranslatedMinDayName($originalFormat);
- },
- 'ddd' => function (CarbonInterface $date, $originalFormat = null) {
- return $date->getTranslatedShortDayName($originalFormat);
- },
- 'dddd' => function (CarbonInterface $date, $originalFormat = null) {
- return $date->getTranslatedDayName($originalFormat);
- },
- 'DDD' => 'dayOfYear',
- 'DDDD' => ['getPaddedUnit', ['dayOfYear', 3]],
- 'DDDo' => ['ordinal', ['dayOfYear', 'DDD']],
- 'e' => ['weekday', []],
- 'E' => 'dayOfWeekIso',
- 'H' => ['rawFormat', ['G']],
- 'HH' => ['rawFormat', ['H']],
- 'h' => ['rawFormat', ['g']],
- 'hh' => ['rawFormat', ['h']],
- 'k' => 'noZeroHour',
- 'kk' => ['getPaddedUnit', ['noZeroHour']],
- 'hmm' => ['rawFormat', ['gi']],
- 'hmmss' => ['rawFormat', ['gis']],
- 'Hmm' => ['rawFormat', ['Gi']],
- 'Hmmss' => ['rawFormat', ['Gis']],
- 'm' => 'minute',
- 'mm' => ['rawFormat', ['i']],
- 'a' => 'meridiem',
- 'A' => 'upperMeridiem',
- 's' => 'second',
- 'ss' => ['getPaddedUnit', ['second']],
- 'S' => function (CarbonInterface $date) {
- return (string) floor($date->micro / 100000);
- },
- 'SS' => function (CarbonInterface $date) {
- return str_pad((string) floor($date->micro / 10000), 2, '0', STR_PAD_LEFT);
- },
- 'SSS' => function (CarbonInterface $date) {
- return str_pad((string) floor($date->micro / 1000), 3, '0', STR_PAD_LEFT);
- },
- 'SSSS' => function (CarbonInterface $date) {
- return str_pad((string) floor($date->micro / 100), 4, '0', STR_PAD_LEFT);
- },
- 'SSSSS' => function (CarbonInterface $date) {
- return str_pad((string) floor($date->micro / 10), 5, '0', STR_PAD_LEFT);
- },
- 'SSSSSS' => ['getPaddedUnit', ['micro', 6]],
- 'SSSSSSS' => function (CarbonInterface $date) {
- return str_pad((string) floor($date->micro * 10), 7, '0', STR_PAD_LEFT);
- },
- 'SSSSSSSS' => function (CarbonInterface $date) {
- return str_pad((string) floor($date->micro * 100), 8, '0', STR_PAD_LEFT);
- },
- 'SSSSSSSSS' => function (CarbonInterface $date) {
- return str_pad((string) floor($date->micro * 1000), 9, '0', STR_PAD_LEFT);
- },
- 'M' => 'month',
- 'MM' => ['rawFormat', ['m']],
- 'MMM' => function (CarbonInterface $date, $originalFormat = null) {
- $month = $date->getTranslatedShortMonthName($originalFormat);
- $suffix = $date->getTranslationMessage('mmm_suffix');
- if ($suffix && $month !== $date->monthName) {
- $month .= $suffix;
- }
-
- return $month;
- },
- 'MMMM' => function (CarbonInterface $date, $originalFormat = null) {
- return $date->getTranslatedMonthName($originalFormat);
- },
- 'Mo' => ['ordinal', ['month', 'M']],
- 'Q' => 'quarter',
- 'Qo' => ['ordinal', ['quarter', 'M']],
- 'G' => 'isoWeekYear',
- 'GG' => ['getPaddedUnit', ['isoWeekYear']],
- 'GGG' => ['getPaddedUnit', ['isoWeekYear', 3]],
- 'GGGG' => ['getPaddedUnit', ['isoWeekYear', 4]],
- 'GGGGG' => ['getPaddedUnit', ['isoWeekYear', 5]],
- 'g' => 'weekYear',
- 'gg' => ['getPaddedUnit', ['weekYear']],
- 'ggg' => ['getPaddedUnit', ['weekYear', 3]],
- 'gggg' => ['getPaddedUnit', ['weekYear', 4]],
- 'ggggg' => ['getPaddedUnit', ['weekYear', 5]],
- 'W' => 'isoWeek',
- 'WW' => ['getPaddedUnit', ['isoWeek']],
- 'Wo' => ['ordinal', ['isoWeek', 'W']],
- 'w' => 'week',
- 'ww' => ['getPaddedUnit', ['week']],
- 'wo' => ['ordinal', ['week', 'w']],
- 'x' => ['valueOf', []],
- 'X' => 'timestamp',
- 'Y' => 'year',
- 'YY' => ['rawFormat', ['y']],
- 'YYYY' => ['getPaddedUnit', ['year', 4]],
- 'YYYYY' => ['getPaddedUnit', ['year', 5]],
- 'YYYYYY' => function (CarbonInterface $date) {
- return ($date->year < 0 ? '' : '+').$date->getPaddedUnit('year', 6);
- },
- 'z' => ['rawFormat', ['T']],
- 'zz' => 'tzName',
- 'Z' => ['getOffsetString', []],
- 'ZZ' => ['getOffsetString', ['']],
- ];
- }
-
- return $units;
- }
-
- /**
- * Returns a unit of the instance padded with 0 by default or any other string if specified.
- *
- * @param string $unit Carbon unit name
- * @param int $length Length of the output (2 by default)
- * @param string $padString String to use for padding ("0" by default)
- * @param int $padType Side(s) to pad (STR_PAD_LEFT by default)
- *
- * @return string
- */
- public function getPaddedUnit($unit, $length = 2, $padString = '0', $padType = STR_PAD_LEFT)
- {
- return ($this->$unit < 0 ? '-' : '').str_pad((string) abs($this->$unit), $length, $padString, $padType);
- }
-
- /**
- * Return a property with its ordinal.
- *
- * @param string $key
- * @param string|null $period
- *
- * @return string
- */
- public function ordinal(string $key, ?string $period = null): string
- {
- $number = $this->$key;
- $result = $this->translate('ordinal', [
- ':number' => $number,
- ':period' => (string) $period,
- ]);
-
- return (string) ($result === 'ordinal' ? $number : $result);
- }
-
- /**
- * Return the meridiem of the current time in the current locale.
- *
- * @param bool $isLower if true, returns lowercase variant if available in the current locale.
- *
- * @return string
- */
- public function meridiem(bool $isLower = false): string
- {
- $hour = $this->hour;
- $index = $hour < 12 ? 0 : 1;
-
- if ($isLower) {
- $key = 'meridiem.'.($index + 2);
- $result = $this->translate($key);
-
- if ($result !== $key) {
- return $result;
- }
- }
-
- $key = "meridiem.$index";
- $result = $this->translate($key);
- if ($result === $key) {
- $result = $this->translate('meridiem', [
- ':hour' => $this->hour,
- ':minute' => $this->minute,
- ':isLower' => $isLower,
- ]);
-
- if ($result === 'meridiem') {
- return $isLower ? $this->latinMeridiem : $this->latinUpperMeridiem;
- }
- } elseif ($isLower) {
- $result = mb_strtolower($result);
- }
-
- return $result;
- }
-
- /**
- * Returns the alternative number for a given date property if available in the current locale.
- *
- * @param string $key date property
- *
- * @return string
- */
- public function getAltNumber(string $key): string
- {
- return $this->translateNumber(\strlen($key) > 1 ? $this->$key : $this->rawFormat('h'));
- }
-
- /**
- * Format in the current language using ISO replacement patterns.
- *
- * @param string $format
- * @param string|null $originalFormat provide context if a chunk has been passed alone
- *
- * @return string
- */
- public function isoFormat(string $format, ?string $originalFormat = null): string
- {
- $result = '';
- $length = mb_strlen($format);
- $originalFormat = $originalFormat ?: $format;
- $inEscaped = false;
- $formats = null;
- $units = null;
-
- for ($i = 0; $i < $length; $i++) {
- $char = mb_substr($format, $i, 1);
-
- if ($char === '\\') {
- $result .= mb_substr($format, ++$i, 1);
-
- continue;
- }
-
- if ($char === '[' && !$inEscaped) {
- $inEscaped = true;
-
- continue;
- }
-
- if ($char === ']' && $inEscaped) {
- $inEscaped = false;
-
- continue;
- }
-
- if ($inEscaped) {
- $result .= $char;
-
- continue;
- }
-
- $input = mb_substr($format, $i);
-
- if (preg_match('/^(LTS|LT|[Ll]{1,4})/', $input, $match)) {
- if ($formats === null) {
- $formats = $this->getIsoFormats();
- }
-
- $code = $match[0];
- $sequence = $formats[$code] ?? preg_replace_callback(
- '/MMMM|MM|DD|dddd/',
- function ($code) {
- return mb_substr($code[0], 1);
- },
- $formats[strtoupper($code)] ?? ''
- );
- $rest = mb_substr($format, $i + mb_strlen($code));
- $format = mb_substr($format, 0, $i).$sequence.$rest;
- $length = mb_strlen($format);
- $input = $sequence.$rest;
- }
-
- if (preg_match('/^'.CarbonInterface::ISO_FORMAT_REGEXP.'/', $input, $match)) {
- $code = $match[0];
-
- if ($units === null) {
- $units = static::getIsoUnits();
- }
-
- $sequence = $units[$code] ?? '';
-
- if ($sequence instanceof Closure) {
- $sequence = $sequence($this, $originalFormat);
- } elseif (\is_array($sequence)) {
- try {
- $sequence = $this->{$sequence[0]}(...$sequence[1]);
- } catch (ReflectionException | InvalidArgumentException | BadMethodCallException $e) {
- $sequence = '';
- }
- } elseif (\is_string($sequence)) {
- $sequence = $this->$sequence ?? $code;
- }
-
- $format = mb_substr($format, 0, $i).$sequence.mb_substr($format, $i + mb_strlen($code));
- $i += mb_strlen((string) $sequence) - 1;
- $length = mb_strlen($format);
- $char = $sequence;
- }
-
- $result .= $char;
- }
-
- return $result;
- }
-
- /**
- * List of replacements from date() format to isoFormat().
- *
- * @return array
- */
- public static function getFormatsToIsoReplacements()
- {
- static $replacements = null;
-
- if ($replacements === null) {
- $replacements = [
- 'd' => true,
- 'D' => 'ddd',
- 'j' => true,
- 'l' => 'dddd',
- 'N' => true,
- 'S' => function ($date) {
- $day = $date->rawFormat('j');
-
- return str_replace((string) $day, '', $date->isoFormat('Do'));
- },
- 'w' => true,
- 'z' => true,
- 'W' => true,
- 'F' => 'MMMM',
- 'm' => true,
- 'M' => 'MMM',
- 'n' => true,
- 't' => true,
- 'L' => true,
- 'o' => true,
- 'Y' => true,
- 'y' => true,
- 'a' => 'a',
- 'A' => 'A',
- 'B' => true,
- 'g' => true,
- 'G' => true,
- 'h' => true,
- 'H' => true,
- 'i' => true,
- 's' => true,
- 'u' => true,
- 'v' => true,
- 'E' => true,
- 'I' => true,
- 'O' => true,
- 'P' => true,
- 'Z' => true,
- 'c' => true,
- 'r' => true,
- 'U' => true,
- ];
- }
-
- return $replacements;
- }
-
- /**
- * Format as ->format() do (using date replacements patterns from https://php.net/manual/en/function.date.php)
- * but translate words whenever possible (months, day names, etc.) using the current locale.
- *
- * @param string $format
- *
- * @return string
- */
- public function translatedFormat(string $format): string
- {
- $replacements = static::getFormatsToIsoReplacements();
- $context = '';
- $isoFormat = '';
- $length = mb_strlen($format);
-
- for ($i = 0; $i < $length; $i++) {
- $char = mb_substr($format, $i, 1);
-
- if ($char === '\\') {
- $replacement = mb_substr($format, $i, 2);
- $isoFormat .= $replacement;
- $i++;
-
- continue;
- }
-
- if (!isset($replacements[$char])) {
- $replacement = preg_match('/^[A-Za-z]$/', $char) ? "\\$char" : $char;
- $isoFormat .= $replacement;
- $context .= $replacement;
-
- continue;
- }
-
- $replacement = $replacements[$char];
-
- if ($replacement === true) {
- static $contextReplacements = null;
-
- if ($contextReplacements === null) {
- $contextReplacements = [
- 'm' => 'MM',
- 'd' => 'DD',
- 't' => 'D',
- 'j' => 'D',
- 'N' => 'e',
- 'w' => 'e',
- 'n' => 'M',
- 'o' => 'YYYY',
- 'Y' => 'YYYY',
- 'y' => 'YY',
- 'g' => 'h',
- 'G' => 'H',
- 'h' => 'hh',
- 'H' => 'HH',
- 'i' => 'mm',
- 's' => 'ss',
- ];
- }
-
- $isoFormat .= '['.$this->rawFormat($char).']';
- $context .= $contextReplacements[$char] ?? ' ';
-
- continue;
- }
-
- if ($replacement instanceof Closure) {
- $replacement = '['.$replacement($this).']';
- $isoFormat .= $replacement;
- $context .= $replacement;
-
- continue;
- }
-
- $isoFormat .= $replacement;
- $context .= $replacement;
- }
-
- return $this->isoFormat($isoFormat, $context);
- }
-
- /**
- * Returns the offset hour and minute formatted with +/- and a given separator (":" by default).
- * For example, if the time zone is 9 hours 30 minutes, you'll get "+09:30", with "@@" as first
- * argument, "+09@@30", with "" as first argument, "+0930". Negative offset will return something
- * like "-12:00".
- *
- * @param string $separator string to place between hours and minutes (":" by default)
- *
- * @return string
- */
- public function getOffsetString($separator = ':')
- {
- $second = $this->getOffset();
- $symbol = $second < 0 ? '-' : '+';
- $minute = abs($second) / static::SECONDS_PER_MINUTE;
- $hour = str_pad((string) floor($minute / static::MINUTES_PER_HOUR), 2, '0', STR_PAD_LEFT);
- $minute = str_pad((string) ($minute % static::MINUTES_PER_HOUR), 2, '0', STR_PAD_LEFT);
-
- return "$symbol$hour$separator$minute";
- }
-
- protected static function executeStaticCallable($macro, ...$parameters)
- {
- return static::bindMacroContext(null, function () use (&$macro, &$parameters) {
- if ($macro instanceof Closure) {
- $boundMacro = @Closure::bind($macro, null, static::class);
-
- return ($boundMacro ?: $macro)(...$parameters);
- }
-
- return $macro(...$parameters);
- });
- }
-
- /**
- * Dynamically handle calls to the class.
- *
- * @param string $method magic method name called
- * @param array $parameters parameters list
- *
- * @throws BadMethodCallException
- *
- * @return mixed
- */
- public static function __callStatic($method, $parameters)
- {
- if (!static::hasMacro($method)) {
- foreach (static::getGenericMacros() as $callback) {
- try {
- return static::executeStaticCallable($callback, $method, ...$parameters);
- } catch (BadMethodCallException $exception) {
- continue;
- }
- }
- if (static::isStrictModeEnabled()) {
- throw new UnknownMethodException(sprintf('%s::%s', static::class, $method));
- }
-
- return null;
- }
-
- return static::executeStaticCallable(static::$globalMacros[$method], ...$parameters);
- }
-
- /**
- * Set specified unit to new given value.
- *
- * @param string $unit year, month, day, hour, minute, second or microsecond
- * @param int $value new value for given unit
- *
- * @return static
- */
- public function setUnit($unit, $value = null)
- {
- $unit = static::singularUnit($unit);
- $dateUnits = ['year', 'month', 'day'];
- if (\in_array($unit, $dateUnits)) {
- return $this->setDate(...array_map(function ($name) use ($unit, $value) {
- return (int) ($name === $unit ? $value : $this->$name);
- }, $dateUnits));
- }
-
- $units = ['hour', 'minute', 'second', 'micro'];
- if ($unit === 'millisecond' || $unit === 'milli') {
- $value *= 1000;
- $unit = 'micro';
- } elseif ($unit === 'microsecond') {
- $unit = 'micro';
- }
-
- return $this->setTime(...array_map(function ($name) use ($unit, $value) {
- return (int) ($name === $unit ? $value : $this->$name);
- }, $units));
- }
-
- /**
- * Returns standardized singular of a given singular/plural unit name (in English).
- *
- * @param string $unit
- *
- * @return string
- */
- public static function singularUnit(string $unit): string
- {
- $unit = rtrim(mb_strtolower($unit), 's');
-
- if ($unit === 'centurie') {
- return 'century';
- }
-
- if ($unit === 'millennia') {
- return 'millennium';
- }
-
- return $unit;
- }
-
- /**
- * Returns standardized plural of a given singular/plural unit name (in English).
- *
- * @param string $unit
- *
- * @return string
- */
- public static function pluralUnit(string $unit): string
- {
- $unit = rtrim(strtolower($unit), 's');
-
- if ($unit === 'century') {
- return 'centuries';
- }
-
- if ($unit === 'millennium' || $unit === 'millennia') {
- return 'millennia';
- }
-
- return "${unit}s";
- }
-
- protected function executeCallable($macro, ...$parameters)
- {
- if ($macro instanceof Closure) {
- $boundMacro = @$macro->bindTo($this, static::class) ?: @$macro->bindTo(null, static::class);
-
- return ($boundMacro ?: $macro)(...$parameters);
- }
-
- return $macro(...$parameters);
- }
-
- protected function executeCallableWithContext($macro, ...$parameters)
- {
- return static::bindMacroContext($this, function () use (&$macro, &$parameters) {
- return $this->executeCallable($macro, ...$parameters);
- });
- }
-
- protected static function getGenericMacros()
- {
- foreach (static::$globalGenericMacros as $list) {
- foreach ($list as $macro) {
- yield $macro;
- }
- }
- }
-
- /**
- * Dynamically handle calls to the class.
- *
- * @param string $method magic method name called
- * @param array $parameters parameters list
- *
- * @throws UnknownMethodException|BadMethodCallException|ReflectionException|Throwable
- *
- * @return mixed
- */
- public function __call($method, $parameters)
- {
- $diffSizes = [
- // @mode diffForHumans
- 'short' => true,
- // @mode diffForHumans
- 'long' => false,
- ];
- $diffSyntaxModes = [
- // @call diffForHumans
- 'Absolute' => CarbonInterface::DIFF_ABSOLUTE,
- // @call diffForHumans
- 'Relative' => CarbonInterface::DIFF_RELATIVE_AUTO,
- // @call diffForHumans
- 'RelativeToNow' => CarbonInterface::DIFF_RELATIVE_TO_NOW,
- // @call diffForHumans
- 'RelativeToOther' => CarbonInterface::DIFF_RELATIVE_TO_OTHER,
- ];
- $sizePattern = implode('|', array_keys($diffSizes));
- $syntaxPattern = implode('|', array_keys($diffSyntaxModes));
-
- if (preg_match("/^(?$sizePattern)(?$syntaxPattern)DiffForHumans$/", $method, $match)) {
- $dates = array_filter($parameters, function ($parameter) {
- return $parameter instanceof DateTimeInterface;
- });
- $other = null;
-
- if (\count($dates)) {
- $key = key($dates);
- $other = current($dates);
- array_splice($parameters, $key, 1);
- }
-
- return $this->diffForHumans($other, $diffSyntaxModes[$match['syntax']], $diffSizes[$match['size']], ...$parameters);
- }
-
- $roundedValue = $this->callRoundMethod($method, $parameters);
-
- if ($roundedValue !== null) {
- return $roundedValue;
- }
-
- $unit = rtrim($method, 's');
-
- if (str_starts_with($unit, 'is')) {
- $word = substr($unit, 2);
-
- if (\in_array($word, static::$days)) {
- return $this->isDayOfWeek($word);
- }
-
- switch ($word) {
- // @call is Check if the current instance has UTC timezone. (Both isUtc and isUTC cases are valid.)
- case 'Utc':
- case 'UTC':
- return $this->utc;
- // @call is Check if the current instance has non-UTC timezone.
- case 'Local':
- return $this->local;
- // @call is Check if the current instance is a valid date.
- case 'Valid':
- return $this->year !== 0;
- // @call is Check if the current instance is in a daylight saving time.
- case 'DST':
- return $this->dst;
- }
- }
-
- $action = substr($unit, 0, 3);
- $overflow = null;
-
- if ($action === 'set') {
- $unit = strtolower(substr($unit, 3));
- }
-
- if (\in_array($unit, static::$units)) {
- return $this->setUnit($unit, ...$parameters);
- }
-
- if ($action === 'add' || $action === 'sub') {
- $unit = substr($unit, 3);
-
- if (str_starts_with($unit, 'Real')) {
- $unit = static::singularUnit(substr($unit, 4));
-
- return $this->{"${action}RealUnit"}($unit, ...$parameters);
- }
-
- if (preg_match('/^(Month|Quarter|Year|Decade|Century|Centurie|Millennium|Millennia)s?(No|With|Without|WithNo)Overflow$/', $unit, $match)) {
- $unit = $match[1];
- $overflow = $match[2] === 'With';
- }
-
- $unit = static::singularUnit($unit);
- }
-
- if (static::isModifiableUnit($unit)) {
- return $this->{"${action}Unit"}($unit, $parameters[0] ?? 1, $overflow);
- }
-
- $sixFirstLetters = substr($unit, 0, 6);
- $factor = -1;
-
- if ($sixFirstLetters === 'isLast') {
- $sixFirstLetters = 'isNext';
- $factor = 1;
- }
-
- if ($sixFirstLetters === 'isNext') {
- $lowerUnit = strtolower(substr($unit, 6));
-
- if (static::isModifiableUnit($lowerUnit)) {
- return $this->copy()->addUnit($lowerUnit, $factor, false)->isSameUnit($lowerUnit, ...$parameters);
- }
- }
-
- if ($sixFirstLetters === 'isSame') {
- try {
- return $this->isSameUnit(strtolower(substr($unit, 6)), ...$parameters);
- } catch (BadComparisonUnitException $exception) {
- // Try next
- }
- }
-
- if (str_starts_with($unit, 'isCurrent')) {
- try {
- return $this->isCurrentUnit(strtolower(substr($unit, 9)));
- } catch (BadComparisonUnitException | BadMethodCallException $exception) {
- // Try next
- }
- }
-
- if (str_ends_with($method, 'Until')) {
- try {
- $unit = static::singularUnit(substr($method, 0, -5));
-
- return $this->range($parameters[0] ?? $this, $parameters[1] ?? 1, $unit);
- } catch (InvalidArgumentException $exception) {
- // Try macros
- }
- }
-
- return static::bindMacroContext($this, function () use (&$method, &$parameters) {
- $macro = $this->getLocalMacro($method);
-
- if (!$macro) {
- foreach ([$this->localGenericMacros ?: [], static::getGenericMacros()] as $list) {
- foreach ($list as $callback) {
- try {
- return $this->executeCallable($callback, $method, ...$parameters);
- } catch (BadMethodCallException $exception) {
- continue;
- }
- }
- }
-
- if ($this->localStrictModeEnabled ?? static::isStrictModeEnabled()) {
- throw new UnknownMethodException($method);
- }
-
- return null;
- }
-
- return $this->executeCallable($macro, ...$parameters);
- });
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Difference.php b/vendor/nesbot/carbon/src/Carbon/Traits/Difference.php
deleted file mode 100644
index eb560576..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Traits/Difference.php
+++ /dev/null
@@ -1,1144 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Traits;
-
-use Carbon\Carbon;
-use Carbon\CarbonImmutable;
-use Carbon\CarbonInterface;
-use Carbon\CarbonInterval;
-use Carbon\CarbonPeriod;
-use Carbon\Translator;
-use Closure;
-use DateInterval;
-use DateTimeInterface;
-use ReturnTypeWillChange;
-
-/**
- * Trait Difference.
- *
- * Depends on the following methods:
- *
- * @method bool lessThan($date)
- * @method static copy()
- * @method static resolveCarbon($date = null)
- * @method static Translator translator()
- */
-trait Difference
-{
- /**
- * @codeCoverageIgnore
- *
- * @param CarbonInterval $diff
- */
- protected static function fixNegativeMicroseconds(CarbonInterval $diff)
- {
- if ($diff->s !== 0 || $diff->i !== 0 || $diff->h !== 0 || $diff->d !== 0 || $diff->m !== 0 || $diff->y !== 0) {
- $diff->f = (round($diff->f * 1000000) + 1000000) / 1000000;
- $diff->s--;
-
- if ($diff->s < 0) {
- $diff->s += 60;
- $diff->i--;
-
- if ($diff->i < 0) {
- $diff->i += 60;
- $diff->h--;
-
- if ($diff->h < 0) {
- $diff->h += 24;
- $diff->d--;
-
- if ($diff->d < 0) {
- $diff->d += 30;
- $diff->m--;
-
- if ($diff->m < 0) {
- $diff->m += 12;
- $diff->y--;
- }
- }
- }
- }
- }
-
- return;
- }
-
- $diff->f *= -1;
- $diff->invert();
- }
-
- /**
- * @param DateInterval $diff
- * @param bool $absolute
- *
- * @return CarbonInterval
- */
- protected static function fixDiffInterval(DateInterval $diff, $absolute)
- {
- $diff = CarbonInterval::instance($diff);
-
- // Work-around for https://bugs.php.net/bug.php?id=77145
- // @codeCoverageIgnoreStart
- if ($diff->f > 0 && $diff->y === -1 && $diff->m === 11 && $diff->d >= 27 && $diff->h === 23 && $diff->i === 59 && $diff->s === 59) {
- $diff->y = 0;
- $diff->m = 0;
- $diff->d = 0;
- $diff->h = 0;
- $diff->i = 0;
- $diff->s = 0;
- $diff->f = (1000000 - round($diff->f * 1000000)) / 1000000;
- $diff->invert();
- } elseif ($diff->f < 0) {
- static::fixNegativeMicroseconds($diff);
- }
- // @codeCoverageIgnoreEnd
-
- if ($absolute && $diff->invert) {
- $diff->invert();
- }
-
- return $diff;
- }
-
- /**
- * Get the difference as a DateInterval instance.
- * Return relative interval (negative if
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return DateInterval
- */
- #[ReturnTypeWillChange]
- public function diff($date = null, $absolute = false)
- {
- $other = $this->resolveCarbon($date);
-
- // Work-around for https://bugs.php.net/bug.php?id=81458
- // It was initially introduced for https://bugs.php.net/bug.php?id=80998
- // The very specific case of 80998 was fixed in PHP 8.1beta3, but it introduced 81458
- // So we still need to keep this for now
- // @codeCoverageIgnoreStart
- if (version_compare(PHP_VERSION, '8.1.0-dev', '>=') && $other->tz !== $this->tz) {
- $other = $other->avoidMutation()->tz($this->tz);
- }
- // @codeCoverageIgnoreEnd
-
- return parent::diff($other, (bool) $absolute);
- }
-
- /**
- * Get the difference as a CarbonInterval instance.
- * Return absolute interval (always positive) unless you pass false to the second argument.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return CarbonInterval
- */
- public function diffAsCarbonInterval($date = null, $absolute = true)
- {
- return static::fixDiffInterval($this->diff($this->resolveCarbon($date), $absolute), $absolute);
- }
-
- /**
- * Get the difference in years
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInYears($date = null, $absolute = true)
- {
- return (int) $this->diff($this->resolveCarbon($date), $absolute)->format('%r%y');
- }
-
- /**
- * Get the difference in quarters rounded down.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInQuarters($date = null, $absolute = true)
- {
- return (int) ($this->diffInMonths($date, $absolute) / static::MONTHS_PER_QUARTER);
- }
-
- /**
- * Get the difference in months rounded down.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInMonths($date = null, $absolute = true)
- {
- $date = $this->resolveCarbon($date);
-
- return $this->diffInYears($date, $absolute) * static::MONTHS_PER_YEAR + (int) $this->diff($date, $absolute)->format('%r%m');
- }
-
- /**
- * Get the difference in weeks rounded down.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInWeeks($date = null, $absolute = true)
- {
- return (int) ($this->diffInDays($date, $absolute) / static::DAYS_PER_WEEK);
- }
-
- /**
- * Get the difference in days rounded down.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInDays($date = null, $absolute = true)
- {
- return (int) $this->diff($this->resolveCarbon($date), $absolute)->format('%r%a');
- }
-
- /**
- * Get the difference in days using a filter closure rounded down.
- *
- * @param Closure $callback
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInDaysFiltered(Closure $callback, $date = null, $absolute = true)
- {
- return $this->diffFiltered(CarbonInterval::day(), $callback, $date, $absolute);
- }
-
- /**
- * Get the difference in hours using a filter closure rounded down.
- *
- * @param Closure $callback
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInHoursFiltered(Closure $callback, $date = null, $absolute = true)
- {
- return $this->diffFiltered(CarbonInterval::hour(), $callback, $date, $absolute);
- }
-
- /**
- * Get the difference by the given interval using a filter closure.
- *
- * @param CarbonInterval $ci An interval to traverse by
- * @param Closure $callback
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffFiltered(CarbonInterval $ci, Closure $callback, $date = null, $absolute = true)
- {
- $start = $this;
- $end = $this->resolveCarbon($date);
- $inverse = false;
-
- if ($end < $start) {
- $start = $end;
- $end = $this;
- $inverse = true;
- }
-
- $options = CarbonPeriod::EXCLUDE_END_DATE | ($this->isMutable() ? 0 : CarbonPeriod::IMMUTABLE);
- $diff = $ci->toPeriod($start, $end, $options)->filter($callback)->count();
-
- return $inverse && !$absolute ? -$diff : $diff;
- }
-
- /**
- * Get the difference in weekdays rounded down.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInWeekdays($date = null, $absolute = true)
- {
- return $this->diffInDaysFiltered(function (CarbonInterface $date) {
- return $date->isWeekday();
- }, $date, $absolute);
- }
-
- /**
- * Get the difference in weekend days using a filter rounded down.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInWeekendDays($date = null, $absolute = true)
- {
- return $this->diffInDaysFiltered(function (CarbonInterface $date) {
- return $date->isWeekend();
- }, $date, $absolute);
- }
-
- /**
- * Get the difference in hours rounded down.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInHours($date = null, $absolute = true)
- {
- return (int) ($this->diffInSeconds($date, $absolute) / static::SECONDS_PER_MINUTE / static::MINUTES_PER_HOUR);
- }
-
- /**
- * Get the difference in hours rounded down using timestamps.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInRealHours($date = null, $absolute = true)
- {
- return (int) ($this->diffInRealSeconds($date, $absolute) / static::SECONDS_PER_MINUTE / static::MINUTES_PER_HOUR);
- }
-
- /**
- * Get the difference in minutes rounded down.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInMinutes($date = null, $absolute = true)
- {
- return (int) ($this->diffInSeconds($date, $absolute) / static::SECONDS_PER_MINUTE);
- }
-
- /**
- * Get the difference in minutes rounded down using timestamps.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInRealMinutes($date = null, $absolute = true)
- {
- return (int) ($this->diffInRealSeconds($date, $absolute) / static::SECONDS_PER_MINUTE);
- }
-
- /**
- * Get the difference in seconds rounded down.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInSeconds($date = null, $absolute = true)
- {
- $diff = $this->diff($date);
-
- if ($diff->days === 0) {
- $diff = static::fixDiffInterval($diff, $absolute);
- }
-
- $value = (((($diff->m || $diff->y ? $diff->days : $diff->d) * static::HOURS_PER_DAY) +
- $diff->h) * static::MINUTES_PER_HOUR +
- $diff->i) * static::SECONDS_PER_MINUTE +
- $diff->s;
-
- return $absolute || !$diff->invert ? $value : -$value;
- }
-
- /**
- * Get the difference in microseconds.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInMicroseconds($date = null, $absolute = true)
- {
- $diff = $this->diff($date);
- $value = (int) round(((((($diff->m || $diff->y ? $diff->days : $diff->d) * static::HOURS_PER_DAY) +
- $diff->h) * static::MINUTES_PER_HOUR +
- $diff->i) * static::SECONDS_PER_MINUTE +
- ($diff->f + $diff->s)) * static::MICROSECONDS_PER_SECOND);
-
- return $absolute || !$diff->invert ? $value : -$value;
- }
-
- /**
- * Get the difference in milliseconds rounded down.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInMilliseconds($date = null, $absolute = true)
- {
- return (int) ($this->diffInMicroseconds($date, $absolute) / static::MICROSECONDS_PER_MILLISECOND);
- }
-
- /**
- * Get the difference in seconds using timestamps.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInRealSeconds($date = null, $absolute = true)
- {
- /** @var CarbonInterface $date */
- $date = $this->resolveCarbon($date);
- $value = $date->getTimestamp() - $this->getTimestamp();
-
- return $absolute ? abs($value) : $value;
- }
-
- /**
- * Get the difference in microseconds using timestamps.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInRealMicroseconds($date = null, $absolute = true)
- {
- /** @var CarbonInterface $date */
- $date = $this->resolveCarbon($date);
- $value = ($date->timestamp - $this->timestamp) * static::MICROSECONDS_PER_SECOND +
- $date->micro - $this->micro;
-
- return $absolute ? abs($value) : $value;
- }
-
- /**
- * Get the difference in milliseconds rounded down using timestamps.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return int
- */
- public function diffInRealMilliseconds($date = null, $absolute = true)
- {
- return (int) ($this->diffInRealMicroseconds($date, $absolute) / static::MICROSECONDS_PER_MILLISECOND);
- }
-
- /**
- * Get the difference in seconds as float (microsecond-precision).
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return float
- */
- public function floatDiffInSeconds($date = null, $absolute = true)
- {
- return $this->diffInMicroseconds($date, $absolute) / static::MICROSECONDS_PER_SECOND;
- }
-
- /**
- * Get the difference in minutes as float (microsecond-precision).
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return float
- */
- public function floatDiffInMinutes($date = null, $absolute = true)
- {
- return $this->floatDiffInSeconds($date, $absolute) / static::SECONDS_PER_MINUTE;
- }
-
- /**
- * Get the difference in hours as float (microsecond-precision).
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return float
- */
- public function floatDiffInHours($date = null, $absolute = true)
- {
- return $this->floatDiffInMinutes($date, $absolute) / static::MINUTES_PER_HOUR;
- }
-
- /**
- * Get the difference in days as float (microsecond-precision).
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return float
- */
- public function floatDiffInDays($date = null, $absolute = true)
- {
- $hoursDiff = $this->floatDiffInHours($date, $absolute);
- $interval = $this->diff($date, $absolute);
-
- if ($interval->y === 0 && $interval->m === 0 && $interval->d === 0) {
- return $hoursDiff / static::HOURS_PER_DAY;
- }
-
- $daysDiff = (int) $interval->format('%r%a');
-
- return $daysDiff + fmod($hoursDiff, static::HOURS_PER_DAY) / static::HOURS_PER_DAY;
- }
-
- /**
- * Get the difference in weeks as float (microsecond-precision).
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return float
- */
- public function floatDiffInWeeks($date = null, $absolute = true)
- {
- return $this->floatDiffInDays($date, $absolute) / static::DAYS_PER_WEEK;
- }
-
- /**
- * Get the difference in months as float (microsecond-precision).
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return float
- */
- public function floatDiffInMonths($date = null, $absolute = true)
- {
- $start = $this;
- $end = $this->resolveCarbon($date);
- $ascending = ($start <= $end);
- $sign = $absolute || $ascending ? 1 : -1;
- if (!$ascending) {
- [$start, $end] = [$end, $start];
- }
- $monthsDiff = $start->diffInMonths($end);
- /** @var Carbon|CarbonImmutable $floorEnd */
- $floorEnd = $start->avoidMutation()->addMonths($monthsDiff);
-
- if ($floorEnd >= $end) {
- return $sign * $monthsDiff;
- }
-
- /** @var Carbon|CarbonImmutable $startOfMonthAfterFloorEnd */
- $startOfMonthAfterFloorEnd = $floorEnd->avoidMutation()->addMonth()->startOfMonth();
-
- if ($startOfMonthAfterFloorEnd > $end) {
- return $sign * ($monthsDiff + $floorEnd->floatDiffInDays($end) / $floorEnd->daysInMonth);
- }
-
- return $sign * ($monthsDiff + $floorEnd->floatDiffInDays($startOfMonthAfterFloorEnd) / $floorEnd->daysInMonth + $startOfMonthAfterFloorEnd->floatDiffInDays($end) / $end->daysInMonth);
- }
-
- /**
- * Get the difference in year as float (microsecond-precision).
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return float
- */
- public function floatDiffInYears($date = null, $absolute = true)
- {
- $start = $this;
- $end = $this->resolveCarbon($date);
- $ascending = ($start <= $end);
- $sign = $absolute || $ascending ? 1 : -1;
- if (!$ascending) {
- [$start, $end] = [$end, $start];
- }
- $yearsDiff = $start->diffInYears($end);
- /** @var Carbon|CarbonImmutable $floorEnd */
- $floorEnd = $start->avoidMutation()->addYears($yearsDiff);
-
- if ($floorEnd >= $end) {
- return $sign * $yearsDiff;
- }
-
- /** @var Carbon|CarbonImmutable $startOfYearAfterFloorEnd */
- $startOfYearAfterFloorEnd = $floorEnd->avoidMutation()->addYear()->startOfYear();
-
- if ($startOfYearAfterFloorEnd > $end) {
- return $sign * ($yearsDiff + $floorEnd->floatDiffInDays($end) / $floorEnd->daysInYear);
- }
-
- return $sign * ($yearsDiff + $floorEnd->floatDiffInDays($startOfYearAfterFloorEnd) / $floorEnd->daysInYear + $startOfYearAfterFloorEnd->floatDiffInDays($end) / $end->daysInYear);
- }
-
- /**
- * Get the difference in seconds as float (microsecond-precision) using timestamps.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return float
- */
- public function floatDiffInRealSeconds($date = null, $absolute = true)
- {
- return $this->diffInRealMicroseconds($date, $absolute) / static::MICROSECONDS_PER_SECOND;
- }
-
- /**
- * Get the difference in minutes as float (microsecond-precision) using timestamps.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return float
- */
- public function floatDiffInRealMinutes($date = null, $absolute = true)
- {
- return $this->floatDiffInRealSeconds($date, $absolute) / static::SECONDS_PER_MINUTE;
- }
-
- /**
- * Get the difference in hours as float (microsecond-precision) using timestamps.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return float
- */
- public function floatDiffInRealHours($date = null, $absolute = true)
- {
- return $this->floatDiffInRealMinutes($date, $absolute) / static::MINUTES_PER_HOUR;
- }
-
- /**
- * Get the difference in days as float (microsecond-precision).
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return float
- */
- public function floatDiffInRealDays($date = null, $absolute = true)
- {
- $date = $this->resolveUTC($date);
- $utc = $this->avoidMutation()->utc();
- $hoursDiff = $utc->floatDiffInRealHours($date, $absolute);
-
- return ($hoursDiff < 0 ? -1 : 1) * $utc->diffInDays($date) + fmod($hoursDiff, static::HOURS_PER_DAY) / static::HOURS_PER_DAY;
- }
-
- /**
- * Get the difference in weeks as float (microsecond-precision).
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return float
- */
- public function floatDiffInRealWeeks($date = null, $absolute = true)
- {
- return $this->floatDiffInRealDays($date, $absolute) / static::DAYS_PER_WEEK;
- }
-
- /**
- * Get the difference in months as float (microsecond-precision) using timestamps.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return float
- */
- public function floatDiffInRealMonths($date = null, $absolute = true)
- {
- $start = $this;
- $end = $this->resolveCarbon($date);
- $ascending = ($start <= $end);
- $sign = $absolute || $ascending ? 1 : -1;
- if (!$ascending) {
- [$start, $end] = [$end, $start];
- }
- $monthsDiff = $start->diffInMonths($end);
- /** @var Carbon|CarbonImmutable $floorEnd */
- $floorEnd = $start->avoidMutation()->addMonths($monthsDiff);
-
- if ($floorEnd >= $end) {
- return $sign * $monthsDiff;
- }
-
- /** @var Carbon|CarbonImmutable $startOfMonthAfterFloorEnd */
- $startOfMonthAfterFloorEnd = $floorEnd->avoidMutation()->addMonth()->startOfMonth();
-
- if ($startOfMonthAfterFloorEnd > $end) {
- return $sign * ($monthsDiff + $floorEnd->floatDiffInRealDays($end) / $floorEnd->daysInMonth);
- }
-
- return $sign * ($monthsDiff + $floorEnd->floatDiffInRealDays($startOfMonthAfterFloorEnd) / $floorEnd->daysInMonth + $startOfMonthAfterFloorEnd->floatDiffInRealDays($end) / $end->daysInMonth);
- }
-
- /**
- * Get the difference in year as float (microsecond-precision) using timestamps.
- *
- * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
- * @param bool $absolute Get the absolute of the difference
- *
- * @return float
- */
- public function floatDiffInRealYears($date = null, $absolute = true)
- {
- $start = $this;
- $end = $this->resolveCarbon($date);
- $ascending = ($start <= $end);
- $sign = $absolute || $ascending ? 1 : -1;
- if (!$ascending) {
- [$start, $end] = [$end, $start];
- }
- $yearsDiff = $start->diffInYears($end);
- /** @var Carbon|CarbonImmutable $floorEnd */
- $floorEnd = $start->avoidMutation()->addYears($yearsDiff);
-
- if ($floorEnd >= $end) {
- return $sign * $yearsDiff;
- }
-
- /** @var Carbon|CarbonImmutable $startOfYearAfterFloorEnd */
- $startOfYearAfterFloorEnd = $floorEnd->avoidMutation()->addYear()->startOfYear();
-
- if ($startOfYearAfterFloorEnd > $end) {
- return $sign * ($yearsDiff + $floorEnd->floatDiffInRealDays($end) / $floorEnd->daysInYear);
- }
-
- return $sign * ($yearsDiff + $floorEnd->floatDiffInRealDays($startOfYearAfterFloorEnd) / $floorEnd->daysInYear + $startOfYearAfterFloorEnd->floatDiffInRealDays($end) / $end->daysInYear);
- }
-
- /**
- * The number of seconds since midnight.
- *
- * @return int
- */
- public function secondsSinceMidnight()
- {
- return $this->diffInSeconds($this->avoidMutation()->startOfDay());
- }
-
- /**
- * The number of seconds until 23:59:59.
- *
- * @return int
- */
- public function secondsUntilEndOfDay()
- {
- return $this->diffInSeconds($this->avoidMutation()->endOfDay());
- }
-
- /**
- * Get the difference in a human readable format in the current locale from current instance to an other
- * instance given (or now if null given).
- *
- * @example
- * ```
- * echo Carbon::tomorrow()->diffForHumans() . "\n";
- * echo Carbon::tomorrow()->diffForHumans(['parts' => 2]) . "\n";
- * echo Carbon::tomorrow()->diffForHumans(['parts' => 3, 'join' => true]) . "\n";
- * echo Carbon::tomorrow()->diffForHumans(Carbon::yesterday()) . "\n";
- * echo Carbon::tomorrow()->diffForHumans(Carbon::yesterday(), ['short' => true]) . "\n";
- * ```
- *
- * @param Carbon|\DateTimeInterface|string|array|null $other if array passed, will be used as parameters array, see $syntax below;
- * if null passed, now will be used as comparison reference;
- * if any other type, it will be converted to date and used as reference.
- * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains:
- * - 'syntax' entry (see below)
- * - 'short' entry (see below)
- * - 'parts' entry (see below)
- * - 'options' entry (see below)
- * - 'join' entry determines how to join multiple parts of the string
- * ` - if $join is a string, it's used as a joiner glue
- * ` - if $join is a callable/closure, it get the list of string and should return a string
- * ` - if $join is an array, the first item will be the default glue, and the second item
- * ` will be used instead of the glue for the last item
- * ` - if $join is true, it will be guessed from the locale ('list' translation file entry)
- * ` - if $join is missing, a space will be used as glue
- * - 'other' entry (see above)
- * if int passed, it add modifiers:
- * Possible values:
- * - CarbonInterface::DIFF_ABSOLUTE no modifiers
- * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier
- * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier
- * Default value: CarbonInterface::DIFF_ABSOLUTE
- * @param bool $short displays short format of time units
- * @param int $parts maximum number of parts to display (default value: 1: single unit)
- * @param int $options human diff options
- *
- * @return string
- */
- public function diffForHumans($other = null, $syntax = null, $short = false, $parts = 1, $options = null)
- {
- /* @var CarbonInterface $this */
- if (\is_array($other)) {
- $other['syntax'] = \array_key_exists('syntax', $other) ? $other['syntax'] : $syntax;
- $syntax = $other;
- $other = $syntax['other'] ?? null;
- }
-
- $intSyntax = &$syntax;
- if (\is_array($syntax)) {
- $syntax['syntax'] = $syntax['syntax'] ?? null;
- $intSyntax = &$syntax['syntax'];
- }
- $intSyntax = (int) ($intSyntax ?? static::DIFF_RELATIVE_AUTO);
- $intSyntax = $intSyntax === static::DIFF_RELATIVE_AUTO && $other === null ? static::DIFF_RELATIVE_TO_NOW : $intSyntax;
-
- $parts = min(7, max(1, (int) $parts));
-
- return $this->diffAsCarbonInterval($other, false)
- ->setLocalTranslator($this->getLocalTranslator())
- ->forHumans($syntax, (bool) $short, $parts, $options ?? $this->localHumanDiffOptions ?? static::getHumanDiffOptions());
- }
-
- /**
- * @alias diffForHumans
- *
- * Get the difference in a human readable format in the current locale from current instance to an other
- * instance given (or now if null given).
- *
- * @param Carbon|\DateTimeInterface|string|array|null $other if array passed, will be used as parameters array, see $syntax below;
- * if null passed, now will be used as comparison reference;
- * if any other type, it will be converted to date and used as reference.
- * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains:
- * - 'syntax' entry (see below)
- * - 'short' entry (see below)
- * - 'parts' entry (see below)
- * - 'options' entry (see below)
- * - 'join' entry determines how to join multiple parts of the string
- * ` - if $join is a string, it's used as a joiner glue
- * ` - if $join is a callable/closure, it get the list of string and should return a string
- * ` - if $join is an array, the first item will be the default glue, and the second item
- * ` will be used instead of the glue for the last item
- * ` - if $join is true, it will be guessed from the locale ('list' translation file entry)
- * ` - if $join is missing, a space will be used as glue
- * - 'other' entry (see above)
- * if int passed, it add modifiers:
- * Possible values:
- * - CarbonInterface::DIFF_ABSOLUTE no modifiers
- * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier
- * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier
- * Default value: CarbonInterface::DIFF_ABSOLUTE
- * @param bool $short displays short format of time units
- * @param int $parts maximum number of parts to display (default value: 1: single unit)
- * @param int $options human diff options
- *
- * @return string
- */
- public function from($other = null, $syntax = null, $short = false, $parts = 1, $options = null)
- {
- return $this->diffForHumans($other, $syntax, $short, $parts, $options);
- }
-
- /**
- * @alias diffForHumans
- *
- * Get the difference in a human readable format in the current locale from current instance to an other
- * instance given (or now if null given).
- */
- public function since($other = null, $syntax = null, $short = false, $parts = 1, $options = null)
- {
- return $this->diffForHumans($other, $syntax, $short, $parts, $options);
- }
-
- /**
- * Get the difference in a human readable format in the current locale from an other
- * instance given (or now if null given) to current instance.
- *
- * When comparing a value in the past to default now:
- * 1 hour from now
- * 5 months from now
- *
- * When comparing a value in the future to default now:
- * 1 hour ago
- * 5 months ago
- *
- * When comparing a value in the past to another value:
- * 1 hour after
- * 5 months after
- *
- * When comparing a value in the future to another value:
- * 1 hour before
- * 5 months before
- *
- * @param Carbon|\DateTimeInterface|string|array|null $other if array passed, will be used as parameters array, see $syntax below;
- * if null passed, now will be used as comparison reference;
- * if any other type, it will be converted to date and used as reference.
- * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains:
- * - 'syntax' entry (see below)
- * - 'short' entry (see below)
- * - 'parts' entry (see below)
- * - 'options' entry (see below)
- * - 'join' entry determines how to join multiple parts of the string
- * ` - if $join is a string, it's used as a joiner glue
- * ` - if $join is a callable/closure, it get the list of string and should return a string
- * ` - if $join is an array, the first item will be the default glue, and the second item
- * ` will be used instead of the glue for the last item
- * ` - if $join is true, it will be guessed from the locale ('list' translation file entry)
- * ` - if $join is missing, a space will be used as glue
- * - 'other' entry (see above)
- * if int passed, it add modifiers:
- * Possible values:
- * - CarbonInterface::DIFF_ABSOLUTE no modifiers
- * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier
- * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier
- * Default value: CarbonInterface::DIFF_ABSOLUTE
- * @param bool $short displays short format of time units
- * @param int $parts maximum number of parts to display (default value: 1: single unit)
- * @param int $options human diff options
- *
- * @return string
- */
- public function to($other = null, $syntax = null, $short = false, $parts = 1, $options = null)
- {
- if (!$syntax && !$other) {
- $syntax = CarbonInterface::DIFF_RELATIVE_TO_NOW;
- }
-
- return $this->resolveCarbon($other)->diffForHumans($this, $syntax, $short, $parts, $options);
- }
-
- /**
- * @alias to
- *
- * Get the difference in a human readable format in the current locale from an other
- * instance given (or now if null given) to current instance.
- *
- * @param Carbon|\DateTimeInterface|string|array|null $other if array passed, will be used as parameters array, see $syntax below;
- * if null passed, now will be used as comparison reference;
- * if any other type, it will be converted to date and used as reference.
- * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains:
- * - 'syntax' entry (see below)
- * - 'short' entry (see below)
- * - 'parts' entry (see below)
- * - 'options' entry (see below)
- * - 'join' entry determines how to join multiple parts of the string
- * ` - if $join is a string, it's used as a joiner glue
- * ` - if $join is a callable/closure, it get the list of string and should return a string
- * ` - if $join is an array, the first item will be the default glue, and the second item
- * ` will be used instead of the glue for the last item
- * ` - if $join is true, it will be guessed from the locale ('list' translation file entry)
- * ` - if $join is missing, a space will be used as glue
- * - 'other' entry (see above)
- * if int passed, it add modifiers:
- * Possible values:
- * - CarbonInterface::DIFF_ABSOLUTE no modifiers
- * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier
- * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier
- * Default value: CarbonInterface::DIFF_ABSOLUTE
- * @param bool $short displays short format of time units
- * @param int $parts maximum number of parts to display (default value: 1: single unit)
- * @param int $options human diff options
- *
- * @return string
- */
- public function until($other = null, $syntax = null, $short = false, $parts = 1, $options = null)
- {
- return $this->to($other, $syntax, $short, $parts, $options);
- }
-
- /**
- * Get the difference in a human readable format in the current locale from current
- * instance to now.
- *
- * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains:
- * - 'syntax' entry (see below)
- * - 'short' entry (see below)
- * - 'parts' entry (see below)
- * - 'options' entry (see below)
- * - 'join' entry determines how to join multiple parts of the string
- * ` - if $join is a string, it's used as a joiner glue
- * ` - if $join is a callable/closure, it get the list of string and should return a string
- * ` - if $join is an array, the first item will be the default glue, and the second item
- * ` will be used instead of the glue for the last item
- * ` - if $join is true, it will be guessed from the locale ('list' translation file entry)
- * ` - if $join is missing, a space will be used as glue
- * if int passed, it add modifiers:
- * Possible values:
- * - CarbonInterface::DIFF_ABSOLUTE no modifiers
- * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier
- * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier
- * Default value: CarbonInterface::DIFF_ABSOLUTE
- * @param bool $short displays short format of time units
- * @param int $parts maximum number of parts to display (default value: 1: single unit)
- * @param int $options human diff options
- *
- * @return string
- */
- public function fromNow($syntax = null, $short = false, $parts = 1, $options = null)
- {
- $other = null;
-
- if ($syntax instanceof DateTimeInterface) {
- [$other, $syntax, $short, $parts, $options] = array_pad(\func_get_args(), 5, null);
- }
-
- return $this->from($other, $syntax, $short, $parts, $options);
- }
-
- /**
- * Get the difference in a human readable format in the current locale from an other
- * instance given to now
- *
- * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains:
- * - 'syntax' entry (see below)
- * - 'short' entry (see below)
- * - 'parts' entry (see below)
- * - 'options' entry (see below)
- * - 'join' entry determines how to join multiple parts of the string
- * ` - if $join is a string, it's used as a joiner glue
- * ` - if $join is a callable/closure, it get the list of string and should return a string
- * ` - if $join is an array, the first item will be the default glue, and the second item
- * ` will be used instead of the glue for the last item
- * ` - if $join is true, it will be guessed from the locale ('list' translation file entry)
- * ` - if $join is missing, a space will be used as glue
- * if int passed, it add modifiers:
- * Possible values:
- * - CarbonInterface::DIFF_ABSOLUTE no modifiers
- * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier
- * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier
- * Default value: CarbonInterface::DIFF_ABSOLUTE
- * @param bool $short displays short format of time units
- * @param int $parts maximum number of parts to display (default value: 1: single part)
- * @param int $options human diff options
- *
- * @return string
- */
- public function toNow($syntax = null, $short = false, $parts = 1, $options = null)
- {
- return $this->to(null, $syntax, $short, $parts, $options);
- }
-
- /**
- * Get the difference in a human readable format in the current locale from an other
- * instance given to now
- *
- * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains:
- * - 'syntax' entry (see below)
- * - 'short' entry (see below)
- * - 'parts' entry (see below)
- * - 'options' entry (see below)
- * - 'join' entry determines how to join multiple parts of the string
- * ` - if $join is a string, it's used as a joiner glue
- * ` - if $join is a callable/closure, it get the list of string and should return a string
- * ` - if $join is an array, the first item will be the default glue, and the second item
- * ` will be used instead of the glue for the last item
- * ` - if $join is true, it will be guessed from the locale ('list' translation file entry)
- * ` - if $join is missing, a space will be used as glue
- * if int passed, it add modifiers:
- * Possible values:
- * - CarbonInterface::DIFF_ABSOLUTE no modifiers
- * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier
- * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier
- * Default value: CarbonInterface::DIFF_ABSOLUTE
- * @param bool $short displays short format of time units
- * @param int $parts maximum number of parts to display (default value: 1: single part)
- * @param int $options human diff options
- *
- * @return string
- */
- public function ago($syntax = null, $short = false, $parts = 1, $options = null)
- {
- $other = null;
-
- if ($syntax instanceof DateTimeInterface) {
- [$other, $syntax, $short, $parts, $options] = array_pad(\func_get_args(), 5, null);
- }
-
- return $this->from($other, $syntax, $short, $parts, $options);
- }
-
- /**
- * Get the difference in a human readable format in the current locale from current instance to an other
- * instance given (or now if null given).
- *
- * @return string
- */
- public function timespan($other = null, $timezone = null)
- {
- if (!$other instanceof DateTimeInterface) {
- $other = static::parse($other, $timezone);
- }
-
- return $this->diffForHumans($other, [
- 'join' => ', ',
- 'syntax' => CarbonInterface::DIFF_ABSOLUTE,
- 'options' => CarbonInterface::NO_ZERO_DIFF,
- 'parts' => -1,
- ]);
- }
-
- /**
- * Returns either day of week + time (e.g. "Last Friday at 3:30 PM") if reference time is within 7 days,
- * or a calendar date (e.g. "10/29/2017") otherwise.
- *
- * Language, date and time formats will change according to the current locale.
- *
- * @param Carbon|\DateTimeInterface|string|null $referenceTime
- * @param array $formats
- *
- * @return string
- */
- public function calendar($referenceTime = null, array $formats = [])
- {
- /** @var CarbonInterface $current */
- $current = $this->avoidMutation()->startOfDay();
- /** @var CarbonInterface $other */
- $other = $this->resolveCarbon($referenceTime)->avoidMutation()->setTimezone($this->getTimezone())->startOfDay();
- $diff = $other->diffInDays($current, false);
- $format = $diff < -6 ? 'sameElse' : (
- $diff < -1 ? 'lastWeek' : (
- $diff < 0 ? 'lastDay' : (
- $diff < 1 ? 'sameDay' : (
- $diff < 2 ? 'nextDay' : (
- $diff < 7 ? 'nextWeek' : 'sameElse'
- )
- )
- )
- )
- );
- $format = array_merge($this->getCalendarFormats(), $formats)[$format];
- if ($format instanceof Closure) {
- $format = $format($current, $other) ?? '';
- }
-
- return $this->isoFormat((string) $format);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/IntervalRounding.php b/vendor/nesbot/carbon/src/Carbon/Traits/IntervalRounding.php
deleted file mode 100644
index 4cd66b67..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Traits/IntervalRounding.php
+++ /dev/null
@@ -1,57 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Traits;
-
-use Carbon\CarbonInterval;
-use Carbon\Exceptions\InvalidIntervalException;
-use DateInterval;
-
-/**
- * Trait to call rounding methods to interval or the interval of a period.
- */
-trait IntervalRounding
-{
- protected function callRoundMethod(string $method, array $parameters)
- {
- $action = substr($method, 0, 4);
-
- if ($action !== 'ceil') {
- $action = substr($method, 0, 5);
- }
-
- if (\in_array($action, ['round', 'floor', 'ceil'])) {
- return $this->{$action.'Unit'}(substr($method, \strlen($action)), ...$parameters);
- }
-
- return null;
- }
-
- protected function roundWith($precision, $function)
- {
- $unit = 'second';
-
- if ($precision instanceof DateInterval) {
- $precision = (string) CarbonInterval::instance($precision);
- }
-
- if (\is_string($precision) && preg_match('/^\s*(?\d+)?\s*(?\w+)(?\W.*)?$/', $precision, $match)) {
- if (trim($match['other'] ?? '') !== '') {
- throw new InvalidIntervalException('Rounding is only possible with single unit intervals.');
- }
-
- $precision = (int) ($match['precision'] ?: 1);
- $unit = $match['unit'];
- }
-
- return $this->roundUnit($unit, $precision, $function);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/IntervalStep.php b/vendor/nesbot/carbon/src/Carbon/Traits/IntervalStep.php
deleted file mode 100644
index 82d7c326..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Traits/IntervalStep.php
+++ /dev/null
@@ -1,93 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Traits;
-
-use Carbon\Carbon;
-use Carbon\CarbonImmutable;
-use Carbon\CarbonInterface;
-use Closure;
-use DateTimeImmutable;
-use DateTimeInterface;
-
-trait IntervalStep
-{
- /**
- * Step to apply instead of a fixed interval to get the new date.
- *
- * @var Closure|null
- */
- protected $step;
-
- /**
- * Get the dynamic step in use.
- *
- * @return Closure
- */
- public function getStep(): ?Closure
- {
- return $this->step;
- }
-
- /**
- * Set a step to apply instead of a fixed interval to get the new date.
- *
- * Or pass null to switch to fixed interval.
- *
- * @param Closure|null $step
- */
- public function setStep(?Closure $step): void
- {
- $this->step = $step;
- }
-
- /**
- * Take a date and apply either the step if set, or the current interval else.
- *
- * The interval/step is applied negatively (typically subtraction instead of addition) if $negated is true.
- *
- * @param DateTimeInterface $dateTime
- * @param bool $negated
- *
- * @return CarbonInterface
- */
- public function convertDate(DateTimeInterface $dateTime, bool $negated = false): CarbonInterface
- {
- /** @var CarbonInterface $carbonDate */
- $carbonDate = $dateTime instanceof CarbonInterface ? $dateTime : $this->resolveCarbon($dateTime);
-
- if ($this->step) {
- return $carbonDate->setDateTimeFrom(($this->step)($carbonDate->avoidMutation(), $negated));
- }
-
- if ($negated) {
- return $carbonDate->rawSub($this);
- }
-
- return $carbonDate->rawAdd($this);
- }
-
- /**
- * Convert DateTimeImmutable instance to CarbonImmutable instance and DateTime instance to Carbon instance.
- *
- * @param DateTimeInterface $dateTime
- *
- * @return Carbon|CarbonImmutable
- */
- private function resolveCarbon(DateTimeInterface $dateTime)
- {
- if ($dateTime instanceof DateTimeImmutable) {
- return CarbonImmutable::instance($dateTime);
- }
-
- return Carbon::instance($dateTime);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Localization.php b/vendor/nesbot/carbon/src/Carbon/Traits/Localization.php
deleted file mode 100644
index d7ece2de..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Traits/Localization.php
+++ /dev/null
@@ -1,810 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Traits;
-
-use Carbon\CarbonInterface;
-use Carbon\Exceptions\InvalidTypeException;
-use Carbon\Exceptions\NotLocaleAwareException;
-use Carbon\Language;
-use Carbon\Translator;
-use Closure;
-use Symfony\Component\Translation\TranslatorBagInterface;
-use Symfony\Component\Translation\TranslatorInterface;
-use Symfony\Contracts\Translation\LocaleAwareInterface;
-use Symfony\Contracts\Translation\TranslatorInterface as ContractsTranslatorInterface;
-
-if (!interface_exists('Symfony\\Component\\Translation\\TranslatorInterface')) {
- class_alias(
- 'Symfony\\Contracts\\Translation\\TranslatorInterface',
- 'Symfony\\Component\\Translation\\TranslatorInterface'
- );
-}
-
-/**
- * Trait Localization.
- *
- * Embed default and locale translators and translation base methods.
- */
-trait Localization
-{
- /**
- * Default translator.
- *
- * @var \Symfony\Component\Translation\TranslatorInterface
- */
- protected static $translator;
-
- /**
- * Specific translator of the current instance.
- *
- * @var \Symfony\Component\Translation\TranslatorInterface
- */
- protected $localTranslator;
-
- /**
- * Options for diffForHumans().
- *
- * @var int
- */
- protected static $humanDiffOptions = CarbonInterface::NO_ZERO_DIFF;
-
- /**
- * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * @see settings
- *
- * @param int $humanDiffOptions
- */
- public static function setHumanDiffOptions($humanDiffOptions)
- {
- static::$humanDiffOptions = $humanDiffOptions;
- }
-
- /**
- * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * @see settings
- *
- * @param int $humanDiffOption
- */
- public static function enableHumanDiffOption($humanDiffOption)
- {
- static::$humanDiffOptions = static::getHumanDiffOptions() | $humanDiffOption;
- }
-
- /**
- * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * @see settings
- *
- * @param int $humanDiffOption
- */
- public static function disableHumanDiffOption($humanDiffOption)
- {
- static::$humanDiffOptions = static::getHumanDiffOptions() & ~$humanDiffOption;
- }
-
- /**
- * Return default humanDiff() options (merged flags as integer).
- *
- * @return int
- */
- public static function getHumanDiffOptions()
- {
- return static::$humanDiffOptions;
- }
-
- /**
- * Get the default translator instance in use.
- *
- * @return \Symfony\Component\Translation\TranslatorInterface
- */
- public static function getTranslator()
- {
- return static::translator();
- }
-
- /**
- * Set the default translator instance to use.
- *
- * @param \Symfony\Component\Translation\TranslatorInterface $translator
- *
- * @return void
- */
- public static function setTranslator(TranslatorInterface $translator)
- {
- static::$translator = $translator;
- }
-
- /**
- * Return true if the current instance has its own translator.
- *
- * @return bool
- */
- public function hasLocalTranslator()
- {
- return isset($this->localTranslator);
- }
-
- /**
- * Get the translator of the current instance or the default if none set.
- *
- * @return \Symfony\Component\Translation\TranslatorInterface
- */
- public function getLocalTranslator()
- {
- return $this->localTranslator ?: static::translator();
- }
-
- /**
- * Set the translator for the current instance.
- *
- * @param \Symfony\Component\Translation\TranslatorInterface $translator
- *
- * @return $this
- */
- public function setLocalTranslator(TranslatorInterface $translator)
- {
- $this->localTranslator = $translator;
-
- return $this;
- }
-
- /**
- * Returns raw translation message for a given key.
- *
- * @param \Symfony\Component\Translation\TranslatorInterface $translator the translator to use
- * @param string $key key to find
- * @param string|null $locale current locale used if null
- * @param string|null $default default value if translation returns the key
- *
- * @return string
- */
- public static function getTranslationMessageWith($translator, string $key, ?string $locale = null, ?string $default = null)
- {
- if (!($translator instanceof TranslatorBagInterface && $translator instanceof TranslatorInterface)) {
- throw new InvalidTypeException(
- 'Translator does not implement '.TranslatorInterface::class.' and '.TranslatorBagInterface::class.'. '.
- (\is_object($translator) ? \get_class($translator) : \gettype($translator)).' has been given.'
- );
- }
-
- if (!$locale && $translator instanceof LocaleAwareInterface) {
- $locale = $translator->getLocale();
- }
-
- $result = $translator->getCatalogue($locale)->get($key);
-
- return $result === $key ? $default : $result;
- }
-
- /**
- * Returns raw translation message for a given key.
- *
- * @param string $key key to find
- * @param string|null $locale current locale used if null
- * @param string|null $default default value if translation returns the key
- * @param \Symfony\Component\Translation\TranslatorInterface $translator an optional translator to use
- *
- * @return string
- */
- public function getTranslationMessage(string $key, ?string $locale = null, ?string $default = null, $translator = null)
- {
- return static::getTranslationMessageWith($translator ?: $this->getLocalTranslator(), $key, $locale, $default);
- }
-
- /**
- * Translate using translation string or callback available.
- *
- * @param \Symfony\Component\Translation\TranslatorInterface $translator
- * @param string $key
- * @param array $parameters
- * @param null $number
- *
- * @return string
- */
- public static function translateWith(TranslatorInterface $translator, string $key, array $parameters = [], $number = null): string
- {
- $message = static::getTranslationMessageWith($translator, $key, null, $key);
- if ($message instanceof Closure) {
- return (string) $message(...array_values($parameters));
- }
-
- if ($number !== null) {
- $parameters['%count%'] = $number;
- }
- if (isset($parameters['%count%'])) {
- $parameters[':count'] = $parameters['%count%'];
- }
-
- // @codeCoverageIgnoreStart
- $choice = $translator instanceof ContractsTranslatorInterface
- ? $translator->trans($key, $parameters)
- : $translator->transChoice($key, $number, $parameters);
- // @codeCoverageIgnoreEnd
-
- return (string) $choice;
- }
-
- /**
- * Translate using translation string or callback available.
- *
- * @param string $key
- * @param array $parameters
- * @param string|int|float|null $number
- * @param \Symfony\Component\Translation\TranslatorInterface|null $translator
- * @param bool $altNumbers
- *
- * @return string
- */
- public function translate(string $key, array $parameters = [], $number = null, ?TranslatorInterface $translator = null, bool $altNumbers = false): string
- {
- $translation = static::translateWith($translator ?: $this->getLocalTranslator(), $key, $parameters, $number);
-
- if ($number !== null && $altNumbers) {
- return str_replace($number, $this->translateNumber($number), $translation);
- }
-
- return $translation;
- }
-
- /**
- * Returns the alternative number for a given integer if available in the current locale.
- *
- * @param int $number
- *
- * @return string
- */
- public function translateNumber(int $number): string
- {
- $translateKey = "alt_numbers.$number";
- $symbol = $this->translate($translateKey);
-
- if ($symbol !== $translateKey) {
- return $symbol;
- }
-
- if ($number > 99 && $this->translate('alt_numbers.99') !== 'alt_numbers.99') {
- $start = '';
- foreach ([10000, 1000, 100] as $exp) {
- $key = "alt_numbers_pow.$exp";
- if ($number >= $exp && $number < $exp * 10 && ($pow = $this->translate($key)) !== $key) {
- $unit = floor($number / $exp);
- $number -= $unit * $exp;
- $start .= ($unit > 1 ? $this->translate("alt_numbers.$unit") : '').$pow;
- }
- }
- $result = '';
- while ($number) {
- $chunk = $number % 100;
- $result = $this->translate("alt_numbers.$chunk").$result;
- $number = floor($number / 100);
- }
-
- return "$start$result";
- }
-
- if ($number > 9 && $this->translate('alt_numbers.9') !== 'alt_numbers.9') {
- $result = '';
- while ($number) {
- $chunk = $number % 10;
- $result = $this->translate("alt_numbers.$chunk").$result;
- $number = floor($number / 10);
- }
-
- return $result;
- }
-
- return (string) $number;
- }
-
- /**
- * Translate a time string from a locale to an other.
- *
- * @param string $timeString date/time/duration string to translate (may also contain English)
- * @param string|null $from input locale of the $timeString parameter (`Carbon::getLocale()` by default)
- * @param string|null $to output locale of the result returned (`"en"` by default)
- * @param int $mode specify what to translate with options:
- * - CarbonInterface::TRANSLATE_ALL (default)
- * - CarbonInterface::TRANSLATE_MONTHS
- * - CarbonInterface::TRANSLATE_DAYS
- * - CarbonInterface::TRANSLATE_UNITS
- * - CarbonInterface::TRANSLATE_MERIDIEM
- * You can use pipe to group: CarbonInterface::TRANSLATE_MONTHS | CarbonInterface::TRANSLATE_DAYS
- *
- * @return string
- */
- public static function translateTimeString($timeString, $from = null, $to = null, $mode = CarbonInterface::TRANSLATE_ALL)
- {
- // Fallback source and destination locales
- $from = $from ?: static::getLocale();
- $to = $to ?: 'en';
-
- if ($from === $to) {
- return $timeString;
- }
-
- // Standardize apostrophe
- $timeString = strtr($timeString, ['’' => "'"]);
-
- $fromTranslations = [];
- $toTranslations = [];
-
- foreach (['from', 'to'] as $key) {
- $language = $$key;
- $translator = Translator::get($language);
- $translations = $translator->getMessages();
-
- if (!isset($translations[$language])) {
- return $timeString;
- }
-
- $translationKey = $key.'Translations';
- $messages = $translations[$language];
- $months = $messages['months'] ?? [];
- $weekdays = $messages['weekdays'] ?? [];
- $meridiem = $messages['meridiem'] ?? ['AM', 'PM'];
-
- if ($key === 'from') {
- foreach (['months', 'weekdays'] as $variable) {
- $list = $messages[$variable.'_standalone'] ?? null;
-
- if ($list) {
- foreach ($$variable as $index => &$name) {
- $name .= '|'.$messages[$variable.'_standalone'][$index];
- }
- }
- }
- }
-
- $$translationKey = array_merge(
- $mode & CarbonInterface::TRANSLATE_MONTHS ? static::getTranslationArray($months, 12, $timeString) : [],
- $mode & CarbonInterface::TRANSLATE_MONTHS ? static::getTranslationArray($messages['months_short'] ?? [], 12, $timeString) : [],
- $mode & CarbonInterface::TRANSLATE_DAYS ? static::getTranslationArray($weekdays, 7, $timeString) : [],
- $mode & CarbonInterface::TRANSLATE_DAYS ? static::getTranslationArray($messages['weekdays_short'] ?? [], 7, $timeString) : [],
- $mode & CarbonInterface::TRANSLATE_DIFF ? static::translateWordsByKeys([
- 'diff_now',
- 'diff_today',
- 'diff_yesterday',
- 'diff_tomorrow',
- 'diff_before_yesterday',
- 'diff_after_tomorrow',
- ], $messages, $key) : [],
- $mode & CarbonInterface::TRANSLATE_UNITS ? static::translateWordsByKeys([
- 'year',
- 'month',
- 'week',
- 'day',
- 'hour',
- 'minute',
- 'second',
- ], $messages, $key) : [],
- $mode & CarbonInterface::TRANSLATE_MERIDIEM ? array_map(function ($hour) use ($meridiem) {
- if (\is_array($meridiem)) {
- return $meridiem[$hour < 12 ? 0 : 1];
- }
-
- return $meridiem($hour, 0, false);
- }, range(0, 23)) : []
- );
- }
-
- return substr(preg_replace_callback('/(?<=[\d\s+.\/,_-])('.implode('|', $fromTranslations).')(?=[\d\s+.\/,_-])/iu', function ($match) use ($fromTranslations, $toTranslations) {
- [$chunk] = $match;
-
- foreach ($fromTranslations as $index => $word) {
- if (preg_match("/^$word\$/iu", $chunk)) {
- return $toTranslations[$index] ?? '';
- }
- }
-
- return $chunk; // @codeCoverageIgnore
- }, " $timeString "), 1, -1);
- }
-
- /**
- * Translate a time string from the current locale (`$date->locale()`) to an other.
- *
- * @param string $timeString time string to translate
- * @param string|null $to output locale of the result returned ("en" by default)
- *
- * @return string
- */
- public function translateTimeStringTo($timeString, $to = null)
- {
- return static::translateTimeString($timeString, $this->getTranslatorLocale(), $to);
- }
-
- /**
- * Get/set the locale for the current instance.
- *
- * @param string|null $locale
- * @param string ...$fallbackLocales
- *
- * @return $this|string
- */
- public function locale(string $locale = null, ...$fallbackLocales)
- {
- if ($locale === null) {
- return $this->getTranslatorLocale();
- }
-
- if (!$this->localTranslator || $this->getTranslatorLocale($this->localTranslator) !== $locale) {
- $translator = Translator::get($locale);
-
- if (!empty($fallbackLocales)) {
- $translator->setFallbackLocales($fallbackLocales);
-
- foreach ($fallbackLocales as $fallbackLocale) {
- $messages = Translator::get($fallbackLocale)->getMessages();
-
- if (isset($messages[$fallbackLocale])) {
- $translator->setMessages($fallbackLocale, $messages[$fallbackLocale]);
- }
- }
- }
-
- $this->setLocalTranslator($translator);
- }
-
- return $this;
- }
-
- /**
- * Get the current translator locale.
- *
- * @return string
- */
- public static function getLocale()
- {
- return static::getLocaleAwareTranslator()->getLocale();
- }
-
- /**
- * Set the current translator locale and indicate if the source locale file exists.
- * Pass 'auto' as locale to use closest language from the current LC_TIME locale.
- *
- * @param string $locale locale ex. en
- *
- * @return bool
- */
- public static function setLocale($locale)
- {
- return static::getLocaleAwareTranslator()->setLocale($locale) !== false;
- }
-
- /**
- * Set the fallback locale.
- *
- * @see https://symfony.com/doc/current/components/translation.html#fallback-locales
- *
- * @param string $locale
- */
- public static function setFallbackLocale($locale)
- {
- $translator = static::getTranslator();
-
- if (method_exists($translator, 'setFallbackLocales')) {
- $translator->setFallbackLocales([$locale]);
-
- if ($translator instanceof Translator) {
- $preferredLocale = $translator->getLocale();
- $translator->setMessages($preferredLocale, array_replace_recursive(
- $translator->getMessages()[$locale] ?? [],
- Translator::get($locale)->getMessages()[$locale] ?? [],
- $translator->getMessages($preferredLocale)
- ));
- }
- }
- }
-
- /**
- * Get the fallback locale.
- *
- * @see https://symfony.com/doc/current/components/translation.html#fallback-locales
- *
- * @return string|null
- */
- public static function getFallbackLocale()
- {
- $translator = static::getTranslator();
-
- if (method_exists($translator, 'getFallbackLocales')) {
- return $translator->getFallbackLocales()[0] ?? null;
- }
-
- return null;
- }
-
- /**
- * Set the current locale to the given, execute the passed function, reset the locale to previous one,
- * then return the result of the closure (or null if the closure was void).
- *
- * @param string $locale locale ex. en
- * @param callable $func
- *
- * @return mixed
- */
- public static function executeWithLocale($locale, $func)
- {
- $currentLocale = static::getLocale();
- $result = $func(static::setLocale($locale) ? static::getLocale() : false, static::translator());
- static::setLocale($currentLocale);
-
- return $result;
- }
-
- /**
- * Returns true if the given locale is internally supported and has short-units support.
- * Support is considered enabled if either year, day or hour has a short variant translated.
- *
- * @param string $locale locale ex. en
- *
- * @return bool
- */
- public static function localeHasShortUnits($locale)
- {
- return static::executeWithLocale($locale, function ($newLocale, TranslatorInterface $translator) {
- return $newLocale &&
- (
- ($y = static::translateWith($translator, 'y')) !== 'y' &&
- $y !== static::translateWith($translator, 'year')
- ) || (
- ($y = static::translateWith($translator, 'd')) !== 'd' &&
- $y !== static::translateWith($translator, 'day')
- ) || (
- ($y = static::translateWith($translator, 'h')) !== 'h' &&
- $y !== static::translateWith($translator, 'hour')
- );
- });
- }
-
- /**
- * Returns true if the given locale is internally supported and has diff syntax support (ago, from now, before, after).
- * Support is considered enabled if the 4 sentences are translated in the given locale.
- *
- * @param string $locale locale ex. en
- *
- * @return bool
- */
- public static function localeHasDiffSyntax($locale)
- {
- return static::executeWithLocale($locale, function ($newLocale, TranslatorInterface $translator) {
- if (!$newLocale) {
- return false;
- }
-
- foreach (['ago', 'from_now', 'before', 'after'] as $key) {
- if ($translator instanceof TranslatorBagInterface && $translator->getCatalogue($newLocale)->get($key) instanceof Closure) {
- continue;
- }
-
- if ($translator->trans($key) === $key) {
- return false;
- }
- }
-
- return true;
- });
- }
-
- /**
- * Returns true if the given locale is internally supported and has words for 1-day diff (just now, yesterday, tomorrow).
- * Support is considered enabled if the 3 words are translated in the given locale.
- *
- * @param string $locale locale ex. en
- *
- * @return bool
- */
- public static function localeHasDiffOneDayWords($locale)
- {
- return static::executeWithLocale($locale, function ($newLocale, TranslatorInterface $translator) {
- return $newLocale &&
- $translator->trans('diff_now') !== 'diff_now' &&
- $translator->trans('diff_yesterday') !== 'diff_yesterday' &&
- $translator->trans('diff_tomorrow') !== 'diff_tomorrow';
- });
- }
-
- /**
- * Returns true if the given locale is internally supported and has words for 2-days diff (before yesterday, after tomorrow).
- * Support is considered enabled if the 2 words are translated in the given locale.
- *
- * @param string $locale locale ex. en
- *
- * @return bool
- */
- public static function localeHasDiffTwoDayWords($locale)
- {
- return static::executeWithLocale($locale, function ($newLocale, TranslatorInterface $translator) {
- return $newLocale &&
- $translator->trans('diff_before_yesterday') !== 'diff_before_yesterday' &&
- $translator->trans('diff_after_tomorrow') !== 'diff_after_tomorrow';
- });
- }
-
- /**
- * Returns true if the given locale is internally supported and has period syntax support (X times, every X, from X, to X).
- * Support is considered enabled if the 4 sentences are translated in the given locale.
- *
- * @param string $locale locale ex. en
- *
- * @return bool
- */
- public static function localeHasPeriodSyntax($locale)
- {
- return static::executeWithLocale($locale, function ($newLocale, TranslatorInterface $translator) {
- return $newLocale &&
- $translator->trans('period_recurrences') !== 'period_recurrences' &&
- $translator->trans('period_interval') !== 'period_interval' &&
- $translator->trans('period_start_date') !== 'period_start_date' &&
- $translator->trans('period_end_date') !== 'period_end_date';
- });
- }
-
- /**
- * Returns the list of internally available locales and already loaded custom locales.
- * (It will ignore custom translator dynamic loading.)
- *
- * @return array
- */
- public static function getAvailableLocales()
- {
- $translator = static::getLocaleAwareTranslator();
-
- return $translator instanceof Translator
- ? $translator->getAvailableLocales()
- : [$translator->getLocale()];
- }
-
- /**
- * Returns list of Language object for each available locale. This object allow you to get the ISO name, native
- * name, region and variant of the locale.
- *
- * @return Language[]
- */
- public static function getAvailableLocalesInfo()
- {
- $languages = [];
- foreach (static::getAvailableLocales() as $id) {
- $languages[$id] = new Language($id);
- }
-
- return $languages;
- }
-
- /**
- * Initialize the default translator instance if necessary.
- *
- * @return \Symfony\Component\Translation\TranslatorInterface
- */
- protected static function translator()
- {
- if (static::$translator === null) {
- static::$translator = Translator::get();
- }
-
- return static::$translator;
- }
-
- /**
- * Get the locale of a given translator.
- *
- * If null or omitted, current local translator is used.
- * If no local translator is in use, current global translator is used.
- *
- * @param null $translator
- *
- * @return string|null
- */
- protected function getTranslatorLocale($translator = null): ?string
- {
- if (\func_num_args() === 0) {
- $translator = $this->getLocalTranslator();
- }
-
- $translator = static::getLocaleAwareTranslator($translator);
-
- return $translator ? $translator->getLocale() : null;
- }
-
- /**
- * Throw an error if passed object is not LocaleAwareInterface.
- *
- * @param LocaleAwareInterface|null $translator
- *
- * @return LocaleAwareInterface|null
- */
- protected static function getLocaleAwareTranslator($translator = null)
- {
- if (\func_num_args() === 0) {
- $translator = static::translator();
- }
-
- if ($translator && !($translator instanceof LocaleAwareInterface || method_exists($translator, 'getLocale'))) {
- throw new NotLocaleAwareException($translator);
- }
-
- return $translator;
- }
-
- /**
- * Return the word cleaned from its translation codes.
- *
- * @param string $word
- *
- * @return string
- */
- private static function cleanWordFromTranslationString($word)
- {
- $word = str_replace([':count', '%count', ':time'], '', $word);
- $word = strtr($word, ['’' => "'"]);
- $word = preg_replace('/({\d+(,(\d+|Inf))?}|[\[\]]\d+(,(\d+|Inf))?[\[\]])/', '', $word);
-
- return trim($word);
- }
-
- /**
- * Translate a list of words.
- *
- * @param string[] $keys keys to translate.
- * @param string[] $messages messages bag handling translations.
- * @param string $key 'to' (to get the translation) or 'from' (to get the detection RegExp pattern).
- *
- * @return string[]
- */
- private static function translateWordsByKeys($keys, $messages, $key): array
- {
- return array_map(function ($wordKey) use ($messages, $key) {
- $message = $key === 'from' && isset($messages[$wordKey.'_regexp'])
- ? $messages[$wordKey.'_regexp']
- : ($messages[$wordKey] ?? null);
-
- if (!$message) {
- return '>>DO NOT REPLACE<<';
- }
-
- $parts = explode('|', $message);
-
- return $key === 'to'
- ? static::cleanWordFromTranslationString(end($parts))
- : '(?:'.implode('|', array_map([static::class, 'cleanWordFromTranslationString'], $parts)).')';
- }, $keys);
- }
-
- /**
- * Get an array of translations based on the current date.
- *
- * @param callable $translation
- * @param int $length
- * @param string $timeString
- *
- * @return string[]
- */
- private static function getTranslationArray($translation, $length, $timeString): array
- {
- $filler = '>>DO NOT REPLACE<<';
-
- if (\is_array($translation)) {
- return array_pad($translation, $length, $filler);
- }
-
- $list = [];
- $date = static::now();
-
- for ($i = 0; $i < $length; $i++) {
- $list[] = $translation($date, $timeString, $i) ?? $filler;
- }
-
- return $list;
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Macro.php b/vendor/nesbot/carbon/src/Carbon/Traits/Macro.php
deleted file mode 100644
index 92b6c9d8..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Traits/Macro.php
+++ /dev/null
@@ -1,136 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Traits;
-
-/**
- * Trait Macros.
- *
- * Allows users to register macros within the Carbon class.
- */
-trait Macro
-{
- use Mixin;
-
- /**
- * The registered macros.
- *
- * @var array
- */
- protected static $globalMacros = [];
-
- /**
- * The registered generic macros.
- *
- * @var array
- */
- protected static $globalGenericMacros = [];
-
- /**
- * Register a custom macro.
- *
- * @example
- * ```
- * $userSettings = [
- * 'locale' => 'pt',
- * 'timezone' => 'America/Sao_Paulo',
- * ];
- * Carbon::macro('userFormat', function () use ($userSettings) {
- * return $this->copy()->locale($userSettings['locale'])->tz($userSettings['timezone'])->calendar();
- * });
- * echo Carbon::yesterday()->hours(11)->userFormat();
- * ```
- *
- * @param string $name
- * @param object|callable $macro
- *
- * @return void
- */
- public static function macro($name, $macro)
- {
- static::$globalMacros[$name] = $macro;
- }
-
- /**
- * Remove all macros and generic macros.
- */
- public static function resetMacros()
- {
- static::$globalMacros = [];
- static::$globalGenericMacros = [];
- }
-
- /**
- * Register a custom macro.
- *
- * @param object|callable $macro
- * @param int $priority marco with higher priority is tried first
- *
- * @return void
- */
- public static function genericMacro($macro, $priority = 0)
- {
- if (!isset(static::$globalGenericMacros[$priority])) {
- static::$globalGenericMacros[$priority] = [];
- krsort(static::$globalGenericMacros, SORT_NUMERIC);
- }
-
- static::$globalGenericMacros[$priority][] = $macro;
- }
-
- /**
- * Checks if macro is registered globally.
- *
- * @param string $name
- *
- * @return bool
- */
- public static function hasMacro($name)
- {
- return isset(static::$globalMacros[$name]);
- }
-
- /**
- * Get the raw callable macro registered globally for a given name.
- *
- * @param string $name
- *
- * @return callable|null
- */
- public static function getMacro($name)
- {
- return static::$globalMacros[$name] ?? null;
- }
-
- /**
- * Checks if macro is registered globally or locally.
- *
- * @param string $name
- *
- * @return bool
- */
- public function hasLocalMacro($name)
- {
- return ($this->localMacros && isset($this->localMacros[$name])) || static::hasMacro($name);
- }
-
- /**
- * Get the raw callable macro registered globally or locally for a given name.
- *
- * @param string $name
- *
- * @return callable|null
- */
- public function getLocalMacro($name)
- {
- return ($this->localMacros ?? [])[$name] ?? static::getMacro($name);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Mixin.php b/vendor/nesbot/carbon/src/Carbon/Traits/Mixin.php
deleted file mode 100644
index ac06084a..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Traits/Mixin.php
+++ /dev/null
@@ -1,191 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Traits;
-
-use Closure;
-use Generator;
-use ReflectionClass;
-use ReflectionException;
-use ReflectionMethod;
-use Throwable;
-
-/**
- * Trait Mixin.
- *
- * Allows mixing in entire classes with multiple macros.
- */
-trait Mixin
-{
- /**
- * Stack of macro instance contexts.
- *
- * @var array
- */
- protected static $macroContextStack = [];
-
- /**
- * Mix another object into the class.
- *
- * @example
- * ```
- * Carbon::mixin(new class {
- * public function addMoon() {
- * return function () {
- * return $this->addDays(30);
- * };
- * }
- * public function subMoon() {
- * return function () {
- * return $this->subDays(30);
- * };
- * }
- * });
- * $fullMoon = Carbon::create('2018-12-22');
- * $nextFullMoon = $fullMoon->addMoon();
- * $blackMoon = Carbon::create('2019-01-06');
- * $previousBlackMoon = $blackMoon->subMoon();
- * echo "$nextFullMoon\n";
- * echo "$previousBlackMoon\n";
- * ```
- *
- * @param object|string $mixin
- *
- * @throws ReflectionException
- *
- * @return void
- */
- public static function mixin($mixin)
- {
- \is_string($mixin) && trait_exists($mixin)
- ? static::loadMixinTrait($mixin)
- : static::loadMixinClass($mixin);
- }
-
- /**
- * @param object|string $mixin
- *
- * @throws ReflectionException
- */
- private static function loadMixinClass($mixin)
- {
- $methods = (new ReflectionClass($mixin))->getMethods(
- ReflectionMethod::IS_PUBLIC | ReflectionMethod::IS_PROTECTED
- );
-
- foreach ($methods as $method) {
- if ($method->isConstructor() || $method->isDestructor()) {
- continue;
- }
-
- $method->setAccessible(true);
-
- static::macro($method->name, $method->invoke($mixin));
- }
- }
-
- /**
- * @param string $trait
- */
- private static function loadMixinTrait($trait)
- {
- $context = eval(self::getAnonymousClassCodeForTrait($trait));
- $className = \get_class($context);
-
- foreach (self::getMixableMethods($context) as $name) {
- $closureBase = Closure::fromCallable([$context, $name]);
-
- static::macro($name, function () use ($closureBase, $className) {
- /** @phpstan-ignore-next-line */
- $context = isset($this) ? $this->cast($className) : new $className();
-
- try {
- // @ is required to handle error if not converted into exceptions
- $closure = @$closureBase->bindTo($context);
- } catch (Throwable $throwable) { // @codeCoverageIgnore
- $closure = $closureBase; // @codeCoverageIgnore
- }
-
- // in case of errors not converted into exceptions
- $closure = $closure ?? $closureBase;
-
- return $closure(...\func_get_args());
- });
- }
- }
-
- private static function getAnonymousClassCodeForTrait(string $trait)
- {
- return 'return new class() extends '.static::class.' {use '.$trait.';};';
- }
-
- private static function getMixableMethods(self $context): Generator
- {
- foreach (get_class_methods($context) as $name) {
- if (method_exists(static::class, $name)) {
- continue;
- }
-
- yield $name;
- }
- }
-
- /**
- * Stack a Carbon context from inside calls of self::this() and execute a given action.
- *
- * @param static|null $context
- * @param callable $callable
- *
- * @throws Throwable
- *
- * @return mixed
- */
- protected static function bindMacroContext($context, callable $callable)
- {
- static::$macroContextStack[] = $context;
- $exception = null;
- $result = null;
-
- try {
- $result = $callable();
- } catch (Throwable $throwable) {
- $exception = $throwable;
- }
-
- array_pop(static::$macroContextStack);
-
- if ($exception) {
- throw $exception;
- }
-
- return $result;
- }
-
- /**
- * Return the current context from inside a macro callee or a null if static.
- *
- * @return static|null
- */
- protected static function context()
- {
- return end(static::$macroContextStack) ?: null;
- }
-
- /**
- * Return the current context from inside a macro callee or a new one if static.
- *
- * @return static
- */
- protected static function this()
- {
- return end(static::$macroContextStack) ?: new static();
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Modifiers.php b/vendor/nesbot/carbon/src/Carbon/Traits/Modifiers.php
deleted file mode 100644
index 164dbbd1..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Traits/Modifiers.php
+++ /dev/null
@@ -1,472 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Traits;
-
-use Carbon\CarbonInterface;
-use ReturnTypeWillChange;
-
-/**
- * Trait Modifiers.
- *
- * Returns dates relative to current date using modifier short-hand.
- */
-trait Modifiers
-{
- /**
- * Midday/noon hour.
- *
- * @var int
- */
- protected static $midDayAt = 12;
-
- /**
- * get midday/noon hour
- *
- * @return int
- */
- public static function getMidDayAt()
- {
- return static::$midDayAt;
- }
-
- /**
- * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather consider mid-day is always 12pm, then if you need to test if it's an other
- * hour, test it explicitly:
- * $date->format('G') == 13
- * or to set explicitly to a given hour:
- * $date->setTime(13, 0, 0, 0)
- *
- * Set midday/noon hour
- *
- * @param int $hour midday hour
- *
- * @return void
- */
- public static function setMidDayAt($hour)
- {
- static::$midDayAt = $hour;
- }
-
- /**
- * Modify to midday, default to self::$midDayAt
- *
- * @return static
- */
- public function midDay()
- {
- return $this->setTime(static::$midDayAt, 0, 0, 0);
- }
-
- /**
- * Modify to the next occurrence of a given modifier such as a day of
- * the week. If no modifier is provided, modify to the next occurrence
- * of the current day of the week. Use the supplied constants
- * to indicate the desired dayOfWeek, ex. static::MONDAY.
- *
- * @param string|int|null $modifier
- *
- * @return static
- */
- public function next($modifier = null)
- {
- if ($modifier === null) {
- $modifier = $this->dayOfWeek;
- }
-
- return $this->change(
- 'next '.(\is_string($modifier) ? $modifier : static::$days[$modifier])
- );
- }
-
- /**
- * Go forward or backward to the next week- or weekend-day.
- *
- * @param bool $weekday
- * @param bool $forward
- *
- * @return static
- */
- private function nextOrPreviousDay($weekday = true, $forward = true)
- {
- /** @var CarbonInterface $date */
- $date = $this;
- $step = $forward ? 1 : -1;
-
- do {
- $date = $date->addDays($step);
- } while ($weekday ? $date->isWeekend() : $date->isWeekday());
-
- return $date;
- }
-
- /**
- * Go forward to the next weekday.
- *
- * @return static
- */
- public function nextWeekday()
- {
- return $this->nextOrPreviousDay();
- }
-
- /**
- * Go backward to the previous weekday.
- *
- * @return static
- */
- public function previousWeekday()
- {
- return $this->nextOrPreviousDay(true, false);
- }
-
- /**
- * Go forward to the next weekend day.
- *
- * @return static
- */
- public function nextWeekendDay()
- {
- return $this->nextOrPreviousDay(false);
- }
-
- /**
- * Go backward to the previous weekend day.
- *
- * @return static
- */
- public function previousWeekendDay()
- {
- return $this->nextOrPreviousDay(false, false);
- }
-
- /**
- * Modify to the previous occurrence of a given modifier such as a day of
- * the week. If no dayOfWeek is provided, modify to the previous occurrence
- * of the current day of the week. Use the supplied constants
- * to indicate the desired dayOfWeek, ex. static::MONDAY.
- *
- * @param string|int|null $modifier
- *
- * @return static
- */
- public function previous($modifier = null)
- {
- if ($modifier === null) {
- $modifier = $this->dayOfWeek;
- }
-
- return $this->change(
- 'last '.(\is_string($modifier) ? $modifier : static::$days[$modifier])
- );
- }
-
- /**
- * Modify to the first occurrence of a given day of the week
- * in the current month. If no dayOfWeek is provided, modify to the
- * first day of the current month. Use the supplied constants
- * to indicate the desired dayOfWeek, ex. static::MONDAY.
- *
- * @param int|null $dayOfWeek
- *
- * @return static
- */
- public function firstOfMonth($dayOfWeek = null)
- {
- $date = $this->startOfDay();
-
- if ($dayOfWeek === null) {
- return $date->day(1);
- }
-
- return $date->modify('first '.static::$days[$dayOfWeek].' of '.$date->rawFormat('F').' '.$date->year);
- }
-
- /**
- * Modify to the last occurrence of a given day of the week
- * in the current month. If no dayOfWeek is provided, modify to the
- * last day of the current month. Use the supplied constants
- * to indicate the desired dayOfWeek, ex. static::MONDAY.
- *
- * @param int|null $dayOfWeek
- *
- * @return static
- */
- public function lastOfMonth($dayOfWeek = null)
- {
- $date = $this->startOfDay();
-
- if ($dayOfWeek === null) {
- return $date->day($date->daysInMonth);
- }
-
- return $date->modify('last '.static::$days[$dayOfWeek].' of '.$date->rawFormat('F').' '.$date->year);
- }
-
- /**
- * Modify to the given occurrence of a given day of the week
- * in the current month. If the calculated occurrence is outside the scope
- * of the current month, then return false and no modifications are made.
- * Use the supplied constants to indicate the desired dayOfWeek, ex. static::MONDAY.
- *
- * @param int $nth
- * @param int $dayOfWeek
- *
- * @return mixed
- */
- public function nthOfMonth($nth, $dayOfWeek)
- {
- $date = $this->avoidMutation()->firstOfMonth();
- $check = $date->rawFormat('Y-m');
- $date = $date->modify('+'.$nth.' '.static::$days[$dayOfWeek]);
-
- return $date->rawFormat('Y-m') === $check ? $this->modify((string) $date) : false;
- }
-
- /**
- * Modify to the first occurrence of a given day of the week
- * in the current quarter. If no dayOfWeek is provided, modify to the
- * first day of the current quarter. Use the supplied constants
- * to indicate the desired dayOfWeek, ex. static::MONDAY.
- *
- * @param int|null $dayOfWeek day of the week default null
- *
- * @return static
- */
- public function firstOfQuarter($dayOfWeek = null)
- {
- return $this->setDate($this->year, $this->quarter * static::MONTHS_PER_QUARTER - 2, 1)->firstOfMonth($dayOfWeek);
- }
-
- /**
- * Modify to the last occurrence of a given day of the week
- * in the current quarter. If no dayOfWeek is provided, modify to the
- * last day of the current quarter. Use the supplied constants
- * to indicate the desired dayOfWeek, ex. static::MONDAY.
- *
- * @param int|null $dayOfWeek day of the week default null
- *
- * @return static
- */
- public function lastOfQuarter($dayOfWeek = null)
- {
- return $this->setDate($this->year, $this->quarter * static::MONTHS_PER_QUARTER, 1)->lastOfMonth($dayOfWeek);
- }
-
- /**
- * Modify to the given occurrence of a given day of the week
- * in the current quarter. If the calculated occurrence is outside the scope
- * of the current quarter, then return false and no modifications are made.
- * Use the supplied constants to indicate the desired dayOfWeek, ex. static::MONDAY.
- *
- * @param int $nth
- * @param int $dayOfWeek
- *
- * @return mixed
- */
- public function nthOfQuarter($nth, $dayOfWeek)
- {
- $date = $this->avoidMutation()->day(1)->month($this->quarter * static::MONTHS_PER_QUARTER);
- $lastMonth = $date->month;
- $year = $date->year;
- $date = $date->firstOfQuarter()->modify('+'.$nth.' '.static::$days[$dayOfWeek]);
-
- return ($lastMonth < $date->month || $year !== $date->year) ? false : $this->modify((string) $date);
- }
-
- /**
- * Modify to the first occurrence of a given day of the week
- * in the current year. If no dayOfWeek is provided, modify to the
- * first day of the current year. Use the supplied constants
- * to indicate the desired dayOfWeek, ex. static::MONDAY.
- *
- * @param int|null $dayOfWeek day of the week default null
- *
- * @return static
- */
- public function firstOfYear($dayOfWeek = null)
- {
- return $this->month(1)->firstOfMonth($dayOfWeek);
- }
-
- /**
- * Modify to the last occurrence of a given day of the week
- * in the current year. If no dayOfWeek is provided, modify to the
- * last day of the current year. Use the supplied constants
- * to indicate the desired dayOfWeek, ex. static::MONDAY.
- *
- * @param int|null $dayOfWeek day of the week default null
- *
- * @return static
- */
- public function lastOfYear($dayOfWeek = null)
- {
- return $this->month(static::MONTHS_PER_YEAR)->lastOfMonth($dayOfWeek);
- }
-
- /**
- * Modify to the given occurrence of a given day of the week
- * in the current year. If the calculated occurrence is outside the scope
- * of the current year, then return false and no modifications are made.
- * Use the supplied constants to indicate the desired dayOfWeek, ex. static::MONDAY.
- *
- * @param int $nth
- * @param int $dayOfWeek
- *
- * @return mixed
- */
- public function nthOfYear($nth, $dayOfWeek)
- {
- $date = $this->avoidMutation()->firstOfYear()->modify('+'.$nth.' '.static::$days[$dayOfWeek]);
-
- return $this->year === $date->year ? $this->modify((string) $date) : false;
- }
-
- /**
- * Modify the current instance to the average of a given instance (default now) and the current instance
- * (second-precision).
- *
- * @param \Carbon\Carbon|\DateTimeInterface|null $date
- *
- * @return static
- */
- public function average($date = null)
- {
- return $this->addRealMicroseconds((int) ($this->diffInRealMicroseconds($this->resolveCarbon($date), false) / 2));
- }
-
- /**
- * Get the closest date from the instance (second-precision).
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2
- *
- * @return static
- */
- public function closest($date1, $date2)
- {
- return $this->diffInRealMicroseconds($date1) < $this->diffInRealMicroseconds($date2) ? $date1 : $date2;
- }
-
- /**
- * Get the farthest date from the instance (second-precision).
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2
- *
- * @return static
- */
- public function farthest($date1, $date2)
- {
- return $this->diffInRealMicroseconds($date1) > $this->diffInRealMicroseconds($date2) ? $date1 : $date2;
- }
-
- /**
- * Get the minimum instance between a given instance (default now) and the current instance.
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @return static
- */
- public function min($date = null)
- {
- $date = $this->resolveCarbon($date);
-
- return $this->lt($date) ? $this : $date;
- }
-
- /**
- * Get the minimum instance between a given instance (default now) and the current instance.
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @see min()
- *
- * @return static
- */
- public function minimum($date = null)
- {
- return $this->min($date);
- }
-
- /**
- * Get the maximum instance between a given instance (default now) and the current instance.
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @return static
- */
- public function max($date = null)
- {
- $date = $this->resolveCarbon($date);
-
- return $this->gt($date) ? $this : $date;
- }
-
- /**
- * Get the maximum instance between a given instance (default now) and the current instance.
- *
- * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
- *
- * @see max()
- *
- * @return static
- */
- public function maximum($date = null)
- {
- return $this->max($date);
- }
-
- /**
- * Calls \DateTime::modify if mutable or \DateTimeImmutable::modify else.
- *
- * @see https://php.net/manual/en/datetime.modify.php
- *
- * @return static|false
- */
- #[ReturnTypeWillChange]
- public function modify($modify)
- {
- return parent::modify((string) $modify);
- }
-
- /**
- * Similar to native modify() method of DateTime but can handle more grammars.
- *
- * @example
- * ```
- * echo Carbon::now()->change('next 2pm');
- * ```
- *
- * @link https://php.net/manual/en/datetime.modify.php
- *
- * @param string $modifier
- *
- * @return static
- */
- public function change($modifier)
- {
- return $this->modify(preg_replace_callback('/^(next|previous|last)\s+(\d{1,2}(h|am|pm|:\d{1,2}(:\d{1,2})?))$/i', function ($match) {
- $match[2] = str_replace('h', ':00', $match[2]);
- $test = $this->avoidMutation()->modify($match[2]);
- $method = $match[1] === 'next' ? 'lt' : 'gt';
- $match[1] = $test->$method($this) ? $match[1].' day' : 'today';
-
- return $match[1].' '.$match[2];
- }, strtr(trim($modifier), [
- ' at ' => ' ',
- 'just now' => 'now',
- 'after tomorrow' => 'tomorrow +1 day',
- 'before yesterday' => 'yesterday -1 day',
- ])));
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Mutability.php b/vendor/nesbot/carbon/src/Carbon/Traits/Mutability.php
deleted file mode 100644
index 561c867d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Traits/Mutability.php
+++ /dev/null
@@ -1,71 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Traits;
-
-use Carbon\Carbon;
-use Carbon\CarbonImmutable;
-
-/**
- * Trait Mutability.
- *
- * Utils to know if the current object is mutable or immutable and convert it.
- */
-trait Mutability
-{
- use Cast;
-
- /**
- * Returns true if the current class/instance is mutable.
- *
- * @return bool
- */
- public static function isMutable()
- {
- return false;
- }
-
- /**
- * Returns true if the current class/instance is immutable.
- *
- * @return bool
- */
- public static function isImmutable()
- {
- return !static::isMutable();
- }
-
- /**
- * Return a mutable copy of the instance.
- *
- * @return Carbon
- */
- public function toMutable()
- {
- /** @var Carbon $date */
- $date = $this->cast(Carbon::class);
-
- return $date;
- }
-
- /**
- * Return a immutable copy of the instance.
- *
- * @return CarbonImmutable
- */
- public function toImmutable()
- {
- /** @var CarbonImmutable $date */
- $date = $this->cast(CarbonImmutable::class);
-
- return $date;
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/ObjectInitialisation.php b/vendor/nesbot/carbon/src/Carbon/Traits/ObjectInitialisation.php
deleted file mode 100644
index c77a1024..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Traits/ObjectInitialisation.php
+++ /dev/null
@@ -1,22 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Traits;
-
-trait ObjectInitialisation
-{
- /**
- * True when parent::__construct has been called.
- *
- * @var string
- */
- protected $constructedObjectId;
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Options.php b/vendor/nesbot/carbon/src/Carbon/Traits/Options.php
deleted file mode 100644
index 0ddee8dd..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Traits/Options.php
+++ /dev/null
@@ -1,471 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Traits;
-
-use Carbon\CarbonInterface;
-use DateTimeInterface;
-use Throwable;
-
-/**
- * Trait Options.
- *
- * Embed base methods to change settings of Carbon classes.
- *
- * Depends on the following methods:
- *
- * @method \Carbon\Carbon|\Carbon\CarbonImmutable shiftTimezone($timezone) Set the timezone
- */
-trait Options
-{
- use Localization;
-
- /**
- * Customizable PHP_INT_SIZE override.
- *
- * @var int
- */
- public static $PHPIntSize = PHP_INT_SIZE;
-
- /**
- * First day of week.
- *
- * @var int|string
- */
- protected static $weekStartsAt = CarbonInterface::MONDAY;
-
- /**
- * Last day of week.
- *
- * @var int|string
- */
- protected static $weekEndsAt = CarbonInterface::SUNDAY;
-
- /**
- * Days of weekend.
- *
- * @var array
- */
- protected static $weekendDays = [
- CarbonInterface::SATURDAY,
- CarbonInterface::SUNDAY,
- ];
-
- /**
- * Format regex patterns.
- *
- * @var array
- */
- protected static $regexFormats = [
- 'd' => '(3[01]|[12][0-9]|0[1-9])',
- 'D' => '(Sun|Mon|Tue|Wed|Thu|Fri|Sat)',
- 'j' => '([123][0-9]|[1-9])',
- 'l' => '([a-zA-Z]{2,})',
- 'N' => '([1-7])',
- 'S' => '(st|nd|rd|th)',
- 'w' => '([0-6])',
- 'z' => '(36[0-5]|3[0-5][0-9]|[12][0-9]{2}|[1-9]?[0-9])',
- 'W' => '(5[012]|[1-4][0-9]|0?[1-9])',
- 'F' => '([a-zA-Z]{2,})',
- 'm' => '(1[012]|0[1-9])',
- 'M' => '([a-zA-Z]{3})',
- 'n' => '(1[012]|[1-9])',
- 't' => '(2[89]|3[01])',
- 'L' => '(0|1)',
- 'o' => '([1-9][0-9]{0,4})',
- 'Y' => '([1-9]?[0-9]{4})',
- 'y' => '([0-9]{2})',
- 'a' => '(am|pm)',
- 'A' => '(AM|PM)',
- 'B' => '([0-9]{3})',
- 'g' => '(1[012]|[1-9])',
- 'G' => '(2[0-3]|1?[0-9])',
- 'h' => '(1[012]|0[1-9])',
- 'H' => '(2[0-3]|[01][0-9])',
- 'i' => '([0-5][0-9])',
- 's' => '([0-5][0-9])',
- 'u' => '([0-9]{1,6})',
- 'v' => '([0-9]{1,3})',
- 'e' => '([a-zA-Z]{1,5})|([a-zA-Z]*\\/[a-zA-Z]*)',
- 'I' => '(0|1)',
- 'O' => '([+-](1[012]|0[0-9])[0134][05])',
- 'P' => '([+-](1[012]|0[0-9]):[0134][05])',
- 'p' => '(Z|[+-](1[012]|0[0-9]):[0134][05])',
- 'T' => '([a-zA-Z]{1,5})',
- 'Z' => '(-?[1-5]?[0-9]{1,4})',
- 'U' => '([0-9]*)',
-
- // The formats below are combinations of the above formats.
- 'c' => '(([1-9]?[0-9]{4})-(1[012]|0[1-9])-(3[01]|[12][0-9]|0[1-9])T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[+-](1[012]|0[0-9]):([0134][05]))', // Y-m-dTH:i:sP
- 'r' => '(([a-zA-Z]{3}), ([123][0-9]|0[1-9]) ([a-zA-Z]{3}) ([1-9]?[0-9]{4}) (2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9]) [+-](1[012]|0[0-9])([0134][05]))', // D, d M Y H:i:s O
- ];
-
- /**
- * Format modifiers (such as available in createFromFormat) regex patterns.
- *
- * @var array
- */
- protected static $regexFormatModifiers = [
- '*' => '.+',
- ' ' => '[ ]',
- '#' => '[;:\\/.,()-]',
- '?' => '([^a]|[a])',
- '!' => '',
- '|' => '',
- '+' => '',
- ];
-
- /**
- * Indicates if months should be calculated with overflow.
- * Global setting.
- *
- * @var bool
- */
- protected static $monthsOverflow = true;
-
- /**
- * Indicates if years should be calculated with overflow.
- * Global setting.
- *
- * @var bool
- */
- protected static $yearsOverflow = true;
-
- /**
- * Indicates if the strict mode is in use.
- * Global setting.
- *
- * @var bool
- */
- protected static $strictModeEnabled = true;
-
- /**
- * Function to call instead of format.
- *
- * @var string|callable|null
- */
- protected static $formatFunction;
-
- /**
- * Function to call instead of createFromFormat.
- *
- * @var string|callable|null
- */
- protected static $createFromFormatFunction;
-
- /**
- * Function to call instead of parse.
- *
- * @var string|callable|null
- */
- protected static $parseFunction;
-
- /**
- * Indicates if months should be calculated with overflow.
- * Specific setting.
- *
- * @var bool|null
- */
- protected $localMonthsOverflow;
-
- /**
- * Indicates if years should be calculated with overflow.
- * Specific setting.
- *
- * @var bool|null
- */
- protected $localYearsOverflow;
-
- /**
- * Indicates if the strict mode is in use.
- * Specific setting.
- *
- * @var bool|null
- */
- protected $localStrictModeEnabled;
-
- /**
- * Options for diffForHumans and forHumans methods.
- *
- * @var bool|null
- */
- protected $localHumanDiffOptions;
-
- /**
- * Format to use on string cast.
- *
- * @var string|null
- */
- protected $localToStringFormat;
-
- /**
- * Format to use on JSON serialization.
- *
- * @var string|null
- */
- protected $localSerializer;
-
- /**
- * Instance-specific macros.
- *
- * @var array|null
- */
- protected $localMacros;
-
- /**
- * Instance-specific generic macros.
- *
- * @var array|null
- */
- protected $localGenericMacros;
-
- /**
- * Function to call instead of format.
- *
- * @var string|callable|null
- */
- protected $localFormatFunction;
-
- /**
- * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * @see settings
- *
- * Enable the strict mode (or disable with passing false).
- *
- * @param bool $strictModeEnabled
- */
- public static function useStrictMode($strictModeEnabled = true)
- {
- static::$strictModeEnabled = $strictModeEnabled;
- }
-
- /**
- * Returns true if the strict mode is globally in use, false else.
- * (It can be overridden in specific instances.)
- *
- * @return bool
- */
- public static function isStrictModeEnabled()
- {
- return static::$strictModeEnabled;
- }
-
- /**
- * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants
- * are available for quarters, years, decade, centuries, millennia (singular and plural forms).
- * @see settings
- *
- * Indicates if months should be calculated with overflow.
- *
- * @param bool $monthsOverflow
- *
- * @return void
- */
- public static function useMonthsOverflow($monthsOverflow = true)
- {
- static::$monthsOverflow = $monthsOverflow;
- }
-
- /**
- * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants
- * are available for quarters, years, decade, centuries, millennia (singular and plural forms).
- * @see settings
- *
- * Reset the month overflow behavior.
- *
- * @return void
- */
- public static function resetMonthsOverflow()
- {
- static::$monthsOverflow = true;
- }
-
- /**
- * Get the month overflow global behavior (can be overridden in specific instances).
- *
- * @return bool
- */
- public static function shouldOverflowMonths()
- {
- return static::$monthsOverflow;
- }
-
- /**
- * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants
- * are available for quarters, years, decade, centuries, millennia (singular and plural forms).
- * @see settings
- *
- * Indicates if years should be calculated with overflow.
- *
- * @param bool $yearsOverflow
- *
- * @return void
- */
- public static function useYearsOverflow($yearsOverflow = true)
- {
- static::$yearsOverflow = $yearsOverflow;
- }
-
- /**
- * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather use the ->settings() method.
- * Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants
- * are available for quarters, years, decade, centuries, millennia (singular and plural forms).
- * @see settings
- *
- * Reset the month overflow behavior.
- *
- * @return void
- */
- public static function resetYearsOverflow()
- {
- static::$yearsOverflow = true;
- }
-
- /**
- * Get the month overflow global behavior (can be overridden in specific instances).
- *
- * @return bool
- */
- public static function shouldOverflowYears()
- {
- return static::$yearsOverflow;
- }
-
- /**
- * Set specific options.
- * - strictMode: true|false|null
- * - monthOverflow: true|false|null
- * - yearOverflow: true|false|null
- * - humanDiffOptions: int|null
- * - toStringFormat: string|Closure|null
- * - toJsonFormat: string|Closure|null
- * - locale: string|null
- * - timezone: \DateTimeZone|string|int|null
- * - macros: array|null
- * - genericMacros: array|null
- *
- * @param array $settings
- *
- * @return $this|static
- */
- public function settings(array $settings)
- {
- $this->localStrictModeEnabled = $settings['strictMode'] ?? null;
- $this->localMonthsOverflow = $settings['monthOverflow'] ?? null;
- $this->localYearsOverflow = $settings['yearOverflow'] ?? null;
- $this->localHumanDiffOptions = $settings['humanDiffOptions'] ?? null;
- $this->localToStringFormat = $settings['toStringFormat'] ?? null;
- $this->localSerializer = $settings['toJsonFormat'] ?? null;
- $this->localMacros = $settings['macros'] ?? null;
- $this->localGenericMacros = $settings['genericMacros'] ?? null;
- $this->localFormatFunction = $settings['formatFunction'] ?? null;
-
- if (isset($settings['locale'])) {
- $locales = $settings['locale'];
-
- if (!\is_array($locales)) {
- $locales = [$locales];
- }
-
- $this->locale(...$locales);
- }
-
- if (isset($settings['innerTimezone'])) {
- return $this->setTimezone($settings['innerTimezone']);
- }
-
- if (isset($settings['timezone'])) {
- return $this->shiftTimezone($settings['timezone']);
- }
-
- return $this;
- }
-
- /**
- * Returns current local settings.
- *
- * @return array
- */
- public function getSettings()
- {
- $settings = [];
- $map = [
- 'localStrictModeEnabled' => 'strictMode',
- 'localMonthsOverflow' => 'monthOverflow',
- 'localYearsOverflow' => 'yearOverflow',
- 'localHumanDiffOptions' => 'humanDiffOptions',
- 'localToStringFormat' => 'toStringFormat',
- 'localSerializer' => 'toJsonFormat',
- 'localMacros' => 'macros',
- 'localGenericMacros' => 'genericMacros',
- 'locale' => 'locale',
- 'tzName' => 'timezone',
- 'localFormatFunction' => 'formatFunction',
- ];
-
- foreach ($map as $property => $key) {
- $value = $this->$property ?? null;
-
- if ($value !== null) {
- $settings[$key] = $value;
- }
- }
-
- return $settings;
- }
-
- /**
- * Show truthy properties on var_dump().
- *
- * @return array
- */
- public function __debugInfo()
- {
- $infos = array_filter(get_object_vars($this), function ($var) {
- return $var;
- });
-
- foreach (['dumpProperties', 'constructedObjectId'] as $property) {
- if (isset($infos[$property])) {
- unset($infos[$property]);
- }
- }
-
- $this->addExtraDebugInfos($infos);
-
- return $infos;
- }
-
- protected function addExtraDebugInfos(&$infos): void
- {
- if ($this instanceof DateTimeInterface) {
- try {
- if (!isset($infos['date'])) {
- $infos['date'] = $this->format(CarbonInterface::MOCK_DATETIME_FORMAT);
- }
-
- if (!isset($infos['timezone'])) {
- $infos['timezone'] = $this->tzName;
- }
- } catch (Throwable $exception) {
- // noop
- }
- }
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Rounding.php b/vendor/nesbot/carbon/src/Carbon/Traits/Rounding.php
deleted file mode 100644
index 33062397..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Traits/Rounding.php
+++ /dev/null
@@ -1,239 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Traits;
-
-use Carbon\CarbonInterface;
-use Carbon\Exceptions\UnknownUnitException;
-
-/**
- * Trait Rounding.
- *
- * Round, ceil, floor units.
- *
- * Depends on the following methods:
- *
- * @method static copy()
- * @method static startOfWeek(int $weekStartsAt = null)
- */
-trait Rounding
-{
- use IntervalRounding;
-
- /**
- * Round the current instance at the given unit with given precision if specified and the given function.
- *
- * @param string $unit
- * @param float|int $precision
- * @param string $function
- *
- * @return CarbonInterface
- */
- public function roundUnit($unit, $precision = 1, $function = 'round')
- {
- $metaUnits = [
- // @call roundUnit
- 'millennium' => [static::YEARS_PER_MILLENNIUM, 'year'],
- // @call roundUnit
- 'century' => [static::YEARS_PER_CENTURY, 'year'],
- // @call roundUnit
- 'decade' => [static::YEARS_PER_DECADE, 'year'],
- // @call roundUnit
- 'quarter' => [static::MONTHS_PER_QUARTER, 'month'],
- // @call roundUnit
- 'millisecond' => [1000, 'microsecond'],
- ];
- $normalizedUnit = static::singularUnit($unit);
- $ranges = array_merge(static::getRangesByUnit(), [
- // @call roundUnit
- 'microsecond' => [0, 999999],
- ]);
- $factor = 1;
- $initialMonth = $this->month;
-
- if ($normalizedUnit === 'week') {
- $normalizedUnit = 'day';
- $precision *= static::DAYS_PER_WEEK;
- }
-
- if (isset($metaUnits[$normalizedUnit])) {
- [$factor, $normalizedUnit] = $metaUnits[$normalizedUnit];
- }
-
- $precision *= $factor;
-
- if (!isset($ranges[$normalizedUnit])) {
- throw new UnknownUnitException($unit);
- }
-
- $found = false;
- $fraction = 0;
- $arguments = null;
- $factor = $this->year < 0 ? -1 : 1;
- $changes = [];
-
- foreach ($ranges as $unit => [$minimum, $maximum]) {
- if ($normalizedUnit === $unit) {
- $arguments = [$this->$unit, $minimum];
- $fraction = $precision - floor($precision);
- $found = true;
-
- continue;
- }
-
- if ($found) {
- $delta = $maximum + 1 - $minimum;
- $factor /= $delta;
- $fraction *= $delta;
- $arguments[0] += $this->$unit * $factor;
- $changes[$unit] = round(
- $minimum + ($fraction ? $fraction * $function(($this->$unit - $minimum) / $fraction) : 0)
- );
-
- // Cannot use modulo as it lose double precision
- while ($changes[$unit] >= $delta) {
- $changes[$unit] -= $delta;
- }
-
- $fraction -= floor($fraction);
- }
- }
-
- [$value, $minimum] = $arguments;
- $normalizedValue = floor($function(($value - $minimum) / $precision) * $precision + $minimum);
-
- /** @var CarbonInterface $result */
- $result = $this->$normalizedUnit($normalizedValue);
-
- foreach ($changes as $unit => $value) {
- $result = $result->$unit($value);
- }
-
- return $normalizedUnit === 'month' && $precision <= 1 && abs($result->month - $initialMonth) === 2
- // Re-run the change in case an overflow occurred
- ? $result->$normalizedUnit($normalizedValue)
- : $result;
- }
-
- /**
- * Truncate the current instance at the given unit with given precision if specified.
- *
- * @param string $unit
- * @param float|int $precision
- *
- * @return CarbonInterface
- */
- public function floorUnit($unit, $precision = 1)
- {
- return $this->roundUnit($unit, $precision, 'floor');
- }
-
- /**
- * Ceil the current instance at the given unit with given precision if specified.
- *
- * @param string $unit
- * @param float|int $precision
- *
- * @return CarbonInterface
- */
- public function ceilUnit($unit, $precision = 1)
- {
- return $this->roundUnit($unit, $precision, 'ceil');
- }
-
- /**
- * Round the current instance second with given precision if specified.
- *
- * @param float|int|string|\DateInterval|null $precision
- * @param string $function
- *
- * @return CarbonInterface
- */
- public function round($precision = 1, $function = 'round')
- {
- return $this->roundWith($precision, $function);
- }
-
- /**
- * Round the current instance second with given precision if specified.
- *
- * @param float|int|string|\DateInterval|null $precision
- *
- * @return CarbonInterface
- */
- public function floor($precision = 1)
- {
- return $this->round($precision, 'floor');
- }
-
- /**
- * Ceil the current instance second with given precision if specified.
- *
- * @param float|int|string|\DateInterval|null $precision
- *
- * @return CarbonInterface
- */
- public function ceil($precision = 1)
- {
- return $this->round($precision, 'ceil');
- }
-
- /**
- * Round the current instance week.
- *
- * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week
- *
- * @return CarbonInterface
- */
- public function roundWeek($weekStartsAt = null)
- {
- return $this->closest(
- $this->avoidMutation()->floorWeek($weekStartsAt),
- $this->avoidMutation()->ceilWeek($weekStartsAt)
- );
- }
-
- /**
- * Truncate the current instance week.
- *
- * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week
- *
- * @return CarbonInterface
- */
- public function floorWeek($weekStartsAt = null)
- {
- return $this->startOfWeek($weekStartsAt);
- }
-
- /**
- * Ceil the current instance week.
- *
- * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week
- *
- * @return CarbonInterface
- */
- public function ceilWeek($weekStartsAt = null)
- {
- if ($this->isMutable()) {
- $startOfWeek = $this->avoidMutation()->startOfWeek($weekStartsAt);
-
- return $startOfWeek != $this ?
- $this->startOfWeek($weekStartsAt)->addWeek() :
- $this;
- }
-
- $startOfWeek = $this->startOfWeek($weekStartsAt);
-
- return $startOfWeek != $this ?
- $startOfWeek->addWeek() :
- $this->avoidMutation();
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Serialization.php b/vendor/nesbot/carbon/src/Carbon/Traits/Serialization.php
deleted file mode 100644
index eebc69bd..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Traits/Serialization.php
+++ /dev/null
@@ -1,240 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Traits;
-
-use Carbon\Exceptions\InvalidFormatException;
-use ReturnTypeWillChange;
-use Throwable;
-
-/**
- * Trait Serialization.
- *
- * Serialization and JSON stuff.
- *
- * Depends on the following properties:
- *
- * @property int $year
- * @property int $month
- * @property int $daysInMonth
- * @property int $quarter
- *
- * Depends on the following methods:
- *
- * @method string|static locale(string $locale = null, string ...$fallbackLocales)
- * @method string toJSON()
- */
-trait Serialization
-{
- use ObjectInitialisation;
-
- /**
- * The custom Carbon JSON serializer.
- *
- * @var callable|null
- */
- protected static $serializer;
-
- /**
- * List of key to use for dump/serialization.
- *
- * @var string[]
- */
- protected $dumpProperties = ['date', 'timezone_type', 'timezone'];
-
- /**
- * Locale to dump comes here before serialization.
- *
- * @var string|null
- */
- protected $dumpLocale;
-
- /**
- * Embed date properties to dump in a dedicated variables so it won't overlap native
- * DateTime ones.
- *
- * @var array|null
- */
- protected $dumpDateProperties;
-
- /**
- * Return a serialized string of the instance.
- *
- * @return string
- */
- public function serialize()
- {
- return serialize($this);
- }
-
- /**
- * Create an instance from a serialized string.
- *
- * @param string $value
- *
- * @throws InvalidFormatException
- *
- * @return static
- */
- public static function fromSerialized($value)
- {
- $instance = @unserialize((string) $value);
-
- if (!$instance instanceof static) {
- throw new InvalidFormatException("Invalid serialized value: $value");
- }
-
- return $instance;
- }
-
- /**
- * The __set_state handler.
- *
- * @param string|array $dump
- *
- * @return static
- */
- #[ReturnTypeWillChange]
- public static function __set_state($dump)
- {
- if (\is_string($dump)) {
- return static::parse($dump);
- }
-
- /** @var \DateTimeInterface $date */
- $date = get_parent_class(static::class) && method_exists(parent::class, '__set_state')
- ? parent::__set_state((array) $dump)
- : (object) $dump;
-
- return static::instance($date);
- }
-
- /**
- * Returns the list of properties to dump on serialize() called on.
- *
- * @return array
- */
- public function __sleep()
- {
- $properties = $this->getSleepProperties();
-
- if ($this->localTranslator ?? null) {
- $properties[] = 'dumpLocale';
- $this->dumpLocale = $this->locale ?? null;
- }
-
- return $properties;
- }
-
- /**
- * Set locale if specified on unserialize() called.
- *
- * @return void
- */
- #[ReturnTypeWillChange]
- public function __wakeup()
- {
- if (get_parent_class() && method_exists(parent::class, '__wakeup')) {
- // @codeCoverageIgnoreStart
- try {
- parent::__wakeup();
- } catch (Throwable $exception) {
- // FatalError occurs when calling msgpack_unpack() in PHP 7.4 or later.
- ['date' => $date, 'timezone' => $timezone] = $this->dumpDateProperties;
- parent::__construct($date, unserialize($timezone));
- }
- // @codeCoverageIgnoreEnd
- }
-
- $this->constructedObjectId = spl_object_hash($this);
-
- if (isset($this->dumpLocale)) {
- $this->locale($this->dumpLocale);
- $this->dumpLocale = null;
- }
-
- $this->cleanupDumpProperties();
- }
-
- /**
- * Prepare the object for JSON serialization.
- *
- * @return array|string
- */
- #[ReturnTypeWillChange]
- public function jsonSerialize()
- {
- $serializer = $this->localSerializer ?? static::$serializer;
-
- if ($serializer) {
- return \is_string($serializer)
- ? $this->rawFormat($serializer)
- : $serializer($this);
- }
-
- return $this->toJSON();
- }
-
- /**
- * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
- * You should rather transform Carbon object before the serialization.
- *
- * JSON serialize all Carbon instances using the given callback.
- *
- * @param callable $callback
- *
- * @return void
- */
- public static function serializeUsing($callback)
- {
- static::$serializer = $callback;
- }
-
- /**
- * Cleanup properties attached to the public scope of DateTime when a dump of the date is requested.
- * foreach ($date as $_) {}
- * serializer($date)
- * var_export($date)
- * get_object_vars($date)
- */
- public function cleanupDumpProperties()
- {
- foreach ($this->dumpProperties as $property) {
- if (isset($this->$property)) {
- unset($this->$property);
- }
- }
-
- return $this;
- }
-
- private function getSleepProperties(): array
- {
- $properties = $this->dumpProperties;
-
- // @codeCoverageIgnoreStart
- if (!\extension_loaded('msgpack')) {
- return $properties;
- }
-
- if (isset($this->constructedObjectId)) {
- $this->dumpDateProperties = [
- 'date' => $this->format('Y-m-d H:i:s.u'),
- 'timezone' => serialize($this->timezone ?? null),
- ];
-
- $properties[] = 'dumpDateProperties';
- }
-
- return $properties;
- // @codeCoverageIgnoreEnd
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Test.php b/vendor/nesbot/carbon/src/Carbon/Traits/Test.php
deleted file mode 100644
index 1287ed84..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Traits/Test.php
+++ /dev/null
@@ -1,156 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Traits;
-
-use Carbon\CarbonInterface;
-use Closure;
-use DateTimeImmutable;
-use DateTimeInterface;
-
-trait Test
-{
- ///////////////////////////////////////////////////////////////////
- ///////////////////////// TESTING AIDS ////////////////////////////
- ///////////////////////////////////////////////////////////////////
-
- /**
- * A test Carbon instance to be returned when now instances are created.
- *
- * @var static
- */
- protected static $testNow;
-
- /**
- * Set a Carbon instance (real or mock) to be returned when a "now"
- * instance is created. The provided instance will be returned
- * specifically under the following conditions:
- * - A call to the static now() method, ex. Carbon::now()
- * - When a null (or blank string) is passed to the constructor or parse(), ex. new Carbon(null)
- * - When the string "now" is passed to the constructor or parse(), ex. new Carbon('now')
- * - When a string containing the desired time is passed to Carbon::parse().
- *
- * Note the timezone parameter was left out of the examples above and
- * has no affect as the mock value will be returned regardless of its value.
- *
- * To clear the test instance call this method using the default
- * parameter of null.
- *
- * /!\ Use this method for unit tests only.
- *
- * @param Closure|static|string|false|null $testNow real or mock Carbon instance
- */
- public static function setTestNow($testNow = null)
- {
- if ($testNow === false) {
- $testNow = null;
- }
-
- static::$testNow = \is_string($testNow) ? static::parse($testNow) : $testNow;
- }
-
- public static function setTestNowAndTimezone($testNow = null, $tz = null)
- {
- $useDateInstanceTimezone = $testNow instanceof DateTimeInterface;
-
- if ($useDateInstanceTimezone) {
- date_default_timezone_set($testNow->getTimezone()->getName());
- }
-
- static::setTestNow($testNow);
-
- if (!$useDateInstanceTimezone) {
- date_default_timezone_set(static::getMockedTestNow(\func_num_args() === 1 ? null : $tz)->timezone);
- }
- }
-
- /**
- * Temporarily sets a static date to be used within the callback.
- * Using setTestNow to set the date, executing the callback, then
- * clearing the test instance.
- *
- * /!\ Use this method for unit tests only.
- *
- * @param Closure|static|string|false|null $testNow real or mock Carbon instance
- * @param Closure|null $callback
- *
- * @return mixed
- */
- public static function withTestNow($testNow = null, $callback = null)
- {
- static::setTestNow($testNow);
- $result = $callback();
- static::setTestNow();
-
- return $result;
- }
-
- /**
- * Get the Carbon instance (real or mock) to be returned when a "now"
- * instance is created.
- *
- * @return Closure|static the current instance used for testing
- */
- public static function getTestNow()
- {
- return static::$testNow;
- }
-
- /**
- * Determine if there is a valid test instance set. A valid test instance
- * is anything that is not null.
- *
- * @return bool true if there is a test instance, otherwise false
- */
- public static function hasTestNow()
- {
- return static::getTestNow() !== null;
- }
-
- /**
- * Get the mocked date passed in setTestNow() and if it's a Closure, execute it.
- *
- * @param string|\DateTimeZone $tz
- *
- * @return \Carbon\CarbonImmutable|\Carbon\Carbon|null
- */
- protected static function getMockedTestNow($tz)
- {
- $testNow = static::getTestNow();
-
- if ($testNow instanceof Closure) {
- $realNow = new DateTimeImmutable('now');
- $testNow = $testNow(static::parse(
- $realNow->format('Y-m-d H:i:s.u'),
- $tz ?: $realNow->getTimezone()
- ));
- }
- /* @var \Carbon\CarbonImmutable|\Carbon\Carbon|null $testNow */
-
- return $testNow instanceof CarbonInterface
- ? $testNow->avoidMutation()->tz($tz)
- : $testNow;
- }
-
- protected static function mockConstructorParameters(&$time, $tz)
- {
- /** @var \Carbon\CarbonImmutable|\Carbon\Carbon $testInstance */
- $testInstance = clone static::getMockedTestNow($tz);
-
- if (static::hasRelativeKeywords($time)) {
- $testInstance = $testInstance->modify($time);
- }
-
- $time = $testInstance instanceof self
- ? $testInstance->rawFormat(static::MOCK_DATETIME_FORMAT)
- : $testInstance->format(static::MOCK_DATETIME_FORMAT);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Timestamp.php b/vendor/nesbot/carbon/src/Carbon/Traits/Timestamp.php
deleted file mode 100644
index 2cb5c48d..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Traits/Timestamp.php
+++ /dev/null
@@ -1,198 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Traits;
-
-/**
- * Trait Timestamp.
- */
-trait Timestamp
-{
- /**
- * Create a Carbon instance from a timestamp and set the timezone (use default one if not specified).
- *
- * Timestamp input can be given as int, float or a string containing one or more numbers.
- *
- * @param float|int|string $timestamp
- * @param \DateTimeZone|string|null $tz
- *
- * @return static
- */
- public static function createFromTimestamp($timestamp, $tz = null)
- {
- return static::createFromTimestampUTC($timestamp)->setTimezone($tz);
- }
-
- /**
- * Create a Carbon instance from an timestamp keeping the timezone to UTC.
- *
- * Timestamp input can be given as int, float or a string containing one or more numbers.
- *
- * @param float|int|string $timestamp
- *
- * @return static
- */
- public static function createFromTimestampUTC($timestamp)
- {
- [$integer, $decimal] = self::getIntegerAndDecimalParts($timestamp);
- $delta = floor($decimal / static::MICROSECONDS_PER_SECOND);
- $integer += $delta;
- $decimal -= $delta * static::MICROSECONDS_PER_SECOND;
- $decimal = str_pad((string) $decimal, 6, '0', STR_PAD_LEFT);
-
- return static::rawCreateFromFormat('U u', "$integer $decimal");
- }
-
- /**
- * Create a Carbon instance from a timestamp in milliseconds.
- *
- * Timestamp input can be given as int, float or a string containing one or more numbers.
- *
- * @param float|int|string $timestamp
- *
- * @return static
- */
- public static function createFromTimestampMsUTC($timestamp)
- {
- [$milliseconds, $microseconds] = self::getIntegerAndDecimalParts($timestamp, 3);
- $sign = $milliseconds < 0 || $milliseconds === 0.0 && $microseconds < 0 ? -1 : 1;
- $milliseconds = abs($milliseconds);
- $microseconds = $sign * abs($microseconds) + static::MICROSECONDS_PER_MILLISECOND * ($milliseconds % static::MILLISECONDS_PER_SECOND);
- $seconds = $sign * floor($milliseconds / static::MILLISECONDS_PER_SECOND);
- $delta = floor($microseconds / static::MICROSECONDS_PER_SECOND);
- $seconds += $delta;
- $microseconds -= $delta * static::MICROSECONDS_PER_SECOND;
- $microseconds = str_pad($microseconds, 6, '0', STR_PAD_LEFT);
-
- return static::rawCreateFromFormat('U u', "$seconds $microseconds");
- }
-
- /**
- * Create a Carbon instance from a timestamp in milliseconds.
- *
- * Timestamp input can be given as int, float or a string containing one or more numbers.
- *
- * @param float|int|string $timestamp
- * @param \DateTimeZone|string|null $tz
- *
- * @return static
- */
- public static function createFromTimestampMs($timestamp, $tz = null)
- {
- return static::createFromTimestampMsUTC($timestamp)
- ->setTimezone($tz);
- }
-
- /**
- * Set the instance's timestamp.
- *
- * Timestamp input can be given as int, float or a string containing one or more numbers.
- *
- * @param float|int|string $unixTimestamp
- *
- * @return static
- */
- public function timestamp($unixTimestamp)
- {
- return $this->setTimestamp($unixTimestamp);
- }
-
- /**
- * Returns a timestamp rounded with the given precision (6 by default).
- *
- * @example getPreciseTimestamp() 1532087464437474 (microsecond maximum precision)
- * @example getPreciseTimestamp(6) 1532087464437474
- * @example getPreciseTimestamp(5) 153208746443747 (1/100000 second precision)
- * @example getPreciseTimestamp(4) 15320874644375 (1/10000 second precision)
- * @example getPreciseTimestamp(3) 1532087464437 (millisecond precision)
- * @example getPreciseTimestamp(2) 153208746444 (1/100 second precision)
- * @example getPreciseTimestamp(1) 15320874644 (1/10 second precision)
- * @example getPreciseTimestamp(0) 1532087464 (second precision)
- * @example getPreciseTimestamp(-1) 153208746 (10 second precision)
- * @example getPreciseTimestamp(-2) 15320875 (100 second precision)
- *
- * @param int $precision
- *
- * @return float
- */
- public function getPreciseTimestamp($precision = 6)
- {
- return round($this->rawFormat('Uu') / pow(10, 6 - $precision));
- }
-
- /**
- * Returns the milliseconds timestamps used amongst other by Date javascript objects.
- *
- * @return float
- */
- public function valueOf()
- {
- return $this->getPreciseTimestamp(3);
- }
-
- /**
- * Returns the timestamp with millisecond precision.
- *
- * @return int
- */
- public function getTimestampMs()
- {
- return (int) $this->getPreciseTimestamp(3);
- }
-
- /**
- * @alias getTimestamp
- *
- * Returns the UNIX timestamp for the current date.
- *
- * @return int
- */
- public function unix()
- {
- return $this->getTimestamp();
- }
-
- /**
- * Return an array with integer part digits and decimals digits split from one or more positive numbers
- * (such as timestamps) as string with the given number of decimals (6 by default).
- *
- * By splitting integer and decimal, this method obtain a better precision than
- * number_format when the input is a string.
- *
- * @param float|int|string $numbers one or more numbers
- * @param int $decimals number of decimals precision (6 by default)
- *
- * @return array 0-index is integer part, 1-index is decimal part digits
- */
- private static function getIntegerAndDecimalParts($numbers, $decimals = 6)
- {
- if (\is_int($numbers) || \is_float($numbers)) {
- $numbers = number_format($numbers, $decimals, '.', '');
- }
-
- $sign = str_starts_with($numbers, '-') ? -1 : 1;
- $integer = 0;
- $decimal = 0;
-
- foreach (preg_split('`[^0-9.]+`', $numbers) as $chunk) {
- [$integerPart, $decimalPart] = explode('.', "$chunk.");
-
- $integer += (int) $integerPart;
- $decimal += (float) ("0.$decimalPart");
- }
-
- $overflow = floor($decimal);
- $integer += $overflow;
- $decimal -= $overflow;
-
- return [$sign * $integer, $decimal === 0.0 ? 0.0 : $sign * round($decimal * pow(10, $decimals))];
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Units.php b/vendor/nesbot/carbon/src/Carbon/Traits/Units.php
deleted file mode 100644
index 2902a8b1..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Traits/Units.php
+++ /dev/null
@@ -1,406 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Traits;
-
-use Carbon\CarbonConverterInterface;
-use Carbon\CarbonInterface;
-use Carbon\CarbonInterval;
-use Carbon\Exceptions\UnitException;
-use Closure;
-use DateInterval;
-use ReturnTypeWillChange;
-
-/**
- * Trait Units.
- *
- * Add, subtract and set units.
- */
-trait Units
-{
- /**
- * Add seconds to the instance using timestamp. Positive $value travels
- * forward while negative $value travels into the past.
- *
- * @param string $unit
- * @param int $value
- *
- * @return static
- */
- public function addRealUnit($unit, $value = 1)
- {
- switch ($unit) {
- // @call addRealUnit
- case 'micro':
-
- // @call addRealUnit
- case 'microsecond':
- /* @var CarbonInterface $this */
- $diff = $this->microsecond + $value;
- $time = $this->getTimestamp();
- $seconds = (int) floor($diff / static::MICROSECONDS_PER_SECOND);
- $time += $seconds;
- $diff -= $seconds * static::MICROSECONDS_PER_SECOND;
- $microtime = str_pad((string) $diff, 6, '0', STR_PAD_LEFT);
- $tz = $this->tz;
-
- return $this->tz('UTC')->modify("@$time.$microtime")->tz($tz);
-
- // @call addRealUnit
- case 'milli':
- // @call addRealUnit
- case 'millisecond':
- return $this->addRealUnit('microsecond', $value * static::MICROSECONDS_PER_MILLISECOND);
-
- break;
-
- // @call addRealUnit
- case 'second':
- break;
-
- // @call addRealUnit
- case 'minute':
- $value *= static::SECONDS_PER_MINUTE;
-
- break;
-
- // @call addRealUnit
- case 'hour':
- $value *= static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE;
-
- break;
-
- // @call addRealUnit
- case 'day':
- $value *= static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE;
-
- break;
-
- // @call addRealUnit
- case 'week':
- $value *= static::DAYS_PER_WEEK * static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE;
-
- break;
-
- // @call addRealUnit
- case 'month':
- $value *= 30 * static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE;
-
- break;
-
- // @call addRealUnit
- case 'quarter':
- $value *= static::MONTHS_PER_QUARTER * 30 * static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE;
-
- break;
-
- // @call addRealUnit
- case 'year':
- $value *= 365 * static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE;
-
- break;
-
- // @call addRealUnit
- case 'decade':
- $value *= static::YEARS_PER_DECADE * 365 * static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE;
-
- break;
-
- // @call addRealUnit
- case 'century':
- $value *= static::YEARS_PER_CENTURY * 365 * static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE;
-
- break;
-
- // @call addRealUnit
- case 'millennium':
- $value *= static::YEARS_PER_MILLENNIUM * 365 * static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE;
-
- break;
-
- default:
- if ($this->localStrictModeEnabled ?? static::isStrictModeEnabled()) {
- throw new UnitException("Invalid unit for real timestamp add/sub: '$unit'");
- }
-
- return $this;
- }
-
- /* @var CarbonInterface $this */
- return $this->setTimestamp((int) ($this->getTimestamp() + $value));
- }
-
- public function subRealUnit($unit, $value = 1)
- {
- return $this->addRealUnit($unit, -$value);
- }
-
- /**
- * Returns true if a property can be changed via setter.
- *
- * @param string $unit
- *
- * @return bool
- */
- public static function isModifiableUnit($unit)
- {
- static $modifiableUnits = [
- // @call addUnit
- 'millennium',
- // @call addUnit
- 'century',
- // @call addUnit
- 'decade',
- // @call addUnit
- 'quarter',
- // @call addUnit
- 'week',
- // @call addUnit
- 'weekday',
- ];
-
- return \in_array($unit, $modifiableUnits) || \in_array($unit, static::$units);
- }
-
- /**
- * Call native PHP DateTime/DateTimeImmutable add() method.
- *
- * @param DateInterval $interval
- *
- * @return static
- */
- public function rawAdd(DateInterval $interval)
- {
- return parent::add($interval);
- }
-
- /**
- * Add given units or interval to the current instance.
- *
- * @example $date->add('hour', 3)
- * @example $date->add(15, 'days')
- * @example $date->add(CarbonInterval::days(4))
- *
- * @param string|DateInterval|Closure|CarbonConverterInterface $unit
- * @param int $value
- * @param bool|null $overflow
- *
- * @return static
- */
- #[ReturnTypeWillChange]
- public function add($unit, $value = 1, $overflow = null)
- {
- if (\is_string($unit) && \func_num_args() === 1) {
- $unit = CarbonInterval::make($unit);
- }
-
- if ($unit instanceof CarbonConverterInterface) {
- return $this->resolveCarbon($unit->convertDate($this, false));
- }
-
- if ($unit instanceof Closure) {
- return $this->resolveCarbon($unit($this, false));
- }
-
- if ($unit instanceof DateInterval) {
- return parent::add($unit);
- }
-
- if (is_numeric($unit)) {
- [$value, $unit] = [$unit, $value];
- }
-
- return $this->addUnit($unit, $value, $overflow);
- }
-
- /**
- * Add given units to the current instance.
- *
- * @param string $unit
- * @param int $value
- * @param bool|null $overflow
- *
- * @return static
- */
- public function addUnit($unit, $value = 1, $overflow = null)
- {
- $date = $this;
-
- if (!is_numeric($value) || !(float) $value) {
- return $date->isMutable() ? $date : $date->avoidMutation();
- }
-
- $unit = self::singularUnit($unit);
- $metaUnits = [
- 'millennium' => [static::YEARS_PER_MILLENNIUM, 'year'],
- 'century' => [static::YEARS_PER_CENTURY, 'year'],
- 'decade' => [static::YEARS_PER_DECADE, 'year'],
- 'quarter' => [static::MONTHS_PER_QUARTER, 'month'],
- ];
-
- if (isset($metaUnits[$unit])) {
- [$factor, $unit] = $metaUnits[$unit];
- $value *= $factor;
- }
-
- if ($unit === 'weekday') {
- $weekendDays = static::getWeekendDays();
-
- if ($weekendDays !== [static::SATURDAY, static::SUNDAY]) {
- $absoluteValue = abs($value);
- $sign = $value / max(1, $absoluteValue);
- $weekDaysCount = 7 - min(6, \count(array_unique($weekendDays)));
- $weeks = floor($absoluteValue / $weekDaysCount);
-
- for ($diff = $absoluteValue % $weekDaysCount; $diff; $diff--) {
- /** @var static $date */
- $date = $date->addDays($sign);
-
- while (\in_array($date->dayOfWeek, $weekendDays)) {
- $date = $date->addDays($sign);
- }
- }
-
- $value = $weeks * $sign;
- $unit = 'week';
- }
-
- $timeString = $date->toTimeString();
- } elseif ($canOverflow = \in_array($unit, [
- 'month',
- 'year',
- ]) && ($overflow === false || (
- $overflow === null &&
- ($ucUnit = ucfirst($unit).'s') &&
- !($this->{'local'.$ucUnit.'Overflow'} ?? static::{'shouldOverflow'.$ucUnit}())
- ))) {
- $day = $date->day;
- }
-
- $value = (int) $value;
-
- if ($unit === 'milli' || $unit === 'millisecond') {
- $unit = 'microsecond';
- $value *= static::MICROSECONDS_PER_MILLISECOND;
- }
-
- // Work-around for bug https://bugs.php.net/bug.php?id=75642
- if ($unit === 'micro' || $unit === 'microsecond') {
- $microseconds = $this->micro + $value;
- $second = (int) floor($microseconds / static::MICROSECONDS_PER_SECOND);
- $microseconds %= static::MICROSECONDS_PER_SECOND;
- if ($microseconds < 0) {
- $microseconds += static::MICROSECONDS_PER_SECOND;
- }
- $date = $date->microseconds($microseconds);
- $unit = 'second';
- $value = $second;
- }
- $date = $date->modify("$value $unit");
-
- if (isset($timeString)) {
- $date = $date->setTimeFromTimeString($timeString);
- } elseif (isset($canOverflow, $day) && $canOverflow && $day !== $date->day) {
- $date = $date->modify('last day of previous month');
- }
-
- if (!$date) {
- throw new UnitException('Unable to add unit '.var_export(\func_get_args(), true));
- }
-
- return $date;
- }
-
- /**
- * Subtract given units to the current instance.
- *
- * @param string $unit
- * @param int $value
- * @param bool|null $overflow
- *
- * @return static
- */
- public function subUnit($unit, $value = 1, $overflow = null)
- {
- return $this->addUnit($unit, -$value, $overflow);
- }
-
- /**
- * Call native PHP DateTime/DateTimeImmutable sub() method.
- *
- * @param DateInterval $interval
- *
- * @return static
- */
- public function rawSub(DateInterval $interval)
- {
- return parent::sub($interval);
- }
-
- /**
- * Subtract given units or interval to the current instance.
- *
- * @example $date->sub('hour', 3)
- * @example $date->sub(15, 'days')
- * @example $date->sub(CarbonInterval::days(4))
- *
- * @param string|DateInterval|Closure|CarbonConverterInterface $unit
- * @param int $value
- * @param bool|null $overflow
- *
- * @return static
- */
- #[ReturnTypeWillChange]
- public function sub($unit, $value = 1, $overflow = null)
- {
- if (\is_string($unit) && \func_num_args() === 1) {
- $unit = CarbonInterval::make($unit);
- }
-
- if ($unit instanceof CarbonConverterInterface) {
- return $this->resolveCarbon($unit->convertDate($this, true));
- }
-
- if ($unit instanceof Closure) {
- return $this->resolveCarbon($unit($this, true));
- }
-
- if ($unit instanceof DateInterval) {
- return parent::sub($unit);
- }
-
- if (is_numeric($unit)) {
- [$value, $unit] = [$unit, $value];
- }
-
- return $this->addUnit($unit, -(float) $value, $overflow);
- }
-
- /**
- * Subtract given units or interval to the current instance.
- *
- * @see sub()
- *
- * @param string|DateInterval $unit
- * @param int $value
- * @param bool|null $overflow
- *
- * @return static
- */
- public function subtract($unit, $value = 1, $overflow = null)
- {
- if (\is_string($unit) && \func_num_args() === 1) {
- $unit = CarbonInterval::make($unit);
- }
-
- return $this->sub($unit, $value, $overflow);
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Week.php b/vendor/nesbot/carbon/src/Carbon/Traits/Week.php
deleted file mode 100644
index 6f148145..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Traits/Week.php
+++ /dev/null
@@ -1,219 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon\Traits;
-
-/**
- * Trait Week.
- *
- * week and ISO week number, year and count in year.
- *
- * Depends on the following properties:
- *
- * @property int $daysInYear
- * @property int $dayOfWeek
- * @property int $dayOfYear
- * @property int $year
- *
- * Depends on the following methods:
- *
- * @method static addWeeks(int $weeks = 1)
- * @method static copy()
- * @method static dayOfYear(int $dayOfYear)
- * @method string getTranslationMessage(string $key, ?string $locale = null, ?string $default = null, $translator = null)
- * @method static next(int|string $day = null)
- * @method static startOfWeek(int $day = 1)
- * @method static subWeeks(int $weeks = 1)
- * @method static year(int $year = null)
- */
-trait Week
-{
- /**
- * Set/get the week number of year using given first day of week and first
- * day of year included in the first week. Or use ISO format if no settings
- * given.
- *
- * @param int|null $year if null, act as a getter, if not null, set the year and return current instance.
- * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday)
- * @param int|null $dayOfYear first day of year included in the week #1
- *
- * @return int|static
- */
- public function isoWeekYear($year = null, $dayOfWeek = null, $dayOfYear = null)
- {
- return $this->weekYear(
- $year,
- $dayOfWeek ?? 1,
- $dayOfYear ?? 4
- );
- }
-
- /**
- * Set/get the week number of year using given first day of week and first
- * day of year included in the first week. Or use US format if no settings
- * given (Sunday / Jan 6).
- *
- * @param int|null $year if null, act as a getter, if not null, set the year and return current instance.
- * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday)
- * @param int|null $dayOfYear first day of year included in the week #1
- *
- * @return int|static
- */
- public function weekYear($year = null, $dayOfWeek = null, $dayOfYear = null)
- {
- $dayOfWeek = $dayOfWeek ?? $this->getTranslationMessage('first_day_of_week') ?? 0;
- $dayOfYear = $dayOfYear ?? $this->getTranslationMessage('day_of_first_week_of_year') ?? 1;
-
- if ($year !== null) {
- $year = (int) round($year);
-
- if ($this->weekYear(null, $dayOfWeek, $dayOfYear) === $year) {
- return $this->avoidMutation();
- }
-
- $week = $this->week(null, $dayOfWeek, $dayOfYear);
- $day = $this->dayOfWeek;
- $date = $this->year($year);
- switch ($date->weekYear(null, $dayOfWeek, $dayOfYear) - $year) {
- case 1:
- $date = $date->subWeeks(26);
-
- break;
- case -1:
- $date = $date->addWeeks(26);
-
- break;
- }
-
- $date = $date->addWeeks($week - $date->week(null, $dayOfWeek, $dayOfYear))->startOfWeek($dayOfWeek);
-
- if ($date->dayOfWeek === $day) {
- return $date;
- }
-
- return $date->next($day);
- }
-
- $year = $this->year;
- $day = $this->dayOfYear;
- $date = $this->avoidMutation()->dayOfYear($dayOfYear)->startOfWeek($dayOfWeek);
-
- if ($date->year === $year && $day < $date->dayOfYear) {
- return $year - 1;
- }
-
- $date = $this->avoidMutation()->addYear()->dayOfYear($dayOfYear)->startOfWeek($dayOfWeek);
-
- if ($date->year === $year && $day >= $date->dayOfYear) {
- return $year + 1;
- }
-
- return $year;
- }
-
- /**
- * Get the number of weeks of the current week-year using given first day of week and first
- * day of year included in the first week. Or use ISO format if no settings
- * given.
- *
- * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday)
- * @param int|null $dayOfYear first day of year included in the week #1
- *
- * @return int
- */
- public function isoWeeksInYear($dayOfWeek = null, $dayOfYear = null)
- {
- return $this->weeksInYear(
- $dayOfWeek ?? 1,
- $dayOfYear ?? 4
- );
- }
-
- /**
- * Get the number of weeks of the current week-year using given first day of week and first
- * day of year included in the first week. Or use US format if no settings
- * given (Sunday / Jan 6).
- *
- * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday)
- * @param int|null $dayOfYear first day of year included in the week #1
- *
- * @return int
- */
- public function weeksInYear($dayOfWeek = null, $dayOfYear = null)
- {
- $dayOfWeek = $dayOfWeek ?? $this->getTranslationMessage('first_day_of_week') ?? 0;
- $dayOfYear = $dayOfYear ?? $this->getTranslationMessage('day_of_first_week_of_year') ?? 1;
- $year = $this->year;
- $start = $this->avoidMutation()->dayOfYear($dayOfYear)->startOfWeek($dayOfWeek);
- $startDay = $start->dayOfYear;
- if ($start->year !== $year) {
- $startDay -= $start->daysInYear;
- }
- $end = $this->avoidMutation()->addYear()->dayOfYear($dayOfYear)->startOfWeek($dayOfWeek);
- $endDay = $end->dayOfYear;
- if ($end->year !== $year) {
- $endDay += $this->daysInYear;
- }
-
- return (int) round(($endDay - $startDay) / 7);
- }
-
- /**
- * Get/set the week number using given first day of week and first
- * day of year included in the first week. Or use US format if no settings
- * given (Sunday / Jan 6).
- *
- * @param int|null $week
- * @param int|null $dayOfWeek
- * @param int|null $dayOfYear
- *
- * @return int|static
- */
- public function week($week = null, $dayOfWeek = null, $dayOfYear = null)
- {
- $date = $this;
- $dayOfWeek = $dayOfWeek ?? $this->getTranslationMessage('first_day_of_week') ?? 0;
- $dayOfYear = $dayOfYear ?? $this->getTranslationMessage('day_of_first_week_of_year') ?? 1;
-
- if ($week !== null) {
- return $date->addWeeks(round($week) - $this->week(null, $dayOfWeek, $dayOfYear));
- }
-
- $start = $date->avoidMutation()->dayOfYear($dayOfYear)->startOfWeek($dayOfWeek);
- $end = $date->avoidMutation()->startOfWeek($dayOfWeek);
- if ($start > $end) {
- $start = $start->subWeeks(26)->dayOfYear($dayOfYear)->startOfWeek($dayOfWeek);
- }
- $week = (int) ($start->diffInDays($end) / 7 + 1);
-
- return $week > $end->weeksInYear($dayOfWeek, $dayOfYear) ? 1 : $week;
- }
-
- /**
- * Get/set the week number using given first day of week and first
- * day of year included in the first week. Or use ISO format if no settings
- * given.
- *
- * @param int|null $week
- * @param int|null $dayOfWeek
- * @param int|null $dayOfYear
- *
- * @return int|static
- */
- public function isoWeek($week = null, $dayOfWeek = null, $dayOfYear = null)
- {
- return $this->week(
- $week,
- $dayOfWeek ?? 1,
- $dayOfYear ?? 4
- );
- }
-}
diff --git a/vendor/nesbot/carbon/src/Carbon/Translator.php b/vendor/nesbot/carbon/src/Carbon/Translator.php
deleted file mode 100644
index 99537d1c..00000000
--- a/vendor/nesbot/carbon/src/Carbon/Translator.php
+++ /dev/null
@@ -1,404 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Carbon;
-
-use Closure;
-use ReflectionException;
-use ReflectionFunction;
-use Symfony\Component\Translation;
-
-class Translator extends Translation\Translator
-{
- /**
- * Translator singletons for each language.
- *
- * @var array
- */
- protected static $singletons = [];
-
- /**
- * List of custom localized messages.
- *
- * @var array
- */
- protected $messages = [];
-
- /**
- * List of custom directories that contain translation files.
- *
- * @var string[]
- */
- protected $directories = [];
-
- /**
- * Set to true while constructing.
- *
- * @var bool
- */
- protected $initializing = false;
-
- /**
- * List of locales aliases.
- *
- * @var string[]
- */
- protected $aliases = [
- 'me' => 'sr_Latn_ME',
- 'scr' => 'sh',
- ];
-
- /**
- * Return a singleton instance of Translator.
- *
- * @param string|null $locale optional initial locale ("en" - english by default)
- *
- * @return static
- */
- public static function get($locale = null)
- {
- $locale = $locale ?: 'en';
-
- if (!isset(static::$singletons[$locale])) {
- static::$singletons[$locale] = new static($locale ?: 'en');
- }
-
- return static::$singletons[$locale];
- }
-
- public function __construct($locale, Translation\Formatter\MessageFormatterInterface $formatter = null, $cacheDir = null, $debug = false)
- {
- $this->initializing = true;
- $this->directories = [__DIR__.'/Lang'];
- $this->addLoader('array', new Translation\Loader\ArrayLoader());
- parent::__construct($locale, $formatter, $cacheDir, $debug);
- $this->initializing = false;
- }
-
- /**
- * Returns the list of directories translation files are searched in.
- *
- * @return array
- */
- public function getDirectories(): array
- {
- return $this->directories;
- }
-
- /**
- * Set list of directories translation files are searched in.
- *
- * @param array $directories new directories list
- *
- * @return $this
- */
- public function setDirectories(array $directories)
- {
- $this->directories = $directories;
-
- return $this;
- }
-
- /**
- * Add a directory to the list translation files are searched in.
- *
- * @param string $directory new directory
- *
- * @return $this
- */
- public function addDirectory(string $directory)
- {
- $this->directories[] = $directory;
-
- return $this;
- }
-
- /**
- * Remove a directory from the list translation files are searched in.
- *
- * @param string $directory directory path
- *
- * @return $this
- */
- public function removeDirectory(string $directory)
- {
- $search = rtrim(strtr($directory, '\\', '/'), '/');
-
- return $this->setDirectories(array_filter($this->getDirectories(), function ($item) use ($search) {
- return rtrim(strtr($item, '\\', '/'), '/') !== $search;
- }));
- }
-
- /**
- * Returns the translation.
- *
- * @param string $id
- * @param array $parameters
- * @param string $domain
- * @param string $locale
- *
- * @return string
- */
- public function trans($id, array $parameters = [], $domain = null, $locale = null)
- {
- if ($domain === null) {
- $domain = 'messages';
- }
-
- $format = $this->getCatalogue($locale)->get((string) $id, $domain);
-
- if ($format instanceof Closure) {
- // @codeCoverageIgnoreStart
- try {
- $count = (new ReflectionFunction($format))->getNumberOfRequiredParameters();
- } catch (ReflectionException $exception) {
- $count = 0;
- }
- // @codeCoverageIgnoreEnd
-
- return $format(
- ...array_values($parameters),
- ...array_fill(0, max(0, $count - \count($parameters)), null)
- );
- }
-
- return parent::trans($id, $parameters, $domain, $locale);
- }
-
- /**
- * Reset messages of a locale (all locale if no locale passed).
- * Remove custom messages and reload initial messages from matching
- * file in Lang directory.
- *
- * @param string|null $locale
- *
- * @return bool
- */
- public function resetMessages($locale = null)
- {
- if ($locale === null) {
- $this->messages = [];
-
- return true;
- }
-
- foreach ($this->getDirectories() as $directory) {
- $data = @include sprintf('%s/%s.php', rtrim($directory, '\\/'), $locale);
-
- if ($data !== false) {
- $this->messages[$locale] = $data;
- $this->addResource('array', $this->messages[$locale], $locale);
-
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Returns the list of files matching a given locale prefix (or all if empty).
- *
- * @param string $prefix prefix required to filter result
- *
- * @return array
- */
- public function getLocalesFiles($prefix = '')
- {
- $files = [];
-
- foreach ($this->getDirectories() as $directory) {
- $directory = rtrim($directory, '\\/');
-
- foreach (glob("$directory/$prefix*.php") as $file) {
- $files[] = $file;
- }
- }
-
- return array_unique($files);
- }
-
- /**
- * Returns the list of internally available locales and already loaded custom locales.
- * (It will ignore custom translator dynamic loading.)
- *
- * @param string $prefix prefix required to filter result
- *
- * @return array
- */
- public function getAvailableLocales($prefix = '')
- {
- $locales = [];
- foreach ($this->getLocalesFiles($prefix) as $file) {
- $locales[] = substr($file, strrpos($file, '/') + 1, -4);
- }
-
- return array_unique(array_merge($locales, array_keys($this->messages)));
- }
-
- /**
- * Init messages language from matching file in Lang directory.
- *
- * @param string $locale
- *
- * @return bool
- */
- protected function loadMessagesFromFile($locale)
- {
- if (isset($this->messages[$locale])) {
- return true;
- }
-
- return $this->resetMessages($locale);
- }
-
- /**
- * Set messages of a locale and take file first if present.
- *
- * @param string $locale
- * @param array $messages
- *
- * @return $this
- */
- public function setMessages($locale, $messages)
- {
- $this->loadMessagesFromFile($locale);
- $this->addResource('array', $messages, $locale);
- $this->messages[$locale] = array_merge(
- $this->messages[$locale] ?? [],
- $messages
- );
-
- return $this;
- }
-
- /**
- * Set messages of the current locale and take file first if present.
- *
- * @param array $messages
- *
- * @return $this
- */
- public function setTranslations($messages)
- {
- return $this->setMessages($this->getLocale(), $messages);
- }
-
- /**
- * Get messages of a locale, if none given, return all the
- * languages.
- *
- * @param string|null $locale
- *
- * @return array
- */
- public function getMessages($locale = null)
- {
- return $locale === null ? $this->messages : $this->messages[$locale];
- }
-
- /**
- * Set the current translator locale and indicate if the source locale file exists
- *
- * @param string $locale locale ex. en
- *
- * @return bool
- */
- public function setLocale($locale)
- {
- $locale = preg_replace_callback('/[-_]([a-z]{2,}|[0-9]{2,})/', function ($matches) {
- // _2-letters or YUE is a region, _3+-letters is a variant
- $upper = strtoupper($matches[1]);
-
- if ($upper === 'YUE' || $upper === 'ISO' || \strlen($upper) < 3) {
- return "_$upper";
- }
-
- return '_'.ucfirst($matches[1]);
- }, strtolower($locale));
-
- $previousLocale = $this->getLocale();
-
- if ($previousLocale === $locale && isset($this->messages[$locale])) {
- return true;
- }
-
- unset(static::$singletons[$previousLocale]);
-
- if ($locale === 'auto') {
- $completeLocale = setlocale(LC_TIME, '0');
- $locale = preg_replace('/^([^_.-]+).*$/', '$1', $completeLocale);
- $locales = $this->getAvailableLocales($locale);
-
- $completeLocaleChunks = preg_split('/[_.-]+/', $completeLocale);
-
- $getScore = function ($language) use ($completeLocaleChunks) {
- return static::compareChunkLists($completeLocaleChunks, preg_split('/[_.-]+/', $language));
- };
-
- usort($locales, function ($first, $second) use ($getScore) {
- return $getScore($second) <=> $getScore($first);
- });
-
- $locale = $locales[0];
- }
-
- if (isset($this->aliases[$locale])) {
- $locale = $this->aliases[$locale];
- }
-
- // If subtag (ex: en_CA) first load the macro (ex: en) to have a fallback
- if (str_contains($locale, '_') &&
- $this->loadMessagesFromFile($macroLocale = preg_replace('/^([^_]+).*$/', '$1', $locale))
- ) {
- parent::setLocale($macroLocale);
- }
-
- if ($this->loadMessagesFromFile($locale) || $this->initializing) {
- parent::setLocale($locale);
-
- return true;
- }
-
- return false;
- }
-
- /**
- * Show locale on var_dump().
- *
- * @return array
- */
- public function __debugInfo()
- {
- return [
- 'locale' => $this->getLocale(),
- ];
- }
-
- private static function compareChunkLists($referenceChunks, $chunks)
- {
- $score = 0;
-
- foreach ($referenceChunks as $index => $chunk) {
- if (!isset($chunks[$index])) {
- $score++;
-
- continue;
- }
-
- if (strtolower($chunks[$index]) === strtolower($chunk)) {
- $score += 10;
- }
- }
-
- return $score;
- }
-}
diff --git a/vendor/netresearch/jsonmapper/LICENSE b/vendor/netresearch/jsonmapper/LICENSE
deleted file mode 100644
index 2ebd4813..00000000
--- a/vendor/netresearch/jsonmapper/LICENSE
+++ /dev/null
@@ -1,47 +0,0 @@
-Open Software License v. 3.0 (OSL-3.0)
-
-This Open Software License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following licensing notice adjacent to the copyright notice for the Original Work:
-
- Licensed under the Open Software License version 3.0
-
-1) Grant of Copyright License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, for the duration of the copyright, to do the following:
-
- a) to reproduce the Original Work in copies, either alone or as part of a collective work;
-
- b) to translate, adapt, alter, transform, modify, or arrange the Original Work, thereby creating derivative works ("Derivative Works") based upon the Original Work;
-
- c) to distribute or communicate copies of the Original Work and Derivative Works to the public, with the proviso that copies of Original Work or Derivative Works that You distribute or communicate shall be licensed under this Open Software License;
-
- d) to perform the Original Work publicly; and
-
- e) to display the Original Work publicly.
-
-2) Grant of Patent License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, for the duration of the patents, to make, use, sell, offer for sale, have made, and import the Original Work and Derivative Works.
-
-3) Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work.
-
-4) Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior permission of the Licensor. Except as expressly stated herein, nothing in this License grants any license to Licensor’s trademarks, copyrights, patents, trade secrets or any other intellectual property. No patent license is granted to make, use, sell, offer for sale, have made, or import embodiments of any patent claims other than the licensed claims defined in Section 2. No license is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under terms different from this License any Original Work that Licensor otherwise would have a right to license.
-
-5) External Deployment. The term "External Deployment" means the use, distribution, or communication of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Work or a Derivative Work as a distribution under section 1(c).
-
-6) Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent, or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work.
-
-7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately preceding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of non-infringement, merchantability or fitness for a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to the Original Work is granted by this License except under this disclaimer.
-
-8) Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to anyone for any indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to the extent applicable law prohibits such limitation.
-
-9) Acceptance and Termination. If, at any time, You expressly assented to this License, that assent indicates your clear and irrevocable acceptance of this License and all of its terms and conditions. If You distribute or communicate copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. This License conditions your rights to undertake the activities listed in Section 1, including your right to create Derivative Works based upon the Original Work, and doing so without honoring these terms and conditions is prohibited by copyright law and international treaty. Nothing in this License is intended to affect copyright exceptions and limitations (including “fair use” or “fair dealing”). This License shall terminate immediately and You may no longer exercise any of the rights granted to You by this License upon your failure to honor the conditions in Section 1(c).
-
-10) Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware.
-
-11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of copyright or patent law in the appropriate jurisdiction. This section shall survive the termination of this License.
-
-12) Attorneys' Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License.
-
-13) Miscellaneous. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
-
-14) Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
-
-15) Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You.
-
-16) Modification of This License. This License is Copyright (c) 2005 Lawrence Rosen. Permission is granted to copy, distribute, or communicate this License without modification. Nothing in this License permits You to modify this License as applied to the Original Work or to Derivative Works. However, You may modify the text of this License and copy, distribute or communicate your modified version (the "Modified License") and apply it to other original works of authorship subject to the following conditions: (i) You may not indicate in any way that your Modified License is the "Open Software License" or "OSL" and you may not use those names in the name of your Modified License; (ii) You must replace the notice specified in the first paragraph above with the notice "Licensed under " or with a notice of your own that is not confusingly similar to the notice in this License; and (iii) You may not claim that your original works are open source software unless your Modified License has been approved by Open Source Initiative (OSI) and You comply with its license review and certification process.
\ No newline at end of file
diff --git a/vendor/netresearch/jsonmapper/composer.json b/vendor/netresearch/jsonmapper/composer.json
deleted file mode 100644
index 0c5c699e..00000000
--- a/vendor/netresearch/jsonmapper/composer.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "name": "netresearch/jsonmapper",
- "description": "Map nested JSON structures onto PHP classes",
- "license": "OSL-3.0",
- "autoload": {
- "psr-0": {"JsonMapper": "src/"}
- },
- "authors": [
- {
- "name": "Christian Weiske",
- "email": "cweiske@cweiske.de",
- "homepage": "http://github.com/cweiske/jsonmapper/",
- "role": "Developer"
- }
- ],
- "support": {
- "email": "cweiske@cweiske.de",
- "issues": "https://github.com/cweiske/jsonmapper/issues"
- },
- "require":{
- "php": ">=7.1",
- "ext-spl": "*",
- "ext-json": "*",
- "ext-pcre": "*",
- "ext-reflection": "*"
- },
- "require-dev": {
- "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0",
- "squizlabs/php_codesniffer": "~3.5"
- }
-}
diff --git a/vendor/netresearch/jsonmapper/contributing.rst b/vendor/netresearch/jsonmapper/contributing.rst
deleted file mode 100644
index 1e40f12c..00000000
--- a/vendor/netresearch/jsonmapper/contributing.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-**************************************
-How to add your features to JsonMapper
-**************************************
-
-If you want to add a new feature or a fix to this library, please consider these aspects:
-
-- Respect the original code style and continue using it - it uses `PEAR Coding Standards`__.
-- Pull requests fixing a bug should include a test case that illustrates the wrong behaviour.
-- Pull requests adding a new feature should also include a test for the new feature.
-
- __ http://pear.php.net/manual/en/standards.php
-
-Having test cases included in your pull request greatly helps reviewing it and will increase the chance of it being merged.
diff --git a/vendor/netresearch/jsonmapper/phpunit.xml b/vendor/netresearch/jsonmapper/phpunit.xml
deleted file mode 100644
index c99d7bfd..00000000
--- a/vendor/netresearch/jsonmapper/phpunit.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
- tests
-
-
-
-
- src/
-
-
-
diff --git a/vendor/netresearch/jsonmapper/src/JsonMapper.php b/vendor/netresearch/jsonmapper/src/JsonMapper.php
deleted file mode 100644
index ace12bd4..00000000
--- a/vendor/netresearch/jsonmapper/src/JsonMapper.php
+++ /dev/null
@@ -1,850 +0,0 @@
-
- * @license OSL-3.0 http://opensource.org/licenses/osl-3.0
- * @link http://cweiske.de/
- */
-
-/**
- * Automatically map JSON structures into objects.
- *
- * @category Netresearch
- * @package JsonMapper
- * @author Christian Weiske
- * @license OSL-3.0 http://opensource.org/licenses/osl-3.0
- * @link http://cweiske.de/
- */
-class JsonMapper
-{
- /**
- * PSR-3 compatible logger object
- *
- * @link http://www.php-fig.org/psr/psr-3/
- * @var object
- * @see setLogger()
- */
- protected $logger;
-
- /**
- * Throw an exception when JSON data contain a property
- * that is not defined in the PHP class
- *
- * @var boolean
- */
- public $bExceptionOnUndefinedProperty = false;
-
- /**
- * Throw an exception if the JSON data miss a property
- * that is marked with @required in the PHP class
- *
- * @var boolean
- */
- public $bExceptionOnMissingData = false;
-
- /**
- * If the types of map() parameters shall be checked.
- *
- * You have to disable it if you're using the json_decode "assoc" parameter.
- *
- * json_decode($str, false)
- *
- * @var boolean
- */
- public $bEnforceMapType = true;
-
- /**
- * Throw an exception when an object is expected but the JSON contains
- * a non-object type.
- *
- * @var boolean
- */
- public $bStrictObjectTypeChecking = false;
-
- /**
- * Throw an exception, if null value is found
- * but the type of attribute does not allow nulls.
- *
- * @var bool
- */
- public $bStrictNullTypes = true;
-
- /**
- * Allow mapping of private and proteted properties.
- *
- * @var boolean
- */
- public $bIgnoreVisibility = false;
-
- /**
- * Remove attributes that were not passed in JSON,
- * to avoid confusion between them and NULL values.
- *
- * @var boolean
- */
- public $bRemoveUndefinedAttributes = false;
-
- /**
- * Override class names that JsonMapper uses to create objects.
- * Useful when your setter methods accept abstract classes or interfaces.
- *
- * @var array
- */
- public $classMap = array();
-
- /**
- * Callback used when an undefined property is found.
- *
- * Works only when $bExceptionOnUndefinedProperty is disabled.
- *
- * Parameters to this function are:
- * 1. Object that is being filled
- * 2. Name of the unknown JSON property
- * 3. JSON value of the property
- *
- * @var callable
- */
- public $undefinedPropertyHandler = null;
-
- /**
- * Runtime cache for inspected classes. This is particularly effective if
- * mapArray() is called with a large number of objects
- *
- * @var array property inspection result cache
- */
- protected $arInspectedClasses = array();
-
- /**
- * Method to call on each object after deserialization is done.
- *
- * Is only called if it exists on the object.
- *
- * @var string|null
- */
- public $postMappingMethod = null;
-
- /**
- * Map data all data in $json into the given $object instance.
- *
- * @param object|array $json JSON object structure from json_decode()
- * @param object $object Object to map $json data into
- *
- * @return mixed Mapped object is returned.
- * @see mapArray()
- */
- public function map($json, $object)
- {
- if ($this->bEnforceMapType && !is_object($json)) {
- throw new InvalidArgumentException(
- 'JsonMapper::map() requires first argument to be an object'
- . ', ' . gettype($json) . ' given.'
- );
- }
- if (!is_object($object)) {
- throw new InvalidArgumentException(
- 'JsonMapper::map() requires second argument to be an object'
- . ', ' . gettype($object) . ' given.'
- );
- }
-
- $strClassName = get_class($object);
- $rc = new ReflectionClass($object);
- $strNs = $rc->getNamespaceName();
- $providedProperties = array();
- foreach ($json as $key => $jvalue) {
- $key = $this->getSafeName($key);
- $providedProperties[$key] = true;
-
- // Store the property inspection results so we don't have to do it
- // again for subsequent objects of the same type
- if (!isset($this->arInspectedClasses[$strClassName][$key])) {
- $this->arInspectedClasses[$strClassName][$key]
- = $this->inspectProperty($rc, $key);
- }
-
- list($hasProperty, $accessor, $type, $isNullable)
- = $this->arInspectedClasses[$strClassName][$key];
-
- if (!$hasProperty) {
- if ($this->bExceptionOnUndefinedProperty) {
- throw new JsonMapper_Exception(
- 'JSON property "' . $key . '" does not exist'
- . ' in object of type ' . $strClassName
- );
- } else if ($this->undefinedPropertyHandler !== null) {
- call_user_func(
- $this->undefinedPropertyHandler,
- $object, $key, $jvalue
- );
- } else {
- $this->log(
- 'info',
- 'Property {property} does not exist in {class}',
- array('property' => $key, 'class' => $strClassName)
- );
- }
- continue;
- }
-
- if ($accessor === null) {
- if ($this->bExceptionOnUndefinedProperty) {
- throw new JsonMapper_Exception(
- 'JSON property "' . $key . '" has no public setter method'
- . ' in object of type ' . $strClassName
- );
- }
- $this->log(
- 'info',
- 'Property {property} has no public setter method in {class}',
- array('property' => $key, 'class' => $strClassName)
- );
- continue;
- }
-
- if ($isNullable || !$this->bStrictNullTypes) {
- if ($jvalue === null) {
- $this->setProperty($object, $accessor, null);
- continue;
- }
- $type = $this->removeNullable($type);
- } else if ($jvalue === null) {
- throw new JsonMapper_Exception(
- 'JSON property "' . $key . '" in class "'
- . $strClassName . '" must not be NULL'
- );
- }
-
- $type = $this->getFullNamespace($type, $strNs);
- $type = $this->getMappedType($type, $jvalue);
-
- if ($type === null || $type === 'mixed') {
- //no given type - simply set the json data
- $this->setProperty($object, $accessor, $jvalue);
- continue;
- } else if ($this->isObjectOfSameType($type, $jvalue)) {
- $this->setProperty($object, $accessor, $jvalue);
- continue;
- } else if ($this->isSimpleType($type)) {
- if ($type === 'string' && is_object($jvalue)) {
- throw new JsonMapper_Exception(
- 'JSON property "' . $key . '" in class "'
- . $strClassName . '" is an object and'
- . ' cannot be converted to a string'
- );
- }
- settype($jvalue, $type);
- $this->setProperty($object, $accessor, $jvalue);
- continue;
- }
-
- //FIXME: check if type exists, give detailed error message if not
- if ($type === '') {
- throw new JsonMapper_Exception(
- 'Empty type at property "'
- . $strClassName . '::$' . $key . '"'
- );
- }
-
- $array = null;
- $subtype = null;
- if ($this->isArrayOfType($type)) {
- //array
- $array = array();
- $subtype = substr($type, 0, -2);
- } else if (substr($type, -1) == ']') {
- list($proptype, $subtype) = explode('[', substr($type, 0, -1));
- if ($proptype == 'array') {
- $array = array();
- } else {
- $array = $this->createInstance($proptype, false, $jvalue);
- }
- } else {
- if (is_a($type, 'ArrayObject', true)) {
- $array = $this->createInstance($type, false, $jvalue);
- }
- }
-
- if ($array !== null) {
- if (!is_array($jvalue) && $this->isFlatType(gettype($jvalue))) {
- throw new JsonMapper_Exception(
- 'JSON property "' . $key . '" must be an array, '
- . gettype($jvalue) . ' given'
- );
- }
-
- $cleanSubtype = $this->removeNullable($subtype);
- $subtype = $this->getFullNamespace($cleanSubtype, $strNs);
- $child = $this->mapArray($jvalue, $array, $subtype, $key);
- } else if ($this->isFlatType(gettype($jvalue))) {
- //use constructor parameter if we have a class
- // but only a flat type (i.e. string, int)
- if ($this->bStrictObjectTypeChecking) {
- throw new JsonMapper_Exception(
- 'JSON property "' . $key . '" must be an object, '
- . gettype($jvalue) . ' given'
- );
- }
- $child = $this->createInstance($type, true, $jvalue);
- } else {
- $child = $this->createInstance($type, false, $jvalue);
- $this->map($jvalue, $child);
- }
- $this->setProperty($object, $accessor, $child);
- }
-
- if ($this->bExceptionOnMissingData) {
- $this->checkMissingData($providedProperties, $rc);
- }
-
- if ($this->bRemoveUndefinedAttributes) {
- $this->removeUndefinedAttributes($object, $providedProperties);
- }
-
- if ($this->postMappingMethod !== null
- && $rc->hasMethod($this->postMappingMethod)
- ) {
- $refDeserializePostMethod = $rc->getMethod(
- $this->postMappingMethod
- );
- $refDeserializePostMethod->setAccessible(true);
- $refDeserializePostMethod->invoke($object);
- }
-
- return $object;
- }
-
- /**
- * Convert a type name to a fully namespaced type name.
- *
- * @param string $type Type name (simple type or class name)
- * @param string $strNs Base namespace that gets prepended to the type name
- *
- * @return string Fully-qualified type name with namespace
- */
- protected function getFullNamespace($type, $strNs)
- {
- if ($type === null || $type === '' || $type[0] === '\\' || $strNs === '') {
- return $type;
- }
- list($first) = explode('[', $type, 2);
- if ($first === 'mixed' || $this->isSimpleType($first)) {
- return $type;
- }
-
- //create a full qualified namespace
- return '\\' . $strNs . '\\' . $type;
- }
-
- /**
- * Check required properties exist in json
- *
- * @param array $providedProperties array with json properties
- * @param object $rc Reflection class to check
- *
- * @throws JsonMapper_Exception
- *
- * @return void
- */
- protected function checkMissingData($providedProperties, ReflectionClass $rc)
- {
- foreach ($rc->getProperties() as $property) {
- $rprop = $rc->getProperty($property->name);
- $docblock = $rprop->getDocComment();
- $annotations = static::parseAnnotations($docblock);
- if (isset($annotations['required'])
- && !isset($providedProperties[$property->name])
- ) {
- throw new JsonMapper_Exception(
- 'Required property "' . $property->name . '" of class '
- . $rc->getName()
- . ' is missing in JSON data'
- );
- }
- }
- }
-
- /**
- * Remove attributes from object that were not passed in JSON data.
- *
- * This is to avoid confusion between those that were actually passed
- * as NULL, and those that weren't provided at all.
- *
- * @param object $object Object to remove properties from
- * @param array $providedProperties Array with JSON properties
- *
- * @return void
- */
- protected function removeUndefinedAttributes($object, $providedProperties)
- {
- foreach (get_object_vars($object) as $propertyName => $dummy) {
- if (!isset($providedProperties[$propertyName])) {
- unset($object->{$propertyName});
- }
- }
- }
-
- /**
- * Map an array
- *
- * @param array $json JSON array structure from json_decode()
- * @param mixed $array Array or ArrayObject that gets filled with
- * data from $json
- * @param string $class Class name for children objects.
- * All children will get mapped onto this type.
- * Supports class names and simple types
- * like "string" and nullability "string|null".
- * Pass "null" to not convert any values
- * @param string $parent_key Defines the key this array belongs to
- * in order to aid debugging.
- *
- * @return mixed Mapped $array is returned
- */
- public function mapArray($json, $array, $class = null, $parent_key = '')
- {
- $originalClass = $class;
- foreach ($json as $key => $jvalue) {
- $class = $this->getMappedType($originalClass, $jvalue);
- if ($class === null) {
- $array[$key] = $jvalue;
- } else if ($this->isArrayOfType($class)) {
- $array[$key] = $this->mapArray(
- $jvalue,
- array(),
- substr($class, 0, -2)
- );
- } else if ($this->isFlatType(gettype($jvalue))) {
- //use constructor parameter if we have a class
- // but only a flat type (i.e. string, int)
- if ($jvalue === null) {
- $array[$key] = null;
- } else {
- if ($this->isSimpleType($class)) {
- settype($jvalue, $class);
- $array[$key] = $jvalue;
- } else {
- $array[$key] = $this->createInstance(
- $class, true, $jvalue
- );
- }
- }
- } else if ($this->isFlatType($class)) {
- throw new JsonMapper_Exception(
- 'JSON property "' . ($parent_key ? $parent_key : '?') . '"'
- . ' is an array of type "' . $class . '"'
- . ' but contained a value of type'
- . ' "' . gettype($jvalue) . '"'
- );
- } else if (is_a($class, 'ArrayObject', true)) {
- $array[$key] = $this->mapArray(
- $jvalue,
- $this->createInstance($class)
- );
- } else {
- $array[$key] = $this->map(
- $jvalue, $this->createInstance($class, false, $jvalue)
- );
- }
- }
- return $array;
- }
-
- /**
- * Try to find out if a property exists in a given class.
- * Checks property first, falls back to setter method.
- *
- * @param ReflectionClass $rc Reflection class to check
- * @param string $name Property name
- *
- * @return array First value: if the property exists
- * Second value: the accessor to use (
- * ReflectionMethod or ReflectionProperty, or null)
- * Third value: type of the property
- * Fourth value: if the property is nullable
- */
- protected function inspectProperty(ReflectionClass $rc, $name)
- {
- //try setter method first
- $setter = 'set' . $this->getCamelCaseName($name);
-
- if ($rc->hasMethod($setter)) {
- $rmeth = $rc->getMethod($setter);
- if ($rmeth->isPublic() || $this->bIgnoreVisibility) {
- $isNullable = false;
- $rparams = $rmeth->getParameters();
- if (count($rparams) > 0) {
- $isNullable = $rparams[0]->allowsNull();
- $ptype = $rparams[0]->getType();
- if ($ptype !== null) {
- if ($ptype instanceof ReflectionNamedType) {
- $typeName = $ptype->getName();
- }
- if ($ptype instanceof ReflectionUnionType
- || !$ptype->isBuiltin()
- ) {
- $typeName = '\\' . $typeName;
- }
- //allow overriding an "array" type hint
- // with a more specific class in the docblock
- if ($typeName !== 'array') {
- return array(
- true, $rmeth,
- $typeName,
- $isNullable,
- );
- }
- }
- }
-
- $docblock = $rmeth->getDocComment();
- $annotations = static::parseAnnotations($docblock);
-
- if (!isset($annotations['param'][0])) {
- return array(true, $rmeth, null, $isNullable);
- }
- list($type) = explode(' ', trim($annotations['param'][0]));
- return array(true, $rmeth, $type, $this->isNullable($type));
- }
- }
-
- //now try to set the property directly
- //we have to look it up in the class hierarchy
- $class = $rc;
- $rprop = null;
- do {
- if ($class->hasProperty($name)) {
- $rprop = $class->getProperty($name);
- }
- } while ($rprop === null && $class = $class->getParentClass());
-
- if ($rprop === null) {
- //case-insensitive property matching
- foreach ($rc->getProperties() as $p) {
- if ((strcasecmp($p->name, $name) === 0)) {
- $rprop = $p;
- break;
- }
- }
- }
- if ($rprop !== null) {
- if ($rprop->isPublic() || $this->bIgnoreVisibility) {
- $docblock = $rprop->getDocComment();
- $annotations = static::parseAnnotations($docblock);
-
- if (!isset($annotations['var'][0])) {
- // If there is no annotations (higher priority) inspect
- // if there's a scalar type being defined
- if (PHP_VERSION_ID >= 70400 && $rprop->hasType()) {
- $rPropType = $rprop->getType();
- $propTypeName = $rPropType->getName();
-
- if ($this->isSimpleType($propTypeName)) {
- return array(
- true,
- $rprop,
- $propTypeName,
- $rPropType->allowsNull()
- );
- }
-
- return array(
- true,
- $rprop,
- '\\'.$propTypeName,
- $rPropType->allowsNull()
- );
- }
-
- return array(true, $rprop, null, false);
- }
-
- //support "@var type description"
- list($type) = explode(' ', $annotations['var'][0]);
-
- return array(true, $rprop, $type, $this->isNullable($type));
- } else {
- //no setter, private property
- return array(true, null, null, false);
- }
- }
-
- //no setter, no property
- return array(false, null, null, false);
- }
-
- /**
- * Removes - and _ and makes the next letter uppercase
- *
- * @param string $name Property name
- *
- * @return string CamelCasedVariableName
- */
- protected function getCamelCaseName($name)
- {
- return str_replace(
- ' ', '', ucwords(str_replace(array('_', '-'), ' ', $name))
- );
- }
-
- /**
- * Since hyphens cannot be used in variables we have to uppercase them.
- *
- * Technically you may use them, but they are awkward to access.
- *
- * @param string $name Property name
- *
- * @return string Name without hyphen
- */
- protected function getSafeName($name)
- {
- if (strpos($name, '-') !== false) {
- $name = $this->getCamelCaseName($name);
- }
-
- return $name;
- }
-
- /**
- * Set a property on a given object to a given value.
- *
- * Checks if the setter or the property are public are made before
- * calling this method.
- *
- * @param object $object Object to set property on
- * @param object $accessor ReflectionMethod or ReflectionProperty
- * @param mixed $value Value of property
- *
- * @return void
- */
- protected function setProperty(
- $object, $accessor, $value
- ) {
- if (!$accessor->isPublic() && $this->bIgnoreVisibility) {
- $accessor->setAccessible(true);
- }
- if ($accessor instanceof ReflectionProperty) {
- $accessor->setValue($object, $value);
- } else {
- //setter method
- $accessor->invoke($object, $value);
- }
- }
-
- /**
- * Create a new object of the given type.
- *
- * This method exists to be overwritten in child classes,
- * so you can do dependency injection or so.
- *
- * @param string $class Class name to instantiate
- * @param boolean $useParameter Pass $parameter to the constructor or not
- * @param mixed $jvalue Constructor parameter (the json value)
- *
- * @return object Freshly created object
- */
- protected function createInstance(
- $class, $useParameter = false, $jvalue = null
- ) {
- if ($useParameter) {
- return new $class($jvalue);
- } else {
- $reflectClass = new ReflectionClass($class);
- $constructor = $reflectClass->getConstructor();
- if (null === $constructor
- || $constructor->getNumberOfRequiredParameters() > 0
- ) {
- return $reflectClass->newInstanceWithoutConstructor();
- }
- return $reflectClass->newInstance();
- }
- }
-
- /**
- * Get the mapped class/type name for this class.
- * Returns the incoming classname if not mapped.
- *
- * @param string $type Type name to map
- * @param mixed $jvalue Constructor parameter (the json value)
- *
- * @return string The mapped type/class name
- */
- protected function getMappedType($type, $jvalue = null)
- {
- if (isset($this->classMap[$type])) {
- $target = $this->classMap[$type];
- } else if (is_string($type) && $type !== '' && $type[0] == '\\'
- && isset($this->classMap[substr($type, 1)])
- ) {
- $target = $this->classMap[substr($type, 1)];
- } else {
- $target = null;
- }
-
- if ($target) {
- if (is_callable($target)) {
- $type = $target($type, $jvalue);
- } else {
- $type = $target;
- }
- }
- return $type;
- }
-
- /**
- * Checks if the given type is a "simple type"
- *
- * @param string $type type name from gettype()
- *
- * @return boolean True if it is a simple PHP type
- *
- * @see isFlatType()
- */
- protected function isSimpleType($type)
- {
- return $type == 'string'
- || $type == 'boolean' || $type == 'bool'
- || $type == 'integer' || $type == 'int'
- || $type == 'double' || $type == 'float'
- || $type == 'array' || $type == 'object';
- }
-
- /**
- * Checks if the object is of this type or has this type as one of its parents
- *
- * @param string $type class name of type being required
- * @param mixed $value Some PHP value to be tested
- *
- * @return boolean True if $object has type of $type
- */
- protected function isObjectOfSameType($type, $value)
- {
- if (false === is_object($value)) {
- return false;
- }
-
- return is_a($value, $type);
- }
-
- /**
- * Checks if the given type is a type that is not nested
- * (simple type except array and object)
- *
- * @param string $type type name from gettype()
- *
- * @return boolean True if it is a non-nested PHP type
- *
- * @see isSimpleType()
- */
- protected function isFlatType($type)
- {
- return $type == 'NULL'
- || $type == 'string'
- || $type == 'boolean' || $type == 'bool'
- || $type == 'integer' || $type == 'int'
- || $type == 'double' || $type == 'float';
- }
-
- /**
- * Returns true if type is an array of elements
- * (bracket notation)
- *
- * @param string $strType type to be matched
- *
- * @return bool
- */
- protected function isArrayOfType($strType)
- {
- return substr($strType, -2) === '[]';
- }
-
- /**
- * Checks if the given type is nullable
- *
- * @param string $type type name from the phpdoc param
- *
- * @return boolean True if it is nullable
- */
- protected function isNullable($type)
- {
- return stripos('|' . $type . '|', '|null|') !== false;
- }
-
- /**
- * Remove the 'null' section of a type
- *
- * @param string $type type name from the phpdoc param
- *
- * @return string The new type value
- */
- protected function removeNullable($type)
- {
- if ($type === null) {
- return null;
- }
- return substr(
- str_ireplace('|null|', '|', '|' . $type . '|'),
- 1, -1
- );
- }
-
- /**
- * Copied from PHPUnit 3.7.29, Util/Test.php
- *
- * @param string $docblock Full method docblock
- *
- * @return array Array of arrays.
- * Key is the "@"-name like "param",
- * each value is an array of the rest of the @-lines
- */
- protected static function parseAnnotations($docblock)
- {
- $annotations = array();
- // Strip away the docblock header and footer
- // to ease parsing of one line annotations
- $docblock = substr($docblock, 3, -2);
-
- $re = '/@(?P[A-Za-z_-]+)(?:[ \t]+(?P.*?))?[ \t]*\r?$/m';
- if (preg_match_all($re, $docblock, $matches)) {
- $numMatches = count($matches[0]);
-
- for ($i = 0; $i < $numMatches; ++$i) {
- $annotations[$matches['name'][$i]][] = $matches['value'][$i];
- }
- }
-
- return $annotations;
- }
-
- /**
- * Log a message to the $logger object
- *
- * @param string $level Logging level
- * @param string $message Text to log
- * @param array $context Additional information
- *
- * @return null
- */
- protected function log($level, $message, array $context = array())
- {
- if ($this->logger) {
- $this->logger->log($level, $message, $context);
- }
- }
-
- /**
- * Sets a logger instance on the object
- *
- * @param LoggerInterface $logger PSR-3 compatible logger object
- *
- * @return null
- */
- public function setLogger($logger)
- {
- $this->logger = $logger;
- }
-}
-?>
diff --git a/vendor/netresearch/jsonmapper/src/JsonMapper/Exception.php b/vendor/netresearch/jsonmapper/src/JsonMapper/Exception.php
deleted file mode 100644
index bb8040c6..00000000
--- a/vendor/netresearch/jsonmapper/src/JsonMapper/Exception.php
+++ /dev/null
@@ -1,26 +0,0 @@
-
- * @license OSL-3.0 http://opensource.org/licenses/osl-3.0
- * @link http://cweiske.de/
- */
-
-/**
- * Simple exception
- *
- * @category Netresearch
- * @package JsonMapper
- * @author Christian Weiske
- * @license OSL-3.0 http://opensource.org/licenses/osl-3.0
- * @link http://cweiske.de/
- */
-class JsonMapper_Exception extends Exception
-{
-}
-?>
diff --git a/vendor/nette/caching/composer.json b/vendor/nette/caching/composer.json
deleted file mode 100644
index 458e555d..00000000
--- a/vendor/nette/caching/composer.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "nette/caching",
- "description": "⏱ Nette Caching: library with easy-to-use API and many cache backends.",
- "keywords": ["nette", "cache", "journal", "sqlite", "memcached"],
- "homepage": "https://nette.org",
- "license": ["BSD-3-Clause", "GPL-2.0-only", "GPL-3.0-only"],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "https://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "https://nette.org/contributors"
- }
- ],
- "require": {
- "php": ">=7.2 <8.1",
- "nette/finder": "^2.4 || ^3.0",
- "nette/utils": "^2.4 || ^3.0"
- },
- "require-dev": {
- "nette/tester": "^2.0",
- "nette/di": "^v3.0",
- "latte/latte": "^2.10",
- "tracy/tracy": "^2.4",
- "phpstan/phpstan": "^0.12"
- },
- "suggest": {
- "ext-pdo_sqlite": "to use SQLiteStorage or SQLiteJournal"
- },
- "autoload": {
- "classmap": ["src/"]
- },
- "minimum-stability": "dev",
- "scripts": {
- "phpstan": "phpstan analyse",
- "tester": "tester tests -s"
- },
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- }
-}
diff --git a/vendor/nette/caching/contributing.md b/vendor/nette/caching/contributing.md
deleted file mode 100644
index 184152c0..00000000
--- a/vendor/nette/caching/contributing.md
+++ /dev/null
@@ -1,33 +0,0 @@
-How to contribute & use the issue tracker
-=========================================
-
-Nette welcomes your contributions. There are several ways to help out:
-
-* Create an issue on GitHub, if you have found a bug
-* Write test cases for open bug issues
-* Write fixes for open bug/feature issues, preferably with test cases included
-* Contribute to the [documentation](https://nette.org/en/writing)
-
-Issues
-------
-
-Please **do not use the issue tracker to ask questions**. We will be happy to help you
-on [Nette forum](https://forum.nette.org) or chat with us on [Gitter](https://gitter.im/nette/nette).
-
-A good bug report shouldn't leave others needing to chase you up for more
-information. Please try to be as detailed as possible in your report.
-
-**Feature requests** are welcome. But take a moment to find out whether your idea
-fits with the scope and aims of the project. It's up to *you* to make a strong
-case to convince the project's developers of the merits of this feature.
-
-Contributing
-------------
-
-If you'd like to contribute, please take a moment to read [the contributing guide](https://nette.org/en/contributing).
-
-The best way to propose a feature is to discuss your ideas on [Nette forum](https://forum.nette.org) before implementing them.
-
-Please do not fix whitespace, format code, or make a purely cosmetic patch.
-
-Thanks! :heart:
diff --git a/vendor/nette/caching/license.md b/vendor/nette/caching/license.md
deleted file mode 100644
index cf741bd0..00000000
--- a/vendor/nette/caching/license.md
+++ /dev/null
@@ -1,60 +0,0 @@
-Licenses
-========
-
-Good news! You may use Nette Framework under the terms of either
-the New BSD License or the GNU General Public License (GPL) version 2 or 3.
-
-The BSD License is recommended for most projects. It is easy to understand and it
-places almost no restrictions on what you can do with the framework. If the GPL
-fits better to your project, you can use the framework under this license.
-
-You don't have to notify anyone which license you are using. You can freely
-use Nette Framework in commercial projects as long as the copyright header
-remains intact.
-
-Please be advised that the name "Nette Framework" is a protected trademark and its
-usage has some limitations. So please do not use word "Nette" in the name of your
-project or top-level domain, and choose a name that stands on its own merits.
-If your stuff is good, it will not take long to establish a reputation for yourselves.
-
-
-New BSD License
----------------
-
-Copyright (c) 2004, 2014 David Grudl (https://davidgrudl.com)
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- * Neither the name of "Nette Framework" nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-This software is provided by the copyright holders and contributors "as is" and
-any express or implied warranties, including, but not limited to, the implied
-warranties of merchantability and fitness for a particular purpose are
-disclaimed. In no event shall the copyright owner or contributors be liable for
-any direct, indirect, incidental, special, exemplary, or consequential damages
-(including, but not limited to, procurement of substitute goods or services;
-loss of use, data, or profits; or business interruption) however caused and on
-any theory of liability, whether in contract, strict liability, or tort
-(including negligence or otherwise) arising in any way out of the use of this
-software, even if advised of the possibility of such damage.
-
-
-GNU General Public License
---------------------------
-
-GPL licenses are very very long, so instead of including them here we offer
-you URLs with full text:
-
-- [GPL version 2](http://www.gnu.org/licenses/gpl-2.0.html)
-- [GPL version 3](http://www.gnu.org/licenses/gpl-3.0.html)
diff --git a/vendor/nette/caching/readme.md b/vendor/nette/caching/readme.md
deleted file mode 100644
index 67725aca..00000000
--- a/vendor/nette/caching/readme.md
+++ /dev/null
@@ -1,390 +0,0 @@
-Nette Caching
-=============
-
-[](https://packagist.org/packages/nette/caching)
-[](https://github.com/nette/caching/actions)
-[](https://coveralls.io/github/nette/caching?branch=master)
-[](https://github.com/nette/caching/releases)
-[](https://github.com/nette/caching/blob/master/license.md)
-
-
-Introduction
-============
-
-Cache accelerates your application by storing data - once hardly retrieved - for future use.
-
-Documentation can be found on the [website](https://doc.nette.org/caching).
-
-
-[Support Me](https://github.com/sponsors/dg)
---------------------------------------------
-
-Do you like Nette Caching? Are you looking forward to the new features?
-
-[](https://github.com/sponsors/dg)
-
-Thank you!
-
-
-Installation
-------------
-
-```
-composer require nette/caching
-```
-
-It requires PHP version 7.2 and supports PHP up to 8.0.
-
-
-Basic Usage
-===========
-
-The center of work with the cache is the object [Nette\Caching\Cache](https://api.nette.org/3.0/Nette/Caching/Cache.html). We create its instance and pass the so-called storage to the constructor as a parameter. Which is an object representing the place where the data will be physically stored (database, Memcached, files on disk, ...). You will find out all the essentials in [section Storages](#Storages).
-
-For the following examples, suppose we have an alias `Cache` and a storage in the variable `$storage`.
-
-```php
-use Nette\Caching\Cache;
-
-$storage // instance of Nette\Caching\IStorage
-```
-
-The cache is actually a *key–value store*, so we read and write data under keys just like associative arrays. Applications consist of a number of independent parts, and if they all used one storage (for idea: one directory on a disk), sooner or later there would be a key collision. The Nette Framework solves the problem by dividing the entire space into namespaces (subdirectories). Each part of the program then uses its own space with a unique name and no collisions can occur.
-
-The name of the space is specified as the second parameter of the constructor of the Cache class:
-
-```php
-$cache = new Cache($storage, 'Full Html Pages');
-```
-
-We can now use object `$cache` to read and write from the cache. The method `load()` is used for both. The first argument is the key and the second is the PHP callback, which is called when the key is not found in the cache. The callback generates a value, returns it and caches it:
-
-```php
-$value = $cache->load($key, function () use ($key) {
- $computedValue = ...; // heavy computations
- return $computedValue;
-});
-```
-
-If the second parameter is not specified `$value = $cache->load($key)`, the `null` is returned if the item is not in the cache.
-
-The great thing is that any serializable structures can be cached, not only strings. And the same applies for keys.
-
-The item is cleared from the cache using method `remove()`:
-
-```php
-$cache->remove($key);
-```
-
-You can also cache an item using method `$cache->save($key, $value, array $dependencies = [])`. However, the above method using `load()` is preferred.
-
-
-
-
-Memoization
-===========
-
-Memoization means caching the result of a function or method so you can use it next time instead of calculating the same thing again and again.
-
-Methods and functions can be called memoized using `call(callable $callback, ...$args)`:
-
-```php
-$result = $cache->call('gethostbyaddr', $ip);
-```
-
-The function `gethostbyaddr()` is called only once for each parameter `$ip` and the next time the value from the cache will be returned.
-
-It is also possible to create a memoized wrapper for a method or function that can be called later:
-
-```php
-function factorial($num)
-{
- return ...;
-}
-
-$memoizedFactorial = $cache->wrap('factorial');
-
-$result = $memoizedFactorial(5); // counts it
-$result = $memoizedFactorial(5); // returns it from cache
-```
-
-
-Expiration & Invalidation
-=========================
-
-With caching, it is necessary to address the question that some of the previously saved data will become invalid over time. Nette Framework provides a mechanism, how to limit the validity of data and how to delete them in a controlled way ("to invalidate them", using the framework's terminology).
-
-The validity of the data is set at the time of saving using the third parameter of the method `save()`, eg:
-
-```php
-$cache->save($key, $value, [
- Cache::EXPIRE => '20 minutes',
-]);
-```
-
-Or using the `$dependencies` parameter passed by reference to the callback in the `load()` method, eg:
-
-```php
-$value = $cache->load($key, function (&$dependencies) {
- $dependencies[Cache::EXPIRE] = '20 minutes';
- return ...;
-]);
-```
-
-In the following examples, we will assume the second variant and thus the existence of a variable `$dependencies`.
-
-
-Expiration
-----------
-
-The simplest exiration is the time limit. Here's how to cache data valid for 20 minutes:
-
-```php
-// it also accepts the number of seconds or the UNIX timestamp
-$dependencies[Cache::EXPIRE] = '20 minutes';
-```
-
-If we want to extend the validity period with each reading, it can be achieved this way, but beware, this will increase the cache overhead:
-
-```php
-$dependencies[Cache::SLIDING] = true;
-```
-
-The handy option is the ability to let the data expire when a particular file is changed or one of several files. This can be used, for example, for caching data resulting from procession these files. Use absolute paths.
-
-```php
-$dependencies[Cache::FILES] = '/path/to/data.yaml';
-// nebo
-$dependencies[Cache::FILES] = ['/path/to/data1.yaml', '/path/to/data2.yaml'];
-```
-
-We can let an item in the cache expired when another item (or one of several others) expires. This can be used when we cache the entire HTML page and fragments of it under other keys. Once the snippet changes, the entire page becomes invalid. If we have fragments stored under keys such as `frag1` and `frag2`, we will use:
-
-```php
-$dependencies[Cache::ITEMS] = ['frag1', 'frag2'];
-```
-
-Expiration can also be controlled using custom functions or static methods, which always decide when reading whether the item is still valid. For example, we can let the item expire whenever the PHP version changes. We will create a function that compares the current version with the parameter, and when saving we will add an array in the form `[function name, ...arguments]` to the dependencies:
-
-```php
-function checkPhpVersion($ver): bool
-{
- return $ver === PHP_VERSION_ID;
-}
-
-$dependencies[Cache::CALLBACKS] = [
- ['checkPhpVersion', PHP_VERSION_ID] // expire when checkPhpVersion(...) === false
-];
-```
-
-Of course, all criteria can be combined. The cache then expires when at least one criterion is not met.
-
-```php
-$dependencies[Cache::EXPIRE] = '20 minutes';
-$dependencies[Cache::FILES] = '/path/to/data.yaml';
-```
-
-
-
-Invalidation using Tags
------------------------
-
-Tags are a very useful invalidation tool. We can assign a list of tags, which are arbitrary strings, to each item stored in the cache. For example, suppose we have an HTML page with an article and comments, which we want to cache. So we specify tags when saving to cache:
-
-```php
-$dependencies[Cache::TAGS] = ["article/$articleId", "comments/$articleId"];
-```
-
-Now, let's move to the administration. Here we have a form for article editing. Together with saving the article to a database, we call the `clean()` command, which will delete cached items by tag:
-
-```php
-$cache->clean([
- Cache::TAGS => ["article/$articleId"],
-]);
-```
-
-Likewise, in the place of adding a new comment (or editing a comment), we will not forget to invalidate the relevant tag:
-
-```php
-$cache->clean([
- Cache::TAGS => ["comments/$articleId"],
-]);
-```
-
-What have we achieved? That our HTML cache will be invalidated (deleted) whenever the article or comments change. When editing an article with ID = 10, the tag `article/10` is forced to be invalidated and the HTML page carrying the tag is deleted from the cache. The same happens when you insert a new comment under the relevant article.
-
-Tags require [Journal](#Journal).
-
-
-Invalidation by Priority
-------------------------
-
-We can set the priority for individual items in the cache, and it will be possible to delete them in a controlled way when, for example, the cache exceeds a certain size:
-
-```php
-$dependencies[Cache::PRIORITY] = 50;
-```
-
-Delete all items with a priority equal to or less than 100:
-
-```php
-$cache->clean([
- Cache::PRIORITY => 100,
-]);
-```
-
-Priorities require so-called [Journal](#Journal).
-
-
-Clear Cache
------------
-
-The `Cache::ALL` parameter clears everything:
-
-```php
-$cache->clean([
- Cache::ALL => true,
-]);
-```
-
-
-Bulk Reading
-============
-
-For bulk reading and writing to cache, the `bulkLoad()` method is used, where we pass an array of keys and obtain an array of values:
-
-```php
-$values = $cache->bulkLoad($keys);
-```
-
-Method `bulkLoad()` works similarly to `load()` with the second callback parameter, to which the key of the generated item is passed:
-
-```php
-$values = $cache->bulkLoad($keys, function ($key, &$dependencies) {
- $computedValue = ...; // heavy computations
- return $computedValue;
-});
-```
-
-
-Output Caching
-==============
-
-The output can be captured and cached very elegantly:
-
-```php
-if ($capture = $cache->start($key)) {
-
- echo ... // printing some data
-
- $capture->end(); // save the output to the cache
-}
-```
-
-In case that the output is already present in the cache, the `start()` method prints it and returns `null`, so the condition will not be executed. Otherwise, it starts to buffer the output and returns the `$capture` object using which we finally save the data to the cache.
-
-
-Caching in Latte
-================
-
-Caching in templates [Latte](https://latte.nette.org) is very easy, just wrap part of the template with tags `{cache}...{/cache}`. The cache is automatically invalidated when the source template changes (including any included templates within the `{cache}` tags). Tags `{cache}` can be nested, and when a nested block is invalidated (for example, by a tag), the parent block is also invalidated.
-
-In the tag it is possible to specify the keys to which the cache will be bound (here the variable `$id`) and set the expiration and [invalidation tags](#invalidation-using-tags).
-
-```html
-{cache $id, expire => '20 minutes', tags => [tag1, tag2]}
- ...
-{/cache}
-```
-
-All parameters are optional, so you don't have to specify expiration, tags, or keys.
-
-The use of the cache can also be conditioned by `if` - the content will then be cached only if the condition is met:
-
-```html
-{cache $id, if => !$form->isSubmitted()}
- {$form}
-{/cache}
-```
-
-
-Storages
-========
-
-A storage is an object that represents where data is physically stored. We can use a database, a Memcached server, or the most available storage, which are files on disk.
-
-Storage | Description
---------|----------------------
-FileStorage | default storage with saving to files on disk
-MemcachedStorage | uses the `Memcached` server
-MemoryStorage | data are temporarily in memory
-SQLiteStorage | data is stored in SQLite database
-DevNullStorage | data aren't stored - for testing purposes
-
-
-FileStorage
------------
-
-Writes the cache to files on disk. The storage `Nette\Caching\Storages\FileStorage` is very well optimized for performance and above all ensures full atomicity of operations. What does it mean? That when using the cache, it cannot happen that we read a file that has not yet been completely written by another thread, or that someone would delete it "under your hands". The use of the cache is therefore completely safe.
-
-This storage also has an important built-in feature that prevents an extreme increase in CPU usage when the cache is cleared or cold (ie not created). This is [cache stampede](https://en.wikipedia.org/wiki/Cache_stampede) prevention.
-It happens that at one moment there are several concurrent requests that want the same thing from the cache (eg the result of an expensive SQL query) and because it is not cached, all processes start executing the same SQL query.
-The processor load is multiplied and it can even happen that no thread can respond within the time limit, the cache is not created and the application crashes.
-Fortunately, the cache in Nette works in such a way that when there are multiple concurrent requests for one item, it is generated only by the first thread, the others wait and then use the generated result.
-
-Example of creating a FileStorage:
-
-```php
-// the storage will be the directory '/path/to/temp' on the disk
-$storage = new Nette\Caching\Storages\FileStorage('/path/to/temp');
-```
-
-MemcachedStorage
-----------------
-
-The server [Memcached](https://memcached.org) is a high-performance distributed storage system whose adapter is `Nette\Caching\Storages\MemcachedStorage`.
-
-Requires PHP extension `memcached`.
-
-```php
-$storage = new Nette\Caching\Storages\MemcachedStorage('10.0.0.158');
-```
-
-MemoryStorage
--------------
-
-`Nette\Caching\Storages\MemoryStorage` is a storage that stores data in a PHP array and is thus lost when the request is terminated.
-
-```php
-$storage = new Nette\Caching\Storages\MemoryStorage;
-```
-
-
-SQLiteStorage
--------------
-
-The SQLite database and adapter `Nette\Caching\Storages\SQLiteStorage` offer a way to cache in a single file on disk. The configuration will specify the path to this file.
-
-Requires PHP extensions `pdo` and `pdo_sqlite`.
-
-```php
-$storage = new Nette\Caching\Storages\SQLiteStorage('/path/to/cache.sdb');
-```
-
-
-DevNullStorage
---------------
-
-A special implementation of storage is `Nette\Caching\Storages\DevNullStorage`, which does not actually store data at all. It is therefore suitable for testing if we want to eliminate the effect of the cache.
-
-```php
-$storage = new Nette\Caching\Storages\DevNullStorage;
-```
-
-
-Journal
-=======
-
-Nette stores tags and priorities in a so-called journal. By default, SQLite and file `journal.s3db` are used for this, and **PHP extensions `pdo` and `pdo_sqlite` are required.**
-
-If you like Nette, **[please make a donation now](https://github.com/sponsors/dg)**. Thank you!
diff --git a/vendor/nette/caching/src/Bridges/CacheDI/CacheExtension.php b/vendor/nette/caching/src/Bridges/CacheDI/CacheExtension.php
deleted file mode 100644
index 028dfe75..00000000
--- a/vendor/nette/caching/src/Bridges/CacheDI/CacheExtension.php
+++ /dev/null
@@ -1,57 +0,0 @@
-tempDir = $tempDir;
- }
-
-
- public function loadConfiguration()
- {
- $dir = $this->tempDir . '/cache';
- Nette\Utils\FileSystem::createDir($dir);
- if (!is_writable($dir)) {
- throw new Nette\InvalidStateException("Make directory '$dir' writable.");
- }
-
- $builder = $this->getContainerBuilder();
-
- if (extension_loaded('pdo_sqlite')) {
- $builder->addDefinition($this->prefix('journal'))
- ->setType(Nette\Caching\Storages\Journal::class)
- ->setFactory(Nette\Caching\Storages\SQLiteJournal::class, [$dir . '/journal.s3db']);
- }
-
- $builder->addDefinition($this->prefix('storage'))
- ->setType(Nette\Caching\Storage::class)
- ->setFactory(Nette\Caching\Storages\FileStorage::class, [$dir]);
-
- if ($this->name === 'cache') {
- if (extension_loaded('pdo_sqlite')) {
- $builder->addAlias('nette.cacheJournal', $this->prefix('journal'));
- }
- $builder->addAlias('cacheStorage', $this->prefix('storage'));
- }
- }
-}
diff --git a/vendor/nette/caching/src/Bridges/CacheLatte/CacheMacro.php b/vendor/nette/caching/src/Bridges/CacheLatte/CacheMacro.php
deleted file mode 100644
index f7f4b255..00000000
--- a/vendor/nette/caching/src/Bridges/CacheLatte/CacheMacro.php
+++ /dev/null
@@ -1,163 +0,0 @@
-used = false;
- }
-
-
- /**
- * Finishes template parsing.
- * @return array(prolog, epilog)
- */
- public function finalize()
- {
- if ($this->used) {
- return ['Nette\Bridges\CacheLatte\CacheMacro::initRuntime($this);'];
- }
- }
-
-
- /**
- * New node is found.
- * @return bool
- */
- public function nodeOpened(Latte\MacroNode $node)
- {
- if ($node->modifiers) {
- throw new Latte\CompileException('Modifiers are not allowed in ' . $node->getNotation());
- }
- $this->used = true;
- $node->empty = false;
- $node->openingCode = Latte\PhpWriter::using($node)
- ->write(
- 'global->cacheStorage, %var, $this->global->cacheStack, %node.array?)) /* line %var */ try { ?>',
- Nette\Utils\Random::generate(),
- $node->startLine
- );
- }
-
-
- /**
- * Node is closed.
- * @return void
- */
- public function nodeClosed(Latte\MacroNode $node)
- {
- $node->closingCode = Latte\PhpWriter::using($node)
- ->write(
- 'global->cacheStack, %node.array?) /* line %var */;
- } catch (\Throwable $ʟ_e) {
- Nette\Bridges\CacheLatte\CacheMacro::rollback($this->global->cacheStack); throw $ʟ_e;
- } ?>',
- $node->startLine
- );
- }
-
-
- /********************* run-time helpers ****************d*g**/
-
-
- public static function initRuntime(Latte\Runtime\Template $template): void
- {
- if (!empty($template->global->cacheStack)) {
- $file = (new \ReflectionClass($template))->getFileName();
- if (@is_file($file)) { // @ - may trigger error
- end($template->global->cacheStack)->dependencies[Cache::FILES][] = $file;
- }
- }
- }
-
-
- /**
- * Starts the output cache. Returns Nette\Caching\OutputHelper object if buffering was started.
- * @return Nette\Caching\OutputHelper|\stdClass
- */
- public static function createCache(
- Nette\Caching\Storage $cacheStorage,
- string $key,
- ?array &$parents,
- array $args = null
- ) {
- if ($args) {
- if (array_key_exists('if', $args) && !$args['if']) {
- return $parents[] = new \stdClass;
- }
- $key = array_merge([$key], array_intersect_key($args, range(0, count($args))));
- }
- if ($parents) {
- end($parents)->dependencies[Cache::ITEMS][] = $key;
- }
-
- $cache = new Cache($cacheStorage, 'Nette.Templating.Cache');
- if ($helper = $cache->start($key)) {
- $parents[] = $helper;
- }
- return $helper;
- }
-
-
- /**
- * Ends the output cache.
- * @param Nette\Caching\OutputHelper[] $parents
- */
- public static function endCache(array &$parents, array $args = null): void
- {
- $helper = array_pop($parents);
- if (!$helper instanceof Nette\Caching\OutputHelper) {
- return;
- }
-
- if (isset($args['dependencies'])) {
- $args += $args['dependencies']();
- }
- if (isset($args['expire'])) {
- $args['expiration'] = $args['expire']; // back compatibility
- }
- $helper->dependencies[Cache::TAGS] = $args['tags'] ?? null;
- $helper->dependencies[Cache::EXPIRATION] = $args['expiration'] ?? '+ 7 days';
- $helper->end();
- }
-
-
- /**
- * @param Nette\Caching\OutputHelper[] $parents
- */
- public static function rollback(array &$parents): void
- {
- $helper = array_pop($parents);
- if ($helper instanceof Nette\Caching\OutputHelper) {
- $helper->rollback();
- }
- }
-}
diff --git a/vendor/nette/caching/src/Caching/BulkReader.php b/vendor/nette/caching/src/Caching/BulkReader.php
deleted file mode 100644
index 78dc1747..00000000
--- a/vendor/nette/caching/src/Caching/BulkReader.php
+++ /dev/null
@@ -1,26 +0,0 @@
- value pairs, missing items are omitted
- */
- function bulkRead(array $keys): array;
-}
-
-
-class_exists(IBulkReader::class);
diff --git a/vendor/nette/caching/src/Caching/Cache.php b/vendor/nette/caching/src/Caching/Cache.php
deleted file mode 100644
index adb09028..00000000
--- a/vendor/nette/caching/src/Caching/Cache.php
+++ /dev/null
@@ -1,367 +0,0 @@
-storage = $storage;
- $this->namespace = $namespace . self::NAMESPACE_SEPARATOR;
- }
-
-
- /**
- * Returns cache storage.
- */
- final public function getStorage(): Storage
- {
- return $this->storage;
- }
-
-
- /**
- * Returns cache namespace.
- */
- final public function getNamespace(): string
- {
- return (string) substr($this->namespace, 0, -1);
- }
-
-
- /**
- * Returns new nested cache object.
- * @return static
- */
- public function derive(string $namespace)
- {
- return new static($this->storage, $this->namespace . $namespace);
- }
-
-
- /**
- * Reads the specified item from the cache or generate it.
- * @param mixed $key
- * @return mixed
- */
- public function load($key, callable $generator = null)
- {
- $storageKey = $this->generateKey($key);
- $data = $this->storage->read($storageKey);
- if ($data === null && $generator) {
- $this->storage->lock($storageKey);
- try {
- $data = $generator(...[&$dependencies]);
- } catch (\Throwable $e) {
- $this->storage->remove($storageKey);
- throw $e;
- }
- $this->save($key, $data, $dependencies);
- }
- return $data;
- }
-
-
- /**
- * Reads multiple items from the cache.
- */
- public function bulkLoad(array $keys, callable $generator = null): array
- {
- if (count($keys) === 0) {
- return [];
- }
- foreach ($keys as $key) {
- if (!is_scalar($key)) {
- throw new Nette\InvalidArgumentException('Only scalar keys are allowed in bulkLoad()');
- }
- }
-
- $result = [];
- if (!$this->storage instanceof BulkReader) {
- foreach ($keys as $key) {
- $result[$key] = $this->load(
- $key,
- $generator
- ? function (&$dependencies) use ($key, $generator) {
- return $generator(...[$key, &$dependencies]);
- }
- : null
- );
- }
- return $result;
- }
-
- $storageKeys = array_map([$this, 'generateKey'], $keys);
- $cacheData = $this->storage->bulkRead($storageKeys);
- foreach ($keys as $i => $key) {
- $storageKey = $storageKeys[$i];
- if (isset($cacheData[$storageKey])) {
- $result[$key] = $cacheData[$storageKey];
- } elseif ($generator) {
- $result[$key] = $this->load($key, function (&$dependencies) use ($key, $generator) {
- return $generator(...[$key, &$dependencies]);
- });
- } else {
- $result[$key] = null;
- }
- }
- return $result;
- }
-
-
- /**
- * Writes item into the cache.
- * Dependencies are:
- * - Cache::PRIORITY => (int) priority
- * - Cache::EXPIRATION => (timestamp) expiration
- * - Cache::SLIDING => (bool) use sliding expiration?
- * - Cache::TAGS => (array) tags
- * - Cache::FILES => (array|string) file names
- * - Cache::ITEMS => (array|string) cache items
- * - Cache::CONSTS => (array|string) cache items
- *
- * @param mixed $key
- * @param mixed $data
- * @return mixed value itself
- * @throws Nette\InvalidArgumentException
- */
- public function save($key, $data, array $dependencies = null)
- {
- $key = $this->generateKey($key);
-
- if ($data instanceof \Closure) {
- $this->storage->lock($key);
- try {
- $data = $data(...[&$dependencies]);
- } catch (\Throwable $e) {
- $this->storage->remove($key);
- throw $e;
- }
- }
-
- if ($data === null) {
- $this->storage->remove($key);
- } else {
- $dependencies = $this->completeDependencies($dependencies);
- if (isset($dependencies[self::EXPIRATION]) && $dependencies[self::EXPIRATION] <= 0) {
- $this->storage->remove($key);
- } else {
- $this->storage->write($key, $data, $dependencies);
- }
- return $data;
- }
- }
-
-
- private function completeDependencies(?array $dp): array
- {
- // convert expire into relative amount of seconds
- if (isset($dp[self::EXPIRATION])) {
- $dp[self::EXPIRATION] = Nette\Utils\DateTime::from($dp[self::EXPIRATION])->format('U') - time();
- }
-
- // make list from TAGS
- if (isset($dp[self::TAGS])) {
- $dp[self::TAGS] = array_values((array) $dp[self::TAGS]);
- }
-
- // make list from NAMESPACES
- if (isset($dp[self::NAMESPACES])) {
- $dp[self::NAMESPACES] = array_values((array) $dp[self::NAMESPACES]);
- }
-
- // convert FILES into CALLBACKS
- if (isset($dp[self::FILES])) {
- foreach (array_unique((array) $dp[self::FILES]) as $item) {
- $dp[self::CALLBACKS][] = [[self::class, 'checkFile'], $item, @filemtime($item) ?: null]; // @ - stat may fail
- }
- unset($dp[self::FILES]);
- }
-
- // add namespaces to items
- if (isset($dp[self::ITEMS])) {
- $dp[self::ITEMS] = array_unique(array_map([$this, 'generateKey'], (array) $dp[self::ITEMS]));
- }
-
- // convert CONSTS into CALLBACKS
- if (isset($dp[self::CONSTS])) {
- foreach (array_unique((array) $dp[self::CONSTS]) as $item) {
- $dp[self::CALLBACKS][] = [[self::class, 'checkConst'], $item, constant($item)];
- }
- unset($dp[self::CONSTS]);
- }
-
- if (!is_array($dp)) {
- $dp = [];
- }
- return $dp;
- }
-
-
- /**
- * Removes item from the cache.
- * @param mixed $key
- */
- public function remove($key): void
- {
- $this->save($key, null);
- }
-
-
- /**
- * Removes items from the cache by conditions.
- * Conditions are:
- * - Cache::PRIORITY => (int) priority
- * - Cache::TAGS => (array) tags
- * - Cache::ALL => true
- */
- public function clean(array $conditions = null): void
- {
- $conditions = (array) $conditions;
- if (isset($conditions[self::TAGS])) {
- $conditions[self::TAGS] = array_values((array) $conditions[self::TAGS]);
- }
- $this->storage->clean($conditions);
- }
-
-
- /**
- * Caches results of function/method calls.
- * @return mixed
- */
- public function call(callable $function)
- {
- $key = func_get_args();
- if (is_array($function) && is_object($function[0])) {
- $key[0][0] = get_class($function[0]);
- }
- return $this->load($key, function () use ($function, $key) {
- return $function(...array_slice($key, 1));
- });
- }
-
-
- /**
- * Caches results of function/method calls.
- */
- public function wrap(callable $function, array $dependencies = null): \Closure
- {
- return function () use ($function, $dependencies) {
- $key = [$function, $args = func_get_args()];
- if (is_array($function) && is_object($function[0])) {
- $key[0][0] = get_class($function[0]);
- }
- return $this->load($key, function (&$deps) use ($function, $args, $dependencies) {
- $deps = $dependencies;
- return $function(...$args);
- });
- };
- }
-
-
- /**
- * Starts the output cache.
- * @param mixed $key
- */
- public function capture($key): ?OutputHelper
- {
- $data = $this->load($key);
- if ($data === null) {
- return new OutputHelper($this, $key);
- }
- echo $data;
- return null;
- }
-
-
- /**
- * @deprecated use capture()
- */
- public function start($key): ?OutputHelper
- {
- return $this->capture($key);
- }
-
-
- /**
- * Generates internal cache key.
- */
- protected function generateKey($key): string
- {
- return $this->namespace . md5(is_scalar($key) ? (string) $key : serialize($key));
- }
-
-
- /********************* dependency checkers ****************d*g**/
-
-
- /**
- * Checks CALLBACKS dependencies.
- */
- public static function checkCallbacks(array $callbacks): bool
- {
- foreach ($callbacks as $callback) {
- if (!array_shift($callback)(...$callback)) {
- return false;
- }
- }
- return true;
- }
-
-
- /**
- * Checks CONSTS dependency.
- */
- private static function checkConst(string $const, $value): bool
- {
- return defined($const) && constant($const) === $value;
- }
-
-
- /**
- * Checks FILES dependency.
- */
- private static function checkFile(string $file, ?int $time): bool
- {
- return @filemtime($file) == $time; // @ - stat may fail
- }
-}
diff --git a/vendor/nette/caching/src/Caching/OutputHelper.php b/vendor/nette/caching/src/Caching/OutputHelper.php
deleted file mode 100644
index a7caabcc..00000000
--- a/vendor/nette/caching/src/Caching/OutputHelper.php
+++ /dev/null
@@ -1,61 +0,0 @@
-cache = $cache;
- $this->key = $key;
- ob_start();
- }
-
-
- /**
- * Stops and saves the cache.
- */
- public function end(array $dependencies = []): void
- {
- if ($this->cache === null) {
- throw new Nette\InvalidStateException('Output cache has already been saved.');
- }
- $this->cache->save($this->key, ob_get_flush(), $dependencies + $this->dependencies);
- $this->cache = null;
- }
-
-
- /**
- * Stops and throws away the output.
- */
- public function rollback(): void
- {
- ob_end_flush();
- $this->cache = null;
- }
-}
diff --git a/vendor/nette/caching/src/Caching/Storage.php b/vendor/nette/caching/src/Caching/Storage.php
deleted file mode 100644
index e9565d8b..00000000
--- a/vendor/nette/caching/src/Caching/Storage.php
+++ /dev/null
@@ -1,46 +0,0 @@
- timestamp)
- META_CALLBACKS = 'callbacks'; // array of callbacks (function, args)
-
- /** additional cache structure */
- private const
- FILE = 'file',
- HANDLE = 'handle';
-
- /** @var float probability that the clean() routine is started */
- public static $gcProbability = 0.001;
-
- /** @deprecated */
- public static $useDirectories = true;
-
- /** @var string */
- private $dir;
-
- /** @var Journal */
- private $journal;
-
- /** @var array */
- private $locks;
-
-
- public function __construct(string $dir, Journal $journal = null)
- {
- if (!is_dir($dir)) {
- throw new Nette\DirectoryNotFoundException("Directory '$dir' not found.");
- }
-
- $this->dir = $dir;
- $this->journal = $journal;
-
- if (mt_rand() / mt_getrandmax() < static::$gcProbability) {
- $this->clean([]);
- }
- }
-
-
- public function read(string $key)
- {
- $meta = $this->readMetaAndLock($this->getCacheFile($key), LOCK_SH);
- return $meta && $this->verify($meta)
- ? $this->readData($meta) // calls fclose()
- : null;
- }
-
-
- /**
- * Verifies dependencies.
- */
- private function verify(array $meta): bool
- {
- do {
- if (!empty($meta[self::META_DELTA])) {
- // meta[file] was added by readMetaAndLock()
- if (filemtime($meta[self::FILE]) + $meta[self::META_DELTA] < time()) {
- break;
- }
- touch($meta[self::FILE]);
-
- } elseif (!empty($meta[self::META_EXPIRE]) && $meta[self::META_EXPIRE] < time()) {
- break;
- }
-
- if (!empty($meta[self::META_CALLBACKS]) && !Cache::checkCallbacks($meta[self::META_CALLBACKS])) {
- break;
- }
-
- if (!empty($meta[self::META_ITEMS])) {
- foreach ($meta[self::META_ITEMS] as $depFile => $time) {
- $m = $this->readMetaAndLock($depFile, LOCK_SH);
- if (($m[self::META_TIME] ?? null) !== $time || ($m && !$this->verify($m))) {
- break 2;
- }
- }
- }
-
- return true;
- } while (false);
-
- $this->delete($meta[self::FILE], $meta[self::HANDLE]); // meta[handle] & meta[file] was added by readMetaAndLock()
- return false;
- }
-
-
- public function lock(string $key): void
- {
- $cacheFile = $this->getCacheFile($key);
- if (!is_dir($dir = dirname($cacheFile))) {
- @mkdir($dir); // @ - directory may already exist
- }
- $handle = fopen($cacheFile, 'c+b');
- if (!$handle) {
- return;
- }
-
- $this->locks[$key] = $handle;
- flock($handle, LOCK_EX);
- }
-
-
- public function write(string $key, $data, array $dp): void
- {
- $meta = [
- self::META_TIME => microtime(),
- ];
-
- if (isset($dp[Cache::EXPIRATION])) {
- if (empty($dp[Cache::SLIDING])) {
- $meta[self::META_EXPIRE] = $dp[Cache::EXPIRATION] + time(); // absolute time
- } else {
- $meta[self::META_DELTA] = (int) $dp[Cache::EXPIRATION]; // sliding time
- }
- }
-
- if (isset($dp[Cache::ITEMS])) {
- foreach ($dp[Cache::ITEMS] as $item) {
- $depFile = $this->getCacheFile($item);
- $m = $this->readMetaAndLock($depFile, LOCK_SH);
- $meta[self::META_ITEMS][$depFile] = $m[self::META_TIME] ?? null;
- unset($m);
- }
- }
-
- if (isset($dp[Cache::CALLBACKS])) {
- $meta[self::META_CALLBACKS] = $dp[Cache::CALLBACKS];
- }
-
- if (!isset($this->locks[$key])) {
- $this->lock($key);
- if (!isset($this->locks[$key])) {
- return;
- }
- }
- $handle = $this->locks[$key];
- unset($this->locks[$key]);
-
- $cacheFile = $this->getCacheFile($key);
-
- if (isset($dp[Cache::TAGS]) || isset($dp[Cache::PRIORITY])) {
- if (!$this->journal) {
- throw new Nette\InvalidStateException('CacheJournal has not been provided.');
- }
- $this->journal->write($cacheFile, $dp);
- }
-
- ftruncate($handle, 0);
-
- if (!is_string($data)) {
- $data = serialize($data);
- $meta[self::META_SERIALIZED] = true;
- }
-
- $head = serialize($meta);
- $head = str_pad((string) strlen($head), 6, '0', STR_PAD_LEFT) . $head;
- $headLen = strlen($head);
-
- do {
- if (fwrite($handle, str_repeat("\x00", $headLen)) !== $headLen) {
- break;
- }
-
- if (fwrite($handle, $data) !== strlen($data)) {
- break;
- }
-
- fseek($handle, 0);
- if (fwrite($handle, $head) !== $headLen) {
- break;
- }
-
- flock($handle, LOCK_UN);
- fclose($handle);
- return;
- } while (false);
-
- $this->delete($cacheFile, $handle);
- }
-
-
- public function remove(string $key): void
- {
- unset($this->locks[$key]);
- $this->delete($this->getCacheFile($key));
- }
-
-
- public function clean(array $conditions): void
- {
- $all = !empty($conditions[Cache::ALL]);
- $collector = empty($conditions);
- $namespaces = $conditions[Cache::NAMESPACES] ?? null;
-
- // cleaning using file iterator
- if ($all || $collector) {
- $now = time();
- foreach (Nette\Utils\Finder::find('_*')->from($this->dir)->childFirst() as $entry) {
- $path = (string) $entry;
- if ($entry->isDir()) { // collector: remove empty dirs
- @rmdir($path); // @ - removing dirs is not necessary
- continue;
- }
- if ($all) {
- $this->delete($path);
-
- } else { // collector
- $meta = $this->readMetaAndLock($path, LOCK_SH);
- if (!$meta) {
- continue;
- }
-
- if ((!empty($meta[self::META_DELTA]) && filemtime($meta[self::FILE]) + $meta[self::META_DELTA] < $now)
- || (!empty($meta[self::META_EXPIRE]) && $meta[self::META_EXPIRE] < $now)
- ) {
- $this->delete($path, $meta[self::HANDLE]);
- continue;
- }
-
- flock($meta[self::HANDLE], LOCK_UN);
- fclose($meta[self::HANDLE]);
- }
- }
-
- if ($this->journal) {
- $this->journal->clean($conditions);
- }
- return;
-
- } elseif ($namespaces) {
- foreach ($namespaces as $namespace) {
- $dir = $this->dir . '/_' . urlencode($namespace);
- if (!is_dir($dir)) {
- continue;
- }
-
- foreach (Nette\Utils\Finder::findFiles('_*')->in($dir) as $entry) {
- $this->delete((string) $entry);
- }
- @rmdir($dir); // may already contain new files
- }
- }
-
- // cleaning using journal
- if ($this->journal) {
- foreach ($this->journal->clean($conditions) as $file) {
- $this->delete($file);
- }
- }
- }
-
-
- /**
- * Reads cache data from disk.
- */
- protected function readMetaAndLock(string $file, int $lock): ?array
- {
- $handle = @fopen($file, 'r+b'); // @ - file may not exist
- if (!$handle) {
- return null;
- }
-
- flock($handle, $lock);
-
- $size = (int) stream_get_contents($handle, self::META_HEADER_LEN);
- if ($size) {
- $meta = stream_get_contents($handle, $size, self::META_HEADER_LEN);
- $meta = unserialize($meta);
- $meta[self::FILE] = $file;
- $meta[self::HANDLE] = $handle;
- return $meta;
- }
-
- flock($handle, LOCK_UN);
- fclose($handle);
- return null;
- }
-
-
- /**
- * Reads cache data from disk and closes cache file handle.
- * @return mixed
- */
- protected function readData(array $meta)
- {
- $data = stream_get_contents($meta[self::HANDLE]);
- flock($meta[self::HANDLE], LOCK_UN);
- fclose($meta[self::HANDLE]);
-
- return empty($meta[self::META_SERIALIZED]) ? $data : unserialize($data);
- }
-
-
- /**
- * Returns file name.
- */
- protected function getCacheFile(string $key): string
- {
- $file = urlencode($key);
- if ($a = strrpos($file, '%00')) { // %00 = urlencode(Nette\Caching\Cache::NAMESPACE_SEPARATOR)
- $file = substr_replace($file, '/_', $a, 3);
- }
- return $this->dir . '/_' . $file;
- }
-
-
- /**
- * Deletes and closes file.
- * @param resource $handle
- */
- private static function delete(string $file, $handle = null): void
- {
- if (@unlink($file)) { // @ - file may not already exist
- if ($handle) {
- flock($handle, LOCK_UN);
- fclose($handle);
- }
- return;
- }
-
- if (!$handle) {
- $handle = @fopen($file, 'r+'); // @ - file may not exist
- }
- if (!$handle) {
- return;
- }
-
- flock($handle, LOCK_EX);
- ftruncate($handle, 0);
- flock($handle, LOCK_UN);
- fclose($handle);
- @unlink($file); // @ - file may not already exist
- }
-}
diff --git a/vendor/nette/caching/src/Caching/Storages/Journal.php b/vendor/nette/caching/src/Caching/Storages/Journal.php
deleted file mode 100644
index 1815073a..00000000
--- a/vendor/nette/caching/src/Caching/Storages/Journal.php
+++ /dev/null
@@ -1,31 +0,0 @@
-prefix = $prefix;
- $this->journal = $journal;
- $this->memcached = new \Memcached;
- if ($host) {
- $this->addServer($host, $port);
- }
- }
-
-
- public function addServer(string $host = 'localhost', int $port = 11211): void
- {
- if (@$this->memcached->addServer($host, $port, 1) === false) { // @ is escalated to exception
- $error = error_get_last();
- throw new Nette\InvalidStateException("Memcached::addServer(): $error[message].");
- }
- }
-
-
- public function getConnection(): \Memcached
- {
- return $this->memcached;
- }
-
-
- public function read(string $key)
- {
- $key = urlencode($this->prefix . $key);
- $meta = $this->memcached->get($key);
- if (!$meta) {
- return null;
- }
-
- // meta structure:
- // array(
- // data => stored data
- // delta => relative (sliding) expiration
- // callbacks => array of callbacks (function, args)
- // )
-
- // verify dependencies
- if (!empty($meta[self::META_CALLBACKS]) && !Cache::checkCallbacks($meta[self::META_CALLBACKS])) {
- $this->memcached->delete($key, 0);
- return null;
- }
-
- if (!empty($meta[self::META_DELTA])) {
- $this->memcached->replace($key, $meta, $meta[self::META_DELTA] + time());
- }
-
- return $meta[self::META_DATA];
- }
-
-
- public function bulkRead(array $keys): array
- {
- $prefixedKeys = array_map(function ($key) {
- return urlencode($this->prefix . $key);
- }, $keys);
- $keys = array_combine($prefixedKeys, $keys);
- $metas = $this->memcached->getMulti($prefixedKeys);
- $result = [];
- $deleteKeys = [];
- foreach ($metas as $prefixedKey => $meta) {
- if (!empty($meta[self::META_CALLBACKS]) && !Cache::checkCallbacks($meta[self::META_CALLBACKS])) {
- $deleteKeys[] = $prefixedKey;
- } else {
- $result[$keys[$prefixedKey]] = $meta[self::META_DATA];
- }
-
- if (!empty($meta[self::META_DELTA])) {
- $this->memcached->replace($prefixedKey, $meta, $meta[self::META_DELTA] + time());
- }
- }
- if (!empty($deleteKeys)) {
- $this->memcached->deleteMulti($deleteKeys, 0);
- }
-
- return $result;
- }
-
-
- public function lock(string $key): void
- {
- }
-
-
- public function write(string $key, $data, array $dp): void
- {
- if (isset($dp[Cache::ITEMS])) {
- throw new Nette\NotSupportedException('Dependent items are not supported by MemcachedStorage.');
- }
-
- $key = urlencode($this->prefix . $key);
- $meta = [
- self::META_DATA => $data,
- ];
-
- $expire = 0;
- if (isset($dp[Cache::EXPIRATION])) {
- $expire = (int) $dp[Cache::EXPIRATION];
- if (!empty($dp[Cache::SLIDING])) {
- $meta[self::META_DELTA] = $expire; // sliding time
- }
- }
-
- if (isset($dp[Cache::CALLBACKS])) {
- $meta[self::META_CALLBACKS] = $dp[Cache::CALLBACKS];
- }
-
- if (isset($dp[Cache::TAGS]) || isset($dp[Cache::PRIORITY])) {
- if (!$this->journal) {
- throw new Nette\InvalidStateException('CacheJournal has not been provided.');
- }
- $this->journal->write($key, $dp);
- }
-
- $this->memcached->set($key, $meta, $expire);
- }
-
-
- public function remove(string $key): void
- {
- $this->memcached->delete(urlencode($this->prefix . $key), 0);
- }
-
-
- public function clean(array $conditions): void
- {
- if (!empty($conditions[Cache::ALL])) {
- $this->memcached->flush();
-
- } elseif ($this->journal) {
- foreach ($this->journal->clean($conditions) as $entry) {
- $this->memcached->delete($entry, 0);
- }
- }
- }
-}
diff --git a/vendor/nette/caching/src/Caching/Storages/MemoryStorage.php b/vendor/nette/caching/src/Caching/Storages/MemoryStorage.php
deleted file mode 100644
index 363bfad9..00000000
--- a/vendor/nette/caching/src/Caching/Storages/MemoryStorage.php
+++ /dev/null
@@ -1,55 +0,0 @@
-data[$key] ?? null;
- }
-
-
- public function lock(string $key): void
- {
- }
-
-
- public function write(string $key, $data, array $dependencies): void
- {
- $this->data[$key] = $data;
- }
-
-
- public function remove(string $key): void
- {
- unset($this->data[$key]);
- }
-
-
- public function clean(array $conditions): void
- {
- if (!empty($conditions[Nette\Caching\Cache::ALL])) {
- $this->data = [];
- }
- }
-}
diff --git a/vendor/nette/caching/src/Caching/Storages/NewMemcachedStorage.php b/vendor/nette/caching/src/Caching/Storages/NewMemcachedStorage.php
deleted file mode 100644
index 087be03c..00000000
--- a/vendor/nette/caching/src/Caching/Storages/NewMemcachedStorage.php
+++ /dev/null
@@ -1,18 +0,0 @@
-path = $path;
- }
-
-
- private function open(): void
- {
- if ($this->path !== ':memory:' && !is_file($this->path)) {
- touch($this->path); // ensures ordinary file permissions
- }
-
- $this->pdo = new \PDO('sqlite:' . $this->path);
- $this->pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
- $this->pdo->exec('
- PRAGMA foreign_keys = OFF;
- PRAGMA journal_mode = WAL;
- CREATE TABLE IF NOT EXISTS tags (
- key BLOB NOT NULL,
- tag BLOB NOT NULL
- );
- CREATE TABLE IF NOT EXISTS priorities (
- key BLOB NOT NULL,
- priority INT NOT NULL
- );
- CREATE INDEX IF NOT EXISTS idx_tags_tag ON tags(tag);
- CREATE UNIQUE INDEX IF NOT EXISTS idx_tags_key_tag ON tags(key, tag);
- CREATE UNIQUE INDEX IF NOT EXISTS idx_priorities_key ON priorities(key);
- CREATE INDEX IF NOT EXISTS idx_priorities_priority ON priorities(priority);
- ');
- }
-
-
- public function write(string $key, array $dependencies): void
- {
- if (!$this->pdo) {
- $this->open();
- }
- $this->pdo->exec('BEGIN');
-
- if (!empty($dependencies[Cache::TAGS])) {
- $this->pdo->prepare('DELETE FROM tags WHERE key = ?')->execute([$key]);
-
- foreach ($dependencies[Cache::TAGS] as $tag) {
- $arr[] = $key;
- $arr[] = $tag;
- }
- $this->pdo->prepare('INSERT INTO tags (key, tag) SELECT ?, ?' . str_repeat('UNION SELECT ?, ?', count($arr) / 2 - 1))
- ->execute($arr);
- }
-
- if (!empty($dependencies[Cache::PRIORITY])) {
- $this->pdo->prepare('REPLACE INTO priorities (key, priority) VALUES (?, ?)')
- ->execute([$key, (int) $dependencies[Cache::PRIORITY]]);
- }
-
- $this->pdo->exec('COMMIT');
- }
-
-
- public function clean(array $conditions): ?array
- {
- if (!$this->pdo) {
- $this->open();
- }
- if (!empty($conditions[Cache::ALL])) {
- $this->pdo->exec('
- BEGIN;
- DELETE FROM tags;
- DELETE FROM priorities;
- COMMIT;
- ');
-
- return null;
- }
-
- $unions = $args = [];
- if (!empty($conditions[Cache::TAGS])) {
- $tags = (array) $conditions[Cache::TAGS];
- $unions[] = 'SELECT DISTINCT key FROM tags WHERE tag IN (?' . str_repeat(', ?', count($tags) - 1) . ')';
- $args = $tags;
- }
-
- if (!empty($conditions[Cache::PRIORITY])) {
- $unions[] = 'SELECT DISTINCT key FROM priorities WHERE priority <= ?';
- $args[] = (int) $conditions[Cache::PRIORITY];
- }
-
- if (empty($unions)) {
- return [];
- }
-
- $unionSql = implode(' UNION ', $unions);
-
- $this->pdo->exec('BEGIN IMMEDIATE');
-
- $stmt = $this->pdo->prepare($unionSql);
- $stmt->execute($args);
- $keys = $stmt->fetchAll(\PDO::FETCH_COLUMN, 0);
-
- if (empty($keys)) {
- $this->pdo->exec('COMMIT');
- return [];
- }
-
- $this->pdo->prepare("DELETE FROM tags WHERE key IN ($unionSql)")->execute($args);
- $this->pdo->prepare("DELETE FROM priorities WHERE key IN ($unionSql)")->execute($args);
- $this->pdo->exec('COMMIT');
-
- return $keys;
- }
-}
diff --git a/vendor/nette/caching/src/Caching/Storages/SQLiteStorage.php b/vendor/nette/caching/src/Caching/Storages/SQLiteStorage.php
deleted file mode 100644
index 642e0fb7..00000000
--- a/vendor/nette/caching/src/Caching/Storages/SQLiteStorage.php
+++ /dev/null
@@ -1,145 +0,0 @@
-pdo = new \PDO('sqlite:' . $path);
- $this->pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
- $this->pdo->exec('
- PRAGMA foreign_keys = ON;
- CREATE TABLE IF NOT EXISTS cache (
- key BLOB NOT NULL PRIMARY KEY,
- data BLOB NOT NULL,
- expire INTEGER,
- slide INTEGER
- );
- CREATE TABLE IF NOT EXISTS tags (
- key BLOB NOT NULL REFERENCES cache ON DELETE CASCADE,
- tag BLOB NOT NULL
- );
- CREATE INDEX IF NOT EXISTS cache_expire ON cache(expire);
- CREATE INDEX IF NOT EXISTS tags_key ON tags(key);
- CREATE INDEX IF NOT EXISTS tags_tag ON tags(tag);
- PRAGMA synchronous = OFF;
- ');
- }
-
-
- public function read(string $key)
- {
- $stmt = $this->pdo->prepare('SELECT data, slide FROM cache WHERE key=? AND (expire IS NULL OR expire >= ?)');
- $stmt->execute([$key, time()]);
- if (!$row = $stmt->fetch(\PDO::FETCH_ASSOC)) {
- return;
- }
-
- if ($row['slide'] !== null) {
- $this->pdo->prepare('UPDATE cache SET expire = ? + slide WHERE key=?')->execute([time(), $key]);
- }
- return unserialize($row['data']);
- }
-
-
- public function bulkRead(array $keys): array
- {
- $stmt = $this->pdo->prepare('SELECT key, data, slide FROM cache WHERE key IN (?' . str_repeat(',?', count($keys) - 1) . ') AND (expire IS NULL OR expire >= ?)');
- $stmt->execute(array_merge($keys, [time()]));
- $result = [];
- $updateSlide = [];
- foreach ($stmt->fetchAll(\PDO::FETCH_ASSOC) as $row) {
- if ($row['slide'] !== null) {
- $updateSlide[] = $row['key'];
- }
- $result[$row['key']] = unserialize($row['data']);
- }
- if (!empty($updateSlide)) {
- $stmt = $this->pdo->prepare('UPDATE cache SET expire = ? + slide WHERE key IN(?' . str_repeat(',?', count($updateSlide) - 1) . ')');
- $stmt->execute(array_merge([time()], $updateSlide));
- }
- return $result;
- }
-
-
- public function lock(string $key): void
- {
- }
-
-
- public function write(string $key, $data, array $dependencies): void
- {
- $expire = isset($dependencies[Cache::EXPIRATION])
- ? $dependencies[Cache::EXPIRATION] + time()
- : null;
- $slide = isset($dependencies[Cache::SLIDING])
- ? $dependencies[Cache::EXPIRATION]
- : null;
-
- $this->pdo->exec('BEGIN TRANSACTION');
- $this->pdo->prepare('REPLACE INTO cache (key, data, expire, slide) VALUES (?, ?, ?, ?)')
- ->execute([$key, serialize($data), $expire, $slide]);
-
- if (!empty($dependencies[Cache::TAGS])) {
- foreach ($dependencies[Cache::TAGS] as $tag) {
- $arr[] = $key;
- $arr[] = $tag;
- }
- $this->pdo->prepare('INSERT INTO tags (key, tag) SELECT ?, ?' . str_repeat('UNION SELECT ?, ?', count($arr) / 2 - 1))
- ->execute($arr);
- }
- $this->pdo->exec('COMMIT');
- }
-
-
- public function remove(string $key): void
- {
- $this->pdo->prepare('DELETE FROM cache WHERE key=?')
- ->execute([$key]);
- }
-
-
- public function clean(array $conditions): void
- {
- if (!empty($conditions[Cache::ALL])) {
- $this->pdo->prepare('DELETE FROM cache')->execute();
-
- } else {
- $sql = 'DELETE FROM cache WHERE expire < ?';
- $args = [time()];
-
- if (!empty($conditions[Cache::TAGS])) {
- $tags = $conditions[Cache::TAGS];
- $sql .= ' OR key IN (SELECT key FROM tags WHERE tag IN (?' . str_repeat(',?', count($tags) - 1) . '))';
- $args = array_merge($args, $tags);
- }
-
- $this->pdo->prepare($sql)->execute($args);
- }
- }
-}
diff --git a/vendor/nette/caching/src/compatibility.php b/vendor/nette/caching/src/compatibility.php
deleted file mode 100644
index 84336f23..00000000
--- a/vendor/nette/caching/src/compatibility.php
+++ /dev/null
@@ -1,39 +0,0 @@
-=7.1",
- "nette/utils": "^2.4 || ^3.0"
- },
- "require-dev": {
- "nette/tester": "^2.0",
- "tracy/tracy": "^2.3",
- "phpstan/phpstan": "^0.12"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "autoload": {
- "classmap": ["src/"]
- },
- "minimum-stability": "dev",
- "scripts": {
- "phpstan": "phpstan analyse --level 5 src",
- "tester": "tester tests -s"
- },
- "extra": {
- "branch-alias": {
- "dev-master": "2.5-dev"
- }
- }
-}
diff --git a/vendor/nette/finder/contributing.md b/vendor/nette/finder/contributing.md
deleted file mode 100644
index 184152c0..00000000
--- a/vendor/nette/finder/contributing.md
+++ /dev/null
@@ -1,33 +0,0 @@
-How to contribute & use the issue tracker
-=========================================
-
-Nette welcomes your contributions. There are several ways to help out:
-
-* Create an issue on GitHub, if you have found a bug
-* Write test cases for open bug issues
-* Write fixes for open bug/feature issues, preferably with test cases included
-* Contribute to the [documentation](https://nette.org/en/writing)
-
-Issues
-------
-
-Please **do not use the issue tracker to ask questions**. We will be happy to help you
-on [Nette forum](https://forum.nette.org) or chat with us on [Gitter](https://gitter.im/nette/nette).
-
-A good bug report shouldn't leave others needing to chase you up for more
-information. Please try to be as detailed as possible in your report.
-
-**Feature requests** are welcome. But take a moment to find out whether your idea
-fits with the scope and aims of the project. It's up to *you* to make a strong
-case to convince the project's developers of the merits of this feature.
-
-Contributing
-------------
-
-If you'd like to contribute, please take a moment to read [the contributing guide](https://nette.org/en/contributing).
-
-The best way to propose a feature is to discuss your ideas on [Nette forum](https://forum.nette.org) before implementing them.
-
-Please do not fix whitespace, format code, or make a purely cosmetic patch.
-
-Thanks! :heart:
diff --git a/vendor/nette/finder/license.md b/vendor/nette/finder/license.md
deleted file mode 100644
index cf741bd0..00000000
--- a/vendor/nette/finder/license.md
+++ /dev/null
@@ -1,60 +0,0 @@
-Licenses
-========
-
-Good news! You may use Nette Framework under the terms of either
-the New BSD License or the GNU General Public License (GPL) version 2 or 3.
-
-The BSD License is recommended for most projects. It is easy to understand and it
-places almost no restrictions on what you can do with the framework. If the GPL
-fits better to your project, you can use the framework under this license.
-
-You don't have to notify anyone which license you are using. You can freely
-use Nette Framework in commercial projects as long as the copyright header
-remains intact.
-
-Please be advised that the name "Nette Framework" is a protected trademark and its
-usage has some limitations. So please do not use word "Nette" in the name of your
-project or top-level domain, and choose a name that stands on its own merits.
-If your stuff is good, it will not take long to establish a reputation for yourselves.
-
-
-New BSD License
----------------
-
-Copyright (c) 2004, 2014 David Grudl (https://davidgrudl.com)
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- * Neither the name of "Nette Framework" nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-This software is provided by the copyright holders and contributors "as is" and
-any express or implied warranties, including, but not limited to, the implied
-warranties of merchantability and fitness for a particular purpose are
-disclaimed. In no event shall the copyright owner or contributors be liable for
-any direct, indirect, incidental, special, exemplary, or consequential damages
-(including, but not limited to, procurement of substitute goods or services;
-loss of use, data, or profits; or business interruption) however caused and on
-any theory of liability, whether in contract, strict liability, or tort
-(including negligence or otherwise) arising in any way out of the use of this
-software, even if advised of the possibility of such damage.
-
-
-GNU General Public License
---------------------------
-
-GPL licenses are very very long, so instead of including them here we offer
-you URLs with full text:
-
-- [GPL version 2](http://www.gnu.org/licenses/gpl-2.0.html)
-- [GPL version 3](http://www.gnu.org/licenses/gpl-3.0.html)
diff --git a/vendor/nette/finder/readme.md b/vendor/nette/finder/readme.md
deleted file mode 100644
index 1fb76401..00000000
--- a/vendor/nette/finder/readme.md
+++ /dev/null
@@ -1,181 +0,0 @@
-Nette Finder: Files Searching
-=============================
-
-[](https://packagist.org/packages/nette/finder)
-[](https://travis-ci.org/nette/finder)
-[](https://coveralls.io/github/nette/finder?branch=master)
-[](https://github.com/nette/finder/releases)
-[](https://github.com/nette/finder/blob/master/license.md)
-
-
-Introduction
-------------
-
-Nette Finder makes browsing the directory structure really easy.
-
-Documentation can be found on the [website](https://doc.nette.org/finder).
-
-If you like Nette, **[please make a donation now](https://nette.org/donate)**. Thank you!
-
-
-Installation
-------------
-
-The recommended way to install is via Composer:
-
-```
-composer require nette/finder
-```
-
-It requires PHP version 7.1 and supports PHP up to 7.4.
-
-
-Usage
------
-
-How to find all `*.txt` files in `$dir` directory without recursing subdirectories?
-
-```php
-foreach (Finder::findFiles('*.txt')->in($dir) as $key => $file) {
- echo $key; // $key is a string containing absolute filename with path
- echo $file; // $file is an instance of SplFileInfo
-}
-```
-
-As a result, the finder returns instances of `SplFileInfo`.
-
-If the directory does not exist, an `UnexpectedValueException` is thrown.
-
-And what about searching for `*.txt` files in `$dir` including subdirectories? Instead of `in()`, use `from()`:
-
-```php
-foreach (Finder::findFiles('*.txt')->from($dir) as $file) {
- echo $file;
-}
-```
-
-Search by more masks, even inside more directories within one iteration:
-
-```php
-foreach (Finder::findFiles('*.txt', '*.php')
- ->in($dir1, $dir2) as $file) {
- ...
-}
-```
-
-Parameters can also be arrays:
-
-```php
-foreach (Finder::findFiles($masks)->in($dirs) as $file) {
- ...
-}
-```
-
-Searching for `*.txt` files containing a number in the name:
-
-```php
-foreach (Finder::findFiles('*[0-9]*.txt')->from($dir) as $file) {
- ...
-}
-```
-
-Searching for `*.txt` files, except those containing '`X`' in the name:
-
-```php
-foreach (Finder::findFiles('*.txt')
- ->exclude('*X*')->from($dir) as $file) {
- ...
-}
-```
-
-`exclude()` is specified just after `findFiles()`, thus it applies to filename.
-
-
-Directories to omit can be specified using the `exclude` **after** `from` clause:
-
-```php
-foreach (Finder::findFiles('*.php')
- ->from($dir)->exclude('temp', '.git') as $file) {
- ...
-}
-```
-
-Here `exclude()` is after `from()`, thus it applies to the directory name.
-
-
-And now something a bit more complicated: searching for `*.txt` files located in subdirectories starting with '`te`', but not '`temp`':
-
-```php
-foreach (Finder::findFiles('te*/*.txt')
- ->exclude('temp*/*')->from($dir) as $file) {
- ...
-}
-```
-
-Depth of search can be limited using the `limitDepth()` method.
-
-
-
-Searching for directories
--------------------------
-
-In addition to files, it is possible to search for directories using `Finder::findDirectories('subdir*')`, or to search for files and directories: `Finder::find('file.txt')`.
-
-
-Filtering
----------
-
-You can also filter results. For example by size. This way we will traverse the files of size between 100B and 200B:
-
-
-```php
-foreach (Finder::findFiles('*.php')->size('>=', 100)->size('<=', 200)
- ->from($dir) as $file) {
- ...
-}
-```
-
-Or files changed in the last two weeks:
-
-```php
-foreach (Finder::findFiles('*.php')->date('>', '- 2 weeks')
- ->from($dir) as $file) {
- ...
-}
-```
-
-Here we traverse PHP files with number of lines greater than 1000. As a filter we use a custom callback:
-
-```php
-$finder = Finder::findFiles('*.php')->filter(function($file) {
- return count(file($file->getPathname())) > 1000;
-})->from($dir);
-```
-
-
-Finder, find images larger than 50px × 50px:
-
-```php
-foreach (Finder::findFiles('*')
- ->dimensions('>50', '>50')->from($dir) as $file) {
- ...
-}
-```
-
-
-Connection to Amazon S3
------------------------
-
-It's possible to use custom streams, for example Zend_Service_Amazon_S3:
-
-```php
-$s3 = new Zend_Service_Amazon_S3($key, $secret);
-$s3->registerStreamWrapper('s3');
-
-foreach (Finder::findFiles('photos*')
- ->size('<=', 1e6)->in('s3://bucket-name') as $file) {
- echo $file;
-}
-```
-
-Handy, right? You will certainly find a use for Finder in your applications.
diff --git a/vendor/nette/finder/src/Utils/Finder.php b/vendor/nette/finder/src/Utils/Finder.php
deleted file mode 100644
index c3ffabd6..00000000
--- a/vendor/nette/finder/src/Utils/Finder.php
+++ /dev/null
@@ -1,380 +0,0 @@
-
- * Finder::findFiles('*.php')
- * ->size('> 10kB')
- * ->from('.')
- * ->exclude('temp');
- *
- */
-class Finder implements \IteratorAggregate, \Countable
-{
- use Nette\SmartObject;
-
- /** @var callable extension methods */
- private static $extMethods = [];
-
- /** @var array */
- private $paths = [];
-
- /** @var array of filters */
- private $groups = [];
-
- /** @var array filter for recursive traversing */
- private $exclude = [];
-
- /** @var int */
- private $order = RecursiveIteratorIterator::SELF_FIRST;
-
- /** @var int */
- private $maxDepth = -1;
-
- /** @var array */
- private $cursor;
-
-
- /**
- * Begins search for files matching mask and all directories.
- * @param string|string[] $masks
- * @return static
- */
- public static function find(...$masks): self
- {
- $masks = $masks && is_array($masks[0]) ? $masks[0] : $masks;
- return (new static)->select($masks, 'isDir')->select($masks, 'isFile');
- }
-
-
- /**
- * Begins search for files matching mask.
- * @param string|string[] $masks
- * @return static
- */
- public static function findFiles(...$masks): self
- {
- $masks = $masks && is_array($masks[0]) ? $masks[0] : $masks;
- return (new static)->select($masks, 'isFile');
- }
-
-
- /**
- * Begins search for directories matching mask.
- * @param string|string[] $masks
- * @return static
- */
- public static function findDirectories(...$masks): self
- {
- $masks = $masks && is_array($masks[0]) ? $masks[0] : $masks;
- return (new static)->select($masks, 'isDir');
- }
-
-
- /**
- * Creates filtering group by mask & type selector.
- * @return static
- */
- private function select(array $masks, string $type): self
- {
- $this->cursor = &$this->groups[];
- $pattern = self::buildPattern($masks);
- $this->filter(function (RecursiveDirectoryIterator $file) use ($type, $pattern): bool {
- return !$file->isDot()
- && $file->$type()
- && (!$pattern || preg_match($pattern, '/' . strtr($file->getSubPathName(), '\\', '/')));
- });
- return $this;
- }
-
-
- /**
- * Searches in the given folder(s).
- * @param string|string[] $paths
- * @return static
- */
- public function in(...$paths): self
- {
- $this->maxDepth = 0;
- return $this->from(...$paths);
- }
-
-
- /**
- * Searches recursively from the given folder(s).
- * @param string|string[] $paths
- * @return static
- */
- public function from(...$paths): self
- {
- if ($this->paths) {
- throw new Nette\InvalidStateException('Directory to search has already been specified.');
- }
- $this->paths = is_array($paths[0]) ? $paths[0] : $paths;
- $this->cursor = &$this->exclude;
- return $this;
- }
-
-
- /**
- * Shows folder content prior to the folder.
- * @return static
- */
- public function childFirst(): self
- {
- $this->order = RecursiveIteratorIterator::CHILD_FIRST;
- return $this;
- }
-
-
- /**
- * Converts Finder pattern to regular expression.
- */
- private static function buildPattern(array $masks): ?string
- {
- $pattern = [];
- foreach ($masks as $mask) {
- $mask = rtrim(strtr($mask, '\\', '/'), '/');
- $prefix = '';
- if ($mask === '') {
- continue;
-
- } elseif ($mask === '*') {
- return null;
-
- } elseif ($mask[0] === '/') { // absolute fixing
- $mask = ltrim($mask, '/');
- $prefix = '(?<=^/)';
- }
- $pattern[] = $prefix . strtr(preg_quote($mask, '#'),
- ['\*\*' => '.*', '\*' => '[^/]*', '\?' => '[^/]', '\[\!' => '[^', '\[' => '[', '\]' => ']', '\-' => '-']);
- }
- return $pattern ? '#/(' . implode('|', $pattern) . ')$#Di' : null;
- }
-
-
- /********************* iterator generator ****************d*g**/
-
-
- /**
- * Get the number of found files and/or directories.
- */
- public function count(): int
- {
- return iterator_count($this->getIterator());
- }
-
-
- /**
- * Returns iterator.
- */
- public function getIterator(): \Iterator
- {
- if (!$this->paths) {
- throw new Nette\InvalidStateException('Call in() or from() to specify directory to search.');
-
- } elseif (count($this->paths) === 1) {
- return $this->buildIterator((string) $this->paths[0]);
-
- } else {
- $iterator = new \AppendIterator();
- foreach ($this->paths as $path) {
- $iterator->append($this->buildIterator((string) $path));
- }
- return $iterator;
- }
- }
-
-
- /**
- * Returns per-path iterator.
- */
- private function buildIterator(string $path): \Iterator
- {
- $iterator = new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::FOLLOW_SYMLINKS);
-
- if ($this->exclude) {
- $iterator = new \RecursiveCallbackFilterIterator($iterator, function ($foo, $bar, RecursiveDirectoryIterator $file): bool {
- if (!$file->isDot() && !$file->isFile()) {
- foreach ($this->exclude as $filter) {
- if (!$filter($file)) {
- return false;
- }
- }
- }
- return true;
- });
- }
-
- if ($this->maxDepth !== 0) {
- $iterator = new RecursiveIteratorIterator($iterator, $this->order);
- $iterator->setMaxDepth($this->maxDepth);
- }
-
- $iterator = new \CallbackFilterIterator($iterator, function ($foo, $bar, \Iterator $file): bool {
- while ($file instanceof \OuterIterator) {
- $file = $file->getInnerIterator();
- }
-
- foreach ($this->groups as $filters) {
- foreach ($filters as $filter) {
- if (!$filter($file)) {
- continue 2;
- }
- }
- return true;
- }
- return false;
- });
-
- return $iterator;
- }
-
-
- /********************* filtering ****************d*g**/
-
-
- /**
- * Restricts the search using mask.
- * Excludes directories from recursive traversing.
- * @param string|string[] $masks
- * @return static
- */
- public function exclude(...$masks): self
- {
- $masks = $masks && is_array($masks[0]) ? $masks[0] : $masks;
- $pattern = self::buildPattern($masks);
- if ($pattern) {
- $this->filter(function (RecursiveDirectoryIterator $file) use ($pattern): bool {
- return !preg_match($pattern, '/' . strtr($file->getSubPathName(), '\\', '/'));
- });
- }
- return $this;
- }
-
-
- /**
- * Restricts the search using callback.
- * @param callable $callback function (RecursiveDirectoryIterator $file): bool
- * @return static
- */
- public function filter(callable $callback): self
- {
- $this->cursor[] = $callback;
- return $this;
- }
-
-
- /**
- * Limits recursion level.
- * @return static
- */
- public function limitDepth(int $depth): self
- {
- $this->maxDepth = $depth;
- return $this;
- }
-
-
- /**
- * Restricts the search by size.
- * @param string $operator "[operator] [size] [unit]" example: >=10kB
- * @return static
- */
- public function size(string $operator, int $size = null): self
- {
- if (func_num_args() === 1) { // in $operator is predicate
- if (!preg_match('#^(?:([=<>!]=?|<>)\s*)?((?:\d*\.)?\d+)\s*(K|M|G|)B?$#Di', $operator, $matches)) {
- throw new Nette\InvalidArgumentException('Invalid size predicate format.');
- }
- [, $operator, $size, $unit] = $matches;
- static $units = ['' => 1, 'k' => 1e3, 'm' => 1e6, 'g' => 1e9];
- $size *= $units[strtolower($unit)];
- $operator = $operator ?: '=';
- }
- return $this->filter(function (RecursiveDirectoryIterator $file) use ($operator, $size): bool {
- return self::compare($file->getSize(), $operator, $size);
- });
- }
-
-
- /**
- * Restricts the search by modified time.
- * @param string $operator "[operator] [date]" example: >1978-01-23
- * @param string|int|\DateTimeInterface $date
- * @return static
- */
- public function date(string $operator, $date = null): self
- {
- if (func_num_args() === 1) { // in $operator is predicate
- if (!preg_match('#^(?:([=<>!]=?|<>)\s*)?(.+)$#Di', $operator, $matches)) {
- throw new Nette\InvalidArgumentException('Invalid date predicate format.');
- }
- [, $operator, $date] = $matches;
- $operator = $operator ?: '=';
- }
- $date = DateTime::from($date)->format('U');
- return $this->filter(function (RecursiveDirectoryIterator $file) use ($operator, $date): bool {
- return self::compare($file->getMTime(), $operator, $date);
- });
- }
-
-
- /**
- * Compares two values.
- */
- public static function compare($l, string $operator, $r): bool
- {
- switch ($operator) {
- case '>':
- return $l > $r;
- case '>=':
- return $l >= $r;
- case '<':
- return $l < $r;
- case '<=':
- return $l <= $r;
- case '=':
- case '==':
- return $l == $r;
- case '!':
- case '!=':
- case '<>':
- return $l != $r;
- default:
- throw new Nette\InvalidArgumentException("Unknown operator $operator.");
- }
- }
-
-
- /********************* extension methods ****************d*g**/
-
-
- public function __call(string $name, array $args)
- {
- return isset(self::$extMethods[$name])
- ? (self::$extMethods[$name])($this, ...$args)
- : Nette\Utils\ObjectHelpers::strictCall(get_class($this), $name, array_keys(self::$extMethods));
- }
-
-
- public static function extensionMethod(string $name, callable $callback): void
- {
- self::$extMethods[$name] = $callback;
- }
-}
diff --git a/vendor/nette/utils/.phpstorm.meta.php b/vendor/nette/utils/.phpstorm.meta.php
deleted file mode 100644
index b6594ae5..00000000
--- a/vendor/nette/utils/.phpstorm.meta.php
+++ /dev/null
@@ -1,19 +0,0 @@
-=7.2 <8.2"
- },
- "require-dev": {
- "nette/tester": "~2.0",
- "tracy/tracy": "^2.3",
- "phpstan/phpstan": "^0.12"
- },
- "conflict": {
- "nette/di": "<3.0.6"
- },
- "suggest": {
- "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()",
- "ext-json": "to use Nette\\Utils\\Json",
- "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()",
- "ext-mbstring": "to use Strings::lower() etc...",
- "ext-xml": "to use Strings::length() etc. when mbstring is not available",
- "ext-gd": "to use Image",
- "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()"
- },
- "autoload": {
- "classmap": ["src/"]
- },
- "minimum-stability": "dev",
- "scripts": {
- "phpstan": "phpstan analyse",
- "tester": "tester tests -s"
- },
- "extra": {
- "branch-alias": {
- "dev-master": "3.2-dev"
- }
- }
-}
diff --git a/vendor/nette/utils/contributing.md b/vendor/nette/utils/contributing.md
deleted file mode 100644
index 184152c0..00000000
--- a/vendor/nette/utils/contributing.md
+++ /dev/null
@@ -1,33 +0,0 @@
-How to contribute & use the issue tracker
-=========================================
-
-Nette welcomes your contributions. There are several ways to help out:
-
-* Create an issue on GitHub, if you have found a bug
-* Write test cases for open bug issues
-* Write fixes for open bug/feature issues, preferably with test cases included
-* Contribute to the [documentation](https://nette.org/en/writing)
-
-Issues
-------
-
-Please **do not use the issue tracker to ask questions**. We will be happy to help you
-on [Nette forum](https://forum.nette.org) or chat with us on [Gitter](https://gitter.im/nette/nette).
-
-A good bug report shouldn't leave others needing to chase you up for more
-information. Please try to be as detailed as possible in your report.
-
-**Feature requests** are welcome. But take a moment to find out whether your idea
-fits with the scope and aims of the project. It's up to *you* to make a strong
-case to convince the project's developers of the merits of this feature.
-
-Contributing
-------------
-
-If you'd like to contribute, please take a moment to read [the contributing guide](https://nette.org/en/contributing).
-
-The best way to propose a feature is to discuss your ideas on [Nette forum](https://forum.nette.org) before implementing them.
-
-Please do not fix whitespace, format code, or make a purely cosmetic patch.
-
-Thanks! :heart:
diff --git a/vendor/nette/utils/license.md b/vendor/nette/utils/license.md
deleted file mode 100644
index cf741bd0..00000000
--- a/vendor/nette/utils/license.md
+++ /dev/null
@@ -1,60 +0,0 @@
-Licenses
-========
-
-Good news! You may use Nette Framework under the terms of either
-the New BSD License or the GNU General Public License (GPL) version 2 or 3.
-
-The BSD License is recommended for most projects. It is easy to understand and it
-places almost no restrictions on what you can do with the framework. If the GPL
-fits better to your project, you can use the framework under this license.
-
-You don't have to notify anyone which license you are using. You can freely
-use Nette Framework in commercial projects as long as the copyright header
-remains intact.
-
-Please be advised that the name "Nette Framework" is a protected trademark and its
-usage has some limitations. So please do not use word "Nette" in the name of your
-project or top-level domain, and choose a name that stands on its own merits.
-If your stuff is good, it will not take long to establish a reputation for yourselves.
-
-
-New BSD License
----------------
-
-Copyright (c) 2004, 2014 David Grudl (https://davidgrudl.com)
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- * Neither the name of "Nette Framework" nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-This software is provided by the copyright holders and contributors "as is" and
-any express or implied warranties, including, but not limited to, the implied
-warranties of merchantability and fitness for a particular purpose are
-disclaimed. In no event shall the copyright owner or contributors be liable for
-any direct, indirect, incidental, special, exemplary, or consequential damages
-(including, but not limited to, procurement of substitute goods or services;
-loss of use, data, or profits; or business interruption) however caused and on
-any theory of liability, whether in contract, strict liability, or tort
-(including negligence or otherwise) arising in any way out of the use of this
-software, even if advised of the possibility of such damage.
-
-
-GNU General Public License
---------------------------
-
-GPL licenses are very very long, so instead of including them here we offer
-you URLs with full text:
-
-- [GPL version 2](http://www.gnu.org/licenses/gpl-2.0.html)
-- [GPL version 3](http://www.gnu.org/licenses/gpl-3.0.html)
diff --git a/vendor/nette/utils/readme.md b/vendor/nette/utils/readme.md
deleted file mode 100644
index 81ed0e91..00000000
--- a/vendor/nette/utils/readme.md
+++ /dev/null
@@ -1,54 +0,0 @@
-Nette Utility Classes
-=====================
-
-[](https://packagist.org/packages/nette/utils)
-[](https://github.com/nette/utils/actions)
-[](https://coveralls.io/github/nette/utils?branch=master)
-[](https://github.com/nette/utils/releases)
-[](https://github.com/nette/utils/blob/master/license.md)
-
-
-Introduction
-------------
-
-In package nette/utils you will find a set of [useful classes](https://doc.nette.org/utils) for everyday use:
-
-- [Arrays](https://doc.nette.org/arrays) - manipulate arrays
-- [Callback](https://doc.nette.org/callback) - PHP callbacks
-- [Date and Time](https://doc.nette.org/datetime) - modify times and dates
-- [Filesystem](https://doc.nette.org/filesystem) - copying, renaming, …
-- [Helper Functions](https://doc.nette.org/helpers)
-- [HTML elements](https://doc.nette.org/html-elements) - generate HTML
-- [Images](https://doc.nette.org/images) - crop, resize, rotate images
-- [JSON](https://doc.nette.org/json) - encoding and decoding
-- [Generating Random Strings](https://doc.nette.org/random)
-- [Paginator](https://doc.nette.org/paginator) - pagination math
-- [PHP Reflection](https://doc.nette.org/reflection)
-- [Strings](https://doc.nette.org/strings) - useful text functions
-- [SmartObject](https://doc.nette.org/smartobject) - PHP object enhancements
-- [Validation](https://doc.nette.org/validators) - validate inputs
-- [Type](https://doc.nette.org/type) - PHP data type
-
-
-Installation
-------------
-
-The recommended way to install is via Composer:
-
-```
-composer require nette/utils
-```
-
-- Nette Utils 3.2 is compatible with PHP 7.2 to 8.1
-- Nette Utils 3.1 is compatible with PHP 7.1 to 8.0
-- Nette Utils 3.0 is compatible with PHP 7.1 to 8.0
-- Nette Utils 2.5 is compatible with PHP 5.6 to 8.0
-
-[Support Me](https://github.com/sponsors/dg)
---------------------------------------------
-
-Do you like Nette Utils? Are you looking forward to the new features?
-
-[](https://github.com/sponsors/dg)
-
-Thank you!
diff --git a/vendor/nette/utils/src/HtmlStringable.php b/vendor/nette/utils/src/HtmlStringable.php
deleted file mode 100644
index d749d4ee..00000000
--- a/vendor/nette/utils/src/HtmlStringable.php
+++ /dev/null
@@ -1,22 +0,0 @@
-getIterator();
- } while ($iterator instanceof \IteratorAggregate);
- assert($iterator instanceof \Iterator);
-
- } elseif ($iterator instanceof \Iterator) {
- } elseif ($iterator instanceof \Traversable) {
- $iterator = new \IteratorIterator($iterator);
- } else {
- throw new Nette\InvalidArgumentException(sprintf('Invalid argument passed to %s; array or Traversable expected, %s given.', self::class, is_object($iterator) ? get_class($iterator) : gettype($iterator)));
- }
-
- parent::__construct($iterator, 0);
- }
-
-
- /**
- * Is the current element the first one?
- */
- public function isFirst(int $gridWidth = null): bool
- {
- return $this->counter === 1 || ($gridWidth && $this->counter !== 0 && (($this->counter - 1) % $gridWidth) === 0);
- }
-
-
- /**
- * Is the current element the last one?
- */
- public function isLast(int $gridWidth = null): bool
- {
- return !$this->hasNext() || ($gridWidth && ($this->counter % $gridWidth) === 0);
- }
-
-
- /**
- * Is the iterator empty?
- */
- public function isEmpty(): bool
- {
- return $this->counter === 0;
- }
-
-
- /**
- * Is the counter odd?
- */
- public function isOdd(): bool
- {
- return $this->counter % 2 === 1;
- }
-
-
- /**
- * Is the counter even?
- */
- public function isEven(): bool
- {
- return $this->counter % 2 === 0;
- }
-
-
- /**
- * Returns the counter.
- */
- public function getCounter(): int
- {
- return $this->counter;
- }
-
-
- /**
- * Returns the count of elements.
- */
- public function count(): int
- {
- $inner = $this->getInnerIterator();
- if ($inner instanceof \Countable) {
- return $inner->count();
-
- } else {
- throw new Nette\NotSupportedException('Iterator is not countable.');
- }
- }
-
-
- /**
- * Forwards to the next element.
- */
- public function next(): void
- {
- parent::next();
- if (parent::valid()) {
- $this->counter++;
- }
- }
-
-
- /**
- * Rewinds the Iterator.
- */
- public function rewind(): void
- {
- parent::rewind();
- $this->counter = parent::valid() ? 1 : 0;
- }
-
-
- /**
- * Returns the next key.
- * @return mixed
- */
- public function getNextKey()
- {
- return $this->getInnerIterator()->key();
- }
-
-
- /**
- * Returns the next element.
- * @return mixed
- */
- public function getNextValue()
- {
- return $this->getInnerIterator()->current();
- }
-}
diff --git a/vendor/nette/utils/src/Iterators/Mapper.php b/vendor/nette/utils/src/Iterators/Mapper.php
deleted file mode 100644
index 1a8647c6..00000000
--- a/vendor/nette/utils/src/Iterators/Mapper.php
+++ /dev/null
@@ -1,35 +0,0 @@
-callback = $callback;
- }
-
-
- #[\ReturnTypeWillChange]
- public function current()
- {
- return ($this->callback)(parent::current(), parent::key());
- }
-}
diff --git a/vendor/nette/utils/src/SmartObject.php b/vendor/nette/utils/src/SmartObject.php
deleted file mode 100644
index 2128fdfd..00000000
--- a/vendor/nette/utils/src/SmartObject.php
+++ /dev/null
@@ -1,122 +0,0 @@
-$name ?? null;
- if (is_iterable($handlers)) {
- foreach ($handlers as $handler) {
- $handler(...$args);
- }
- } elseif ($handlers !== null) {
- throw new UnexpectedValueException("Property $class::$$name must be iterable or null, " . gettype($handlers) . ' given.');
- }
-
- } else {
- ObjectHelpers::strictCall($class, $name);
- }
- }
-
-
- /**
- * @throws MemberAccessException
- */
- public static function __callStatic(string $name, array $args)
- {
- ObjectHelpers::strictStaticCall(static::class, $name);
- }
-
-
- /**
- * @return mixed
- * @throws MemberAccessException if the property is not defined.
- */
- public function &__get(string $name)
- {
- $class = static::class;
-
- if ($prop = ObjectHelpers::getMagicProperties($class)[$name] ?? null) { // property getter
- if (!($prop & 0b0001)) {
- throw new MemberAccessException("Cannot read a write-only property $class::\$$name.");
- }
- $m = ($prop & 0b0010 ? 'get' : 'is') . $name;
- if ($prop & 0b0100) { // return by reference
- return $this->$m();
- } else {
- $val = $this->$m();
- return $val;
- }
- } else {
- ObjectHelpers::strictGet($class, $name);
- }
- }
-
-
- /**
- * @param mixed $value
- * @return void
- * @throws MemberAccessException if the property is not defined or is read-only
- */
- public function __set(string $name, $value)
- {
- $class = static::class;
-
- if (ObjectHelpers::hasProperty($class, $name)) { // unsetted property
- $this->$name = $value;
-
- } elseif ($prop = ObjectHelpers::getMagicProperties($class)[$name] ?? null) { // property setter
- if (!($prop & 0b1000)) {
- throw new MemberAccessException("Cannot write to a read-only property $class::\$$name.");
- }
- $this->{'set' . $name}($value);
-
- } else {
- ObjectHelpers::strictSet($class, $name);
- }
- }
-
-
- /**
- * @return void
- * @throws MemberAccessException
- */
- public function __unset(string $name)
- {
- $class = static::class;
- if (!ObjectHelpers::hasProperty($class, $name)) {
- throw new MemberAccessException("Cannot unset the property $class::\$$name.");
- }
- }
-
-
- public function __isset(string $name): bool
- {
- return isset(ObjectHelpers::getMagicProperties(static::class)[$name]);
- }
-}
diff --git a/vendor/nette/utils/src/StaticClass.php b/vendor/nette/utils/src/StaticClass.php
deleted file mode 100644
index b60f98c2..00000000
--- a/vendor/nette/utils/src/StaticClass.php
+++ /dev/null
@@ -1,34 +0,0 @@
- $array
- * @return static
- */
- public static function from(array $array, bool $recursive = true)
- {
- $obj = new static;
- foreach ($array as $key => $value) {
- $obj->$key = $recursive && is_array($value)
- ? static::from($value, true)
- : $value;
- }
- return $obj;
- }
-
-
- /**
- * Returns an iterator over all items.
- * @return \RecursiveArrayIterator
- */
- public function getIterator(): \RecursiveArrayIterator
- {
- return new \RecursiveArrayIterator((array) $this);
- }
-
-
- /**
- * Returns items count.
- */
- public function count(): int
- {
- return count((array) $this);
- }
-
-
- /**
- * Replaces or appends a item.
- * @param string|int $key
- * @param T $value
- */
- public function offsetSet($key, $value): void
- {
- if (!is_scalar($key)) { // prevents null
- throw new Nette\InvalidArgumentException(sprintf('Key must be either a string or an integer, %s given.', gettype($key)));
- }
- $this->$key = $value;
- }
-
-
- /**
- * Returns a item.
- * @param string|int $key
- * @return T
- */
- #[\ReturnTypeWillChange]
- public function offsetGet($key)
- {
- return $this->$key;
- }
-
-
- /**
- * Determines whether a item exists.
- * @param string|int $key
- */
- public function offsetExists($key): bool
- {
- return isset($this->$key);
- }
-
-
- /**
- * Removes the element from this list.
- * @param string|int $key
- */
- public function offsetUnset($key): void
- {
- unset($this->$key);
- }
-}
diff --git a/vendor/nette/utils/src/Utils/ArrayList.php b/vendor/nette/utils/src/Utils/ArrayList.php
deleted file mode 100644
index 0a694652..00000000
--- a/vendor/nette/utils/src/Utils/ArrayList.php
+++ /dev/null
@@ -1,132 +0,0 @@
- $array
- * @return static
- */
- public static function from(array $array)
- {
- if (!Arrays::isList($array)) {
- throw new Nette\InvalidArgumentException('Array is not valid list.');
- }
- $obj = new static;
- $obj->list = $array;
- return $obj;
- }
-
-
- /**
- * Returns an iterator over all items.
- * @return \ArrayIterator
- */
- public function getIterator(): \ArrayIterator
- {
- return new \ArrayIterator($this->list);
- }
-
-
- /**
- * Returns items count.
- */
- public function count(): int
- {
- return count($this->list);
- }
-
-
- /**
- * Replaces or appends a item.
- * @param int|null $index
- * @param T $value
- * @throws Nette\OutOfRangeException
- */
- public function offsetSet($index, $value): void
- {
- if ($index === null) {
- $this->list[] = $value;
-
- } elseif (!is_int($index) || $index < 0 || $index >= count($this->list)) {
- throw new Nette\OutOfRangeException('Offset invalid or out of range');
-
- } else {
- $this->list[$index] = $value;
- }
- }
-
-
- /**
- * Returns a item.
- * @param int $index
- * @return T
- * @throws Nette\OutOfRangeException
- */
- #[\ReturnTypeWillChange]
- public function offsetGet($index)
- {
- if (!is_int($index) || $index < 0 || $index >= count($this->list)) {
- throw new Nette\OutOfRangeException('Offset invalid or out of range');
- }
- return $this->list[$index];
- }
-
-
- /**
- * Determines whether a item exists.
- * @param int $index
- */
- public function offsetExists($index): bool
- {
- return is_int($index) && $index >= 0 && $index < count($this->list);
- }
-
-
- /**
- * Removes the element at the specified position in this list.
- * @param int $index
- * @throws Nette\OutOfRangeException
- */
- public function offsetUnset($index): void
- {
- if (!is_int($index) || $index < 0 || $index >= count($this->list)) {
- throw new Nette\OutOfRangeException('Offset invalid or out of range');
- }
- array_splice($this->list, $index, 1);
- }
-
-
- /**
- * Prepends a item.
- * @param T $value
- */
- public function prepend($value): void
- {
- $first = array_slice($this->list, 0, 1);
- $this->offsetSet(0, $value);
- array_splice($this->list, 1, 0, $first);
- }
-}
diff --git a/vendor/nette/utils/src/Utils/Arrays.php b/vendor/nette/utils/src/Utils/Arrays.php
deleted file mode 100644
index 775b6517..00000000
--- a/vendor/nette/utils/src/Utils/Arrays.php
+++ /dev/null
@@ -1,438 +0,0 @@
- $array
- * @param array-key|array-key[] $key
- * @param ?T $default
- * @return ?T
- * @throws Nette\InvalidArgumentException if item does not exist and default value is not provided
- */
- public static function get(array $array, $key, $default = null)
- {
- foreach (is_array($key) ? $key : [$key] as $k) {
- if (is_array($array) && array_key_exists($k, $array)) {
- $array = $array[$k];
- } else {
- if (func_num_args() < 3) {
- throw new Nette\InvalidArgumentException("Missing item '$k'.");
- }
- return $default;
- }
- }
- return $array;
- }
-
-
- /**
- * Returns reference to array item. If the index does not exist, new one is created with value null.
- * @template T
- * @param array $array
- * @param array-key|array-key[] $key
- * @return ?T
- * @throws Nette\InvalidArgumentException if traversed item is not an array
- */
- public static function &getRef(array &$array, $key)
- {
- foreach (is_array($key) ? $key : [$key] as $k) {
- if (is_array($array) || $array === null) {
- $array = &$array[$k];
- } else {
- throw new Nette\InvalidArgumentException('Traversed item is not an array.');
- }
- }
- return $array;
- }
-
-
- /**
- * Recursively merges two fields. It is useful, for example, for merging tree structures. It behaves as
- * the + operator for array, ie. it adds a key/value pair from the second array to the first one and retains
- * the value from the first array in the case of a key collision.
- * @template T1
- * @template T2
- * @param array $array1
- * @param array $array2
- * @return array
- */
- public static function mergeTree(array $array1, array $array2): array
- {
- $res = $array1 + $array2;
- foreach (array_intersect_key($array1, $array2) as $k => $v) {
- if (is_array($v) && is_array($array2[$k])) {
- $res[$k] = self::mergeTree($v, $array2[$k]);
- }
- }
- return $res;
- }
-
-
- /**
- * Returns zero-indexed position of given array key. Returns null if key is not found.
- * @param array-key $key
- * @return int|null offset if it is found, null otherwise
- */
- public static function getKeyOffset(array $array, $key): ?int
- {
- return Helpers::falseToNull(array_search(self::toKey($key), array_keys($array), true));
- }
-
-
- /**
- * @deprecated use getKeyOffset()
- */
- public static function searchKey(array $array, $key): ?int
- {
- return self::getKeyOffset($array, $key);
- }
-
-
- /**
- * Tests an array for the presence of value.
- * @param mixed $value
- */
- public static function contains(array $array, $value): bool
- {
- return in_array($value, $array, true);
- }
-
-
- /**
- * Returns the first item from the array or null if array is empty.
- * @template T
- * @param array $array
- * @return ?T
- */
- public static function first(array $array)
- {
- return count($array) ? reset($array) : null;
- }
-
-
- /**
- * Returns the last item from the array or null if array is empty.
- * @template T
- * @param array $array
- * @return ?T
- */
- public static function last(array $array)
- {
- return count($array) ? end($array) : null;
- }
-
-
- /**
- * Inserts the contents of the $inserted array into the $array immediately after the $key.
- * If $key is null (or does not exist), it is inserted at the beginning.
- * @param array-key|null $key
- */
- public static function insertBefore(array &$array, $key, array $inserted): void
- {
- $offset = $key === null ? 0 : (int) self::getKeyOffset($array, $key);
- $array = array_slice($array, 0, $offset, true)
- + $inserted
- + array_slice($array, $offset, count($array), true);
- }
-
-
- /**
- * Inserts the contents of the $inserted array into the $array before the $key.
- * If $key is null (or does not exist), it is inserted at the end.
- * @param array-key|null $key
- */
- public static function insertAfter(array &$array, $key, array $inserted): void
- {
- if ($key === null || ($offset = self::getKeyOffset($array, $key)) === null) {
- $offset = count($array) - 1;
- }
- $array = array_slice($array, 0, $offset + 1, true)
- + $inserted
- + array_slice($array, $offset + 1, count($array), true);
- }
-
-
- /**
- * Renames key in array.
- * @param array-key $oldKey
- * @param array-key $newKey
- */
- public static function renameKey(array &$array, $oldKey, $newKey): bool
- {
- $offset = self::getKeyOffset($array, $oldKey);
- if ($offset === null) {
- return false;
- }
- $val = &$array[$oldKey];
- $keys = array_keys($array);
- $keys[$offset] = $newKey;
- $array = array_combine($keys, $array);
- $array[$newKey] = &$val;
- return true;
- }
-
-
- /**
- * Returns only those array items, which matches a regular expression $pattern.
- * @param string[] $array
- * @return string[]
- */
- public static function grep(array $array, string $pattern, int $flags = 0): array
- {
- return Strings::pcre('preg_grep', [$pattern, $array, $flags]);
- }
-
-
- /**
- * Transforms multidimensional array to flat array.
- */
- public static function flatten(array $array, bool $preserveKeys = false): array
- {
- $res = [];
- $cb = $preserveKeys
- ? function ($v, $k) use (&$res): void { $res[$k] = $v; }
- : function ($v) use (&$res): void { $res[] = $v; };
- array_walk_recursive($array, $cb);
- return $res;
- }
-
-
- /**
- * Checks if the array is indexed in ascending order of numeric keys from zero, a.k.a list.
- * @param mixed $value
- */
- public static function isList($value): bool
- {
- return is_array($value) && (!$value || array_keys($value) === range(0, count($value) - 1));
- }
-
-
- /**
- * Reformats table to associative tree. Path looks like 'field|field[]field->field=field'.
- * @param string|string[] $path
- * @return array|\stdClass
- */
- public static function associate(array $array, $path)
- {
- $parts = is_array($path)
- ? $path
- : preg_split('#(\[\]|->|=|\|)#', $path, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
-
- if (!$parts || $parts === ['->'] || $parts[0] === '=' || $parts[0] === '|') {
- throw new Nette\InvalidArgumentException("Invalid path '$path'.");
- }
-
- $res = $parts[0] === '->' ? new \stdClass : [];
-
- foreach ($array as $rowOrig) {
- $row = (array) $rowOrig;
- $x = &$res;
-
- for ($i = 0; $i < count($parts); $i++) {
- $part = $parts[$i];
- if ($part === '[]') {
- $x = &$x[];
-
- } elseif ($part === '=') {
- if (isset($parts[++$i])) {
- $x = $row[$parts[$i]];
- $row = null;
- }
-
- } elseif ($part === '->') {
- if (isset($parts[++$i])) {
- if ($x === null) {
- $x = new \stdClass;
- }
- $x = &$x->{$row[$parts[$i]]};
- } else {
- $row = is_object($rowOrig) ? $rowOrig : (object) $row;
- }
-
- } elseif ($part !== '|') {
- $x = &$x[(string) $row[$part]];
- }
- }
-
- if ($x === null) {
- $x = $row;
- }
- }
-
- return $res;
- }
-
-
- /**
- * Normalizes array to associative array. Replace numeric keys with their values, the new value will be $filling.
- * @param mixed $filling
- */
- public static function normalize(array $array, $filling = null): array
- {
- $res = [];
- foreach ($array as $k => $v) {
- $res[is_int($k) ? $v : $k] = is_int($k) ? $filling : $v;
- }
- return $res;
- }
-
-
- /**
- * Returns and removes the value of an item from an array. If it does not exist, it throws an exception,
- * or returns $default, if provided.
- * @template T
- * @param array $array
- * @param array-key $key
- * @param ?T $default
- * @return ?T
- * @throws Nette\InvalidArgumentException if item does not exist and default value is not provided
- */
- public static function pick(array &$array, $key, $default = null)
- {
- if (array_key_exists($key, $array)) {
- $value = $array[$key];
- unset($array[$key]);
- return $value;
-
- } elseif (func_num_args() < 3) {
- throw new Nette\InvalidArgumentException("Missing item '$key'.");
-
- } else {
- return $default;
- }
- }
-
-
- /**
- * Tests whether at least one element in the array passes the test implemented by the
- * provided callback with signature `function ($value, $key, array $array): bool`.
- */
- public static function some(iterable $array, callable $callback): bool
- {
- foreach ($array as $k => $v) {
- if ($callback($v, $k, $array)) {
- return true;
- }
- }
- return false;
- }
-
-
- /**
- * Tests whether all elements in the array pass the test implemented by the provided function,
- * which has the signature `function ($value, $key, array $array): bool`.
- */
- public static function every(iterable $array, callable $callback): bool
- {
- foreach ($array as $k => $v) {
- if (!$callback($v, $k, $array)) {
- return false;
- }
- }
- return true;
- }
-
-
- /**
- * Calls $callback on all elements in the array and returns the array of return values.
- * The callback has the signature `function ($value, $key, array $array): bool`.
- */
- public static function map(iterable $array, callable $callback): array
- {
- $res = [];
- foreach ($array as $k => $v) {
- $res[$k] = $callback($v, $k, $array);
- }
- return $res;
- }
-
-
- /**
- * Invokes all callbacks and returns array of results.
- * @param callable[] $callbacks
- */
- public static function invoke(iterable $callbacks, ...$args): array
- {
- $res = [];
- foreach ($callbacks as $k => $cb) {
- $res[$k] = $cb(...$args);
- }
- return $res;
- }
-
-
- /**
- * Invokes method on every object in an array and returns array of results.
- * @param object[] $objects
- */
- public static function invokeMethod(iterable $objects, string $method, ...$args): array
- {
- $res = [];
- foreach ($objects as $k => $obj) {
- $res[$k] = $obj->$method(...$args);
- }
- return $res;
- }
-
-
- /**
- * Copies the elements of the $array array to the $object object and then returns it.
- * @template T of object
- * @param T $object
- * @return T
- */
- public static function toObject(iterable $array, $object)
- {
- foreach ($array as $k => $v) {
- $object->$k = $v;
- }
- return $object;
- }
-
-
- /**
- * Converts value to array key.
- * @param mixed $value
- * @return array-key
- */
- public static function toKey($value)
- {
- return key([$value => null]);
- }
-
-
- /**
- * Returns copy of the $array where every item is converted to string
- * and prefixed by $prefix and suffixed by $suffix.
- * @param string[] $array
- * @return string[]
- */
- public static function wrap(array $array, string $prefix = '', string $suffix = ''): array
- {
- $res = [];
- foreach ($array as $k => $v) {
- $res[$k] = $prefix . $v . $suffix;
- }
- return $res;
- }
-}
diff --git a/vendor/nette/utils/src/Utils/Callback.php b/vendor/nette/utils/src/Utils/Callback.php
deleted file mode 100644
index 73d5cecd..00000000
--- a/vendor/nette/utils/src/Utils/Callback.php
+++ /dev/null
@@ -1,181 +0,0 @@
-getMessage());
- }
- }
-
-
- /**
- * Invokes callback.
- * @return mixed
- * @deprecated
- */
- public static function invoke($callable, ...$args)
- {
- trigger_error(__METHOD__ . '() is deprecated, use native invoking.', E_USER_DEPRECATED);
- self::check($callable);
- return $callable(...$args);
- }
-
-
- /**
- * Invokes callback with an array of parameters.
- * @return mixed
- * @deprecated
- */
- public static function invokeArgs($callable, array $args = [])
- {
- trigger_error(__METHOD__ . '() is deprecated, use native invoking.', E_USER_DEPRECATED);
- self::check($callable);
- return $callable(...$args);
- }
-
-
- /**
- * Invokes internal PHP function with own error handler.
- * @return mixed
- */
- public static function invokeSafe(string $function, array $args, callable $onError)
- {
- $prev = set_error_handler(function ($severity, $message, $file) use ($onError, &$prev, $function): ?bool {
- if ($file === __FILE__) {
- $msg = ini_get('html_errors')
- ? Html::htmlToText($message)
- : $message;
- $msg = preg_replace("#^$function\\(.*?\\): #", '', $msg);
- if ($onError($msg, $severity) !== false) {
- return null;
- }
- }
- return $prev ? $prev(...func_get_args()) : false;
- });
-
- try {
- return $function(...$args);
- } finally {
- restore_error_handler();
- }
- }
-
-
- /**
- * Checks that $callable is valid PHP callback. Otherwise throws exception. If the $syntax is set to true, only verifies
- * that $callable has a valid structure to be used as a callback, but does not verify if the class or method actually exists.
- * @param mixed $callable
- * @return callable
- * @throws Nette\InvalidArgumentException
- */
- public static function check($callable, bool $syntax = false)
- {
- if (!is_callable($callable, $syntax)) {
- throw new Nette\InvalidArgumentException(
- $syntax
- ? 'Given value is not a callable type.'
- : sprintf("Callback '%s' is not callable.", self::toString($callable))
- );
- }
- return $callable;
- }
-
-
- /**
- * Converts PHP callback to textual form. Class or method may not exists.
- * @param mixed $callable
- */
- public static function toString($callable): string
- {
- if ($callable instanceof \Closure) {
- $inner = self::unwrap($callable);
- return '{closure' . ($inner instanceof \Closure ? '}' : ' ' . self::toString($inner) . '}');
- } elseif (is_string($callable) && $callable[0] === "\0") {
- return '{lambda}';
- } else {
- is_callable(is_object($callable) ? [$callable, '__invoke'] : $callable, true, $textual);
- return $textual;
- }
- }
-
-
- /**
- * Returns reflection for method or function used in PHP callback.
- * @param callable $callable type check is escalated to ReflectionException
- * @return \ReflectionMethod|\ReflectionFunction
- * @throws \ReflectionException if callback is not valid
- */
- public static function toReflection($callable): \ReflectionFunctionAbstract
- {
- if ($callable instanceof \Closure) {
- $callable = self::unwrap($callable);
- }
-
- if (is_string($callable) && strpos($callable, '::')) {
- return new \ReflectionMethod($callable);
- } elseif (is_array($callable)) {
- return new \ReflectionMethod($callable[0], $callable[1]);
- } elseif (is_object($callable) && !$callable instanceof \Closure) {
- return new \ReflectionMethod($callable, '__invoke');
- } else {
- return new \ReflectionFunction($callable);
- }
- }
-
-
- /**
- * Checks whether PHP callback is function or static method.
- */
- public static function isStatic(callable $callable): bool
- {
- return is_array($callable) ? is_string($callable[0]) : is_string($callable);
- }
-
-
- /**
- * Unwraps closure created by Closure::fromCallable().
- */
- public static function unwrap(\Closure $closure): callable
- {
- $r = new \ReflectionFunction($closure);
- if (substr($r->name, -1) === '}') {
- return $closure;
-
- } elseif ($obj = $r->getClosureThis()) {
- return [$obj, $r->name];
-
- } elseif ($class = $r->getClosureScopeClass()) {
- return [$class->name, $r->name];
-
- } else {
- return $r->name;
- }
- }
-}
diff --git a/vendor/nette/utils/src/Utils/DateTime.php b/vendor/nette/utils/src/Utils/DateTime.php
deleted file mode 100644
index 320ccc77..00000000
--- a/vendor/nette/utils/src/Utils/DateTime.php
+++ /dev/null
@@ -1,145 +0,0 @@
-format('Y-m-d H:i:s.u'), $time->getTimezone());
-
- } elseif (is_numeric($time)) {
- if ($time <= self::YEAR) {
- $time += time();
- }
- return (new static('@' . $time))->setTimezone(new \DateTimeZone(date_default_timezone_get()));
-
- } else { // textual or null
- return new static((string) $time);
- }
- }
-
-
- /**
- * Creates DateTime object.
- * @return static
- * @throws Nette\InvalidArgumentException if the date and time are not valid.
- */
- public static function fromParts(
- int $year,
- int $month,
- int $day,
- int $hour = 0,
- int $minute = 0,
- float $second = 0.0
- ) {
- $s = sprintf('%04d-%02d-%02d %02d:%02d:%02.5F', $year, $month, $day, $hour, $minute, $second);
- if (
- !checkdate($month, $day, $year)
- || $hour < 0
- || $hour > 23
- || $minute < 0
- || $minute > 59
- || $second < 0
- || $second >= 60
- ) {
- throw new Nette\InvalidArgumentException("Invalid date '$s'");
- }
- return new static($s);
- }
-
-
- /**
- * Returns new DateTime object formatted according to the specified format.
- * @param string $format The format the $time parameter should be in
- * @param string $time
- * @param string|\DateTimeZone $timezone (default timezone is used if null is passed)
- * @return static|false
- */
- #[\ReturnTypeWillChange]
- public static function createFromFormat($format, $time, $timezone = null)
- {
- if ($timezone === null) {
- $timezone = new \DateTimeZone(date_default_timezone_get());
-
- } elseif (is_string($timezone)) {
- $timezone = new \DateTimeZone($timezone);
-
- } elseif (!$timezone instanceof \DateTimeZone) {
- throw new Nette\InvalidArgumentException('Invalid timezone given');
- }
-
- $date = parent::createFromFormat($format, $time, $timezone);
- return $date ? static::from($date) : false;
- }
-
-
- /**
- * Returns JSON representation in ISO 8601 (used by JavaScript).
- */
- public function jsonSerialize(): string
- {
- return $this->format('c');
- }
-
-
- /**
- * Returns the date and time in the format 'Y-m-d H:i:s'.
- */
- public function __toString(): string
- {
- return $this->format('Y-m-d H:i:s');
- }
-
-
- /**
- * Creates a copy with a modified time.
- * @return static
- */
- public function modifyClone(string $modify = '')
- {
- $dolly = clone $this;
- return $modify ? $dolly->modify($modify) : $dolly;
- }
-}
diff --git a/vendor/nette/utils/src/Utils/FileSystem.php b/vendor/nette/utils/src/Utils/FileSystem.php
deleted file mode 100644
index 16d5ffd1..00000000
--- a/vendor/nette/utils/src/Utils/FileSystem.php
+++ /dev/null
@@ -1,210 +0,0 @@
-getPathname());
- }
- foreach ($iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($origin, \RecursiveDirectoryIterator::SKIP_DOTS), \RecursiveIteratorIterator::SELF_FIRST) as $item) {
- if ($item->isDir()) {
- static::createDir($target . '/' . $iterator->getSubPathName());
- } else {
- static::copy($item->getPathname(), $target . '/' . $iterator->getSubPathName());
- }
- }
-
- } else {
- static::createDir(dirname($target));
- if (
- ($s = @fopen($origin, 'rb'))
- && ($d = @fopen($target, 'wb'))
- && @stream_copy_to_stream($s, $d) === false
- ) { // @ is escalated to exception
- throw new Nette\IOException("Unable to copy file '$origin' to '$target'. " . Helpers::getLastError());
- }
- }
- }
-
-
- /**
- * Deletes a file or directory if exists.
- * @throws Nette\IOException on error occurred
- */
- public static function delete(string $path): void
- {
- if (is_file($path) || is_link($path)) {
- $func = DIRECTORY_SEPARATOR === '\\' && is_dir($path) ? 'rmdir' : 'unlink';
- if (!@$func($path)) { // @ is escalated to exception
- throw new Nette\IOException("Unable to delete '$path'. " . Helpers::getLastError());
- }
-
- } elseif (is_dir($path)) {
- foreach (new \FilesystemIterator($path) as $item) {
- static::delete($item->getPathname());
- }
- if (!@rmdir($path)) { // @ is escalated to exception
- throw new Nette\IOException("Unable to delete directory '$path'. " . Helpers::getLastError());
- }
- }
- }
-
-
- /**
- * Renames or moves a file or a directory. Overwrites existing files and directories by default.
- * @throws Nette\IOException on error occurred
- * @throws Nette\InvalidStateException if $overwrite is set to false and destination already exists
- */
- public static function rename(string $origin, string $target, bool $overwrite = true): void
- {
- if (!$overwrite && file_exists($target)) {
- throw new Nette\InvalidStateException("File or directory '$target' already exists.");
-
- } elseif (!file_exists($origin)) {
- throw new Nette\IOException("File or directory '$origin' not found.");
-
- } else {
- static::createDir(dirname($target));
- if (realpath($origin) !== realpath($target)) {
- static::delete($target);
- }
- if (!@rename($origin, $target)) { // @ is escalated to exception
- throw new Nette\IOException("Unable to rename file or directory '$origin' to '$target'. " . Helpers::getLastError());
- }
- }
- }
-
-
- /**
- * Reads the content of a file.
- * @throws Nette\IOException on error occurred
- */
- public static function read(string $file): string
- {
- $content = @file_get_contents($file); // @ is escalated to exception
- if ($content === false) {
- throw new Nette\IOException("Unable to read file '$file'. " . Helpers::getLastError());
- }
- return $content;
- }
-
-
- /**
- * Writes the string to a file.
- * @throws Nette\IOException on error occurred
- */
- public static function write(string $file, string $content, ?int $mode = 0666): void
- {
- static::createDir(dirname($file));
- if (@file_put_contents($file, $content) === false) { // @ is escalated to exception
- throw new Nette\IOException("Unable to write file '$file'. " . Helpers::getLastError());
- }
- if ($mode !== null && !@chmod($file, $mode)) { // @ is escalated to exception
- throw new Nette\IOException("Unable to chmod file '$file' to mode " . decoct($mode) . '. ' . Helpers::getLastError());
- }
- }
-
-
- /**
- * Fixes permissions to a specific file or directory. Directories can be fixed recursively.
- * @throws Nette\IOException on error occurred
- */
- public static function makeWritable(string $path, int $dirMode = 0777, int $fileMode = 0666): void
- {
- if (is_file($path)) {
- if (!@chmod($path, $fileMode)) { // @ is escalated to exception
- throw new Nette\IOException("Unable to chmod file '$path' to mode " . decoct($fileMode) . '. ' . Helpers::getLastError());
- }
- } elseif (is_dir($path)) {
- foreach (new \FilesystemIterator($path) as $item) {
- static::makeWritable($item->getPathname(), $dirMode, $fileMode);
- }
- if (!@chmod($path, $dirMode)) { // @ is escalated to exception
- throw new Nette\IOException("Unable to chmod directory '$path' to mode " . decoct($dirMode) . '. ' . Helpers::getLastError());
- }
- } else {
- throw new Nette\IOException("File or directory '$path' not found.");
- }
- }
-
-
- /**
- * Determines if the path is absolute.
- */
- public static function isAbsolute(string $path): bool
- {
- return (bool) preg_match('#([a-z]:)?[/\\\\]|[a-z][a-z0-9+.-]*://#Ai', $path);
- }
-
-
- /**
- * Normalizes `..` and `.` and directory separators in path.
- */
- public static function normalizePath(string $path): string
- {
- $parts = $path === '' ? [] : preg_split('~[/\\\\]+~', $path);
- $res = [];
- foreach ($parts as $part) {
- if ($part === '..' && $res && end($res) !== '..' && end($res) !== '') {
- array_pop($res);
- } elseif ($part !== '.') {
- $res[] = $part;
- }
- }
- return $res === ['']
- ? DIRECTORY_SEPARATOR
- : implode(DIRECTORY_SEPARATOR, $res);
- }
-
-
- /**
- * Joins all segments of the path and normalizes the result.
- */
- public static function joinPaths(string ...$paths): string
- {
- return self::normalizePath(implode('/', $paths));
- }
-}
diff --git a/vendor/nette/utils/src/Utils/Floats.php b/vendor/nette/utils/src/Utils/Floats.php
deleted file mode 100644
index b14be4d0..00000000
--- a/vendor/nette/utils/src/Utils/Floats.php
+++ /dev/null
@@ -1,107 +0,0 @@
- $b it returns 1
- * @throws \LogicException if one of parameters is NAN
- */
- public static function compare(float $a, float $b): int
- {
- if (is_nan($a) || is_nan($b)) {
- throw new \LogicException('Trying to compare NAN');
-
- } elseif (!is_finite($a) && !is_finite($b) && $a === $b) {
- return 0;
- }
-
- $diff = abs($a - $b);
- if (($diff < self::EPSILON || ($diff / max(abs($a), abs($b)) < self::EPSILON))) {
- return 0;
- }
-
- return $a < $b ? -1 : 1;
- }
-
-
- /**
- * Returns true if $a = $b
- * @throws \LogicException if one of parameters is NAN
- */
- public static function areEqual(float $a, float $b): bool
- {
- return self::compare($a, $b) === 0;
- }
-
-
- /**
- * Returns true if $a < $b
- * @throws \LogicException if one of parameters is NAN
- */
- public static function isLessThan(float $a, float $b): bool
- {
- return self::compare($a, $b) < 0;
- }
-
-
- /**
- * Returns true if $a <= $b
- * @throws \LogicException if one of parameters is NAN
- */
- public static function isLessThanOrEqualTo(float $a, float $b): bool
- {
- return self::compare($a, $b) <= 0;
- }
-
-
- /**
- * Returns true if $a > $b
- * @throws \LogicException if one of parameters is NAN
- */
- public static function isGreaterThan(float $a, float $b): bool
- {
- return self::compare($a, $b) > 0;
- }
-
-
- /**
- * Returns true if $a >= $b
- * @throws \LogicException if one of parameters is NAN
- */
- public static function isGreaterThanOrEqualTo(float $a, float $b): bool
- {
- return self::compare($a, $b) >= 0;
- }
-}
diff --git a/vendor/nette/utils/src/Utils/Helpers.php b/vendor/nette/utils/src/Utils/Helpers.php
deleted file mode 100644
index 57c058d0..00000000
--- a/vendor/nette/utils/src/Utils/Helpers.php
+++ /dev/null
@@ -1,71 +0,0 @@
- element's attributes */
- public $attrs = [];
-
- /** @var bool use XHTML syntax? */
- public static $xhtml = false;
-
- /** @var array void elements */
- public static $emptyElements = [
- 'img' => 1, 'hr' => 1, 'br' => 1, 'input' => 1, 'meta' => 1, 'area' => 1, 'embed' => 1, 'keygen' => 1,
- 'source' => 1, 'base' => 1, 'col' => 1, 'link' => 1, 'param' => 1, 'basefont' => 1, 'frame' => 1,
- 'isindex' => 1, 'wbr' => 1, 'command' => 1, 'track' => 1,
- ];
-
- /** @var array nodes */
- protected $children = [];
-
- /** @var string element's name */
- private $name;
-
- /** @var bool is element empty? */
- private $isEmpty;
-
-
- /**
- * Constructs new HTML element.
- * @param array|string $attrs element's attributes or plain text content
- * @return static
- */
- public static function el(string $name = null, $attrs = null)
- {
- $el = new static;
- $parts = explode(' ', (string) $name, 2);
- $el->setName($parts[0]);
-
- if (is_array($attrs)) {
- $el->attrs = $attrs;
-
- } elseif ($attrs !== null) {
- $el->setText($attrs);
- }
-
- if (isset($parts[1])) {
- foreach (Strings::matchAll($parts[1] . ' ', '#([a-z0-9:-]+)(?:=(["\'])?(.*?)(?(2)\2|\s))?#i') as $m) {
- $el->attrs[$m[1]] = $m[3] ?? true;
- }
- }
-
- return $el;
- }
-
-
- /**
- * Returns an object representing HTML text.
- */
- public static function fromHtml(string $html): self
- {
- return (new static)->setHtml($html);
- }
-
-
- /**
- * Returns an object representing plain text.
- */
- public static function fromText(string $text): self
- {
- return (new static)->setText($text);
- }
-
-
- /**
- * Converts to HTML.
- */
- final public function toHtml(): string
- {
- return $this->render();
- }
-
-
- /**
- * Converts to plain text.
- */
- final public function toText(): string
- {
- return $this->getText();
- }
-
-
- /**
- * Converts given HTML code to plain text.
- */
- public static function htmlToText(string $html): string
- {
- return html_entity_decode(strip_tags($html), ENT_QUOTES | ENT_HTML5, 'UTF-8');
- }
-
-
- /**
- * Changes element's name.
- * @return static
- */
- final public function setName(string $name, bool $isEmpty = null)
- {
- $this->name = $name;
- $this->isEmpty = $isEmpty ?? isset(static::$emptyElements[$name]);
- return $this;
- }
-
-
- /**
- * Returns element's name.
- */
- final public function getName(): string
- {
- return $this->name;
- }
-
-
- /**
- * Is element empty?
- */
- final public function isEmpty(): bool
- {
- return $this->isEmpty;
- }
-
-
- /**
- * Sets multiple attributes.
- * @return static
- */
- public function addAttributes(array $attrs)
- {
- $this->attrs = array_merge($this->attrs, $attrs);
- return $this;
- }
-
-
- /**
- * Appends value to element's attribute.
- * @param mixed $value
- * @param mixed $option
- * @return static
- */
- public function appendAttribute(string $name, $value, $option = true)
- {
- if (is_array($value)) {
- $prev = isset($this->attrs[$name]) ? (array) $this->attrs[$name] : [];
- $this->attrs[$name] = $value + $prev;
-
- } elseif ((string) $value === '') {
- $tmp = &$this->attrs[$name]; // appending empty value? -> ignore, but ensure it exists
-
- } elseif (!isset($this->attrs[$name]) || is_array($this->attrs[$name])) { // needs array
- $this->attrs[$name][$value] = $option;
-
- } else {
- $this->attrs[$name] = [$this->attrs[$name] => true, $value => $option];
- }
- return $this;
- }
-
-
- /**
- * Sets element's attribute.
- * @param mixed $value
- * @return static
- */
- public function setAttribute(string $name, $value)
- {
- $this->attrs[$name] = $value;
- return $this;
- }
-
-
- /**
- * Returns element's attribute.
- * @return mixed
- */
- public function getAttribute(string $name)
- {
- return $this->attrs[$name] ?? null;
- }
-
-
- /**
- * Unsets element's attribute.
- * @return static
- */
- public function removeAttribute(string $name)
- {
- unset($this->attrs[$name]);
- return $this;
- }
-
-
- /**
- * Unsets element's attributes.
- * @return static
- */
- public function removeAttributes(array $attributes)
- {
- foreach ($attributes as $name) {
- unset($this->attrs[$name]);
- }
- return $this;
- }
-
-
- /**
- * Overloaded setter for element's attribute.
- * @param mixed $value
- */
- final public function __set(string $name, $value): void
- {
- $this->attrs[$name] = $value;
- }
-
-
- /**
- * Overloaded getter for element's attribute.
- * @return mixed
- */
- final public function &__get(string $name)
- {
- return $this->attrs[$name];
- }
-
-
- /**
- * Overloaded tester for element's attribute.
- */
- final public function __isset(string $name): bool
- {
- return isset($this->attrs[$name]);
- }
-
-
- /**
- * Overloaded unsetter for element's attribute.
- */
- final public function __unset(string $name): void
- {
- unset($this->attrs[$name]);
- }
-
-
- /**
- * Overloaded setter for element's attribute.
- * @return mixed
- */
- final public function __call(string $m, array $args)
- {
- $p = substr($m, 0, 3);
- if ($p === 'get' || $p === 'set' || $p === 'add') {
- $m = substr($m, 3);
- $m[0] = $m[0] | "\x20";
- if ($p === 'get') {
- return $this->attrs[$m] ?? null;
-
- } elseif ($p === 'add') {
- $args[] = true;
- }
- }
-
- if (count($args) === 0) { // invalid
-
- } elseif (count($args) === 1) { // set
- $this->attrs[$m] = $args[0];
-
- } else { // add
- $this->appendAttribute($m, $args[0], $args[1]);
- }
-
- return $this;
- }
-
-
- /**
- * Special setter for element's attribute.
- * @return static
- */
- final public function href(string $path, array $query = null)
- {
- if ($query) {
- $query = http_build_query($query, '', '&');
- if ($query !== '') {
- $path .= '?' . $query;
- }
- }
- $this->attrs['href'] = $path;
- return $this;
- }
-
-
- /**
- * Setter for data-* attributes. Booleans are converted to 'true' resp. 'false'.
- * @param mixed $value
- * @return static
- */
- public function data(string $name, $value = null)
- {
- if (func_num_args() === 1) {
- $this->attrs['data'] = $name;
- } else {
- $this->attrs["data-$name"] = is_bool($value)
- ? json_encode($value)
- : $value;
- }
- return $this;
- }
-
-
- /**
- * Sets element's HTML content.
- * @param HtmlStringable|string $html
- * @return static
- */
- final public function setHtml($html)
- {
- $this->children = [(string) $html];
- return $this;
- }
-
-
- /**
- * Returns element's HTML content.
- */
- final public function getHtml(): string
- {
- return implode('', $this->children);
- }
-
-
- /**
- * Sets element's textual content.
- * @param HtmlStringable|string|int|float $text
- * @return static
- */
- final public function setText($text)
- {
- if (!$text instanceof HtmlStringable) {
- $text = htmlspecialchars((string) $text, ENT_NOQUOTES, 'UTF-8');
- }
- $this->children = [(string) $text];
- return $this;
- }
-
-
- /**
- * Returns element's textual content.
- */
- final public function getText(): string
- {
- return self::htmlToText($this->getHtml());
- }
-
-
- /**
- * Adds new element's child.
- * @param HtmlStringable|string $child Html node or raw HTML string
- * @return static
- */
- final public function addHtml($child)
- {
- return $this->insert(null, $child);
- }
-
-
- /**
- * Appends plain-text string to element content.
- * @param HtmlStringable|string|int|float $text
- * @return static
- */
- public function addText($text)
- {
- if (!$text instanceof HtmlStringable) {
- $text = htmlspecialchars((string) $text, ENT_NOQUOTES, 'UTF-8');
- }
- return $this->insert(null, $text);
- }
-
-
- /**
- * Creates and adds a new Html child.
- * @param array|string $attrs element's attributes or raw HTML string
- * @return static created element
- */
- final public function create(string $name, $attrs = null)
- {
- $this->insert(null, $child = static::el($name, $attrs));
- return $child;
- }
-
-
- /**
- * Inserts child node.
- * @param HtmlStringable|string $child Html node or raw HTML string
- * @return static
- */
- public function insert(?int $index, $child, bool $replace = false)
- {
- $child = $child instanceof self ? $child : (string) $child;
- if ($index === null) { // append
- $this->children[] = $child;
-
- } else { // insert or replace
- array_splice($this->children, $index, $replace ? 1 : 0, [$child]);
- }
-
- return $this;
- }
-
-
- /**
- * Inserts (replaces) child node (\ArrayAccess implementation).
- * @param int|null $index position or null for appending
- * @param Html|string $child Html node or raw HTML string
- */
- final public function offsetSet($index, $child): void
- {
- $this->insert($index, $child, true);
- }
-
-
- /**
- * Returns child node (\ArrayAccess implementation).
- * @param int $index
- * @return HtmlStringable|string
- */
- #[\ReturnTypeWillChange]
- final public function offsetGet($index)
- {
- return $this->children[$index];
- }
-
-
- /**
- * Exists child node? (\ArrayAccess implementation).
- * @param int $index
- */
- final public function offsetExists($index): bool
- {
- return isset($this->children[$index]);
- }
-
-
- /**
- * Removes child node (\ArrayAccess implementation).
- * @param int $index
- */
- public function offsetUnset($index): void
- {
- if (isset($this->children[$index])) {
- array_splice($this->children, $index, 1);
- }
- }
-
-
- /**
- * Returns children count.
- */
- final public function count(): int
- {
- return count($this->children);
- }
-
-
- /**
- * Removes all children.
- */
- public function removeChildren(): void
- {
- $this->children = [];
- }
-
-
- /**
- * Iterates over elements.
- * @return \ArrayIterator
- */
- final public function getIterator(): \ArrayIterator
- {
- return new \ArrayIterator($this->children);
- }
-
-
- /**
- * Returns all children.
- */
- final public function getChildren(): array
- {
- return $this->children;
- }
-
-
- /**
- * Renders element's start tag, content and end tag.
- */
- final public function render(int $indent = null): string
- {
- $s = $this->startTag();
-
- if (!$this->isEmpty) {
- // add content
- if ($indent !== null) {
- $indent++;
- }
- foreach ($this->children as $child) {
- if ($child instanceof self) {
- $s .= $child->render($indent);
- } else {
- $s .= $child;
- }
- }
-
- // add end tag
- $s .= $this->endTag();
- }
-
- if ($indent !== null) {
- return "\n" . str_repeat("\t", $indent - 1) . $s . "\n" . str_repeat("\t", max(0, $indent - 2));
- }
- return $s;
- }
-
-
- final public function __toString(): string
- {
- try {
- return $this->render();
- } catch (\Throwable $e) {
- if (PHP_VERSION_ID >= 70400) {
- throw $e;
- }
- trigger_error('Exception in ' . __METHOD__ . "(): {$e->getMessage()} in {$e->getFile()}:{$e->getLine()}", E_USER_ERROR);
- return '';
- }
- }
-
-
- /**
- * Returns element's start tag.
- */
- final public function startTag(): string
- {
- return $this->name
- ? '<' . $this->name . $this->attributes() . (static::$xhtml && $this->isEmpty ? ' />' : '>')
- : '';
- }
-
-
- /**
- * Returns element's end tag.
- */
- final public function endTag(): string
- {
- return $this->name && !$this->isEmpty ? '' . $this->name . '>' : '';
- }
-
-
- /**
- * Returns element's attributes.
- * @internal
- */
- final public function attributes(): string
- {
- if (!is_array($this->attrs)) {
- return '';
- }
-
- $s = '';
- $attrs = $this->attrs;
- foreach ($attrs as $key => $value) {
- if ($value === null || $value === false) {
- continue;
-
- } elseif ($value === true) {
- if (static::$xhtml) {
- $s .= ' ' . $key . '="' . $key . '"';
- } else {
- $s .= ' ' . $key;
- }
- continue;
-
- } elseif (is_array($value)) {
- if (strncmp($key, 'data-', 5) === 0) {
- $value = Json::encode($value);
-
- } else {
- $tmp = null;
- foreach ($value as $k => $v) {
- if ($v != null) { // intentionally ==, skip nulls & empty string
- // composite 'style' vs. 'others'
- $tmp[] = $v === true
- ? $k
- : (is_string($k) ? $k . ':' . $v : $v);
- }
- }
- if ($tmp === null) {
- continue;
- }
-
- $value = implode($key === 'style' || !strncmp($key, 'on', 2) ? ';' : ' ', $tmp);
- }
-
- } elseif (is_float($value)) {
- $value = rtrim(rtrim(number_format($value, 10, '.', ''), '0'), '.');
-
- } else {
- $value = (string) $value;
- }
-
- $q = strpos($value, '"') === false ? '"' : "'";
- $s .= ' ' . $key . '=' . $q
- . str_replace(
- ['&', $q, '<'],
- ['&', $q === '"' ? '"' : ''', self::$xhtml ? '<' : '<'],
- $value
- )
- . (strpos($value, '`') !== false && strpbrk($value, ' <>"\'') === false ? ' ' : '')
- . $q;
- }
-
- $s = str_replace('@', '@', $s);
- return $s;
- }
-
-
- /**
- * Clones all children too.
- */
- public function __clone()
- {
- foreach ($this->children as $key => $value) {
- if (is_object($value)) {
- $this->children[$key] = clone $value;
- }
- }
- }
-}
diff --git a/vendor/nette/utils/src/Utils/Image.php b/vendor/nette/utils/src/Utils/Image.php
deleted file mode 100644
index 1c305714..00000000
--- a/vendor/nette/utils/src/Utils/Image.php
+++ /dev/null
@@ -1,726 +0,0 @@
-
- * $image = Image::fromFile('nette.jpg');
- * $image->resize(150, 100);
- * $image->sharpen();
- * $image->send();
- *
- *
- * @method Image affine(array $affine, array $clip = null)
- * @method array affineMatrixConcat(array $m1, array $m2)
- * @method array affineMatrixGet(int $type, mixed $options = null)
- * @method void alphaBlending(bool $on)
- * @method void antialias(bool $on)
- * @method void arc($x, $y, $w, $h, $start, $end, $color)
- * @method void char(int $font, $x, $y, string $char, $color)
- * @method void charUp(int $font, $x, $y, string $char, $color)
- * @method int colorAllocate($red, $green, $blue)
- * @method int colorAllocateAlpha($red, $green, $blue, $alpha)
- * @method int colorAt($x, $y)
- * @method int colorClosest($red, $green, $blue)
- * @method int colorClosestAlpha($red, $green, $blue, $alpha)
- * @method int colorClosestHWB($red, $green, $blue)
- * @method void colorDeallocate($color)
- * @method int colorExact($red, $green, $blue)
- * @method int colorExactAlpha($red, $green, $blue, $alpha)
- * @method void colorMatch(Image $image2)
- * @method int colorResolve($red, $green, $blue)
- * @method int colorResolveAlpha($red, $green, $blue, $alpha)
- * @method void colorSet($index, $red, $green, $blue)
- * @method array colorsForIndex($index)
- * @method int colorsTotal()
- * @method int colorTransparent($color = null)
- * @method void convolution(array $matrix, float $div, float $offset)
- * @method void copy(Image $src, $dstX, $dstY, $srcX, $srcY, $srcW, $srcH)
- * @method void copyMerge(Image $src, $dstX, $dstY, $srcX, $srcY, $srcW, $srcH, $opacity)
- * @method void copyMergeGray(Image $src, $dstX, $dstY, $srcX, $srcY, $srcW, $srcH, $opacity)
- * @method void copyResampled(Image $src, $dstX, $dstY, $srcX, $srcY, $dstW, $dstH, $srcW, $srcH)
- * @method void copyResized(Image $src, $dstX, $dstY, $srcX, $srcY, $dstW, $dstH, $srcW, $srcH)
- * @method Image cropAuto(int $mode = -1, float $threshold = .5, int $color = -1)
- * @method void ellipse($cx, $cy, $w, $h, $color)
- * @method void fill($x, $y, $color)
- * @method void filledArc($cx, $cy, $w, $h, $s, $e, $color, $style)
- * @method void filledEllipse($cx, $cy, $w, $h, $color)
- * @method void filledPolygon(array $points, $numPoints, $color)
- * @method void filledRectangle($x1, $y1, $x2, $y2, $color)
- * @method void fillToBorder($x, $y, $border, $color)
- * @method void filter($filtertype)
- * @method void flip(int $mode)
- * @method array ftText($size, $angle, $x, $y, $col, string $fontFile, string $text, array $extrainfo = null)
- * @method void gammaCorrect(float $inputgamma, float $outputgamma)
- * @method array getClip()
- * @method int interlace($interlace = null)
- * @method bool isTrueColor()
- * @method void layerEffect($effect)
- * @method void line($x1, $y1, $x2, $y2, $color)
- * @method void openPolygon(array $points, int $num_points, int $color)
- * @method void paletteCopy(Image $source)
- * @method void paletteToTrueColor()
- * @method void polygon(array $points, $numPoints, $color)
- * @method array psText(string $text, $font, $size, $color, $backgroundColor, $x, $y, $space = null, $tightness = null, float $angle = null, $antialiasSteps = null)
- * @method void rectangle($x1, $y1, $x2, $y2, $col)
- * @method mixed resolution(int $res_x = null, int $res_y = null)
- * @method Image rotate(float $angle, $backgroundColor)
- * @method void saveAlpha(bool $saveflag)
- * @method Image scale(int $newWidth, int $newHeight = -1, int $mode = IMG_BILINEAR_FIXED)
- * @method void setBrush(Image $brush)
- * @method void setClip(int $x1, int $y1, int $x2, int $y2)
- * @method void setInterpolation(int $method = IMG_BILINEAR_FIXED)
- * @method void setPixel($x, $y, $color)
- * @method void setStyle(array $style)
- * @method void setThickness($thickness)
- * @method void setTile(Image $tile)
- * @method void string($font, $x, $y, string $s, $col)
- * @method void stringUp($font, $x, $y, string $s, $col)
- * @method void trueColorToPalette(bool $dither, $ncolors)
- * @method array ttfText($size, $angle, $x, $y, $color, string $fontfile, string $text)
- * @property-read int $width
- * @property-read int $height
- * @property-read resource|\GdImage $imageResource
- */
-class Image
-{
- use Nette\SmartObject;
-
- /** {@link resize()} only shrinks images */
- public const SHRINK_ONLY = 0b0001;
-
- /** {@link resize()} will ignore aspect ratio */
- public const STRETCH = 0b0010;
-
- /** {@link resize()} fits in given area so its dimensions are less than or equal to the required dimensions */
- public const FIT = 0b0000;
-
- /** {@link resize()} fills given area so its dimensions are greater than or equal to the required dimensions */
- public const FILL = 0b0100;
-
- /** {@link resize()} fills given area exactly */
- public const EXACT = 0b1000;
-
- /** image types */
- public const
- JPEG = IMAGETYPE_JPEG,
- PNG = IMAGETYPE_PNG,
- GIF = IMAGETYPE_GIF,
- WEBP = IMAGETYPE_WEBP,
- BMP = IMAGETYPE_BMP;
-
- public const EMPTY_GIF = "GIF89a\x01\x00\x01\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00!\xf9\x04\x01\x00\x00\x00\x00,\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02D\x01\x00;";
-
- private const FORMATS = [self::JPEG => 'jpeg', self::PNG => 'png', self::GIF => 'gif', self::WEBP => 'webp', self::BMP => 'bmp'];
-
- /** @var resource|\GdImage */
- private $image;
-
-
- /**
- * Returns RGB color (0..255) and transparency (0..127).
- */
- public static function rgb(int $red, int $green, int $blue, int $transparency = 0): array
- {
- return [
- 'red' => max(0, min(255, $red)),
- 'green' => max(0, min(255, $green)),
- 'blue' => max(0, min(255, $blue)),
- 'alpha' => max(0, min(127, $transparency)),
- ];
- }
-
-
- /**
- * Reads an image from a file and returns its type in $type.
- * @throws Nette\NotSupportedException if gd extension is not loaded
- * @throws UnknownImageFileException if file not found or file type is not known
- * @return static
- */
- public static function fromFile(string $file, int &$type = null)
- {
- if (!extension_loaded('gd')) {
- throw new Nette\NotSupportedException('PHP extension GD is not loaded.');
- }
-
- $type = self::detectTypeFromFile($file);
- if (!$type) {
- throw new UnknownImageFileException(is_file($file) ? "Unknown type of file '$file'." : "File '$file' not found.");
- }
-
- $method = 'imagecreatefrom' . self::FORMATS[$type];
- return new static(Callback::invokeSafe($method, [$file], function (string $message): void {
- throw new ImageException($message);
- }));
- }
-
-
- /**
- * Reads an image from a string and returns its type in $type.
- * @return static
- * @throws Nette\NotSupportedException if gd extension is not loaded
- * @throws ImageException
- */
- public static function fromString(string $s, int &$type = null)
- {
- if (!extension_loaded('gd')) {
- throw new Nette\NotSupportedException('PHP extension GD is not loaded.');
- }
-
- $type = self::detectTypeFromString($s);
- if (!$type) {
- throw new UnknownImageFileException('Unknown type of image.');
- }
-
- return new static(Callback::invokeSafe('imagecreatefromstring', [$s], function (string $message): void {
- throw new ImageException($message);
- }));
- }
-
-
- /**
- * Creates a new true color image of the given dimensions. The default color is black.
- * @return static
- * @throws Nette\NotSupportedException if gd extension is not loaded
- */
- public static function fromBlank(int $width, int $height, array $color = null)
- {
- if (!extension_loaded('gd')) {
- throw new Nette\NotSupportedException('PHP extension GD is not loaded.');
- }
-
- if ($width < 1 || $height < 1) {
- throw new Nette\InvalidArgumentException('Image width and height must be greater than zero.');
- }
-
- $image = imagecreatetruecolor($width, $height);
- if ($color) {
- $color += ['alpha' => 0];
- $color = imagecolorresolvealpha($image, $color['red'], $color['green'], $color['blue'], $color['alpha']);
- imagealphablending($image, false);
- imagefilledrectangle($image, 0, 0, $width - 1, $height - 1, $color);
- imagealphablending($image, true);
- }
- return new static($image);
- }
-
-
- /**
- * Returns the type of image from file.
- */
- public static function detectTypeFromFile(string $file): ?int
- {
- $type = @getimagesize($file)[2]; // @ - files smaller than 12 bytes causes read error
- return isset(self::FORMATS[$type]) ? $type : null;
- }
-
-
- /**
- * Returns the type of image from string.
- */
- public static function detectTypeFromString(string $s): ?int
- {
- $type = @getimagesizefromstring($s)[2]; // @ - strings smaller than 12 bytes causes read error
- return isset(self::FORMATS[$type]) ? $type : null;
- }
-
-
- /**
- * Returns the file extension for the given `Image::XXX` constant.
- */
- public static function typeToExtension(int $type): string
- {
- if (!isset(self::FORMATS[$type])) {
- throw new Nette\InvalidArgumentException("Unsupported image type '$type'.");
- }
- return self::FORMATS[$type];
- }
-
-
- /**
- * Returns the mime type for the given `Image::XXX` constant.
- */
- public static function typeToMimeType(int $type): string
- {
- return 'image/' . self::typeToExtension($type);
- }
-
-
- /**
- * Wraps GD image.
- * @param resource|\GdImage $image
- */
- public function __construct($image)
- {
- $this->setImageResource($image);
- imagesavealpha($image, true);
- }
-
-
- /**
- * Returns image width.
- */
- public function getWidth(): int
- {
- return imagesx($this->image);
- }
-
-
- /**
- * Returns image height.
- */
- public function getHeight(): int
- {
- return imagesy($this->image);
- }
-
-
- /**
- * Sets image resource.
- * @param resource|\GdImage $image
- * @return static
- */
- protected function setImageResource($image)
- {
- if (!$image instanceof \GdImage && !(is_resource($image) && get_resource_type($image) === 'gd')) {
- throw new Nette\InvalidArgumentException('Image is not valid.');
- }
- $this->image = $image;
- return $this;
- }
-
-
- /**
- * Returns image GD resource.
- * @return resource|\GdImage
- */
- public function getImageResource()
- {
- return $this->image;
- }
-
-
- /**
- * Scales an image.
- * @param int|string|null $width in pixels or percent
- * @param int|string|null $height in pixels or percent
- * @return static
- */
- public function resize($width, $height, int $flags = self::FIT)
- {
- if ($flags & self::EXACT) {
- return $this->resize($width, $height, self::FILL)->crop('50%', '50%', $width, $height);
- }
-
- [$newWidth, $newHeight] = static::calculateSize($this->getWidth(), $this->getHeight(), $width, $height, $flags);
-
- if ($newWidth !== $this->getWidth() || $newHeight !== $this->getHeight()) { // resize
- $newImage = static::fromBlank($newWidth, $newHeight, self::rgb(0, 0, 0, 127))->getImageResource();
- imagecopyresampled(
- $newImage,
- $this->image,
- 0,
- 0,
- 0,
- 0,
- $newWidth,
- $newHeight,
- $this->getWidth(),
- $this->getHeight()
- );
- $this->image = $newImage;
- }
-
- if ($width < 0 || $height < 0) {
- imageflip($this->image, $width < 0 ? ($height < 0 ? IMG_FLIP_BOTH : IMG_FLIP_HORIZONTAL) : IMG_FLIP_VERTICAL);
- }
- return $this;
- }
-
-
- /**
- * Calculates dimensions of resized image.
- * @param int|string|null $newWidth in pixels or percent
- * @param int|string|null $newHeight in pixels or percent
- */
- public static function calculateSize(
- int $srcWidth,
- int $srcHeight,
- $newWidth,
- $newHeight,
- int $flags = self::FIT
- ): array {
- if ($newWidth === null) {
- } elseif (self::isPercent($newWidth)) {
- $newWidth = (int) round($srcWidth / 100 * abs($newWidth));
- $percents = true;
- } else {
- $newWidth = abs($newWidth);
- }
-
- if ($newHeight === null) {
- } elseif (self::isPercent($newHeight)) {
- $newHeight = (int) round($srcHeight / 100 * abs($newHeight));
- $flags |= empty($percents) ? 0 : self::STRETCH;
- } else {
- $newHeight = abs($newHeight);
- }
-
- if ($flags & self::STRETCH) { // non-proportional
- if (!$newWidth || !$newHeight) {
- throw new Nette\InvalidArgumentException('For stretching must be both width and height specified.');
- }
-
- if ($flags & self::SHRINK_ONLY) {
- $newWidth = (int) round($srcWidth * min(1, $newWidth / $srcWidth));
- $newHeight = (int) round($srcHeight * min(1, $newHeight / $srcHeight));
- }
-
- } else { // proportional
- if (!$newWidth && !$newHeight) {
- throw new Nette\InvalidArgumentException('At least width or height must be specified.');
- }
-
- $scale = [];
- if ($newWidth > 0) { // fit width
- $scale[] = $newWidth / $srcWidth;
- }
-
- if ($newHeight > 0) { // fit height
- $scale[] = $newHeight / $srcHeight;
- }
-
- if ($flags & self::FILL) {
- $scale = [max($scale)];
- }
-
- if ($flags & self::SHRINK_ONLY) {
- $scale[] = 1;
- }
-
- $scale = min($scale);
- $newWidth = (int) round($srcWidth * $scale);
- $newHeight = (int) round($srcHeight * $scale);
- }
-
- return [max($newWidth, 1), max($newHeight, 1)];
- }
-
-
- /**
- * Crops image.
- * @param int|string $left in pixels or percent
- * @param int|string $top in pixels or percent
- * @param int|string $width in pixels or percent
- * @param int|string $height in pixels or percent
- * @return static
- */
- public function crop($left, $top, $width, $height)
- {
- [$r['x'], $r['y'], $r['width'], $r['height']]
- = static::calculateCutout($this->getWidth(), $this->getHeight(), $left, $top, $width, $height);
- if (gd_info()['GD Version'] === 'bundled (2.1.0 compatible)') {
- $this->image = imagecrop($this->image, $r);
- imagesavealpha($this->image, true);
- } else {
- $newImage = static::fromBlank($r['width'], $r['height'], self::RGB(0, 0, 0, 127))->getImageResource();
- imagecopy($newImage, $this->image, 0, 0, $r['x'], $r['y'], $r['width'], $r['height']);
- $this->image = $newImage;
- }
- return $this;
- }
-
-
- /**
- * Calculates dimensions of cutout in image.
- * @param int|string $left in pixels or percent
- * @param int|string $top in pixels or percent
- * @param int|string $newWidth in pixels or percent
- * @param int|string $newHeight in pixels or percent
- */
- public static function calculateCutout(int $srcWidth, int $srcHeight, $left, $top, $newWidth, $newHeight): array
- {
- if (self::isPercent($newWidth)) {
- $newWidth = (int) round($srcWidth / 100 * $newWidth);
- }
- if (self::isPercent($newHeight)) {
- $newHeight = (int) round($srcHeight / 100 * $newHeight);
- }
- if (self::isPercent($left)) {
- $left = (int) round(($srcWidth - $newWidth) / 100 * $left);
- }
- if (self::isPercent($top)) {
- $top = (int) round(($srcHeight - $newHeight) / 100 * $top);
- }
- if ($left < 0) {
- $newWidth += $left;
- $left = 0;
- }
- if ($top < 0) {
- $newHeight += $top;
- $top = 0;
- }
- $newWidth = min($newWidth, $srcWidth - $left);
- $newHeight = min($newHeight, $srcHeight - $top);
- return [$left, $top, $newWidth, $newHeight];
- }
-
-
- /**
- * Sharpens image a little bit.
- * @return static
- */
- public function sharpen()
- {
- imageconvolution($this->image, [ // my magic numbers ;)
- [-1, -1, -1],
- [-1, 24, -1],
- [-1, -1, -1],
- ], 16, 0);
- return $this;
- }
-
-
- /**
- * Puts another image into this image.
- * @param int|string $left in pixels or percent
- * @param int|string $top in pixels or percent
- * @param int $opacity 0..100
- * @return static
- */
- public function place(self $image, $left = 0, $top = 0, int $opacity = 100)
- {
- $opacity = max(0, min(100, $opacity));
- if ($opacity === 0) {
- return $this;
- }
-
- $width = $image->getWidth();
- $height = $image->getHeight();
-
- if (self::isPercent($left)) {
- $left = (int) round(($this->getWidth() - $width) / 100 * $left);
- }
-
- if (self::isPercent($top)) {
- $top = (int) round(($this->getHeight() - $height) / 100 * $top);
- }
-
- $output = $input = $image->image;
- if ($opacity < 100) {
- $tbl = [];
- for ($i = 0; $i < 128; $i++) {
- $tbl[$i] = round(127 - (127 - $i) * $opacity / 100);
- }
-
- $output = imagecreatetruecolor($width, $height);
- imagealphablending($output, false);
- if (!$image->isTrueColor()) {
- $input = $output;
- imagefilledrectangle($output, 0, 0, $width, $height, imagecolorallocatealpha($output, 0, 0, 0, 127));
- imagecopy($output, $image->image, 0, 0, 0, 0, $width, $height);
- }
- for ($x = 0; $x < $width; $x++) {
- for ($y = 0; $y < $height; $y++) {
- $c = \imagecolorat($input, $x, $y);
- $c = ($c & 0xFFFFFF) + ($tbl[$c >> 24] << 24);
- \imagesetpixel($output, $x, $y, $c);
- }
- }
- imagealphablending($output, true);
- }
-
- imagecopy(
- $this->image,
- $output,
- $left,
- $top,
- 0,
- 0,
- $width,
- $height
- );
- return $this;
- }
-
-
- /**
- * Saves image to the file. Quality is in the range 0..100 for JPEG (default 85) and WEBP (default 80) and 0..9 for PNG (default 9).
- * @throws ImageException
- */
- public function save(string $file, int $quality = null, int $type = null): void
- {
- if ($type === null) {
- $extensions = array_flip(self::FORMATS) + ['jpg' => self::JPEG];
- $ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
- if (!isset($extensions[$ext])) {
- throw new Nette\InvalidArgumentException("Unsupported file extension '$ext'.");
- }
- $type = $extensions[$ext];
- }
-
- $this->output($type, $quality, $file);
- }
-
-
- /**
- * Outputs image to string. Quality is in the range 0..100 for JPEG (default 85) and WEBP (default 80) and 0..9 for PNG (default 9).
- */
- public function toString(int $type = self::JPEG, int $quality = null): string
- {
- return Helpers::capture(function () use ($type, $quality) {
- $this->output($type, $quality);
- });
- }
-
-
- /**
- * Outputs image to string.
- */
- public function __toString(): string
- {
- try {
- return $this->toString();
- } catch (\Throwable $e) {
- if (func_num_args() || PHP_VERSION_ID >= 70400) {
- throw $e;
- }
- trigger_error('Exception in ' . __METHOD__ . "(): {$e->getMessage()} in {$e->getFile()}:{$e->getLine()}", E_USER_ERROR);
- return '';
- }
- }
-
-
- /**
- * Outputs image to browser. Quality is in the range 0..100 for JPEG (default 85) and WEBP (default 80) and 0..9 for PNG (default 9).
- * @throws ImageException
- */
- public function send(int $type = self::JPEG, int $quality = null): void
- {
- header('Content-Type: ' . self::typeToMimeType($type));
- $this->output($type, $quality);
- }
-
-
- /**
- * Outputs image to browser or file.
- * @throws ImageException
- */
- private function output(int $type, ?int $quality, string $file = null): void
- {
- switch ($type) {
- case self::JPEG:
- $quality = $quality === null ? 85 : max(0, min(100, $quality));
- $success = @imagejpeg($this->image, $file, $quality); // @ is escalated to exception
- break;
-
- case self::PNG:
- $quality = $quality === null ? 9 : max(0, min(9, $quality));
- $success = @imagepng($this->image, $file, $quality); // @ is escalated to exception
- break;
-
- case self::GIF:
- $success = @imagegif($this->image, $file); // @ is escalated to exception
- break;
-
- case self::WEBP:
- $quality = $quality === null ? 80 : max(0, min(100, $quality));
- $success = @imagewebp($this->image, $file, $quality); // @ is escalated to exception
- break;
-
- case self::BMP:
- $success = @imagebmp($this->image, $file); // @ is escalated to exception
- break;
-
- default:
- throw new Nette\InvalidArgumentException("Unsupported image type '$type'.");
- }
- if (!$success) {
- throw new ImageException(Helpers::getLastError() ?: 'Unknown error');
- }
- }
-
-
- /**
- * Call to undefined method.
- * @return mixed
- * @throws Nette\MemberAccessException
- */
- public function __call(string $name, array $args)
- {
- $function = 'image' . $name;
- if (!function_exists($function)) {
- ObjectHelpers::strictCall(static::class, $name);
- }
-
- foreach ($args as $key => $value) {
- if ($value instanceof self) {
- $args[$key] = $value->getImageResource();
-
- } elseif (is_array($value) && isset($value['red'])) { // rgb
- $args[$key] = imagecolorallocatealpha(
- $this->image,
- $value['red'],
- $value['green'],
- $value['blue'],
- $value['alpha']
- ) ?: imagecolorresolvealpha(
- $this->image,
- $value['red'],
- $value['green'],
- $value['blue'],
- $value['alpha']
- );
- }
- }
- $res = $function($this->image, ...$args);
- return $res instanceof \GdImage || (is_resource($res) && get_resource_type($res) === 'gd')
- ? $this->setImageResource($res)
- : $res;
- }
-
-
- public function __clone()
- {
- ob_start(function () {});
- imagegd2($this->image);
- $this->setImageResource(imagecreatefromstring(ob_get_clean()));
- }
-
-
- /**
- * @param int|string $num in pixels or percent
- */
- private static function isPercent(&$num): bool
- {
- if (is_string($num) && substr($num, -1) === '%') {
- $num = (float) substr($num, 0, -1);
- return true;
- } elseif (is_int($num) || $num === (string) (int) $num) {
- $num = (int) $num;
- return false;
- }
- throw new Nette\InvalidArgumentException("Expected dimension in int|string, '$num' given.");
- }
-
-
- /**
- * Prevents serialization.
- */
- public function __sleep(): array
- {
- throw new Nette\NotSupportedException('You cannot serialize or unserialize ' . self::class . ' instances.');
- }
-}
diff --git a/vendor/nette/utils/src/Utils/Json.php b/vendor/nette/utils/src/Utils/Json.php
deleted file mode 100644
index 782c1ff2..00000000
--- a/vendor/nette/utils/src/Utils/Json.php
+++ /dev/null
@@ -1,64 +0,0 @@
-getProperties(\ReflectionProperty::IS_PUBLIC), function ($p) { return !$p->isStatic(); }),
- self::parseFullDoc($rc, '~^[ \t*]*@property(?:-read)?[ \t]+(?:\S+[ \t]+)??\$(\w+)~m')
- ), $name);
- throw new MemberAccessException("Cannot read an undeclared property $class::\$$name" . ($hint ? ", did you mean \$$hint?" : '.'));
- }
-
-
- /** @throws MemberAccessException */
- public static function strictSet(string $class, string $name): void
- {
- $rc = new \ReflectionClass($class);
- $hint = self::getSuggestion(array_merge(
- array_filter($rc->getProperties(\ReflectionProperty::IS_PUBLIC), function ($p) { return !$p->isStatic(); }),
- self::parseFullDoc($rc, '~^[ \t*]*@property(?:-write)?[ \t]+(?:\S+[ \t]+)??\$(\w+)~m')
- ), $name);
- throw new MemberAccessException("Cannot write to an undeclared property $class::\$$name" . ($hint ? ", did you mean \$$hint?" : '.'));
- }
-
-
- /** @throws MemberAccessException */
- public static function strictCall(string $class, string $method, array $additionalMethods = []): void
- {
- $trace = debug_backtrace(0, 3); // suppose this method is called from __call()
- $context = ($trace[1]['function'] ?? null) === '__call'
- ? ($trace[2]['class'] ?? null)
- : null;
-
- if ($context && is_a($class, $context, true) && method_exists($context, $method)) { // called parent::$method()
- $class = get_parent_class($context);
- }
-
- if (method_exists($class, $method)) { // insufficient visibility
- $rm = new \ReflectionMethod($class, $method);
- $visibility = $rm->isPrivate()
- ? 'private '
- : ($rm->isProtected() ? 'protected ' : '');
- throw new MemberAccessException("Call to {$visibility}method $class::$method() from " . ($context ? "scope $context." : 'global scope.'));
-
- } else {
- $hint = self::getSuggestion(array_merge(
- get_class_methods($class),
- self::parseFullDoc(new \ReflectionClass($class), '~^[ \t*]*@method[ \t]+(?:\S+[ \t]+)??(\w+)\(~m'),
- $additionalMethods
- ), $method);
- throw new MemberAccessException("Call to undefined method $class::$method()" . ($hint ? ", did you mean $hint()?" : '.'));
- }
- }
-
-
- /** @throws MemberAccessException */
- public static function strictStaticCall(string $class, string $method): void
- {
- $trace = debug_backtrace(0, 3); // suppose this method is called from __callStatic()
- $context = ($trace[1]['function'] ?? null) === '__callStatic'
- ? ($trace[2]['class'] ?? null)
- : null;
-
- if ($context && is_a($class, $context, true) && method_exists($context, $method)) { // called parent::$method()
- $class = get_parent_class($context);
- }
-
- if (method_exists($class, $method)) { // insufficient visibility
- $rm = new \ReflectionMethod($class, $method);
- $visibility = $rm->isPrivate()
- ? 'private '
- : ($rm->isProtected() ? 'protected ' : '');
- throw new MemberAccessException("Call to {$visibility}method $class::$method() from " . ($context ? "scope $context." : 'global scope.'));
-
- } else {
- $hint = self::getSuggestion(
- array_filter((new \ReflectionClass($class))->getMethods(\ReflectionMethod::IS_PUBLIC), function ($m) { return $m->isStatic(); }),
- $method
- );
- throw new MemberAccessException("Call to undefined static method $class::$method()" . ($hint ? ", did you mean $hint()?" : '.'));
- }
- }
-
-
- /**
- * Returns array of magic properties defined by annotation @property.
- * @return array of [name => bit mask]
- * @internal
- */
- public static function getMagicProperties(string $class): array
- {
- static $cache;
- $props = &$cache[$class];
- if ($props !== null) {
- return $props;
- }
-
- $rc = new \ReflectionClass($class);
- preg_match_all(
- '~^ [ \t*]* @property(|-read|-write) [ \t]+ [^\s$]+ [ \t]+ \$ (\w+) ()~mx',
- (string) $rc->getDocComment(),
- $matches,
- PREG_SET_ORDER
- );
-
- $props = [];
- foreach ($matches as [, $type, $name]) {
- $uname = ucfirst($name);
- $write = $type !== '-read'
- && $rc->hasMethod($nm = 'set' . $uname)
- && ($rm = $rc->getMethod($nm))->name === $nm && !$rm->isPrivate() && !$rm->isStatic();
- $read = $type !== '-write'
- && ($rc->hasMethod($nm = 'get' . $uname) || $rc->hasMethod($nm = 'is' . $uname))
- && ($rm = $rc->getMethod($nm))->name === $nm && !$rm->isPrivate() && !$rm->isStatic();
-
- if ($read || $write) {
- $props[$name] = $read << 0 | ($nm[0] === 'g') << 1 | $rm->returnsReference() << 2 | $write << 3;
- }
- }
-
- foreach ($rc->getTraits() as $trait) {
- $props += self::getMagicProperties($trait->name);
- }
-
- if ($parent = get_parent_class($class)) {
- $props += self::getMagicProperties($parent);
- }
- return $props;
- }
-
-
- /**
- * Finds the best suggestion (for 8-bit encoding).
- * @param (\ReflectionFunctionAbstract|\ReflectionParameter|\ReflectionClass|\ReflectionProperty|string)[] $possibilities
- * @internal
- */
- public static function getSuggestion(array $possibilities, string $value): ?string
- {
- $norm = preg_replace($re = '#^(get|set|has|is|add)(?=[A-Z])#', '+', $value);
- $best = null;
- $min = (strlen($value) / 4 + 1) * 10 + .1;
- foreach (array_unique($possibilities, SORT_REGULAR) as $item) {
- $item = $item instanceof \Reflector ? $item->name : $item;
- if ($item !== $value && (
- ($len = levenshtein($item, $value, 10, 11, 10)) < $min
- || ($len = levenshtein(preg_replace($re, '*', $item), $norm, 10, 11, 10)) < $min
- )) {
- $min = $len;
- $best = $item;
- }
- }
- return $best;
- }
-
-
- private static function parseFullDoc(\ReflectionClass $rc, string $pattern): array
- {
- do {
- $doc[] = $rc->getDocComment();
- $traits = $rc->getTraits();
- while ($trait = array_pop($traits)) {
- $doc[] = $trait->getDocComment();
- $traits += $trait->getTraits();
- }
- } while ($rc = $rc->getParentClass());
- return preg_match_all($pattern, implode($doc), $m) ? $m[1] : [];
- }
-
-
- /**
- * Checks if the public non-static property exists.
- * @return bool|string returns 'event' if the property exists and has event like name
- * @internal
- */
- public static function hasProperty(string $class, string $name)
- {
- static $cache;
- $prop = &$cache[$class][$name];
- if ($prop === null) {
- $prop = false;
- try {
- $rp = new \ReflectionProperty($class, $name);
- if ($rp->isPublic() && !$rp->isStatic()) {
- $prop = $name >= 'onA' && $name < 'on_' ? 'event' : true;
- }
- } catch (\ReflectionException $e) {
- }
- }
- return $prop;
- }
-}
diff --git a/vendor/nette/utils/src/Utils/ObjectMixin.php b/vendor/nette/utils/src/Utils/ObjectMixin.php
deleted file mode 100644
index 33249509..00000000
--- a/vendor/nette/utils/src/Utils/ObjectMixin.php
+++ /dev/null
@@ -1,41 +0,0 @@
-page = $page;
- return $this;
- }
-
-
- /**
- * Returns current page number.
- */
- public function getPage(): int
- {
- return $this->base + $this->getPageIndex();
- }
-
-
- /**
- * Returns first page number.
- */
- public function getFirstPage(): int
- {
- return $this->base;
- }
-
-
- /**
- * Returns last page number.
- */
- public function getLastPage(): ?int
- {
- return $this->itemCount === null
- ? null
- : $this->base + max(0, $this->getPageCount() - 1);
- }
-
-
- /**
- * Returns the sequence number of the first element on the page
- */
- public function getFirstItemOnPage(): int
- {
- return $this->itemCount !== 0
- ? $this->offset + 1
- : 0;
- }
-
-
- /**
- * Returns the sequence number of the last element on the page
- */
- public function getLastItemOnPage(): int
- {
- return $this->offset + $this->length;
- }
-
-
- /**
- * Sets first page (base) number.
- * @return static
- */
- public function setBase(int $base)
- {
- $this->base = $base;
- return $this;
- }
-
-
- /**
- * Returns first page (base) number.
- */
- public function getBase(): int
- {
- return $this->base;
- }
-
-
- /**
- * Returns zero-based page number.
- */
- protected function getPageIndex(): int
- {
- $index = max(0, $this->page - $this->base);
- return $this->itemCount === null
- ? $index
- : min($index, max(0, $this->getPageCount() - 1));
- }
-
-
- /**
- * Is the current page the first one?
- */
- public function isFirst(): bool
- {
- return $this->getPageIndex() === 0;
- }
-
-
- /**
- * Is the current page the last one?
- */
- public function isLast(): bool
- {
- return $this->itemCount === null
- ? false
- : $this->getPageIndex() >= $this->getPageCount() - 1;
- }
-
-
- /**
- * Returns the total number of pages.
- */
- public function getPageCount(): ?int
- {
- return $this->itemCount === null
- ? null
- : (int) ceil($this->itemCount / $this->itemsPerPage);
- }
-
-
- /**
- * Sets the number of items to display on a single page.
- * @return static
- */
- public function setItemsPerPage(int $itemsPerPage)
- {
- $this->itemsPerPage = max(1, $itemsPerPage);
- return $this;
- }
-
-
- /**
- * Returns the number of items to display on a single page.
- */
- public function getItemsPerPage(): int
- {
- return $this->itemsPerPage;
- }
-
-
- /**
- * Sets the total number of items.
- * @return static
- */
- public function setItemCount(int $itemCount = null)
- {
- $this->itemCount = $itemCount === null ? null : max(0, $itemCount);
- return $this;
- }
-
-
- /**
- * Returns the total number of items.
- */
- public function getItemCount(): ?int
- {
- return $this->itemCount;
- }
-
-
- /**
- * Returns the absolute index of the first item on current page.
- */
- public function getOffset(): int
- {
- return $this->getPageIndex() * $this->itemsPerPage;
- }
-
-
- /**
- * Returns the absolute index of the first item on current page in countdown paging.
- */
- public function getCountdownOffset(): ?int
- {
- return $this->itemCount === null
- ? null
- : max(0, $this->itemCount - ($this->getPageIndex() + 1) * $this->itemsPerPage);
- }
-
-
- /**
- * Returns the number of items on current page.
- */
- public function getLength(): int
- {
- return $this->itemCount === null
- ? $this->itemsPerPage
- : min($this->itemsPerPage, $this->itemCount - $this->getPageIndex() * $this->itemsPerPage);
- }
-}
diff --git a/vendor/nette/utils/src/Utils/Random.php b/vendor/nette/utils/src/Utils/Random.php
deleted file mode 100644
index 2403b4d3..00000000
--- a/vendor/nette/utils/src/Utils/Random.php
+++ /dev/null
@@ -1,45 +0,0 @@
- 1, 'int' => 1, 'float' => 1, 'bool' => 1, 'array' => 1, 'object' => 1,
- 'callable' => 1, 'iterable' => 1, 'void' => 1, 'null' => 1, 'mixed' => 1, 'false' => 1,
- 'never' => 1,
- ];
-
-
- /**
- * Determines if type is PHP built-in type. Otherwise, it is the class name.
- */
- public static function isBuiltinType(string $type): bool
- {
- return isset(self::BUILTIN_TYPES[strtolower($type)]);
- }
-
-
- /**
- * Returns the type of return value of given function or method and normalizes `self`, `static`, and `parent` to actual class names.
- * If the function does not have a return type, it returns null.
- * If the function has union or intersection type, it throws Nette\InvalidStateException.
- */
- public static function getReturnType(\ReflectionFunctionAbstract $func): ?string
- {
- $type = $func->getReturnType() ?? (PHP_VERSION_ID >= 80100 && $func instanceof \ReflectionMethod ? $func->getTentativeReturnType() : null);
- return self::getType($func, $type);
- }
-
-
- /**
- * @deprecated
- */
- public static function getReturnTypes(\ReflectionFunctionAbstract $func): array
- {
- $type = Type::fromReflection($func);
- return $type ? $type->getNames() : [];
- }
-
-
- /**
- * Returns the type of given parameter and normalizes `self` and `parent` to the actual class names.
- * If the parameter does not have a type, it returns null.
- * If the parameter has union or intersection type, it throws Nette\InvalidStateException.
- */
- public static function getParameterType(\ReflectionParameter $param): ?string
- {
- return self::getType($param, $param->getType());
- }
-
-
- /**
- * @deprecated
- */
- public static function getParameterTypes(\ReflectionParameter $param): array
- {
- $type = Type::fromReflection($param);
- return $type ? $type->getNames() : [];
- }
-
-
- /**
- * Returns the type of given property and normalizes `self` and `parent` to the actual class names.
- * If the property does not have a type, it returns null.
- * If the property has union or intersection type, it throws Nette\InvalidStateException.
- */
- public static function getPropertyType(\ReflectionProperty $prop): ?string
- {
- return self::getType($prop, PHP_VERSION_ID >= 70400 ? $prop->getType() : null);
- }
-
-
- /**
- * @deprecated
- */
- public static function getPropertyTypes(\ReflectionProperty $prop): array
- {
- $type = Type::fromReflection($prop);
- return $type ? $type->getNames() : [];
- }
-
-
- /**
- * @param \ReflectionFunction|\ReflectionMethod|\ReflectionParameter|\ReflectionProperty $reflection
- */
- private static function getType($reflection, ?\ReflectionType $type): ?string
- {
- if ($type === null) {
- return null;
-
- } elseif ($type instanceof \ReflectionNamedType) {
- return Type::resolve($type->getName(), $reflection);
-
- } elseif ($type instanceof \ReflectionUnionType || $type instanceof \ReflectionIntersectionType) {
- throw new Nette\InvalidStateException('The ' . self::toString($reflection) . ' is not expected to have a union or intersection type.');
-
- } else {
- throw new Nette\InvalidStateException('Unexpected type of ' . self::toString($reflection));
- }
- }
-
-
- /**
- * Returns the default value of parameter. If it is a constant, it returns its value.
- * @return mixed
- * @throws \ReflectionException If the parameter does not have a default value or the constant cannot be resolved
- */
- public static function getParameterDefaultValue(\ReflectionParameter $param)
- {
- if ($param->isDefaultValueConstant()) {
- $const = $orig = $param->getDefaultValueConstantName();
- $pair = explode('::', $const);
- if (isset($pair[1])) {
- $pair[0] = Type::resolve($pair[0], $param);
- try {
- $rcc = new \ReflectionClassConstant($pair[0], $pair[1]);
- } catch (\ReflectionException $e) {
- $name = self::toString($param);
- throw new \ReflectionException("Unable to resolve constant $orig used as default value of $name.", 0, $e);
- }
- return $rcc->getValue();
-
- } elseif (!defined($const)) {
- $const = substr((string) strrchr($const, '\\'), 1);
- if (!defined($const)) {
- $name = self::toString($param);
- throw new \ReflectionException("Unable to resolve constant $orig used as default value of $name.");
- }
- }
- return constant($const);
- }
- return $param->getDefaultValue();
- }
-
-
- /**
- * Returns a reflection of a class or trait that contains a declaration of given property. Property can also be declared in the trait.
- */
- public static function getPropertyDeclaringClass(\ReflectionProperty $prop): \ReflectionClass
- {
- foreach ($prop->getDeclaringClass()->getTraits() as $trait) {
- if ($trait->hasProperty($prop->name)
- // doc-comment guessing as workaround for insufficient PHP reflection
- && $trait->getProperty($prop->name)->getDocComment() === $prop->getDocComment()
- ) {
- return self::getPropertyDeclaringClass($trait->getProperty($prop->name));
- }
- }
- return $prop->getDeclaringClass();
- }
-
-
- /**
- * Returns a reflection of a method that contains a declaration of $method.
- * Usually, each method is its own declaration, but the body of the method can also be in the trait and under a different name.
- */
- public static function getMethodDeclaringMethod(\ReflectionMethod $method): \ReflectionMethod
- {
- // file & line guessing as workaround for insufficient PHP reflection
- $decl = $method->getDeclaringClass();
- if ($decl->getFileName() === $method->getFileName()
- && $decl->getStartLine() <= $method->getStartLine()
- && $decl->getEndLine() >= $method->getEndLine()
- ) {
- return $method;
- }
-
- $hash = [$method->getFileName(), $method->getStartLine(), $method->getEndLine()];
- if (($alias = $decl->getTraitAliases()[$method->name] ?? null)
- && ($m = new \ReflectionMethod($alias))
- && $hash === [$m->getFileName(), $m->getStartLine(), $m->getEndLine()]
- ) {
- return self::getMethodDeclaringMethod($m);
- }
-
- foreach ($decl->getTraits() as $trait) {
- if ($trait->hasMethod($method->name)
- && ($m = $trait->getMethod($method->name))
- && $hash === [$m->getFileName(), $m->getStartLine(), $m->getEndLine()]
- ) {
- return self::getMethodDeclaringMethod($m);
- }
- }
- return $method;
- }
-
-
- /**
- * Finds out if reflection has access to PHPdoc comments. Comments may not be available due to the opcode cache.
- */
- public static function areCommentsAvailable(): bool
- {
- static $res;
- return $res ?? $res = (bool) (new \ReflectionMethod(__METHOD__))->getDocComment();
- }
-
-
- public static function toString(\Reflector $ref): string
- {
- if ($ref instanceof \ReflectionClass) {
- return $ref->name;
- } elseif ($ref instanceof \ReflectionMethod) {
- return $ref->getDeclaringClass()->name . '::' . $ref->name . '()';
- } elseif ($ref instanceof \ReflectionFunction) {
- return $ref->name . '()';
- } elseif ($ref instanceof \ReflectionProperty) {
- return self::getPropertyDeclaringClass($ref)->name . '::$' . $ref->name;
- } elseif ($ref instanceof \ReflectionParameter) {
- return '$' . $ref->name . ' in ' . self::toString($ref->getDeclaringFunction());
- } else {
- throw new Nette\InvalidArgumentException;
- }
- }
-
-
- /**
- * Expands the name of the class to full name in the given context of given class.
- * Thus, it returns how the PHP parser would understand $name if it were written in the body of the class $context.
- * @throws Nette\InvalidArgumentException
- */
- public static function expandClassName(string $name, \ReflectionClass $context): string
- {
- $lower = strtolower($name);
- if (empty($name)) {
- throw new Nette\InvalidArgumentException('Class name must not be empty.');
-
- } elseif (isset(self::BUILTIN_TYPES[$lower])) {
- return $lower;
-
- } elseif ($lower === 'self' || $lower === 'static') {
- return $context->name;
-
- } elseif ($name[0] === '\\') { // fully qualified name
- return ltrim($name, '\\');
- }
-
- $uses = self::getUseStatements($context);
- $parts = explode('\\', $name, 2);
- if (isset($uses[$parts[0]])) {
- $parts[0] = $uses[$parts[0]];
- return implode('\\', $parts);
-
- } elseif ($context->inNamespace()) {
- return $context->getNamespaceName() . '\\' . $name;
-
- } else {
- return $name;
- }
- }
-
-
- /** @return array of [alias => class] */
- public static function getUseStatements(\ReflectionClass $class): array
- {
- if ($class->isAnonymous()) {
- throw new Nette\NotImplementedException('Anonymous classes are not supported.');
- }
- static $cache = [];
- if (!isset($cache[$name = $class->name])) {
- if ($class->isInternal()) {
- $cache[$name] = [];
- } else {
- $code = file_get_contents($class->getFileName());
- $cache = self::parseUseStatements($code, $name) + $cache;
- }
- }
- return $cache[$name];
- }
-
-
- /**
- * Parses PHP code to [class => [alias => class, ...]]
- */
- private static function parseUseStatements(string $code, string $forClass = null): array
- {
- try {
- $tokens = token_get_all($code, TOKEN_PARSE);
- } catch (\ParseError $e) {
- trigger_error($e->getMessage(), E_USER_NOTICE);
- $tokens = [];
- }
- $namespace = $class = $classLevel = $level = null;
- $res = $uses = [];
-
- $nameTokens = PHP_VERSION_ID < 80000
- ? [T_STRING, T_NS_SEPARATOR]
- : [T_STRING, T_NS_SEPARATOR, T_NAME_QUALIFIED, T_NAME_FULLY_QUALIFIED];
-
- while ($token = current($tokens)) {
- next($tokens);
- switch (is_array($token) ? $token[0] : $token) {
- case T_NAMESPACE:
- $namespace = ltrim(self::fetch($tokens, $nameTokens) . '\\', '\\');
- $uses = [];
- break;
-
- case T_CLASS:
- case T_INTERFACE:
- case T_TRAIT:
- case PHP_VERSION_ID < 80100
- ? T_CLASS
- : T_ENUM:
- if ($name = self::fetch($tokens, T_STRING)) {
- $class = $namespace . $name;
- $classLevel = $level + 1;
- $res[$class] = $uses;
- if ($class === $forClass) {
- return $res;
- }
- }
- break;
-
- case T_USE:
- while (!$class && ($name = self::fetch($tokens, $nameTokens))) {
- $name = ltrim($name, '\\');
- if (self::fetch($tokens, '{')) {
- while ($suffix = self::fetch($tokens, $nameTokens)) {
- if (self::fetch($tokens, T_AS)) {
- $uses[self::fetch($tokens, T_STRING)] = $name . $suffix;
- } else {
- $tmp = explode('\\', $suffix);
- $uses[end($tmp)] = $name . $suffix;
- }
- if (!self::fetch($tokens, ',')) {
- break;
- }
- }
-
- } elseif (self::fetch($tokens, T_AS)) {
- $uses[self::fetch($tokens, T_STRING)] = $name;
-
- } else {
- $tmp = explode('\\', $name);
- $uses[end($tmp)] = $name;
- }
- if (!self::fetch($tokens, ',')) {
- break;
- }
- }
- break;
-
- case T_CURLY_OPEN:
- case T_DOLLAR_OPEN_CURLY_BRACES:
- case '{':
- $level++;
- break;
-
- case '}':
- if ($level === $classLevel) {
- $class = $classLevel = null;
- }
- $level--;
- }
- }
-
- return $res;
- }
-
-
- private static function fetch(array &$tokens, $take): ?string
- {
- $res = null;
- while ($token = current($tokens)) {
- [$token, $s] = is_array($token) ? $token : [$token, $token];
- if (in_array($token, (array) $take, true)) {
- $res .= $s;
- } elseif (!in_array($token, [T_DOC_COMMENT, T_WHITESPACE, T_COMMENT], true)) {
- break;
- }
- next($tokens);
- }
- return $res;
- }
-}
diff --git a/vendor/nette/utils/src/Utils/Strings.php b/vendor/nette/utils/src/Utils/Strings.php
deleted file mode 100644
index e5e626b4..00000000
--- a/vendor/nette/utils/src/Utils/Strings.php
+++ /dev/null
@@ -1,550 +0,0 @@
-= 0xD800 && $code <= 0xDFFF) || $code > 0x10FFFF) {
- throw new Nette\InvalidArgumentException('Code point must be in range 0x0 to 0xD7FF or 0xE000 to 0x10FFFF.');
- } elseif (!extension_loaded('iconv')) {
- throw new Nette\NotSupportedException(__METHOD__ . '() requires ICONV extension that is not loaded.');
- }
- return iconv('UTF-32BE', 'UTF-8//IGNORE', pack('N', $code));
- }
-
-
- /**
- * Starts the $haystack string with the prefix $needle?
- */
- public static function startsWith(string $haystack, string $needle): bool
- {
- return strncmp($haystack, $needle, strlen($needle)) === 0;
- }
-
-
- /**
- * Ends the $haystack string with the suffix $needle?
- */
- public static function endsWith(string $haystack, string $needle): bool
- {
- return $needle === '' || substr($haystack, -strlen($needle)) === $needle;
- }
-
-
- /**
- * Does $haystack contain $needle?
- */
- public static function contains(string $haystack, string $needle): bool
- {
- return strpos($haystack, $needle) !== false;
- }
-
-
- /**
- * Returns a part of UTF-8 string specified by starting position and length. If start is negative,
- * the returned string will start at the start'th character from the end of string.
- */
- public static function substring(string $s, int $start, int $length = null): string
- {
- if (function_exists('mb_substr')) {
- return mb_substr($s, $start, $length, 'UTF-8'); // MB is much faster
- } elseif (!extension_loaded('iconv')) {
- throw new Nette\NotSupportedException(__METHOD__ . '() requires extension ICONV or MBSTRING, neither is loaded.');
- } elseif ($length === null) {
- $length = self::length($s);
- } elseif ($start < 0 && $length < 0) {
- $start += self::length($s); // unifies iconv_substr behavior with mb_substr
- }
- return iconv_substr($s, $start, $length, 'UTF-8');
- }
-
-
- /**
- * Removes control characters, normalizes line breaks to `\n`, removes leading and trailing blank lines,
- * trims end spaces on lines, normalizes UTF-8 to the normal form of NFC.
- */
- public static function normalize(string $s): string
- {
- // convert to compressed normal form (NFC)
- if (class_exists('Normalizer', false) && ($n = \Normalizer::normalize($s, \Normalizer::FORM_C)) !== false) {
- $s = $n;
- }
-
- $s = self::normalizeNewLines($s);
-
- // remove control characters; leave \t + \n
- $s = self::pcre('preg_replace', ['#[\x00-\x08\x0B-\x1F\x7F-\x9F]+#u', '', $s]);
-
- // right trim
- $s = self::pcre('preg_replace', ['#[\t ]+$#m', '', $s]);
-
- // leading and trailing blank lines
- $s = trim($s, "\n");
-
- return $s;
- }
-
-
- /**
- * Standardize line endings to unix-like.
- */
- public static function normalizeNewLines(string $s): string
- {
- return str_replace(["\r\n", "\r"], "\n", $s);
- }
-
-
- /**
- * Converts UTF-8 string to ASCII, ie removes diacritics etc.
- */
- public static function toAscii(string $s): string
- {
- $iconv = defined('ICONV_IMPL') ? trim(ICONV_IMPL, '"\'') : null;
- static $transliterator = null;
- if ($transliterator === null) {
- if (class_exists('Transliterator', false)) {
- $transliterator = \Transliterator::create('Any-Latin; Latin-ASCII');
- } else {
- trigger_error(__METHOD__ . "(): it is recommended to enable PHP extensions 'intl'.", E_USER_NOTICE);
- $transliterator = false;
- }
- }
-
- // remove control characters and check UTF-8 validity
- $s = self::pcre('preg_replace', ['#[^\x09\x0A\x0D\x20-\x7E\xA0-\x{2FF}\x{370}-\x{10FFFF}]#u', '', $s]);
-
- // transliteration (by Transliterator and iconv) is not optimal, replace some characters directly
- $s = strtr($s, ["\u{201E}" => '"', "\u{201C}" => '"', "\u{201D}" => '"', "\u{201A}" => "'", "\u{2018}" => "'", "\u{2019}" => "'", "\u{B0}" => '^', "\u{42F}" => 'Ya', "\u{44F}" => 'ya', "\u{42E}" => 'Yu', "\u{44E}" => 'yu', "\u{c4}" => 'Ae', "\u{d6}" => 'Oe', "\u{dc}" => 'Ue', "\u{1e9e}" => 'Ss', "\u{e4}" => 'ae', "\u{f6}" => 'oe', "\u{fc}" => 'ue', "\u{df}" => 'ss']); // „ “ ” ‚ ‘ ’ ° Я я Ю ю Ä Ö Ü ẞ ä ö ü ß
- if ($iconv !== 'libiconv') {
- $s = strtr($s, ["\u{AE}" => '(R)', "\u{A9}" => '(c)', "\u{2026}" => '...', "\u{AB}" => '<<', "\u{BB}" => '>>', "\u{A3}" => 'lb', "\u{A5}" => 'yen', "\u{B2}" => '^2', "\u{B3}" => '^3', "\u{B5}" => 'u', "\u{B9}" => '^1', "\u{BA}" => 'o', "\u{BF}" => '?', "\u{2CA}" => "'", "\u{2CD}" => '_', "\u{2DD}" => '"', "\u{1FEF}" => '', "\u{20AC}" => 'EUR', "\u{2122}" => 'TM', "\u{212E}" => 'e', "\u{2190}" => '<-', "\u{2191}" => '^', "\u{2192}" => '->', "\u{2193}" => 'V', "\u{2194}" => '<->']); // ® © … « » £ ¥ ² ³ µ ¹ º ¿ ˊ ˍ ˝ ` € ™ ℮ ← ↑ → ↓ ↔
- }
-
- if ($transliterator) {
- $s = $transliterator->transliterate($s);
- // use iconv because The transliterator leaves some characters out of ASCII, eg → ʾ
- if ($iconv === 'glibc') {
- $s = strtr($s, '?', "\x01"); // temporarily hide ? to distinguish them from the garbage that iconv creates
- $s = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $s);
- $s = str_replace(['?', "\x01"], ['', '?'], $s); // remove garbage and restore ? characters
- } elseif ($iconv === 'libiconv') {
- $s = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $s);
- } else { // null or 'unknown' (#216)
- $s = self::pcre('preg_replace', ['#[^\x00-\x7F]++#', '', $s]); // remove non-ascii chars
- }
- } elseif ($iconv === 'glibc' || $iconv === 'libiconv') {
- // temporarily hide these characters to distinguish them from the garbage that iconv creates
- $s = strtr($s, '`\'"^~?', "\x01\x02\x03\x04\x05\x06");
- if ($iconv === 'glibc') {
- // glibc implementation is very limited. transliterate into Windows-1250 and then into ASCII, so most Eastern European characters are preserved
- $s = iconv('UTF-8', 'WINDOWS-1250//TRANSLIT//IGNORE', $s);
- $s = strtr(
- $s,
- "\xa5\xa3\xbc\x8c\xa7\x8a\xaa\x8d\x8f\x8e\xaf\xb9\xb3\xbe\x9c\x9a\xba\x9d\x9f\x9e\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf8\xf9\xfa\xfb\xfc\xfd\xfe\x96\xa0\x8b\x97\x9b\xa6\xad\xb7",
- 'ALLSSSSTZZZallssstzzzRAAAALCCCEEEEIIDDNNOOOOxRUUUUYTsraaaalccceeeeiiddnnooooruuuuyt- <->|-.'
- );
- $s = self::pcre('preg_replace', ['#[^\x00-\x7F]++#', '', $s]);
- } else {
- $s = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $s);
- }
- // remove garbage that iconv creates during transliteration (eg Ý -> Y')
- $s = str_replace(['`', "'", '"', '^', '~', '?'], '', $s);
- // restore temporarily hidden characters
- $s = strtr($s, "\x01\x02\x03\x04\x05\x06", '`\'"^~?');
- } else {
- $s = self::pcre('preg_replace', ['#[^\x00-\x7F]++#', '', $s]); // remove non-ascii chars
- }
-
- return $s;
- }
-
-
- /**
- * Modifies the UTF-8 string to the form used in the URL, ie removes diacritics and replaces all characters
- * except letters of the English alphabet and numbers with a hyphens.
- */
- public static function webalize(string $s, string $charlist = null, bool $lower = true): string
- {
- $s = self::toAscii($s);
- if ($lower) {
- $s = strtolower($s);
- }
- $s = self::pcre('preg_replace', ['#[^a-z0-9' . ($charlist !== null ? preg_quote($charlist, '#') : '') . ']+#i', '-', $s]);
- $s = trim($s, '-');
- return $s;
- }
-
-
- /**
- * Truncates a UTF-8 string to given maximal length, while trying not to split whole words. Only if the string is truncated,
- * an ellipsis (or something else set with third argument) is appended to the string.
- */
- public static function truncate(string $s, int $maxLen, string $append = "\u{2026}"): string
- {
- if (self::length($s) > $maxLen) {
- $maxLen -= self::length($append);
- if ($maxLen < 1) {
- return $append;
-
- } elseif ($matches = self::match($s, '#^.{1,' . $maxLen . '}(?=[\s\x00-/:-@\[-`{-~])#us')) {
- return $matches[0] . $append;
-
- } else {
- return self::substring($s, 0, $maxLen) . $append;
- }
- }
- return $s;
- }
-
-
- /**
- * Indents a multiline text from the left. Second argument sets how many indentation chars should be used,
- * while the indent itself is the third argument (*tab* by default).
- */
- public static function indent(string $s, int $level = 1, string $chars = "\t"): string
- {
- if ($level > 0) {
- $s = self::replace($s, '#(?:^|[\r\n]+)(?=[^\r\n])#', '$0' . str_repeat($chars, $level));
- }
- return $s;
- }
-
-
- /**
- * Converts all characters of UTF-8 string to lower case.
- */
- public static function lower(string $s): string
- {
- return mb_strtolower($s, 'UTF-8');
- }
-
-
- /**
- * Converts the first character of a UTF-8 string to lower case and leaves the other characters unchanged.
- */
- public static function firstLower(string $s): string
- {
- return self::lower(self::substring($s, 0, 1)) . self::substring($s, 1);
- }
-
-
- /**
- * Converts all characters of a UTF-8 string to upper case.
- */
- public static function upper(string $s): string
- {
- return mb_strtoupper($s, 'UTF-8');
- }
-
-
- /**
- * Converts the first character of a UTF-8 string to upper case and leaves the other characters unchanged.
- */
- public static function firstUpper(string $s): string
- {
- return self::upper(self::substring($s, 0, 1)) . self::substring($s, 1);
- }
-
-
- /**
- * Converts the first character of every word of a UTF-8 string to upper case and the others to lower case.
- */
- public static function capitalize(string $s): string
- {
- return mb_convert_case($s, MB_CASE_TITLE, 'UTF-8');
- }
-
-
- /**
- * Compares two UTF-8 strings or their parts, without taking character case into account. If length is null, whole strings are compared,
- * if it is negative, the corresponding number of characters from the end of the strings is compared,
- * otherwise the appropriate number of characters from the beginning is compared.
- */
- public static function compare(string $left, string $right, int $length = null): bool
- {
- if (class_exists('Normalizer', false)) {
- $left = \Normalizer::normalize($left, \Normalizer::FORM_D); // form NFD is faster
- $right = \Normalizer::normalize($right, \Normalizer::FORM_D); // form NFD is faster
- }
-
- if ($length < 0) {
- $left = self::substring($left, $length, -$length);
- $right = self::substring($right, $length, -$length);
- } elseif ($length !== null) {
- $left = self::substring($left, 0, $length);
- $right = self::substring($right, 0, $length);
- }
- return self::lower($left) === self::lower($right);
- }
-
-
- /**
- * Finds the common prefix of strings or returns empty string if the prefix was not found.
- * @param string[] $strings
- */
- public static function findPrefix(array $strings): string
- {
- $first = array_shift($strings);
- for ($i = 0; $i < strlen($first); $i++) {
- foreach ($strings as $s) {
- if (!isset($s[$i]) || $first[$i] !== $s[$i]) {
- while ($i && $first[$i - 1] >= "\x80" && $first[$i] >= "\x80" && $first[$i] < "\xC0") {
- $i--;
- }
- return substr($first, 0, $i);
- }
- }
- }
- return $first;
- }
-
-
- /**
- * Returns number of characters (not bytes) in UTF-8 string.
- * That is the number of Unicode code points which may differ from the number of graphemes.
- */
- public static function length(string $s): int
- {
- return function_exists('mb_strlen')
- ? mb_strlen($s, 'UTF-8')
- : strlen(utf8_decode($s));
- }
-
-
- /**
- * Removes all left and right side spaces (or the characters passed as second argument) from a UTF-8 encoded string.
- */
- public static function trim(string $s, string $charlist = self::TRIM_CHARACTERS): string
- {
- $charlist = preg_quote($charlist, '#');
- return self::replace($s, '#^[' . $charlist . ']+|[' . $charlist . ']+$#Du', '');
- }
-
-
- /**
- * Pads a UTF-8 string to given length by prepending the $pad string to the beginning.
- */
- public static function padLeft(string $s, int $length, string $pad = ' '): string
- {
- $length = max(0, $length - self::length($s));
- $padLen = self::length($pad);
- return str_repeat($pad, (int) ($length / $padLen)) . self::substring($pad, 0, $length % $padLen) . $s;
- }
-
-
- /**
- * Pads UTF-8 string to given length by appending the $pad string to the end.
- */
- public static function padRight(string $s, int $length, string $pad = ' '): string
- {
- $length = max(0, $length - self::length($s));
- $padLen = self::length($pad);
- return $s . str_repeat($pad, (int) ($length / $padLen)) . self::substring($pad, 0, $length % $padLen);
- }
-
-
- /**
- * Reverses UTF-8 string.
- */
- public static function reverse(string $s): string
- {
- if (!extension_loaded('iconv')) {
- throw new Nette\NotSupportedException(__METHOD__ . '() requires ICONV extension that is not loaded.');
- }
- return iconv('UTF-32LE', 'UTF-8', strrev(iconv('UTF-8', 'UTF-32BE', $s)));
- }
-
-
- /**
- * Returns part of $haystack before $nth occurence of $needle or returns null if the needle was not found.
- * Negative value means searching from the end.
- */
- public static function before(string $haystack, string $needle, int $nth = 1): ?string
- {
- $pos = self::pos($haystack, $needle, $nth);
- return $pos === null
- ? null
- : substr($haystack, 0, $pos);
- }
-
-
- /**
- * Returns part of $haystack after $nth occurence of $needle or returns null if the needle was not found.
- * Negative value means searching from the end.
- */
- public static function after(string $haystack, string $needle, int $nth = 1): ?string
- {
- $pos = self::pos($haystack, $needle, $nth);
- return $pos === null
- ? null
- : substr($haystack, $pos + strlen($needle));
- }
-
-
- /**
- * Returns position in characters of $nth occurence of $needle in $haystack or null if the $needle was not found.
- * Negative value of `$nth` means searching from the end.
- */
- public static function indexOf(string $haystack, string $needle, int $nth = 1): ?int
- {
- $pos = self::pos($haystack, $needle, $nth);
- return $pos === null
- ? null
- : self::length(substr($haystack, 0, $pos));
- }
-
-
- /**
- * Returns position in characters of $nth occurence of $needle in $haystack or null if the needle was not found.
- */
- private static function pos(string $haystack, string $needle, int $nth = 1): ?int
- {
- if (!$nth) {
- return null;
- } elseif ($nth > 0) {
- if ($needle === '') {
- return 0;
- }
- $pos = 0;
- while (($pos = strpos($haystack, $needle, $pos)) !== false && --$nth) {
- $pos++;
- }
- } else {
- $len = strlen($haystack);
- if ($needle === '') {
- return $len;
- }
- $pos = $len - 1;
- while (($pos = strrpos($haystack, $needle, $pos - $len)) !== false && ++$nth) {
- $pos--;
- }
- }
- return Helpers::falseToNull($pos);
- }
-
-
- /**
- * Splits a string into array by the regular expression.
- * Argument $flag takes same arguments as preg_split(), but PREG_SPLIT_DELIM_CAPTURE is set by default.
- */
- public static function split(string $subject, string $pattern, int $flags = 0): array
- {
- return self::pcre('preg_split', [$pattern, $subject, -1, $flags | PREG_SPLIT_DELIM_CAPTURE]);
- }
-
-
- /**
- * Checks if given string matches a regular expression pattern and returns an array with first found match and each subpattern.
- * Argument $flag takes same arguments as function preg_match().
- */
- public static function match(string $subject, string $pattern, int $flags = 0, int $offset = 0): ?array
- {
- if ($offset > strlen($subject)) {
- return null;
- }
- return self::pcre('preg_match', [$pattern, $subject, &$m, $flags, $offset])
- ? $m
- : null;
- }
-
-
- /**
- * Finds all occurrences matching regular expression pattern and returns a two-dimensional array.
- * Argument $flag takes same arguments as function preg_match_all(), but PREG_SET_ORDER is set by default.
- */
- public static function matchAll(string $subject, string $pattern, int $flags = 0, int $offset = 0): array
- {
- if ($offset > strlen($subject)) {
- return [];
- }
- self::pcre('preg_match_all', [
- $pattern, $subject, &$m,
- ($flags & PREG_PATTERN_ORDER) ? $flags : ($flags | PREG_SET_ORDER),
- $offset,
- ]);
- return $m;
- }
-
-
- /**
- * Replaces all occurrences matching regular expression $pattern which can be string or array in the form `pattern => replacement`.
- * @param string|array $pattern
- * @param string|callable $replacement
- */
- public static function replace(string $subject, $pattern, $replacement = '', int $limit = -1): string
- {
- if (is_object($replacement) || is_array($replacement)) {
- if (!is_callable($replacement, false, $textual)) {
- throw new Nette\InvalidStateException("Callback '$textual' is not callable.");
- }
- return self::pcre('preg_replace_callback', [$pattern, $replacement, $subject, $limit]);
-
- } elseif (is_array($pattern) && is_string(key($pattern))) {
- $replacement = array_values($pattern);
- $pattern = array_keys($pattern);
- }
-
- return self::pcre('preg_replace', [$pattern, $replacement, $subject, $limit]);
- }
-
-
- /** @internal */
- public static function pcre(string $func, array $args)
- {
- $res = Callback::invokeSafe($func, $args, function (string $message) use ($args): void {
- // compile-time error, not detectable by preg_last_error
- throw new RegexpException($message . ' in pattern: ' . implode(' or ', (array) $args[0]));
- });
-
- if (($code = preg_last_error()) // run-time error, but preg_last_error & return code are liars
- && ($res === null || !in_array($func, ['preg_filter', 'preg_replace_callback', 'preg_replace'], true))
- ) {
- throw new RegexpException((RegexpException::MESSAGES[$code] ?? 'Unknown error')
- . ' (pattern: ' . implode(' or ', (array) $args[0]) . ')', $code);
- }
- return $res;
- }
-}
diff --git a/vendor/nette/utils/src/Utils/Type.php b/vendor/nette/utils/src/Utils/Type.php
deleted file mode 100644
index 49d5adbf..00000000
--- a/vendor/nette/utils/src/Utils/Type.php
+++ /dev/null
@@ -1,240 +0,0 @@
-getReturnType() ?? (PHP_VERSION_ID >= 80100 ? $reflection->getTentativeReturnType() : null);
- } else {
- $type = $reflection instanceof \ReflectionFunctionAbstract
- ? $reflection->getReturnType()
- : $reflection->getType();
- }
-
- if ($type === null) {
- return null;
-
- } elseif ($type instanceof \ReflectionNamedType) {
- $name = self::resolve($type->getName(), $reflection);
- return new self($type->allowsNull() && $type->getName() !== 'mixed' ? [$name, 'null'] : [$name]);
-
- } elseif ($type instanceof \ReflectionUnionType || $type instanceof \ReflectionIntersectionType) {
- return new self(
- array_map(
- function ($t) use ($reflection) { return self::resolve($t->getName(), $reflection); },
- $type->getTypes()
- ),
- $type instanceof \ReflectionUnionType ? '|' : '&'
- );
-
- } else {
- throw new Nette\InvalidStateException('Unexpected type of ' . Reflection::toString($reflection));
- }
- }
-
-
- /**
- * Creates the Type object according to the text notation.
- */
- public static function fromString(string $type): self
- {
- if (!preg_match('#(?:
- \?([\w\\\\]+)|
- [\w\\\\]+ (?: (&[\w\\\\]+)* | (\|[\w\\\\]+)* )
- )()$#xAD', $type, $m)) {
- throw new Nette\InvalidArgumentException("Invalid type '$type'.");
- }
- [, $nType, $iType] = $m;
- if ($nType) {
- return new self([$nType, 'null']);
- } elseif ($iType) {
- return new self(explode('&', $type), '&');
- } else {
- return new self(explode('|', $type));
- }
- }
-
-
- /**
- * Resolves 'self', 'static' and 'parent' to the actual class name.
- * @param \ReflectionFunctionAbstract|\ReflectionParameter|\ReflectionProperty $reflection
- */
- public static function resolve(string $type, $reflection): string
- {
- $lower = strtolower($type);
- if ($reflection instanceof \ReflectionFunction) {
- return $type;
- } elseif ($lower === 'self' || $lower === 'static') {
- return $reflection->getDeclaringClass()->name;
- } elseif ($lower === 'parent' && $reflection->getDeclaringClass()->getParentClass()) {
- return $reflection->getDeclaringClass()->getParentClass()->name;
- } else {
- return $type;
- }
- }
-
-
- private function __construct(array $types, string $kind = '|')
- {
- if ($types[0] === 'null') { // null as last
- array_push($types, array_shift($types));
- }
- $this->types = $types;
- $this->single = ($types[1] ?? 'null') === 'null';
- $this->kind = count($types) > 1 ? $kind : '';
- }
-
-
- public function __toString(): string
- {
- return $this->single
- ? (count($this->types) > 1 ? '?' : '') . $this->types[0]
- : implode($this->kind, $this->types);
- }
-
-
- /**
- * Returns the array of subtypes that make up the compound type as strings.
- * @return string[]
- */
- public function getNames(): array
- {
- return $this->types;
- }
-
-
- /**
- * Returns the array of subtypes that make up the compound type as Type objects:
- * @return self[]
- */
- public function getTypes(): array
- {
- return array_map(function ($name) { return self::fromString($name); }, $this->types);
- }
-
-
- /**
- * Returns the type name for single types, otherwise null.
- */
- public function getSingleName(): ?string
- {
- return $this->single
- ? $this->types[0]
- : null;
- }
-
-
- /**
- * Returns true whether it is a union type.
- */
- public function isUnion(): bool
- {
- return $this->kind === '|';
- }
-
-
- /**
- * Returns true whether it is an intersection type.
- */
- public function isIntersection(): bool
- {
- return $this->kind === '&';
- }
-
-
- /**
- * Returns true whether it is a single type. Simple nullable types are also considered to be single types.
- */
- public function isSingle(): bool
- {
- return $this->single;
- }
-
-
- /**
- * Returns true whether the type is both a single and a PHP built-in type.
- */
- public function isBuiltin(): bool
- {
- return $this->single && Reflection::isBuiltinType($this->types[0]);
- }
-
-
- /**
- * Returns true whether the type is both a single and a class name.
- */
- public function isClass(): bool
- {
- return $this->single && !Reflection::isBuiltinType($this->types[0]);
- }
-
-
- /**
- * Verifies type compatibility. For example, it checks if a value of a certain type could be passed as a parameter.
- */
- public function allows(string $type): bool
- {
- if ($this->types === ['mixed']) {
- return true;
- }
-
- $type = self::fromString($type);
-
- if ($this->isIntersection()) {
- if (!$type->isIntersection()) {
- return false;
- }
- return Arrays::every($this->types, function ($currentType) use ($type) {
- $builtin = Reflection::isBuiltinType($currentType);
- return Arrays::some($type->types, function ($testedType) use ($currentType, $builtin) {
- return $builtin
- ? strcasecmp($currentType, $testedType) === 0
- : is_a($testedType, $currentType, true);
- });
- });
- }
-
- $method = $type->isIntersection() ? 'some' : 'every';
- return Arrays::$method($type->types, function ($testedType) {
- $builtin = Reflection::isBuiltinType($testedType);
- return Arrays::some($this->types, function ($currentType) use ($testedType, $builtin) {
- return $builtin
- ? strcasecmp($currentType, $testedType) === 0
- : is_a($testedType, $currentType, true);
- });
- });
- }
-}
diff --git a/vendor/nette/utils/src/Utils/Validators.php b/vendor/nette/utils/src/Utils/Validators.php
deleted file mode 100644
index 9c6b885f..00000000
--- a/vendor/nette/utils/src/Utils/Validators.php
+++ /dev/null
@@ -1,373 +0,0 @@
- */
- protected static $validators = [
- // PHP types
- 'array' => 'is_array',
- 'bool' => 'is_bool',
- 'boolean' => 'is_bool',
- 'float' => 'is_float',
- 'int' => 'is_int',
- 'integer' => 'is_int',
- 'null' => 'is_null',
- 'object' => 'is_object',
- 'resource' => 'is_resource',
- 'scalar' => 'is_scalar',
- 'string' => 'is_string',
-
- // pseudo-types
- 'callable' => [self::class, 'isCallable'],
- 'iterable' => 'is_iterable',
- 'list' => [Arrays::class, 'isList'],
- 'mixed' => [self::class, 'isMixed'],
- 'none' => [self::class, 'isNone'],
- 'number' => [self::class, 'isNumber'],
- 'numeric' => [self::class, 'isNumeric'],
- 'numericint' => [self::class, 'isNumericInt'],
-
- // string patterns
- 'alnum' => 'ctype_alnum',
- 'alpha' => 'ctype_alpha',
- 'digit' => 'ctype_digit',
- 'lower' => 'ctype_lower',
- 'pattern' => null,
- 'space' => 'ctype_space',
- 'unicode' => [self::class, 'isUnicode'],
- 'upper' => 'ctype_upper',
- 'xdigit' => 'ctype_xdigit',
-
- // syntax validation
- 'email' => [self::class, 'isEmail'],
- 'identifier' => [self::class, 'isPhpIdentifier'],
- 'uri' => [self::class, 'isUri'],
- 'url' => [self::class, 'isUrl'],
-
- // environment validation
- 'class' => 'class_exists',
- 'interface' => 'interface_exists',
- 'directory' => 'is_dir',
- 'file' => 'is_file',
- 'type' => [self::class, 'isType'],
- ];
-
- /** @var array */
- protected static $counters = [
- 'string' => 'strlen',
- 'unicode' => [Strings::class, 'length'],
- 'array' => 'count',
- 'list' => 'count',
- 'alnum' => 'strlen',
- 'alpha' => 'strlen',
- 'digit' => 'strlen',
- 'lower' => 'strlen',
- 'space' => 'strlen',
- 'upper' => 'strlen',
- 'xdigit' => 'strlen',
- ];
-
-
- /**
- * Verifies that the value is of expected types separated by pipe.
- * @param mixed $value
- * @throws AssertionException
- */
- public static function assert($value, string $expected, string $label = 'variable'): void
- {
- if (!static::is($value, $expected)) {
- $expected = str_replace(['|', ':'], [' or ', ' in range '], $expected);
- static $translate = ['boolean' => 'bool', 'integer' => 'int', 'double' => 'float', 'NULL' => 'null'];
- $type = $translate[gettype($value)] ?? gettype($value);
- if (is_int($value) || is_float($value) || (is_string($value) && strlen($value) < 40)) {
- $type .= ' ' . var_export($value, true);
- } elseif (is_object($value)) {
- $type .= ' ' . get_class($value);
- }
- throw new AssertionException("The $label expects to be $expected, $type given.");
- }
- }
-
-
- /**
- * Verifies that element $key in array is of expected types separated by pipe.
- * @param mixed[] $array
- * @param int|string $key
- * @throws AssertionException
- */
- public static function assertField(
- array $array,
- $key,
- string $expected = null,
- string $label = "item '%' in array"
- ): void {
- if (!array_key_exists($key, $array)) {
- throw new AssertionException('Missing ' . str_replace('%', $key, $label) . '.');
-
- } elseif ($expected) {
- static::assert($array[$key], $expected, str_replace('%', $key, $label));
- }
- }
-
-
- /**
- * Verifies that the value is of expected types separated by pipe.
- * @param mixed $value
- */
- public static function is($value, string $expected): bool
- {
- foreach (explode('|', $expected) as $item) {
- if (substr($item, -2) === '[]') {
- if (is_iterable($value) && self::everyIs($value, substr($item, 0, -2))) {
- return true;
- }
- continue;
- } elseif (substr($item, 0, 1) === '?') {
- $item = substr($item, 1);
- if ($value === null) {
- return true;
- }
- }
-
- [$type] = $item = explode(':', $item, 2);
- if (isset(static::$validators[$type])) {
- try {
- if (!static::$validators[$type]($value)) {
- continue;
- }
- } catch (\TypeError $e) {
- continue;
- }
- } elseif ($type === 'pattern') {
- if (Strings::match($value, '|^' . ($item[1] ?? '') . '$|D')) {
- return true;
- }
- continue;
- } elseif (!$value instanceof $type) {
- continue;
- }
-
- if (isset($item[1])) {
- $length = $value;
- if (isset(static::$counters[$type])) {
- $length = static::$counters[$type]($value);
- }
- $range = explode('..', $item[1]);
- if (!isset($range[1])) {
- $range[1] = $range[0];
- }
- if (($range[0] !== '' && $length < $range[0]) || ($range[1] !== '' && $length > $range[1])) {
- continue;
- }
- }
- return true;
- }
- return false;
- }
-
-
- /**
- * Finds whether all values are of expected types separated by pipe.
- * @param mixed[] $values
- */
- public static function everyIs(iterable $values, string $expected): bool
- {
- foreach ($values as $value) {
- if (!static::is($value, $expected)) {
- return false;
- }
- }
- return true;
- }
-
-
- /**
- * Checks if the value is an integer or a float.
- * @param mixed $value
- */
- public static function isNumber($value): bool
- {
- return is_int($value) || is_float($value);
- }
-
-
- /**
- * Checks if the value is an integer or a integer written in a string.
- * @param mixed $value
- */
- public static function isNumericInt($value): bool
- {
- return is_int($value) || (is_string($value) && preg_match('#^[+-]?[0-9]+$#D', $value));
- }
-
-
- /**
- * Checks if the value is a number or a number written in a string.
- * @param mixed $value
- */
- public static function isNumeric($value): bool
- {
- return is_float($value) || is_int($value) || (is_string($value) && preg_match('#^[+-]?[0-9]*[.]?[0-9]+$#D', $value));
- }
-
-
- /**
- * Checks if the value is a syntactically correct callback.
- * @param mixed $value
- */
- public static function isCallable($value): bool
- {
- return $value && is_callable($value, true);
- }
-
-
- /**
- * Checks if the value is a valid UTF-8 string.
- * @param mixed $value
- */
- public static function isUnicode($value): bool
- {
- return is_string($value) && preg_match('##u', $value);
- }
-
-
- /**
- * Checks if the value is 0, '', false or null.
- * @param mixed $value
- */
- public static function isNone($value): bool
- {
- return $value == null; // intentionally ==
- }
-
-
- /** @internal */
- public static function isMixed(): bool
- {
- return true;
- }
-
-
- /**
- * Checks if a variable is a zero-based integer indexed array.
- * @param mixed $value
- * @deprecated use Nette\Utils\Arrays::isList
- */
- public static function isList($value): bool
- {
- return Arrays::isList($value);
- }
-
-
- /**
- * Checks if the value is in the given range [min, max], where the upper or lower limit can be omitted (null).
- * Numbers, strings and DateTime objects can be compared.
- * @param mixed $value
- */
- public static function isInRange($value, array $range): bool
- {
- if ($value === null || !(isset($range[0]) || isset($range[1]))) {
- return false;
- }
- $limit = $range[0] ?? $range[1];
- if (is_string($limit)) {
- $value = (string) $value;
- } elseif ($limit instanceof \DateTimeInterface) {
- if (!$value instanceof \DateTimeInterface) {
- return false;
- }
- } elseif (is_numeric($value)) {
- $value *= 1;
- } else {
- return false;
- }
- return (!isset($range[0]) || ($value >= $range[0])) && (!isset($range[1]) || ($value <= $range[1]));
- }
-
-
- /**
- * Checks if the value is a valid email address. It does not verify that the domain actually exists, only the syntax is verified.
- */
- public static function isEmail(string $value): bool
- {
- $atom = "[-a-z0-9!#$%&'*+/=?^_`{|}~]"; // RFC 5322 unquoted characters in local-part
- $alpha = "a-z\x80-\xFF"; // superset of IDN
- return (bool) preg_match(<< 'Internal error',
- PREG_BACKTRACK_LIMIT_ERROR => 'Backtrack limit was exhausted',
- PREG_RECURSION_LIMIT_ERROR => 'Recursion limit was exhausted',
- PREG_BAD_UTF8_ERROR => 'Malformed UTF-8 data',
- PREG_BAD_UTF8_OFFSET_ERROR => 'Offset didn\'t correspond to the begin of a valid UTF-8 code point',
- 6 => 'Failed due to limited JIT stack space', // PREG_JIT_STACKLIMIT_ERROR
- ];
-}
-
-
-/**
- * The exception that indicates assertion error.
- */
-class AssertionException extends \Exception
-{
-}
diff --git a/vendor/nette/utils/src/compatibility.php b/vendor/nette/utils/src/compatibility.php
deleted file mode 100644
index 9df54801..00000000
--- a/vendor/nette/utils/src/compatibility.php
+++ /dev/null
@@ -1,32 +0,0 @@
-= 7.0; for parsing PHP 5.2 to PHP 8.0).
-
-[Documentation for version 3.x][doc_3_x] (unsupported; for running on PHP >= 5.5; for parsing PHP 5.2 to PHP 7.2).
-
-Features
---------
-
-The main features provided by this library are:
-
- * Parsing PHP 5, PHP 7, and PHP 8 code into an abstract syntax tree (AST).
- * Invalid code can be parsed into a partial AST.
- * The AST contains accurate location information.
- * Dumping the AST in human-readable form.
- * Converting an AST back to PHP code.
- * Experimental: Formatting can be preserved for partially changed ASTs.
- * Infrastructure to traverse and modify ASTs.
- * Resolution of namespaced names.
- * Evaluation of constant expressions.
- * Builders to simplify AST construction for code generation.
- * Converting an AST into JSON and back.
-
-Quick Start
------------
-
-Install the library using [composer](https://getcomposer.org):
-
- php composer.phar require nikic/php-parser
-
-Parse some PHP code into an AST and dump the result in human-readable form:
-
-```php
-create(ParserFactory::PREFER_PHP7);
-try {
- $ast = $parser->parse($code);
-} catch (Error $error) {
- echo "Parse error: {$error->getMessage()}\n";
- return;
-}
-
-$dumper = new NodeDumper;
-echo $dumper->dump($ast) . "\n";
-```
-
-This dumps an AST looking something like this:
-
-```
-array(
- 0: Stmt_Function(
- byRef: false
- name: Identifier(
- name: test
- )
- params: array(
- 0: Param(
- type: null
- byRef: false
- variadic: false
- var: Expr_Variable(
- name: foo
- )
- default: null
- )
- )
- returnType: null
- stmts: array(
- 0: Stmt_Expression(
- expr: Expr_FuncCall(
- name: Name(
- parts: array(
- 0: var_dump
- )
- )
- args: array(
- 0: Arg(
- value: Expr_Variable(
- name: foo
- )
- byRef: false
- unpack: false
- )
- )
- )
- )
- )
- )
-)
-```
-
-Let's traverse the AST and perform some kind of modification. For example, drop all function bodies:
-
-```php
-use PhpParser\Node;
-use PhpParser\Node\Stmt\Function_;
-use PhpParser\NodeTraverser;
-use PhpParser\NodeVisitorAbstract;
-
-$traverser = new NodeTraverser();
-$traverser->addVisitor(new class extends NodeVisitorAbstract {
- public function enterNode(Node $node) {
- if ($node instanceof Function_) {
- // Clean out the function body
- $node->stmts = [];
- }
- }
-});
-
-$ast = $traverser->traverse($ast);
-echo $dumper->dump($ast) . "\n";
-```
-
-This gives us an AST where the `Function_::$stmts` are empty:
-
-```
-array(
- 0: Stmt_Function(
- byRef: false
- name: Identifier(
- name: test
- )
- params: array(
- 0: Param(
- type: null
- byRef: false
- variadic: false
- var: Expr_Variable(
- name: foo
- )
- default: null
- )
- )
- returnType: null
- stmts: array(
- )
- )
-)
-```
-
-Finally, we can convert the new AST back to PHP code:
-
-```php
-use PhpParser\PrettyPrinter;
-
-$prettyPrinter = new PrettyPrinter\Standard;
-echo $prettyPrinter->prettyPrintFile($ast);
-```
-
-This gives us our original code, minus the `var_dump()` call inside the function:
-
-```php
- [
- 'startLine', 'endLine', 'startFilePos', 'endFilePos', 'comments'
-]]);
-$parser = (new PhpParser\ParserFactory)->create(
- PhpParser\ParserFactory::PREFER_PHP7,
- $lexer
-);
-$dumper = new PhpParser\NodeDumper([
- 'dumpComments' => true,
- 'dumpPositions' => $attributes['with-positions'],
-]);
-$prettyPrinter = new PhpParser\PrettyPrinter\Standard;
-
-$traverser = new PhpParser\NodeTraverser();
-$traverser->addVisitor(new PhpParser\NodeVisitor\NameResolver);
-
-foreach ($files as $file) {
- if (strpos($file, ' Code $code\n");
- } else {
- if (!file_exists($file)) {
- fwrite(STDERR, "File $file does not exist.\n");
- exit(1);
- }
-
- $code = file_get_contents($file);
- fwrite(STDERR, "====> File $file:\n");
- }
-
- if ($attributes['with-recovery']) {
- $errorHandler = new PhpParser\ErrorHandler\Collecting;
- $stmts = $parser->parse($code, $errorHandler);
- foreach ($errorHandler->getErrors() as $error) {
- $message = formatErrorMessage($error, $code, $attributes['with-column-info']);
- fwrite(STDERR, $message . "\n");
- }
- if (null === $stmts) {
- continue;
- }
- } else {
- try {
- $stmts = $parser->parse($code);
- } catch (PhpParser\Error $error) {
- $message = formatErrorMessage($error, $code, $attributes['with-column-info']);
- fwrite(STDERR, $message . "\n");
- exit(1);
- }
- }
-
- foreach ($operations as $operation) {
- if ('dump' === $operation) {
- fwrite(STDERR, "==> Node dump:\n");
- echo $dumper->dump($stmts, $code), "\n";
- } elseif ('pretty-print' === $operation) {
- fwrite(STDERR, "==> Pretty print:\n");
- echo $prettyPrinter->prettyPrintFile($stmts), "\n";
- } elseif ('json-dump' === $operation) {
- fwrite(STDERR, "==> JSON dump:\n");
- echo json_encode($stmts, JSON_PRETTY_PRINT), "\n";
- } elseif ('var-dump' === $operation) {
- fwrite(STDERR, "==> var_dump():\n");
- var_dump($stmts);
- } elseif ('resolve-names' === $operation) {
- fwrite(STDERR, "==> Resolved names.\n");
- $stmts = $traverser->traverse($stmts);
- }
- }
-}
-
-function formatErrorMessage(PhpParser\Error $e, $code, $withColumnInfo) {
- if ($withColumnInfo && $e->hasColumnInfo()) {
- return $e->getMessageWithColumnInfo($code);
- } else {
- return $e->getMessage();
- }
-}
-
-function showHelp($error = '') {
- if ($error) {
- fwrite(STDERR, $error . "\n\n");
- }
- fwrite($error ? STDERR : STDOUT, << false,
- 'with-positions' => false,
- 'with-recovery' => false,
- ];
-
- array_shift($args);
- $parseOptions = true;
- foreach ($args as $arg) {
- if (!$parseOptions) {
- $files[] = $arg;
- continue;
- }
-
- switch ($arg) {
- case '--dump':
- case '-d':
- $operations[] = 'dump';
- break;
- case '--pretty-print':
- case '-p':
- $operations[] = 'pretty-print';
- break;
- case '--json-dump':
- case '-j':
- $operations[] = 'json-dump';
- break;
- case '--var-dump':
- $operations[] = 'var-dump';
- break;
- case '--resolve-names':
- case '-N';
- $operations[] = 'resolve-names';
- break;
- case '--with-column-info':
- case '-c';
- $attributes['with-column-info'] = true;
- break;
- case '--with-positions':
- case '-P':
- $attributes['with-positions'] = true;
- break;
- case '--with-recovery':
- case '-r':
- $attributes['with-recovery'] = true;
- break;
- case '--help':
- case '-h';
- showHelp();
- break;
- case '--':
- $parseOptions = false;
- break;
- default:
- if ($arg[0] === '-') {
- showHelp("Invalid operation $arg.");
- } else {
- $files[] = $arg;
- }
- }
- }
-
- return [$operations, $files, $attributes];
-}
diff --git a/vendor/nikic/php-parser/composer.json b/vendor/nikic/php-parser/composer.json
deleted file mode 100644
index 2fd064a2..00000000
--- a/vendor/nikic/php-parser/composer.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "name": "nikic/php-parser",
- "type": "library",
- "description": "A PHP parser written in PHP",
- "keywords": [
- "php",
- "parser"
- ],
- "license": "BSD-3-Clause",
- "authors": [
- {
- "name": "Nikita Popov"
- }
- ],
- "require": {
- "php": ">=7.0",
- "ext-tokenizer": "*"
- },
- "require-dev": {
- "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0",
- "ircmaxell/php-yacc": "^0.0.7"
- },
- "extra": {
- "branch-alias": {
- "dev-master": "4.9-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "PhpParser\\": "lib/PhpParser"
- }
- },
- "autoload-dev": {
- "psr-4": {
- "PhpParser\\": "test/PhpParser/"
- }
- },
- "bin": [
- "bin/php-parse"
- ]
-}
diff --git a/vendor/nikic/php-parser/grammar/README.md b/vendor/nikic/php-parser/grammar/README.md
deleted file mode 100644
index 4bae11d8..00000000
--- a/vendor/nikic/php-parser/grammar/README.md
+++ /dev/null
@@ -1,30 +0,0 @@
-What do all those files mean?
-=============================
-
- * `php5.y`: PHP 5 grammar written in a pseudo language
- * `php7.y`: PHP 7 grammar written in a pseudo language
- * `tokens.y`: Tokens definition shared between PHP 5 and PHP 7 grammars
- * `parser.template`: A `kmyacc` parser prototype file for PHP
- * `tokens.template`: A `kmyacc` prototype file for the `Tokens` class
- * `rebuildParsers.php`: Preprocesses the grammar and builds the parser using `kmyacc`
-
-.phpy pseudo language
-=====================
-
-The `.y` file is a normal grammar in `kmyacc` (`yacc`) style, with some transformations
-applied to it:
-
- * Nodes are created using the syntax `Name[..., ...]`. This is transformed into
- `new Name(..., ..., attributes())`
- * Some function-like constructs are resolved (see `rebuildParsers.php` for a list)
-
-Building the parser
-===================
-
-Run `php grammar/rebuildParsers.php` to rebuild the parsers. Additional options:
-
- * The `KMYACC` environment variable can be used to specify an alternative `kmyacc` binary.
- By default the `phpyacc` dev dependency will be used. To use the original `kmyacc`, you
- need to compile [moriyoshi's fork](https://github.com/moriyoshi/kmyacc-forked).
- * The `--debug` option enables emission of debug symbols and creates the `y.output` file.
- * The `--keep-tmp-grammar` option preserves the preprocessed grammar file.
diff --git a/vendor/nikic/php-parser/grammar/parser.template b/vendor/nikic/php-parser/grammar/parser.template
deleted file mode 100644
index 6166607c..00000000
--- a/vendor/nikic/php-parser/grammar/parser.template
+++ /dev/null
@@ -1,106 +0,0 @@
-semValue
-#semval($,%t) $this->semValue
-#semval(%n) $stackPos-(%l-%n)
-#semval(%n,%t) $stackPos-(%l-%n)
-
-namespace PhpParser\Parser;
-
-use PhpParser\Error;
-use PhpParser\Node;
-use PhpParser\Node\Expr;
-use PhpParser\Node\Name;
-use PhpParser\Node\Scalar;
-use PhpParser\Node\Stmt;
-#include;
-
-/* This is an automatically GENERATED file, which should not be manually edited.
- * Instead edit one of the following:
- * * the grammar files grammar/php5.y or grammar/php7.y
- * * the skeleton file grammar/parser.template
- * * the preprocessing script grammar/rebuildParsers.php
- */
-class #(-p) extends \PhpParser\ParserAbstract
-{
- protected $tokenToSymbolMapSize = #(YYMAXLEX);
- protected $actionTableSize = #(YYLAST);
- protected $gotoTableSize = #(YYGLAST);
-
- protected $invalidSymbol = #(YYBADCH);
- protected $errorSymbol = #(YYINTERRTOK);
- protected $defaultAction = #(YYDEFAULT);
- protected $unexpectedTokenRule = #(YYUNEXPECTED);
-
- protected $YY2TBLSTATE = #(YY2TBLSTATE);
- protected $numNonLeafStates = #(YYNLSTATES);
-
- protected $symbolToName = array(
- #listvar terminals
- );
-
- protected $tokenToSymbol = array(
- #listvar yytranslate
- );
-
- protected $action = array(
- #listvar yyaction
- );
-
- protected $actionCheck = array(
- #listvar yycheck
- );
-
- protected $actionBase = array(
- #listvar yybase
- );
-
- protected $actionDefault = array(
- #listvar yydefault
- );
-
- protected $goto = array(
- #listvar yygoto
- );
-
- protected $gotoCheck = array(
- #listvar yygcheck
- );
-
- protected $gotoBase = array(
- #listvar yygbase
- );
-
- protected $gotoDefault = array(
- #listvar yygdefault
- );
-
- protected $ruleToNonTerminal = array(
- #listvar yylhs
- );
-
- protected $ruleToLength = array(
- #listvar yylen
- );
-#if -t
-
- protected $productions = array(
- #production-strings;
- );
-#endif
-
- protected function initReduceCallbacks() {
- $this->reduceCallbacks = [
-#reduce
- %n => function ($stackPos) {
- %b
- },
-#noact
- %n => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
-#endreduce
- ];
- }
-}
-#tailcode;
diff --git a/vendor/nikic/php-parser/grammar/php5.y b/vendor/nikic/php-parser/grammar/php5.y
deleted file mode 100644
index f9e7e7dd..00000000
--- a/vendor/nikic/php-parser/grammar/php5.y
+++ /dev/null
@@ -1,1040 +0,0 @@
-%pure_parser
-%expect 6
-
-%tokens
-
-%%
-
-start:
- top_statement_list { $$ = $this->handleNamespaces($1); }
-;
-
-top_statement_list_ex:
- top_statement_list_ex top_statement { pushNormalizing($1, $2); }
- | /* empty */ { init(); }
-;
-
-top_statement_list:
- top_statement_list_ex
- { makeZeroLengthNop($nop, $this->lookaheadStartAttributes);
- if ($nop !== null) { $1[] = $nop; } $$ = $1; }
-;
-
-ampersand:
- T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG
- | T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG
-;
-
-reserved_non_modifiers:
- T_INCLUDE | T_INCLUDE_ONCE | T_EVAL | T_REQUIRE | T_REQUIRE_ONCE | T_LOGICAL_OR | T_LOGICAL_XOR | T_LOGICAL_AND
- | T_INSTANCEOF | T_NEW | T_CLONE | T_EXIT | T_IF | T_ELSEIF | T_ELSE | T_ENDIF | T_ECHO | T_DO | T_WHILE
- | T_ENDWHILE | T_FOR | T_ENDFOR | T_FOREACH | T_ENDFOREACH | T_DECLARE | T_ENDDECLARE | T_AS | T_TRY | T_CATCH
- | T_FINALLY | T_THROW | T_USE | T_INSTEADOF | T_GLOBAL | T_VAR | T_UNSET | T_ISSET | T_EMPTY | T_CONTINUE | T_GOTO
- | T_FUNCTION | T_CONST | T_RETURN | T_PRINT | T_YIELD | T_LIST | T_SWITCH | T_ENDSWITCH | T_CASE | T_DEFAULT
- | T_BREAK | T_ARRAY | T_CALLABLE | T_EXTENDS | T_IMPLEMENTS | T_NAMESPACE | T_TRAIT | T_INTERFACE | T_CLASS
- | T_CLASS_C | T_TRAIT_C | T_FUNC_C | T_METHOD_C | T_LINE | T_FILE | T_DIR | T_NS_C | T_HALT_COMPILER | T_FN
- | T_MATCH
-;
-
-semi_reserved:
- reserved_non_modifiers
- | T_STATIC | T_ABSTRACT | T_FINAL | T_PRIVATE | T_PROTECTED | T_PUBLIC
-;
-
-identifier_ex:
- T_STRING { $$ = Node\Identifier[$1]; }
- | semi_reserved { $$ = Node\Identifier[$1]; }
-;
-
-identifier:
- T_STRING { $$ = Node\Identifier[$1]; }
-;
-
-reserved_non_modifiers_identifier:
- reserved_non_modifiers { $$ = Node\Identifier[$1]; }
-;
-
-namespace_name:
- T_STRING { $$ = Name[$1]; }
- | T_NAME_QUALIFIED { $$ = Name[$1]; }
-;
-
-legacy_namespace_name:
- namespace_name { $$ = $1; }
- | T_NAME_FULLY_QUALIFIED { $$ = Name[substr($1, 1)]; }
-;
-
-plain_variable:
- T_VARIABLE { $$ = Expr\Variable[parseVar($1)]; }
-;
-
-top_statement:
- statement { $$ = $1; }
- | function_declaration_statement { $$ = $1; }
- | class_declaration_statement { $$ = $1; }
- | T_HALT_COMPILER
- { $$ = Stmt\HaltCompiler[$this->lexer->handleHaltCompiler()]; }
- | T_NAMESPACE namespace_name ';'
- { $$ = Stmt\Namespace_[$2, null];
- $$->setAttribute('kind', Stmt\Namespace_::KIND_SEMICOLON);
- $this->checkNamespace($$); }
- | T_NAMESPACE namespace_name '{' top_statement_list '}'
- { $$ = Stmt\Namespace_[$2, $4];
- $$->setAttribute('kind', Stmt\Namespace_::KIND_BRACED);
- $this->checkNamespace($$); }
- | T_NAMESPACE '{' top_statement_list '}'
- { $$ = Stmt\Namespace_[null, $3];
- $$->setAttribute('kind', Stmt\Namespace_::KIND_BRACED);
- $this->checkNamespace($$); }
- | T_USE use_declarations ';' { $$ = Stmt\Use_[$2, Stmt\Use_::TYPE_NORMAL]; }
- | T_USE use_type use_declarations ';' { $$ = Stmt\Use_[$3, $2]; }
- | group_use_declaration ';' { $$ = $1; }
- | T_CONST constant_declaration_list ';' { $$ = Stmt\Const_[$2]; }
-;
-
-use_type:
- T_FUNCTION { $$ = Stmt\Use_::TYPE_FUNCTION; }
- | T_CONST { $$ = Stmt\Use_::TYPE_CONSTANT; }
-;
-
-group_use_declaration:
- T_USE use_type legacy_namespace_name T_NS_SEPARATOR '{' unprefixed_use_declarations '}'
- { $$ = Stmt\GroupUse[$3, $6, $2]; }
- | T_USE legacy_namespace_name T_NS_SEPARATOR '{' inline_use_declarations '}'
- { $$ = Stmt\GroupUse[$2, $5, Stmt\Use_::TYPE_UNKNOWN]; }
-;
-
-unprefixed_use_declarations:
- unprefixed_use_declarations ',' unprefixed_use_declaration
- { push($1, $3); }
- | unprefixed_use_declaration { init($1); }
-;
-
-use_declarations:
- use_declarations ',' use_declaration { push($1, $3); }
- | use_declaration { init($1); }
-;
-
-inline_use_declarations:
- inline_use_declarations ',' inline_use_declaration { push($1, $3); }
- | inline_use_declaration { init($1); }
-;
-
-unprefixed_use_declaration:
- namespace_name
- { $$ = Stmt\UseUse[$1, null, Stmt\Use_::TYPE_UNKNOWN]; $this->checkUseUse($$, #1); }
- | namespace_name T_AS identifier
- { $$ = Stmt\UseUse[$1, $3, Stmt\Use_::TYPE_UNKNOWN]; $this->checkUseUse($$, #3); }
-;
-
-use_declaration:
- legacy_namespace_name
- { $$ = Stmt\UseUse[$1, null, Stmt\Use_::TYPE_UNKNOWN]; $this->checkUseUse($$, #1); }
- | legacy_namespace_name T_AS identifier
- { $$ = Stmt\UseUse[$1, $3, Stmt\Use_::TYPE_UNKNOWN]; $this->checkUseUse($$, #3); }
-;
-
-inline_use_declaration:
- unprefixed_use_declaration { $$ = $1; $$->type = Stmt\Use_::TYPE_NORMAL; }
- | use_type unprefixed_use_declaration { $$ = $2; $$->type = $1; }
-;
-
-constant_declaration_list:
- constant_declaration_list ',' constant_declaration { push($1, $3); }
- | constant_declaration { init($1); }
-;
-
-constant_declaration:
- identifier '=' static_scalar { $$ = Node\Const_[$1, $3]; }
-;
-
-class_const_list:
- class_const_list ',' class_const { push($1, $3); }
- | class_const { init($1); }
-;
-
-class_const:
- identifier_ex '=' static_scalar { $$ = Node\Const_[$1, $3]; }
-;
-
-inner_statement_list_ex:
- inner_statement_list_ex inner_statement { pushNormalizing($1, $2); }
- | /* empty */ { init(); }
-;
-
-inner_statement_list:
- inner_statement_list_ex
- { makeZeroLengthNop($nop, $this->lookaheadStartAttributes);
- if ($nop !== null) { $1[] = $nop; } $$ = $1; }
-;
-
-inner_statement:
- statement { $$ = $1; }
- | function_declaration_statement { $$ = $1; }
- | class_declaration_statement { $$ = $1; }
- | T_HALT_COMPILER
- { throw new Error('__HALT_COMPILER() can only be used from the outermost scope', attributes()); }
-;
-
-non_empty_statement:
- '{' inner_statement_list '}'
- {
- if ($2) {
- $$ = $2; prependLeadingComments($$);
- } else {
- makeNop($$, $this->startAttributeStack[#1], $this->endAttributes);
- if (null === $$) { $$ = array(); }
- }
- }
- | T_IF parentheses_expr statement elseif_list else_single
- { $$ = Stmt\If_[$2, ['stmts' => toArray($3), 'elseifs' => $4, 'else' => $5]]; }
- | T_IF parentheses_expr ':' inner_statement_list new_elseif_list new_else_single T_ENDIF ';'
- { $$ = Stmt\If_[$2, ['stmts' => $4, 'elseifs' => $5, 'else' => $6]]; }
- | T_WHILE parentheses_expr while_statement { $$ = Stmt\While_[$2, $3]; }
- | T_DO statement T_WHILE parentheses_expr ';' { $$ = Stmt\Do_ [$4, toArray($2)]; }
- | T_FOR '(' for_expr ';' for_expr ';' for_expr ')' for_statement
- { $$ = Stmt\For_[['init' => $3, 'cond' => $5, 'loop' => $7, 'stmts' => $9]]; }
- | T_SWITCH parentheses_expr switch_case_list { $$ = Stmt\Switch_[$2, $3]; }
- | T_BREAK ';' { $$ = Stmt\Break_[null]; }
- | T_BREAK expr ';' { $$ = Stmt\Break_[$2]; }
- | T_CONTINUE ';' { $$ = Stmt\Continue_[null]; }
- | T_CONTINUE expr ';' { $$ = Stmt\Continue_[$2]; }
- | T_RETURN ';' { $$ = Stmt\Return_[null]; }
- | T_RETURN expr ';' { $$ = Stmt\Return_[$2]; }
- | T_GLOBAL global_var_list ';' { $$ = Stmt\Global_[$2]; }
- | T_STATIC static_var_list ';' { $$ = Stmt\Static_[$2]; }
- | T_ECHO expr_list ';' { $$ = Stmt\Echo_[$2]; }
- | T_INLINE_HTML { $$ = Stmt\InlineHTML[$1]; }
- | yield_expr ';' { $$ = Stmt\Expression[$1]; }
- | expr ';' { $$ = Stmt\Expression[$1]; }
- | T_UNSET '(' variables_list ')' ';' { $$ = Stmt\Unset_[$3]; }
- | T_FOREACH '(' expr T_AS foreach_variable ')' foreach_statement
- { $$ = Stmt\Foreach_[$3, $5[0], ['keyVar' => null, 'byRef' => $5[1], 'stmts' => $7]]; }
- | T_FOREACH '(' expr T_AS variable T_DOUBLE_ARROW foreach_variable ')' foreach_statement
- { $$ = Stmt\Foreach_[$3, $7[0], ['keyVar' => $5, 'byRef' => $7[1], 'stmts' => $9]]; }
- | T_DECLARE '(' declare_list ')' declare_statement { $$ = Stmt\Declare_[$3, $5]; }
- | T_TRY '{' inner_statement_list '}' catches optional_finally
- { $$ = Stmt\TryCatch[$3, $5, $6]; $this->checkTryCatch($$); }
- | T_THROW expr ';' { $$ = Stmt\Throw_[$2]; }
- | T_GOTO identifier ';' { $$ = Stmt\Goto_[$2]; }
- | identifier ':' { $$ = Stmt\Label[$1]; }
- | expr error { $$ = Stmt\Expression[$1]; }
- | error { $$ = array(); /* means: no statement */ }
-;
-
-statement:
- non_empty_statement { $$ = $1; }
- | ';'
- { makeNop($$, $this->startAttributeStack[#1], $this->endAttributes);
- if ($$ === null) $$ = array(); /* means: no statement */ }
-;
-
-catches:
- /* empty */ { init(); }
- | catches catch { push($1, $2); }
-;
-
-catch:
- T_CATCH '(' name plain_variable ')' '{' inner_statement_list '}'
- { $$ = Stmt\Catch_[array($3), $4, $7]; }
-;
-
-optional_finally:
- /* empty */ { $$ = null; }
- | T_FINALLY '{' inner_statement_list '}' { $$ = Stmt\Finally_[$3]; }
-;
-
-variables_list:
- variable { init($1); }
- | variables_list ',' variable { push($1, $3); }
-;
-
-optional_ref:
- /* empty */ { $$ = false; }
- | ampersand { $$ = true; }
-;
-
-optional_arg_ref:
- /* empty */ { $$ = false; }
- | T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG { $$ = true; }
-;
-
-optional_ellipsis:
- /* empty */ { $$ = false; }
- | T_ELLIPSIS { $$ = true; }
-;
-
-function_declaration_statement:
- T_FUNCTION optional_ref identifier '(' parameter_list ')' optional_return_type '{' inner_statement_list '}'
- { $$ = Stmt\Function_[$3, ['byRef' => $2, 'params' => $5, 'returnType' => $7, 'stmts' => $9]]; }
-;
-
-class_declaration_statement:
- class_entry_type identifier extends_from implements_list '{' class_statement_list '}'
- { $$ = Stmt\Class_[$2, ['type' => $1, 'extends' => $3, 'implements' => $4, 'stmts' => $6]];
- $this->checkClass($$, #2); }
- | T_INTERFACE identifier interface_extends_list '{' class_statement_list '}'
- { $$ = Stmt\Interface_[$2, ['extends' => $3, 'stmts' => $5]];
- $this->checkInterface($$, #2); }
- | T_TRAIT identifier '{' class_statement_list '}'
- { $$ = Stmt\Trait_[$2, ['stmts' => $4]]; }
-;
-
-class_entry_type:
- T_CLASS { $$ = 0; }
- | T_ABSTRACT T_CLASS { $$ = Stmt\Class_::MODIFIER_ABSTRACT; }
- | T_FINAL T_CLASS { $$ = Stmt\Class_::MODIFIER_FINAL; }
-;
-
-extends_from:
- /* empty */ { $$ = null; }
- | T_EXTENDS class_name { $$ = $2; }
-;
-
-interface_extends_list:
- /* empty */ { $$ = array(); }
- | T_EXTENDS class_name_list { $$ = $2; }
-;
-
-implements_list:
- /* empty */ { $$ = array(); }
- | T_IMPLEMENTS class_name_list { $$ = $2; }
-;
-
-class_name_list:
- class_name { init($1); }
- | class_name_list ',' class_name { push($1, $3); }
-;
-
-for_statement:
- statement { $$ = toArray($1); }
- | ':' inner_statement_list T_ENDFOR ';' { $$ = $2; }
-;
-
-foreach_statement:
- statement { $$ = toArray($1); }
- | ':' inner_statement_list T_ENDFOREACH ';' { $$ = $2; }
-;
-
-declare_statement:
- non_empty_statement { $$ = toArray($1); }
- | ';' { $$ = null; }
- | ':' inner_statement_list T_ENDDECLARE ';' { $$ = $2; }
-;
-
-declare_list:
- declare_list_element { init($1); }
- | declare_list ',' declare_list_element { push($1, $3); }
-;
-
-declare_list_element:
- identifier '=' static_scalar { $$ = Stmt\DeclareDeclare[$1, $3]; }
-;
-
-switch_case_list:
- '{' case_list '}' { $$ = $2; }
- | '{' ';' case_list '}' { $$ = $3; }
- | ':' case_list T_ENDSWITCH ';' { $$ = $2; }
- | ':' ';' case_list T_ENDSWITCH ';' { $$ = $3; }
-;
-
-case_list:
- /* empty */ { init(); }
- | case_list case { push($1, $2); }
-;
-
-case:
- T_CASE expr case_separator inner_statement_list_ex { $$ = Stmt\Case_[$2, $4]; }
- | T_DEFAULT case_separator inner_statement_list_ex { $$ = Stmt\Case_[null, $3]; }
-;
-
-case_separator:
- ':'
- | ';'
-;
-
-while_statement:
- statement { $$ = toArray($1); }
- | ':' inner_statement_list T_ENDWHILE ';' { $$ = $2; }
-;
-
-elseif_list:
- /* empty */ { init(); }
- | elseif_list elseif { push($1, $2); }
-;
-
-elseif:
- T_ELSEIF parentheses_expr statement { $$ = Stmt\ElseIf_[$2, toArray($3)]; }
-;
-
-new_elseif_list:
- /* empty */ { init(); }
- | new_elseif_list new_elseif { push($1, $2); }
-;
-
-new_elseif:
- T_ELSEIF parentheses_expr ':' inner_statement_list { $$ = Stmt\ElseIf_[$2, $4]; }
-;
-
-else_single:
- /* empty */ { $$ = null; }
- | T_ELSE statement { $$ = Stmt\Else_[toArray($2)]; }
-;
-
-new_else_single:
- /* empty */ { $$ = null; }
- | T_ELSE ':' inner_statement_list { $$ = Stmt\Else_[$3]; }
-;
-
-foreach_variable:
- variable { $$ = array($1, false); }
- | ampersand variable { $$ = array($2, true); }
- | list_expr { $$ = array($1, false); }
-;
-
-parameter_list:
- non_empty_parameter_list { $$ = $1; }
- | /* empty */ { $$ = array(); }
-;
-
-non_empty_parameter_list:
- parameter { init($1); }
- | non_empty_parameter_list ',' parameter { push($1, $3); }
-;
-
-parameter:
- optional_param_type optional_arg_ref optional_ellipsis plain_variable
- { $$ = Node\Param[$4, null, $1, $2, $3]; $this->checkParam($$); }
- | optional_param_type optional_arg_ref optional_ellipsis plain_variable '=' static_scalar
- { $$ = Node\Param[$4, $6, $1, $2, $3]; $this->checkParam($$); }
-;
-
-type:
- name { $$ = $1; }
- | T_ARRAY { $$ = Node\Identifier['array']; }
- | T_CALLABLE { $$ = Node\Identifier['callable']; }
-;
-
-optional_param_type:
- /* empty */ { $$ = null; }
- | type { $$ = $1; }
-;
-
-optional_return_type:
- /* empty */ { $$ = null; }
- | ':' type { $$ = $2; }
-;
-
-argument_list:
- '(' ')' { $$ = array(); }
- | '(' non_empty_argument_list ')' { $$ = $2; }
- | '(' yield_expr ')' { $$ = array(Node\Arg[$2, false, false]); }
-;
-
-non_empty_argument_list:
- argument { init($1); }
- | non_empty_argument_list ',' argument { push($1, $3); }
-;
-
-argument:
- expr { $$ = Node\Arg[$1, false, false]; }
- | ampersand variable { $$ = Node\Arg[$2, true, false]; }
- | T_ELLIPSIS expr { $$ = Node\Arg[$2, false, true]; }
-;
-
-global_var_list:
- global_var_list ',' global_var { push($1, $3); }
- | global_var { init($1); }
-;
-
-global_var:
- plain_variable { $$ = $1; }
- | '$' variable { $$ = Expr\Variable[$2]; }
- | '$' '{' expr '}' { $$ = Expr\Variable[$3]; }
-;
-
-static_var_list:
- static_var_list ',' static_var { push($1, $3); }
- | static_var { init($1); }
-;
-
-static_var:
- plain_variable { $$ = Stmt\StaticVar[$1, null]; }
- | plain_variable '=' static_scalar { $$ = Stmt\StaticVar[$1, $3]; }
-;
-
-class_statement_list_ex:
- class_statement_list_ex class_statement { if ($2 !== null) { push($1, $2); } }
- | /* empty */ { init(); }
-;
-
-class_statement_list:
- class_statement_list_ex
- { makeZeroLengthNop($nop, $this->lookaheadStartAttributes);
- if ($nop !== null) { $1[] = $nop; } $$ = $1; }
-;
-
-class_statement:
- variable_modifiers property_declaration_list ';'
- { $$ = Stmt\Property[$1, $2]; $this->checkProperty($$, #1); }
- | T_CONST class_const_list ';' { $$ = Stmt\ClassConst[$2, 0]; }
- | method_modifiers T_FUNCTION optional_ref identifier_ex '(' parameter_list ')' optional_return_type method_body
- { $$ = Stmt\ClassMethod[$4, ['type' => $1, 'byRef' => $3, 'params' => $6, 'returnType' => $8, 'stmts' => $9]];
- $this->checkClassMethod($$, #1); }
- | T_USE class_name_list trait_adaptations { $$ = Stmt\TraitUse[$2, $3]; }
-;
-
-trait_adaptations:
- ';' { $$ = array(); }
- | '{' trait_adaptation_list '}' { $$ = $2; }
-;
-
-trait_adaptation_list:
- /* empty */ { init(); }
- | trait_adaptation_list trait_adaptation { push($1, $2); }
-;
-
-trait_adaptation:
- trait_method_reference_fully_qualified T_INSTEADOF class_name_list ';'
- { $$ = Stmt\TraitUseAdaptation\Precedence[$1[0], $1[1], $3]; }
- | trait_method_reference T_AS member_modifier identifier_ex ';'
- { $$ = Stmt\TraitUseAdaptation\Alias[$1[0], $1[1], $3, $4]; }
- | trait_method_reference T_AS member_modifier ';'
- { $$ = Stmt\TraitUseAdaptation\Alias[$1[0], $1[1], $3, null]; }
- | trait_method_reference T_AS identifier ';'
- { $$ = Stmt\TraitUseAdaptation\Alias[$1[0], $1[1], null, $3]; }
- | trait_method_reference T_AS reserved_non_modifiers_identifier ';'
- { $$ = Stmt\TraitUseAdaptation\Alias[$1[0], $1[1], null, $3]; }
-;
-
-trait_method_reference_fully_qualified:
- name T_PAAMAYIM_NEKUDOTAYIM identifier_ex { $$ = array($1, $3); }
-;
-trait_method_reference:
- trait_method_reference_fully_qualified { $$ = $1; }
- | identifier_ex { $$ = array(null, $1); }
-;
-
-method_body:
- ';' /* abstract method */ { $$ = null; }
- | '{' inner_statement_list '}' { $$ = $2; }
-;
-
-variable_modifiers:
- non_empty_member_modifiers { $$ = $1; }
- | T_VAR { $$ = 0; }
-;
-
-method_modifiers:
- /* empty */ { $$ = 0; }
- | non_empty_member_modifiers { $$ = $1; }
-;
-
-non_empty_member_modifiers:
- member_modifier { $$ = $1; }
- | non_empty_member_modifiers member_modifier { $this->checkModifier($1, $2, #2); $$ = $1 | $2; }
-;
-
-member_modifier:
- T_PUBLIC { $$ = Stmt\Class_::MODIFIER_PUBLIC; }
- | T_PROTECTED { $$ = Stmt\Class_::MODIFIER_PROTECTED; }
- | T_PRIVATE { $$ = Stmt\Class_::MODIFIER_PRIVATE; }
- | T_STATIC { $$ = Stmt\Class_::MODIFIER_STATIC; }
- | T_ABSTRACT { $$ = Stmt\Class_::MODIFIER_ABSTRACT; }
- | T_FINAL { $$ = Stmt\Class_::MODIFIER_FINAL; }
-;
-
-property_declaration_list:
- property_declaration { init($1); }
- | property_declaration_list ',' property_declaration { push($1, $3); }
-;
-
-property_decl_name:
- T_VARIABLE { $$ = Node\VarLikeIdentifier[parseVar($1)]; }
-;
-
-property_declaration:
- property_decl_name { $$ = Stmt\PropertyProperty[$1, null]; }
- | property_decl_name '=' static_scalar { $$ = Stmt\PropertyProperty[$1, $3]; }
-;
-
-expr_list:
- expr_list ',' expr { push($1, $3); }
- | expr { init($1); }
-;
-
-for_expr:
- /* empty */ { $$ = array(); }
- | expr_list { $$ = $1; }
-;
-
-expr:
- variable { $$ = $1; }
- | list_expr '=' expr { $$ = Expr\Assign[$1, $3]; }
- | variable '=' expr { $$ = Expr\Assign[$1, $3]; }
- | variable '=' ampersand variable { $$ = Expr\AssignRef[$1, $4]; }
- | variable '=' ampersand new_expr { $$ = Expr\AssignRef[$1, $4]; }
- | new_expr { $$ = $1; }
- | T_CLONE expr { $$ = Expr\Clone_[$2]; }
- | variable T_PLUS_EQUAL expr { $$ = Expr\AssignOp\Plus [$1, $3]; }
- | variable T_MINUS_EQUAL expr { $$ = Expr\AssignOp\Minus [$1, $3]; }
- | variable T_MUL_EQUAL expr { $$ = Expr\AssignOp\Mul [$1, $3]; }
- | variable T_DIV_EQUAL expr { $$ = Expr\AssignOp\Div [$1, $3]; }
- | variable T_CONCAT_EQUAL expr { $$ = Expr\AssignOp\Concat [$1, $3]; }
- | variable T_MOD_EQUAL expr { $$ = Expr\AssignOp\Mod [$1, $3]; }
- | variable T_AND_EQUAL expr { $$ = Expr\AssignOp\BitwiseAnd[$1, $3]; }
- | variable T_OR_EQUAL expr { $$ = Expr\AssignOp\BitwiseOr [$1, $3]; }
- | variable T_XOR_EQUAL expr { $$ = Expr\AssignOp\BitwiseXor[$1, $3]; }
- | variable T_SL_EQUAL expr { $$ = Expr\AssignOp\ShiftLeft [$1, $3]; }
- | variable T_SR_EQUAL expr { $$ = Expr\AssignOp\ShiftRight[$1, $3]; }
- | variable T_POW_EQUAL expr { $$ = Expr\AssignOp\Pow [$1, $3]; }
- | variable T_COALESCE_EQUAL expr { $$ = Expr\AssignOp\Coalesce [$1, $3]; }
- | variable T_INC { $$ = Expr\PostInc[$1]; }
- | T_INC variable { $$ = Expr\PreInc [$2]; }
- | variable T_DEC { $$ = Expr\PostDec[$1]; }
- | T_DEC variable { $$ = Expr\PreDec [$2]; }
- | expr T_BOOLEAN_OR expr { $$ = Expr\BinaryOp\BooleanOr [$1, $3]; }
- | expr T_BOOLEAN_AND expr { $$ = Expr\BinaryOp\BooleanAnd[$1, $3]; }
- | expr T_LOGICAL_OR expr { $$ = Expr\BinaryOp\LogicalOr [$1, $3]; }
- | expr T_LOGICAL_AND expr { $$ = Expr\BinaryOp\LogicalAnd[$1, $3]; }
- | expr T_LOGICAL_XOR expr { $$ = Expr\BinaryOp\LogicalXor[$1, $3]; }
- | expr '|' expr { $$ = Expr\BinaryOp\BitwiseOr [$1, $3]; }
- | expr T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG expr { $$ = Expr\BinaryOp\BitwiseAnd[$1, $3]; }
- | expr T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG expr { $$ = Expr\BinaryOp\BitwiseAnd[$1, $3]; }
- | expr '^' expr { $$ = Expr\BinaryOp\BitwiseXor[$1, $3]; }
- | expr '.' expr { $$ = Expr\BinaryOp\Concat [$1, $3]; }
- | expr '+' expr { $$ = Expr\BinaryOp\Plus [$1, $3]; }
- | expr '-' expr { $$ = Expr\BinaryOp\Minus [$1, $3]; }
- | expr '*' expr { $$ = Expr\BinaryOp\Mul [$1, $3]; }
- | expr '/' expr { $$ = Expr\BinaryOp\Div [$1, $3]; }
- | expr '%' expr { $$ = Expr\BinaryOp\Mod [$1, $3]; }
- | expr T_SL expr { $$ = Expr\BinaryOp\ShiftLeft [$1, $3]; }
- | expr T_SR expr { $$ = Expr\BinaryOp\ShiftRight[$1, $3]; }
- | expr T_POW expr { $$ = Expr\BinaryOp\Pow [$1, $3]; }
- | '+' expr %prec T_INC { $$ = Expr\UnaryPlus [$2]; }
- | '-' expr %prec T_INC { $$ = Expr\UnaryMinus[$2]; }
- | '!' expr { $$ = Expr\BooleanNot[$2]; }
- | '~' expr { $$ = Expr\BitwiseNot[$2]; }
- | expr T_IS_IDENTICAL expr { $$ = Expr\BinaryOp\Identical [$1, $3]; }
- | expr T_IS_NOT_IDENTICAL expr { $$ = Expr\BinaryOp\NotIdentical [$1, $3]; }
- | expr T_IS_EQUAL expr { $$ = Expr\BinaryOp\Equal [$1, $3]; }
- | expr T_IS_NOT_EQUAL expr { $$ = Expr\BinaryOp\NotEqual [$1, $3]; }
- | expr T_SPACESHIP expr { $$ = Expr\BinaryOp\Spaceship [$1, $3]; }
- | expr '<' expr { $$ = Expr\BinaryOp\Smaller [$1, $3]; }
- | expr T_IS_SMALLER_OR_EQUAL expr { $$ = Expr\BinaryOp\SmallerOrEqual[$1, $3]; }
- | expr '>' expr { $$ = Expr\BinaryOp\Greater [$1, $3]; }
- | expr T_IS_GREATER_OR_EQUAL expr { $$ = Expr\BinaryOp\GreaterOrEqual[$1, $3]; }
- | expr T_INSTANCEOF class_name_reference { $$ = Expr\Instanceof_[$1, $3]; }
- | parentheses_expr { $$ = $1; }
- /* we need a separate '(' new_expr ')' rule to avoid problems caused by a s/r conflict */
- | '(' new_expr ')' { $$ = $2; }
- | expr '?' expr ':' expr { $$ = Expr\Ternary[$1, $3, $5]; }
- | expr '?' ':' expr { $$ = Expr\Ternary[$1, null, $4]; }
- | expr T_COALESCE expr { $$ = Expr\BinaryOp\Coalesce[$1, $3]; }
- | T_ISSET '(' variables_list ')' { $$ = Expr\Isset_[$3]; }
- | T_EMPTY '(' expr ')' { $$ = Expr\Empty_[$3]; }
- | T_INCLUDE expr { $$ = Expr\Include_[$2, Expr\Include_::TYPE_INCLUDE]; }
- | T_INCLUDE_ONCE expr { $$ = Expr\Include_[$2, Expr\Include_::TYPE_INCLUDE_ONCE]; }
- | T_EVAL parentheses_expr { $$ = Expr\Eval_[$2]; }
- | T_REQUIRE expr { $$ = Expr\Include_[$2, Expr\Include_::TYPE_REQUIRE]; }
- | T_REQUIRE_ONCE expr { $$ = Expr\Include_[$2, Expr\Include_::TYPE_REQUIRE_ONCE]; }
- | T_INT_CAST expr { $$ = Expr\Cast\Int_ [$2]; }
- | T_DOUBLE_CAST expr
- { $attrs = attributes();
- $attrs['kind'] = $this->getFloatCastKind($1);
- $$ = new Expr\Cast\Double($2, $attrs); }
- | T_STRING_CAST expr { $$ = Expr\Cast\String_ [$2]; }
- | T_ARRAY_CAST expr { $$ = Expr\Cast\Array_ [$2]; }
- | T_OBJECT_CAST expr { $$ = Expr\Cast\Object_ [$2]; }
- | T_BOOL_CAST expr { $$ = Expr\Cast\Bool_ [$2]; }
- | T_UNSET_CAST expr { $$ = Expr\Cast\Unset_ [$2]; }
- | T_EXIT exit_expr
- { $attrs = attributes();
- $attrs['kind'] = strtolower($1) === 'exit' ? Expr\Exit_::KIND_EXIT : Expr\Exit_::KIND_DIE;
- $$ = new Expr\Exit_($2, $attrs); }
- | '@' expr { $$ = Expr\ErrorSuppress[$2]; }
- | scalar { $$ = $1; }
- | array_expr { $$ = $1; }
- | scalar_dereference { $$ = $1; }
- | '`' backticks_expr '`' { $$ = Expr\ShellExec[$2]; }
- | T_PRINT expr { $$ = Expr\Print_[$2]; }
- | T_YIELD { $$ = Expr\Yield_[null, null]; }
- | T_YIELD_FROM expr { $$ = Expr\YieldFrom[$2]; }
- | T_FUNCTION optional_ref '(' parameter_list ')' lexical_vars optional_return_type
- '{' inner_statement_list '}'
- { $$ = Expr\Closure[['static' => false, 'byRef' => $2, 'params' => $4, 'uses' => $6, 'returnType' => $7, 'stmts' => $9]]; }
- | T_STATIC T_FUNCTION optional_ref '(' parameter_list ')' lexical_vars optional_return_type
- '{' inner_statement_list '}'
- { $$ = Expr\Closure[['static' => true, 'byRef' => $3, 'params' => $5, 'uses' => $7, 'returnType' => $8, 'stmts' => $10]]; }
-;
-
-parentheses_expr:
- '(' expr ')' { $$ = $2; }
- | '(' yield_expr ')' { $$ = $2; }
-;
-
-yield_expr:
- T_YIELD expr { $$ = Expr\Yield_[$2, null]; }
- | T_YIELD expr T_DOUBLE_ARROW expr { $$ = Expr\Yield_[$4, $2]; }
-;
-
-array_expr:
- T_ARRAY '(' array_pair_list ')'
- { $attrs = attributes(); $attrs['kind'] = Expr\Array_::KIND_LONG;
- $$ = new Expr\Array_($3, $attrs); }
- | '[' array_pair_list ']'
- { $attrs = attributes(); $attrs['kind'] = Expr\Array_::KIND_SHORT;
- $$ = new Expr\Array_($2, $attrs); }
-;
-
-scalar_dereference:
- array_expr '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
- | T_CONSTANT_ENCAPSED_STRING '[' dim_offset ']'
- { $attrs = attributes(); $attrs['kind'] = strKind($1);
- $$ = Expr\ArrayDimFetch[new Scalar\String_(Scalar\String_::parse($1), $attrs), $3]; }
- | constant '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
- | scalar_dereference '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
- /* alternative array syntax missing intentionally */
-;
-
-anonymous_class:
- T_CLASS ctor_arguments extends_from implements_list '{' class_statement_list '}'
- { $$ = array(Stmt\Class_[null, ['type' => 0, 'extends' => $3, 'implements' => $4, 'stmts' => $6]], $2);
- $this->checkClass($$[0], -1); }
-;
-
-new_expr:
- T_NEW class_name_reference ctor_arguments { $$ = Expr\New_[$2, $3]; }
- | T_NEW anonymous_class
- { list($class, $ctorArgs) = $2; $$ = Expr\New_[$class, $ctorArgs]; }
-;
-
-lexical_vars:
- /* empty */ { $$ = array(); }
- | T_USE '(' lexical_var_list ')' { $$ = $3; }
-;
-
-lexical_var_list:
- lexical_var { init($1); }
- | lexical_var_list ',' lexical_var { push($1, $3); }
-;
-
-lexical_var:
- optional_ref plain_variable { $$ = Expr\ClosureUse[$2, $1]; }
-;
-
-function_call:
- name argument_list { $$ = Expr\FuncCall[$1, $2]; }
- | class_name_or_var T_PAAMAYIM_NEKUDOTAYIM identifier_ex argument_list
- { $$ = Expr\StaticCall[$1, $3, $4]; }
- | class_name_or_var T_PAAMAYIM_NEKUDOTAYIM '{' expr '}' argument_list
- { $$ = Expr\StaticCall[$1, $4, $6]; }
- | static_property argument_list
- { $$ = $this->fixupPhp5StaticPropCall($1, $2, attributes()); }
- | variable_without_objects argument_list
- { $$ = Expr\FuncCall[$1, $2]; }
- | function_call '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
- /* alternative array syntax missing intentionally */
-;
-
-class_name:
- T_STATIC { $$ = Name[$1]; }
- | name { $$ = $1; }
-;
-
-name:
- T_STRING { $$ = Name[$1]; }
- | T_NAME_QUALIFIED { $$ = Name[$1]; }
- | T_NAME_FULLY_QUALIFIED { $$ = Name\FullyQualified[substr($1, 1)]; }
- | T_NAME_RELATIVE { $$ = Name\Relative[substr($1, 10)]; }
-;
-
-class_name_reference:
- class_name { $$ = $1; }
- | dynamic_class_name_reference { $$ = $1; }
-;
-
-dynamic_class_name_reference:
- object_access_for_dcnr { $$ = $1; }
- | base_variable { $$ = $1; }
-;
-
-class_name_or_var:
- class_name { $$ = $1; }
- | reference_variable { $$ = $1; }
-;
-
-object_access_for_dcnr:
- base_variable T_OBJECT_OPERATOR object_property
- { $$ = Expr\PropertyFetch[$1, $3]; }
- | object_access_for_dcnr T_OBJECT_OPERATOR object_property
- { $$ = Expr\PropertyFetch[$1, $3]; }
- | object_access_for_dcnr '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
- | object_access_for_dcnr '{' expr '}' { $$ = Expr\ArrayDimFetch[$1, $3]; }
-;
-
-exit_expr:
- /* empty */ { $$ = null; }
- | '(' ')' { $$ = null; }
- | parentheses_expr { $$ = $1; }
-;
-
-backticks_expr:
- /* empty */ { $$ = array(); }
- | T_ENCAPSED_AND_WHITESPACE
- { $$ = array(Scalar\EncapsedStringPart[Scalar\String_::parseEscapeSequences($1, '`', false)]); }
- | encaps_list { parseEncapsed($1, '`', false); $$ = $1; }
-;
-
-ctor_arguments:
- /* empty */ { $$ = array(); }
- | argument_list { $$ = $1; }
-;
-
-common_scalar:
- T_LNUMBER { $$ = $this->parseLNumber($1, attributes(), true); }
- | T_DNUMBER { $$ = Scalar\DNumber[Scalar\DNumber::parse($1)]; }
- | T_CONSTANT_ENCAPSED_STRING
- { $attrs = attributes(); $attrs['kind'] = strKind($1);
- $$ = new Scalar\String_(Scalar\String_::parse($1, false), $attrs); }
- | T_LINE { $$ = Scalar\MagicConst\Line[]; }
- | T_FILE { $$ = Scalar\MagicConst\File[]; }
- | T_DIR { $$ = Scalar\MagicConst\Dir[]; }
- | T_CLASS_C { $$ = Scalar\MagicConst\Class_[]; }
- | T_TRAIT_C { $$ = Scalar\MagicConst\Trait_[]; }
- | T_METHOD_C { $$ = Scalar\MagicConst\Method[]; }
- | T_FUNC_C { $$ = Scalar\MagicConst\Function_[]; }
- | T_NS_C { $$ = Scalar\MagicConst\Namespace_[]; }
- | T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC
- { $$ = $this->parseDocString($1, $2, $3, attributes(), stackAttributes(#3), false); }
- | T_START_HEREDOC T_END_HEREDOC
- { $$ = $this->parseDocString($1, '', $2, attributes(), stackAttributes(#2), false); }
-;
-
-static_scalar:
- common_scalar { $$ = $1; }
- | class_name T_PAAMAYIM_NEKUDOTAYIM identifier_ex { $$ = Expr\ClassConstFetch[$1, $3]; }
- | name { $$ = Expr\ConstFetch[$1]; }
- | T_ARRAY '(' static_array_pair_list ')' { $$ = Expr\Array_[$3]; }
- | '[' static_array_pair_list ']' { $$ = Expr\Array_[$2]; }
- | static_operation { $$ = $1; }
-;
-
-static_operation:
- static_scalar T_BOOLEAN_OR static_scalar { $$ = Expr\BinaryOp\BooleanOr [$1, $3]; }
- | static_scalar T_BOOLEAN_AND static_scalar { $$ = Expr\BinaryOp\BooleanAnd[$1, $3]; }
- | static_scalar T_LOGICAL_OR static_scalar { $$ = Expr\BinaryOp\LogicalOr [$1, $3]; }
- | static_scalar T_LOGICAL_AND static_scalar { $$ = Expr\BinaryOp\LogicalAnd[$1, $3]; }
- | static_scalar T_LOGICAL_XOR static_scalar { $$ = Expr\BinaryOp\LogicalXor[$1, $3]; }
- | static_scalar '|' static_scalar { $$ = Expr\BinaryOp\BitwiseOr [$1, $3]; }
- | static_scalar T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG static_scalar
- { $$ = Expr\BinaryOp\BitwiseAnd[$1, $3]; }
- | static_scalar T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG static_scalar
- { $$ = Expr\BinaryOp\BitwiseAnd[$1, $3]; }
- | static_scalar '^' static_scalar { $$ = Expr\BinaryOp\BitwiseXor[$1, $3]; }
- | static_scalar '.' static_scalar { $$ = Expr\BinaryOp\Concat [$1, $3]; }
- | static_scalar '+' static_scalar { $$ = Expr\BinaryOp\Plus [$1, $3]; }
- | static_scalar '-' static_scalar { $$ = Expr\BinaryOp\Minus [$1, $3]; }
- | static_scalar '*' static_scalar { $$ = Expr\BinaryOp\Mul [$1, $3]; }
- | static_scalar '/' static_scalar { $$ = Expr\BinaryOp\Div [$1, $3]; }
- | static_scalar '%' static_scalar { $$ = Expr\BinaryOp\Mod [$1, $3]; }
- | static_scalar T_SL static_scalar { $$ = Expr\BinaryOp\ShiftLeft [$1, $3]; }
- | static_scalar T_SR static_scalar { $$ = Expr\BinaryOp\ShiftRight[$1, $3]; }
- | static_scalar T_POW static_scalar { $$ = Expr\BinaryOp\Pow [$1, $3]; }
- | '+' static_scalar %prec T_INC { $$ = Expr\UnaryPlus [$2]; }
- | '-' static_scalar %prec T_INC { $$ = Expr\UnaryMinus[$2]; }
- | '!' static_scalar { $$ = Expr\BooleanNot[$2]; }
- | '~' static_scalar { $$ = Expr\BitwiseNot[$2]; }
- | static_scalar T_IS_IDENTICAL static_scalar { $$ = Expr\BinaryOp\Identical [$1, $3]; }
- | static_scalar T_IS_NOT_IDENTICAL static_scalar { $$ = Expr\BinaryOp\NotIdentical [$1, $3]; }
- | static_scalar T_IS_EQUAL static_scalar { $$ = Expr\BinaryOp\Equal [$1, $3]; }
- | static_scalar T_IS_NOT_EQUAL static_scalar { $$ = Expr\BinaryOp\NotEqual [$1, $3]; }
- | static_scalar '<' static_scalar { $$ = Expr\BinaryOp\Smaller [$1, $3]; }
- | static_scalar T_IS_SMALLER_OR_EQUAL static_scalar { $$ = Expr\BinaryOp\SmallerOrEqual[$1, $3]; }
- | static_scalar '>' static_scalar { $$ = Expr\BinaryOp\Greater [$1, $3]; }
- | static_scalar T_IS_GREATER_OR_EQUAL static_scalar { $$ = Expr\BinaryOp\GreaterOrEqual[$1, $3]; }
- | static_scalar '?' static_scalar ':' static_scalar { $$ = Expr\Ternary[$1, $3, $5]; }
- | static_scalar '?' ':' static_scalar { $$ = Expr\Ternary[$1, null, $4]; }
- | static_scalar '[' static_scalar ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
- | '(' static_scalar ')' { $$ = $2; }
-;
-
-constant:
- name { $$ = Expr\ConstFetch[$1]; }
- | class_name_or_var T_PAAMAYIM_NEKUDOTAYIM identifier_ex
- { $$ = Expr\ClassConstFetch[$1, $3]; }
-;
-
-scalar:
- common_scalar { $$ = $1; }
- | constant { $$ = $1; }
- | '"' encaps_list '"'
- { $attrs = attributes(); $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED;
- parseEncapsed($2, '"', true); $$ = new Scalar\Encapsed($2, $attrs); }
- | T_START_HEREDOC encaps_list T_END_HEREDOC
- { $$ = $this->parseDocString($1, $2, $3, attributes(), stackAttributes(#3), true); }
-;
-
-static_array_pair_list:
- /* empty */ { $$ = array(); }
- | non_empty_static_array_pair_list optional_comma { $$ = $1; }
-;
-
-optional_comma:
- /* empty */
- | ','
-;
-
-non_empty_static_array_pair_list:
- non_empty_static_array_pair_list ',' static_array_pair { push($1, $3); }
- | static_array_pair { init($1); }
-;
-
-static_array_pair:
- static_scalar T_DOUBLE_ARROW static_scalar { $$ = Expr\ArrayItem[$3, $1, false]; }
- | static_scalar { $$ = Expr\ArrayItem[$1, null, false]; }
-;
-
-variable:
- object_access { $$ = $1; }
- | base_variable { $$ = $1; }
- | function_call { $$ = $1; }
- | new_expr_array_deref { $$ = $1; }
-;
-
-new_expr_array_deref:
- '(' new_expr ')' '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$2, $5]; }
- | new_expr_array_deref '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
- /* alternative array syntax missing intentionally */
-;
-
-object_access:
- variable_or_new_expr T_OBJECT_OPERATOR object_property
- { $$ = Expr\PropertyFetch[$1, $3]; }
- | variable_or_new_expr T_OBJECT_OPERATOR object_property argument_list
- { $$ = Expr\MethodCall[$1, $3, $4]; }
- | object_access argument_list { $$ = Expr\FuncCall[$1, $2]; }
- | object_access '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
- | object_access '{' expr '}' { $$ = Expr\ArrayDimFetch[$1, $3]; }
-;
-
-variable_or_new_expr:
- variable { $$ = $1; }
- | '(' new_expr ')' { $$ = $2; }
-;
-
-variable_without_objects:
- reference_variable { $$ = $1; }
- | '$' variable_without_objects { $$ = Expr\Variable[$2]; }
-;
-
-base_variable:
- variable_without_objects { $$ = $1; }
- | static_property { $$ = $1; }
-;
-
-static_property:
- class_name_or_var T_PAAMAYIM_NEKUDOTAYIM '$' reference_variable
- { $$ = Expr\StaticPropertyFetch[$1, $4]; }
- | static_property_with_arrays { $$ = $1; }
-;
-
-static_property_simple_name:
- T_VARIABLE
- { $var = parseVar($1); $$ = \is_string($var) ? Node\VarLikeIdentifier[$var] : $var; }
-;
-
-static_property_with_arrays:
- class_name_or_var T_PAAMAYIM_NEKUDOTAYIM static_property_simple_name
- { $$ = Expr\StaticPropertyFetch[$1, $3]; }
- | class_name_or_var T_PAAMAYIM_NEKUDOTAYIM '$' '{' expr '}'
- { $$ = Expr\StaticPropertyFetch[$1, $5]; }
- | static_property_with_arrays '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
- | static_property_with_arrays '{' expr '}' { $$ = Expr\ArrayDimFetch[$1, $3]; }
-;
-
-reference_variable:
- reference_variable '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
- | reference_variable '{' expr '}' { $$ = Expr\ArrayDimFetch[$1, $3]; }
- | plain_variable { $$ = $1; }
- | '$' '{' expr '}' { $$ = Expr\Variable[$3]; }
-;
-
-dim_offset:
- /* empty */ { $$ = null; }
- | expr { $$ = $1; }
-;
-
-object_property:
- identifier { $$ = $1; }
- | '{' expr '}' { $$ = $2; }
- | variable_without_objects { $$ = $1; }
- | error { $$ = Expr\Error[]; $this->errorState = 2; }
-;
-
-list_expr:
- T_LIST '(' list_expr_elements ')' { $$ = Expr\List_[$3]; }
-;
-
-list_expr_elements:
- list_expr_elements ',' list_expr_element { push($1, $3); }
- | list_expr_element { init($1); }
-;
-
-list_expr_element:
- variable { $$ = Expr\ArrayItem[$1, null, false]; }
- | list_expr { $$ = Expr\ArrayItem[$1, null, false]; }
- | /* empty */ { $$ = null; }
-;
-
-array_pair_list:
- /* empty */ { $$ = array(); }
- | non_empty_array_pair_list optional_comma { $$ = $1; }
-;
-
-non_empty_array_pair_list:
- non_empty_array_pair_list ',' array_pair { push($1, $3); }
- | array_pair { init($1); }
-;
-
-array_pair:
- expr T_DOUBLE_ARROW expr { $$ = Expr\ArrayItem[$3, $1, false]; }
- | expr { $$ = Expr\ArrayItem[$1, null, false]; }
- | expr T_DOUBLE_ARROW ampersand variable { $$ = Expr\ArrayItem[$4, $1, true]; }
- | ampersand variable { $$ = Expr\ArrayItem[$2, null, true]; }
- | T_ELLIPSIS expr { $$ = Expr\ArrayItem[$2, null, false, attributes(), true]; }
-;
-
-encaps_list:
- encaps_list encaps_var { push($1, $2); }
- | encaps_list encaps_string_part { push($1, $2); }
- | encaps_var { init($1); }
- | encaps_string_part encaps_var { init($1, $2); }
-;
-
-encaps_string_part:
- T_ENCAPSED_AND_WHITESPACE { $$ = Scalar\EncapsedStringPart[$1]; }
-;
-
-encaps_str_varname:
- T_STRING_VARNAME { $$ = Expr\Variable[$1]; }
-;
-
-encaps_var:
- plain_variable { $$ = $1; }
- | plain_variable '[' encaps_var_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
- | plain_variable T_OBJECT_OPERATOR identifier { $$ = Expr\PropertyFetch[$1, $3]; }
- | T_DOLLAR_OPEN_CURLY_BRACES expr '}' { $$ = Expr\Variable[$2]; }
- | T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '}' { $$ = Expr\Variable[$2]; }
- | T_DOLLAR_OPEN_CURLY_BRACES encaps_str_varname '[' expr ']' '}'
- { $$ = Expr\ArrayDimFetch[$2, $4]; }
- | T_CURLY_OPEN variable '}' { $$ = $2; }
-;
-
-encaps_var_offset:
- T_STRING { $$ = Scalar\String_[$1]; }
- | T_NUM_STRING { $$ = $this->parseNumString($1, attributes()); }
- | plain_variable { $$ = $1; }
-;
-
-%%
diff --git a/vendor/nikic/php-parser/grammar/php7.y b/vendor/nikic/php-parser/grammar/php7.y
deleted file mode 100644
index eac68d09..00000000
--- a/vendor/nikic/php-parser/grammar/php7.y
+++ /dev/null
@@ -1,1196 +0,0 @@
-%pure_parser
-%expect 2
-
-%tokens
-
-%%
-
-start:
- top_statement_list { $$ = $this->handleNamespaces($1); }
-;
-
-top_statement_list_ex:
- top_statement_list_ex top_statement { pushNormalizing($1, $2); }
- | /* empty */ { init(); }
-;
-
-top_statement_list:
- top_statement_list_ex
- { makeZeroLengthNop($nop, $this->lookaheadStartAttributes);
- if ($nop !== null) { $1[] = $nop; } $$ = $1; }
-;
-
-ampersand:
- T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG
- | T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG
-;
-
-reserved_non_modifiers:
- T_INCLUDE | T_INCLUDE_ONCE | T_EVAL | T_REQUIRE | T_REQUIRE_ONCE | T_LOGICAL_OR | T_LOGICAL_XOR | T_LOGICAL_AND
- | T_INSTANCEOF | T_NEW | T_CLONE | T_EXIT | T_IF | T_ELSEIF | T_ELSE | T_ENDIF | T_ECHO | T_DO | T_WHILE
- | T_ENDWHILE | T_FOR | T_ENDFOR | T_FOREACH | T_ENDFOREACH | T_DECLARE | T_ENDDECLARE | T_AS | T_TRY | T_CATCH
- | T_FINALLY | T_THROW | T_USE | T_INSTEADOF | T_GLOBAL | T_VAR | T_UNSET | T_ISSET | T_EMPTY | T_CONTINUE | T_GOTO
- | T_FUNCTION | T_CONST | T_RETURN | T_PRINT | T_YIELD | T_LIST | T_SWITCH | T_ENDSWITCH | T_CASE | T_DEFAULT
- | T_BREAK | T_ARRAY | T_CALLABLE | T_EXTENDS | T_IMPLEMENTS | T_NAMESPACE | T_TRAIT | T_INTERFACE | T_CLASS
- | T_CLASS_C | T_TRAIT_C | T_FUNC_C | T_METHOD_C | T_LINE | T_FILE | T_DIR | T_NS_C | T_HALT_COMPILER | T_FN
- | T_MATCH | T_ENUM
-;
-
-semi_reserved:
- reserved_non_modifiers
- | T_STATIC | T_ABSTRACT | T_FINAL | T_PRIVATE | T_PROTECTED | T_PUBLIC | T_READONLY
-;
-
-identifier_maybe_reserved:
- T_STRING { $$ = Node\Identifier[$1]; }
- | semi_reserved { $$ = Node\Identifier[$1]; }
-;
-
-identifier_not_reserved:
- T_STRING { $$ = Node\Identifier[$1]; }
-;
-
-reserved_non_modifiers_identifier:
- reserved_non_modifiers { $$ = Node\Identifier[$1]; }
-;
-
-namespace_declaration_name:
- T_STRING { $$ = Name[$1]; }
- | semi_reserved { $$ = Name[$1]; }
- | T_NAME_QUALIFIED { $$ = Name[$1]; }
-;
-
-namespace_name:
- T_STRING { $$ = Name[$1]; }
- | T_NAME_QUALIFIED { $$ = Name[$1]; }
-;
-
-legacy_namespace_name:
- namespace_name { $$ = $1; }
- | T_NAME_FULLY_QUALIFIED { $$ = Name[substr($1, 1)]; }
-;
-
-plain_variable:
- T_VARIABLE { $$ = Expr\Variable[parseVar($1)]; }
-;
-
-semi:
- ';' { /* nothing */ }
- | error { /* nothing */ }
-;
-
-no_comma:
- /* empty */ { /* nothing */ }
- | ',' { $this->emitError(new Error('A trailing comma is not allowed here', attributes())); }
-;
-
-optional_comma:
- /* empty */
- | ','
-;
-
-attribute_decl:
- class_name { $$ = Node\Attribute[$1, []]; }
- | class_name argument_list { $$ = Node\Attribute[$1, $2]; }
-;
-
-attribute_group:
- attribute_decl { init($1); }
- | attribute_group ',' attribute_decl { push($1, $3); }
-;
-
-attribute:
- T_ATTRIBUTE attribute_group optional_comma ']' { $$ = Node\AttributeGroup[$2]; }
-;
-
-attributes:
- attribute { init($1); }
- | attributes attribute { push($1, $2); }
-;
-
-optional_attributes:
- /* empty */ { $$ = []; }
- | attributes { $$ = $1; }
-;
-
-top_statement:
- statement { $$ = $1; }
- | function_declaration_statement { $$ = $1; }
- | class_declaration_statement { $$ = $1; }
- | T_HALT_COMPILER
- { $$ = Stmt\HaltCompiler[$this->lexer->handleHaltCompiler()]; }
- | T_NAMESPACE namespace_declaration_name semi
- { $$ = Stmt\Namespace_[$2, null];
- $$->setAttribute('kind', Stmt\Namespace_::KIND_SEMICOLON);
- $this->checkNamespace($$); }
- | T_NAMESPACE namespace_declaration_name '{' top_statement_list '}'
- { $$ = Stmt\Namespace_[$2, $4];
- $$->setAttribute('kind', Stmt\Namespace_::KIND_BRACED);
- $this->checkNamespace($$); }
- | T_NAMESPACE '{' top_statement_list '}'
- { $$ = Stmt\Namespace_[null, $3];
- $$->setAttribute('kind', Stmt\Namespace_::KIND_BRACED);
- $this->checkNamespace($$); }
- | T_USE use_declarations semi { $$ = Stmt\Use_[$2, Stmt\Use_::TYPE_NORMAL]; }
- | T_USE use_type use_declarations semi { $$ = Stmt\Use_[$3, $2]; }
- | group_use_declaration semi { $$ = $1; }
- | T_CONST constant_declaration_list semi { $$ = Stmt\Const_[$2]; }
-;
-
-use_type:
- T_FUNCTION { $$ = Stmt\Use_::TYPE_FUNCTION; }
- | T_CONST { $$ = Stmt\Use_::TYPE_CONSTANT; }
-;
-
-group_use_declaration:
- T_USE use_type legacy_namespace_name T_NS_SEPARATOR '{' unprefixed_use_declarations '}'
- { $$ = Stmt\GroupUse[$3, $6, $2]; }
- | T_USE legacy_namespace_name T_NS_SEPARATOR '{' inline_use_declarations '}'
- { $$ = Stmt\GroupUse[$2, $5, Stmt\Use_::TYPE_UNKNOWN]; }
-;
-
-unprefixed_use_declarations:
- non_empty_unprefixed_use_declarations optional_comma { $$ = $1; }
-;
-
-non_empty_unprefixed_use_declarations:
- non_empty_unprefixed_use_declarations ',' unprefixed_use_declaration
- { push($1, $3); }
- | unprefixed_use_declaration { init($1); }
-;
-
-use_declarations:
- non_empty_use_declarations no_comma { $$ = $1; }
-;
-
-non_empty_use_declarations:
- non_empty_use_declarations ',' use_declaration { push($1, $3); }
- | use_declaration { init($1); }
-;
-
-inline_use_declarations:
- non_empty_inline_use_declarations optional_comma { $$ = $1; }
-;
-
-non_empty_inline_use_declarations:
- non_empty_inline_use_declarations ',' inline_use_declaration
- { push($1, $3); }
- | inline_use_declaration { init($1); }
-;
-
-unprefixed_use_declaration:
- namespace_name
- { $$ = Stmt\UseUse[$1, null, Stmt\Use_::TYPE_UNKNOWN]; $this->checkUseUse($$, #1); }
- | namespace_name T_AS identifier_not_reserved
- { $$ = Stmt\UseUse[$1, $3, Stmt\Use_::TYPE_UNKNOWN]; $this->checkUseUse($$, #3); }
-;
-
-use_declaration:
- legacy_namespace_name
- { $$ = Stmt\UseUse[$1, null, Stmt\Use_::TYPE_UNKNOWN]; $this->checkUseUse($$, #1); }
- | legacy_namespace_name T_AS identifier_not_reserved
- { $$ = Stmt\UseUse[$1, $3, Stmt\Use_::TYPE_UNKNOWN]; $this->checkUseUse($$, #3); }
-;
-
-inline_use_declaration:
- unprefixed_use_declaration { $$ = $1; $$->type = Stmt\Use_::TYPE_NORMAL; }
- | use_type unprefixed_use_declaration { $$ = $2; $$->type = $1; }
-;
-
-constant_declaration_list:
- non_empty_constant_declaration_list no_comma { $$ = $1; }
-;
-
-non_empty_constant_declaration_list:
- non_empty_constant_declaration_list ',' constant_declaration
- { push($1, $3); }
- | constant_declaration { init($1); }
-;
-
-constant_declaration:
- identifier_not_reserved '=' expr { $$ = Node\Const_[$1, $3]; }
-;
-
-class_const_list:
- non_empty_class_const_list no_comma { $$ = $1; }
-;
-
-non_empty_class_const_list:
- non_empty_class_const_list ',' class_const { push($1, $3); }
- | class_const { init($1); }
-;
-
-class_const:
- identifier_maybe_reserved '=' expr { $$ = Node\Const_[$1, $3]; }
-;
-
-inner_statement_list_ex:
- inner_statement_list_ex inner_statement { pushNormalizing($1, $2); }
- | /* empty */ { init(); }
-;
-
-inner_statement_list:
- inner_statement_list_ex
- { makeZeroLengthNop($nop, $this->lookaheadStartAttributes);
- if ($nop !== null) { $1[] = $nop; } $$ = $1; }
-;
-
-inner_statement:
- statement { $$ = $1; }
- | function_declaration_statement { $$ = $1; }
- | class_declaration_statement { $$ = $1; }
- | T_HALT_COMPILER
- { throw new Error('__HALT_COMPILER() can only be used from the outermost scope', attributes()); }
-;
-
-non_empty_statement:
- '{' inner_statement_list '}'
- {
- if ($2) {
- $$ = $2; prependLeadingComments($$);
- } else {
- makeNop($$, $this->startAttributeStack[#1], $this->endAttributes);
- if (null === $$) { $$ = array(); }
- }
- }
- | T_IF '(' expr ')' statement elseif_list else_single
- { $$ = Stmt\If_[$3, ['stmts' => toArray($5), 'elseifs' => $6, 'else' => $7]]; }
- | T_IF '(' expr ')' ':' inner_statement_list new_elseif_list new_else_single T_ENDIF ';'
- { $$ = Stmt\If_[$3, ['stmts' => $6, 'elseifs' => $7, 'else' => $8]]; }
- | T_WHILE '(' expr ')' while_statement { $$ = Stmt\While_[$3, $5]; }
- | T_DO statement T_WHILE '(' expr ')' ';' { $$ = Stmt\Do_ [$5, toArray($2)]; }
- | T_FOR '(' for_expr ';' for_expr ';' for_expr ')' for_statement
- { $$ = Stmt\For_[['init' => $3, 'cond' => $5, 'loop' => $7, 'stmts' => $9]]; }
- | T_SWITCH '(' expr ')' switch_case_list { $$ = Stmt\Switch_[$3, $5]; }
- | T_BREAK optional_expr semi { $$ = Stmt\Break_[$2]; }
- | T_CONTINUE optional_expr semi { $$ = Stmt\Continue_[$2]; }
- | T_RETURN optional_expr semi { $$ = Stmt\Return_[$2]; }
- | T_GLOBAL global_var_list semi { $$ = Stmt\Global_[$2]; }
- | T_STATIC static_var_list semi { $$ = Stmt\Static_[$2]; }
- | T_ECHO expr_list_forbid_comma semi { $$ = Stmt\Echo_[$2]; }
- | T_INLINE_HTML { $$ = Stmt\InlineHTML[$1]; }
- | expr semi {
- $e = $1;
- if ($e instanceof Expr\Throw_) {
- // For backwards-compatibility reasons, convert throw in statement position into
- // Stmt\Throw_ rather than Stmt\Expression(Expr\Throw_).
- $$ = Stmt\Throw_[$e->expr];
- } else {
- $$ = Stmt\Expression[$e];
- }
- }
- | T_UNSET '(' variables_list ')' semi { $$ = Stmt\Unset_[$3]; }
- | T_FOREACH '(' expr T_AS foreach_variable ')' foreach_statement
- { $$ = Stmt\Foreach_[$3, $5[0], ['keyVar' => null, 'byRef' => $5[1], 'stmts' => $7]]; }
- | T_FOREACH '(' expr T_AS variable T_DOUBLE_ARROW foreach_variable ')' foreach_statement
- { $$ = Stmt\Foreach_[$3, $7[0], ['keyVar' => $5, 'byRef' => $7[1], 'stmts' => $9]]; }
- | T_FOREACH '(' expr error ')' foreach_statement
- { $$ = Stmt\Foreach_[$3, new Expr\Error(stackAttributes(#4)), ['stmts' => $6]]; }
- | T_DECLARE '(' declare_list ')' declare_statement { $$ = Stmt\Declare_[$3, $5]; }
- | T_TRY '{' inner_statement_list '}' catches optional_finally
- { $$ = Stmt\TryCatch[$3, $5, $6]; $this->checkTryCatch($$); }
- | T_GOTO identifier_not_reserved semi { $$ = Stmt\Goto_[$2]; }
- | identifier_not_reserved ':' { $$ = Stmt\Label[$1]; }
- | error { $$ = array(); /* means: no statement */ }
-;
-
-statement:
- non_empty_statement { $$ = $1; }
- | ';'
- { makeNop($$, $this->startAttributeStack[#1], $this->endAttributes);
- if ($$ === null) $$ = array(); /* means: no statement */ }
-;
-
-catches:
- /* empty */ { init(); }
- | catches catch { push($1, $2); }
-;
-
-name_union:
- name { init($1); }
- | name_union '|' name { push($1, $3); }
-;
-
-catch:
- T_CATCH '(' name_union optional_plain_variable ')' '{' inner_statement_list '}'
- { $$ = Stmt\Catch_[$3, $4, $7]; }
-;
-
-optional_finally:
- /* empty */ { $$ = null; }
- | T_FINALLY '{' inner_statement_list '}' { $$ = Stmt\Finally_[$3]; }
-;
-
-variables_list:
- non_empty_variables_list optional_comma { $$ = $1; }
-;
-
-non_empty_variables_list:
- variable { init($1); }
- | non_empty_variables_list ',' variable { push($1, $3); }
-;
-
-optional_ref:
- /* empty */ { $$ = false; }
- | ampersand { $$ = true; }
-;
-
-optional_arg_ref:
- /* empty */ { $$ = false; }
- | T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG { $$ = true; }
-;
-
-optional_ellipsis:
- /* empty */ { $$ = false; }
- | T_ELLIPSIS { $$ = true; }
-;
-
-block_or_error:
- '{' inner_statement_list '}' { $$ = $2; }
- | error { $$ = []; }
-;
-
-function_declaration_statement:
- T_FUNCTION optional_ref identifier_not_reserved '(' parameter_list ')' optional_return_type block_or_error
- { $$ = Stmt\Function_[$3, ['byRef' => $2, 'params' => $5, 'returnType' => $7, 'stmts' => $8, 'attrGroups' => []]]; }
- | attributes T_FUNCTION optional_ref identifier_not_reserved '(' parameter_list ')' optional_return_type block_or_error
- { $$ = Stmt\Function_[$4, ['byRef' => $3, 'params' => $6, 'returnType' => $8, 'stmts' => $9, 'attrGroups' => $1]]; }
-;
-
-class_declaration_statement:
- optional_attributes class_entry_type identifier_not_reserved extends_from implements_list '{' class_statement_list '}'
- { $$ = Stmt\Class_[$3, ['type' => $2, 'extends' => $4, 'implements' => $5, 'stmts' => $7, 'attrGroups' => $1]];
- $this->checkClass($$, #3); }
- | optional_attributes T_INTERFACE identifier_not_reserved interface_extends_list '{' class_statement_list '}'
- { $$ = Stmt\Interface_[$3, ['extends' => $4, 'stmts' => $6, 'attrGroups' => $1]];
- $this->checkInterface($$, #3); }
- | optional_attributes T_TRAIT identifier_not_reserved '{' class_statement_list '}'
- { $$ = Stmt\Trait_[$3, ['stmts' => $5, 'attrGroups' => $1]]; }
- | optional_attributes T_ENUM identifier_not_reserved enum_scalar_type implements_list '{' class_statement_list '}'
- { $$ = Stmt\Enum_[$3, ['scalarType' => $4, 'implements' => $5, 'stmts' => $7, 'attrGroups' => $1]];
- $this->checkEnum($$, #3); }
-;
-
-enum_scalar_type:
- /* empty */ { $$ = null; }
- | ':' type { $$ = $2; }
-
-enum_case_expr:
- /* empty */ { $$ = null; }
- | '=' expr { $$ = $2; }
-;
-
-class_entry_type:
- T_CLASS { $$ = 0; }
- | T_ABSTRACT T_CLASS { $$ = Stmt\Class_::MODIFIER_ABSTRACT; }
- | T_FINAL T_CLASS { $$ = Stmt\Class_::MODIFIER_FINAL; }
-;
-
-extends_from:
- /* empty */ { $$ = null; }
- | T_EXTENDS class_name { $$ = $2; }
-;
-
-interface_extends_list:
- /* empty */ { $$ = array(); }
- | T_EXTENDS class_name_list { $$ = $2; }
-;
-
-implements_list:
- /* empty */ { $$ = array(); }
- | T_IMPLEMENTS class_name_list { $$ = $2; }
-;
-
-class_name_list:
- non_empty_class_name_list no_comma { $$ = $1; }
-;
-
-non_empty_class_name_list:
- class_name { init($1); }
- | non_empty_class_name_list ',' class_name { push($1, $3); }
-;
-
-for_statement:
- statement { $$ = toArray($1); }
- | ':' inner_statement_list T_ENDFOR ';' { $$ = $2; }
-;
-
-foreach_statement:
- statement { $$ = toArray($1); }
- | ':' inner_statement_list T_ENDFOREACH ';' { $$ = $2; }
-;
-
-declare_statement:
- non_empty_statement { $$ = toArray($1); }
- | ';' { $$ = null; }
- | ':' inner_statement_list T_ENDDECLARE ';' { $$ = $2; }
-;
-
-declare_list:
- non_empty_declare_list no_comma { $$ = $1; }
-;
-
-non_empty_declare_list:
- declare_list_element { init($1); }
- | non_empty_declare_list ',' declare_list_element { push($1, $3); }
-;
-
-declare_list_element:
- identifier_not_reserved '=' expr { $$ = Stmt\DeclareDeclare[$1, $3]; }
-;
-
-switch_case_list:
- '{' case_list '}' { $$ = $2; }
- | '{' ';' case_list '}' { $$ = $3; }
- | ':' case_list T_ENDSWITCH ';' { $$ = $2; }
- | ':' ';' case_list T_ENDSWITCH ';' { $$ = $3; }
-;
-
-case_list:
- /* empty */ { init(); }
- | case_list case { push($1, $2); }
-;
-
-case:
- T_CASE expr case_separator inner_statement_list_ex { $$ = Stmt\Case_[$2, $4]; }
- | T_DEFAULT case_separator inner_statement_list_ex { $$ = Stmt\Case_[null, $3]; }
-;
-
-case_separator:
- ':'
- | ';'
-;
-
-match:
- T_MATCH '(' expr ')' '{' match_arm_list '}' { $$ = Expr\Match_[$3, $6]; }
-;
-
-match_arm_list:
- /* empty */ { $$ = []; }
- | non_empty_match_arm_list optional_comma { $$ = $1; }
-;
-
-non_empty_match_arm_list:
- match_arm { init($1); }
- | non_empty_match_arm_list ',' match_arm { push($1, $3); }
-;
-
-match_arm:
- expr_list_allow_comma T_DOUBLE_ARROW expr { $$ = Node\MatchArm[$1, $3]; }
- | T_DEFAULT optional_comma T_DOUBLE_ARROW expr { $$ = Node\MatchArm[null, $4]; }
-;
-
-while_statement:
- statement { $$ = toArray($1); }
- | ':' inner_statement_list T_ENDWHILE ';' { $$ = $2; }
-;
-
-elseif_list:
- /* empty */ { init(); }
- | elseif_list elseif { push($1, $2); }
-;
-
-elseif:
- T_ELSEIF '(' expr ')' statement { $$ = Stmt\ElseIf_[$3, toArray($5)]; }
-;
-
-new_elseif_list:
- /* empty */ { init(); }
- | new_elseif_list new_elseif { push($1, $2); }
-;
-
-new_elseif:
- T_ELSEIF '(' expr ')' ':' inner_statement_list { $$ = Stmt\ElseIf_[$3, $6]; }
-;
-
-else_single:
- /* empty */ { $$ = null; }
- | T_ELSE statement { $$ = Stmt\Else_[toArray($2)]; }
-;
-
-new_else_single:
- /* empty */ { $$ = null; }
- | T_ELSE ':' inner_statement_list { $$ = Stmt\Else_[$3]; }
-;
-
-foreach_variable:
- variable { $$ = array($1, false); }
- | ampersand variable { $$ = array($2, true); }
- | list_expr { $$ = array($1, false); }
- | array_short_syntax { $$ = array($1, false); }
-;
-
-parameter_list:
- non_empty_parameter_list optional_comma { $$ = $1; }
- | /* empty */ { $$ = array(); }
-;
-
-non_empty_parameter_list:
- parameter { init($1); }
- | non_empty_parameter_list ',' parameter { push($1, $3); }
-;
-
-optional_property_modifiers:
- /* empty */ { $$ = 0; }
- | optional_property_modifiers property_modifier
- { $this->checkModifier($1, $2, #2); $$ = $1 | $2; }
-;
-
-property_modifier:
- T_PUBLIC { $$ = Stmt\Class_::MODIFIER_PUBLIC; }
- | T_PROTECTED { $$ = Stmt\Class_::MODIFIER_PROTECTED; }
- | T_PRIVATE { $$ = Stmt\Class_::MODIFIER_PRIVATE; }
- | T_READONLY { $$ = Stmt\Class_::MODIFIER_READONLY; }
-;
-
-parameter:
- optional_attributes optional_property_modifiers optional_type_without_static
- optional_arg_ref optional_ellipsis plain_variable
- { $$ = new Node\Param($6, null, $3, $4, $5, attributes(), $2, $1);
- $this->checkParam($$); }
- | optional_attributes optional_property_modifiers optional_type_without_static
- optional_arg_ref optional_ellipsis plain_variable '=' expr
- { $$ = new Node\Param($6, $8, $3, $4, $5, attributes(), $2, $1);
- $this->checkParam($$); }
- | optional_attributes optional_property_modifiers optional_type_without_static
- optional_arg_ref optional_ellipsis error
- { $$ = new Node\Param(Expr\Error[], null, $3, $4, $5, attributes(), $2, $1); }
-;
-
-type_expr:
- type { $$ = $1; }
- | '?' type { $$ = Node\NullableType[$2]; }
- | union_type { $$ = Node\UnionType[$1]; }
- | intersection_type { $$ = Node\IntersectionType[$1]; }
-;
-
-type:
- type_without_static { $$ = $1; }
- | T_STATIC { $$ = Node\Name['static']; }
-;
-
-type_without_static:
- name { $$ = $this->handleBuiltinTypes($1); }
- | T_ARRAY { $$ = Node\Identifier['array']; }
- | T_CALLABLE { $$ = Node\Identifier['callable']; }
-;
-
-union_type:
- type '|' type { init($1, $3); }
- | union_type '|' type { push($1, $3); }
-;
-
-union_type_without_static:
- type_without_static '|' type_without_static { init($1, $3); }
- | union_type_without_static '|' type_without_static { push($1, $3); }
-;
-
-intersection_type:
- type T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG type { init($1, $3); }
- | intersection_type T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG type
- { push($1, $3); }
-;
-
-intersection_type_without_static:
- type_without_static T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG type_without_static
- { init($1, $3); }
- | intersection_type_without_static T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG type_without_static
- { push($1, $3); }
-;
-
-type_expr_without_static:
- type_without_static { $$ = $1; }
- | '?' type_without_static { $$ = Node\NullableType[$2]; }
- | union_type_without_static { $$ = Node\UnionType[$1]; }
- | intersection_type_without_static { $$ = Node\IntersectionType[$1]; }
-;
-
-optional_type_without_static:
- /* empty */ { $$ = null; }
- | type_expr_without_static { $$ = $1; }
-;
-
-optional_return_type:
- /* empty */ { $$ = null; }
- | ':' type_expr { $$ = $2; }
- | ':' error { $$ = null; }
-;
-
-argument_list:
- '(' ')' { $$ = array(); }
- | '(' non_empty_argument_list optional_comma ')' { $$ = $2; }
- | '(' variadic_placeholder ')' { init($2); }
-;
-
-variadic_placeholder:
- T_ELLIPSIS { $$ = Node\VariadicPlaceholder[]; }
-;
-
-non_empty_argument_list:
- argument { init($1); }
- | non_empty_argument_list ',' argument { push($1, $3); }
-;
-
-argument:
- expr { $$ = Node\Arg[$1, false, false]; }
- | ampersand variable { $$ = Node\Arg[$2, true, false]; }
- | T_ELLIPSIS expr { $$ = Node\Arg[$2, false, true]; }
- | identifier_maybe_reserved ':' expr
- { $$ = new Node\Arg($3, false, false, attributes(), $1); }
-;
-
-global_var_list:
- non_empty_global_var_list no_comma { $$ = $1; }
-;
-
-non_empty_global_var_list:
- non_empty_global_var_list ',' global_var { push($1, $3); }
- | global_var { init($1); }
-;
-
-global_var:
- simple_variable { $$ = $1; }
-;
-
-static_var_list:
- non_empty_static_var_list no_comma { $$ = $1; }
-;
-
-non_empty_static_var_list:
- non_empty_static_var_list ',' static_var { push($1, $3); }
- | static_var { init($1); }
-;
-
-static_var:
- plain_variable { $$ = Stmt\StaticVar[$1, null]; }
- | plain_variable '=' expr { $$ = Stmt\StaticVar[$1, $3]; }
-;
-
-class_statement_list_ex:
- class_statement_list_ex class_statement { if ($2 !== null) { push($1, $2); } }
- | /* empty */ { init(); }
-;
-
-class_statement_list:
- class_statement_list_ex
- { makeZeroLengthNop($nop, $this->lookaheadStartAttributes);
- if ($nop !== null) { $1[] = $nop; } $$ = $1; }
-;
-
-class_statement:
- optional_attributes variable_modifiers optional_type_without_static property_declaration_list semi
- { $$ = new Stmt\Property($2, $4, attributes(), $3, $1);
- $this->checkProperty($$, #2); }
- | optional_attributes method_modifiers T_CONST class_const_list semi
- { $$ = new Stmt\ClassConst($4, $2, attributes(), $1);
- $this->checkClassConst($$, #2); }
- | optional_attributes method_modifiers T_FUNCTION optional_ref identifier_maybe_reserved '(' parameter_list ')'
- optional_return_type method_body
- { $$ = Stmt\ClassMethod[$5, ['type' => $2, 'byRef' => $4, 'params' => $7, 'returnType' => $9, 'stmts' => $10, 'attrGroups' => $1]];
- $this->checkClassMethod($$, #2); }
- | T_USE class_name_list trait_adaptations { $$ = Stmt\TraitUse[$2, $3]; }
- | optional_attributes T_CASE identifier_maybe_reserved enum_case_expr semi
- { $$ = Stmt\EnumCase[$3, $4, $1]; }
- | error { $$ = null; /* will be skipped */ }
-;
-
-trait_adaptations:
- ';' { $$ = array(); }
- | '{' trait_adaptation_list '}' { $$ = $2; }
-;
-
-trait_adaptation_list:
- /* empty */ { init(); }
- | trait_adaptation_list trait_adaptation { push($1, $2); }
-;
-
-trait_adaptation:
- trait_method_reference_fully_qualified T_INSTEADOF class_name_list ';'
- { $$ = Stmt\TraitUseAdaptation\Precedence[$1[0], $1[1], $3]; }
- | trait_method_reference T_AS member_modifier identifier_maybe_reserved ';'
- { $$ = Stmt\TraitUseAdaptation\Alias[$1[0], $1[1], $3, $4]; }
- | trait_method_reference T_AS member_modifier ';'
- { $$ = Stmt\TraitUseAdaptation\Alias[$1[0], $1[1], $3, null]; }
- | trait_method_reference T_AS identifier_not_reserved ';'
- { $$ = Stmt\TraitUseAdaptation\Alias[$1[0], $1[1], null, $3]; }
- | trait_method_reference T_AS reserved_non_modifiers_identifier ';'
- { $$ = Stmt\TraitUseAdaptation\Alias[$1[0], $1[1], null, $3]; }
-;
-
-trait_method_reference_fully_qualified:
- name T_PAAMAYIM_NEKUDOTAYIM identifier_maybe_reserved { $$ = array($1, $3); }
-;
-trait_method_reference:
- trait_method_reference_fully_qualified { $$ = $1; }
- | identifier_maybe_reserved { $$ = array(null, $1); }
-;
-
-method_body:
- ';' /* abstract method */ { $$ = null; }
- | block_or_error { $$ = $1; }
-;
-
-variable_modifiers:
- non_empty_member_modifiers { $$ = $1; }
- | T_VAR { $$ = 0; }
-;
-
-method_modifiers:
- /* empty */ { $$ = 0; }
- | non_empty_member_modifiers { $$ = $1; }
-;
-
-non_empty_member_modifiers:
- member_modifier { $$ = $1; }
- | non_empty_member_modifiers member_modifier { $this->checkModifier($1, $2, #2); $$ = $1 | $2; }
-;
-
-member_modifier:
- T_PUBLIC { $$ = Stmt\Class_::MODIFIER_PUBLIC; }
- | T_PROTECTED { $$ = Stmt\Class_::MODIFIER_PROTECTED; }
- | T_PRIVATE { $$ = Stmt\Class_::MODIFIER_PRIVATE; }
- | T_STATIC { $$ = Stmt\Class_::MODIFIER_STATIC; }
- | T_ABSTRACT { $$ = Stmt\Class_::MODIFIER_ABSTRACT; }
- | T_FINAL { $$ = Stmt\Class_::MODIFIER_FINAL; }
- | T_READONLY { $$ = Stmt\Class_::MODIFIER_READONLY; }
-;
-
-property_declaration_list:
- non_empty_property_declaration_list no_comma { $$ = $1; }
-;
-
-non_empty_property_declaration_list:
- property_declaration { init($1); }
- | non_empty_property_declaration_list ',' property_declaration
- { push($1, $3); }
-;
-
-property_decl_name:
- T_VARIABLE { $$ = Node\VarLikeIdentifier[parseVar($1)]; }
-;
-
-property_declaration:
- property_decl_name { $$ = Stmt\PropertyProperty[$1, null]; }
- | property_decl_name '=' expr { $$ = Stmt\PropertyProperty[$1, $3]; }
-;
-
-expr_list_forbid_comma:
- non_empty_expr_list no_comma { $$ = $1; }
-;
-
-expr_list_allow_comma:
- non_empty_expr_list optional_comma { $$ = $1; }
-;
-
-non_empty_expr_list:
- non_empty_expr_list ',' expr { push($1, $3); }
- | expr { init($1); }
-;
-
-for_expr:
- /* empty */ { $$ = array(); }
- | expr_list_forbid_comma { $$ = $1; }
-;
-
-expr:
- variable { $$ = $1; }
- | list_expr '=' expr { $$ = Expr\Assign[$1, $3]; }
- | array_short_syntax '=' expr { $$ = Expr\Assign[$1, $3]; }
- | variable '=' expr { $$ = Expr\Assign[$1, $3]; }
- | variable '=' ampersand variable { $$ = Expr\AssignRef[$1, $4]; }
- | new_expr { $$ = $1; }
- | match { $$ = $1; }
- | T_CLONE expr { $$ = Expr\Clone_[$2]; }
- | variable T_PLUS_EQUAL expr { $$ = Expr\AssignOp\Plus [$1, $3]; }
- | variable T_MINUS_EQUAL expr { $$ = Expr\AssignOp\Minus [$1, $3]; }
- | variable T_MUL_EQUAL expr { $$ = Expr\AssignOp\Mul [$1, $3]; }
- | variable T_DIV_EQUAL expr { $$ = Expr\AssignOp\Div [$1, $3]; }
- | variable T_CONCAT_EQUAL expr { $$ = Expr\AssignOp\Concat [$1, $3]; }
- | variable T_MOD_EQUAL expr { $$ = Expr\AssignOp\Mod [$1, $3]; }
- | variable T_AND_EQUAL expr { $$ = Expr\AssignOp\BitwiseAnd[$1, $3]; }
- | variable T_OR_EQUAL expr { $$ = Expr\AssignOp\BitwiseOr [$1, $3]; }
- | variable T_XOR_EQUAL expr { $$ = Expr\AssignOp\BitwiseXor[$1, $3]; }
- | variable T_SL_EQUAL expr { $$ = Expr\AssignOp\ShiftLeft [$1, $3]; }
- | variable T_SR_EQUAL expr { $$ = Expr\AssignOp\ShiftRight[$1, $3]; }
- | variable T_POW_EQUAL expr { $$ = Expr\AssignOp\Pow [$1, $3]; }
- | variable T_COALESCE_EQUAL expr { $$ = Expr\AssignOp\Coalesce [$1, $3]; }
- | variable T_INC { $$ = Expr\PostInc[$1]; }
- | T_INC variable { $$ = Expr\PreInc [$2]; }
- | variable T_DEC { $$ = Expr\PostDec[$1]; }
- | T_DEC variable { $$ = Expr\PreDec [$2]; }
- | expr T_BOOLEAN_OR expr { $$ = Expr\BinaryOp\BooleanOr [$1, $3]; }
- | expr T_BOOLEAN_AND expr { $$ = Expr\BinaryOp\BooleanAnd[$1, $3]; }
- | expr T_LOGICAL_OR expr { $$ = Expr\BinaryOp\LogicalOr [$1, $3]; }
- | expr T_LOGICAL_AND expr { $$ = Expr\BinaryOp\LogicalAnd[$1, $3]; }
- | expr T_LOGICAL_XOR expr { $$ = Expr\BinaryOp\LogicalXor[$1, $3]; }
- | expr '|' expr { $$ = Expr\BinaryOp\BitwiseOr [$1, $3]; }
- | expr T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG expr { $$ = Expr\BinaryOp\BitwiseAnd[$1, $3]; }
- | expr T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG expr { $$ = Expr\BinaryOp\BitwiseAnd[$1, $3]; }
- | expr '^' expr { $$ = Expr\BinaryOp\BitwiseXor[$1, $3]; }
- | expr '.' expr { $$ = Expr\BinaryOp\Concat [$1, $3]; }
- | expr '+' expr { $$ = Expr\BinaryOp\Plus [$1, $3]; }
- | expr '-' expr { $$ = Expr\BinaryOp\Minus [$1, $3]; }
- | expr '*' expr { $$ = Expr\BinaryOp\Mul [$1, $3]; }
- | expr '/' expr { $$ = Expr\BinaryOp\Div [$1, $3]; }
- | expr '%' expr { $$ = Expr\BinaryOp\Mod [$1, $3]; }
- | expr T_SL expr { $$ = Expr\BinaryOp\ShiftLeft [$1, $3]; }
- | expr T_SR expr { $$ = Expr\BinaryOp\ShiftRight[$1, $3]; }
- | expr T_POW expr { $$ = Expr\BinaryOp\Pow [$1, $3]; }
- | '+' expr %prec T_INC { $$ = Expr\UnaryPlus [$2]; }
- | '-' expr %prec T_INC { $$ = Expr\UnaryMinus[$2]; }
- | '!' expr { $$ = Expr\BooleanNot[$2]; }
- | '~' expr { $$ = Expr\BitwiseNot[$2]; }
- | expr T_IS_IDENTICAL expr { $$ = Expr\BinaryOp\Identical [$1, $3]; }
- | expr T_IS_NOT_IDENTICAL expr { $$ = Expr\BinaryOp\NotIdentical [$1, $3]; }
- | expr T_IS_EQUAL expr { $$ = Expr\BinaryOp\Equal [$1, $3]; }
- | expr T_IS_NOT_EQUAL expr { $$ = Expr\BinaryOp\NotEqual [$1, $3]; }
- | expr T_SPACESHIP expr { $$ = Expr\BinaryOp\Spaceship [$1, $3]; }
- | expr '<' expr { $$ = Expr\BinaryOp\Smaller [$1, $3]; }
- | expr T_IS_SMALLER_OR_EQUAL expr { $$ = Expr\BinaryOp\SmallerOrEqual[$1, $3]; }
- | expr '>' expr { $$ = Expr\BinaryOp\Greater [$1, $3]; }
- | expr T_IS_GREATER_OR_EQUAL expr { $$ = Expr\BinaryOp\GreaterOrEqual[$1, $3]; }
- | expr T_INSTANCEOF class_name_reference { $$ = Expr\Instanceof_[$1, $3]; }
- | '(' expr ')' { $$ = $2; }
- | expr '?' expr ':' expr { $$ = Expr\Ternary[$1, $3, $5]; }
- | expr '?' ':' expr { $$ = Expr\Ternary[$1, null, $4]; }
- | expr T_COALESCE expr { $$ = Expr\BinaryOp\Coalesce[$1, $3]; }
- | T_ISSET '(' expr_list_allow_comma ')' { $$ = Expr\Isset_[$3]; }
- | T_EMPTY '(' expr ')' { $$ = Expr\Empty_[$3]; }
- | T_INCLUDE expr { $$ = Expr\Include_[$2, Expr\Include_::TYPE_INCLUDE]; }
- | T_INCLUDE_ONCE expr { $$ = Expr\Include_[$2, Expr\Include_::TYPE_INCLUDE_ONCE]; }
- | T_EVAL '(' expr ')' { $$ = Expr\Eval_[$3]; }
- | T_REQUIRE expr { $$ = Expr\Include_[$2, Expr\Include_::TYPE_REQUIRE]; }
- | T_REQUIRE_ONCE expr { $$ = Expr\Include_[$2, Expr\Include_::TYPE_REQUIRE_ONCE]; }
- | T_INT_CAST expr { $$ = Expr\Cast\Int_ [$2]; }
- | T_DOUBLE_CAST expr
- { $attrs = attributes();
- $attrs['kind'] = $this->getFloatCastKind($1);
- $$ = new Expr\Cast\Double($2, $attrs); }
- | T_STRING_CAST expr { $$ = Expr\Cast\String_ [$2]; }
- | T_ARRAY_CAST expr { $$ = Expr\Cast\Array_ [$2]; }
- | T_OBJECT_CAST expr { $$ = Expr\Cast\Object_ [$2]; }
- | T_BOOL_CAST expr { $$ = Expr\Cast\Bool_ [$2]; }
- | T_UNSET_CAST expr { $$ = Expr\Cast\Unset_ [$2]; }
- | T_EXIT exit_expr
- { $attrs = attributes();
- $attrs['kind'] = strtolower($1) === 'exit' ? Expr\Exit_::KIND_EXIT : Expr\Exit_::KIND_DIE;
- $$ = new Expr\Exit_($2, $attrs); }
- | '@' expr { $$ = Expr\ErrorSuppress[$2]; }
- | scalar { $$ = $1; }
- | '`' backticks_expr '`' { $$ = Expr\ShellExec[$2]; }
- | T_PRINT expr { $$ = Expr\Print_[$2]; }
- | T_YIELD { $$ = Expr\Yield_[null, null]; }
- | T_YIELD expr { $$ = Expr\Yield_[$2, null]; }
- | T_YIELD expr T_DOUBLE_ARROW expr { $$ = Expr\Yield_[$4, $2]; }
- | T_YIELD_FROM expr { $$ = Expr\YieldFrom[$2]; }
- | T_THROW expr { $$ = Expr\Throw_[$2]; }
-
- | T_FN optional_ref '(' parameter_list ')' optional_return_type T_DOUBLE_ARROW expr %prec T_THROW
- { $$ = Expr\ArrowFunction[['static' => false, 'byRef' => $2, 'params' => $4, 'returnType' => $6, 'expr' => $8, 'attrGroups' => []]]; }
- | T_STATIC T_FN optional_ref '(' parameter_list ')' optional_return_type T_DOUBLE_ARROW expr %prec T_THROW
- { $$ = Expr\ArrowFunction[['static' => true, 'byRef' => $3, 'params' => $5, 'returnType' => $7, 'expr' => $9, 'attrGroups' => []]]; }
- | T_FUNCTION optional_ref '(' parameter_list ')' lexical_vars optional_return_type block_or_error
- { $$ = Expr\Closure[['static' => false, 'byRef' => $2, 'params' => $4, 'uses' => $6, 'returnType' => $7, 'stmts' => $8, 'attrGroups' => []]]; }
- | T_STATIC T_FUNCTION optional_ref '(' parameter_list ')' lexical_vars optional_return_type block_or_error
- { $$ = Expr\Closure[['static' => true, 'byRef' => $3, 'params' => $5, 'uses' => $7, 'returnType' => $8, 'stmts' => $9, 'attrGroups' => []]]; }
-
- | attributes T_FN optional_ref '(' parameter_list ')' optional_return_type T_DOUBLE_ARROW expr %prec T_THROW
- { $$ = Expr\ArrowFunction[['static' => false, 'byRef' => $3, 'params' => $5, 'returnType' => $7, 'expr' => $9, 'attrGroups' => $1]]; }
- | attributes T_STATIC T_FN optional_ref '(' parameter_list ')' optional_return_type T_DOUBLE_ARROW expr %prec T_THROW
- { $$ = Expr\ArrowFunction[['static' => true, 'byRef' => $4, 'params' => $6, 'returnType' => $8, 'expr' => $10, 'attrGroups' => $1]]; }
- | attributes T_FUNCTION optional_ref '(' parameter_list ')' lexical_vars optional_return_type block_or_error
- { $$ = Expr\Closure[['static' => false, 'byRef' => $3, 'params' => $5, 'uses' => $7, 'returnType' => $8, 'stmts' => $9, 'attrGroups' => $1]]; }
- | attributes T_STATIC T_FUNCTION optional_ref '(' parameter_list ')' lexical_vars optional_return_type block_or_error
- { $$ = Expr\Closure[['static' => true, 'byRef' => $4, 'params' => $6, 'uses' => $8, 'returnType' => $9, 'stmts' => $10, 'attrGroups' => $1]]; }
-;
-
-anonymous_class:
- optional_attributes T_CLASS ctor_arguments extends_from implements_list '{' class_statement_list '}'
- { $$ = array(Stmt\Class_[null, ['type' => 0, 'extends' => $4, 'implements' => $5, 'stmts' => $7, 'attrGroups' => $1]], $3);
- $this->checkClass($$[0], -1); }
-;
-
-new_expr:
- T_NEW class_name_reference ctor_arguments { $$ = Expr\New_[$2, $3]; }
- | T_NEW anonymous_class
- { list($class, $ctorArgs) = $2; $$ = Expr\New_[$class, $ctorArgs]; }
-;
-
-lexical_vars:
- /* empty */ { $$ = array(); }
- | T_USE '(' lexical_var_list ')' { $$ = $3; }
-;
-
-lexical_var_list:
- non_empty_lexical_var_list optional_comma { $$ = $1; }
-;
-
-non_empty_lexical_var_list:
- lexical_var { init($1); }
- | non_empty_lexical_var_list ',' lexical_var { push($1, $3); }
-;
-
-lexical_var:
- optional_ref plain_variable { $$ = Expr\ClosureUse[$2, $1]; }
-;
-
-function_call:
- name argument_list { $$ = Expr\FuncCall[$1, $2]; }
- | callable_expr argument_list { $$ = Expr\FuncCall[$1, $2]; }
- | class_name_or_var T_PAAMAYIM_NEKUDOTAYIM member_name argument_list
- { $$ = Expr\StaticCall[$1, $3, $4]; }
-;
-
-class_name:
- T_STATIC { $$ = Name[$1]; }
- | name { $$ = $1; }
-;
-
-name:
- T_STRING { $$ = Name[$1]; }
- | T_NAME_QUALIFIED { $$ = Name[$1]; }
- | T_NAME_FULLY_QUALIFIED { $$ = Name\FullyQualified[substr($1, 1)]; }
- | T_NAME_RELATIVE { $$ = Name\Relative[substr($1, 10)]; }
-;
-
-class_name_reference:
- class_name { $$ = $1; }
- | new_variable { $$ = $1; }
- | '(' expr ')' { $$ = $2; }
- | error { $$ = Expr\Error[]; $this->errorState = 2; }
-;
-
-class_name_or_var:
- class_name { $$ = $1; }
- | fully_dereferencable { $$ = $1; }
-;
-
-exit_expr:
- /* empty */ { $$ = null; }
- | '(' optional_expr ')' { $$ = $2; }
-;
-
-backticks_expr:
- /* empty */ { $$ = array(); }
- | T_ENCAPSED_AND_WHITESPACE
- { $$ = array(Scalar\EncapsedStringPart[Scalar\String_::parseEscapeSequences($1, '`')]); }
- | encaps_list { parseEncapsed($1, '`', true); $$ = $1; }
-;
-
-ctor_arguments:
- /* empty */ { $$ = array(); }
- | argument_list { $$ = $1; }
-;
-
-constant:
- name { $$ = Expr\ConstFetch[$1]; }
- | T_LINE { $$ = Scalar\MagicConst\Line[]; }
- | T_FILE { $$ = Scalar\MagicConst\File[]; }
- | T_DIR { $$ = Scalar\MagicConst\Dir[]; }
- | T_CLASS_C { $$ = Scalar\MagicConst\Class_[]; }
- | T_TRAIT_C { $$ = Scalar\MagicConst\Trait_[]; }
- | T_METHOD_C { $$ = Scalar\MagicConst\Method[]; }
- | T_FUNC_C { $$ = Scalar\MagicConst\Function_[]; }
- | T_NS_C { $$ = Scalar\MagicConst\Namespace_[]; }
-;
-
-class_constant:
- class_name_or_var T_PAAMAYIM_NEKUDOTAYIM identifier_maybe_reserved
- { $$ = Expr\ClassConstFetch[$1, $3]; }
- /* We interpret an isolated FOO:: as an unfinished class constant fetch. It could also be
- an unfinished static property fetch or unfinished scoped call. */
- | class_name_or_var T_PAAMAYIM_NEKUDOTAYIM error
- { $$ = Expr\ClassConstFetch[$1, new Expr\Error(stackAttributes(#3))]; $this->errorState = 2; }
-;
-
-array_short_syntax:
- '[' array_pair_list ']'
- { $attrs = attributes(); $attrs['kind'] = Expr\Array_::KIND_SHORT;
- $$ = new Expr\Array_($2, $attrs); }
-;
-
-dereferencable_scalar:
- T_ARRAY '(' array_pair_list ')'
- { $attrs = attributes(); $attrs['kind'] = Expr\Array_::KIND_LONG;
- $$ = new Expr\Array_($3, $attrs); }
- | array_short_syntax { $$ = $1; }
- | T_CONSTANT_ENCAPSED_STRING
- { $attrs = attributes(); $attrs['kind'] = strKind($1);
- $$ = new Scalar\String_(Scalar\String_::parse($1), $attrs); }
- | '"' encaps_list '"'
- { $attrs = attributes(); $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED;
- parseEncapsed($2, '"', true); $$ = new Scalar\Encapsed($2, $attrs); }
-;
-
-scalar:
- T_LNUMBER { $$ = $this->parseLNumber($1, attributes()); }
- | T_DNUMBER { $$ = Scalar\DNumber[Scalar\DNumber::parse($1)]; }
- | dereferencable_scalar { $$ = $1; }
- | constant { $$ = $1; }
- | class_constant { $$ = $1; }
- | T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC
- { $$ = $this->parseDocString($1, $2, $3, attributes(), stackAttributes(#3), true); }
- | T_START_HEREDOC T_END_HEREDOC
- { $$ = $this->parseDocString($1, '', $2, attributes(), stackAttributes(#2), true); }
- | T_START_HEREDOC encaps_list T_END_HEREDOC
- { $$ = $this->parseDocString($1, $2, $3, attributes(), stackAttributes(#3), true); }
-;
-
-optional_expr:
- /* empty */ { $$ = null; }
- | expr { $$ = $1; }
-;
-
-fully_dereferencable:
- variable { $$ = $1; }
- | '(' expr ')' { $$ = $2; }
- | dereferencable_scalar { $$ = $1; }
- | class_constant { $$ = $1; }
-;
-
-array_object_dereferencable:
- fully_dereferencable { $$ = $1; }
- | constant { $$ = $1; }
-;
-
-callable_expr:
- callable_variable { $$ = $1; }
- | '(' expr ')' { $$ = $2; }
- | dereferencable_scalar { $$ = $1; }
-;
-
-callable_variable:
- simple_variable { $$ = $1; }
- | array_object_dereferencable '[' optional_expr ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
- | array_object_dereferencable '{' expr '}' { $$ = Expr\ArrayDimFetch[$1, $3]; }
- | function_call { $$ = $1; }
- | array_object_dereferencable T_OBJECT_OPERATOR property_name argument_list
- { $$ = Expr\MethodCall[$1, $3, $4]; }
- | array_object_dereferencable T_NULLSAFE_OBJECT_OPERATOR property_name argument_list
- { $$ = Expr\NullsafeMethodCall[$1, $3, $4]; }
-;
-
-optional_plain_variable:
- /* empty */ { $$ = null; }
- | plain_variable { $$ = $1; }
-;
-
-variable:
- callable_variable { $$ = $1; }
- | static_member { $$ = $1; }
- | array_object_dereferencable T_OBJECT_OPERATOR property_name
- { $$ = Expr\PropertyFetch[$1, $3]; }
- | array_object_dereferencable T_NULLSAFE_OBJECT_OPERATOR property_name
- { $$ = Expr\NullsafePropertyFetch[$1, $3]; }
-;
-
-simple_variable:
- plain_variable { $$ = $1; }
- | '$' '{' expr '}' { $$ = Expr\Variable[$3]; }
- | '$' simple_variable { $$ = Expr\Variable[$2]; }
- | '$' error { $$ = Expr\Variable[Expr\Error[]]; $this->errorState = 2; }
-;
-
-static_member_prop_name:
- simple_variable
- { $var = $1->name; $$ = \is_string($var) ? Node\VarLikeIdentifier[$var] : $var; }
-;
-
-static_member:
- class_name_or_var T_PAAMAYIM_NEKUDOTAYIM static_member_prop_name
- { $$ = Expr\StaticPropertyFetch[$1, $3]; }
-;
-
-new_variable:
- simple_variable { $$ = $1; }
- | new_variable '[' optional_expr ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
- | new_variable '{' expr '}' { $$ = Expr\ArrayDimFetch[$1, $3]; }
- | new_variable T_OBJECT_OPERATOR property_name { $$ = Expr\PropertyFetch[$1, $3]; }
- | new_variable T_NULLSAFE_OBJECT_OPERATOR property_name { $$ = Expr\NullsafePropertyFetch[$1, $3]; }
- | class_name T_PAAMAYIM_NEKUDOTAYIM static_member_prop_name
- { $$ = Expr\StaticPropertyFetch[$1, $3]; }
- | new_variable T_PAAMAYIM_NEKUDOTAYIM static_member_prop_name
- { $$ = Expr\StaticPropertyFetch[$1, $3]; }
-;
-
-member_name:
- identifier_maybe_reserved { $$ = $1; }
- | '{' expr '}' { $$ = $2; }
- | simple_variable { $$ = $1; }
-;
-
-property_name:
- identifier_not_reserved { $$ = $1; }
- | '{' expr '}' { $$ = $2; }
- | simple_variable { $$ = $1; }
- | error { $$ = Expr\Error[]; $this->errorState = 2; }
-;
-
-list_expr:
- T_LIST '(' inner_array_pair_list ')' { $$ = Expr\List_[$3]; }
-;
-
-array_pair_list:
- inner_array_pair_list
- { $$ = $1; $end = count($$)-1; if ($$[$end] === null) array_pop($$); }
-;
-
-comma_or_error:
- ','
- | error
- { /* do nothing -- prevent default action of $$=$1. See #551. */ }
-;
-
-inner_array_pair_list:
- inner_array_pair_list comma_or_error array_pair { push($1, $3); }
- | array_pair { init($1); }
-;
-
-array_pair:
- expr { $$ = Expr\ArrayItem[$1, null, false]; }
- | ampersand variable { $$ = Expr\ArrayItem[$2, null, true]; }
- | list_expr { $$ = Expr\ArrayItem[$1, null, false]; }
- | expr T_DOUBLE_ARROW expr { $$ = Expr\ArrayItem[$3, $1, false]; }
- | expr T_DOUBLE_ARROW ampersand variable { $$ = Expr\ArrayItem[$4, $1, true]; }
- | expr T_DOUBLE_ARROW list_expr { $$ = Expr\ArrayItem[$3, $1, false]; }
- | T_ELLIPSIS expr { $$ = Expr\ArrayItem[$2, null, false, attributes(), true]; }
- | /* empty */ { $$ = null; }
-;
-
-encaps_list:
- encaps_list encaps_var { push($1, $2); }
- | encaps_list encaps_string_part { push($1, $2); }
- | encaps_var { init($1); }
- | encaps_string_part encaps_var { init($1, $2); }
-;
-
-encaps_string_part:
- T_ENCAPSED_AND_WHITESPACE { $$ = Scalar\EncapsedStringPart[$1]; }
-;
-
-encaps_str_varname:
- T_STRING_VARNAME { $$ = Expr\Variable[$1]; }
-;
-
-encaps_var:
- plain_variable { $$ = $1; }
- | plain_variable '[' encaps_var_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
- | plain_variable T_OBJECT_OPERATOR identifier_not_reserved
- { $$ = Expr\PropertyFetch[$1, $3]; }
- | plain_variable T_NULLSAFE_OBJECT_OPERATOR identifier_not_reserved
- { $$ = Expr\NullsafePropertyFetch[$1, $3]; }
- | T_DOLLAR_OPEN_CURLY_BRACES expr '}' { $$ = Expr\Variable[$2]; }
- | T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '}' { $$ = Expr\Variable[$2]; }
- | T_DOLLAR_OPEN_CURLY_BRACES encaps_str_varname '[' expr ']' '}'
- { $$ = Expr\ArrayDimFetch[$2, $4]; }
- | T_CURLY_OPEN variable '}' { $$ = $2; }
-;
-
-encaps_var_offset:
- T_STRING { $$ = Scalar\String_[$1]; }
- | T_NUM_STRING { $$ = $this->parseNumString($1, attributes()); }
- | '-' T_NUM_STRING { $$ = $this->parseNumString('-' . $2, attributes()); }
- | plain_variable { $$ = $1; }
-;
-
-%%
diff --git a/vendor/nikic/php-parser/grammar/phpyLang.php b/vendor/nikic/php-parser/grammar/phpyLang.php
deleted file mode 100644
index 1a9808dc..00000000
--- a/vendor/nikic/php-parser/grammar/phpyLang.php
+++ /dev/null
@@ -1,192 +0,0 @@
-\'[^\\\\\']*+(?:\\\\.[^\\\\\']*+)*+\')
- (?"[^\\\\"]*+(?:\\\\.[^\\\\"]*+)*+")
- (?(?&singleQuotedString)|(?&doubleQuotedString))
- (?/\*[^*]*+(?:\*(?!/)[^*]*+)*+\*/)
- (?\{[^\'"/{}]*+(?:(?:(?&string)|(?&comment)|(?&code)|/)[^\'"/{}]*+)*+})
-)';
-
-const PARAMS = '\[(?[^[\]]*+(?:\[(?¶ms)\][^[\]]*+)*+)\]';
-const ARGS = '\((?[^()]*+(?:\((?&args)\)[^()]*+)*+)\)';
-
-///////////////////////////////
-/// Preprocessing functions ///
-///////////////////////////////
-
-function preprocessGrammar($code) {
- $code = resolveNodes($code);
- $code = resolveMacros($code);
- $code = resolveStackAccess($code);
-
- return $code;
-}
-
-function resolveNodes($code) {
- return preg_replace_callback(
- '~\b(?[A-Z][a-zA-Z_\\\\]++)\s*' . PARAMS . '~',
- function($matches) {
- // recurse
- $matches['params'] = resolveNodes($matches['params']);
-
- $params = magicSplit(
- '(?:' . PARAMS . '|' . ARGS . ')(*SKIP)(*FAIL)|,',
- $matches['params']
- );
-
- $paramCode = '';
- foreach ($params as $param) {
- $paramCode .= $param . ', ';
- }
-
- return 'new ' . $matches['name'] . '(' . $paramCode . 'attributes())';
- },
- $code
- );
-}
-
-function resolveMacros($code) {
- return preg_replace_callback(
- '~\b(?)(?!array\()(?[a-z][A-Za-z]++)' . ARGS . '~',
- function($matches) {
- // recurse
- $matches['args'] = resolveMacros($matches['args']);
-
- $name = $matches['name'];
- $args = magicSplit(
- '(?:' . PARAMS . '|' . ARGS . ')(*SKIP)(*FAIL)|,',
- $matches['args']
- );
-
- if ('attributes' === $name) {
- assertArgs(0, $args, $name);
- return '$this->startAttributeStack[#1] + $this->endAttributes';
- }
-
- if ('stackAttributes' === $name) {
- assertArgs(1, $args, $name);
- return '$this->startAttributeStack[' . $args[0] . ']'
- . ' + $this->endAttributeStack[' . $args[0] . ']';
- }
-
- if ('init' === $name) {
- return '$$ = array(' . implode(', ', $args) . ')';
- }
-
- if ('push' === $name) {
- assertArgs(2, $args, $name);
-
- return $args[0] . '[] = ' . $args[1] . '; $$ = ' . $args[0];
- }
-
- if ('pushNormalizing' === $name) {
- assertArgs(2, $args, $name);
-
- return 'if (is_array(' . $args[1] . ')) { $$ = array_merge(' . $args[0] . ', ' . $args[1] . '); }'
- . ' else { ' . $args[0] . '[] = ' . $args[1] . '; $$ = ' . $args[0] . '; }';
- }
-
- if ('toArray' == $name) {
- assertArgs(1, $args, $name);
-
- return 'is_array(' . $args[0] . ') ? ' . $args[0] . ' : array(' . $args[0] . ')';
- }
-
- if ('parseVar' === $name) {
- assertArgs(1, $args, $name);
-
- return 'substr(' . $args[0] . ', 1)';
- }
-
- if ('parseEncapsed' === $name) {
- assertArgs(3, $args, $name);
-
- return 'foreach (' . $args[0] . ' as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) {'
- . ' $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, ' . $args[1] . ', ' . $args[2] . '); } }';
- }
-
- if ('makeNop' === $name) {
- assertArgs(3, $args, $name);
-
- return '$startAttributes = ' . $args[1] . ';'
- . ' if (isset($startAttributes[\'comments\']))'
- . ' { ' . $args[0] . ' = new Stmt\Nop($startAttributes + ' . $args[2] . '); }'
- . ' else { ' . $args[0] . ' = null; }';
- }
-
- if ('makeZeroLengthNop' == $name) {
- assertArgs(2, $args, $name);
-
- return '$startAttributes = ' . $args[1] . ';'
- . ' if (isset($startAttributes[\'comments\']))'
- . ' { ' . $args[0] . ' = new Stmt\Nop($this->createCommentNopAttributes($startAttributes[\'comments\'])); }'
- . ' else { ' . $args[0] . ' = null; }';
- }
-
- if ('strKind' === $name) {
- assertArgs(1, $args, $name);
-
- return '(' . $args[0] . '[0] === "\'" || (' . $args[0] . '[1] === "\'" && '
- . '(' . $args[0] . '[0] === \'b\' || ' . $args[0] . '[0] === \'B\')) '
- . '? Scalar\String_::KIND_SINGLE_QUOTED : Scalar\String_::KIND_DOUBLE_QUOTED)';
- }
-
- if ('prependLeadingComments' === $name) {
- assertArgs(1, $args, $name);
-
- return '$attrs = $this->startAttributeStack[#1]; $stmts = ' . $args[0] . '; '
- . 'if (!empty($attrs[\'comments\'])) {'
- . '$stmts[0]->setAttribute(\'comments\', '
- . 'array_merge($attrs[\'comments\'], $stmts[0]->getAttribute(\'comments\', []))); }';
- }
-
- return $matches[0];
- },
- $code
- );
-}
-
-function assertArgs($num, $args, $name) {
- if ($num != count($args)) {
- die('Wrong argument count for ' . $name . '().');
- }
-}
-
-function resolveStackAccess($code) {
- $code = preg_replace('/\$\d+/', '$this->semStack[$0]', $code);
- $code = preg_replace('/#(\d+)/', '$$1', $code);
- return $code;
-}
-
-function removeTrailingWhitespace($code) {
- $lines = explode("\n", $code);
- $lines = array_map('rtrim', $lines);
- return implode("\n", $lines);
-}
-
-//////////////////////////////
-/// Regex helper functions ///
-//////////////////////////////
-
-function regex($regex) {
- return '~' . LIB . '(?:' . str_replace('~', '\~', $regex) . ')~';
-}
-
-function magicSplit($regex, $string) {
- $pieces = preg_split(regex('(?:(?&string)|(?&comment)|(?&code))(*SKIP)(*FAIL)|' . $regex), $string);
-
- foreach ($pieces as &$piece) {
- $piece = trim($piece);
- }
-
- if ($pieces === ['']) {
- return [];
- }
-
- return $pieces;
-}
diff --git a/vendor/nikic/php-parser/grammar/rebuildParsers.php b/vendor/nikic/php-parser/grammar/rebuildParsers.php
deleted file mode 100644
index 2d0c6b14..00000000
--- a/vendor/nikic/php-parser/grammar/rebuildParsers.php
+++ /dev/null
@@ -1,81 +0,0 @@
- 'Php5',
- __DIR__ . '/php7.y' => 'Php7',
-];
-
-$tokensFile = __DIR__ . '/tokens.y';
-$tokensTemplate = __DIR__ . '/tokens.template';
-$skeletonFile = __DIR__ . '/parser.template';
-$tmpGrammarFile = __DIR__ . '/tmp_parser.phpy';
-$tmpResultFile = __DIR__ . '/tmp_parser.php';
-$resultDir = __DIR__ . '/../lib/PhpParser/Parser';
-$tokensResultsFile = $resultDir . '/Tokens.php';
-
-$kmyacc = getenv('KMYACC');
-if (!$kmyacc) {
- // Use phpyacc from dev dependencies by default.
- $kmyacc = __DIR__ . '/../vendor/bin/phpyacc';
-}
-
-$options = array_flip($argv);
-$optionDebug = isset($options['--debug']);
-$optionKeepTmpGrammar = isset($options['--keep-tmp-grammar']);
-
-///////////////////
-/// Main script ///
-///////////////////
-
-$tokens = file_get_contents($tokensFile);
-
-foreach ($grammarFileToName as $grammarFile => $name) {
- echo "Building temporary $name grammar file.\n";
-
- $grammarCode = file_get_contents($grammarFile);
- $grammarCode = str_replace('%tokens', $tokens, $grammarCode);
- $grammarCode = preprocessGrammar($grammarCode);
-
- file_put_contents($tmpGrammarFile, $grammarCode);
-
- $additionalArgs = $optionDebug ? '-t -v' : '';
-
- echo "Building $name parser.\n";
- $output = execCmd("$kmyacc $additionalArgs -m $skeletonFile -p $name $tmpGrammarFile");
-
- $resultCode = file_get_contents($tmpResultFile);
- $resultCode = removeTrailingWhitespace($resultCode);
-
- ensureDirExists($resultDir);
- file_put_contents("$resultDir/$name.php", $resultCode);
- unlink($tmpResultFile);
-
- echo "Building token definition.\n";
- $output = execCmd("$kmyacc -m $tokensTemplate $tmpGrammarFile");
- rename($tmpResultFile, $tokensResultsFile);
-
- if (!$optionKeepTmpGrammar) {
- unlink($tmpGrammarFile);
- }
-}
-
-////////////////////////////////
-/// Utility helper functions ///
-////////////////////////////////
-
-function ensureDirExists($dir) {
- if (!is_dir($dir)) {
- mkdir($dir, 0777, true);
- }
-}
-
-function execCmd($cmd) {
- $output = trim(shell_exec("$cmd 2>&1"));
- if ($output !== "") {
- echo "> " . $cmd . "\n";
- echo $output;
- }
- return $output;
-}
diff --git a/vendor/nikic/php-parser/grammar/tokens.template b/vendor/nikic/php-parser/grammar/tokens.template
deleted file mode 100644
index ba4e4901..00000000
--- a/vendor/nikic/php-parser/grammar/tokens.template
+++ /dev/null
@@ -1,17 +0,0 @@
-semValue
-#semval($,%t) $this->semValue
-#semval(%n) $this->stackPos-(%l-%n)
-#semval(%n,%t) $this->stackPos-(%l-%n)
-
-namespace PhpParser\Parser;
-#include;
-
-/* GENERATED file based on grammar/tokens.y */
-final class Tokens
-{
-#tokenval
- const %s = %n;
-#endtokenval
-}
diff --git a/vendor/nikic/php-parser/grammar/tokens.y b/vendor/nikic/php-parser/grammar/tokens.y
deleted file mode 100644
index 8f0b2172..00000000
--- a/vendor/nikic/php-parser/grammar/tokens.y
+++ /dev/null
@@ -1,115 +0,0 @@
-/* We currently rely on the token ID mapping to be the same between PHP 5 and PHP 7 - so the same lexer can be used for
- * both. This is enforced by sharing this token file. */
-
-%right T_THROW
-%left T_INCLUDE T_INCLUDE_ONCE T_EVAL T_REQUIRE T_REQUIRE_ONCE
-%left ','
-%left T_LOGICAL_OR
-%left T_LOGICAL_XOR
-%left T_LOGICAL_AND
-%right T_PRINT
-%right T_YIELD
-%right T_DOUBLE_ARROW
-%right T_YIELD_FROM
-%left '=' T_PLUS_EQUAL T_MINUS_EQUAL T_MUL_EQUAL T_DIV_EQUAL T_CONCAT_EQUAL T_MOD_EQUAL T_AND_EQUAL T_OR_EQUAL T_XOR_EQUAL T_SL_EQUAL T_SR_EQUAL T_POW_EQUAL T_COALESCE_EQUAL
-%left '?' ':'
-%right T_COALESCE
-%left T_BOOLEAN_OR
-%left T_BOOLEAN_AND
-%left '|'
-%left '^'
-%left T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG
-%nonassoc T_IS_EQUAL T_IS_NOT_EQUAL T_IS_IDENTICAL T_IS_NOT_IDENTICAL T_SPACESHIP
-%nonassoc '<' T_IS_SMALLER_OR_EQUAL '>' T_IS_GREATER_OR_EQUAL
-%left T_SL T_SR
-%left '+' '-' '.'
-%left '*' '/' '%'
-%right '!'
-%nonassoc T_INSTANCEOF
-%right '~' T_INC T_DEC T_INT_CAST T_DOUBLE_CAST T_STRING_CAST T_ARRAY_CAST T_OBJECT_CAST T_BOOL_CAST T_UNSET_CAST '@'
-%right T_POW
-%right '['
-%nonassoc T_NEW T_CLONE
-%token T_EXIT
-%token T_IF
-%left T_ELSEIF
-%left T_ELSE
-%left T_ENDIF
-%token T_LNUMBER
-%token T_DNUMBER
-%token T_STRING
-%token T_STRING_VARNAME
-%token T_VARIABLE
-%token T_NUM_STRING
-%token T_INLINE_HTML
-%token T_ENCAPSED_AND_WHITESPACE
-%token T_CONSTANT_ENCAPSED_STRING
-%token T_ECHO
-%token T_DO
-%token T_WHILE
-%token T_ENDWHILE
-%token T_FOR
-%token T_ENDFOR
-%token T_FOREACH
-%token T_ENDFOREACH
-%token T_DECLARE
-%token T_ENDDECLARE
-%token T_AS
-%token T_SWITCH
-%token T_MATCH
-%token T_ENDSWITCH
-%token T_CASE
-%token T_DEFAULT
-%token T_BREAK
-%token T_CONTINUE
-%token T_GOTO
-%token T_FUNCTION
-%token T_FN
-%token T_CONST
-%token T_RETURN
-%token T_TRY
-%token T_CATCH
-%token T_FINALLY
-%token T_THROW
-%token T_USE
-%token T_INSTEADOF
-%token T_GLOBAL
-%right T_STATIC T_ABSTRACT T_FINAL T_PRIVATE T_PROTECTED T_PUBLIC T_READONLY
-%token T_VAR
-%token T_UNSET
-%token T_ISSET
-%token T_EMPTY
-%token T_HALT_COMPILER
-%token T_CLASS
-%token T_TRAIT
-%token T_INTERFACE
-%token T_ENUM
-%token T_EXTENDS
-%token T_IMPLEMENTS
-%token T_OBJECT_OPERATOR
-%token T_NULLSAFE_OBJECT_OPERATOR
-%token T_DOUBLE_ARROW
-%token T_LIST
-%token T_ARRAY
-%token T_CALLABLE
-%token T_CLASS_C
-%token T_TRAIT_C
-%token T_METHOD_C
-%token T_FUNC_C
-%token T_LINE
-%token T_FILE
-%token T_START_HEREDOC
-%token T_END_HEREDOC
-%token T_DOLLAR_OPEN_CURLY_BRACES
-%token T_CURLY_OPEN
-%token T_PAAMAYIM_NEKUDOTAYIM
-%token T_NAMESPACE
-%token T_NS_C
-%token T_DIR
-%token T_NS_SEPARATOR
-%token T_ELLIPSIS
-%token T_NAME_FULLY_QUALIFIED
-%token T_NAME_QUALIFIED
-%token T_NAME_RELATIVE
-%token T_ATTRIBUTE
-%token T_ENUM
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder.php b/vendor/nikic/php-parser/lib/PhpParser/Builder.php
deleted file mode 100644
index 26d8921e..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Builder.php
+++ /dev/null
@@ -1,13 +0,0 @@
-constants = [new Const_($name, BuilderHelpers::normalizeValue($value))];
- }
-
- /**
- * Add another constant to const group
- *
- * @param string|Identifier $name Name
- * @param Node\Expr|bool|null|int|float|string|array $value Value
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function addConst($name, $value) {
- $this->constants[] = new Const_($name, BuilderHelpers::normalizeValue($value));
-
- return $this;
- }
-
- /**
- * Makes the constant public.
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function makePublic() {
- $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_PUBLIC);
-
- return $this;
- }
-
- /**
- * Makes the constant protected.
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function makeProtected() {
- $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_PROTECTED);
-
- return $this;
- }
-
- /**
- * Makes the constant private.
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function makePrivate() {
- $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_PRIVATE);
-
- return $this;
- }
-
- /**
- * Makes the constant final.
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function makeFinal() {
- $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_FINAL);
-
- return $this;
- }
-
- /**
- * Sets doc comment for the constant.
- *
- * @param PhpParser\Comment\Doc|string $docComment Doc comment to set
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function setDocComment($docComment) {
- $this->attributes = [
- 'comments' => [BuilderHelpers::normalizeDocComment($docComment)]
- ];
-
- return $this;
- }
-
- /**
- * Adds an attribute group.
- *
- * @param Node\Attribute|Node\AttributeGroup $attribute
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function addAttribute($attribute) {
- $this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute);
-
- return $this;
- }
-
- /**
- * Returns the built class node.
- *
- * @return Stmt\ClassConst The built constant node
- */
- public function getNode(): PhpParser\Node {
- return new Stmt\ClassConst(
- $this->constants,
- $this->flags,
- $this->attributes,
- $this->attributeGroups
- );
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/Class_.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/Class_.php
deleted file mode 100644
index 87e2901a..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Builder/Class_.php
+++ /dev/null
@@ -1,140 +0,0 @@
-name = $name;
- }
-
- /**
- * Extends a class.
- *
- * @param Name|string $class Name of class to extend
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function extend($class) {
- $this->extends = BuilderHelpers::normalizeName($class);
-
- return $this;
- }
-
- /**
- * Implements one or more interfaces.
- *
- * @param Name|string ...$interfaces Names of interfaces to implement
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function implement(...$interfaces) {
- foreach ($interfaces as $interface) {
- $this->implements[] = BuilderHelpers::normalizeName($interface);
- }
-
- return $this;
- }
-
- /**
- * Makes the class abstract.
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function makeAbstract() {
- $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_ABSTRACT);
-
- return $this;
- }
-
- /**
- * Makes the class final.
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function makeFinal() {
- $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_FINAL);
-
- return $this;
- }
-
- /**
- * Adds a statement.
- *
- * @param Stmt|PhpParser\Builder $stmt The statement to add
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function addStmt($stmt) {
- $stmt = BuilderHelpers::normalizeNode($stmt);
-
- $targets = [
- Stmt\TraitUse::class => &$this->uses,
- Stmt\ClassConst::class => &$this->constants,
- Stmt\Property::class => &$this->properties,
- Stmt\ClassMethod::class => &$this->methods,
- ];
-
- $class = \get_class($stmt);
- if (!isset($targets[$class])) {
- throw new \LogicException(sprintf('Unexpected node of type "%s"', $stmt->getType()));
- }
-
- $targets[$class][] = $stmt;
-
- return $this;
- }
-
- /**
- * Adds an attribute group.
- *
- * @param Node\Attribute|Node\AttributeGroup $attribute
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function addAttribute($attribute) {
- $this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute);
-
- return $this;
- }
-
- /**
- * Returns the built class node.
- *
- * @return Stmt\Class_ The built class node
- */
- public function getNode() : PhpParser\Node {
- return new Stmt\Class_($this->name, [
- 'flags' => $this->flags,
- 'extends' => $this->extends,
- 'implements' => $this->implements,
- 'stmts' => array_merge($this->uses, $this->constants, $this->properties, $this->methods),
- 'attrGroups' => $this->attributeGroups,
- ], $this->attributes);
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/Declaration.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/Declaration.php
deleted file mode 100644
index 83094992..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Builder/Declaration.php
+++ /dev/null
@@ -1,43 +0,0 @@
-addStmt($stmt);
- }
-
- return $this;
- }
-
- /**
- * Sets doc comment for the declaration.
- *
- * @param PhpParser\Comment\Doc|string $docComment Doc comment to set
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function setDocComment($docComment) {
- $this->attributes['comments'] = [
- BuilderHelpers::normalizeDocComment($docComment)
- ];
-
- return $this;
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php
deleted file mode 100644
index 02fa83e6..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php
+++ /dev/null
@@ -1,85 +0,0 @@
-name = $name;
- }
-
- /**
- * Sets the value.
- *
- * @param Node\Expr|string|int $value
- *
- * @return $this
- */
- public function setValue($value) {
- $this->value = BuilderHelpers::normalizeValue($value);
-
- return $this;
- }
-
- /**
- * Sets doc comment for the constant.
- *
- * @param PhpParser\Comment\Doc|string $docComment Doc comment to set
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function setDocComment($docComment) {
- $this->attributes = [
- 'comments' => [BuilderHelpers::normalizeDocComment($docComment)]
- ];
-
- return $this;
- }
-
- /**
- * Adds an attribute group.
- *
- * @param Node\Attribute|Node\AttributeGroup $attribute
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function addAttribute($attribute) {
- $this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute);
-
- return $this;
- }
-
- /**
- * Returns the built enum case node.
- *
- * @return Stmt\EnumCase The built constant node
- */
- public function getNode(): PhpParser\Node {
- return new Stmt\EnumCase(
- $this->name,
- $this->value,
- $this->attributes,
- $this->attributeGroups
- );
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/Enum_.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/Enum_.php
deleted file mode 100644
index be7eef95..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Builder/Enum_.php
+++ /dev/null
@@ -1,117 +0,0 @@
-name = $name;
- }
-
- /**
- * Sets the scalar type.
- *
- * @param string|Identifier $type
- *
- * @return $this
- */
- public function setScalarType($scalarType) {
- $this->scalarType = BuilderHelpers::normalizeType($scalarType);
-
- return $this;
- }
-
- /**
- * Implements one or more interfaces.
- *
- * @param Name|string ...$interfaces Names of interfaces to implement
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function implement(...$interfaces) {
- foreach ($interfaces as $interface) {
- $this->implements[] = BuilderHelpers::normalizeName($interface);
- }
-
- return $this;
- }
-
- /**
- * Adds a statement.
- *
- * @param Stmt|PhpParser\Builder $stmt The statement to add
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function addStmt($stmt) {
- $stmt = BuilderHelpers::normalizeNode($stmt);
-
- $targets = [
- Stmt\TraitUse::class => &$this->uses,
- Stmt\EnumCase::class => &$this->enumCases,
- Stmt\ClassConst::class => &$this->constants,
- Stmt\ClassMethod::class => &$this->methods,
- ];
-
- $class = \get_class($stmt);
- if (!isset($targets[$class])) {
- throw new \LogicException(sprintf('Unexpected node of type "%s"', $stmt->getType()));
- }
-
- $targets[$class][] = $stmt;
-
- return $this;
- }
-
- /**
- * Adds an attribute group.
- *
- * @param Node\Attribute|Node\AttributeGroup $attribute
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function addAttribute($attribute) {
- $this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute);
-
- return $this;
- }
-
- /**
- * Returns the built class node.
- *
- * @return Stmt\Enum_ The built enum node
- */
- public function getNode() : PhpParser\Node {
- return new Stmt\Enum_($this->name, [
- 'scalarType' => $this->scalarType,
- 'implements' => $this->implements,
- 'stmts' => array_merge($this->uses, $this->enumCases, $this->constants, $this->methods),
- 'attrGroups' => $this->attributeGroups,
- ], $this->attributes);
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php
deleted file mode 100644
index 98ea9d33..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php
+++ /dev/null
@@ -1,73 +0,0 @@
-returnByRef = true;
-
- return $this;
- }
-
- /**
- * Adds a parameter.
- *
- * @param Node\Param|Param $param The parameter to add
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function addParam($param) {
- $param = BuilderHelpers::normalizeNode($param);
-
- if (!$param instanceof Node\Param) {
- throw new \LogicException(sprintf('Expected parameter node, got "%s"', $param->getType()));
- }
-
- $this->params[] = $param;
-
- return $this;
- }
-
- /**
- * Adds multiple parameters.
- *
- * @param array $params The parameters to add
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function addParams(array $params) {
- foreach ($params as $param) {
- $this->addParam($param);
- }
-
- return $this;
- }
-
- /**
- * Sets the return type for PHP 7.
- *
- * @param string|Node\Name|Node\Identifier|Node\ComplexType $type
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function setReturnType($type) {
- $this->returnType = BuilderHelpers::normalizeType($type);
-
- return $this;
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/Function_.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/Function_.php
deleted file mode 100644
index 1cd73c0d..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Builder/Function_.php
+++ /dev/null
@@ -1,67 +0,0 @@
-name = $name;
- }
-
- /**
- * Adds a statement.
- *
- * @param Node|PhpParser\Builder $stmt The statement to add
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function addStmt($stmt) {
- $this->stmts[] = BuilderHelpers::normalizeStmt($stmt);
-
- return $this;
- }
-
- /**
- * Adds an attribute group.
- *
- * @param Node\Attribute|Node\AttributeGroup $attribute
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function addAttribute($attribute) {
- $this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute);
-
- return $this;
- }
-
- /**
- * Returns the built function node.
- *
- * @return Stmt\Function_ The built function node
- */
- public function getNode() : Node {
- return new Stmt\Function_($this->name, [
- 'byRef' => $this->returnByRef,
- 'params' => $this->params,
- 'returnType' => $this->returnType,
- 'stmts' => $this->stmts,
- 'attrGroups' => $this->attributeGroups,
- ], $this->attributes);
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/Interface_.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/Interface_.php
deleted file mode 100644
index 7806e85f..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Builder/Interface_.php
+++ /dev/null
@@ -1,93 +0,0 @@
-name = $name;
- }
-
- /**
- * Extends one or more interfaces.
- *
- * @param Name|string ...$interfaces Names of interfaces to extend
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function extend(...$interfaces) {
- foreach ($interfaces as $interface) {
- $this->extends[] = BuilderHelpers::normalizeName($interface);
- }
-
- return $this;
- }
-
- /**
- * Adds a statement.
- *
- * @param Stmt|PhpParser\Builder $stmt The statement to add
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function addStmt($stmt) {
- $stmt = BuilderHelpers::normalizeNode($stmt);
-
- if ($stmt instanceof Stmt\ClassConst) {
- $this->constants[] = $stmt;
- } elseif ($stmt instanceof Stmt\ClassMethod) {
- // we erase all statements in the body of an interface method
- $stmt->stmts = null;
- $this->methods[] = $stmt;
- } else {
- throw new \LogicException(sprintf('Unexpected node of type "%s"', $stmt->getType()));
- }
-
- return $this;
- }
-
- /**
- * Adds an attribute group.
- *
- * @param Node\Attribute|Node\AttributeGroup $attribute
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function addAttribute($attribute) {
- $this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute);
-
- return $this;
- }
-
- /**
- * Returns the built interface node.
- *
- * @return Stmt\Interface_ The built interface node
- */
- public function getNode() : PhpParser\Node {
- return new Stmt\Interface_($this->name, [
- 'extends' => $this->extends,
- 'stmts' => array_merge($this->constants, $this->methods),
- 'attrGroups' => $this->attributeGroups,
- ], $this->attributes);
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/Method.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/Method.php
deleted file mode 100644
index 232d7cb8..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Builder/Method.php
+++ /dev/null
@@ -1,146 +0,0 @@
-name = $name;
- }
-
- /**
- * Makes the method public.
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function makePublic() {
- $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_PUBLIC);
-
- return $this;
- }
-
- /**
- * Makes the method protected.
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function makeProtected() {
- $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_PROTECTED);
-
- return $this;
- }
-
- /**
- * Makes the method private.
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function makePrivate() {
- $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_PRIVATE);
-
- return $this;
- }
-
- /**
- * Makes the method static.
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function makeStatic() {
- $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_STATIC);
-
- return $this;
- }
-
- /**
- * Makes the method abstract.
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function makeAbstract() {
- if (!empty($this->stmts)) {
- throw new \LogicException('Cannot make method with statements abstract');
- }
-
- $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_ABSTRACT);
- $this->stmts = null; // abstract methods don't have statements
-
- return $this;
- }
-
- /**
- * Makes the method final.
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function makeFinal() {
- $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_FINAL);
-
- return $this;
- }
-
- /**
- * Adds a statement.
- *
- * @param Node|PhpParser\Builder $stmt The statement to add
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function addStmt($stmt) {
- if (null === $this->stmts) {
- throw new \LogicException('Cannot add statements to an abstract method');
- }
-
- $this->stmts[] = BuilderHelpers::normalizeStmt($stmt);
-
- return $this;
- }
-
- /**
- * Adds an attribute group.
- *
- * @param Node\Attribute|Node\AttributeGroup $attribute
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function addAttribute($attribute) {
- $this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute);
-
- return $this;
- }
-
- /**
- * Returns the built method node.
- *
- * @return Stmt\ClassMethod The built method node
- */
- public function getNode() : Node {
- return new Stmt\ClassMethod($this->name, [
- 'flags' => $this->flags,
- 'byRef' => $this->returnByRef,
- 'params' => $this->params,
- 'returnType' => $this->returnType,
- 'stmts' => $this->stmts,
- 'attrGroups' => $this->attributeGroups,
- ], $this->attributes);
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php
deleted file mode 100644
index 1c751e16..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php
+++ /dev/null
@@ -1,45 +0,0 @@
-name = null !== $name ? BuilderHelpers::normalizeName($name) : null;
- }
-
- /**
- * Adds a statement.
- *
- * @param Node|PhpParser\Builder $stmt The statement to add
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function addStmt($stmt) {
- $this->stmts[] = BuilderHelpers::normalizeStmt($stmt);
-
- return $this;
- }
-
- /**
- * Returns the built node.
- *
- * @return Stmt\Namespace_ The built node
- */
- public function getNode() : Node {
- return new Stmt\Namespace_($this->name, $this->stmts, $this->attributes);
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php
deleted file mode 100644
index de9aae7e..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php
+++ /dev/null
@@ -1,122 +0,0 @@
-name = $name;
- }
-
- /**
- * Sets default value for the parameter.
- *
- * @param mixed $value Default value to use
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function setDefault($value) {
- $this->default = BuilderHelpers::normalizeValue($value);
-
- return $this;
- }
-
- /**
- * Sets type for the parameter.
- *
- * @param string|Node\Name|Node\Identifier|Node\ComplexType $type Parameter type
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function setType($type) {
- $this->type = BuilderHelpers::normalizeType($type);
- if ($this->type == 'void') {
- throw new \LogicException('Parameter type cannot be void');
- }
-
- return $this;
- }
-
- /**
- * Sets type for the parameter.
- *
- * @param string|Node\Name|Node\Identifier|Node\ComplexType $type Parameter type
- *
- * @return $this The builder instance (for fluid interface)
- *
- * @deprecated Use setType() instead
- */
- public function setTypeHint($type) {
- return $this->setType($type);
- }
-
- /**
- * Make the parameter accept the value by reference.
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function makeByRef() {
- $this->byRef = true;
-
- return $this;
- }
-
- /**
- * Make the parameter variadic
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function makeVariadic() {
- $this->variadic = true;
-
- return $this;
- }
-
- /**
- * Adds an attribute group.
- *
- * @param Node\Attribute|Node\AttributeGroup $attribute
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function addAttribute($attribute) {
- $this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute);
-
- return $this;
- }
-
- /**
- * Returns the built parameter node.
- *
- * @return Node\Param The built parameter node
- */
- public function getNode() : Node {
- return new Node\Param(
- new Node\Expr\Variable($this->name),
- $this->default, $this->type, $this->byRef, $this->variadic, [], 0, $this->attributeGroups
- );
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/Property.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/Property.php
deleted file mode 100644
index 68e31856..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Builder/Property.php
+++ /dev/null
@@ -1,161 +0,0 @@
-name = $name;
- }
-
- /**
- * Makes the property public.
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function makePublic() {
- $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_PUBLIC);
-
- return $this;
- }
-
- /**
- * Makes the property protected.
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function makeProtected() {
- $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_PROTECTED);
-
- return $this;
- }
-
- /**
- * Makes the property private.
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function makePrivate() {
- $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_PRIVATE);
-
- return $this;
- }
-
- /**
- * Makes the property static.
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function makeStatic() {
- $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_STATIC);
-
- return $this;
- }
-
- /**
- * Makes the property readonly.
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function makeReadonly() {
- $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_READONLY);
-
- return $this;
- }
-
- /**
- * Sets default value for the property.
- *
- * @param mixed $value Default value to use
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function setDefault($value) {
- $this->default = BuilderHelpers::normalizeValue($value);
-
- return $this;
- }
-
- /**
- * Sets doc comment for the property.
- *
- * @param PhpParser\Comment\Doc|string $docComment Doc comment to set
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function setDocComment($docComment) {
- $this->attributes = [
- 'comments' => [BuilderHelpers::normalizeDocComment($docComment)]
- ];
-
- return $this;
- }
-
- /**
- * Sets the property type for PHP 7.4+.
- *
- * @param string|Name|Identifier|ComplexType $type
- *
- * @return $this
- */
- public function setType($type) {
- $this->type = BuilderHelpers::normalizeType($type);
-
- return $this;
- }
-
- /**
- * Adds an attribute group.
- *
- * @param Node\Attribute|Node\AttributeGroup $attribute
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function addAttribute($attribute) {
- $this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute);
-
- return $this;
- }
-
- /**
- * Returns the built class node.
- *
- * @return Stmt\Property The built property node
- */
- public function getNode() : PhpParser\Node {
- return new Stmt\Property(
- $this->flags !== 0 ? $this->flags : Stmt\Class_::MODIFIER_PUBLIC,
- [
- new Stmt\PropertyProperty($this->name, $this->default)
- ],
- $this->attributes,
- $this->type,
- $this->attributeGroups
- );
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php
deleted file mode 100644
index 311e8cd7..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php
+++ /dev/null
@@ -1,64 +0,0 @@
-and($trait);
- }
- }
-
- /**
- * Adds used trait.
- *
- * @param Node\Name|string $trait Trait name
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function and($trait) {
- $this->traits[] = BuilderHelpers::normalizeName($trait);
- return $this;
- }
-
- /**
- * Adds trait adaptation.
- *
- * @param Stmt\TraitUseAdaptation|Builder\TraitUseAdaptation $adaptation Trait adaptation
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function with($adaptation) {
- $adaptation = BuilderHelpers::normalizeNode($adaptation);
-
- if (!$adaptation instanceof Stmt\TraitUseAdaptation) {
- throw new \LogicException('Adaptation must have type TraitUseAdaptation');
- }
-
- $this->adaptations[] = $adaptation;
- return $this;
- }
-
- /**
- * Returns the built node.
- *
- * @return Node The built node
- */
- public function getNode() : Node {
- return new Stmt\TraitUse($this->traits, $this->adaptations);
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php
deleted file mode 100644
index eb6c0b62..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php
+++ /dev/null
@@ -1,148 +0,0 @@
-type = self::TYPE_UNDEFINED;
-
- $this->trait = is_null($trait)? null: BuilderHelpers::normalizeName($trait);
- $this->method = BuilderHelpers::normalizeIdentifier($method);
- }
-
- /**
- * Sets alias of method.
- *
- * @param Node\Identifier|string $alias Alias for adaptated method
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function as($alias) {
- if ($this->type === self::TYPE_UNDEFINED) {
- $this->type = self::TYPE_ALIAS;
- }
-
- if ($this->type !== self::TYPE_ALIAS) {
- throw new \LogicException('Cannot set alias for not alias adaptation buider');
- }
-
- $this->alias = $alias;
- return $this;
- }
-
- /**
- * Sets adaptated method public.
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function makePublic() {
- $this->setModifier(Stmt\Class_::MODIFIER_PUBLIC);
- return $this;
- }
-
- /**
- * Sets adaptated method protected.
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function makeProtected() {
- $this->setModifier(Stmt\Class_::MODIFIER_PROTECTED);
- return $this;
- }
-
- /**
- * Sets adaptated method private.
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function makePrivate() {
- $this->setModifier(Stmt\Class_::MODIFIER_PRIVATE);
- return $this;
- }
-
- /**
- * Adds overwritten traits.
- *
- * @param Node\Name|string ...$traits Traits for overwrite
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function insteadof(...$traits) {
- if ($this->type === self::TYPE_UNDEFINED) {
- if (is_null($this->trait)) {
- throw new \LogicException('Precedence adaptation must have trait');
- }
-
- $this->type = self::TYPE_PRECEDENCE;
- }
-
- if ($this->type !== self::TYPE_PRECEDENCE) {
- throw new \LogicException('Cannot add overwritten traits for not precedence adaptation buider');
- }
-
- foreach ($traits as $trait) {
- $this->insteadof[] = BuilderHelpers::normalizeName($trait);
- }
-
- return $this;
- }
-
- protected function setModifier(int $modifier) {
- if ($this->type === self::TYPE_UNDEFINED) {
- $this->type = self::TYPE_ALIAS;
- }
-
- if ($this->type !== self::TYPE_ALIAS) {
- throw new \LogicException('Cannot set access modifier for not alias adaptation buider');
- }
-
- if (is_null($this->modifier)) {
- $this->modifier = $modifier;
- } else {
- throw new \LogicException('Multiple access type modifiers are not allowed');
- }
- }
-
- /**
- * Returns the built node.
- *
- * @return Node The built node
- */
- public function getNode() : Node {
- switch ($this->type) {
- case self::TYPE_ALIAS:
- return new Stmt\TraitUseAdaptation\Alias($this->trait, $this->method, $this->modifier, $this->alias);
- case self::TYPE_PRECEDENCE:
- return new Stmt\TraitUseAdaptation\Precedence($this->trait, $this->method, $this->insteadof);
- default:
- throw new \LogicException('Type of adaptation is not defined');
- }
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/Trait_.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/Trait_.php
deleted file mode 100644
index 97f32f98..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Builder/Trait_.php
+++ /dev/null
@@ -1,78 +0,0 @@
-name = $name;
- }
-
- /**
- * Adds a statement.
- *
- * @param Stmt|PhpParser\Builder $stmt The statement to add
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function addStmt($stmt) {
- $stmt = BuilderHelpers::normalizeNode($stmt);
-
- if ($stmt instanceof Stmt\Property) {
- $this->properties[] = $stmt;
- } elseif ($stmt instanceof Stmt\ClassMethod) {
- $this->methods[] = $stmt;
- } elseif ($stmt instanceof Stmt\TraitUse) {
- $this->uses[] = $stmt;
- } else {
- throw new \LogicException(sprintf('Unexpected node of type "%s"', $stmt->getType()));
- }
-
- return $this;
- }
-
- /**
- * Adds an attribute group.
- *
- * @param Node\Attribute|Node\AttributeGroup $attribute
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function addAttribute($attribute) {
- $this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute);
-
- return $this;
- }
-
- /**
- * Returns the built trait node.
- *
- * @return Stmt\Trait_ The built interface node
- */
- public function getNode() : PhpParser\Node {
- return new Stmt\Trait_(
- $this->name, [
- 'stmts' => array_merge($this->uses, $this->properties, $this->methods),
- 'attrGroups' => $this->attributeGroups,
- ], $this->attributes
- );
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/Use_.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/Use_.php
deleted file mode 100644
index 4bd3d12d..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Builder/Use_.php
+++ /dev/null
@@ -1,49 +0,0 @@
-name = BuilderHelpers::normalizeName($name);
- $this->type = $type;
- }
-
- /**
- * Sets alias for used name.
- *
- * @param string $alias Alias to use (last component of full name by default)
- *
- * @return $this The builder instance (for fluid interface)
- */
- public function as(string $alias) {
- $this->alias = $alias;
- return $this;
- }
-
- /**
- * Returns the built node.
- *
- * @return Stmt\Use_ The built node
- */
- public function getNode() : Node {
- return new Stmt\Use_([
- new Stmt\UseUse($this->name, $this->alias)
- ], $this->type);
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php b/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php
deleted file mode 100644
index fef2579b..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php
+++ /dev/null
@@ -1,399 +0,0 @@
-args($args)
- );
- }
-
- /**
- * Creates a namespace builder.
- *
- * @param null|string|Node\Name $name Name of the namespace
- *
- * @return Builder\Namespace_ The created namespace builder
- */
- public function namespace($name) : Builder\Namespace_ {
- return new Builder\Namespace_($name);
- }
-
- /**
- * Creates a class builder.
- *
- * @param string $name Name of the class
- *
- * @return Builder\Class_ The created class builder
- */
- public function class(string $name) : Builder\Class_ {
- return new Builder\Class_($name);
- }
-
- /**
- * Creates an interface builder.
- *
- * @param string $name Name of the interface
- *
- * @return Builder\Interface_ The created interface builder
- */
- public function interface(string $name) : Builder\Interface_ {
- return new Builder\Interface_($name);
- }
-
- /**
- * Creates a trait builder.
- *
- * @param string $name Name of the trait
- *
- * @return Builder\Trait_ The created trait builder
- */
- public function trait(string $name) : Builder\Trait_ {
- return new Builder\Trait_($name);
- }
-
- /**
- * Creates an enum builder.
- *
- * @param string $name Name of the enum
- *
- * @return Builder\Enum_ The created enum builder
- */
- public function enum(string $name) : Builder\Enum_ {
- return new Builder\Enum_($name);
- }
-
- /**
- * Creates a trait use builder.
- *
- * @param Node\Name|string ...$traits Trait names
- *
- * @return Builder\TraitUse The create trait use builder
- */
- public function useTrait(...$traits) : Builder\TraitUse {
- return new Builder\TraitUse(...$traits);
- }
-
- /**
- * Creates a trait use adaptation builder.
- *
- * @param Node\Name|string|null $trait Trait name
- * @param Node\Identifier|string $method Method name
- *
- * @return Builder\TraitUseAdaptation The create trait use adaptation builder
- */
- public function traitUseAdaptation($trait, $method = null) : Builder\TraitUseAdaptation {
- if ($method === null) {
- $method = $trait;
- $trait = null;
- }
-
- return new Builder\TraitUseAdaptation($trait, $method);
- }
-
- /**
- * Creates a method builder.
- *
- * @param string $name Name of the method
- *
- * @return Builder\Method The created method builder
- */
- public function method(string $name) : Builder\Method {
- return new Builder\Method($name);
- }
-
- /**
- * Creates a parameter builder.
- *
- * @param string $name Name of the parameter
- *
- * @return Builder\Param The created parameter builder
- */
- public function param(string $name) : Builder\Param {
- return new Builder\Param($name);
- }
-
- /**
- * Creates a property builder.
- *
- * @param string $name Name of the property
- *
- * @return Builder\Property The created property builder
- */
- public function property(string $name) : Builder\Property {
- return new Builder\Property($name);
- }
-
- /**
- * Creates a function builder.
- *
- * @param string $name Name of the function
- *
- * @return Builder\Function_ The created function builder
- */
- public function function(string $name) : Builder\Function_ {
- return new Builder\Function_($name);
- }
-
- /**
- * Creates a namespace/class use builder.
- *
- * @param Node\Name|string $name Name of the entity (namespace or class) to alias
- *
- * @return Builder\Use_ The created use builder
- */
- public function use($name) : Builder\Use_ {
- return new Builder\Use_($name, Use_::TYPE_NORMAL);
- }
-
- /**
- * Creates a function use builder.
- *
- * @param Node\Name|string $name Name of the function to alias
- *
- * @return Builder\Use_ The created use function builder
- */
- public function useFunction($name) : Builder\Use_ {
- return new Builder\Use_($name, Use_::TYPE_FUNCTION);
- }
-
- /**
- * Creates a constant use builder.
- *
- * @param Node\Name|string $name Name of the const to alias
- *
- * @return Builder\Use_ The created use const builder
- */
- public function useConst($name) : Builder\Use_ {
- return new Builder\Use_($name, Use_::TYPE_CONSTANT);
- }
-
- /**
- * Creates a class constant builder.
- *
- * @param string|Identifier $name Name
- * @param Node\Expr|bool|null|int|float|string|array $value Value
- *
- * @return Builder\ClassConst The created use const builder
- */
- public function classConst($name, $value) : Builder\ClassConst {
- return new Builder\ClassConst($name, $value);
- }
-
- /**
- * Creates an enum case builder.
- *
- * @param string|Identifier $name Name
- *
- * @return Builder\EnumCase The created use const builder
- */
- public function enumCase($name) : Builder\EnumCase {
- return new Builder\EnumCase($name);
- }
-
- /**
- * Creates node a for a literal value.
- *
- * @param Expr|bool|null|int|float|string|array $value $value
- *
- * @return Expr
- */
- public function val($value) : Expr {
- return BuilderHelpers::normalizeValue($value);
- }
-
- /**
- * Creates variable node.
- *
- * @param string|Expr $name Name
- *
- * @return Expr\Variable
- */
- public function var($name) : Expr\Variable {
- if (!\is_string($name) && !$name instanceof Expr) {
- throw new \LogicException('Variable name must be string or Expr');
- }
-
- return new Expr\Variable($name);
- }
-
- /**
- * Normalizes an argument list.
- *
- * Creates Arg nodes for all arguments and converts literal values to expressions.
- *
- * @param array $args List of arguments to normalize
- *
- * @return Arg[]
- */
- public function args(array $args) : array {
- $normalizedArgs = [];
- foreach ($args as $key => $arg) {
- if (!($arg instanceof Arg)) {
- $arg = new Arg(BuilderHelpers::normalizeValue($arg));
- }
- if (\is_string($key)) {
- $arg->name = BuilderHelpers::normalizeIdentifier($key);
- }
- $normalizedArgs[] = $arg;
- }
- return $normalizedArgs;
- }
-
- /**
- * Creates a function call node.
- *
- * @param string|Name|Expr $name Function name
- * @param array $args Function arguments
- *
- * @return Expr\FuncCall
- */
- public function funcCall($name, array $args = []) : Expr\FuncCall {
- return new Expr\FuncCall(
- BuilderHelpers::normalizeNameOrExpr($name),
- $this->args($args)
- );
- }
-
- /**
- * Creates a method call node.
- *
- * @param Expr $var Variable the method is called on
- * @param string|Identifier|Expr $name Method name
- * @param array $args Method arguments
- *
- * @return Expr\MethodCall
- */
- public function methodCall(Expr $var, $name, array $args = []) : Expr\MethodCall {
- return new Expr\MethodCall(
- $var,
- BuilderHelpers::normalizeIdentifierOrExpr($name),
- $this->args($args)
- );
- }
-
- /**
- * Creates a static method call node.
- *
- * @param string|Name|Expr $class Class name
- * @param string|Identifier|Expr $name Method name
- * @param array $args Method arguments
- *
- * @return Expr\StaticCall
- */
- public function staticCall($class, $name, array $args = []) : Expr\StaticCall {
- return new Expr\StaticCall(
- BuilderHelpers::normalizeNameOrExpr($class),
- BuilderHelpers::normalizeIdentifierOrExpr($name),
- $this->args($args)
- );
- }
-
- /**
- * Creates an object creation node.
- *
- * @param string|Name|Expr $class Class name
- * @param array $args Constructor arguments
- *
- * @return Expr\New_
- */
- public function new($class, array $args = []) : Expr\New_ {
- return new Expr\New_(
- BuilderHelpers::normalizeNameOrExpr($class),
- $this->args($args)
- );
- }
-
- /**
- * Creates a constant fetch node.
- *
- * @param string|Name $name Constant name
- *
- * @return Expr\ConstFetch
- */
- public function constFetch($name) : Expr\ConstFetch {
- return new Expr\ConstFetch(BuilderHelpers::normalizeName($name));
- }
-
- /**
- * Creates a property fetch node.
- *
- * @param Expr $var Variable holding object
- * @param string|Identifier|Expr $name Property name
- *
- * @return Expr\PropertyFetch
- */
- public function propertyFetch(Expr $var, $name) : Expr\PropertyFetch {
- return new Expr\PropertyFetch($var, BuilderHelpers::normalizeIdentifierOrExpr($name));
- }
-
- /**
- * Creates a class constant fetch node.
- *
- * @param string|Name|Expr $class Class name
- * @param string|Identifier $name Constant name
- *
- * @return Expr\ClassConstFetch
- */
- public function classConstFetch($class, $name): Expr\ClassConstFetch {
- return new Expr\ClassConstFetch(
- BuilderHelpers::normalizeNameOrExpr($class),
- BuilderHelpers::normalizeIdentifier($name)
- );
- }
-
- /**
- * Creates nested Concat nodes from a list of expressions.
- *
- * @param Expr|string ...$exprs Expressions or literal strings
- *
- * @return Concat
- */
- public function concat(...$exprs) : Concat {
- $numExprs = count($exprs);
- if ($numExprs < 2) {
- throw new \LogicException('Expected at least two expressions');
- }
-
- $lastConcat = $this->normalizeStringExpr($exprs[0]);
- for ($i = 1; $i < $numExprs; $i++) {
- $lastConcat = new Concat($lastConcat, $this->normalizeStringExpr($exprs[$i]));
- }
- return $lastConcat;
- }
-
- /**
- * @param string|Expr $expr
- * @return Expr
- */
- private function normalizeStringExpr($expr) : Expr {
- if ($expr instanceof Expr) {
- return $expr;
- }
-
- if (\is_string($expr)) {
- return new String_($expr);
- }
-
- throw new \LogicException('Expected string or Expr');
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php b/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php
deleted file mode 100644
index 2f0e9127..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php
+++ /dev/null
@@ -1,313 +0,0 @@
-getNode();
- }
-
- if ($node instanceof Node) {
- return $node;
- }
-
- throw new \LogicException('Expected node or builder object');
- }
-
- /**
- * Normalizes a node to a statement.
- *
- * Expressions are wrapped in a Stmt\Expression node.
- *
- * @param Node|Builder $node The node to normalize
- *
- * @return Stmt The normalized statement node
- */
- public static function normalizeStmt($node) : Stmt {
- $node = self::normalizeNode($node);
- if ($node instanceof Stmt) {
- return $node;
- }
-
- if ($node instanceof Expr) {
- return new Stmt\Expression($node);
- }
-
- throw new \LogicException('Expected statement or expression node');
- }
-
- /**
- * Normalizes strings to Identifier.
- *
- * @param string|Identifier $name The identifier to normalize
- *
- * @return Identifier The normalized identifier
- */
- public static function normalizeIdentifier($name) : Identifier {
- if ($name instanceof Identifier) {
- return $name;
- }
-
- if (\is_string($name)) {
- return new Identifier($name);
- }
-
- throw new \LogicException('Expected string or instance of Node\Identifier');
- }
-
- /**
- * Normalizes strings to Identifier, also allowing expressions.
- *
- * @param string|Identifier|Expr $name The identifier to normalize
- *
- * @return Identifier|Expr The normalized identifier or expression
- */
- public static function normalizeIdentifierOrExpr($name) {
- if ($name instanceof Identifier || $name instanceof Expr) {
- return $name;
- }
-
- if (\is_string($name)) {
- return new Identifier($name);
- }
-
- throw new \LogicException('Expected string or instance of Node\Identifier or Node\Expr');
- }
-
- /**
- * Normalizes a name: Converts string names to Name nodes.
- *
- * @param Name|string $name The name to normalize
- *
- * @return Name The normalized name
- */
- public static function normalizeName($name) : Name {
- if ($name instanceof Name) {
- return $name;
- }
-
- if (is_string($name)) {
- if (!$name) {
- throw new \LogicException('Name cannot be empty');
- }
-
- if ($name[0] === '\\') {
- return new Name\FullyQualified(substr($name, 1));
- }
-
- if (0 === strpos($name, 'namespace\\')) {
- return new Name\Relative(substr($name, strlen('namespace\\')));
- }
-
- return new Name($name);
- }
-
- throw new \LogicException('Name must be a string or an instance of Node\Name');
- }
-
- /**
- * Normalizes a name: Converts string names to Name nodes, while also allowing expressions.
- *
- * @param Expr|Name|string $name The name to normalize
- *
- * @return Name|Expr The normalized name or expression
- */
- public static function normalizeNameOrExpr($name) {
- if ($name instanceof Expr) {
- return $name;
- }
-
- if (!is_string($name) && !($name instanceof Name)) {
- throw new \LogicException(
- 'Name must be a string or an instance of Node\Name or Node\Expr'
- );
- }
-
- return self::normalizeName($name);
- }
-
- /**
- * Normalizes a type: Converts plain-text type names into proper AST representation.
- *
- * In particular, builtin types become Identifiers, custom types become Names and nullables
- * are wrapped in NullableType nodes.
- *
- * @param string|Name|Identifier|ComplexType $type The type to normalize
- *
- * @return Name|Identifier|ComplexType The normalized type
- */
- public static function normalizeType($type) {
- if (!is_string($type)) {
- if (
- !$type instanceof Name && !$type instanceof Identifier &&
- !$type instanceof ComplexType
- ) {
- throw new \LogicException(
- 'Type must be a string, or an instance of Name, Identifier or ComplexType'
- );
- }
- return $type;
- }
-
- $nullable = false;
- if (strlen($type) > 0 && $type[0] === '?') {
- $nullable = true;
- $type = substr($type, 1);
- }
-
- $builtinTypes = [
- 'array', 'callable', 'string', 'int', 'float', 'bool', 'iterable', 'void', 'object', 'mixed', 'never',
- ];
-
- $lowerType = strtolower($type);
- if (in_array($lowerType, $builtinTypes)) {
- $type = new Identifier($lowerType);
- } else {
- $type = self::normalizeName($type);
- }
-
- $notNullableTypes = [
- 'void', 'mixed', 'never',
- ];
- if ($nullable && in_array((string) $type, $notNullableTypes)) {
- throw new \LogicException(sprintf('%s type cannot be nullable', $type));
- }
-
- return $nullable ? new NullableType($type) : $type;
- }
-
- /**
- * Normalizes a value: Converts nulls, booleans, integers,
- * floats, strings and arrays into their respective nodes
- *
- * @param Node\Expr|bool|null|int|float|string|array $value The value to normalize
- *
- * @return Expr The normalized value
- */
- public static function normalizeValue($value) : Expr {
- if ($value instanceof Node\Expr) {
- return $value;
- }
-
- if (is_null($value)) {
- return new Expr\ConstFetch(
- new Name('null')
- );
- }
-
- if (is_bool($value)) {
- return new Expr\ConstFetch(
- new Name($value ? 'true' : 'false')
- );
- }
-
- if (is_int($value)) {
- return new Scalar\LNumber($value);
- }
-
- if (is_float($value)) {
- return new Scalar\DNumber($value);
- }
-
- if (is_string($value)) {
- return new Scalar\String_($value);
- }
-
- if (is_array($value)) {
- $items = [];
- $lastKey = -1;
- foreach ($value as $itemKey => $itemValue) {
- // for consecutive, numeric keys don't generate keys
- if (null !== $lastKey && ++$lastKey === $itemKey) {
- $items[] = new Expr\ArrayItem(
- self::normalizeValue($itemValue)
- );
- } else {
- $lastKey = null;
- $items[] = new Expr\ArrayItem(
- self::normalizeValue($itemValue),
- self::normalizeValue($itemKey)
- );
- }
- }
-
- return new Expr\Array_($items);
- }
-
- throw new \LogicException('Invalid value');
- }
-
- /**
- * Normalizes a doc comment: Converts plain strings to PhpParser\Comment\Doc.
- *
- * @param Comment\Doc|string $docComment The doc comment to normalize
- *
- * @return Comment\Doc The normalized doc comment
- */
- public static function normalizeDocComment($docComment) : Comment\Doc {
- if ($docComment instanceof Comment\Doc) {
- return $docComment;
- }
-
- if (is_string($docComment)) {
- return new Comment\Doc($docComment);
- }
-
- throw new \LogicException('Doc comment must be a string or an instance of PhpParser\Comment\Doc');
- }
-
- /**
- * Normalizes a attribute: Converts attribute to the Attribute Group if needed.
- *
- * @param Node\Attribute|Node\AttributeGroup $attribute
- *
- * @return Node\AttributeGroup The Attribute Group
- */
- public static function normalizeAttribute($attribute) : Node\AttributeGroup
- {
- if ($attribute instanceof Node\AttributeGroup) {
- return $attribute;
- }
-
- if (!($attribute instanceof Node\Attribute)) {
- throw new \LogicException('Attribute must be an instance of PhpParser\Node\Attribute or PhpParser\Node\AttributeGroup');
- }
-
- return new Node\AttributeGroup([$attribute]);
- }
-
- /**
- * Adds a modifier and returns new modifier bitmask.
- *
- * @param int $modifiers Existing modifiers
- * @param int $modifier Modifier to set
- *
- * @return int New modifiers
- */
- public static function addModifier(int $modifiers, int $modifier) : int {
- Stmt\Class_::verifyModifier($modifiers, $modifier);
- return $modifiers | $modifier;
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Comment.php b/vendor/nikic/php-parser/lib/PhpParser/Comment.php
deleted file mode 100644
index 61e98d3d..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Comment.php
+++ /dev/null
@@ -1,239 +0,0 @@
-text = $text;
- $this->startLine = $startLine;
- $this->startFilePos = $startFilePos;
- $this->startTokenPos = $startTokenPos;
- $this->endLine = $endLine;
- $this->endFilePos = $endFilePos;
- $this->endTokenPos = $endTokenPos;
- }
-
- /**
- * Gets the comment text.
- *
- * @return string The comment text (including comment delimiters like /*)
- */
- public function getText() : string {
- return $this->text;
- }
-
- /**
- * Gets the line number the comment started on.
- *
- * @return int Line number (or -1 if not available)
- */
- public function getStartLine() : int {
- return $this->startLine;
- }
-
- /**
- * Gets the file offset the comment started on.
- *
- * @return int File offset (or -1 if not available)
- */
- public function getStartFilePos() : int {
- return $this->startFilePos;
- }
-
- /**
- * Gets the token offset the comment started on.
- *
- * @return int Token offset (or -1 if not available)
- */
- public function getStartTokenPos() : int {
- return $this->startTokenPos;
- }
-
- /**
- * Gets the line number the comment ends on.
- *
- * @return int Line number (or -1 if not available)
- */
- public function getEndLine() : int {
- return $this->endLine;
- }
-
- /**
- * Gets the file offset the comment ends on.
- *
- * @return int File offset (or -1 if not available)
- */
- public function getEndFilePos() : int {
- return $this->endFilePos;
- }
-
- /**
- * Gets the token offset the comment ends on.
- *
- * @return int Token offset (or -1 if not available)
- */
- public function getEndTokenPos() : int {
- return $this->endTokenPos;
- }
-
- /**
- * Gets the line number the comment started on.
- *
- * @deprecated Use getStartLine() instead
- *
- * @return int Line number
- */
- public function getLine() : int {
- return $this->startLine;
- }
-
- /**
- * Gets the file offset the comment started on.
- *
- * @deprecated Use getStartFilePos() instead
- *
- * @return int File offset
- */
- public function getFilePos() : int {
- return $this->startFilePos;
- }
-
- /**
- * Gets the token offset the comment started on.
- *
- * @deprecated Use getStartTokenPos() instead
- *
- * @return int Token offset
- */
- public function getTokenPos() : int {
- return $this->startTokenPos;
- }
-
- /**
- * Gets the comment text.
- *
- * @return string The comment text (including comment delimiters like /*)
- */
- public function __toString() : string {
- return $this->text;
- }
-
- /**
- * Gets the reformatted comment text.
- *
- * "Reformatted" here means that we try to clean up the whitespace at the
- * starts of the lines. This is necessary because we receive the comments
- * without trailing whitespace on the first line, but with trailing whitespace
- * on all subsequent lines.
- *
- * @return mixed|string
- */
- public function getReformattedText() {
- $text = trim($this->text);
- $newlinePos = strpos($text, "\n");
- if (false === $newlinePos) {
- // Single line comments don't need further processing
- return $text;
- } elseif (preg_match('((*BSR_ANYCRLF)(*ANYCRLF)^.*(?:\R\s+\*.*)+$)', $text)) {
- // Multi line comment of the type
- //
- // /*
- // * Some text.
- // * Some more text.
- // */
- //
- // is handled by replacing the whitespace sequences before the * by a single space
- return preg_replace('(^\s+\*)m', ' *', $this->text);
- } elseif (preg_match('(^/\*\*?\s*[\r\n])', $text) && preg_match('(\n(\s*)\*/$)', $text, $matches)) {
- // Multi line comment of the type
- //
- // /*
- // Some text.
- // Some more text.
- // */
- //
- // is handled by removing the whitespace sequence on the line before the closing
- // */ on all lines. So if the last line is " */", then " " is removed at the
- // start of all lines.
- return preg_replace('(^' . preg_quote($matches[1]) . ')m', '', $text);
- } elseif (preg_match('(^/\*\*?\s*(?!\s))', $text, $matches)) {
- // Multi line comment of the type
- //
- // /* Some text.
- // Some more text.
- // Indented text.
- // Even more text. */
- //
- // is handled by removing the difference between the shortest whitespace prefix on all
- // lines and the length of the "/* " opening sequence.
- $prefixLen = $this->getShortestWhitespacePrefixLen(substr($text, $newlinePos + 1));
- $removeLen = $prefixLen - strlen($matches[0]);
- return preg_replace('(^\s{' . $removeLen . '})m', '', $text);
- }
-
- // No idea how to format this comment, so simply return as is
- return $text;
- }
-
- /**
- * Get length of shortest whitespace prefix (at the start of a line).
- *
- * If there is a line with no prefix whitespace, 0 is a valid return value.
- *
- * @param string $str String to check
- * @return int Length in characters. Tabs count as single characters.
- */
- private function getShortestWhitespacePrefixLen(string $str) : int {
- $lines = explode("\n", $str);
- $shortestPrefixLen = \INF;
- foreach ($lines as $line) {
- preg_match('(^\s*)', $line, $matches);
- $prefixLen = strlen($matches[0]);
- if ($prefixLen < $shortestPrefixLen) {
- $shortestPrefixLen = $prefixLen;
- }
- }
- return $shortestPrefixLen;
- }
-
- /**
- * @return array
- * @psalm-return array{nodeType:string, text:mixed, line:mixed, filePos:mixed}
- */
- public function jsonSerialize() : array {
- // Technically not a node, but we make it look like one anyway
- $type = $this instanceof Comment\Doc ? 'Comment_Doc' : 'Comment';
- return [
- 'nodeType' => $type,
- 'text' => $this->text,
- // TODO: Rename these to include "start".
- 'line' => $this->startLine,
- 'filePos' => $this->startFilePos,
- 'tokenPos' => $this->startTokenPos,
- 'endLine' => $this->endLine,
- 'endFilePos' => $this->endFilePos,
- 'endTokenPos' => $this->endTokenPos,
- ];
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Comment/Doc.php b/vendor/nikic/php-parser/lib/PhpParser/Comment/Doc.php
deleted file mode 100644
index a9db6128..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Comment/Doc.php
+++ /dev/null
@@ -1,7 +0,0 @@
-fallbackEvaluator = $fallbackEvaluator ?? function(Expr $expr) {
- throw new ConstExprEvaluationException(
- "Expression of type {$expr->getType()} cannot be evaluated"
- );
- };
- }
-
- /**
- * Silently evaluates a constant expression into a PHP value.
- *
- * Thrown Errors, warnings or notices will be converted into a ConstExprEvaluationException.
- * The original source of the exception is available through getPrevious().
- *
- * If some part of the expression cannot be evaluated, the fallback evaluator passed to the
- * constructor will be invoked. By default, if no fallback is provided, an exception of type
- * ConstExprEvaluationException is thrown.
- *
- * See class doc comment for caveats and limitations.
- *
- * @param Expr $expr Constant expression to evaluate
- * @return mixed Result of evaluation
- *
- * @throws ConstExprEvaluationException if the expression cannot be evaluated or an error occurred
- */
- public function evaluateSilently(Expr $expr) {
- set_error_handler(function($num, $str, $file, $line) {
- throw new \ErrorException($str, 0, $num, $file, $line);
- });
-
- try {
- return $this->evaluate($expr);
- } catch (\Throwable $e) {
- if (!$e instanceof ConstExprEvaluationException) {
- $e = new ConstExprEvaluationException(
- "An error occurred during constant expression evaluation", 0, $e);
- }
- throw $e;
- } finally {
- restore_error_handler();
- }
- }
-
- /**
- * Directly evaluates a constant expression into a PHP value.
- *
- * May generate Error exceptions, warnings or notices. Use evaluateSilently() to convert these
- * into a ConstExprEvaluationException.
- *
- * If some part of the expression cannot be evaluated, the fallback evaluator passed to the
- * constructor will be invoked. By default, if no fallback is provided, an exception of type
- * ConstExprEvaluationException is thrown.
- *
- * See class doc comment for caveats and limitations.
- *
- * @param Expr $expr Constant expression to evaluate
- * @return mixed Result of evaluation
- *
- * @throws ConstExprEvaluationException if the expression cannot be evaluated
- */
- public function evaluateDirectly(Expr $expr) {
- return $this->evaluate($expr);
- }
-
- private function evaluate(Expr $expr) {
- if ($expr instanceof Scalar\LNumber
- || $expr instanceof Scalar\DNumber
- || $expr instanceof Scalar\String_
- ) {
- return $expr->value;
- }
-
- if ($expr instanceof Expr\Array_) {
- return $this->evaluateArray($expr);
- }
-
- // Unary operators
- if ($expr instanceof Expr\UnaryPlus) {
- return +$this->evaluate($expr->expr);
- }
- if ($expr instanceof Expr\UnaryMinus) {
- return -$this->evaluate($expr->expr);
- }
- if ($expr instanceof Expr\BooleanNot) {
- return !$this->evaluate($expr->expr);
- }
- if ($expr instanceof Expr\BitwiseNot) {
- return ~$this->evaluate($expr->expr);
- }
-
- if ($expr instanceof Expr\BinaryOp) {
- return $this->evaluateBinaryOp($expr);
- }
-
- if ($expr instanceof Expr\Ternary) {
- return $this->evaluateTernary($expr);
- }
-
- if ($expr instanceof Expr\ArrayDimFetch && null !== $expr->dim) {
- return $this->evaluate($expr->var)[$this->evaluate($expr->dim)];
- }
-
- if ($expr instanceof Expr\ConstFetch) {
- return $this->evaluateConstFetch($expr);
- }
-
- return ($this->fallbackEvaluator)($expr);
- }
-
- private function evaluateArray(Expr\Array_ $expr) {
- $array = [];
- foreach ($expr->items as $item) {
- if (null !== $item->key) {
- $array[$this->evaluate($item->key)] = $this->evaluate($item->value);
- } elseif ($item->unpack) {
- $array = array_merge($array, $this->evaluate($item->value));
- } else {
- $array[] = $this->evaluate($item->value);
- }
- }
- return $array;
- }
-
- private function evaluateTernary(Expr\Ternary $expr) {
- if (null === $expr->if) {
- return $this->evaluate($expr->cond) ?: $this->evaluate($expr->else);
- }
-
- return $this->evaluate($expr->cond)
- ? $this->evaluate($expr->if)
- : $this->evaluate($expr->else);
- }
-
- private function evaluateBinaryOp(Expr\BinaryOp $expr) {
- if ($expr instanceof Expr\BinaryOp\Coalesce
- && $expr->left instanceof Expr\ArrayDimFetch
- ) {
- // This needs to be special cased to respect BP_VAR_IS fetch semantics
- return $this->evaluate($expr->left->var)[$this->evaluate($expr->left->dim)]
- ?? $this->evaluate($expr->right);
- }
-
- // The evaluate() calls are repeated in each branch, because some of the operators are
- // short-circuiting and evaluating the RHS in advance may be illegal in that case
- $l = $expr->left;
- $r = $expr->right;
- switch ($expr->getOperatorSigil()) {
- case '&': return $this->evaluate($l) & $this->evaluate($r);
- case '|': return $this->evaluate($l) | $this->evaluate($r);
- case '^': return $this->evaluate($l) ^ $this->evaluate($r);
- case '&&': return $this->evaluate($l) && $this->evaluate($r);
- case '||': return $this->evaluate($l) || $this->evaluate($r);
- case '??': return $this->evaluate($l) ?? $this->evaluate($r);
- case '.': return $this->evaluate($l) . $this->evaluate($r);
- case '/': return $this->evaluate($l) / $this->evaluate($r);
- case '==': return $this->evaluate($l) == $this->evaluate($r);
- case '>': return $this->evaluate($l) > $this->evaluate($r);
- case '>=': return $this->evaluate($l) >= $this->evaluate($r);
- case '===': return $this->evaluate($l) === $this->evaluate($r);
- case 'and': return $this->evaluate($l) and $this->evaluate($r);
- case 'or': return $this->evaluate($l) or $this->evaluate($r);
- case 'xor': return $this->evaluate($l) xor $this->evaluate($r);
- case '-': return $this->evaluate($l) - $this->evaluate($r);
- case '%': return $this->evaluate($l) % $this->evaluate($r);
- case '*': return $this->evaluate($l) * $this->evaluate($r);
- case '!=': return $this->evaluate($l) != $this->evaluate($r);
- case '!==': return $this->evaluate($l) !== $this->evaluate($r);
- case '+': return $this->evaluate($l) + $this->evaluate($r);
- case '**': return $this->evaluate($l) ** $this->evaluate($r);
- case '<<': return $this->evaluate($l) << $this->evaluate($r);
- case '>>': return $this->evaluate($l) >> $this->evaluate($r);
- case '<': return $this->evaluate($l) < $this->evaluate($r);
- case '<=': return $this->evaluate($l) <= $this->evaluate($r);
- case '<=>': return $this->evaluate($l) <=> $this->evaluate($r);
- }
-
- throw new \Exception('Should not happen');
- }
-
- private function evaluateConstFetch(Expr\ConstFetch $expr) {
- $name = $expr->name->toLowerString();
- switch ($name) {
- case 'null': return null;
- case 'false': return false;
- case 'true': return true;
- }
-
- return ($this->fallbackEvaluator)($expr);
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Error.php b/vendor/nikic/php-parser/lib/PhpParser/Error.php
deleted file mode 100644
index d1fb959d..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Error.php
+++ /dev/null
@@ -1,180 +0,0 @@
-rawMessage = $message;
- if (is_array($attributes)) {
- $this->attributes = $attributes;
- } else {
- $this->attributes = ['startLine' => $attributes];
- }
- $this->updateMessage();
- }
-
- /**
- * Gets the error message
- *
- * @return string Error message
- */
- public function getRawMessage() : string {
- return $this->rawMessage;
- }
-
- /**
- * Gets the line the error starts in.
- *
- * @return int Error start line
- */
- public function getStartLine() : int {
- return $this->attributes['startLine'] ?? -1;
- }
-
- /**
- * Gets the line the error ends in.
- *
- * @return int Error end line
- */
- public function getEndLine() : int {
- return $this->attributes['endLine'] ?? -1;
- }
-
- /**
- * Gets the attributes of the node/token the error occurred at.
- *
- * @return array
- */
- public function getAttributes() : array {
- return $this->attributes;
- }
-
- /**
- * Sets the attributes of the node/token the error occurred at.
- *
- * @param array $attributes
- */
- public function setAttributes(array $attributes) {
- $this->attributes = $attributes;
- $this->updateMessage();
- }
-
- /**
- * Sets the line of the PHP file the error occurred in.
- *
- * @param string $message Error message
- */
- public function setRawMessage(string $message) {
- $this->rawMessage = $message;
- $this->updateMessage();
- }
-
- /**
- * Sets the line the error starts in.
- *
- * @param int $line Error start line
- */
- public function setStartLine(int $line) {
- $this->attributes['startLine'] = $line;
- $this->updateMessage();
- }
-
- /**
- * Returns whether the error has start and end column information.
- *
- * For column information enable the startFilePos and endFilePos in the lexer options.
- *
- * @return bool
- */
- public function hasColumnInfo() : bool {
- return isset($this->attributes['startFilePos'], $this->attributes['endFilePos']);
- }
-
- /**
- * Gets the start column (1-based) into the line where the error started.
- *
- * @param string $code Source code of the file
- * @return int
- */
- public function getStartColumn(string $code) : int {
- if (!$this->hasColumnInfo()) {
- throw new \RuntimeException('Error does not have column information');
- }
-
- return $this->toColumn($code, $this->attributes['startFilePos']);
- }
-
- /**
- * Gets the end column (1-based) into the line where the error ended.
- *
- * @param string $code Source code of the file
- * @return int
- */
- public function getEndColumn(string $code) : int {
- if (!$this->hasColumnInfo()) {
- throw new \RuntimeException('Error does not have column information');
- }
-
- return $this->toColumn($code, $this->attributes['endFilePos']);
- }
-
- /**
- * Formats message including line and column information.
- *
- * @param string $code Source code associated with the error, for calculation of the columns
- *
- * @return string Formatted message
- */
- public function getMessageWithColumnInfo(string $code) : string {
- return sprintf(
- '%s from %d:%d to %d:%d', $this->getRawMessage(),
- $this->getStartLine(), $this->getStartColumn($code),
- $this->getEndLine(), $this->getEndColumn($code)
- );
- }
-
- /**
- * Converts a file offset into a column.
- *
- * @param string $code Source code that $pos indexes into
- * @param int $pos 0-based position in $code
- *
- * @return int 1-based column (relative to start of line)
- */
- private function toColumn(string $code, int $pos) : int {
- if ($pos > strlen($code)) {
- throw new \RuntimeException('Invalid position information');
- }
-
- $lineStartPos = strrpos($code, "\n", $pos - strlen($code));
- if (false === $lineStartPos) {
- $lineStartPos = -1;
- }
-
- return $pos - $lineStartPos;
- }
-
- /**
- * Updates the exception message after a change to rawMessage or rawLine.
- */
- protected function updateMessage() {
- $this->message = $this->rawMessage;
-
- if (-1 === $this->getStartLine()) {
- $this->message .= ' on unknown line';
- } else {
- $this->message .= ' on line ' . $this->getStartLine();
- }
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler.php b/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler.php
deleted file mode 100644
index d620e745..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler.php
+++ /dev/null
@@ -1,13 +0,0 @@
-errors[] = $error;
- }
-
- /**
- * Get collected errors.
- *
- * @return Error[]
- */
- public function getErrors() : array {
- return $this->errors;
- }
-
- /**
- * Check whether there are any errors.
- *
- * @return bool
- */
- public function hasErrors() : bool {
- return !empty($this->errors);
- }
-
- /**
- * Reset/clear collected errors.
- */
- public function clearErrors() {
- $this->errors = [];
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php b/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php
deleted file mode 100644
index aeee989b..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php
+++ /dev/null
@@ -1,18 +0,0 @@
-type = $type;
- $this->old = $old;
- $this->new = $new;
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Internal/Differ.php b/vendor/nikic/php-parser/lib/PhpParser/Internal/Differ.php
deleted file mode 100644
index 7f218c74..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Internal/Differ.php
+++ /dev/null
@@ -1,164 +0,0 @@
-isEqual = $isEqual;
- }
-
- /**
- * Calculate diff (edit script) from $old to $new.
- *
- * @param array $old Original array
- * @param array $new New array
- *
- * @return DiffElem[] Diff (edit script)
- */
- public function diff(array $old, array $new) {
- list($trace, $x, $y) = $this->calculateTrace($old, $new);
- return $this->extractDiff($trace, $x, $y, $old, $new);
- }
-
- /**
- * Calculate diff, including "replace" operations.
- *
- * If a sequence of remove operations is followed by the same number of add operations, these
- * will be coalesced into replace operations.
- *
- * @param array $old Original array
- * @param array $new New array
- *
- * @return DiffElem[] Diff (edit script), including replace operations
- */
- public function diffWithReplacements(array $old, array $new) {
- return $this->coalesceReplacements($this->diff($old, $new));
- }
-
- private function calculateTrace(array $a, array $b) {
- $n = \count($a);
- $m = \count($b);
- $max = $n + $m;
- $v = [1 => 0];
- $trace = [];
- for ($d = 0; $d <= $max; $d++) {
- $trace[] = $v;
- for ($k = -$d; $k <= $d; $k += 2) {
- if ($k === -$d || ($k !== $d && $v[$k-1] < $v[$k+1])) {
- $x = $v[$k+1];
- } else {
- $x = $v[$k-1] + 1;
- }
-
- $y = $x - $k;
- while ($x < $n && $y < $m && ($this->isEqual)($a[$x], $b[$y])) {
- $x++;
- $y++;
- }
-
- $v[$k] = $x;
- if ($x >= $n && $y >= $m) {
- return [$trace, $x, $y];
- }
- }
- }
- throw new \Exception('Should not happen');
- }
-
- private function extractDiff(array $trace, int $x, int $y, array $a, array $b) {
- $result = [];
- for ($d = \count($trace) - 1; $d >= 0; $d--) {
- $v = $trace[$d];
- $k = $x - $y;
-
- if ($k === -$d || ($k !== $d && $v[$k-1] < $v[$k+1])) {
- $prevK = $k + 1;
- } else {
- $prevK = $k - 1;
- }
-
- $prevX = $v[$prevK];
- $prevY = $prevX - $prevK;
-
- while ($x > $prevX && $y > $prevY) {
- $result[] = new DiffElem(DiffElem::TYPE_KEEP, $a[$x-1], $b[$y-1]);
- $x--;
- $y--;
- }
-
- if ($d === 0) {
- break;
- }
-
- while ($x > $prevX) {
- $result[] = new DiffElem(DiffElem::TYPE_REMOVE, $a[$x-1], null);
- $x--;
- }
-
- while ($y > $prevY) {
- $result[] = new DiffElem(DiffElem::TYPE_ADD, null, $b[$y-1]);
- $y--;
- }
- }
- return array_reverse($result);
- }
-
- /**
- * Coalesce equal-length sequences of remove+add into a replace operation.
- *
- * @param DiffElem[] $diff
- * @return DiffElem[]
- */
- private function coalesceReplacements(array $diff) {
- $newDiff = [];
- $c = \count($diff);
- for ($i = 0; $i < $c; $i++) {
- $diffType = $diff[$i]->type;
- if ($diffType !== DiffElem::TYPE_REMOVE) {
- $newDiff[] = $diff[$i];
- continue;
- }
-
- $j = $i;
- while ($j < $c && $diff[$j]->type === DiffElem::TYPE_REMOVE) {
- $j++;
- }
-
- $k = $j;
- while ($k < $c && $diff[$k]->type === DiffElem::TYPE_ADD) {
- $k++;
- }
-
- if ($j - $i === $k - $j) {
- $len = $j - $i;
- for ($n = 0; $n < $len; $n++) {
- $newDiff[] = new DiffElem(
- DiffElem::TYPE_REPLACE, $diff[$i + $n]->old, $diff[$j + $n]->new
- );
- }
- } else {
- for (; $i < $k; $i++) {
- $newDiff[] = $diff[$i];
- }
- }
- $i = $k - 1;
- }
- return $newDiff;
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php b/vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php
deleted file mode 100644
index 3eeac04a..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php
+++ /dev/null
@@ -1,61 +0,0 @@
-attrGroups = $attrGroups;
- $this->args = $args;
- $this->extends = $extends;
- $this->implements = $implements;
- $this->stmts = $stmts;
- }
-
- public static function fromNewNode(Expr\New_ $newNode) {
- $class = $newNode->class;
- assert($class instanceof Node\Stmt\Class_);
- // We don't assert that $class->name is null here, to allow consumers to assign unique names
- // to anonymous classes for their own purposes. We simplify ignore the name here.
- return new self(
- $class->attrGroups, $newNode->args, $class->extends, $class->implements,
- $class->stmts, $newNode->getAttributes()
- );
- }
-
- public function getType() : string {
- return 'Expr_PrintableNewAnonClass';
- }
-
- public function getSubNodeNames() : array {
- return ['attrGroups', 'args', 'extends', 'implements', 'stmts'];
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php b/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php
deleted file mode 100644
index 84c0175e..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php
+++ /dev/null
@@ -1,281 +0,0 @@
-tokens = $tokens;
- $this->indentMap = $this->calcIndentMap();
- }
-
- /**
- * Whether the given position is immediately surrounded by parenthesis.
- *
- * @param int $startPos Start position
- * @param int $endPos End position
- *
- * @return bool
- */
- public function haveParens(int $startPos, int $endPos) : bool {
- return $this->haveTokenImmediatelyBefore($startPos, '(')
- && $this->haveTokenImmediatelyAfter($endPos, ')');
- }
-
- /**
- * Whether the given position is immediately surrounded by braces.
- *
- * @param int $startPos Start position
- * @param int $endPos End position
- *
- * @return bool
- */
- public function haveBraces(int $startPos, int $endPos) : bool {
- return ($this->haveTokenImmediatelyBefore($startPos, '{')
- || $this->haveTokenImmediatelyBefore($startPos, T_CURLY_OPEN))
- && $this->haveTokenImmediatelyAfter($endPos, '}');
- }
-
- /**
- * Check whether the position is directly preceded by a certain token type.
- *
- * During this check whitespace and comments are skipped.
- *
- * @param int $pos Position before which the token should occur
- * @param int|string $expectedTokenType Token to check for
- *
- * @return bool Whether the expected token was found
- */
- public function haveTokenImmediatelyBefore(int $pos, $expectedTokenType) : bool {
- $tokens = $this->tokens;
- $pos--;
- for (; $pos >= 0; $pos--) {
- $tokenType = $tokens[$pos][0];
- if ($tokenType === $expectedTokenType) {
- return true;
- }
- if ($tokenType !== \T_WHITESPACE
- && $tokenType !== \T_COMMENT && $tokenType !== \T_DOC_COMMENT) {
- break;
- }
- }
- return false;
- }
-
- /**
- * Check whether the position is directly followed by a certain token type.
- *
- * During this check whitespace and comments are skipped.
- *
- * @param int $pos Position after which the token should occur
- * @param int|string $expectedTokenType Token to check for
- *
- * @return bool Whether the expected token was found
- */
- public function haveTokenImmediatelyAfter(int $pos, $expectedTokenType) : bool {
- $tokens = $this->tokens;
- $pos++;
- for (; $pos < \count($tokens); $pos++) {
- $tokenType = $tokens[$pos][0];
- if ($tokenType === $expectedTokenType) {
- return true;
- }
- if ($tokenType !== \T_WHITESPACE
- && $tokenType !== \T_COMMENT && $tokenType !== \T_DOC_COMMENT) {
- break;
- }
- }
- return false;
- }
-
- public function skipLeft(int $pos, $skipTokenType) {
- $tokens = $this->tokens;
-
- $pos = $this->skipLeftWhitespace($pos);
- if ($skipTokenType === \T_WHITESPACE) {
- return $pos;
- }
-
- if ($tokens[$pos][0] !== $skipTokenType) {
- // Shouldn't happen. The skip token MUST be there
- throw new \Exception('Encountered unexpected token');
- }
- $pos--;
-
- return $this->skipLeftWhitespace($pos);
- }
-
- public function skipRight(int $pos, $skipTokenType) {
- $tokens = $this->tokens;
-
- $pos = $this->skipRightWhitespace($pos);
- if ($skipTokenType === \T_WHITESPACE) {
- return $pos;
- }
-
- if ($tokens[$pos][0] !== $skipTokenType) {
- // Shouldn't happen. The skip token MUST be there
- throw new \Exception('Encountered unexpected token');
- }
- $pos++;
-
- return $this->skipRightWhitespace($pos);
- }
-
- /**
- * Return first non-whitespace token position smaller or equal to passed position.
- *
- * @param int $pos Token position
- * @return int Non-whitespace token position
- */
- public function skipLeftWhitespace(int $pos) {
- $tokens = $this->tokens;
- for (; $pos >= 0; $pos--) {
- $type = $tokens[$pos][0];
- if ($type !== \T_WHITESPACE && $type !== \T_COMMENT && $type !== \T_DOC_COMMENT) {
- break;
- }
- }
- return $pos;
- }
-
- /**
- * Return first non-whitespace position greater or equal to passed position.
- *
- * @param int $pos Token position
- * @return int Non-whitespace token position
- */
- public function skipRightWhitespace(int $pos) {
- $tokens = $this->tokens;
- for ($count = \count($tokens); $pos < $count; $pos++) {
- $type = $tokens[$pos][0];
- if ($type !== \T_WHITESPACE && $type !== \T_COMMENT && $type !== \T_DOC_COMMENT) {
- break;
- }
- }
- return $pos;
- }
-
- public function findRight(int $pos, $findTokenType) {
- $tokens = $this->tokens;
- for ($count = \count($tokens); $pos < $count; $pos++) {
- $type = $tokens[$pos][0];
- if ($type === $findTokenType) {
- return $pos;
- }
- }
- return -1;
- }
-
- /**
- * Whether the given position range contains a certain token type.
- *
- * @param int $startPos Starting position (inclusive)
- * @param int $endPos Ending position (exclusive)
- * @param int|string $tokenType Token type to look for
- * @return bool Whether the token occurs in the given range
- */
- public function haveTokenInRange(int $startPos, int $endPos, $tokenType) {
- $tokens = $this->tokens;
- for ($pos = $startPos; $pos < $endPos; $pos++) {
- if ($tokens[$pos][0] === $tokenType) {
- return true;
- }
- }
- return false;
- }
-
- public function haveBracesInRange(int $startPos, int $endPos) {
- return $this->haveTokenInRange($startPos, $endPos, '{')
- || $this->haveTokenInRange($startPos, $endPos, T_CURLY_OPEN)
- || $this->haveTokenInRange($startPos, $endPos, '}');
- }
-
- /**
- * Get indentation before token position.
- *
- * @param int $pos Token position
- *
- * @return int Indentation depth (in spaces)
- */
- public function getIndentationBefore(int $pos) : int {
- return $this->indentMap[$pos];
- }
-
- /**
- * Get the code corresponding to a token offset range, optionally adjusted for indentation.
- *
- * @param int $from Token start position (inclusive)
- * @param int $to Token end position (exclusive)
- * @param int $indent By how much the code should be indented (can be negative as well)
- *
- * @return string Code corresponding to token range, adjusted for indentation
- */
- public function getTokenCode(int $from, int $to, int $indent) : string {
- $tokens = $this->tokens;
- $result = '';
- for ($pos = $from; $pos < $to; $pos++) {
- $token = $tokens[$pos];
- if (\is_array($token)) {
- $type = $token[0];
- $content = $token[1];
- if ($type === \T_CONSTANT_ENCAPSED_STRING || $type === \T_ENCAPSED_AND_WHITESPACE) {
- $result .= $content;
- } else {
- // TODO Handle non-space indentation
- if ($indent < 0) {
- $result .= str_replace("\n" . str_repeat(" ", -$indent), "\n", $content);
- } elseif ($indent > 0) {
- $result .= str_replace("\n", "\n" . str_repeat(" ", $indent), $content);
- } else {
- $result .= $content;
- }
- }
- } else {
- $result .= $token;
- }
- }
- return $result;
- }
-
- /**
- * Precalculate the indentation at every token position.
- *
- * @return int[] Token position to indentation map
- */
- private function calcIndentMap() {
- $indentMap = [];
- $indent = 0;
- foreach ($this->tokens as $token) {
- $indentMap[] = $indent;
-
- if ($token[0] === \T_WHITESPACE) {
- $content = $token[1];
- $newlinePos = \strrpos($content, "\n");
- if (false !== $newlinePos) {
- $indent = \strlen($content) - $newlinePos - 1;
- }
- }
- }
-
- // Add a sentinel for one past end of the file
- $indentMap[] = $indent;
-
- return $indentMap;
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/JsonDecoder.php b/vendor/nikic/php-parser/lib/PhpParser/JsonDecoder.php
deleted file mode 100644
index 47d2003d..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/JsonDecoder.php
+++ /dev/null
@@ -1,103 +0,0 @@
-decodeRecursive($value);
- }
-
- private function decodeRecursive($value) {
- if (\is_array($value)) {
- if (isset($value['nodeType'])) {
- if ($value['nodeType'] === 'Comment' || $value['nodeType'] === 'Comment_Doc') {
- return $this->decodeComment($value);
- }
- return $this->decodeNode($value);
- }
- return $this->decodeArray($value);
- }
- return $value;
- }
-
- private function decodeArray(array $array) : array {
- $decodedArray = [];
- foreach ($array as $key => $value) {
- $decodedArray[$key] = $this->decodeRecursive($value);
- }
- return $decodedArray;
- }
-
- private function decodeNode(array $value) : Node {
- $nodeType = $value['nodeType'];
- if (!\is_string($nodeType)) {
- throw new \RuntimeException('Node type must be a string');
- }
-
- $reflectionClass = $this->reflectionClassFromNodeType($nodeType);
- /** @var Node $node */
- $node = $reflectionClass->newInstanceWithoutConstructor();
-
- if (isset($value['attributes'])) {
- if (!\is_array($value['attributes'])) {
- throw new \RuntimeException('Attributes must be an array');
- }
-
- $node->setAttributes($this->decodeArray($value['attributes']));
- }
-
- foreach ($value as $name => $subNode) {
- if ($name === 'nodeType' || $name === 'attributes') {
- continue;
- }
-
- $node->$name = $this->decodeRecursive($subNode);
- }
-
- return $node;
- }
-
- private function decodeComment(array $value) : Comment {
- $className = $value['nodeType'] === 'Comment' ? Comment::class : Comment\Doc::class;
- if (!isset($value['text'])) {
- throw new \RuntimeException('Comment must have text');
- }
-
- return new $className(
- $value['text'],
- $value['line'] ?? -1, $value['filePos'] ?? -1, $value['tokenPos'] ?? -1,
- $value['endLine'] ?? -1, $value['endFilePos'] ?? -1, $value['endTokenPos'] ?? -1
- );
- }
-
- private function reflectionClassFromNodeType(string $nodeType) : \ReflectionClass {
- if (!isset($this->reflectionClassCache[$nodeType])) {
- $className = $this->classNameFromNodeType($nodeType);
- $this->reflectionClassCache[$nodeType] = new \ReflectionClass($className);
- }
- return $this->reflectionClassCache[$nodeType];
- }
-
- private function classNameFromNodeType(string $nodeType) : string {
- $className = 'PhpParser\\Node\\' . strtr($nodeType, '_', '\\');
- if (class_exists($className)) {
- return $className;
- }
-
- $className .= '_';
- if (class_exists($className)) {
- return $className;
- }
-
- throw new \RuntimeException("Unknown node type \"$nodeType\"");
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer.php
deleted file mode 100644
index e15dd0a5..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Lexer.php
+++ /dev/null
@@ -1,560 +0,0 @@
-defineCompatibilityTokens();
- $this->tokenMap = $this->createTokenMap();
- $this->identifierTokens = $this->createIdentifierTokenMap();
-
- // map of tokens to drop while lexing (the map is only used for isset lookup,
- // that's why the value is simply set to 1; the value is never actually used.)
- $this->dropTokens = array_fill_keys(
- [\T_WHITESPACE, \T_OPEN_TAG, \T_COMMENT, \T_DOC_COMMENT, \T_BAD_CHARACTER], 1
- );
-
- $defaultAttributes = ['comments', 'startLine', 'endLine'];
- $usedAttributes = array_fill_keys($options['usedAttributes'] ?? $defaultAttributes, true);
-
- // Create individual boolean properties to make these checks faster.
- $this->attributeStartLineUsed = isset($usedAttributes['startLine']);
- $this->attributeEndLineUsed = isset($usedAttributes['endLine']);
- $this->attributeStartTokenPosUsed = isset($usedAttributes['startTokenPos']);
- $this->attributeEndTokenPosUsed = isset($usedAttributes['endTokenPos']);
- $this->attributeStartFilePosUsed = isset($usedAttributes['startFilePos']);
- $this->attributeEndFilePosUsed = isset($usedAttributes['endFilePos']);
- $this->attributeCommentsUsed = isset($usedAttributes['comments']);
- }
-
- /**
- * Initializes the lexer for lexing the provided source code.
- *
- * This function does not throw if lexing errors occur. Instead, errors may be retrieved using
- * the getErrors() method.
- *
- * @param string $code The source code to lex
- * @param ErrorHandler|null $errorHandler Error handler to use for lexing errors. Defaults to
- * ErrorHandler\Throwing
- */
- public function startLexing(string $code, ErrorHandler $errorHandler = null) {
- if (null === $errorHandler) {
- $errorHandler = new ErrorHandler\Throwing();
- }
-
- $this->code = $code; // keep the code around for __halt_compiler() handling
- $this->pos = -1;
- $this->line = 1;
- $this->filePos = 0;
-
- // If inline HTML occurs without preceding code, treat it as if it had a leading newline.
- // This ensures proper composability, because having a newline is the "safe" assumption.
- $this->prevCloseTagHasNewline = true;
-
- $scream = ini_set('xdebug.scream', '0');
-
- $this->tokens = @token_get_all($code);
- $this->postprocessTokens($errorHandler);
-
- if (false !== $scream) {
- ini_set('xdebug.scream', $scream);
- }
- }
-
- private function handleInvalidCharacterRange($start, $end, $line, ErrorHandler $errorHandler) {
- $tokens = [];
- for ($i = $start; $i < $end; $i++) {
- $chr = $this->code[$i];
- if ($chr === "\0") {
- // PHP cuts error message after null byte, so need special case
- $errorMsg = 'Unexpected null byte';
- } else {
- $errorMsg = sprintf(
- 'Unexpected character "%s" (ASCII %d)', $chr, ord($chr)
- );
- }
-
- $tokens[] = [\T_BAD_CHARACTER, $chr, $line];
- $errorHandler->handleError(new Error($errorMsg, [
- 'startLine' => $line,
- 'endLine' => $line,
- 'startFilePos' => $i,
- 'endFilePos' => $i,
- ]));
- }
- return $tokens;
- }
-
- /**
- * Check whether comment token is unterminated.
- *
- * @return bool
- */
- private function isUnterminatedComment($token) : bool {
- return ($token[0] === \T_COMMENT || $token[0] === \T_DOC_COMMENT)
- && substr($token[1], 0, 2) === '/*'
- && substr($token[1], -2) !== '*/';
- }
-
- protected function postprocessTokens(ErrorHandler $errorHandler) {
- // PHP's error handling for token_get_all() is rather bad, so if we want detailed
- // error information we need to compute it ourselves. Invalid character errors are
- // detected by finding "gaps" in the token array. Unterminated comments are detected
- // by checking if a trailing comment has a "*/" at the end.
- //
- // Additionally, we perform a number of canonicalizations here:
- // * Use the PHP 8.0 comment format, which does not include trailing whitespace anymore.
- // * Use PHP 8.0 T_NAME_* tokens.
- // * Use PHP 8.1 T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG and
- // T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG tokens used to disambiguate intersection types.
-
- $filePos = 0;
- $line = 1;
- $numTokens = \count($this->tokens);
- for ($i = 0; $i < $numTokens; $i++) {
- $token = $this->tokens[$i];
-
- // Since PHP 7.4 invalid characters are represented by a T_BAD_CHARACTER token.
- // In this case we only need to emit an error.
- if ($token[0] === \T_BAD_CHARACTER) {
- $this->handleInvalidCharacterRange($filePos, $filePos + 1, $line, $errorHandler);
- }
-
- if ($token[0] === \T_COMMENT && substr($token[1], 0, 2) !== '/*'
- && preg_match('/(\r\n|\n|\r)$/D', $token[1], $matches)) {
- $trailingNewline = $matches[0];
- $token[1] = substr($token[1], 0, -strlen($trailingNewline));
- $this->tokens[$i] = $token;
- if (isset($this->tokens[$i + 1]) && $this->tokens[$i + 1][0] === \T_WHITESPACE) {
- // Move trailing newline into following T_WHITESPACE token, if it already exists.
- $this->tokens[$i + 1][1] = $trailingNewline . $this->tokens[$i + 1][1];
- $this->tokens[$i + 1][2]--;
- } else {
- // Otherwise, we need to create a new T_WHITESPACE token.
- array_splice($this->tokens, $i + 1, 0, [
- [\T_WHITESPACE, $trailingNewline, $line],
- ]);
- $numTokens++;
- }
- }
-
- // Emulate PHP 8 T_NAME_* tokens, by combining sequences of T_NS_SEPARATOR and T_STRING
- // into a single token.
- if (\is_array($token)
- && ($token[0] === \T_NS_SEPARATOR || isset($this->identifierTokens[$token[0]]))) {
- $lastWasSeparator = $token[0] === \T_NS_SEPARATOR;
- $text = $token[1];
- for ($j = $i + 1; isset($this->tokens[$j]); $j++) {
- if ($lastWasSeparator) {
- if (!isset($this->identifierTokens[$this->tokens[$j][0]])) {
- break;
- }
- $lastWasSeparator = false;
- } else {
- if ($this->tokens[$j][0] !== \T_NS_SEPARATOR) {
- break;
- }
- $lastWasSeparator = true;
- }
- $text .= $this->tokens[$j][1];
- }
- if ($lastWasSeparator) {
- // Trailing separator is not part of the name.
- $j--;
- $text = substr($text, 0, -1);
- }
- if ($j > $i + 1) {
- if ($token[0] === \T_NS_SEPARATOR) {
- $type = \T_NAME_FULLY_QUALIFIED;
- } else if ($token[0] === \T_NAMESPACE) {
- $type = \T_NAME_RELATIVE;
- } else {
- $type = \T_NAME_QUALIFIED;
- }
- $token = [$type, $text, $line];
- array_splice($this->tokens, $i, $j - $i, [$token]);
- $numTokens -= $j - $i - 1;
- }
- }
-
- if ($token === '&') {
- $next = $i + 1;
- while (isset($this->tokens[$next]) && $this->tokens[$next][0] === \T_WHITESPACE) {
- $next++;
- }
- $followedByVarOrVarArg = isset($this->tokens[$next]) &&
- ($this->tokens[$next][0] === \T_VARIABLE || $this->tokens[$next][0] === \T_ELLIPSIS);
- $this->tokens[$i] = $token = [
- $followedByVarOrVarArg
- ? \T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG
- : \T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG,
- '&',
- $line,
- ];
- }
-
- $tokenValue = \is_string($token) ? $token : $token[1];
- $tokenLen = \strlen($tokenValue);
-
- if (substr($this->code, $filePos, $tokenLen) !== $tokenValue) {
- // Something is missing, must be an invalid character
- $nextFilePos = strpos($this->code, $tokenValue, $filePos);
- $badCharTokens = $this->handleInvalidCharacterRange(
- $filePos, $nextFilePos, $line, $errorHandler);
- $filePos = (int) $nextFilePos;
-
- array_splice($this->tokens, $i, 0, $badCharTokens);
- $numTokens += \count($badCharTokens);
- $i += \count($badCharTokens);
- }
-
- $filePos += $tokenLen;
- $line += substr_count($tokenValue, "\n");
- }
-
- if ($filePos !== \strlen($this->code)) {
- if (substr($this->code, $filePos, 2) === '/*') {
- // Unlike PHP, HHVM will drop unterminated comments entirely
- $comment = substr($this->code, $filePos);
- $errorHandler->handleError(new Error('Unterminated comment', [
- 'startLine' => $line,
- 'endLine' => $line + substr_count($comment, "\n"),
- 'startFilePos' => $filePos,
- 'endFilePos' => $filePos + \strlen($comment),
- ]));
-
- // Emulate the PHP behavior
- $isDocComment = isset($comment[3]) && $comment[3] === '*';
- $this->tokens[] = [$isDocComment ? \T_DOC_COMMENT : \T_COMMENT, $comment, $line];
- } else {
- // Invalid characters at the end of the input
- $badCharTokens = $this->handleInvalidCharacterRange(
- $filePos, \strlen($this->code), $line, $errorHandler);
- $this->tokens = array_merge($this->tokens, $badCharTokens);
- }
- return;
- }
-
- if (count($this->tokens) > 0) {
- // Check for unterminated comment
- $lastToken = $this->tokens[count($this->tokens) - 1];
- if ($this->isUnterminatedComment($lastToken)) {
- $errorHandler->handleError(new Error('Unterminated comment', [
- 'startLine' => $line - substr_count($lastToken[1], "\n"),
- 'endLine' => $line,
- 'startFilePos' => $filePos - \strlen($lastToken[1]),
- 'endFilePos' => $filePos,
- ]));
- }
- }
- }
-
- /**
- * Fetches the next token.
- *
- * The available attributes are determined by the 'usedAttributes' option, which can
- * be specified in the constructor. The following attributes are supported:
- *
- * * 'comments' => Array of PhpParser\Comment or PhpParser\Comment\Doc instances,
- * representing all comments that occurred between the previous
- * non-discarded token and the current one.
- * * 'startLine' => Line in which the node starts.
- * * 'endLine' => Line in which the node ends.
- * * 'startTokenPos' => Offset into the token array of the first token in the node.
- * * 'endTokenPos' => Offset into the token array of the last token in the node.
- * * 'startFilePos' => Offset into the code string of the first character that is part of the node.
- * * 'endFilePos' => Offset into the code string of the last character that is part of the node.
- *
- * @param mixed $value Variable to store token content in
- * @param mixed $startAttributes Variable to store start attributes in
- * @param mixed $endAttributes Variable to store end attributes in
- *
- * @return int Token id
- */
- public function getNextToken(&$value = null, &$startAttributes = null, &$endAttributes = null) : int {
- $startAttributes = [];
- $endAttributes = [];
-
- while (1) {
- if (isset($this->tokens[++$this->pos])) {
- $token = $this->tokens[$this->pos];
- } else {
- // EOF token with ID 0
- $token = "\0";
- }
-
- if ($this->attributeStartLineUsed) {
- $startAttributes['startLine'] = $this->line;
- }
- if ($this->attributeStartTokenPosUsed) {
- $startAttributes['startTokenPos'] = $this->pos;
- }
- if ($this->attributeStartFilePosUsed) {
- $startAttributes['startFilePos'] = $this->filePos;
- }
-
- if (\is_string($token)) {
- $value = $token;
- if (isset($token[1])) {
- // bug in token_get_all
- $this->filePos += 2;
- $id = ord('"');
- } else {
- $this->filePos += 1;
- $id = ord($token);
- }
- } elseif (!isset($this->dropTokens[$token[0]])) {
- $value = $token[1];
- $id = $this->tokenMap[$token[0]];
- if (\T_CLOSE_TAG === $token[0]) {
- $this->prevCloseTagHasNewline = false !== strpos($token[1], "\n")
- || false !== strpos($token[1], "\r");
- } elseif (\T_INLINE_HTML === $token[0]) {
- $startAttributes['hasLeadingNewline'] = $this->prevCloseTagHasNewline;
- }
-
- $this->line += substr_count($value, "\n");
- $this->filePos += \strlen($value);
- } else {
- $origLine = $this->line;
- $origFilePos = $this->filePos;
- $this->line += substr_count($token[1], "\n");
- $this->filePos += \strlen($token[1]);
-
- if (\T_COMMENT === $token[0] || \T_DOC_COMMENT === $token[0]) {
- if ($this->attributeCommentsUsed) {
- $comment = \T_DOC_COMMENT === $token[0]
- ? new Comment\Doc($token[1],
- $origLine, $origFilePos, $this->pos,
- $this->line, $this->filePos - 1, $this->pos)
- : new Comment($token[1],
- $origLine, $origFilePos, $this->pos,
- $this->line, $this->filePos - 1, $this->pos);
- $startAttributes['comments'][] = $comment;
- }
- }
- continue;
- }
-
- if ($this->attributeEndLineUsed) {
- $endAttributes['endLine'] = $this->line;
- }
- if ($this->attributeEndTokenPosUsed) {
- $endAttributes['endTokenPos'] = $this->pos;
- }
- if ($this->attributeEndFilePosUsed) {
- $endAttributes['endFilePos'] = $this->filePos - 1;
- }
-
- return $id;
- }
-
- throw new \RuntimeException('Reached end of lexer loop');
- }
-
- /**
- * Returns the token array for current code.
- *
- * The token array is in the same format as provided by the
- * token_get_all() function and does not discard tokens (i.e.
- * whitespace and comments are included). The token position
- * attributes are against this token array.
- *
- * @return array Array of tokens in token_get_all() format
- */
- public function getTokens() : array {
- return $this->tokens;
- }
-
- /**
- * Handles __halt_compiler() by returning the text after it.
- *
- * @return string Remaining text
- */
- public function handleHaltCompiler() : string {
- // text after T_HALT_COMPILER, still including ();
- $textAfter = substr($this->code, $this->filePos);
-
- // ensure that it is followed by ();
- // this simplifies the situation, by not allowing any comments
- // in between of the tokens.
- if (!preg_match('~^\s*\(\s*\)\s*(?:;|\?>\r?\n?)~', $textAfter, $matches)) {
- throw new Error('__HALT_COMPILER must be followed by "();"');
- }
-
- // prevent the lexer from returning any further tokens
- $this->pos = count($this->tokens);
-
- // return with (); removed
- return substr($textAfter, strlen($matches[0]));
- }
-
- private function defineCompatibilityTokens() {
- static $compatTokensDefined = false;
- if ($compatTokensDefined) {
- return;
- }
-
- $compatTokens = [
- // PHP 7.4
- 'T_BAD_CHARACTER',
- 'T_FN',
- 'T_COALESCE_EQUAL',
- // PHP 8.0
- 'T_NAME_QUALIFIED',
- 'T_NAME_FULLY_QUALIFIED',
- 'T_NAME_RELATIVE',
- 'T_MATCH',
- 'T_NULLSAFE_OBJECT_OPERATOR',
- 'T_ATTRIBUTE',
- // PHP 8.1
- 'T_ENUM',
- 'T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG',
- 'T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG',
- 'T_READONLY',
- ];
-
- // PHP-Parser might be used together with another library that also emulates some or all
- // of these tokens. Perform a sanity-check that all already defined tokens have been
- // assigned a unique ID.
- $usedTokenIds = [];
- foreach ($compatTokens as $token) {
- if (\defined($token)) {
- $tokenId = \constant($token);
- $clashingToken = $usedTokenIds[$tokenId] ?? null;
- if ($clashingToken !== null) {
- throw new \Error(sprintf(
- 'Token %s has same ID as token %s, ' .
- 'you may be using a library with broken token emulation',
- $token, $clashingToken
- ));
- }
- $usedTokenIds[$tokenId] = $token;
- }
- }
-
- // Now define any tokens that have not yet been emulated. Try to assign IDs from -1
- // downwards, but skip any IDs that may already be in use.
- $newTokenId = -1;
- foreach ($compatTokens as $token) {
- if (!\defined($token)) {
- while (isset($usedTokenIds[$newTokenId])) {
- $newTokenId--;
- }
- \define($token, $newTokenId);
- $newTokenId--;
- }
- }
-
- $compatTokensDefined = true;
- }
-
- /**
- * Creates the token map.
- *
- * The token map maps the PHP internal token identifiers
- * to the identifiers used by the Parser. Additionally it
- * maps T_OPEN_TAG_WITH_ECHO to T_ECHO and T_CLOSE_TAG to ';'.
- *
- * @return array The token map
- */
- protected function createTokenMap() : array {
- $tokenMap = [];
-
- // 256 is the minimum possible token number, as everything below
- // it is an ASCII value
- for ($i = 256; $i < 1000; ++$i) {
- if (\T_DOUBLE_COLON === $i) {
- // T_DOUBLE_COLON is equivalent to T_PAAMAYIM_NEKUDOTAYIM
- $tokenMap[$i] = Tokens::T_PAAMAYIM_NEKUDOTAYIM;
- } elseif(\T_OPEN_TAG_WITH_ECHO === $i) {
- // T_OPEN_TAG_WITH_ECHO with dropped T_OPEN_TAG results in T_ECHO
- $tokenMap[$i] = Tokens::T_ECHO;
- } elseif(\T_CLOSE_TAG === $i) {
- // T_CLOSE_TAG is equivalent to ';'
- $tokenMap[$i] = ord(';');
- } elseif ('UNKNOWN' !== $name = token_name($i)) {
- if ('T_HASHBANG' === $name) {
- // HHVM uses a special token for #! hashbang lines
- $tokenMap[$i] = Tokens::T_INLINE_HTML;
- } elseif (defined($name = Tokens::class . '::' . $name)) {
- // Other tokens can be mapped directly
- $tokenMap[$i] = constant($name);
- }
- }
- }
-
- // HHVM uses a special token for numbers that overflow to double
- if (defined('T_ONUMBER')) {
- $tokenMap[\T_ONUMBER] = Tokens::T_DNUMBER;
- }
- // HHVM also has a separate token for the __COMPILER_HALT_OFFSET__ constant
- if (defined('T_COMPILER_HALT_OFFSET')) {
- $tokenMap[\T_COMPILER_HALT_OFFSET] = Tokens::T_STRING;
- }
-
- // Assign tokens for which we define compatibility constants, as token_name() does not know them.
- $tokenMap[\T_FN] = Tokens::T_FN;
- $tokenMap[\T_COALESCE_EQUAL] = Tokens::T_COALESCE_EQUAL;
- $tokenMap[\T_NAME_QUALIFIED] = Tokens::T_NAME_QUALIFIED;
- $tokenMap[\T_NAME_FULLY_QUALIFIED] = Tokens::T_NAME_FULLY_QUALIFIED;
- $tokenMap[\T_NAME_RELATIVE] = Tokens::T_NAME_RELATIVE;
- $tokenMap[\T_MATCH] = Tokens::T_MATCH;
- $tokenMap[\T_NULLSAFE_OBJECT_OPERATOR] = Tokens::T_NULLSAFE_OBJECT_OPERATOR;
- $tokenMap[\T_ATTRIBUTE] = Tokens::T_ATTRIBUTE;
- $tokenMap[\T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG] = Tokens::T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG;
- $tokenMap[\T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG] = Tokens::T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG;
- $tokenMap[\T_ENUM] = Tokens::T_ENUM;
- $tokenMap[\T_READONLY] = Tokens::T_READONLY;
-
- return $tokenMap;
- }
-
- private function createIdentifierTokenMap(): array {
- // Based on semi_reserved production.
- return array_fill_keys([
- \T_STRING,
- \T_STATIC, \T_ABSTRACT, \T_FINAL, \T_PRIVATE, \T_PROTECTED, \T_PUBLIC, \T_READONLY,
- \T_INCLUDE, \T_INCLUDE_ONCE, \T_EVAL, \T_REQUIRE, \T_REQUIRE_ONCE, \T_LOGICAL_OR, \T_LOGICAL_XOR, \T_LOGICAL_AND,
- \T_INSTANCEOF, \T_NEW, \T_CLONE, \T_EXIT, \T_IF, \T_ELSEIF, \T_ELSE, \T_ENDIF, \T_ECHO, \T_DO, \T_WHILE,
- \T_ENDWHILE, \T_FOR, \T_ENDFOR, \T_FOREACH, \T_ENDFOREACH, \T_DECLARE, \T_ENDDECLARE, \T_AS, \T_TRY, \T_CATCH,
- \T_FINALLY, \T_THROW, \T_USE, \T_INSTEADOF, \T_GLOBAL, \T_VAR, \T_UNSET, \T_ISSET, \T_EMPTY, \T_CONTINUE, \T_GOTO,
- \T_FUNCTION, \T_CONST, \T_RETURN, \T_PRINT, \T_YIELD, \T_LIST, \T_SWITCH, \T_ENDSWITCH, \T_CASE, \T_DEFAULT,
- \T_BREAK, \T_ARRAY, \T_CALLABLE, \T_EXTENDS, \T_IMPLEMENTS, \T_NAMESPACE, \T_TRAIT, \T_INTERFACE, \T_CLASS,
- \T_CLASS_C, \T_TRAIT_C, \T_FUNC_C, \T_METHOD_C, \T_LINE, \T_FILE, \T_DIR, \T_NS_C, \T_HALT_COMPILER, \T_FN,
- \T_MATCH,
- ], true);
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php
deleted file mode 100644
index 5c56e026..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php
+++ /dev/null
@@ -1,248 +0,0 @@
-targetPhpVersion = $options['phpVersion'] ?? Emulative::PHP_8_1;
- unset($options['phpVersion']);
-
- parent::__construct($options);
-
- $emulators = [
- new FlexibleDocStringEmulator(),
- new FnTokenEmulator(),
- new MatchTokenEmulator(),
- new CoaleseEqualTokenEmulator(),
- new NumericLiteralSeparatorEmulator(),
- new NullsafeTokenEmulator(),
- new AttributeEmulator(),
- new EnumTokenEmulator(),
- new ReadonlyTokenEmulator(),
- new ExplicitOctalEmulator(),
- ];
-
- // Collect emulators that are relevant for the PHP version we're running
- // and the PHP version we're targeting for emulation.
- foreach ($emulators as $emulator) {
- $emulatorPhpVersion = $emulator->getPhpVersion();
- if ($this->isForwardEmulationNeeded($emulatorPhpVersion)) {
- $this->emulators[] = $emulator;
- } else if ($this->isReverseEmulationNeeded($emulatorPhpVersion)) {
- $this->emulators[] = new ReverseEmulator($emulator);
- }
- }
- }
-
- public function startLexing(string $code, ErrorHandler $errorHandler = null) {
- $emulators = array_filter($this->emulators, function($emulator) use($code) {
- return $emulator->isEmulationNeeded($code);
- });
-
- if (empty($emulators)) {
- // Nothing to emulate, yay
- parent::startLexing($code, $errorHandler);
- return;
- }
-
- $this->patches = [];
- foreach ($emulators as $emulator) {
- $code = $emulator->preprocessCode($code, $this->patches);
- }
-
- $collector = new ErrorHandler\Collecting();
- parent::startLexing($code, $collector);
- $this->sortPatches();
- $this->fixupTokens();
-
- $errors = $collector->getErrors();
- if (!empty($errors)) {
- $this->fixupErrors($errors);
- foreach ($errors as $error) {
- $errorHandler->handleError($error);
- }
- }
-
- foreach ($emulators as $emulator) {
- $this->tokens = $emulator->emulate($code, $this->tokens);
- }
- }
-
- private function isForwardEmulationNeeded(string $emulatorPhpVersion): bool {
- return version_compare(\PHP_VERSION, $emulatorPhpVersion, '<')
- && version_compare($this->targetPhpVersion, $emulatorPhpVersion, '>=');
- }
-
- private function isReverseEmulationNeeded(string $emulatorPhpVersion): bool {
- return version_compare(\PHP_VERSION, $emulatorPhpVersion, '>=')
- && version_compare($this->targetPhpVersion, $emulatorPhpVersion, '<');
- }
-
- private function sortPatches()
- {
- // Patches may be contributed by different emulators.
- // Make sure they are sorted by increasing patch position.
- usort($this->patches, function($p1, $p2) {
- return $p1[0] <=> $p2[0];
- });
- }
-
- private function fixupTokens()
- {
- if (\count($this->patches) === 0) {
- return;
- }
-
- // Load first patch
- $patchIdx = 0;
-
- list($patchPos, $patchType, $patchText) = $this->patches[$patchIdx];
-
- // We use a manual loop over the tokens, because we modify the array on the fly
- $pos = 0;
- for ($i = 0, $c = \count($this->tokens); $i < $c; $i++) {
- $token = $this->tokens[$i];
- if (\is_string($token)) {
- if ($patchPos === $pos) {
- // Only support replacement for string tokens.
- assert($patchType === 'replace');
- $this->tokens[$i] = $patchText;
-
- // Fetch the next patch
- $patchIdx++;
- if ($patchIdx >= \count($this->patches)) {
- // No more patches, we're done
- return;
- }
- list($patchPos, $patchType, $patchText) = $this->patches[$patchIdx];
- }
-
- $pos += \strlen($token);
- continue;
- }
-
- $len = \strlen($token[1]);
- $posDelta = 0;
- while ($patchPos >= $pos && $patchPos < $pos + $len) {
- $patchTextLen = \strlen($patchText);
- if ($patchType === 'remove') {
- if ($patchPos === $pos && $patchTextLen === $len) {
- // Remove token entirely
- array_splice($this->tokens, $i, 1, []);
- $i--;
- $c--;
- } else {
- // Remove from token string
- $this->tokens[$i][1] = substr_replace(
- $token[1], '', $patchPos - $pos + $posDelta, $patchTextLen
- );
- $posDelta -= $patchTextLen;
- }
- } elseif ($patchType === 'add') {
- // Insert into the token string
- $this->tokens[$i][1] = substr_replace(
- $token[1], $patchText, $patchPos - $pos + $posDelta, 0
- );
- $posDelta += $patchTextLen;
- } else if ($patchType === 'replace') {
- // Replace inside the token string
- $this->tokens[$i][1] = substr_replace(
- $token[1], $patchText, $patchPos - $pos + $posDelta, $patchTextLen
- );
- } else {
- assert(false);
- }
-
- // Fetch the next patch
- $patchIdx++;
- if ($patchIdx >= \count($this->patches)) {
- // No more patches, we're done
- return;
- }
-
- list($patchPos, $patchType, $patchText) = $this->patches[$patchIdx];
-
- // Multiple patches may apply to the same token. Reload the current one to check
- // If the new patch applies
- $token = $this->tokens[$i];
- }
-
- $pos += $len;
- }
-
- // A patch did not apply
- assert(false);
- }
-
- /**
- * Fixup line and position information in errors.
- *
- * @param Error[] $errors
- */
- private function fixupErrors(array $errors) {
- foreach ($errors as $error) {
- $attrs = $error->getAttributes();
-
- $posDelta = 0;
- $lineDelta = 0;
- foreach ($this->patches as $patch) {
- list($patchPos, $patchType, $patchText) = $patch;
- if ($patchPos >= $attrs['startFilePos']) {
- // No longer relevant
- break;
- }
-
- if ($patchType === 'add') {
- $posDelta += strlen($patchText);
- $lineDelta += substr_count($patchText, "\n");
- } else if ($patchType === 'remove') {
- $posDelta -= strlen($patchText);
- $lineDelta -= substr_count($patchText, "\n");
- }
- }
-
- $attrs['startFilePos'] += $posDelta;
- $attrs['endFilePos'] += $posDelta;
- $attrs['startLine'] += $lineDelta;
- $attrs['endLine'] += $lineDelta;
- $error->setAttributes($attrs);
- }
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php
deleted file mode 100644
index 6776a519..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php
+++ /dev/null
@@ -1,56 +0,0 @@
-resolveIntegerOrFloatToken($tokens[$i + 1][1]);
- array_splice($tokens, $i, 2, [
- [$tokenKind, '0' . $tokens[$i + 1][1], $tokens[$i][2]],
- ]);
- $c--;
- }
- }
- return $tokens;
- }
-
- private function resolveIntegerOrFloatToken(string $str): int
- {
- $str = substr($str, 1);
- $str = str_replace('_', '', $str);
- $num = octdec($str);
- return is_float($num) ? \T_DNUMBER : \T_LNUMBER;
- }
-
- public function reverseEmulate(string $code, array $tokens): array {
- // Explicit octals were not legal code previously, don't bother.
- return $tokens;
- }
-}
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.php
deleted file mode 100644
index c15d6271..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.php
+++ /dev/null
@@ -1,76 +0,0 @@
-\h*)\2(?![a-zA-Z0-9_\x80-\xff])(?(?:;?[\r\n])?)/x
-REGEX;
-
- public function getPhpVersion(): string
- {
- return Emulative::PHP_7_3;
- }
-
- public function isEmulationNeeded(string $code) : bool
- {
- return strpos($code, '<<<') !== false;
- }
-
- public function emulate(string $code, array $tokens): array
- {
- // Handled by preprocessing + fixup.
- return $tokens;
- }
-
- public function reverseEmulate(string $code, array $tokens): array
- {
- // Not supported.
- return $tokens;
- }
-
- public function preprocessCode(string $code, array &$patches): string {
- if (!preg_match_all(self::FLEXIBLE_DOC_STRING_REGEX, $code, $matches, PREG_SET_ORDER|PREG_OFFSET_CAPTURE)) {
- // No heredoc/nowdoc found
- return $code;
- }
-
- // Keep track of how much we need to adjust string offsets due to the modifications we
- // already made
- $posDelta = 0;
- foreach ($matches as $match) {
- $indentation = $match['indentation'][0];
- $indentationStart = $match['indentation'][1];
-
- $separator = $match['separator'][0];
- $separatorStart = $match['separator'][1];
-
- if ($indentation === '' && $separator !== '') {
- // Ordinary heredoc/nowdoc
- continue;
- }
-
- if ($indentation !== '') {
- // Remove indentation
- $indentationLen = strlen($indentation);
- $code = substr_replace($code, '', $indentationStart + $posDelta, $indentationLen);
- $patches[] = [$indentationStart + $posDelta, 'add', $indentation];
- $posDelta -= $indentationLen;
- }
-
- if ($separator === '') {
- // Insert newline as separator
- $code = substr_replace($code, "\n", $separatorStart + $posDelta, 0);
- $patches[] = [$separatorStart + $posDelta, 'remove', "\n"];
- $posDelta += 1;
- }
- }
-
- return $code;
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php
deleted file mode 100644
index eb7e4963..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php
+++ /dev/null
@@ -1,23 +0,0 @@
-getKeywordString()) !== false;
- }
-
- protected function isKeywordContext(array $tokens, int $pos): bool
- {
- $previousNonSpaceToken = $this->getPreviousNonSpaceToken($tokens, $pos);
- return $previousNonSpaceToken === null || $previousNonSpaceToken[0] !== \T_OBJECT_OPERATOR;
- }
-
- public function emulate(string $code, array $tokens): array
- {
- $keywordString = $this->getKeywordString();
- foreach ($tokens as $i => $token) {
- if ($token[0] === T_STRING && strtolower($token[1]) === $keywordString
- && $this->isKeywordContext($tokens, $i)) {
- $tokens[$i][0] = $this->getKeywordToken();
- }
- }
-
- return $tokens;
- }
-
- /**
- * @param mixed[] $tokens
- * @return mixed[]|null
- */
- private function getPreviousNonSpaceToken(array $tokens, int $start)
- {
- for ($i = $start - 1; $i >= 0; --$i) {
- if ($tokens[$i][0] === T_WHITESPACE) {
- continue;
- }
-
- return $tokens[$i];
- }
-
- return null;
- }
-
- public function reverseEmulate(string $code, array $tokens): array
- {
- $keywordToken = $this->getKeywordToken();
- foreach ($tokens as $i => $token) {
- if ($token[0] === $keywordToken) {
- $tokens[$i][0] = \T_STRING;
- }
- }
-
- return $tokens;
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php
deleted file mode 100644
index 902a46df..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php
+++ /dev/null
@@ -1,23 +0,0 @@
-') !== false;
- }
-
- public function emulate(string $code, array $tokens): array
- {
- // We need to manually iterate and manage a count because we'll change
- // the tokens array on the way
- $line = 1;
- for ($i = 0, $c = count($tokens); $i < $c; ++$i) {
- if ($tokens[$i] === '?' && isset($tokens[$i + 1]) && $tokens[$i + 1][0] === \T_OBJECT_OPERATOR) {
- array_splice($tokens, $i, 2, [
- [\T_NULLSAFE_OBJECT_OPERATOR, '?->', $line]
- ]);
- $c--;
- continue;
- }
-
- // Handle ?-> inside encapsed string.
- if ($tokens[$i][0] === \T_ENCAPSED_AND_WHITESPACE && isset($tokens[$i - 1])
- && $tokens[$i - 1][0] === \T_VARIABLE
- && preg_match('/^\?->([a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*)/', $tokens[$i][1], $matches)
- ) {
- $replacement = [
- [\T_NULLSAFE_OBJECT_OPERATOR, '?->', $line],
- [\T_STRING, $matches[1], $line],
- ];
- if (\strlen($matches[0]) !== \strlen($tokens[$i][1])) {
- $replacement[] = [
- \T_ENCAPSED_AND_WHITESPACE,
- \substr($tokens[$i][1], \strlen($matches[0])),
- $line
- ];
- }
- array_splice($tokens, $i, 1, $replacement);
- $c += \count($replacement) - 1;
- continue;
- }
-
- if (\is_array($tokens[$i])) {
- $line += substr_count($tokens[$i][1], "\n");
- }
- }
-
- return $tokens;
- }
-
- public function reverseEmulate(string $code, array $tokens): array
- {
- // ?-> was not valid code previously, don't bother.
- return $tokens;
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php
deleted file mode 100644
index cdf793e4..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php
+++ /dev/null
@@ -1,105 +0,0 @@
-resolveIntegerOrFloatToken($match);
- $newTokens = [[$tokenKind, $match, $token[2]]];
-
- $numTokens = 1;
- $len = $tokenLen;
- while ($matchLen > $len) {
- $nextToken = $tokens[$i + $numTokens];
- $nextTokenText = \is_array($nextToken) ? $nextToken[1] : $nextToken;
- $nextTokenLen = \strlen($nextTokenText);
-
- $numTokens++;
- if ($matchLen < $len + $nextTokenLen) {
- // Split trailing characters into a partial token.
- assert(is_array($nextToken), "Partial token should be an array token");
- $partialText = substr($nextTokenText, $matchLen - $len);
- $newTokens[] = [$nextToken[0], $partialText, $nextToken[2]];
- break;
- }
-
- $len += $nextTokenLen;
- }
-
- array_splice($tokens, $i, $numTokens, $newTokens);
- $c -= $numTokens - \count($newTokens);
- $codeOffset += $matchLen;
- }
-
- return $tokens;
- }
-
- private function resolveIntegerOrFloatToken(string $str): int
- {
- $str = str_replace('_', '', $str);
-
- if (stripos($str, '0b') === 0) {
- $num = bindec($str);
- } elseif (stripos($str, '0x') === 0) {
- $num = hexdec($str);
- } elseif (stripos($str, '0') === 0 && ctype_digit($str)) {
- $num = octdec($str);
- } else {
- $num = +$str;
- }
-
- return is_float($num) ? T_DNUMBER : T_LNUMBER;
- }
-
- public function reverseEmulate(string $code, array $tokens): array
- {
- // Numeric separators were not legal code previously, don't bother.
- return $tokens;
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php
deleted file mode 100644
index b97f8d11..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php
+++ /dev/null
@@ -1,23 +0,0 @@
-emulator = $emulator;
- }
-
- public function getPhpVersion(): string {
- return $this->emulator->getPhpVersion();
- }
-
- public function isEmulationNeeded(string $code): bool {
- return $this->emulator->isEmulationNeeded($code);
- }
-
- public function emulate(string $code, array $tokens): array {
- return $this->emulator->reverseEmulate($code, $tokens);
- }
-
- public function reverseEmulate(string $code, array $tokens): array {
- return $this->emulator->emulate($code, $tokens);
- }
-
- public function preprocessCode(string $code, array &$patches): string {
- return $code;
- }
-}
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php
deleted file mode 100644
index a020bc0f..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php
+++ /dev/null
@@ -1,25 +0,0 @@
- [aliasName => originalName]] */
- protected $aliases = [];
-
- /** @var Name[][] Same as $aliases but preserving original case */
- protected $origAliases = [];
-
- /** @var ErrorHandler Error handler */
- protected $errorHandler;
-
- /**
- * Create a name context.
- *
- * @param ErrorHandler $errorHandler Error handling used to report errors
- */
- public function __construct(ErrorHandler $errorHandler) {
- $this->errorHandler = $errorHandler;
- }
-
- /**
- * Start a new namespace.
- *
- * This also resets the alias table.
- *
- * @param Name|null $namespace Null is the global namespace
- */
- public function startNamespace(Name $namespace = null) {
- $this->namespace = $namespace;
- $this->origAliases = $this->aliases = [
- Stmt\Use_::TYPE_NORMAL => [],
- Stmt\Use_::TYPE_FUNCTION => [],
- Stmt\Use_::TYPE_CONSTANT => [],
- ];
- }
-
- /**
- * Add an alias / import.
- *
- * @param Name $name Original name
- * @param string $aliasName Aliased name
- * @param int $type One of Stmt\Use_::TYPE_*
- * @param array $errorAttrs Attributes to use to report an error
- */
- public function addAlias(Name $name, string $aliasName, int $type, array $errorAttrs = []) {
- // Constant names are case sensitive, everything else case insensitive
- if ($type === Stmt\Use_::TYPE_CONSTANT) {
- $aliasLookupName = $aliasName;
- } else {
- $aliasLookupName = strtolower($aliasName);
- }
-
- if (isset($this->aliases[$type][$aliasLookupName])) {
- $typeStringMap = [
- Stmt\Use_::TYPE_NORMAL => '',
- Stmt\Use_::TYPE_FUNCTION => 'function ',
- Stmt\Use_::TYPE_CONSTANT => 'const ',
- ];
-
- $this->errorHandler->handleError(new Error(
- sprintf(
- 'Cannot use %s%s as %s because the name is already in use',
- $typeStringMap[$type], $name, $aliasName
- ),
- $errorAttrs
- ));
- return;
- }
-
- $this->aliases[$type][$aliasLookupName] = $name;
- $this->origAliases[$type][$aliasName] = $name;
- }
-
- /**
- * Get current namespace.
- *
- * @return null|Name Namespace (or null if global namespace)
- */
- public function getNamespace() {
- return $this->namespace;
- }
-
- /**
- * Get resolved name.
- *
- * @param Name $name Name to resolve
- * @param int $type One of Stmt\Use_::TYPE_{FUNCTION|CONSTANT}
- *
- * @return null|Name Resolved name, or null if static resolution is not possible
- */
- public function getResolvedName(Name $name, int $type) {
- // don't resolve special class names
- if ($type === Stmt\Use_::TYPE_NORMAL && $name->isSpecialClassName()) {
- if (!$name->isUnqualified()) {
- $this->errorHandler->handleError(new Error(
- sprintf("'\\%s' is an invalid class name", $name->toString()),
- $name->getAttributes()
- ));
- }
- return $name;
- }
-
- // fully qualified names are already resolved
- if ($name->isFullyQualified()) {
- return $name;
- }
-
- // Try to resolve aliases
- if (null !== $resolvedName = $this->resolveAlias($name, $type)) {
- return $resolvedName;
- }
-
- if ($type !== Stmt\Use_::TYPE_NORMAL && $name->isUnqualified()) {
- if (null === $this->namespace) {
- // outside of a namespace unaliased unqualified is same as fully qualified
- return new FullyQualified($name, $name->getAttributes());
- }
-
- // Cannot resolve statically
- return null;
- }
-
- // if no alias exists prepend current namespace
- return FullyQualified::concat($this->namespace, $name, $name->getAttributes());
- }
-
- /**
- * Get resolved class name.
- *
- * @param Name $name Class ame to resolve
- *
- * @return Name Resolved name
- */
- public function getResolvedClassName(Name $name) : Name {
- return $this->getResolvedName($name, Stmt\Use_::TYPE_NORMAL);
- }
-
- /**
- * Get possible ways of writing a fully qualified name (e.g., by making use of aliases).
- *
- * @param string $name Fully-qualified name (without leading namespace separator)
- * @param int $type One of Stmt\Use_::TYPE_*
- *
- * @return Name[] Possible representations of the name
- */
- public function getPossibleNames(string $name, int $type) : array {
- $lcName = strtolower($name);
-
- if ($type === Stmt\Use_::TYPE_NORMAL) {
- // self, parent and static must always be unqualified
- if ($lcName === "self" || $lcName === "parent" || $lcName === "static") {
- return [new Name($name)];
- }
- }
-
- // Collect possible ways to write this name, starting with the fully-qualified name
- $possibleNames = [new FullyQualified($name)];
-
- if (null !== $nsRelativeName = $this->getNamespaceRelativeName($name, $lcName, $type)) {
- // Make sure there is no alias that makes the normally namespace-relative name
- // into something else
- if (null === $this->resolveAlias($nsRelativeName, $type)) {
- $possibleNames[] = $nsRelativeName;
- }
- }
-
- // Check for relevant namespace use statements
- foreach ($this->origAliases[Stmt\Use_::TYPE_NORMAL] as $alias => $orig) {
- $lcOrig = $orig->toLowerString();
- if (0 === strpos($lcName, $lcOrig . '\\')) {
- $possibleNames[] = new Name($alias . substr($name, strlen($lcOrig)));
- }
- }
-
- // Check for relevant type-specific use statements
- foreach ($this->origAliases[$type] as $alias => $orig) {
- if ($type === Stmt\Use_::TYPE_CONSTANT) {
- // Constants are are complicated-sensitive
- $normalizedOrig = $this->normalizeConstName($orig->toString());
- if ($normalizedOrig === $this->normalizeConstName($name)) {
- $possibleNames[] = new Name($alias);
- }
- } else {
- // Everything else is case-insensitive
- if ($orig->toLowerString() === $lcName) {
- $possibleNames[] = new Name($alias);
- }
- }
- }
-
- return $possibleNames;
- }
-
- /**
- * Get shortest representation of this fully-qualified name.
- *
- * @param string $name Fully-qualified name (without leading namespace separator)
- * @param int $type One of Stmt\Use_::TYPE_*
- *
- * @return Name Shortest representation
- */
- public function getShortName(string $name, int $type) : Name {
- $possibleNames = $this->getPossibleNames($name, $type);
-
- // Find shortest name
- $shortestName = null;
- $shortestLength = \INF;
- foreach ($possibleNames as $possibleName) {
- $length = strlen($possibleName->toCodeString());
- if ($length < $shortestLength) {
- $shortestName = $possibleName;
- $shortestLength = $length;
- }
- }
-
- return $shortestName;
- }
-
- private function resolveAlias(Name $name, $type) {
- $firstPart = $name->getFirst();
-
- if ($name->isQualified()) {
- // resolve aliases for qualified names, always against class alias table
- $checkName = strtolower($firstPart);
- if (isset($this->aliases[Stmt\Use_::TYPE_NORMAL][$checkName])) {
- $alias = $this->aliases[Stmt\Use_::TYPE_NORMAL][$checkName];
- return FullyQualified::concat($alias, $name->slice(1), $name->getAttributes());
- }
- } elseif ($name->isUnqualified()) {
- // constant aliases are case-sensitive, function aliases case-insensitive
- $checkName = $type === Stmt\Use_::TYPE_CONSTANT ? $firstPart : strtolower($firstPart);
- if (isset($this->aliases[$type][$checkName])) {
- // resolve unqualified aliases
- return new FullyQualified($this->aliases[$type][$checkName], $name->getAttributes());
- }
- }
-
- // No applicable aliases
- return null;
- }
-
- private function getNamespaceRelativeName(string $name, string $lcName, int $type) {
- if (null === $this->namespace) {
- return new Name($name);
- }
-
- if ($type === Stmt\Use_::TYPE_CONSTANT) {
- // The constants true/false/null always resolve to the global symbols, even inside a
- // namespace, so they may be used without qualification
- if ($lcName === "true" || $lcName === "false" || $lcName === "null") {
- return new Name($name);
- }
- }
-
- $namespacePrefix = strtolower($this->namespace . '\\');
- if (0 === strpos($lcName, $namespacePrefix)) {
- return new Name(substr($name, strlen($namespacePrefix)));
- }
-
- return null;
- }
-
- private function normalizeConstName(string $name) {
- $nsSep = strrpos($name, '\\');
- if (false === $nsSep) {
- return $name;
- }
-
- // Constants have case-insensitive namespace and case-sensitive short-name
- $ns = substr($name, 0, $nsSep);
- $shortName = substr($name, $nsSep + 1);
- return strtolower($ns) . '\\' . $shortName;
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node.php b/vendor/nikic/php-parser/lib/PhpParser/Node.php
deleted file mode 100644
index befb2565..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node.php
+++ /dev/null
@@ -1,151 +0,0 @@
-attributes = $attributes;
- $this->name = $name;
- $this->value = $value;
- $this->byRef = $byRef;
- $this->unpack = $unpack;
- }
-
- public function getSubNodeNames() : array {
- return ['name', 'value', 'byRef', 'unpack'];
- }
-
- public function getType() : string {
- return 'Arg';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Attribute.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Attribute.php
deleted file mode 100644
index c96f66e5..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Attribute.php
+++ /dev/null
@@ -1,34 +0,0 @@
-attributes = $attributes;
- $this->name = $name;
- $this->args = $args;
- }
-
- public function getSubNodeNames() : array {
- return ['name', 'args'];
- }
-
- public function getType() : string {
- return 'Attribute';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php b/vendor/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php
deleted file mode 100644
index 613bfc41..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php
+++ /dev/null
@@ -1,29 +0,0 @@
-attributes = $attributes;
- $this->attrs = $attrs;
- }
-
- public function getSubNodeNames() : array {
- return ['attrs'];
- }
-
- public function getType() : string {
- return 'AttributeGroup';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/ComplexType.php b/vendor/nikic/php-parser/lib/PhpParser/Node/ComplexType.php
deleted file mode 100644
index 9505532a..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/ComplexType.php
+++ /dev/null
@@ -1,14 +0,0 @@
-attributes = $attributes;
- $this->name = \is_string($name) ? new Identifier($name) : $name;
- $this->value = $value;
- }
-
- public function getSubNodeNames() : array {
- return ['name', 'value'];
- }
-
- public function getType() : string {
- return 'Const';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr.php
deleted file mode 100644
index 6cf4df22..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr.php
+++ /dev/null
@@ -1,9 +0,0 @@
-attributes = $attributes;
- $this->var = $var;
- $this->dim = $dim;
- }
-
- public function getSubNodeNames() : array {
- return ['var', 'dim'];
- }
-
- public function getType() : string {
- return 'Expr_ArrayDimFetch';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php
deleted file mode 100644
index 1b078f82..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php
+++ /dev/null
@@ -1,41 +0,0 @@
-attributes = $attributes;
- $this->key = $key;
- $this->value = $value;
- $this->byRef = $byRef;
- $this->unpack = $unpack;
- }
-
- public function getSubNodeNames() : array {
- return ['key', 'value', 'byRef', 'unpack'];
- }
-
- public function getType() : string {
- return 'Expr_ArrayItem';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php
deleted file mode 100644
index e6eaa283..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php
+++ /dev/null
@@ -1,34 +0,0 @@
-attributes = $attributes;
- $this->items = $items;
- }
-
- public function getSubNodeNames() : array {
- return ['items'];
- }
-
- public function getType() : string {
- return 'Expr_Array';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php
deleted file mode 100644
index c273fb7e..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php
+++ /dev/null
@@ -1,79 +0,0 @@
- false : Whether the closure is static
- * 'byRef' => false : Whether to return by reference
- * 'params' => array() : Parameters
- * 'returnType' => null : Return type
- * 'expr' => Expr : Expression body
- * 'attrGroups' => array() : PHP attribute groups
- * @param array $attributes Additional attributes
- */
- public function __construct(array $subNodes = [], array $attributes = []) {
- $this->attributes = $attributes;
- $this->static = $subNodes['static'] ?? false;
- $this->byRef = $subNodes['byRef'] ?? false;
- $this->params = $subNodes['params'] ?? [];
- $returnType = $subNodes['returnType'] ?? null;
- $this->returnType = \is_string($returnType) ? new Node\Identifier($returnType) : $returnType;
- $this->expr = $subNodes['expr'];
- $this->attrGroups = $subNodes['attrGroups'] ?? [];
- }
-
- public function getSubNodeNames() : array {
- return ['attrGroups', 'static', 'byRef', 'params', 'returnType', 'expr'];
- }
-
- public function returnsByRef() : bool {
- return $this->byRef;
- }
-
- public function getParams() : array {
- return $this->params;
- }
-
- public function getReturnType() {
- return $this->returnType;
- }
-
- public function getAttrGroups() : array {
- return $this->attrGroups;
- }
-
- /**
- * @return Node\Stmt\Return_[]
- */
- public function getStmts() : array {
- return [new Node\Stmt\Return_($this->expr)];
- }
-
- public function getType() : string {
- return 'Expr_ArrowFunction';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php
deleted file mode 100644
index cf9e6e82..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php
+++ /dev/null
@@ -1,34 +0,0 @@
-attributes = $attributes;
- $this->var = $var;
- $this->expr = $expr;
- }
-
- public function getSubNodeNames() : array {
- return ['var', 'expr'];
- }
-
- public function getType() : string {
- return 'Expr_Assign';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php
deleted file mode 100644
index bce8604f..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->var = $var;
- $this->expr = $expr;
- }
-
- public function getSubNodeNames() : array {
- return ['var', 'expr'];
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php
deleted file mode 100644
index 420284cd..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php
+++ /dev/null
@@ -1,12 +0,0 @@
-attributes = $attributes;
- $this->var = $var;
- $this->expr = $expr;
- }
-
- public function getSubNodeNames() : array {
- return ['var', 'expr'];
- }
-
- public function getType() : string {
- return 'Expr_AssignRef';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php
deleted file mode 100644
index d9c582b0..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php
+++ /dev/null
@@ -1,40 +0,0 @@
-attributes = $attributes;
- $this->left = $left;
- $this->right = $right;
- }
-
- public function getSubNodeNames() : array {
- return ['left', 'right'];
- }
-
- /**
- * Get the operator sigil for this binary operation.
- *
- * In the case there are multiple possible sigils for an operator, this method does not
- * necessarily return the one used in the parsed code.
- *
- * @return string
- */
- abstract public function getOperatorSigil() : string;
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php
deleted file mode 100644
index d907393b..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php
+++ /dev/null
@@ -1,16 +0,0 @@
-';
- }
-
- public function getType() : string {
- return 'Expr_BinaryOp_Greater';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php
deleted file mode 100644
index d677502c..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php
+++ /dev/null
@@ -1,16 +0,0 @@
-=';
- }
-
- public function getType() : string {
- return 'Expr_BinaryOp_GreaterOrEqual';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php
deleted file mode 100644
index 3d96285c..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php
+++ /dev/null
@@ -1,16 +0,0 @@
->';
- }
-
- public function getType() : string {
- return 'Expr_BinaryOp_ShiftRight';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php
deleted file mode 100644
index 3cb8e7e0..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php
+++ /dev/null
@@ -1,16 +0,0 @@
-';
- }
-
- public function getType() : string {
- return 'Expr_BinaryOp_Spaceship';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php
deleted file mode 100644
index ed44984b..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->expr = $expr;
- }
-
- public function getSubNodeNames() : array {
- return ['expr'];
- }
-
- public function getType() : string {
- return 'Expr_BitwiseNot';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php
deleted file mode 100644
index bf27e9f6..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->expr = $expr;
- }
-
- public function getSubNodeNames() : array {
- return ['expr'];
- }
-
- public function getType() : string {
- return 'Expr_BooleanNot';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php
deleted file mode 100644
index 78e1cf34..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php
+++ /dev/null
@@ -1,39 +0,0 @@
-
- */
- abstract public function getRawArgs(): array;
-
- /**
- * Returns whether this call expression is actually a first class callable.
- */
- public function isFirstClassCallable(): bool {
- foreach ($this->getRawArgs() as $arg) {
- if ($arg instanceof VariadicPlaceholder) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Assert that this is not a first-class callable and return only ordinary Args.
- *
- * @return Arg[]
- */
- public function getArgs(): array {
- assert(!$this->isFirstClassCallable());
- return $this->getRawArgs();
- }
-}
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php
deleted file mode 100644
index 36769d4f..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php
+++ /dev/null
@@ -1,26 +0,0 @@
-attributes = $attributes;
- $this->expr = $expr;
- }
-
- public function getSubNodeNames() : array {
- return ['expr'];
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php
deleted file mode 100644
index 57cc473b..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php
+++ /dev/null
@@ -1,12 +0,0 @@
-attributes = $attributes;
- $this->class = $class;
- $this->name = \is_string($name) ? new Identifier($name) : $name;
- }
-
- public function getSubNodeNames() : array {
- return ['class', 'name'];
- }
-
- public function getType() : string {
- return 'Expr_ClassConstFetch';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php
deleted file mode 100644
index db216b8f..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->expr = $expr;
- }
-
- public function getSubNodeNames() : array {
- return ['expr'];
- }
-
- public function getType() : string {
- return 'Expr_Clone';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php
deleted file mode 100644
index 56ddea6a..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php
+++ /dev/null
@@ -1,79 +0,0 @@
- false : Whether the closure is static
- * 'byRef' => false : Whether to return by reference
- * 'params' => array(): Parameters
- * 'uses' => array(): use()s
- * 'returnType' => null : Return type
- * 'stmts' => array(): Statements
- * 'attrGroups' => array(): PHP attributes groups
- * @param array $attributes Additional attributes
- */
- public function __construct(array $subNodes = [], array $attributes = []) {
- $this->attributes = $attributes;
- $this->static = $subNodes['static'] ?? false;
- $this->byRef = $subNodes['byRef'] ?? false;
- $this->params = $subNodes['params'] ?? [];
- $this->uses = $subNodes['uses'] ?? [];
- $returnType = $subNodes['returnType'] ?? null;
- $this->returnType = \is_string($returnType) ? new Node\Identifier($returnType) : $returnType;
- $this->stmts = $subNodes['stmts'] ?? [];
- $this->attrGroups = $subNodes['attrGroups'] ?? [];
- }
-
- public function getSubNodeNames() : array {
- return ['attrGroups', 'static', 'byRef', 'params', 'uses', 'returnType', 'stmts'];
- }
-
- public function returnsByRef() : bool {
- return $this->byRef;
- }
-
- public function getParams() : array {
- return $this->params;
- }
-
- public function getReturnType() {
- return $this->returnType;
- }
-
- /** @return Node\Stmt[] */
- public function getStmts() : array {
- return $this->stmts;
- }
-
- public function getAttrGroups() : array {
- return $this->attrGroups;
- }
-
- public function getType() : string {
- return 'Expr_Closure';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php
deleted file mode 100644
index 2b8a0966..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php
+++ /dev/null
@@ -1,34 +0,0 @@
-attributes = $attributes;
- $this->var = $var;
- $this->byRef = $byRef;
- }
-
- public function getSubNodeNames() : array {
- return ['var', 'byRef'];
- }
-
- public function getType() : string {
- return 'Expr_ClosureUse';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php
deleted file mode 100644
index 14ebd16b..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php
+++ /dev/null
@@ -1,31 +0,0 @@
-attributes = $attributes;
- $this->name = $name;
- }
-
- public function getSubNodeNames() : array {
- return ['name'];
- }
-
- public function getType() : string {
- return 'Expr_ConstFetch';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php
deleted file mode 100644
index 4042ec93..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->expr = $expr;
- }
-
- public function getSubNodeNames() : array {
- return ['expr'];
- }
-
- public function getType() : string {
- return 'Expr_Empty';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php
deleted file mode 100644
index 1637f3ae..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php
+++ /dev/null
@@ -1,31 +0,0 @@
-attributes = $attributes;
- }
-
- public function getSubNodeNames() : array {
- return [];
- }
-
- public function getType() : string {
- return 'Expr_Error';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php
deleted file mode 100644
index c44ff6f9..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->expr = $expr;
- }
-
- public function getSubNodeNames() : array {
- return ['expr'];
- }
-
- public function getType() : string {
- return 'Expr_ErrorSuppress';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php
deleted file mode 100644
index 85685474..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->expr = $expr;
- }
-
- public function getSubNodeNames() : array {
- return ['expr'];
- }
-
- public function getType() : string {
- return 'Expr_Eval';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php
deleted file mode 100644
index b88a8f7e..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php
+++ /dev/null
@@ -1,34 +0,0 @@
-attributes = $attributes;
- $this->expr = $expr;
- }
-
- public function getSubNodeNames() : array {
- return ['expr'];
- }
-
- public function getType() : string {
- return 'Expr_Exit';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php
deleted file mode 100644
index 2de4d0dd..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php
+++ /dev/null
@@ -1,39 +0,0 @@
- Arguments */
- public $args;
-
- /**
- * Constructs a function call node.
- *
- * @param Node\Name|Expr $name Function name
- * @param array $args Arguments
- * @param array $attributes Additional attributes
- */
- public function __construct($name, array $args = [], array $attributes = []) {
- $this->attributes = $attributes;
- $this->name = $name;
- $this->args = $args;
- }
-
- public function getSubNodeNames() : array {
- return ['name', 'args'];
- }
-
- public function getType() : string {
- return 'Expr_FuncCall';
- }
-
- public function getRawArgs(): array {
- return $this->args;
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php
deleted file mode 100644
index 07ce5968..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php
+++ /dev/null
@@ -1,39 +0,0 @@
-attributes = $attributes;
- $this->expr = $expr;
- $this->type = $type;
- }
-
- public function getSubNodeNames() : array {
- return ['expr', 'type'];
- }
-
- public function getType() : string {
- return 'Expr_Include';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php
deleted file mode 100644
index 9000d47b..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php
+++ /dev/null
@@ -1,35 +0,0 @@
-attributes = $attributes;
- $this->expr = $expr;
- $this->class = $class;
- }
-
- public function getSubNodeNames() : array {
- return ['expr', 'class'];
- }
-
- public function getType() : string {
- return 'Expr_Instanceof';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php
deleted file mode 100644
index 76b73875..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->vars = $vars;
- }
-
- public function getSubNodeNames() : array {
- return ['vars'];
- }
-
- public function getType() : string {
- return 'Expr_Isset';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php
deleted file mode 100644
index c27a27b9..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->items = $items;
- }
-
- public function getSubNodeNames() : array {
- return ['items'];
- }
-
- public function getType() : string {
- return 'Expr_List';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php
deleted file mode 100644
index 2455a302..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php
+++ /dev/null
@@ -1,31 +0,0 @@
-attributes = $attributes;
- $this->cond = $cond;
- $this->arms = $arms;
- }
-
- public function getSubNodeNames() : array {
- return ['cond', 'arms'];
- }
-
- public function getType() : string {
- return 'Expr_Match';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php
deleted file mode 100644
index 49ca4835..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php
+++ /dev/null
@@ -1,45 +0,0 @@
- Arguments */
- public $args;
-
- /**
- * Constructs a function call node.
- *
- * @param Expr $var Variable holding object
- * @param string|Identifier|Expr $name Method name
- * @param array $args Arguments
- * @param array $attributes Additional attributes
- */
- public function __construct(Expr $var, $name, array $args = [], array $attributes = []) {
- $this->attributes = $attributes;
- $this->var = $var;
- $this->name = \is_string($name) ? new Identifier($name) : $name;
- $this->args = $args;
- }
-
- public function getSubNodeNames() : array {
- return ['var', 'name', 'args'];
- }
-
- public function getType() : string {
- return 'Expr_MethodCall';
- }
-
- public function getRawArgs(): array {
- return $this->args;
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php
deleted file mode 100644
index e2bb6492..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php
+++ /dev/null
@@ -1,41 +0,0 @@
- Arguments */
- public $args;
-
- /**
- * Constructs a function call node.
- *
- * @param Node\Name|Expr|Node\Stmt\Class_ $class Class name (or class node for anonymous classes)
- * @param array $args Arguments
- * @param array $attributes Additional attributes
- */
- public function __construct($class, array $args = [], array $attributes = []) {
- $this->attributes = $attributes;
- $this->class = $class;
- $this->args = $args;
- }
-
- public function getSubNodeNames() : array {
- return ['class', 'args'];
- }
-
- public function getType() : string {
- return 'Expr_New';
- }
-
- public function getRawArgs(): array {
- return $this->args;
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php
deleted file mode 100644
index 07a571fd..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php
+++ /dev/null
@@ -1,45 +0,0 @@
- Arguments */
- public $args;
-
- /**
- * Constructs a nullsafe method call node.
- *
- * @param Expr $var Variable holding object
- * @param string|Identifier|Expr $name Method name
- * @param array $args Arguments
- * @param array $attributes Additional attributes
- */
- public function __construct(Expr $var, $name, array $args = [], array $attributes = []) {
- $this->attributes = $attributes;
- $this->var = $var;
- $this->name = \is_string($name) ? new Identifier($name) : $name;
- $this->args = $args;
- }
-
- public function getSubNodeNames() : array {
- return ['var', 'name', 'args'];
- }
-
- public function getType() : string {
- return 'Expr_NullsafeMethodCall';
- }
-
- public function getRawArgs(): array {
- return $this->args;
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php
deleted file mode 100644
index 9317eb3b..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php
+++ /dev/null
@@ -1,35 +0,0 @@
-attributes = $attributes;
- $this->var = $var;
- $this->name = \is_string($name) ? new Identifier($name) : $name;
- }
-
- public function getSubNodeNames() : array {
- return ['var', 'name'];
- }
-
- public function getType() : string {
- return 'Expr_NullsafePropertyFetch';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php
deleted file mode 100644
index 94d6c296..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->var = $var;
- }
-
- public function getSubNodeNames() : array {
- return ['var'];
- }
-
- public function getType() : string {
- return 'Expr_PostDec';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php
deleted file mode 100644
index 005c443a..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->var = $var;
- }
-
- public function getSubNodeNames() : array {
- return ['var'];
- }
-
- public function getType() : string {
- return 'Expr_PostInc';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php
deleted file mode 100644
index a5ca685a..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->var = $var;
- }
-
- public function getSubNodeNames() : array {
- return ['var'];
- }
-
- public function getType() : string {
- return 'Expr_PreDec';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php
deleted file mode 100644
index 0986c447..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->var = $var;
- }
-
- public function getSubNodeNames() : array {
- return ['var'];
- }
-
- public function getType() : string {
- return 'Expr_PreInc';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php
deleted file mode 100644
index 2d43c2ac..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->expr = $expr;
- }
-
- public function getSubNodeNames() : array {
- return ['expr'];
- }
-
- public function getType() : string {
- return 'Expr_Print';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php
deleted file mode 100644
index 4281f31c..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php
+++ /dev/null
@@ -1,35 +0,0 @@
-attributes = $attributes;
- $this->var = $var;
- $this->name = \is_string($name) ? new Identifier($name) : $name;
- }
-
- public function getSubNodeNames() : array {
- return ['var', 'name'];
- }
-
- public function getType() : string {
- return 'Expr_PropertyFetch';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php
deleted file mode 100644
index 537a7cc8..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->parts = $parts;
- }
-
- public function getSubNodeNames() : array {
- return ['parts'];
- }
-
- public function getType() : string {
- return 'Expr_ShellExec';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php
deleted file mode 100644
index d0d099c4..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php
+++ /dev/null
@@ -1,46 +0,0 @@
- Arguments */
- public $args;
-
- /**
- * Constructs a static method call node.
- *
- * @param Node\Name|Expr $class Class name
- * @param string|Identifier|Expr $name Method name
- * @param array $args Arguments
- * @param array $attributes Additional attributes
- */
- public function __construct($class, $name, array $args = [], array $attributes = []) {
- $this->attributes = $attributes;
- $this->class = $class;
- $this->name = \is_string($name) ? new Identifier($name) : $name;
- $this->args = $args;
- }
-
- public function getSubNodeNames() : array {
- return ['class', 'name', 'args'];
- }
-
- public function getType() : string {
- return 'Expr_StaticCall';
- }
-
- public function getRawArgs(): array {
- return $this->args;
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php
deleted file mode 100644
index 1ee1a25e..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php
+++ /dev/null
@@ -1,36 +0,0 @@
-attributes = $attributes;
- $this->class = $class;
- $this->name = \is_string($name) ? new VarLikeIdentifier($name) : $name;
- }
-
- public function getSubNodeNames() : array {
- return ['class', 'name'];
- }
-
- public function getType() : string {
- return 'Expr_StaticPropertyFetch';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php
deleted file mode 100644
index 9316f47d..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php
+++ /dev/null
@@ -1,38 +0,0 @@
-attributes = $attributes;
- $this->cond = $cond;
- $this->if = $if;
- $this->else = $else;
- }
-
- public function getSubNodeNames() : array {
- return ['cond', 'if', 'else'];
- }
-
- public function getType() : string {
- return 'Expr_Ternary';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php
deleted file mode 100644
index 5c97f0e2..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->expr = $expr;
- }
-
- public function getSubNodeNames() : array {
- return ['expr'];
- }
-
- public function getType() : string {
- return 'Expr_Throw';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php
deleted file mode 100644
index ce8808bc..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->expr = $expr;
- }
-
- public function getSubNodeNames() : array {
- return ['expr'];
- }
-
- public function getType() : string {
- return 'Expr_UnaryMinus';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php
deleted file mode 100644
index d23047e5..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->expr = $expr;
- }
-
- public function getSubNodeNames() : array {
- return ['expr'];
- }
-
- public function getType() : string {
- return 'Expr_UnaryPlus';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php
deleted file mode 100644
index b47d38e9..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->name = $name;
- }
-
- public function getSubNodeNames() : array {
- return ['name'];
- }
-
- public function getType() : string {
- return 'Expr_Variable';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php
deleted file mode 100644
index a3efce61..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->expr = $expr;
- }
-
- public function getSubNodeNames() : array {
- return ['expr'];
- }
-
- public function getType() : string {
- return 'Expr_YieldFrom';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php
deleted file mode 100644
index aef8fc33..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php
+++ /dev/null
@@ -1,34 +0,0 @@
-attributes = $attributes;
- $this->key = $key;
- $this->value = $value;
- }
-
- public function getSubNodeNames() : array {
- return ['key', 'value'];
- }
-
- public function getType() : string {
- return 'Expr_Yield';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php b/vendor/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php
deleted file mode 100644
index 5a825e73..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php
+++ /dev/null
@@ -1,43 +0,0 @@
- true,
- 'parent' => true,
- 'static' => true,
- ];
-
- /**
- * Constructs an identifier node.
- *
- * @param string $name Identifier as string
- * @param array $attributes Additional attributes
- */
- public function __construct(string $name, array $attributes = []) {
- $this->attributes = $attributes;
- $this->name = $name;
- }
-
- public function getSubNodeNames() : array {
- return ['name'];
- }
-
- /**
- * Get identifier as string.
- *
- * @return string Identifier as string.
- */
- public function toString() : string {
- return $this->name;
- }
-
- /**
- * Get lowercased identifier as string.
- *
- * @return string Lowercased identifier as string
- */
- public function toLowerString() : string {
- return strtolower($this->name);
- }
-
- /**
- * Checks whether the identifier is a special class name (self, parent or static).
- *
- * @return bool Whether identifier is a special class name
- */
- public function isSpecialClassName() : bool {
- return isset(self::$specialClassNames[strtolower($this->name)]);
- }
-
- /**
- * Get identifier as string.
- *
- * @return string Identifier as string
- */
- public function __toString() : string {
- return $this->name;
- }
-
- public function getType() : string {
- return 'Identifier';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php b/vendor/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php
deleted file mode 100644
index 9208e139..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->types = $types;
- }
-
- public function getSubNodeNames() : array {
- return ['types'];
- }
-
- public function getType() : string {
- return 'IntersectionType';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/MatchArm.php b/vendor/nikic/php-parser/lib/PhpParser/Node/MatchArm.php
deleted file mode 100644
index 2ae1c86b..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/MatchArm.php
+++ /dev/null
@@ -1,31 +0,0 @@
-conds = $conds;
- $this->body = $body;
- $this->attributes = $attributes;
- }
-
- public function getSubNodeNames() : array {
- return ['conds', 'body'];
- }
-
- public function getType() : string {
- return 'MatchArm';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php
deleted file mode 100644
index 6b1cc9f8..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php
+++ /dev/null
@@ -1,242 +0,0 @@
- true,
- 'parent' => true,
- 'static' => true,
- ];
-
- /**
- * Constructs a name node.
- *
- * @param string|string[]|self $name Name as string, part array or Name instance (copy ctor)
- * @param array $attributes Additional attributes
- */
- public function __construct($name, array $attributes = []) {
- $this->attributes = $attributes;
- $this->parts = self::prepareName($name);
- }
-
- public function getSubNodeNames() : array {
- return ['parts'];
- }
-
- /**
- * Gets the first part of the name, i.e. everything before the first namespace separator.
- *
- * @return string First part of the name
- */
- public function getFirst() : string {
- return $this->parts[0];
- }
-
- /**
- * Gets the last part of the name, i.e. everything after the last namespace separator.
- *
- * @return string Last part of the name
- */
- public function getLast() : string {
- return $this->parts[count($this->parts) - 1];
- }
-
- /**
- * Checks whether the name is unqualified. (E.g. Name)
- *
- * @return bool Whether the name is unqualified
- */
- public function isUnqualified() : bool {
- return 1 === count($this->parts);
- }
-
- /**
- * Checks whether the name is qualified. (E.g. Name\Name)
- *
- * @return bool Whether the name is qualified
- */
- public function isQualified() : bool {
- return 1 < count($this->parts);
- }
-
- /**
- * Checks whether the name is fully qualified. (E.g. \Name)
- *
- * @return bool Whether the name is fully qualified
- */
- public function isFullyQualified() : bool {
- return false;
- }
-
- /**
- * Checks whether the name is explicitly relative to the current namespace. (E.g. namespace\Name)
- *
- * @return bool Whether the name is relative
- */
- public function isRelative() : bool {
- return false;
- }
-
- /**
- * Returns a string representation of the name itself, without taking the name type into
- * account (e.g., not including a leading backslash for fully qualified names).
- *
- * @return string String representation
- */
- public function toString() : string {
- return implode('\\', $this->parts);
- }
-
- /**
- * Returns a string representation of the name as it would occur in code (e.g., including
- * leading backslash for fully qualified names.
- *
- * @return string String representation
- */
- public function toCodeString() : string {
- return $this->toString();
- }
-
- /**
- * Returns lowercased string representation of the name, without taking the name type into
- * account (e.g., no leading backslash for fully qualified names).
- *
- * @return string Lowercased string representation
- */
- public function toLowerString() : string {
- return strtolower(implode('\\', $this->parts));
- }
-
- /**
- * Checks whether the identifier is a special class name (self, parent or static).
- *
- * @return bool Whether identifier is a special class name
- */
- public function isSpecialClassName() : bool {
- return count($this->parts) === 1
- && isset(self::$specialClassNames[strtolower($this->parts[0])]);
- }
-
- /**
- * Returns a string representation of the name by imploding the namespace parts with the
- * namespace separator.
- *
- * @return string String representation
- */
- public function __toString() : string {
- return implode('\\', $this->parts);
- }
-
- /**
- * Gets a slice of a name (similar to array_slice).
- *
- * This method returns a new instance of the same type as the original and with the same
- * attributes.
- *
- * If the slice is empty, null is returned. The null value will be correctly handled in
- * concatenations using concat().
- *
- * Offset and length have the same meaning as in array_slice().
- *
- * @param int $offset Offset to start the slice at (may be negative)
- * @param int|null $length Length of the slice (may be negative)
- *
- * @return static|null Sliced name
- */
- public function slice(int $offset, int $length = null) {
- $numParts = count($this->parts);
-
- $realOffset = $offset < 0 ? $offset + $numParts : $offset;
- if ($realOffset < 0 || $realOffset > $numParts) {
- throw new \OutOfBoundsException(sprintf('Offset %d is out of bounds', $offset));
- }
-
- if (null === $length) {
- $realLength = $numParts - $realOffset;
- } else {
- $realLength = $length < 0 ? $length + $numParts - $realOffset : $length;
- if ($realLength < 0 || $realLength > $numParts) {
- throw new \OutOfBoundsException(sprintf('Length %d is out of bounds', $length));
- }
- }
-
- if ($realLength === 0) {
- // Empty slice is represented as null
- return null;
- }
-
- return new static(array_slice($this->parts, $realOffset, $realLength), $this->attributes);
- }
-
- /**
- * Concatenate two names, yielding a new Name instance.
- *
- * The type of the generated instance depends on which class this method is called on, for
- * example Name\FullyQualified::concat() will yield a Name\FullyQualified instance.
- *
- * If one of the arguments is null, a new instance of the other name will be returned. If both
- * arguments are null, null will be returned. As such, writing
- * Name::concat($namespace, $shortName)
- * where $namespace is a Name node or null will work as expected.
- *
- * @param string|string[]|self|null $name1 The first name
- * @param string|string[]|self|null $name2 The second name
- * @param array $attributes Attributes to assign to concatenated name
- *
- * @return static|null Concatenated name
- */
- public static function concat($name1, $name2, array $attributes = []) {
- if (null === $name1 && null === $name2) {
- return null;
- } elseif (null === $name1) {
- return new static(self::prepareName($name2), $attributes);
- } elseif (null === $name2) {
- return new static(self::prepareName($name1), $attributes);
- } else {
- return new static(
- array_merge(self::prepareName($name1), self::prepareName($name2)), $attributes
- );
- }
- }
-
- /**
- * Prepares a (string, array or Name node) name for use in name changing methods by converting
- * it to an array.
- *
- * @param string|string[]|self $name Name to prepare
- *
- * @return string[] Prepared name
- */
- private static function prepareName($name) : array {
- if (\is_string($name)) {
- if ('' === $name) {
- throw new \InvalidArgumentException('Name cannot be empty');
- }
-
- return explode('\\', $name);
- } elseif (\is_array($name)) {
- if (empty($name)) {
- throw new \InvalidArgumentException('Name cannot be empty');
- }
-
- return $name;
- } elseif ($name instanceof self) {
- return $name->parts;
- }
-
- throw new \InvalidArgumentException(
- 'Expected string, array of parts or Name instance'
- );
- }
-
- public function getType() : string {
- return 'Name';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php
deleted file mode 100644
index 1df93a56..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php
+++ /dev/null
@@ -1,50 +0,0 @@
-toString();
- }
-
- public function getType() : string {
- return 'Name_FullyQualified';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php
deleted file mode 100644
index 57bf7af2..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php
+++ /dev/null
@@ -1,50 +0,0 @@
-toString();
- }
-
- public function getType() : string {
- return 'Name_Relative';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/NullableType.php b/vendor/nikic/php-parser/lib/PhpParser/Node/NullableType.php
deleted file mode 100644
index d68e26a3..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/NullableType.php
+++ /dev/null
@@ -1,28 +0,0 @@
-attributes = $attributes;
- $this->type = \is_string($type) ? new Identifier($type) : $type;
- }
-
- public function getSubNodeNames() : array {
- return ['type'];
- }
-
- public function getType() : string {
- return 'NullableType';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Param.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Param.php
deleted file mode 100644
index 1e90b794..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Param.php
+++ /dev/null
@@ -1,60 +0,0 @@
-attributes = $attributes;
- $this->type = \is_string($type) ? new Identifier($type) : $type;
- $this->byRef = $byRef;
- $this->variadic = $variadic;
- $this->var = $var;
- $this->default = $default;
- $this->flags = $flags;
- $this->attrGroups = $attrGroups;
- }
-
- public function getSubNodeNames() : array {
- return ['attrGroups', 'flags', 'type', 'byRef', 'variadic', 'var', 'default'];
- }
-
- public function getType() : string {
- return 'Param';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar.php
deleted file mode 100644
index 8117909b..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar.php
+++ /dev/null
@@ -1,7 +0,0 @@
-attributes = $attributes;
- $this->value = $value;
- }
-
- public function getSubNodeNames() : array {
- return ['value'];
- }
-
- /**
- * @internal
- *
- * Parses a DNUMBER token like PHP would.
- *
- * @param string $str A string number
- *
- * @return float The parsed number
- */
- public static function parse(string $str) : float {
- $str = str_replace('_', '', $str);
-
- // if string contains any of .eE just cast it to float
- if (false !== strpbrk($str, '.eE')) {
- return (float) $str;
- }
-
- // otherwise it's an integer notation that overflowed into a float
- // if it starts with 0 it's one of the special integer notations
- if ('0' === $str[0]) {
- // hex
- if ('x' === $str[1] || 'X' === $str[1]) {
- return hexdec($str);
- }
-
- // bin
- if ('b' === $str[1] || 'B' === $str[1]) {
- return bindec($str);
- }
-
- // oct
- // substr($str, 0, strcspn($str, '89')) cuts the string at the first invalid digit (8 or 9)
- // so that only the digits before that are used
- return octdec(substr($str, 0, strcspn($str, '89')));
- }
-
- // dec
- return (float) $str;
- }
-
- public function getType() : string {
- return 'Scalar_DNumber';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php
deleted file mode 100644
index fa5d2e26..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php
+++ /dev/null
@@ -1,31 +0,0 @@
-attributes = $attributes;
- $this->parts = $parts;
- }
-
- public function getSubNodeNames() : array {
- return ['parts'];
- }
-
- public function getType() : string {
- return 'Scalar_Encapsed';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php
deleted file mode 100644
index bb3194c1..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->value = $value;
- }
-
- public function getSubNodeNames() : array {
- return ['value'];
- }
-
- public function getType() : string {
- return 'Scalar_EncapsedStringPart';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php
deleted file mode 100644
index f17dd1f8..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php
+++ /dev/null
@@ -1,78 +0,0 @@
-attributes = $attributes;
- $this->value = $value;
- }
-
- public function getSubNodeNames() : array {
- return ['value'];
- }
-
- /**
- * Constructs an LNumber node from a string number literal.
- *
- * @param string $str String number literal (decimal, octal, hex or binary)
- * @param array $attributes Additional attributes
- * @param bool $allowInvalidOctal Whether to allow invalid octal numbers (PHP 5)
- *
- * @return LNumber The constructed LNumber, including kind attribute
- */
- public static function fromString(string $str, array $attributes = [], bool $allowInvalidOctal = false) : LNumber {
- $str = str_replace('_', '', $str);
-
- if ('0' !== $str[0] || '0' === $str) {
- $attributes['kind'] = LNumber::KIND_DEC;
- return new LNumber((int) $str, $attributes);
- }
-
- if ('x' === $str[1] || 'X' === $str[1]) {
- $attributes['kind'] = LNumber::KIND_HEX;
- return new LNumber(hexdec($str), $attributes);
- }
-
- if ('b' === $str[1] || 'B' === $str[1]) {
- $attributes['kind'] = LNumber::KIND_BIN;
- return new LNumber(bindec($str), $attributes);
- }
-
- if (!$allowInvalidOctal && strpbrk($str, '89')) {
- throw new Error('Invalid numeric literal', $attributes);
- }
-
- // Strip optional explicit octal prefix.
- if ('o' === $str[1] || 'O' === $str[1]) {
- $str = substr($str, 2);
- }
-
- // use intval instead of octdec to get proper cutting behavior with malformed numbers
- $attributes['kind'] = LNumber::KIND_OCT;
- return new LNumber(intval($str, 8), $attributes);
- }
-
- public function getType() : string {
- return 'Scalar_LNumber';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php
deleted file mode 100644
index 941f0c76..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php
+++ /dev/null
@@ -1,28 +0,0 @@
-attributes = $attributes;
- }
-
- public function getSubNodeNames() : array {
- return [];
- }
-
- /**
- * Get name of magic constant.
- *
- * @return string Name of magic constant
- */
- abstract public function getName() : string;
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php
deleted file mode 100644
index 24432847..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php
+++ /dev/null
@@ -1,16 +0,0 @@
- '\\',
- '$' => '$',
- 'n' => "\n",
- 'r' => "\r",
- 't' => "\t",
- 'f' => "\f",
- 'v' => "\v",
- 'e' => "\x1B",
- ];
-
- /**
- * Constructs a string scalar node.
- *
- * @param string $value Value of the string
- * @param array $attributes Additional attributes
- */
- public function __construct(string $value, array $attributes = []) {
- $this->attributes = $attributes;
- $this->value = $value;
- }
-
- public function getSubNodeNames() : array {
- return ['value'];
- }
-
- /**
- * @internal
- *
- * Parses a string token.
- *
- * @param string $str String token content
- * @param bool $parseUnicodeEscape Whether to parse PHP 7 \u escapes
- *
- * @return string The parsed string
- */
- public static function parse(string $str, bool $parseUnicodeEscape = true) : string {
- $bLength = 0;
- if ('b' === $str[0] || 'B' === $str[0]) {
- $bLength = 1;
- }
-
- if ('\'' === $str[$bLength]) {
- return str_replace(
- ['\\\\', '\\\''],
- ['\\', '\''],
- substr($str, $bLength + 1, -1)
- );
- } else {
- return self::parseEscapeSequences(
- substr($str, $bLength + 1, -1), '"', $parseUnicodeEscape
- );
- }
- }
-
- /**
- * @internal
- *
- * Parses escape sequences in strings (all string types apart from single quoted).
- *
- * @param string $str String without quotes
- * @param null|string $quote Quote type
- * @param bool $parseUnicodeEscape Whether to parse PHP 7 \u escapes
- *
- * @return string String with escape sequences parsed
- */
- public static function parseEscapeSequences(string $str, $quote, bool $parseUnicodeEscape = true) : string {
- if (null !== $quote) {
- $str = str_replace('\\' . $quote, $quote, $str);
- }
-
- $extra = '';
- if ($parseUnicodeEscape) {
- $extra = '|u\{([0-9a-fA-F]+)\}';
- }
-
- return preg_replace_callback(
- '~\\\\([\\\\$nrtfve]|[xX][0-9a-fA-F]{1,2}|[0-7]{1,3}' . $extra . ')~',
- function($matches) {
- $str = $matches[1];
-
- if (isset(self::$replacements[$str])) {
- return self::$replacements[$str];
- } elseif ('x' === $str[0] || 'X' === $str[0]) {
- return chr(hexdec(substr($str, 1)));
- } elseif ('u' === $str[0]) {
- return self::codePointToUtf8(hexdec($matches[2]));
- } else {
- return chr(octdec($str));
- }
- },
- $str
- );
- }
-
- /**
- * Converts a Unicode code point to its UTF-8 encoded representation.
- *
- * @param int $num Code point
- *
- * @return string UTF-8 representation of code point
- */
- private static function codePointToUtf8(int $num) : string {
- if ($num <= 0x7F) {
- return chr($num);
- }
- if ($num <= 0x7FF) {
- return chr(($num>>6) + 0xC0) . chr(($num&0x3F) + 0x80);
- }
- if ($num <= 0xFFFF) {
- return chr(($num>>12) + 0xE0) . chr((($num>>6)&0x3F) + 0x80) . chr(($num&0x3F) + 0x80);
- }
- if ($num <= 0x1FFFFF) {
- return chr(($num>>18) + 0xF0) . chr((($num>>12)&0x3F) + 0x80)
- . chr((($num>>6)&0x3F) + 0x80) . chr(($num&0x3F) + 0x80);
- }
- throw new Error('Invalid UTF-8 codepoint escape sequence: Codepoint too large');
- }
-
- public function getType() : string {
- return 'Scalar_String';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt.php
deleted file mode 100644
index 69d33e57..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt.php
+++ /dev/null
@@ -1,9 +0,0 @@
-attributes = $attributes;
- $this->num = $num;
- }
-
- public function getSubNodeNames() : array {
- return ['num'];
- }
-
- public function getType() : string {
- return 'Stmt_Break';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php
deleted file mode 100644
index 2bf044c9..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php
+++ /dev/null
@@ -1,34 +0,0 @@
-attributes = $attributes;
- $this->cond = $cond;
- $this->stmts = $stmts;
- }
-
- public function getSubNodeNames() : array {
- return ['cond', 'stmts'];
- }
-
- public function getType() : string {
- return 'Stmt_Case';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php
deleted file mode 100644
index 9b9c0947..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php
+++ /dev/null
@@ -1,41 +0,0 @@
-attributes = $attributes;
- $this->types = $types;
- $this->var = $var;
- $this->stmts = $stmts;
- }
-
- public function getSubNodeNames() : array {
- return ['types', 'var', 'stmts'];
- }
-
- public function getType() : string {
- return 'Stmt_Catch';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php
deleted file mode 100644
index 1fc7f336..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php
+++ /dev/null
@@ -1,80 +0,0 @@
-attributes = $attributes;
- $this->flags = $flags;
- $this->consts = $consts;
- $this->attrGroups = $attrGroups;
- }
-
- public function getSubNodeNames() : array {
- return ['attrGroups', 'flags', 'consts'];
- }
-
- /**
- * Whether constant is explicitly or implicitly public.
- *
- * @return bool
- */
- public function isPublic() : bool {
- return ($this->flags & Class_::MODIFIER_PUBLIC) !== 0
- || ($this->flags & Class_::VISIBILITY_MODIFIER_MASK) === 0;
- }
-
- /**
- * Whether constant is protected.
- *
- * @return bool
- */
- public function isProtected() : bool {
- return (bool) ($this->flags & Class_::MODIFIER_PROTECTED);
- }
-
- /**
- * Whether constant is private.
- *
- * @return bool
- */
- public function isPrivate() : bool {
- return (bool) ($this->flags & Class_::MODIFIER_PRIVATE);
- }
-
- /**
- * Whether constant is final.
- *
- * @return bool
- */
- public function isFinal() : bool {
- return (bool) ($this->flags & Class_::MODIFIER_FINAL);
- }
-
- public function getType() : string {
- return 'Stmt_ClassConst';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php
deleted file mode 100644
index 6c336917..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php
+++ /dev/null
@@ -1,109 +0,0 @@
-stmts as $stmt) {
- if ($stmt instanceof TraitUse) {
- $traitUses[] = $stmt;
- }
- }
- return $traitUses;
- }
-
- /**
- * @return ClassConst[]
- */
- public function getConstants() : array {
- $constants = [];
- foreach ($this->stmts as $stmt) {
- if ($stmt instanceof ClassConst) {
- $constants[] = $stmt;
- }
- }
- return $constants;
- }
-
- /**
- * @return Property[]
- */
- public function getProperties() : array {
- $properties = [];
- foreach ($this->stmts as $stmt) {
- if ($stmt instanceof Property) {
- $properties[] = $stmt;
- }
- }
- return $properties;
- }
-
- /**
- * Gets property with the given name defined directly in this class/interface/trait.
- *
- * @param string $name Name of the property
- *
- * @return Property|null Property node or null if the property does not exist
- */
- public function getProperty(string $name) {
- foreach ($this->stmts as $stmt) {
- if ($stmt instanceof Property) {
- foreach ($stmt->props as $prop) {
- if ($prop instanceof PropertyProperty && $name === $prop->name->toString()) {
- return $stmt;
- }
- }
- }
- }
- return null;
- }
-
- /**
- * Gets all methods defined directly in this class/interface/trait
- *
- * @return ClassMethod[]
- */
- public function getMethods() : array {
- $methods = [];
- foreach ($this->stmts as $stmt) {
- if ($stmt instanceof ClassMethod) {
- $methods[] = $stmt;
- }
- }
- return $methods;
- }
-
- /**
- * Gets method with the given name defined directly in this class/interface/trait.
- *
- * @param string $name Name of the method (compared case-insensitively)
- *
- * @return ClassMethod|null Method node or null if the method does not exist
- */
- public function getMethod(string $name) {
- $lowerName = strtolower($name);
- foreach ($this->stmts as $stmt) {
- if ($stmt instanceof ClassMethod && $lowerName === $stmt->name->toLowerString()) {
- return $stmt;
- }
- }
- return null;
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php
deleted file mode 100644
index 09b877a9..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php
+++ /dev/null
@@ -1,159 +0,0 @@
- true,
- '__destruct' => true,
- '__call' => true,
- '__callstatic' => true,
- '__get' => true,
- '__set' => true,
- '__isset' => true,
- '__unset' => true,
- '__sleep' => true,
- '__wakeup' => true,
- '__tostring' => true,
- '__set_state' => true,
- '__clone' => true,
- '__invoke' => true,
- '__debuginfo' => true,
- ];
-
- /**
- * Constructs a class method node.
- *
- * @param string|Node\Identifier $name Name
- * @param array $subNodes Array of the following optional subnodes:
- * 'flags => MODIFIER_PUBLIC: Flags
- * 'byRef' => false : Whether to return by reference
- * 'params' => array() : Parameters
- * 'returnType' => null : Return type
- * 'stmts' => array() : Statements
- * 'attrGroups' => array() : PHP attribute groups
- * @param array $attributes Additional attributes
- */
- public function __construct($name, array $subNodes = [], array $attributes = []) {
- $this->attributes = $attributes;
- $this->flags = $subNodes['flags'] ?? $subNodes['type'] ?? 0;
- $this->byRef = $subNodes['byRef'] ?? false;
- $this->name = \is_string($name) ? new Node\Identifier($name) : $name;
- $this->params = $subNodes['params'] ?? [];
- $returnType = $subNodes['returnType'] ?? null;
- $this->returnType = \is_string($returnType) ? new Node\Identifier($returnType) : $returnType;
- $this->stmts = array_key_exists('stmts', $subNodes) ? $subNodes['stmts'] : [];
- $this->attrGroups = $subNodes['attrGroups'] ?? [];
- }
-
- public function getSubNodeNames() : array {
- return ['attrGroups', 'flags', 'byRef', 'name', 'params', 'returnType', 'stmts'];
- }
-
- public function returnsByRef() : bool {
- return $this->byRef;
- }
-
- public function getParams() : array {
- return $this->params;
- }
-
- public function getReturnType() {
- return $this->returnType;
- }
-
- public function getStmts() {
- return $this->stmts;
- }
-
- public function getAttrGroups() : array {
- return $this->attrGroups;
- }
-
- /**
- * Whether the method is explicitly or implicitly public.
- *
- * @return bool
- */
- public function isPublic() : bool {
- return ($this->flags & Class_::MODIFIER_PUBLIC) !== 0
- || ($this->flags & Class_::VISIBILITY_MODIFIER_MASK) === 0;
- }
-
- /**
- * Whether the method is protected.
- *
- * @return bool
- */
- public function isProtected() : bool {
- return (bool) ($this->flags & Class_::MODIFIER_PROTECTED);
- }
-
- /**
- * Whether the method is private.
- *
- * @return bool
- */
- public function isPrivate() : bool {
- return (bool) ($this->flags & Class_::MODIFIER_PRIVATE);
- }
-
- /**
- * Whether the method is abstract.
- *
- * @return bool
- */
- public function isAbstract() : bool {
- return (bool) ($this->flags & Class_::MODIFIER_ABSTRACT);
- }
-
- /**
- * Whether the method is final.
- *
- * @return bool
- */
- public function isFinal() : bool {
- return (bool) ($this->flags & Class_::MODIFIER_FINAL);
- }
-
- /**
- * Whether the method is static.
- *
- * @return bool
- */
- public function isStatic() : bool {
- return (bool) ($this->flags & Class_::MODIFIER_STATIC);
- }
-
- /**
- * Whether the method is magic.
- *
- * @return bool
- */
- public function isMagic() : bool {
- return isset(self::$magicNames[$this->name->toLowerString()]);
- }
-
- public function getType() : string {
- return 'Stmt_ClassMethod';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php
deleted file mode 100644
index b290aaf6..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php
+++ /dev/null
@@ -1,112 +0,0 @@
- 0 : Flags
- * 'extends' => null : Name of extended class
- * 'implements' => array(): Names of implemented interfaces
- * 'stmts' => array(): Statements
- * 'attrGroups' => array(): PHP attribute groups
- * @param array $attributes Additional attributes
- */
- public function __construct($name, array $subNodes = [], array $attributes = []) {
- $this->attributes = $attributes;
- $this->flags = $subNodes['flags'] ?? $subNodes['type'] ?? 0;
- $this->name = \is_string($name) ? new Node\Identifier($name) : $name;
- $this->extends = $subNodes['extends'] ?? null;
- $this->implements = $subNodes['implements'] ?? [];
- $this->stmts = $subNodes['stmts'] ?? [];
- $this->attrGroups = $subNodes['attrGroups'] ?? [];
- }
-
- public function getSubNodeNames() : array {
- return ['attrGroups', 'flags', 'name', 'extends', 'implements', 'stmts'];
- }
-
- /**
- * Whether the class is explicitly abstract.
- *
- * @return bool
- */
- public function isAbstract() : bool {
- return (bool) ($this->flags & self::MODIFIER_ABSTRACT);
- }
-
- /**
- * Whether the class is final.
- *
- * @return bool
- */
- public function isFinal() : bool {
- return (bool) ($this->flags & self::MODIFIER_FINAL);
- }
-
- /**
- * Whether the class is anonymous.
- *
- * @return bool
- */
- public function isAnonymous() : bool {
- return null === $this->name;
- }
-
- /**
- * @internal
- */
- public static function verifyModifier($a, $b) {
- if ($a & self::VISIBILITY_MODIFIER_MASK && $b & self::VISIBILITY_MODIFIER_MASK) {
- throw new Error('Multiple access type modifiers are not allowed');
- }
-
- if ($a & self::MODIFIER_ABSTRACT && $b & self::MODIFIER_ABSTRACT) {
- throw new Error('Multiple abstract modifiers are not allowed');
- }
-
- if ($a & self::MODIFIER_STATIC && $b & self::MODIFIER_STATIC) {
- throw new Error('Multiple static modifiers are not allowed');
- }
-
- if ($a & self::MODIFIER_FINAL && $b & self::MODIFIER_FINAL) {
- throw new Error('Multiple final modifiers are not allowed');
- }
-
- if ($a & self::MODIFIER_READONLY && $b & self::MODIFIER_READONLY) {
- throw new Error('Multiple readonly modifiers are not allowed');
- }
-
- if ($a & 48 && $b & 48) {
- throw new Error('Cannot use the final modifier on an abstract class member');
- }
- }
-
- public function getType() : string {
- return 'Stmt_Class';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php
deleted file mode 100644
index e6316345..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->consts = $consts;
- }
-
- public function getSubNodeNames() : array {
- return ['consts'];
- }
-
- public function getType() : string {
- return 'Stmt_Const';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php
deleted file mode 100644
index 24882683..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->num = $num;
- }
-
- public function getSubNodeNames() : array {
- return ['num'];
- }
-
- public function getType() : string {
- return 'Stmt_Continue';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php
deleted file mode 100644
index ac07f30c..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php
+++ /dev/null
@@ -1,34 +0,0 @@
-value pair node.
- *
- * @param string|Node\Identifier $key Key
- * @param Node\Expr $value Value
- * @param array $attributes Additional attributes
- */
- public function __construct($key, Node\Expr $value, array $attributes = []) {
- $this->attributes = $attributes;
- $this->key = \is_string($key) ? new Node\Identifier($key) : $key;
- $this->value = $value;
- }
-
- public function getSubNodeNames() : array {
- return ['key', 'value'];
- }
-
- public function getType() : string {
- return 'Stmt_DeclareDeclare';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php
deleted file mode 100644
index f46ff0ba..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php
+++ /dev/null
@@ -1,34 +0,0 @@
-attributes = $attributes;
- $this->declares = $declares;
- $this->stmts = $stmts;
- }
-
- public function getSubNodeNames() : array {
- return ['declares', 'stmts'];
- }
-
- public function getType() : string {
- return 'Stmt_Declare';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php
deleted file mode 100644
index 78e90da0..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php
+++ /dev/null
@@ -1,34 +0,0 @@
-attributes = $attributes;
- $this->cond = $cond;
- $this->stmts = $stmts;
- }
-
- public function getSubNodeNames() : array {
- return ['stmts', 'cond'];
- }
-
- public function getType() : string {
- return 'Stmt_Do';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php
deleted file mode 100644
index 7cc50d5d..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->exprs = $exprs;
- }
-
- public function getSubNodeNames() : array {
- return ['exprs'];
- }
-
- public function getType() : string {
- return 'Stmt_Echo';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php
deleted file mode 100644
index eef1ece3..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php
+++ /dev/null
@@ -1,34 +0,0 @@
-attributes = $attributes;
- $this->cond = $cond;
- $this->stmts = $stmts;
- }
-
- public function getSubNodeNames() : array {
- return ['cond', 'stmts'];
- }
-
- public function getType() : string {
- return 'Stmt_ElseIf';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php
deleted file mode 100644
index 0e61778e..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->stmts = $stmts;
- }
-
- public function getSubNodeNames() : array {
- return ['stmts'];
- }
-
- public function getType() : string {
- return 'Stmt_Else';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php
deleted file mode 100644
index 5beff8b3..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php
+++ /dev/null
@@ -1,37 +0,0 @@
-name = \is_string($name) ? new Node\Identifier($name) : $name;
- $this->expr = $expr;
- $this->attrGroups = $attrGroups;
- }
-
- public function getSubNodeNames() : array {
- return ['attrGroups', 'name', 'expr'];
- }
-
- public function getType() : string {
- return 'Stmt_EnumCase';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php
deleted file mode 100644
index 3a50c225..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php
+++ /dev/null
@@ -1,40 +0,0 @@
- null : Scalar type
- * 'implements' => array() : Names of implemented interfaces
- * 'stmts' => array() : Statements
- * 'attrGroups' => array() : PHP attribute groups
- * @param array $attributes Additional attributes
- */
- public function __construct($name, array $subNodes = [], array $attributes = []) {
- $this->name = \is_string($name) ? new Node\Identifier($name) : $name;
- $this->scalarType = $subNodes['scalarType'] ?? null;
- $this->implements = $subNodes['implements'] ?? [];
- $this->stmts = $subNodes['stmts'] ?? [];
- $this->attrGroups = $subNodes['attrGroups'] ?? [];
-
- parent::__construct($attributes);
- }
-
- public function getSubNodeNames() : array {
- return ['attrGroups', 'name', 'scalarType', 'implements', 'stmts'];
- }
-
- public function getType() : string {
- return 'Stmt_Enum';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php
deleted file mode 100644
index 99d1687d..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php
+++ /dev/null
@@ -1,33 +0,0 @@
-attributes = $attributes;
- $this->expr = $expr;
- }
-
- public function getSubNodeNames() : array {
- return ['expr'];
- }
-
- public function getType() : string {
- return 'Stmt_Expression';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php
deleted file mode 100644
index d55b8b68..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->stmts = $stmts;
- }
-
- public function getSubNodeNames() : array {
- return ['stmts'];
- }
-
- public function getType() : string {
- return 'Stmt_Finally';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php
deleted file mode 100644
index 1323d37c..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php
+++ /dev/null
@@ -1,43 +0,0 @@
- array(): Init expressions
- * 'cond' => array(): Loop conditions
- * 'loop' => array(): Loop expressions
- * 'stmts' => array(): Statements
- * @param array $attributes Additional attributes
- */
- public function __construct(array $subNodes = [], array $attributes = []) {
- $this->attributes = $attributes;
- $this->init = $subNodes['init'] ?? [];
- $this->cond = $subNodes['cond'] ?? [];
- $this->loop = $subNodes['loop'] ?? [];
- $this->stmts = $subNodes['stmts'] ?? [];
- }
-
- public function getSubNodeNames() : array {
- return ['init', 'cond', 'loop', 'stmts'];
- }
-
- public function getType() : string {
- return 'Stmt_For';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php
deleted file mode 100644
index 0556a7ce..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php
+++ /dev/null
@@ -1,47 +0,0 @@
- null : Variable to assign key to
- * 'byRef' => false : Whether to assign value by reference
- * 'stmts' => array(): Statements
- * @param array $attributes Additional attributes
- */
- public function __construct(Node\Expr $expr, Node\Expr $valueVar, array $subNodes = [], array $attributes = []) {
- $this->attributes = $attributes;
- $this->expr = $expr;
- $this->keyVar = $subNodes['keyVar'] ?? null;
- $this->byRef = $subNodes['byRef'] ?? false;
- $this->valueVar = $valueVar;
- $this->stmts = $subNodes['stmts'] ?? [];
- }
-
- public function getSubNodeNames() : array {
- return ['expr', 'keyVar', 'byRef', 'valueVar', 'stmts'];
- }
-
- public function getType() : string {
- return 'Stmt_Foreach';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php
deleted file mode 100644
index abb7ee5c..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php
+++ /dev/null
@@ -1,77 +0,0 @@
- false : Whether to return by reference
- * 'params' => array(): Parameters
- * 'returnType' => null : Return type
- * 'stmts' => array(): Statements
- * 'attrGroups' => array(): PHP attribute groups
- * @param array $attributes Additional attributes
- */
- public function __construct($name, array $subNodes = [], array $attributes = []) {
- $this->attributes = $attributes;
- $this->byRef = $subNodes['byRef'] ?? false;
- $this->name = \is_string($name) ? new Node\Identifier($name) : $name;
- $this->params = $subNodes['params'] ?? [];
- $returnType = $subNodes['returnType'] ?? null;
- $this->returnType = \is_string($returnType) ? new Node\Identifier($returnType) : $returnType;
- $this->stmts = $subNodes['stmts'] ?? [];
- $this->attrGroups = $subNodes['attrGroups'] ?? [];
- }
-
- public function getSubNodeNames() : array {
- return ['attrGroups', 'byRef', 'name', 'params', 'returnType', 'stmts'];
- }
-
- public function returnsByRef() : bool {
- return $this->byRef;
- }
-
- public function getParams() : array {
- return $this->params;
- }
-
- public function getReturnType() {
- return $this->returnType;
- }
-
- public function getAttrGroups() : array {
- return $this->attrGroups;
- }
-
- /** @return Node\Stmt[] */
- public function getStmts() : array {
- return $this->stmts;
- }
-
- public function getType() : string {
- return 'Stmt_Function';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php
deleted file mode 100644
index a0022ad9..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->vars = $vars;
- }
-
- public function getSubNodeNames() : array {
- return ['vars'];
- }
-
- public function getType() : string {
- return 'Stmt_Global';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php
deleted file mode 100644
index 24a57f78..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php
+++ /dev/null
@@ -1,31 +0,0 @@
-attributes = $attributes;
- $this->name = \is_string($name) ? new Identifier($name) : $name;
- }
-
- public function getSubNodeNames() : array {
- return ['name'];
- }
-
- public function getType() : string {
- return 'Stmt_Goto';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php
deleted file mode 100644
index 24520d22..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php
+++ /dev/null
@@ -1,39 +0,0 @@
-attributes = $attributes;
- $this->type = $type;
- $this->prefix = $prefix;
- $this->uses = $uses;
- }
-
- public function getSubNodeNames() : array {
- return ['type', 'prefix', 'uses'];
- }
-
- public function getType() : string {
- return 'Stmt_GroupUse';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php
deleted file mode 100644
index 8e624e0f..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->remaining = $remaining;
- }
-
- public function getSubNodeNames() : array {
- return ['remaining'];
- }
-
- public function getType() : string {
- return 'Stmt_HaltCompiler';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php
deleted file mode 100644
index a1bae4bf..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php
+++ /dev/null
@@ -1,43 +0,0 @@
- array(): Statements
- * 'elseifs' => array(): Elseif clauses
- * 'else' => null : Else clause
- * @param array $attributes Additional attributes
- */
- public function __construct(Node\Expr $cond, array $subNodes = [], array $attributes = []) {
- $this->attributes = $attributes;
- $this->cond = $cond;
- $this->stmts = $subNodes['stmts'] ?? [];
- $this->elseifs = $subNodes['elseifs'] ?? [];
- $this->else = $subNodes['else'] ?? null;
- }
-
- public function getSubNodeNames() : array {
- return ['cond', 'stmts', 'elseifs', 'else'];
- }
-
- public function getType() : string {
- return 'Stmt_If';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php
deleted file mode 100644
index 0711d284..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->value = $value;
- }
-
- public function getSubNodeNames() : array {
- return ['value'];
- }
-
- public function getType() : string {
- return 'Stmt_InlineHTML';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php
deleted file mode 100644
index 4d587dd4..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php
+++ /dev/null
@@ -1,37 +0,0 @@
- array(): Name of extended interfaces
- * 'stmts' => array(): Statements
- * 'attrGroups' => array(): PHP attribute groups
- * @param array $attributes Additional attributes
- */
- public function __construct($name, array $subNodes = [], array $attributes = []) {
- $this->attributes = $attributes;
- $this->name = \is_string($name) ? new Node\Identifier($name) : $name;
- $this->extends = $subNodes['extends'] ?? [];
- $this->stmts = $subNodes['stmts'] ?? [];
- $this->attrGroups = $subNodes['attrGroups'] ?? [];
- }
-
- public function getSubNodeNames() : array {
- return ['attrGroups', 'name', 'extends', 'stmts'];
- }
-
- public function getType() : string {
- return 'Stmt_Interface';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php
deleted file mode 100644
index 3edcb3be..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php
+++ /dev/null
@@ -1,31 +0,0 @@
-attributes = $attributes;
- $this->name = \is_string($name) ? new Identifier($name) : $name;
- }
-
- public function getSubNodeNames() : array {
- return ['name'];
- }
-
- public function getType() : string {
- return 'Stmt_Label';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php
deleted file mode 100644
index c6320457..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php
+++ /dev/null
@@ -1,38 +0,0 @@
-attributes = $attributes;
- $this->name = $name;
- $this->stmts = $stmts;
- }
-
- public function getSubNodeNames() : array {
- return ['name', 'stmts'];
- }
-
- public function getType() : string {
- return 'Stmt_Namespace';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php
deleted file mode 100644
index f86f8df7..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php
+++ /dev/null
@@ -1,17 +0,0 @@
-attributes = $attributes;
- $this->flags = $flags;
- $this->props = $props;
- $this->type = \is_string($type) ? new Identifier($type) : $type;
- $this->attrGroups = $attrGroups;
- }
-
- public function getSubNodeNames() : array {
- return ['attrGroups', 'flags', 'type', 'props'];
- }
-
- /**
- * Whether the property is explicitly or implicitly public.
- *
- * @return bool
- */
- public function isPublic() : bool {
- return ($this->flags & Class_::MODIFIER_PUBLIC) !== 0
- || ($this->flags & Class_::VISIBILITY_MODIFIER_MASK) === 0;
- }
-
- /**
- * Whether the property is protected.
- *
- * @return bool
- */
- public function isProtected() : bool {
- return (bool) ($this->flags & Class_::MODIFIER_PROTECTED);
- }
-
- /**
- * Whether the property is private.
- *
- * @return bool
- */
- public function isPrivate() : bool {
- return (bool) ($this->flags & Class_::MODIFIER_PRIVATE);
- }
-
- /**
- * Whether the property is static.
- *
- * @return bool
- */
- public function isStatic() : bool {
- return (bool) ($this->flags & Class_::MODIFIER_STATIC);
- }
-
- /**
- * Whether the property is readonly.
- *
- * @return bool
- */
- public function isReadonly() : bool {
- return (bool) ($this->flags & Class_::MODIFIER_READONLY);
- }
-
- public function getType() : string {
- return 'Stmt_Property';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php
deleted file mode 100644
index 205731e2..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php
+++ /dev/null
@@ -1,34 +0,0 @@
-attributes = $attributes;
- $this->name = \is_string($name) ? new Node\VarLikeIdentifier($name) : $name;
- $this->default = $default;
- }
-
- public function getSubNodeNames() : array {
- return ['name', 'default'];
- }
-
- public function getType() : string {
- return 'Stmt_PropertyProperty';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php
deleted file mode 100644
index efc578c5..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->expr = $expr;
- }
-
- public function getSubNodeNames() : array {
- return ['expr'];
- }
-
- public function getType() : string {
- return 'Stmt_Return';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php
deleted file mode 100644
index 29584560..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php
+++ /dev/null
@@ -1,37 +0,0 @@
-attributes = $attributes;
- $this->var = $var;
- $this->default = $default;
- }
-
- public function getSubNodeNames() : array {
- return ['var', 'default'];
- }
-
- public function getType() : string {
- return 'Stmt_StaticVar';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php
deleted file mode 100644
index 464898ff..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->vars = $vars;
- }
-
- public function getSubNodeNames() : array {
- return ['vars'];
- }
-
- public function getType() : string {
- return 'Stmt_Static';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php
deleted file mode 100644
index 2c8dae02..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php
+++ /dev/null
@@ -1,34 +0,0 @@
-attributes = $attributes;
- $this->cond = $cond;
- $this->cases = $cases;
- }
-
- public function getSubNodeNames() : array {
- return ['cond', 'cases'];
- }
-
- public function getType() : string {
- return 'Stmt_Switch';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php
deleted file mode 100644
index a34e2b36..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->expr = $expr;
- }
-
- public function getSubNodeNames() : array {
- return ['expr'];
- }
-
- public function getType() : string {
- return 'Stmt_Throw';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php
deleted file mode 100644
index 9e97053b..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php
+++ /dev/null
@@ -1,34 +0,0 @@
-attributes = $attributes;
- $this->traits = $traits;
- $this->adaptations = $adaptations;
- }
-
- public function getSubNodeNames() : array {
- return ['traits', 'adaptations'];
- }
-
- public function getType() : string {
- return 'Stmt_TraitUse';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php
deleted file mode 100644
index 8bdd2c04..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php
+++ /dev/null
@@ -1,13 +0,0 @@
-attributes = $attributes;
- $this->trait = $trait;
- $this->method = \is_string($method) ? new Node\Identifier($method) : $method;
- $this->newModifier = $newModifier;
- $this->newName = \is_string($newName) ? new Node\Identifier($newName) : $newName;
- }
-
- public function getSubNodeNames() : array {
- return ['trait', 'method', 'newModifier', 'newName'];
- }
-
- public function getType() : string {
- return 'Stmt_TraitUseAdaptation_Alias';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php
deleted file mode 100644
index 80385f64..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php
+++ /dev/null
@@ -1,34 +0,0 @@
-attributes = $attributes;
- $this->trait = $trait;
- $this->method = \is_string($method) ? new Node\Identifier($method) : $method;
- $this->insteadof = $insteadof;
- }
-
- public function getSubNodeNames() : array {
- return ['trait', 'method', 'insteadof'];
- }
-
- public function getType() : string {
- return 'Stmt_TraitUseAdaptation_Precedence';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php
deleted file mode 100644
index 0cec203a..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php
+++ /dev/null
@@ -1,32 +0,0 @@
- array(): Statements
- * 'attrGroups' => array(): PHP attribute groups
- * @param array $attributes Additional attributes
- */
- public function __construct($name, array $subNodes = [], array $attributes = []) {
- $this->attributes = $attributes;
- $this->name = \is_string($name) ? new Node\Identifier($name) : $name;
- $this->stmts = $subNodes['stmts'] ?? [];
- $this->attrGroups = $subNodes['attrGroups'] ?? [];
- }
-
- public function getSubNodeNames() : array {
- return ['attrGroups', 'name', 'stmts'];
- }
-
- public function getType() : string {
- return 'Stmt_Trait';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php
deleted file mode 100644
index 7fc158c5..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php
+++ /dev/null
@@ -1,38 +0,0 @@
-attributes = $attributes;
- $this->stmts = $stmts;
- $this->catches = $catches;
- $this->finally = $finally;
- }
-
- public function getSubNodeNames() : array {
- return ['stmts', 'catches', 'finally'];
- }
-
- public function getType() : string {
- return 'Stmt_TryCatch';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php
deleted file mode 100644
index 310e427a..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php
+++ /dev/null
@@ -1,30 +0,0 @@
-attributes = $attributes;
- $this->vars = $vars;
- }
-
- public function getSubNodeNames() : array {
- return ['vars'];
- }
-
- public function getType() : string {
- return 'Stmt_Unset';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php
deleted file mode 100644
index 32bd7847..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php
+++ /dev/null
@@ -1,52 +0,0 @@
-attributes = $attributes;
- $this->type = $type;
- $this->name = $name;
- $this->alias = \is_string($alias) ? new Identifier($alias) : $alias;
- }
-
- public function getSubNodeNames() : array {
- return ['type', 'name', 'alias'];
- }
-
- /**
- * Get alias. If not explicitly given this is the last component of the used name.
- *
- * @return Identifier
- */
- public function getAlias() : Identifier {
- if (null !== $this->alias) {
- return $this->alias;
- }
-
- return new Identifier($this->name->getLast());
- }
-
- public function getType() : string {
- return 'Stmt_UseUse';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php
deleted file mode 100644
index 8753da31..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php
+++ /dev/null
@@ -1,47 +0,0 @@
-attributes = $attributes;
- $this->type = $type;
- $this->uses = $uses;
- }
-
- public function getSubNodeNames() : array {
- return ['type', 'uses'];
- }
-
- public function getType() : string {
- return 'Stmt_Use';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php
deleted file mode 100644
index f41034f8..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php
+++ /dev/null
@@ -1,34 +0,0 @@
-attributes = $attributes;
- $this->cond = $cond;
- $this->stmts = $stmts;
- }
-
- public function getSubNodeNames() : array {
- return ['cond', 'stmts'];
- }
-
- public function getType() : string {
- return 'Stmt_While';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/UnionType.php b/vendor/nikic/php-parser/lib/PhpParser/Node/UnionType.php
deleted file mode 100644
index 61c2d810..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/UnionType.php
+++ /dev/null
@@ -1,28 +0,0 @@
-attributes = $attributes;
- $this->types = $types;
- }
-
- public function getSubNodeNames() : array {
- return ['types'];
- }
-
- public function getType() : string {
- return 'UnionType';
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php b/vendor/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php
deleted file mode 100644
index a30807a6..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php
+++ /dev/null
@@ -1,17 +0,0 @@
-attributes = $attributes;
- }
-
- public function getType(): string {
- return 'VariadicPlaceholder';
- }
-
- public function getSubNodeNames(): array {
- return [];
- }
-}
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php b/vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php
deleted file mode 100644
index 04514da1..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php
+++ /dev/null
@@ -1,178 +0,0 @@
-attributes = $attributes;
- }
-
- /**
- * Gets line the node started in (alias of getStartLine).
- *
- * @return int Start line (or -1 if not available)
- */
- public function getLine() : int {
- return $this->attributes['startLine'] ?? -1;
- }
-
- /**
- * Gets line the node started in.
- *
- * Requires the 'startLine' attribute to be enabled in the lexer (enabled by default).
- *
- * @return int Start line (or -1 if not available)
- */
- public function getStartLine() : int {
- return $this->attributes['startLine'] ?? -1;
- }
-
- /**
- * Gets the line the node ended in.
- *
- * Requires the 'endLine' attribute to be enabled in the lexer (enabled by default).
- *
- * @return int End line (or -1 if not available)
- */
- public function getEndLine() : int {
- return $this->attributes['endLine'] ?? -1;
- }
-
- /**
- * Gets the token offset of the first token that is part of this node.
- *
- * The offset is an index into the array returned by Lexer::getTokens().
- *
- * Requires the 'startTokenPos' attribute to be enabled in the lexer (DISABLED by default).
- *
- * @return int Token start position (or -1 if not available)
- */
- public function getStartTokenPos() : int {
- return $this->attributes['startTokenPos'] ?? -1;
- }
-
- /**
- * Gets the token offset of the last token that is part of this node.
- *
- * The offset is an index into the array returned by Lexer::getTokens().
- *
- * Requires the 'endTokenPos' attribute to be enabled in the lexer (DISABLED by default).
- *
- * @return int Token end position (or -1 if not available)
- */
- public function getEndTokenPos() : int {
- return $this->attributes['endTokenPos'] ?? -1;
- }
-
- /**
- * Gets the file offset of the first character that is part of this node.
- *
- * Requires the 'startFilePos' attribute to be enabled in the lexer (DISABLED by default).
- *
- * @return int File start position (or -1 if not available)
- */
- public function getStartFilePos() : int {
- return $this->attributes['startFilePos'] ?? -1;
- }
-
- /**
- * Gets the file offset of the last character that is part of this node.
- *
- * Requires the 'endFilePos' attribute to be enabled in the lexer (DISABLED by default).
- *
- * @return int File end position (or -1 if not available)
- */
- public function getEndFilePos() : int {
- return $this->attributes['endFilePos'] ?? -1;
- }
-
- /**
- * Gets all comments directly preceding this node.
- *
- * The comments are also available through the "comments" attribute.
- *
- * @return Comment[]
- */
- public function getComments() : array {
- return $this->attributes['comments'] ?? [];
- }
-
- /**
- * Gets the doc comment of the node.
- *
- * @return null|Comment\Doc Doc comment object or null
- */
- public function getDocComment() {
- $comments = $this->getComments();
- for ($i = count($comments) - 1; $i >= 0; $i--) {
- $comment = $comments[$i];
- if ($comment instanceof Comment\Doc) {
- return $comment;
- }
- }
-
- return null;
- }
-
- /**
- * Sets the doc comment of the node.
- *
- * This will either replace an existing doc comment or add it to the comments array.
- *
- * @param Comment\Doc $docComment Doc comment to set
- */
- public function setDocComment(Comment\Doc $docComment) {
- $comments = $this->getComments();
- for ($i = count($comments) - 1; $i >= 0; $i--) {
- if ($comments[$i] instanceof Comment\Doc) {
- // Replace existing doc comment.
- $comments[$i] = $docComment;
- $this->setAttribute('comments', $comments);
- return;
- }
- }
-
- // Append new doc comment.
- $comments[] = $docComment;
- $this->setAttribute('comments', $comments);
- }
-
- public function setAttribute(string $key, $value) {
- $this->attributes[$key] = $value;
- }
-
- public function hasAttribute(string $key) : bool {
- return array_key_exists($key, $this->attributes);
- }
-
- public function getAttribute(string $key, $default = null) {
- if (array_key_exists($key, $this->attributes)) {
- return $this->attributes[$key];
- }
-
- return $default;
- }
-
- public function getAttributes() : array {
- return $this->attributes;
- }
-
- public function setAttributes(array $attributes) {
- $this->attributes = $attributes;
- }
-
- /**
- * @return array
- */
- public function jsonSerialize() : array {
- return ['nodeType' => $this->getType()] + get_object_vars($this);
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeDumper.php b/vendor/nikic/php-parser/lib/PhpParser/NodeDumper.php
deleted file mode 100644
index ba622efd..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/NodeDumper.php
+++ /dev/null
@@ -1,206 +0,0 @@
-dumpComments = !empty($options['dumpComments']);
- $this->dumpPositions = !empty($options['dumpPositions']);
- }
-
- /**
- * Dumps a node or array.
- *
- * @param array|Node $node Node or array to dump
- * @param string|null $code Code corresponding to dumped AST. This only needs to be passed if
- * the dumpPositions option is enabled and the dumping of node offsets
- * is desired.
- *
- * @return string Dumped value
- */
- public function dump($node, string $code = null) : string {
- $this->code = $code;
- return $this->dumpRecursive($node);
- }
-
- protected function dumpRecursive($node) {
- if ($node instanceof Node) {
- $r = $node->getType();
- if ($this->dumpPositions && null !== $p = $this->dumpPosition($node)) {
- $r .= $p;
- }
- $r .= '(';
-
- foreach ($node->getSubNodeNames() as $key) {
- $r .= "\n " . $key . ': ';
-
- $value = $node->$key;
- if (null === $value) {
- $r .= 'null';
- } elseif (false === $value) {
- $r .= 'false';
- } elseif (true === $value) {
- $r .= 'true';
- } elseif (is_scalar($value)) {
- if ('flags' === $key || 'newModifier' === $key) {
- $r .= $this->dumpFlags($value);
- } elseif ('type' === $key && $node instanceof Include_) {
- $r .= $this->dumpIncludeType($value);
- } elseif ('type' === $key
- && ($node instanceof Use_ || $node instanceof UseUse || $node instanceof GroupUse)) {
- $r .= $this->dumpUseType($value);
- } else {
- $r .= $value;
- }
- } else {
- $r .= str_replace("\n", "\n ", $this->dumpRecursive($value));
- }
- }
-
- if ($this->dumpComments && $comments = $node->getComments()) {
- $r .= "\n comments: " . str_replace("\n", "\n ", $this->dumpRecursive($comments));
- }
- } elseif (is_array($node)) {
- $r = 'array(';
-
- foreach ($node as $key => $value) {
- $r .= "\n " . $key . ': ';
-
- if (null === $value) {
- $r .= 'null';
- } elseif (false === $value) {
- $r .= 'false';
- } elseif (true === $value) {
- $r .= 'true';
- } elseif (is_scalar($value)) {
- $r .= $value;
- } else {
- $r .= str_replace("\n", "\n ", $this->dumpRecursive($value));
- }
- }
- } elseif ($node instanceof Comment) {
- return $node->getReformattedText();
- } else {
- throw new \InvalidArgumentException('Can only dump nodes and arrays.');
- }
-
- return $r . "\n)";
- }
-
- protected function dumpFlags($flags) {
- $strs = [];
- if ($flags & Class_::MODIFIER_PUBLIC) {
- $strs[] = 'MODIFIER_PUBLIC';
- }
- if ($flags & Class_::MODIFIER_PROTECTED) {
- $strs[] = 'MODIFIER_PROTECTED';
- }
- if ($flags & Class_::MODIFIER_PRIVATE) {
- $strs[] = 'MODIFIER_PRIVATE';
- }
- if ($flags & Class_::MODIFIER_ABSTRACT) {
- $strs[] = 'MODIFIER_ABSTRACT';
- }
- if ($flags & Class_::MODIFIER_STATIC) {
- $strs[] = 'MODIFIER_STATIC';
- }
- if ($flags & Class_::MODIFIER_FINAL) {
- $strs[] = 'MODIFIER_FINAL';
- }
- if ($flags & Class_::MODIFIER_READONLY) {
- $strs[] = 'MODIFIER_READONLY';
- }
-
- if ($strs) {
- return implode(' | ', $strs) . ' (' . $flags . ')';
- } else {
- return $flags;
- }
- }
-
- protected function dumpIncludeType($type) {
- $map = [
- Include_::TYPE_INCLUDE => 'TYPE_INCLUDE',
- Include_::TYPE_INCLUDE_ONCE => 'TYPE_INCLUDE_ONCE',
- Include_::TYPE_REQUIRE => 'TYPE_REQUIRE',
- Include_::TYPE_REQUIRE_ONCE => 'TYPE_REQUIRE_ONCE',
- ];
-
- if (!isset($map[$type])) {
- return $type;
- }
- return $map[$type] . ' (' . $type . ')';
- }
-
- protected function dumpUseType($type) {
- $map = [
- Use_::TYPE_UNKNOWN => 'TYPE_UNKNOWN',
- Use_::TYPE_NORMAL => 'TYPE_NORMAL',
- Use_::TYPE_FUNCTION => 'TYPE_FUNCTION',
- Use_::TYPE_CONSTANT => 'TYPE_CONSTANT',
- ];
-
- if (!isset($map[$type])) {
- return $type;
- }
- return $map[$type] . ' (' . $type . ')';
- }
-
- /**
- * Dump node position, if possible.
- *
- * @param Node $node Node for which to dump position
- *
- * @return string|null Dump of position, or null if position information not available
- */
- protected function dumpPosition(Node $node) {
- if (!$node->hasAttribute('startLine') || !$node->hasAttribute('endLine')) {
- return null;
- }
-
- $start = $node->getStartLine();
- $end = $node->getEndLine();
- if ($node->hasAttribute('startFilePos') && $node->hasAttribute('endFilePos')
- && null !== $this->code
- ) {
- $start .= ':' . $this->toColumn($this->code, $node->getStartFilePos());
- $end .= ':' . $this->toColumn($this->code, $node->getEndFilePos());
- }
- return "[$start - $end]";
- }
-
- // Copied from Error class
- private function toColumn($code, $pos) {
- if ($pos > strlen($code)) {
- throw new \RuntimeException('Invalid position information');
- }
-
- $lineStartPos = strrpos($code, "\n", $pos - strlen($code));
- if (false === $lineStartPos) {
- $lineStartPos = -1;
- }
-
- return $pos - $lineStartPos;
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeFinder.php b/vendor/nikic/php-parser/lib/PhpParser/NodeFinder.php
deleted file mode 100644
index 2e7cfdad..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/NodeFinder.php
+++ /dev/null
@@ -1,81 +0,0 @@
-addVisitor($visitor);
- $traverser->traverse($nodes);
-
- return $visitor->getFoundNodes();
- }
-
- /**
- * Find all nodes that are instances of a certain class.
- *
- * @param Node|Node[] $nodes Single node or array of nodes to search in
- * @param string $class Class name
- *
- * @return Node[] Found nodes (all instances of $class)
- */
- public function findInstanceOf($nodes, string $class) : array {
- return $this->find($nodes, function ($node) use ($class) {
- return $node instanceof $class;
- });
- }
-
- /**
- * Find first node satisfying a filter callback.
- *
- * @param Node|Node[] $nodes Single node or array of nodes to search in
- * @param callable $filter Filter callback: function(Node $node) : bool
- *
- * @return null|Node Found node (or null if none found)
- */
- public function findFirst($nodes, callable $filter) {
- if (!is_array($nodes)) {
- $nodes = [$nodes];
- }
-
- $visitor = new FirstFindingVisitor($filter);
-
- $traverser = new NodeTraverser;
- $traverser->addVisitor($visitor);
- $traverser->traverse($nodes);
-
- return $visitor->getFoundNode();
- }
-
- /**
- * Find first node that is an instance of a certain class.
- *
- * @param Node|Node[] $nodes Single node or array of nodes to search in
- * @param string $class Class name
- *
- * @return null|Node Found node, which is an instance of $class (or null if none found)
- */
- public function findFirstInstanceOf($nodes, string $class) {
- return $this->findFirst($nodes, function ($node) use ($class) {
- return $node instanceof $class;
- });
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php b/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php
deleted file mode 100644
index 97d45bda..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php
+++ /dev/null
@@ -1,291 +0,0 @@
-visitors[] = $visitor;
- }
-
- /**
- * Removes an added visitor.
- *
- * @param NodeVisitor $visitor
- */
- public function removeVisitor(NodeVisitor $visitor) {
- foreach ($this->visitors as $index => $storedVisitor) {
- if ($storedVisitor === $visitor) {
- unset($this->visitors[$index]);
- break;
- }
- }
- }
-
- /**
- * Traverses an array of nodes using the registered visitors.
- *
- * @param Node[] $nodes Array of nodes
- *
- * @return Node[] Traversed array of nodes
- */
- public function traverse(array $nodes) : array {
- $this->stopTraversal = false;
-
- foreach ($this->visitors as $visitor) {
- if (null !== $return = $visitor->beforeTraverse($nodes)) {
- $nodes = $return;
- }
- }
-
- $nodes = $this->traverseArray($nodes);
-
- foreach ($this->visitors as $visitor) {
- if (null !== $return = $visitor->afterTraverse($nodes)) {
- $nodes = $return;
- }
- }
-
- return $nodes;
- }
-
- /**
- * Recursively traverse a node.
- *
- * @param Node $node Node to traverse.
- *
- * @return Node Result of traversal (may be original node or new one)
- */
- protected function traverseNode(Node $node) : Node {
- foreach ($node->getSubNodeNames() as $name) {
- $subNode =& $node->$name;
-
- if (\is_array($subNode)) {
- $subNode = $this->traverseArray($subNode);
- if ($this->stopTraversal) {
- break;
- }
- } elseif ($subNode instanceof Node) {
- $traverseChildren = true;
- $breakVisitorIndex = null;
-
- foreach ($this->visitors as $visitorIndex => $visitor) {
- $return = $visitor->enterNode($subNode);
- if (null !== $return) {
- if ($return instanceof Node) {
- $this->ensureReplacementReasonable($subNode, $return);
- $subNode = $return;
- } elseif (self::DONT_TRAVERSE_CHILDREN === $return) {
- $traverseChildren = false;
- } elseif (self::DONT_TRAVERSE_CURRENT_AND_CHILDREN === $return) {
- $traverseChildren = false;
- $breakVisitorIndex = $visitorIndex;
- break;
- } elseif (self::STOP_TRAVERSAL === $return) {
- $this->stopTraversal = true;
- break 2;
- } else {
- throw new \LogicException(
- 'enterNode() returned invalid value of type ' . gettype($return)
- );
- }
- }
- }
-
- if ($traverseChildren) {
- $subNode = $this->traverseNode($subNode);
- if ($this->stopTraversal) {
- break;
- }
- }
-
- foreach ($this->visitors as $visitorIndex => $visitor) {
- $return = $visitor->leaveNode($subNode);
-
- if (null !== $return) {
- if ($return instanceof Node) {
- $this->ensureReplacementReasonable($subNode, $return);
- $subNode = $return;
- } elseif (self::STOP_TRAVERSAL === $return) {
- $this->stopTraversal = true;
- break 2;
- } elseif (\is_array($return)) {
- throw new \LogicException(
- 'leaveNode() may only return an array ' .
- 'if the parent structure is an array'
- );
- } else {
- throw new \LogicException(
- 'leaveNode() returned invalid value of type ' . gettype($return)
- );
- }
- }
-
- if ($breakVisitorIndex === $visitorIndex) {
- break;
- }
- }
- }
- }
-
- return $node;
- }
-
- /**
- * Recursively traverse array (usually of nodes).
- *
- * @param array $nodes Array to traverse
- *
- * @return array Result of traversal (may be original array or changed one)
- */
- protected function traverseArray(array $nodes) : array {
- $doNodes = [];
-
- foreach ($nodes as $i => &$node) {
- if ($node instanceof Node) {
- $traverseChildren = true;
- $breakVisitorIndex = null;
-
- foreach ($this->visitors as $visitorIndex => $visitor) {
- $return = $visitor->enterNode($node);
- if (null !== $return) {
- if ($return instanceof Node) {
- $this->ensureReplacementReasonable($node, $return);
- $node = $return;
- } elseif (self::DONT_TRAVERSE_CHILDREN === $return) {
- $traverseChildren = false;
- } elseif (self::DONT_TRAVERSE_CURRENT_AND_CHILDREN === $return) {
- $traverseChildren = false;
- $breakVisitorIndex = $visitorIndex;
- break;
- } elseif (self::STOP_TRAVERSAL === $return) {
- $this->stopTraversal = true;
- break 2;
- } else {
- throw new \LogicException(
- 'enterNode() returned invalid value of type ' . gettype($return)
- );
- }
- }
- }
-
- if ($traverseChildren) {
- $node = $this->traverseNode($node);
- if ($this->stopTraversal) {
- break;
- }
- }
-
- foreach ($this->visitors as $visitorIndex => $visitor) {
- $return = $visitor->leaveNode($node);
-
- if (null !== $return) {
- if ($return instanceof Node) {
- $this->ensureReplacementReasonable($node, $return);
- $node = $return;
- } elseif (\is_array($return)) {
- $doNodes[] = [$i, $return];
- break;
- } elseif (self::REMOVE_NODE === $return) {
- $doNodes[] = [$i, []];
- break;
- } elseif (self::STOP_TRAVERSAL === $return) {
- $this->stopTraversal = true;
- break 2;
- } elseif (false === $return) {
- throw new \LogicException(
- 'bool(false) return from leaveNode() no longer supported. ' .
- 'Return NodeTraverser::REMOVE_NODE instead'
- );
- } else {
- throw new \LogicException(
- 'leaveNode() returned invalid value of type ' . gettype($return)
- );
- }
- }
-
- if ($breakVisitorIndex === $visitorIndex) {
- break;
- }
- }
- } elseif (\is_array($node)) {
- throw new \LogicException('Invalid node structure: Contains nested arrays');
- }
- }
-
- if (!empty($doNodes)) {
- while (list($i, $replace) = array_pop($doNodes)) {
- array_splice($nodes, $i, 1, $replace);
- }
- }
-
- return $nodes;
- }
-
- private function ensureReplacementReasonable($old, $new) {
- if ($old instanceof Node\Stmt && $new instanceof Node\Expr) {
- throw new \LogicException(
- "Trying to replace statement ({$old->getType()}) " .
- "with expression ({$new->getType()}). Are you missing a " .
- "Stmt_Expression wrapper?"
- );
- }
-
- if ($old instanceof Node\Expr && $new instanceof Node\Stmt) {
- throw new \LogicException(
- "Trying to replace expression ({$old->getType()}) " .
- "with statement ({$new->getType()})"
- );
- }
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php b/vendor/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php
deleted file mode 100644
index 77ff3d27..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php
+++ /dev/null
@@ -1,29 +0,0 @@
- $node stays as-is
- * * NodeTraverser::DONT_TRAVERSE_CHILDREN
- * => Children of $node are not traversed. $node stays as-is
- * * NodeTraverser::STOP_TRAVERSAL
- * => Traversal is aborted. $node stays as-is
- * * otherwise
- * => $node is set to the return value
- *
- * @param Node $node Node
- *
- * @return null|int|Node Replacement node (or special return value)
- */
- public function enterNode(Node $node);
-
- /**
- * Called when leaving a node.
- *
- * Return value semantics:
- * * null
- * => $node stays as-is
- * * NodeTraverser::REMOVE_NODE
- * => $node is removed from the parent array
- * * NodeTraverser::STOP_TRAVERSAL
- * => Traversal is aborted. $node stays as-is
- * * array (of Nodes)
- * => The return value is merged into the parent array (at the position of the $node)
- * * otherwise
- * => $node is set to the return value
- *
- * @param Node $node Node
- *
- * @return null|int|Node|Node[] Replacement node (or special return value)
- */
- public function leaveNode(Node $node);
-
- /**
- * Called once after traversal.
- *
- * Return value semantics:
- * * null: $nodes stays as-is
- * * otherwise: $nodes is set to the return value
- *
- * @param Node[] $nodes Array of nodes
- *
- * @return null|Node[] Array of nodes
- */
- public function afterTraverse(array $nodes);
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php
deleted file mode 100644
index a85fa493..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php
+++ /dev/null
@@ -1,20 +0,0 @@
-setAttribute('origNode', $origNode);
- return $node;
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php
deleted file mode 100644
index 9531edbc..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php
+++ /dev/null
@@ -1,48 +0,0 @@
-filterCallback = $filterCallback;
- }
-
- /**
- * Get found nodes satisfying the filter callback.
- *
- * Nodes are returned in pre-order.
- *
- * @return Node[] Found nodes
- */
- public function getFoundNodes() : array {
- return $this->foundNodes;
- }
-
- public function beforeTraverse(array $nodes) {
- $this->foundNodes = [];
-
- return null;
- }
-
- public function enterNode(Node $node) {
- $filterCallback = $this->filterCallback;
- if ($filterCallback($node)) {
- $this->foundNodes[] = $node;
- }
-
- return null;
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php
deleted file mode 100644
index 596a7d7f..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php
+++ /dev/null
@@ -1,50 +0,0 @@
-filterCallback = $filterCallback;
- }
-
- /**
- * Get found node satisfying the filter callback.
- *
- * Returns null if no node satisfies the filter callback.
- *
- * @return null|Node Found node (or null if not found)
- */
- public function getFoundNode() {
- return $this->foundNode;
- }
-
- public function beforeTraverse(array $nodes) {
- $this->foundNode = null;
-
- return null;
- }
-
- public function enterNode(Node $node) {
- $filterCallback = $this->filterCallback;
- if ($filterCallback($node)) {
- $this->foundNode = $node;
- return NodeTraverser::STOP_TRAVERSAL;
- }
-
- return null;
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php
deleted file mode 100644
index 8e259c57..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php
+++ /dev/null
@@ -1,257 +0,0 @@
-nameContext = new NameContext($errorHandler ?? new ErrorHandler\Throwing);
- $this->preserveOriginalNames = $options['preserveOriginalNames'] ?? false;
- $this->replaceNodes = $options['replaceNodes'] ?? true;
- }
-
- /**
- * Get name resolution context.
- *
- * @return NameContext
- */
- public function getNameContext() : NameContext {
- return $this->nameContext;
- }
-
- public function beforeTraverse(array $nodes) {
- $this->nameContext->startNamespace();
- return null;
- }
-
- public function enterNode(Node $node) {
- if ($node instanceof Stmt\Namespace_) {
- $this->nameContext->startNamespace($node->name);
- } elseif ($node instanceof Stmt\Use_) {
- foreach ($node->uses as $use) {
- $this->addAlias($use, $node->type, null);
- }
- } elseif ($node instanceof Stmt\GroupUse) {
- foreach ($node->uses as $use) {
- $this->addAlias($use, $node->type, $node->prefix);
- }
- } elseif ($node instanceof Stmt\Class_) {
- if (null !== $node->extends) {
- $node->extends = $this->resolveClassName($node->extends);
- }
-
- foreach ($node->implements as &$interface) {
- $interface = $this->resolveClassName($interface);
- }
-
- $this->resolveAttrGroups($node);
- if (null !== $node->name) {
- $this->addNamespacedName($node);
- }
- } elseif ($node instanceof Stmt\Interface_) {
- foreach ($node->extends as &$interface) {
- $interface = $this->resolveClassName($interface);
- }
-
- $this->resolveAttrGroups($node);
- $this->addNamespacedName($node);
- } elseif ($node instanceof Stmt\Enum_) {
- foreach ($node->implements as &$interface) {
- $interface = $this->resolveClassName($interface);
- }
-
- $this->resolveAttrGroups($node);
- if (null !== $node->name) {
- $this->addNamespacedName($node);
- }
- } elseif ($node instanceof Stmt\Trait_) {
- $this->resolveAttrGroups($node);
- $this->addNamespacedName($node);
- } elseif ($node instanceof Stmt\Function_) {
- $this->resolveSignature($node);
- $this->resolveAttrGroups($node);
- $this->addNamespacedName($node);
- } elseif ($node instanceof Stmt\ClassMethod
- || $node instanceof Expr\Closure
- || $node instanceof Expr\ArrowFunction
- ) {
- $this->resolveSignature($node);
- $this->resolveAttrGroups($node);
- } elseif ($node instanceof Stmt\Property) {
- if (null !== $node->type) {
- $node->type = $this->resolveType($node->type);
- }
- $this->resolveAttrGroups($node);
- } elseif ($node instanceof Stmt\Const_) {
- foreach ($node->consts as $const) {
- $this->addNamespacedName($const);
- }
- } else if ($node instanceof Stmt\ClassConst) {
- $this->resolveAttrGroups($node);
- } else if ($node instanceof Stmt\EnumCase) {
- $this->resolveAttrGroups($node);
- } elseif ($node instanceof Expr\StaticCall
- || $node instanceof Expr\StaticPropertyFetch
- || $node instanceof Expr\ClassConstFetch
- || $node instanceof Expr\New_
- || $node instanceof Expr\Instanceof_
- ) {
- if ($node->class instanceof Name) {
- $node->class = $this->resolveClassName($node->class);
- }
- } elseif ($node instanceof Stmt\Catch_) {
- foreach ($node->types as &$type) {
- $type = $this->resolveClassName($type);
- }
- } elseif ($node instanceof Expr\FuncCall) {
- if ($node->name instanceof Name) {
- $node->name = $this->resolveName($node->name, Stmt\Use_::TYPE_FUNCTION);
- }
- } elseif ($node instanceof Expr\ConstFetch) {
- $node->name = $this->resolveName($node->name, Stmt\Use_::TYPE_CONSTANT);
- } elseif ($node instanceof Stmt\TraitUse) {
- foreach ($node->traits as &$trait) {
- $trait = $this->resolveClassName($trait);
- }
-
- foreach ($node->adaptations as $adaptation) {
- if (null !== $adaptation->trait) {
- $adaptation->trait = $this->resolveClassName($adaptation->trait);
- }
-
- if ($adaptation instanceof Stmt\TraitUseAdaptation\Precedence) {
- foreach ($adaptation->insteadof as &$insteadof) {
- $insteadof = $this->resolveClassName($insteadof);
- }
- }
- }
- }
-
- return null;
- }
-
- private function addAlias(Stmt\UseUse $use, $type, Name $prefix = null) {
- // Add prefix for group uses
- $name = $prefix ? Name::concat($prefix, $use->name) : $use->name;
- // Type is determined either by individual element or whole use declaration
- $type |= $use->type;
-
- $this->nameContext->addAlias(
- $name, (string) $use->getAlias(), $type, $use->getAttributes()
- );
- }
-
- /** @param Stmt\Function_|Stmt\ClassMethod|Expr\Closure $node */
- private function resolveSignature($node) {
- foreach ($node->params as $param) {
- $param->type = $this->resolveType($param->type);
- $this->resolveAttrGroups($param);
- }
- $node->returnType = $this->resolveType($node->returnType);
- }
-
- private function resolveType($node) {
- if ($node instanceof Name) {
- return $this->resolveClassName($node);
- }
- if ($node instanceof Node\NullableType) {
- $node->type = $this->resolveType($node->type);
- return $node;
- }
- if ($node instanceof Node\UnionType || $node instanceof Node\IntersectionType) {
- foreach ($node->types as &$type) {
- $type = $this->resolveType($type);
- }
- return $node;
- }
- return $node;
- }
-
- /**
- * Resolve name, according to name resolver options.
- *
- * @param Name $name Function or constant name to resolve
- * @param int $type One of Stmt\Use_::TYPE_*
- *
- * @return Name Resolved name, or original name with attribute
- */
- protected function resolveName(Name $name, int $type) : Name {
- if (!$this->replaceNodes) {
- $resolvedName = $this->nameContext->getResolvedName($name, $type);
- if (null !== $resolvedName) {
- $name->setAttribute('resolvedName', $resolvedName);
- } else {
- $name->setAttribute('namespacedName', FullyQualified::concat(
- $this->nameContext->getNamespace(), $name, $name->getAttributes()));
- }
- return $name;
- }
-
- if ($this->preserveOriginalNames) {
- // Save the original name
- $originalName = $name;
- $name = clone $originalName;
- $name->setAttribute('originalName', $originalName);
- }
-
- $resolvedName = $this->nameContext->getResolvedName($name, $type);
- if (null !== $resolvedName) {
- return $resolvedName;
- }
-
- // unqualified names inside a namespace cannot be resolved at compile-time
- // add the namespaced version of the name as an attribute
- $name->setAttribute('namespacedName', FullyQualified::concat(
- $this->nameContext->getNamespace(), $name, $name->getAttributes()));
- return $name;
- }
-
- protected function resolveClassName(Name $name) {
- return $this->resolveName($name, Stmt\Use_::TYPE_NORMAL);
- }
-
- protected function addNamespacedName(Node $node) {
- $node->namespacedName = Name::concat(
- $this->nameContext->getNamespace(), (string) $node->name);
- }
-
- protected function resolveAttrGroups(Node $node)
- {
- foreach ($node->attrGroups as $attrGroup) {
- foreach ($attrGroup->attrs as $attr) {
- $attr->name = $this->resolveClassName($attr->name);
- }
- }
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php
deleted file mode 100644
index ea372e5b..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php
+++ /dev/null
@@ -1,52 +0,0 @@
-$node->getAttribute('parent') , the previous
- * node can be accessed through $node->getAttribute('previous'),
- * and the next node can be accessed through $node->getAttribute('next').
- */
-final class NodeConnectingVisitor extends NodeVisitorAbstract
-{
- /**
- * @var Node[]
- */
- private $stack = [];
-
- /**
- * @var ?Node
- */
- private $previous;
-
- public function beforeTraverse(array $nodes) {
- $this->stack = [];
- $this->previous = null;
- }
-
- public function enterNode(Node $node) {
- if (!empty($this->stack)) {
- $node->setAttribute('parent', $this->stack[count($this->stack) - 1]);
- }
-
- if ($this->previous !== null && $this->previous->getAttribute('parent') === $node->getAttribute('parent')) {
- $node->setAttribute('previous', $this->previous);
- $this->previous->setAttribute('next', $node);
- }
-
- $this->stack[] = $node;
- }
-
- public function leaveNode(Node $node) {
- $this->previous = $node;
-
- array_pop($this->stack);
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php
deleted file mode 100644
index b98d2bfa..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php
+++ /dev/null
@@ -1,41 +0,0 @@
-$node->getAttribute('parent').
- */
-final class ParentConnectingVisitor extends NodeVisitorAbstract
-{
- /**
- * @var Node[]
- */
- private $stack = [];
-
- public function beforeTraverse(array $nodes)
- {
- $this->stack = [];
- }
-
- public function enterNode(Node $node)
- {
- if (!empty($this->stack)) {
- $node->setAttribute('parent', $this->stack[count($this->stack) - 1]);
- }
-
- $this->stack[] = $node;
- }
-
- public function leaveNode(Node $node)
- {
- array_pop($this->stack);
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php
deleted file mode 100644
index d378d670..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php
+++ /dev/null
@@ -1,25 +0,0 @@
-parsers = $parsers;
- }
-
- public function parse(string $code, ErrorHandler $errorHandler = null) {
- if (null === $errorHandler) {
- $errorHandler = new ErrorHandler\Throwing;
- }
-
- list($firstStmts, $firstError) = $this->tryParse($this->parsers[0], $errorHandler, $code);
- if ($firstError === null) {
- return $firstStmts;
- }
-
- for ($i = 1, $c = count($this->parsers); $i < $c; ++$i) {
- list($stmts, $error) = $this->tryParse($this->parsers[$i], $errorHandler, $code);
- if ($error === null) {
- return $stmts;
- }
- }
-
- throw $firstError;
- }
-
- private function tryParse(Parser $parser, ErrorHandler $errorHandler, $code) {
- $stmts = null;
- $error = null;
- try {
- $stmts = $parser->parse($code, $errorHandler);
- } catch (Error $error) {}
- return [$stmts, $error];
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Parser/Php5.php b/vendor/nikic/php-parser/lib/PhpParser/Parser/Php5.php
deleted file mode 100644
index c62adfd2..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Parser/Php5.php
+++ /dev/null
@@ -1,2674 +0,0 @@
-'",
- "T_IS_GREATER_OR_EQUAL",
- "T_SL",
- "T_SR",
- "'+'",
- "'-'",
- "'.'",
- "'*'",
- "'/'",
- "'%'",
- "'!'",
- "T_INSTANCEOF",
- "'~'",
- "T_INC",
- "T_DEC",
- "T_INT_CAST",
- "T_DOUBLE_CAST",
- "T_STRING_CAST",
- "T_ARRAY_CAST",
- "T_OBJECT_CAST",
- "T_BOOL_CAST",
- "T_UNSET_CAST",
- "'@'",
- "T_POW",
- "'['",
- "T_NEW",
- "T_CLONE",
- "T_EXIT",
- "T_IF",
- "T_ELSEIF",
- "T_ELSE",
- "T_ENDIF",
- "T_LNUMBER",
- "T_DNUMBER",
- "T_STRING",
- "T_STRING_VARNAME",
- "T_VARIABLE",
- "T_NUM_STRING",
- "T_INLINE_HTML",
- "T_ENCAPSED_AND_WHITESPACE",
- "T_CONSTANT_ENCAPSED_STRING",
- "T_ECHO",
- "T_DO",
- "T_WHILE",
- "T_ENDWHILE",
- "T_FOR",
- "T_ENDFOR",
- "T_FOREACH",
- "T_ENDFOREACH",
- "T_DECLARE",
- "T_ENDDECLARE",
- "T_AS",
- "T_SWITCH",
- "T_MATCH",
- "T_ENDSWITCH",
- "T_CASE",
- "T_DEFAULT",
- "T_BREAK",
- "T_CONTINUE",
- "T_GOTO",
- "T_FUNCTION",
- "T_FN",
- "T_CONST",
- "T_RETURN",
- "T_TRY",
- "T_CATCH",
- "T_FINALLY",
- "T_USE",
- "T_INSTEADOF",
- "T_GLOBAL",
- "T_STATIC",
- "T_ABSTRACT",
- "T_FINAL",
- "T_PRIVATE",
- "T_PROTECTED",
- "T_PUBLIC",
- "T_VAR",
- "T_UNSET",
- "T_ISSET",
- "T_EMPTY",
- "T_HALT_COMPILER",
- "T_CLASS",
- "T_TRAIT",
- "T_INTERFACE",
- "T_EXTENDS",
- "T_IMPLEMENTS",
- "T_OBJECT_OPERATOR",
- "T_LIST",
- "T_ARRAY",
- "T_CALLABLE",
- "T_CLASS_C",
- "T_TRAIT_C",
- "T_METHOD_C",
- "T_FUNC_C",
- "T_LINE",
- "T_FILE",
- "T_START_HEREDOC",
- "T_END_HEREDOC",
- "T_DOLLAR_OPEN_CURLY_BRACES",
- "T_CURLY_OPEN",
- "T_PAAMAYIM_NEKUDOTAYIM",
- "T_NAMESPACE",
- "T_NS_C",
- "T_DIR",
- "T_NS_SEPARATOR",
- "T_ELLIPSIS",
- "T_NAME_FULLY_QUALIFIED",
- "T_NAME_QUALIFIED",
- "T_NAME_RELATIVE",
- "';'",
- "'{'",
- "'}'",
- "'('",
- "')'",
- "'$'",
- "'`'",
- "']'",
- "'\"'",
- "T_READONLY",
- "T_ENUM",
- "T_NULLSAFE_OBJECT_OPERATOR",
- "T_ATTRIBUTE"
- );
-
- protected $tokenToSymbol = array(
- 0, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 56, 163, 168, 160, 55, 168, 168,
- 158, 159, 53, 50, 8, 51, 52, 54, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 31, 155,
- 44, 16, 46, 30, 68, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 70, 168, 162, 36, 168, 161, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 156, 35, 157, 58, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 1, 2, 3, 4,
- 5, 6, 7, 9, 10, 11, 12, 13, 14, 15,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 32, 33, 34, 37, 38, 39, 40,
- 41, 42, 43, 45, 47, 48, 49, 57, 59, 60,
- 61, 62, 63, 64, 65, 66, 67, 69, 71, 72,
- 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
- 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
- 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
- 113, 114, 115, 116, 117, 118, 119, 120, 121, 164,
- 122, 123, 124, 125, 126, 127, 128, 129, 165, 130,
- 131, 132, 166, 133, 134, 135, 136, 137, 138, 139,
- 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
- 150, 151, 152, 153, 154, 167
- );
-
- protected $action = array(
- 699, 669, 670, 671, 672, 673, 286, 674, 675, 676,
- 712, 713, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 0, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244,-32766,-32766,-32766,-32766,-32766,
- -32766,-32766,-32766,-32766,-32767,-32767,-32767,-32767, 245, 246,
- 242, 243, 244,-32766,-32766, 677,-32766, 750,-32766,-32766,
- -32766,-32766,-32766,-32766,-32766, 1224, 245, 246, 1225, 678,
- 679, 680, 681, 682, 683, 684,-32766, 48, 746,-32766,
- -32766,-32766,-32766,-32766,-32766, 685, 686, 687, 688, 689,
- 690, 691, 692, 693, 694, 695, 715, 738, 716, 717,
- 718, 719, 707, 708, 709, 737, 710, 711, 696, 697,
- 698, 700, 701, 702, 740, 741, 742, 743, 744, 745,
- 703, 704, 705, 706, 736, 727, 725, 726, 722, 723,
- 751, 714, 720, 721, 728, 729, 731, 730, 732, 733,
- 55, 56, 425, 57, 58, 724, 735, 734, 1073, 59,
- 60, -224, 61,-32766,-32766,-32766,-32766,-32766,-32766,-32766,
- -32766,-32766,-32766, 121,-32767,-32767,-32767,-32767, 29, 107,
- 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
- 118, 119, 1043, 766, 1071, 767, 580, 62, 63,-32766,
- -32766,-32766,-32766, 64, 516, 65, 294, 295, 66, 67,
- 68, 69, 70, 71, 72, 73, 822, 25, 302, 74,
- 418, 981, 983, 1043, 1181, 1095, 1096, 1073, 748, 754,
- 1075, 1074, 1076, 469,-32766,-32766,-32766, 337, 823, 54,
- -32767,-32767,-32767,-32767, 98, 99, 100, 101, 102, 220,
- 221, 222, 78, 361, 1107,-32766, 341,-32766,-32766,-32766,
- -32766,-32766, 1107, 492, 949, 950, 951, 948, 947, 946,
- 207, 477, 478, 949, 950, 951, 948, 947, 946, 1043,
- 479, 480, 52, 1101, 1102, 1103, 1104, 1098, 1099, 319,
- 872, 668, 667, 27, -511, 1105, 1100,-32766, 130, 1075,
- 1074, 1076, 345, 668, 667, 41, 126, 341, 334, 369,
- 336, 426, -128, -128, -128, 896, 897, 468, 220, 221,
- 222, 811, 1195, 619, 40, 21, 427, -128, 470, -128,
- 471, -128, 472, -128, 802, 428, -4, 823, 54, 207,
- 33, 34, 429, 360, 317, 28, 35, 473,-32766,-32766,
- -32766, 211, 356, 357, 474, 475,-32766,-32766,-32766, 754,
- 476, 49, 313, 794, 843, 430, 431, 289, 125,-32766,
- 813,-32766,-32766,-32766,-32766,-32766,-32766,-32766,-32767,-32767,
- -32767,-32767,-32767,-32766,-32766,-32766, 769, 103, 104, 105,
- 327, 307, 825, 633, -128, 1075, 1074, 1076, 221, 222,
- 927, 748, 1146, 106,-32766, 129,-32766,-32766,-32766,-32766,
- 426, 823, 54, 902, 873, 302, 468, 75, 207, 359,
- 811, 668, 667, 40, 21, 427, 754, 470, 754, 471,
- 423, 472, 1043, 127, 428, 435, 1043, 341, 1043, 33,
- 34, 429, 360, 1181, 415, 35, 473, 122, 10, 315,
- 128, 356, 357, 474, 475,-32766,-32766,-32766, 768, 476,
- 668, 667, 758, 843, 430, 431, 754, 1043, 1147,-32766,
- -32766,-32766, 754, 419, 342, 1215,-32766, 131,-32766,-32766,
- -32766, 341, 363, 346, 426, 823, 54, 100, 101, 102,
- 468, 825, 633, -4, 811, 442, 903, 40, 21, 427,
- 754, 470, 435, 471, 341, 472, 341, 766, 428, 767,
- -209, -209, -209, 33, 34, 429, 360, 479, 1196, 35,
- 473, 345,-32766,-32766,-32766, 356, 357, 474, 475, 220,
- 221, 222, 421, 476, 32, 297, 794, 843, 430, 431,
- 754, 754, 435,-32766, 341,-32766,-32766, 9, 300, 51,
- 207, 249, 324, 753, 120, 220, 221, 222, 426, 30,
- 247, 941, 422, 424, 468, 825, 633, -209, 811, 1043,
- 1061, 40, 21, 427, 129, 470, 207, 471, 341, 472,
- 804, 20, 428, 124, -208, -208, -208, 33, 34, 429,
- 360, 479, 212, 35, 473, 923, -259, 823, 54, 356,
- 357, 474, 475,-32766,-32766,-32766, 1043, 476, 213, 806,
- 794, 843, 430, 431,-32766,-32766, 435, 435, 341, 341,
- 443, 79, 80, 81,-32766, 668, 667, 636, 344, 808,
- 668, 667, 239, 240, 241, 123, 214, 538, 250, 825,
- 633, -208, 36, 251, 82, 83, 84, 85, 86, 87,
- 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
- 98, 99, 100, 101, 102, 103, 104, 105, 252, 307,
- 426, 220, 221, 222, 823, 54, 468,-32766, 222, 765,
- 811, 106, 134, 40, 21, 427, 571, 470, 207, 471,
- 445, 472, 207,-32766, 428, 896, 897, 207, 307, 33,
- 34, 429, 245, 246, 637, 35, 473, 452, 22, 809,
- 922, 356, 357, 457, 588, 135, 374, 595, 596, 476,
- -228, 759, 639, 938, 653, 926, 661, -86, 823, 54,
- 314, 644, 647, 821, 133, 836, 43, 106, 603, 44,
- 45, 46, 47, 748, 50, 53, 132, 426, 302,-32766,
- 520, 825, 633, 468, -84, 607, 577, 811, 641, 362,
- 40, 21, 427, -278, 470, 754, 471, 954, 472, 441,
- 627, 428, 823, 54, 574, 844, 33, 34, 429, 11,
- 615, 845, 35, 473, 444, 461, 285, -511, 356, 357,
- 592, -419, 593, 1106, 1153, -410, 476, 368, 838, 38,
- 658, 426, 645, 795, 1052, 0, 325, 468, 0,-32766,
- 0, 811, 0, 0, 40, 21, 427, 0, 470, 0,
- 471, 0, 472, 0, 322, 428, 823, 54, 825, 633,
- 33, 34, 429, 0, 326, 0, 35, 473, 323, 0,
- 316, 318, 356, 357, -512, 426, 0, 753, 531, 0,
- 476, 468, 6, 0, 0, 811, 650, 7, 40, 21,
- 427, 12, 470, 14, 471, 373, 472, -420, 562, 428,
- 823, 54, 78, -225, 33, 34, 429, 39, 656, 657,
- 35, 473, 859, 633, 764, 812, 356, 357, 820, 799,
- 814, 875, 866, 867, 476, 797, 860, 857, 855, 426,
- 933, 934, 931, 819, 803, 468, 805, 807, 810, 811,
- 930, 762, 40, 21, 427, 763, 470, 932, 471, 335,
- 472, 358, 634, 428, 638, 640, 825, 633, 33, 34,
- 429, 642, 643, 646, 35, 473, 648, 649, 651, 652,
- 356, 357, 635, 426, 1221, 1223, 761, 842, 476, 468,
- 248, 760, 841, 811, 1222, 840, 40, 21, 427, 1057,
- 470, 830, 471, 1045, 472, 839, 1046, 428, 828, 215,
- 216, 939, 33, 34, 429, 217, 864, 218, 35, 473,
- 825, 633, 24, 865, 356, 357, 456, 1220, 1189, 209,
- 1187, 1172, 476, 1185, 215, 216, 1086, 1095, 1096, 914,
- 217, 1193, 218, 1183, -224, 1097, 26, 31, 37, 42,
- 76, 77, 210, 288, 209, 292, 293, 308, 309, 310,
- 311, 339, 1095, 1096, 825, 633, 355, 291, 416, 1152,
- 1097, 16, 17, 18, 393, 453, 460, 462, 466, 552,
- 624, 1048, 1051, 904, 1111, 1047, 1023, 563, 1022, 1088,
- 0, 0, -429, 558, 1041, 1101, 1102, 1103, 1104, 1098,
- 1099, 398, 1054, 1053, 1056, 1055, 1070, 1105, 1100, 1186,
- 1171, 1167, 1184, 1085, 1218, 1112, 1166, 219, 558, 599,
- 1101, 1102, 1103, 1104, 1098, 1099, 398, 0, 0, 0,
- 0, 0, 1105, 1100, 0, 0, 0, 0, 0, 0,
- 0, 0, 219
- );
-
- protected $actionCheck = array(
- 2, 3, 4, 5, 6, 7, 14, 9, 10, 11,
- 12, 13, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 0, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 54, 55, 9, 10, 11, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 69, 70,
- 53, 54, 55, 9, 10, 57, 30, 80, 32, 33,
- 34, 35, 36, 37, 38, 80, 69, 70, 83, 71,
- 72, 73, 74, 75, 76, 77, 9, 70, 80, 33,
- 34, 35, 36, 37, 38, 87, 88, 89, 90, 91,
- 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
- 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
- 153, 133, 134, 135, 136, 137, 138, 139, 140, 141,
- 3, 4, 5, 6, 7, 147, 148, 149, 80, 12,
- 13, 159, 15, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, 42, 156, 44, 45, 46, 47, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 13, 106, 116, 108, 85, 50, 51, 33,
- 34, 35, 36, 56, 85, 58, 59, 60, 61, 62,
- 63, 64, 65, 66, 67, 68, 1, 70, 71, 72,
- 73, 59, 60, 13, 82, 78, 79, 80, 80, 82,
- 152, 153, 154, 86, 9, 10, 11, 8, 1, 2,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 9,
- 10, 11, 156, 106, 143, 30, 160, 32, 33, 34,
- 35, 36, 143, 116, 116, 117, 118, 119, 120, 121,
- 30, 124, 125, 116, 117, 118, 119, 120, 121, 13,
- 133, 134, 70, 136, 137, 138, 139, 140, 141, 142,
- 31, 37, 38, 8, 132, 148, 149, 116, 156, 152,
- 153, 154, 160, 37, 38, 158, 8, 160, 161, 8,
- 163, 74, 75, 76, 77, 134, 135, 80, 9, 10,
- 11, 84, 1, 80, 87, 88, 89, 90, 91, 92,
- 93, 94, 95, 96, 155, 98, 0, 1, 2, 30,
- 103, 104, 105, 106, 132, 8, 109, 110, 9, 10,
- 11, 8, 115, 116, 117, 118, 9, 10, 11, 82,
- 123, 70, 8, 126, 127, 128, 129, 8, 156, 30,
- 155, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 9, 10, 11, 157, 53, 54, 55,
- 8, 57, 155, 156, 157, 152, 153, 154, 10, 11,
- 157, 80, 162, 69, 30, 151, 32, 33, 34, 35,
- 74, 1, 2, 159, 155, 71, 80, 151, 30, 8,
- 84, 37, 38, 87, 88, 89, 82, 91, 82, 93,
- 8, 95, 13, 156, 98, 158, 13, 160, 13, 103,
- 104, 105, 106, 82, 108, 109, 110, 156, 8, 113,
- 31, 115, 116, 117, 118, 9, 10, 11, 157, 123,
- 37, 38, 126, 127, 128, 129, 82, 13, 159, 33,
- 34, 35, 82, 127, 8, 85, 30, 156, 32, 33,
- 34, 160, 8, 147, 74, 1, 2, 50, 51, 52,
- 80, 155, 156, 157, 84, 31, 159, 87, 88, 89,
- 82, 91, 158, 93, 160, 95, 160, 106, 98, 108,
- 100, 101, 102, 103, 104, 105, 106, 133, 159, 109,
- 110, 160, 9, 10, 11, 115, 116, 117, 118, 9,
- 10, 11, 8, 123, 144, 145, 126, 127, 128, 129,
- 82, 82, 158, 30, 160, 32, 33, 108, 8, 70,
- 30, 31, 113, 152, 16, 9, 10, 11, 74, 14,
- 14, 122, 8, 8, 80, 155, 156, 157, 84, 13,
- 159, 87, 88, 89, 151, 91, 30, 93, 160, 95,
- 155, 159, 98, 14, 100, 101, 102, 103, 104, 105,
- 106, 133, 16, 109, 110, 155, 157, 1, 2, 115,
- 116, 117, 118, 9, 10, 11, 13, 123, 16, 155,
- 126, 127, 128, 129, 33, 34, 158, 158, 160, 160,
- 156, 9, 10, 11, 30, 37, 38, 31, 70, 155,
- 37, 38, 50, 51, 52, 156, 16, 81, 16, 155,
- 156, 157, 30, 16, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 16, 57,
- 74, 9, 10, 11, 1, 2, 80, 116, 11, 155,
- 84, 69, 156, 87, 88, 89, 160, 91, 30, 93,
- 132, 95, 30, 33, 98, 134, 135, 30, 57, 103,
- 104, 105, 69, 70, 31, 109, 110, 75, 76, 155,
- 155, 115, 116, 75, 76, 101, 102, 111, 112, 123,
- 159, 155, 156, 155, 156, 155, 156, 31, 1, 2,
- 31, 31, 31, 31, 31, 38, 70, 69, 77, 70,
- 70, 70, 70, 80, 70, 70, 70, 74, 71, 85,
- 85, 155, 156, 80, 97, 96, 100, 84, 31, 106,
- 87, 88, 89, 82, 91, 82, 93, 82, 95, 89,
- 92, 98, 1, 2, 90, 127, 103, 104, 105, 97,
- 94, 127, 109, 110, 97, 97, 97, 132, 115, 116,
- 100, 146, 113, 143, 143, 146, 123, 106, 151, 155,
- 157, 74, 31, 157, 162, -1, 114, 80, -1, 116,
- -1, 84, -1, -1, 87, 88, 89, -1, 91, -1,
- 93, -1, 95, -1, 130, 98, 1, 2, 155, 156,
- 103, 104, 105, -1, 130, -1, 109, 110, 131, -1,
- 132, 132, 115, 116, 132, 74, -1, 152, 150, -1,
- 123, 80, 146, -1, -1, 84, 31, 146, 87, 88,
- 89, 146, 91, 146, 93, 146, 95, 146, 150, 98,
- 1, 2, 156, 159, 103, 104, 105, 155, 155, 155,
- 109, 110, 155, 156, 155, 155, 115, 116, 155, 155,
- 155, 155, 155, 155, 123, 155, 155, 155, 155, 74,
- 155, 155, 155, 155, 155, 80, 155, 155, 155, 84,
- 155, 155, 87, 88, 89, 155, 91, 155, 93, 156,
- 95, 156, 156, 98, 156, 156, 155, 156, 103, 104,
- 105, 156, 156, 156, 109, 110, 156, 156, 156, 156,
- 115, 116, 156, 74, 157, 157, 157, 157, 123, 80,
- 31, 157, 157, 84, 157, 157, 87, 88, 89, 157,
- 91, 157, 93, 157, 95, 157, 157, 98, 157, 50,
- 51, 157, 103, 104, 105, 56, 157, 58, 109, 110,
- 155, 156, 158, 157, 115, 116, 157, 157, 157, 70,
- 157, 157, 123, 157, 50, 51, 157, 78, 79, 157,
- 56, 157, 58, 157, 159, 86, 158, 158, 158, 158,
- 158, 158, 158, 158, 70, 158, 158, 158, 158, 158,
- 158, 158, 78, 79, 155, 156, 158, 160, 158, 163,
- 86, 159, 159, 159, 159, 159, 159, 159, 159, 159,
- 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
- -1, -1, 161, 134, 161, 136, 137, 138, 139, 140,
- 141, 142, 162, 162, 162, 162, 162, 148, 149, 162,
- 162, 162, 162, 162, 162, 162, 162, 158, 134, 162,
- 136, 137, 138, 139, 140, 141, 142, -1, -1, -1,
- -1, -1, 148, 149, -1, -1, -1, -1, -1, -1,
- -1, -1, 158
- );
-
- protected $actionBase = array(
- 0, 227, 326, 400, 474, 233, 132, 132, 752, -2,
- -2, 138, -2, -2, -2, 663, 761, 815, 761, 586,
- 717, 859, 859, 859, 244, 256, 256, 256, 413, 583,
- 583, 880, 546, 169, 415, 444, 409, 200, 200, 200,
- 200, 137, 137, 200, 200, 200, 200, 200, 200, 200,
- 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
- 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
- 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
- 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
- 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
- 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
- 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
- 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
- 200, 200, 200, 200, 200, 200, 249, 205, 738, 559,
- 535, 739, 741, 742, 876, 679, 877, 820, 821, 693,
- 823, 824, 826, 829, 832, 819, 834, 907, 836, 602,
- 602, 602, 602, 602, 602, 602, 602, 602, 602, 602,
- 602, 67, 536, 299, 510, 230, 44, 652, 652, 652,
- 652, 652, 652, 652, 337, 337, 337, 337, 337, 337,
- 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
- 337, 337, 378, 584, 584, 584, 657, 909, 648, 934,
- 934, 934, 934, 934, 934, 934, 934, 934, 934, 934,
- 934, 934, 934, 934, 934, 934, 934, 934, 934, 934,
- 934, 934, 934, 934, 934, 934, 934, 934, 934, 934,
- 934, 934, 934, 934, 934, 934, 934, 934, 934, 934,
- 934, 934, 934, 503, -21, -21, 436, 650, 364, 571,
- 215, 426, 156, 26, 26, 329, 329, 329, 329, 329,
- 46, 46, 5, 5, 5, 5, 152, 186, 186, 186,
- 186, 120, 120, 120, 120, 374, 374, 429, 448, 448,
- 334, 267, 449, 449, 449, 449, 449, 449, 449, 449,
- 449, 449, 336, 427, 427, 572, 572, 408, 551, 551,
- 551, 551, 671, 171, 171, 391, 311, 311, 311, 109,
- 641, 856, 68, 68, 68, 68, 68, 68, 324, 324,
- 324, -3, -3, -3, 655, 77, 380, 77, 380, 683,
- 685, 86, 685, 654, -15, 516, 776, 281, 646, 809,
- 680, 816, 560, 711, 202, 578, 857, 643, -23, 578,
- 578, 578, 578, 857, 622, 628, 596, -23, 578, -23,
- 639, 454, 849, 351, 249, 558, 469, 631, 743, 514,
- 688, 746, 464, 544, 548, 556, 7, 412, 708, 750,
- 878, 879, 349, 702, 631, 631, 631, 327, 101, 7,
- -8, 623, 623, 623, 623, 219, 623, 623, 623, 623,
- 291, 430, 545, 401, 745, 653, 653, 675, 839, 814,
- 814, 653, 673, 653, 675, 841, 841, 841, 841, 653,
- 653, 653, 653, 814, 814, 667, 814, 275, 684, 694,
- 694, 841, 713, 714, 653, 653, 697, 814, 814, 814,
- 697, 687, 841, 669, 637, 333, 814, 841, 689, 673,
- 689, 653, 669, 689, 673, 673, 689, 22, 686, 656,
- 840, 842, 860, 756, 638, 644, 847, 848, 843, 845,
- 838, 692, 719, 720, 528, 659, 660, 661, 662, 696,
- 664, 698, 643, 658, 658, 658, 645, 701, 645, 658,
- 658, 658, 658, 658, 658, 658, 658, 632, 635, 709,
- 699, 670, 723, 566, 582, 758, 640, 636, 872, 865,
- 881, 883, 849, 870, 645, 890, 634, 288, 610, 850,
- 633, 753, 645, 851, 645, 759, 645, 873, 777, 666,
- 778, 779, 658, 874, 891, 892, 893, 894, 897, 898,
- 899, 900, 665, 901, 724, 674, 866, 344, 844, 639,
- 705, 677, 755, 725, 780, 372, 902, 784, 645, 645,
- 765, 706, 645, 766, 726, 712, 862, 727, 867, 903,
- 640, 678, 868, 645, 681, 785, 904, 372, 690, 651,
- 704, 649, 728, 858, 875, 853, 767, 612, 617, 787,
- 788, 792, 691, 730, 863, 864, 835, 731, 770, 642,
- 771, 676, 794, 772, 852, 732, 796, 798, 871, 647,
- 707, 682, 672, 668, 773, 799, 869, 733, 735, 736,
- 801, 737, 804, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 137, 137, 137, 137, -2, -2, -2,
- -2, 0, 0, -2, 0, 0, 0, 137, 137, 137,
- 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
- 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
- 137, 137, 137, 0, 0, 137, 137, 137, 137, 137,
- 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
- 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
- 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
- 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
- 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
- 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
- 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
- 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
- 137, 137, 137, 137, 137, 137, 137, 137, 602, 602,
- 602, 602, 602, 602, 602, 602, 602, 602, 602, 602,
- 602, 602, 602, 602, 602, 602, 602, 602, 602, 602,
- 602, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 602, -21, -21, -21, -21, 602, -21,
- -21, -21, -21, -21, -21, -21, 602, 602, 602, 602,
- 602, 602, 602, 602, 602, 602, 602, 602, 602, 602,
- 602, 602, 602, 602, -21, 602, 602, 602, -21, 68,
- -21, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 602, 0, 0, 602, -21,
- 602, -21, 602, -21, -21, 602, 602, 602, 602, 602,
- 602, 602, -21, -21, -21, -21, -21, -21, 0, 324,
- 324, 324, 324, -21, -21, -21, -21, 68, 68, 147,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 324, 324, -3, -3, 68,
- 68, 68, 68, 68, 147, 68, 68, -23, 673, 673,
- 673, 380, 380, 380, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 380, -23, 0, -23,
- 0, 68, -23, 673, -23, 380, 673, 673, -23, 814,
- 604, 604, 604, 604, 372, 7, 0, 0, 673, 673,
- 0, 0, 0, 0, 0, 673, 0, 0, 0, 0,
- 0, 0, 814, 0, 653, 0, 0, 0, 0, 658,
- 288, 0, 677, 456, 0, 0, 0, 0, 0, 0,
- 677, 456, 530, 530, 0, 665, 658, 658, 658, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 372
- );
-
- protected $actionDefault = array(
- 3,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767, 540, 540, 495,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767, 297, 297, 297,
- 32767,32767,32767, 528, 528, 528, 528, 528, 528, 528,
- 528, 528, 528, 528,32767,32767,32767,32767,32767,32767,
- 381,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767, 387,
- 545,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767, 362,
- 363, 365, 366, 296, 548, 529, 245, 388, 544, 295,
- 247, 325, 499,32767,32767,32767, 327, 122, 256, 201,
- 498, 125, 294, 232, 380, 382, 326, 301, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- 318, 300, 454, 359, 358, 357, 456,32767, 455, 492,
- 492, 495,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767, 323, 483, 482, 324, 452, 328, 453,
- 331, 457, 460, 329, 330, 347, 348, 345, 346, 349,
- 458, 459, 476, 477, 474, 475, 299, 350, 351, 352,
- 353, 478, 479, 480, 481,32767,32767, 280, 539, 539,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767, 338, 339, 467, 468,32767, 236, 236,
- 236, 236, 281, 236,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767, 333, 334,
- 332, 462, 463, 461, 428,32767,32767,32767, 430,32767,
- 32767,32767,32767,32767,32767,32767,32767, 500,32767,32767,
- 32767,32767,32767, 513, 417, 171,32767, 409,32767, 171,
- 171, 171, 171,32767, 220, 222, 167,32767, 171,32767,
- 486,32767,32767,32767,32767,32767, 518, 343,32767,32767,
- 116,32767,32767,32767, 555,32767, 513,32767, 116,32767,
- 32767,32767,32767, 356, 335, 336, 337,32767,32767, 517,
- 511, 470, 471, 472, 473,32767, 464, 465, 466, 469,
- 32767,32767,32767,32767,32767,32767,32767,32767, 425, 431,
- 431,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767, 516, 515,32767, 410, 494, 186, 184,
- 184,32767, 206, 206,32767,32767, 188, 487, 506,32767,
- 188, 173,32767, 398, 175, 494,32767,32767, 238,32767,
- 238,32767, 398, 238,32767,32767, 238,32767, 411, 435,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767, 377, 378, 489, 502,32767,
- 503,32767, 409, 341, 342, 344, 320,32767, 322, 367,
- 368, 369, 370, 371, 372, 373, 375,32767, 415,32767,
- 418,32767,32767,32767, 255,32767, 553,32767,32767, 304,
- 553,32767,32767,32767, 547,32767,32767, 298,32767,32767,
- 32767,32767, 251,32767, 169,32767, 537,32767, 554,32767,
- 511,32767, 340,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767, 512,32767,32767,32767,32767, 227,32767, 448,
- 32767, 116,32767,32767,32767, 187,32767,32767, 302, 246,
- 32767,32767, 546,32767,32767,32767,32767,32767,32767,32767,
- 32767, 114,32767, 170,32767,32767,32767, 189,32767,32767,
- 511,32767,32767,32767,32767,32767,32767,32767, 293,32767,
- 32767,32767,32767,32767,32767,32767, 511,32767,32767, 231,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767, 411,
- 32767, 274,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767, 127, 127, 3, 127, 127, 258, 3,
- 258, 127, 258, 258, 127, 127, 127, 127, 127, 127,
- 127, 127, 127, 127, 214, 217, 206, 206, 164, 127,
- 127, 266
- );
-
- protected $goto = array(
- 166, 140, 140, 140, 166, 187, 168, 144, 147, 141,
- 142, 143, 149, 163, 163, 163, 163, 144, 144, 165,
- 165, 165, 165, 165, 165, 165, 165, 165, 165, 165,
- 138, 159, 160, 161, 162, 184, 139, 185, 493, 494,
- 377, 495, 499, 500, 501, 502, 503, 504, 505, 506,
- 967, 164, 145, 146, 148, 171, 176, 186, 203, 253,
- 256, 258, 260, 263, 264, 265, 266, 267, 268, 269,
- 277, 278, 279, 280, 303, 304, 328, 329, 330, 394,
- 395, 396, 542, 188, 189, 190, 191, 192, 193, 194,
- 195, 196, 197, 198, 199, 200, 201, 150, 151, 152,
- 167, 153, 169, 154, 204, 170, 155, 156, 157, 205,
- 158, 136, 620, 560, 756, 560, 560, 560, 560, 560,
- 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
- 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
- 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
- 560, 560, 560, 560, 560, 560, 560, 560, 560, 1108,
- 628, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
- 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
- 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
- 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
- 1108, 1108, 1108, 1108, 1108, 757, 888, 888, 508, 1200,
- 1200, 400, 606, 508, 536, 536, 568, 532, 534, 534,
- 496, 498, 524, 540, 569, 572, 583, 590, 852, 852,
- 852, 852, 847, 853, 174, 585, 519, 600, 601, 177,
- 178, 179, 401, 402, 403, 404, 173, 202, 206, 208,
- 257, 259, 261, 262, 270, 271, 272, 273, 274, 275,
- 281, 282, 283, 284, 305, 306, 331, 332, 333, 406,
- 407, 408, 409, 175, 180, 254, 255, 181, 182, 183,
- 497, 497, 785, 497, 497, 497, 497, 497, 497, 497,
- 497, 497, 497, 497, 497, 497, 497, 509, 578, 582,
- 626, 749, 509, 544, 545, 546, 547, 548, 549, 550,
- 551, 553, 586, 338, 559, 321, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 530, 349, 655, 555, 587, 352, 414, 591, 575, 604,
- 885, 611, 612, 881, 616, 617, 623, 625, 630, 632,
- 298, 296, 296, 296, 298, 290, 299, 944, 610, 816,
- 1170, 613, 436, 436, 375, 436, 436, 436, 436, 436,
- 436, 436, 436, 436, 436, 436, 436, 436, 436, 1072,
- 1084, 1083, 945, 1065, 1072, 895, 895, 895, 895, 1178,
- 895, 895, 1212, 1212, 1178, 388, 858, 561, 755, 1072,
- 1072, 1072, 1072, 1072, 1072, 3, 4, 384, 384, 384,
- 1212, 874, 856, 854, 856, 654, 465, 511, 883, 878,
- 1089, 541, 384, 537, 384, 567, 384, 1026, 19, 15,
- 371, 384, 1226, 510, 1204, 1192, 1192, 1192, 510, 906,
- 372, 522, 533, 554, 912, 514, 1068, 1069, 13, 1065,
- 378, 912, 1158, 594, 23, 965, 386, 386, 386, 602,
- 1066, 1169, 1066, 937, 447, 449, 631, 752, 1177, 1067,
- 1109, 614, 935, 1177, 605, 1197, 391, 1211, 1211, 543,
- 892, 386, 1194, 1194, 1194, 399, 518, 1016, 901, 389,
- 771, 529, 752, 340, 752, 1211, 518, 518, 385, 781,
- 1214, 770, 772, 1063, 910, 774, 1058, 1176, 659, 953,
- 514, 782, 862, 915, 450, 573, 1155, 0, 463, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 513, 528, 0, 0, 0, 0,
- 513, 0, 528, 0, 350, 351, 0, 609, 512, 515,
- 438, 439, 1064, 618, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 779, 1219, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 777, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 523, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 301, 301
- );
-
- protected $gotoCheck = array(
- 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 57, 68, 15, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 126,
- 9, 126, 126, 126, 126, 126, 126, 126, 126, 126,
- 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
- 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
- 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
- 126, 126, 126, 126, 126, 16, 76, 76, 68, 76,
- 76, 51, 51, 68, 51, 51, 51, 51, 51, 51,
- 51, 51, 51, 51, 51, 51, 51, 51, 68, 68,
- 68, 68, 68, 68, 27, 66, 101, 66, 66, 27,
- 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
- 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
- 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
- 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
- 117, 117, 29, 117, 117, 117, 117, 117, 117, 117,
- 117, 117, 117, 117, 117, 117, 117, 117, 61, 61,
- 61, 6, 117, 110, 110, 110, 110, 110, 110, 110,
- 110, 110, 110, 125, 57, 125, 57, 57, 57, 57,
- 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
- 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
- 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
- 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
- 32, 71, 32, 32, 69, 69, 69, 32, 40, 40,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 5, 5, 5, 5, 5, 5, 5, 97, 62, 50,
- 81, 62, 57, 57, 62, 57, 57, 57, 57, 57,
- 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
- 124, 124, 97, 81, 57, 57, 57, 57, 57, 118,
- 57, 57, 142, 142, 118, 12, 33, 12, 14, 57,
- 57, 57, 57, 57, 57, 30, 30, 13, 13, 13,
- 142, 14, 14, 14, 14, 14, 57, 14, 14, 14,
- 34, 2, 13, 109, 13, 2, 13, 34, 34, 34,
- 34, 13, 13, 122, 140, 9, 9, 9, 122, 83,
- 58, 58, 58, 34, 13, 13, 81, 81, 58, 81,
- 46, 13, 131, 127, 34, 101, 123, 123, 123, 34,
- 81, 81, 81, 8, 8, 8, 8, 11, 119, 81,
- 8, 8, 8, 119, 49, 138, 48, 141, 141, 47,
- 78, 123, 119, 119, 119, 123, 47, 102, 80, 17,
- 23, 9, 11, 18, 11, 141, 47, 47, 11, 23,
- 141, 23, 24, 115, 84, 25, 113, 119, 73, 99,
- 13, 26, 70, 85, 64, 65, 130, -1, 108, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 9, 9, -1, -1, -1, -1,
- 9, -1, 9, -1, 71, 71, -1, 13, 9, 9,
- 9, 9, 13, 13, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 9, 9, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 9, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 101, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 5, 5
- );
-
- protected $gotoBase = array(
- 0, 0, -184, 0, 0, 356, 290, 0, 488, 149,
- 0, 182, 85, 118, 426, 112, 203, 179, 208, 0,
- 0, 0, 0, 162, 190, 198, 120, 27, 0, 272,
- -224, 0, -274, 406, 32, 0, 0, 0, 0, 0,
- 330, 0, 0, -24, 0, 0, 440, 485, 213, 218,
- 371, -74, 0, 0, 0, 0, 0, 107, 110, 0,
- 0, -11, -72, 0, 104, 95, -405, 0, -94, 41,
- 119, -82, 0, 164, 0, 0, -79, 0, 197, 0,
- 204, 43, 0, 441, 171, 121, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 100, 0, 115,
- 0, 195, 210, 0, 0, 0, 0, 0, 86, 427,
- 259, 0, 0, 116, 0, 174, 0, -5, 117, 196,
- 0, 0, 161, 170, 93, -21, -48, 273, 0, 0,
- 91, 271, 0, 0, 0, 0, 0, 0, 216, 0,
- 437, 187, 102, 0, 0
- );
-
- protected $gotoDefault = array(
- -32768, 467, 663, 2, 664, 834, 739, 747, 597, 481,
- 629, 581, 380, 1188, 791, 792, 793, 381, 367, 482,
- 379, 410, 405, 780, 773, 775, 783, 172, 411, 786,
- 1, 788, 517, 824, 1017, 364, 796, 365, 589, 798,
- 526, 800, 801, 137, 382, 383, 527, 483, 390, 576,
- 815, 276, 387, 817, 366, 818, 827, 370, 464, 454,
- 459, 556, 608, 432, 446, 570, 564, 535, 1081, 565,
- 861, 348, 869, 660, 877, 880, 484, 557, 891, 451,
- 899, 1094, 397, 905, 911, 916, 287, 919, 417, 412,
- 584, 924, 925, 5, 929, 621, 622, 8, 312, 952,
- 598, 966, 420, 1036, 1038, 485, 486, 521, 458, 507,
- 525, 487, 1059, 440, 413, 1062, 488, 489, 433, 434,
- 1078, 354, 1163, 353, 448, 320, 1150, 579, 1113, 455,
- 1203, 1159, 347, 490, 491, 376, 1182, 392, 1198, 437,
- 1205, 1213, 343, 539, 566
- );
-
- protected $ruleToNonTerminal = array(
- 0, 1, 3, 3, 2, 5, 5, 6, 6, 6,
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 6, 6, 6, 6, 7, 7, 7,
- 7, 7, 7, 7, 8, 8, 9, 10, 11, 11,
- 12, 12, 13, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 18, 18, 19, 19, 21, 21,
- 17, 17, 22, 22, 23, 23, 24, 24, 25, 25,
- 20, 20, 26, 28, 28, 29, 30, 30, 32, 31,
- 31, 31, 31, 33, 33, 33, 33, 33, 33, 33,
- 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
- 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
- 33, 33, 14, 14, 54, 54, 56, 55, 55, 48,
- 48, 58, 58, 59, 59, 60, 60, 15, 16, 16,
- 16, 63, 63, 63, 64, 64, 67, 67, 65, 65,
- 69, 69, 41, 41, 50, 50, 53, 53, 53, 52,
- 52, 70, 42, 42, 42, 42, 71, 71, 72, 72,
- 73, 73, 39, 39, 35, 35, 74, 37, 37, 75,
- 36, 36, 38, 38, 49, 49, 49, 61, 61, 77,
- 77, 78, 78, 80, 80, 80, 79, 79, 62, 62,
- 81, 81, 81, 82, 82, 83, 83, 83, 44, 44,
- 84, 84, 84, 45, 45, 85, 85, 86, 86, 66,
- 87, 87, 87, 87, 92, 92, 93, 93, 94, 94,
- 94, 94, 94, 95, 96, 96, 91, 91, 88, 88,
- 90, 90, 98, 98, 97, 97, 97, 97, 97, 97,
- 89, 89, 100, 99, 99, 46, 46, 40, 40, 43,
- 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 34, 34, 47, 47, 105,
- 105, 106, 106, 106, 106, 112, 101, 101, 108, 108,
- 114, 114, 115, 116, 116, 116, 116, 116, 116, 68,
- 68, 57, 57, 57, 57, 102, 102, 120, 120, 117,
- 117, 121, 121, 121, 121, 103, 103, 103, 107, 107,
- 107, 113, 113, 126, 126, 126, 126, 126, 126, 126,
- 126, 126, 126, 126, 126, 126, 27, 27, 27, 27,
- 27, 27, 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 111, 111, 104, 104,
- 104, 104, 127, 127, 130, 130, 129, 129, 131, 131,
- 51, 51, 51, 51, 133, 133, 132, 132, 132, 132,
- 132, 134, 134, 119, 119, 122, 122, 118, 118, 136,
- 135, 135, 135, 135, 123, 123, 123, 123, 110, 110,
- 124, 124, 124, 124, 76, 137, 137, 138, 138, 138,
- 109, 109, 139, 139, 140, 140, 140, 140, 140, 125,
- 125, 125, 125, 142, 143, 141, 141, 141, 141, 141,
- 141, 141, 144, 144, 144
- );
-
- protected $ruleToLength = array(
- 1, 1, 2, 0, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 3, 5, 4,
- 3, 4, 2, 3, 1, 1, 7, 6, 3, 1,
- 3, 1, 3, 1, 1, 3, 1, 3, 1, 2,
- 3, 1, 3, 3, 1, 3, 2, 0, 1, 1,
- 1, 1, 1, 3, 5, 8, 3, 5, 9, 3,
- 2, 3, 2, 3, 2, 3, 3, 3, 3, 1,
- 2, 2, 5, 7, 9, 5, 6, 3, 3, 2,
- 2, 1, 1, 1, 0, 2, 8, 0, 4, 1,
- 3, 0, 1, 0, 1, 0, 1, 10, 7, 6,
- 5, 1, 2, 2, 0, 2, 0, 2, 0, 2,
- 1, 3, 1, 4, 1, 4, 1, 1, 4, 1,
- 3, 3, 3, 4, 4, 5, 0, 2, 4, 3,
- 1, 1, 1, 4, 0, 2, 3, 0, 2, 4,
- 0, 2, 0, 3, 1, 2, 1, 1, 0, 1,
- 3, 4, 6, 1, 1, 1, 0, 1, 0, 2,
- 2, 3, 3, 1, 3, 1, 2, 2, 3, 1,
- 1, 2, 4, 3, 1, 1, 3, 2, 0, 1,
- 3, 3, 9, 3, 1, 3, 0, 2, 4, 5,
- 4, 4, 4, 3, 1, 1, 1, 3, 1, 1,
- 0, 1, 1, 2, 1, 1, 1, 1, 1, 1,
- 1, 3, 1, 1, 3, 3, 1, 0, 1, 1,
- 3, 3, 4, 4, 1, 2, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 2,
- 2, 2, 2, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 2, 2, 2, 2, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 1, 3, 5, 4, 3,
- 4, 4, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1, 1, 3,
- 2, 1, 2, 10, 11, 3, 3, 2, 4, 4,
- 3, 4, 4, 4, 4, 7, 3, 2, 0, 4,
- 1, 3, 2, 2, 4, 6, 2, 2, 4, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 3, 3, 4, 4, 0, 2, 1, 0, 1,
- 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 3, 2, 1, 3, 1, 4,
- 3, 1, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 2, 2, 2, 2, 3, 3, 3, 3, 3, 3,
- 3, 3, 5, 4, 4, 3, 1, 3, 1, 1,
- 3, 3, 0, 2, 0, 1, 3, 1, 3, 1,
- 1, 1, 1, 1, 6, 4, 3, 4, 2, 4,
- 4, 1, 3, 1, 2, 1, 1, 4, 1, 1,
- 3, 6, 4, 4, 4, 4, 1, 4, 0, 1,
- 1, 3, 1, 1, 4, 3, 1, 1, 1, 0,
- 0, 2, 3, 1, 3, 1, 4, 2, 2, 2,
- 2, 1, 2, 1, 1, 1, 4, 3, 3, 3,
- 6, 3, 1, 1, 1
- );
-
- protected function initReduceCallbacks() {
- $this->reduceCallbacks = [
- 0 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 1 => function ($stackPos) {
- $this->semValue = $this->handleNamespaces($this->semStack[$stackPos-(1-1)]);
- },
- 2 => function ($stackPos) {
- if (is_array($this->semStack[$stackPos-(2-2)])) { $this->semValue = array_merge($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]); } else { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; };
- },
- 3 => function ($stackPos) {
- $this->semValue = array();
- },
- 4 => function ($stackPos) {
- $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); } else { $nop = null; };
- if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 5 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 6 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 7 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 8 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 9 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 10 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 11 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 12 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 13 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 14 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 15 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 16 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 17 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 18 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 19 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 20 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 21 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 22 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 23 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 24 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 25 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 26 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 27 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 28 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 29 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 30 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 31 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 32 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 33 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 34 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 35 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 36 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 37 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 38 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 39 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 40 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 41 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 42 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 43 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 44 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 45 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 46 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 47 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 48 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 49 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 50 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 51 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 52 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 53 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 54 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 55 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 56 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 57 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 58 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 59 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 60 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 61 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 62 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 63 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 64 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 65 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 66 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 67 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 68 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 69 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 70 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 71 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 72 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 73 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 74 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 75 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 76 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 77 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 78 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 79 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 80 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 81 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 82 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 83 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 84 => function ($stackPos) {
- $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 85 => function ($stackPos) {
- $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 86 => function ($stackPos) {
- $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 87 => function ($stackPos) {
- $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 88 => function ($stackPos) {
- $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 89 => function ($stackPos) {
- $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 90 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 91 => function ($stackPos) {
- $this->semValue = new Name(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 92 => function ($stackPos) {
- $this->semValue = new Expr\Variable(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 93 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 94 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 95 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 96 => function ($stackPos) {
- $this->semValue = new Stmt\HaltCompiler($this->lexer->handleHaltCompiler(), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 97 => function ($stackPos) {
- $this->semValue = new Stmt\Namespace_($this->semStack[$stackPos-(3-2)], null, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- $this->semValue->setAttribute('kind', Stmt\Namespace_::KIND_SEMICOLON);
- $this->checkNamespace($this->semValue);
- },
- 98 => function ($stackPos) {
- $this->semValue = new Stmt\Namespace_($this->semStack[$stackPos-(5-2)], $this->semStack[$stackPos-(5-4)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
- $this->semValue->setAttribute('kind', Stmt\Namespace_::KIND_BRACED);
- $this->checkNamespace($this->semValue);
- },
- 99 => function ($stackPos) {
- $this->semValue = new Stmt\Namespace_(null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- $this->semValue->setAttribute('kind', Stmt\Namespace_::KIND_BRACED);
- $this->checkNamespace($this->semValue);
- },
- 100 => function ($stackPos) {
- $this->semValue = new Stmt\Use_($this->semStack[$stackPos-(3-2)], Stmt\Use_::TYPE_NORMAL, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 101 => function ($stackPos) {
- $this->semValue = new Stmt\Use_($this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 102 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 103 => function ($stackPos) {
- $this->semValue = new Stmt\Const_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 104 => function ($stackPos) {
- $this->semValue = Stmt\Use_::TYPE_FUNCTION;
- },
- 105 => function ($stackPos) {
- $this->semValue = Stmt\Use_::TYPE_CONSTANT;
- },
- 106 => function ($stackPos) {
- $this->semValue = new Stmt\GroupUse($this->semStack[$stackPos-(7-3)], $this->semStack[$stackPos-(7-6)], $this->semStack[$stackPos-(7-2)], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
- },
- 107 => function ($stackPos) {
- $this->semValue = new Stmt\GroupUse($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-5)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
- },
- 108 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 109 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 110 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 111 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 112 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 113 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 114 => function ($stackPos) {
- $this->semValue = new Stmt\UseUse($this->semStack[$stackPos-(1-1)], null, Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->checkUseUse($this->semValue, $stackPos-(1-1));
- },
- 115 => function ($stackPos) {
- $this->semValue = new Stmt\UseUse($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); $this->checkUseUse($this->semValue, $stackPos-(3-3));
- },
- 116 => function ($stackPos) {
- $this->semValue = new Stmt\UseUse($this->semStack[$stackPos-(1-1)], null, Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->checkUseUse($this->semValue, $stackPos-(1-1));
- },
- 117 => function ($stackPos) {
- $this->semValue = new Stmt\UseUse($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); $this->checkUseUse($this->semValue, $stackPos-(3-3));
- },
- 118 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)]; $this->semValue->type = Stmt\Use_::TYPE_NORMAL;
- },
- 119 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-2)]; $this->semValue->type = $this->semStack[$stackPos-(2-1)];
- },
- 120 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 121 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 122 => function ($stackPos) {
- $this->semValue = new Node\Const_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 123 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 124 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 125 => function ($stackPos) {
- $this->semValue = new Node\Const_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 126 => function ($stackPos) {
- if (is_array($this->semStack[$stackPos-(2-2)])) { $this->semValue = array_merge($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]); } else { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; };
- },
- 127 => function ($stackPos) {
- $this->semValue = array();
- },
- 128 => function ($stackPos) {
- $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); } else { $nop = null; };
- if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 129 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 130 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 131 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 132 => function ($stackPos) {
- throw new Error('__HALT_COMPILER() can only be used from the outermost scope', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 133 => function ($stackPos) {
-
- if ($this->semStack[$stackPos-(3-2)]) {
- $this->semValue = $this->semStack[$stackPos-(3-2)]; $attrs = $this->startAttributeStack[$stackPos-(3-1)]; $stmts = $this->semValue; if (!empty($attrs['comments'])) {$stmts[0]->setAttribute('comments', array_merge($attrs['comments'], $stmts[0]->getAttribute('comments', []))); };
- } else {
- $startAttributes = $this->startAttributeStack[$stackPos-(3-1)]; if (isset($startAttributes['comments'])) { $this->semValue = new Stmt\Nop($startAttributes + $this->endAttributes); } else { $this->semValue = null; };
- if (null === $this->semValue) { $this->semValue = array(); }
- }
-
- },
- 134 => function ($stackPos) {
- $this->semValue = new Stmt\If_($this->semStack[$stackPos-(5-2)], ['stmts' => is_array($this->semStack[$stackPos-(5-3)]) ? $this->semStack[$stackPos-(5-3)] : array($this->semStack[$stackPos-(5-3)]), 'elseifs' => $this->semStack[$stackPos-(5-4)], 'else' => $this->semStack[$stackPos-(5-5)]], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
- },
- 135 => function ($stackPos) {
- $this->semValue = new Stmt\If_($this->semStack[$stackPos-(8-2)], ['stmts' => $this->semStack[$stackPos-(8-4)], 'elseifs' => $this->semStack[$stackPos-(8-5)], 'else' => $this->semStack[$stackPos-(8-6)]], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
- },
- 136 => function ($stackPos) {
- $this->semValue = new Stmt\While_($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 137 => function ($stackPos) {
- $this->semValue = new Stmt\Do_($this->semStack[$stackPos-(5-4)], is_array($this->semStack[$stackPos-(5-2)]) ? $this->semStack[$stackPos-(5-2)] : array($this->semStack[$stackPos-(5-2)]), $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
- },
- 138 => function ($stackPos) {
- $this->semValue = new Stmt\For_(['init' => $this->semStack[$stackPos-(9-3)], 'cond' => $this->semStack[$stackPos-(9-5)], 'loop' => $this->semStack[$stackPos-(9-7)], 'stmts' => $this->semStack[$stackPos-(9-9)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
- },
- 139 => function ($stackPos) {
- $this->semValue = new Stmt\Switch_($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 140 => function ($stackPos) {
- $this->semValue = new Stmt\Break_(null, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 141 => function ($stackPos) {
- $this->semValue = new Stmt\Break_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 142 => function ($stackPos) {
- $this->semValue = new Stmt\Continue_(null, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 143 => function ($stackPos) {
- $this->semValue = new Stmt\Continue_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 144 => function ($stackPos) {
- $this->semValue = new Stmt\Return_(null, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 145 => function ($stackPos) {
- $this->semValue = new Stmt\Return_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 146 => function ($stackPos) {
- $this->semValue = new Stmt\Global_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 147 => function ($stackPos) {
- $this->semValue = new Stmt\Static_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 148 => function ($stackPos) {
- $this->semValue = new Stmt\Echo_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 149 => function ($stackPos) {
- $this->semValue = new Stmt\InlineHTML($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 150 => function ($stackPos) {
- $this->semValue = new Stmt\Expression($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 151 => function ($stackPos) {
- $this->semValue = new Stmt\Expression($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 152 => function ($stackPos) {
- $this->semValue = new Stmt\Unset_($this->semStack[$stackPos-(5-3)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
- },
- 153 => function ($stackPos) {
- $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos-(7-3)], $this->semStack[$stackPos-(7-5)][0], ['keyVar' => null, 'byRef' => $this->semStack[$stackPos-(7-5)][1], 'stmts' => $this->semStack[$stackPos-(7-7)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
- },
- 154 => function ($stackPos) {
- $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos-(9-3)], $this->semStack[$stackPos-(9-7)][0], ['keyVar' => $this->semStack[$stackPos-(9-5)], 'byRef' => $this->semStack[$stackPos-(9-7)][1], 'stmts' => $this->semStack[$stackPos-(9-9)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
- },
- 155 => function ($stackPos) {
- $this->semValue = new Stmt\Declare_($this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
- },
- 156 => function ($stackPos) {
- $this->semValue = new Stmt\TryCatch($this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-5)], $this->semStack[$stackPos-(6-6)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); $this->checkTryCatch($this->semValue);
- },
- 157 => function ($stackPos) {
- $this->semValue = new Stmt\Throw_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 158 => function ($stackPos) {
- $this->semValue = new Stmt\Goto_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 159 => function ($stackPos) {
- $this->semValue = new Stmt\Label($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 160 => function ($stackPos) {
- $this->semValue = new Stmt\Expression($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 161 => function ($stackPos) {
- $this->semValue = array(); /* means: no statement */
- },
- 162 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 163 => function ($stackPos) {
- $startAttributes = $this->startAttributeStack[$stackPos-(1-1)]; if (isset($startAttributes['comments'])) { $this->semValue = new Stmt\Nop($startAttributes + $this->endAttributes); } else { $this->semValue = null; };
- if ($this->semValue === null) $this->semValue = array(); /* means: no statement */
- },
- 164 => function ($stackPos) {
- $this->semValue = array();
- },
- 165 => function ($stackPos) {
- $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 166 => function ($stackPos) {
- $this->semValue = new Stmt\Catch_(array($this->semStack[$stackPos-(8-3)]), $this->semStack[$stackPos-(8-4)], $this->semStack[$stackPos-(8-7)], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
- },
- 167 => function ($stackPos) {
- $this->semValue = null;
- },
- 168 => function ($stackPos) {
- $this->semValue = new Stmt\Finally_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 169 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 170 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 171 => function ($stackPos) {
- $this->semValue = false;
- },
- 172 => function ($stackPos) {
- $this->semValue = true;
- },
- 173 => function ($stackPos) {
- $this->semValue = false;
- },
- 174 => function ($stackPos) {
- $this->semValue = true;
- },
- 175 => function ($stackPos) {
- $this->semValue = false;
- },
- 176 => function ($stackPos) {
- $this->semValue = true;
- },
- 177 => function ($stackPos) {
- $this->semValue = new Stmt\Function_($this->semStack[$stackPos-(10-3)], ['byRef' => $this->semStack[$stackPos-(10-2)], 'params' => $this->semStack[$stackPos-(10-5)], 'returnType' => $this->semStack[$stackPos-(10-7)], 'stmts' => $this->semStack[$stackPos-(10-9)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes);
- },
- 178 => function ($stackPos) {
- $this->semValue = new Stmt\Class_($this->semStack[$stackPos-(7-2)], ['type' => $this->semStack[$stackPos-(7-1)], 'extends' => $this->semStack[$stackPos-(7-3)], 'implements' => $this->semStack[$stackPos-(7-4)], 'stmts' => $this->semStack[$stackPos-(7-6)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
- $this->checkClass($this->semValue, $stackPos-(7-2));
- },
- 179 => function ($stackPos) {
- $this->semValue = new Stmt\Interface_($this->semStack[$stackPos-(6-2)], ['extends' => $this->semStack[$stackPos-(6-3)], 'stmts' => $this->semStack[$stackPos-(6-5)]], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
- $this->checkInterface($this->semValue, $stackPos-(6-2));
- },
- 180 => function ($stackPos) {
- $this->semValue = new Stmt\Trait_($this->semStack[$stackPos-(5-2)], ['stmts' => $this->semStack[$stackPos-(5-4)]], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
- },
- 181 => function ($stackPos) {
- $this->semValue = 0;
- },
- 182 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT;
- },
- 183 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_FINAL;
- },
- 184 => function ($stackPos) {
- $this->semValue = null;
- },
- 185 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-2)];
- },
- 186 => function ($stackPos) {
- $this->semValue = array();
- },
- 187 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-2)];
- },
- 188 => function ($stackPos) {
- $this->semValue = array();
- },
- 189 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-2)];
- },
- 190 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 191 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 192 => function ($stackPos) {
- $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
- },
- 193 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(4-2)];
- },
- 194 => function ($stackPos) {
- $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
- },
- 195 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(4-2)];
- },
- 196 => function ($stackPos) {
- $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
- },
- 197 => function ($stackPos) {
- $this->semValue = null;
- },
- 198 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(4-2)];
- },
- 199 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 200 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 201 => function ($stackPos) {
- $this->semValue = new Stmt\DeclareDeclare($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 202 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
- },
- 203 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(4-3)];
- },
- 204 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(4-2)];
- },
- 205 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(5-3)];
- },
- 206 => function ($stackPos) {
- $this->semValue = array();
- },
- 207 => function ($stackPos) {
- $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 208 => function ($stackPos) {
- $this->semValue = new Stmt\Case_($this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 209 => function ($stackPos) {
- $this->semValue = new Stmt\Case_(null, $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 210 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 211 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 212 => function ($stackPos) {
- $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
- },
- 213 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(4-2)];
- },
- 214 => function ($stackPos) {
- $this->semValue = array();
- },
- 215 => function ($stackPos) {
- $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 216 => function ($stackPos) {
- $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos-(3-2)], is_array($this->semStack[$stackPos-(3-3)]) ? $this->semStack[$stackPos-(3-3)] : array($this->semStack[$stackPos-(3-3)]), $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 217 => function ($stackPos) {
- $this->semValue = array();
- },
- 218 => function ($stackPos) {
- $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 219 => function ($stackPos) {
- $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 220 => function ($stackPos) {
- $this->semValue = null;
- },
- 221 => function ($stackPos) {
- $this->semValue = new Stmt\Else_(is_array($this->semStack[$stackPos-(2-2)]) ? $this->semStack[$stackPos-(2-2)] : array($this->semStack[$stackPos-(2-2)]), $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 222 => function ($stackPos) {
- $this->semValue = null;
- },
- 223 => function ($stackPos) {
- $this->semValue = new Stmt\Else_($this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 224 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
- },
- 225 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(2-2)], true);
- },
- 226 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
- },
- 227 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 228 => function ($stackPos) {
- $this->semValue = array();
- },
- 229 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 230 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 231 => function ($stackPos) {
- $this->semValue = new Node\Param($this->semStack[$stackPos-(4-4)], null, $this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); $this->checkParam($this->semValue);
- },
- 232 => function ($stackPos) {
- $this->semValue = new Node\Param($this->semStack[$stackPos-(6-4)], $this->semStack[$stackPos-(6-6)], $this->semStack[$stackPos-(6-1)], $this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-3)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); $this->checkParam($this->semValue);
- },
- 233 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 234 => function ($stackPos) {
- $this->semValue = new Node\Identifier('array', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 235 => function ($stackPos) {
- $this->semValue = new Node\Identifier('callable', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 236 => function ($stackPos) {
- $this->semValue = null;
- },
- 237 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 238 => function ($stackPos) {
- $this->semValue = null;
- },
- 239 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-2)];
- },
- 240 => function ($stackPos) {
- $this->semValue = array();
- },
- 241 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
- },
- 242 => function ($stackPos) {
- $this->semValue = array(new Node\Arg($this->semStack[$stackPos-(3-2)], false, false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes));
- },
- 243 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 244 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 245 => function ($stackPos) {
- $this->semValue = new Node\Arg($this->semStack[$stackPos-(1-1)], false, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 246 => function ($stackPos) {
- $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], true, false, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 247 => function ($stackPos) {
- $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], false, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 248 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 249 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 250 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 251 => function ($stackPos) {
- $this->semValue = new Expr\Variable($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 252 => function ($stackPos) {
- $this->semValue = new Expr\Variable($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 253 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 254 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 255 => function ($stackPos) {
- $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 256 => function ($stackPos) {
- $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 257 => function ($stackPos) {
- if ($this->semStack[$stackPos-(2-2)] !== null) { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; }
- },
- 258 => function ($stackPos) {
- $this->semValue = array();
- },
- 259 => function ($stackPos) {
- $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); } else { $nop = null; };
- if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 260 => function ($stackPos) {
- $this->semValue = new Stmt\Property($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); $this->checkProperty($this->semValue, $stackPos-(3-1));
- },
- 261 => function ($stackPos) {
- $this->semValue = new Stmt\ClassConst($this->semStack[$stackPos-(3-2)], 0, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 262 => function ($stackPos) {
- $this->semValue = new Stmt\ClassMethod($this->semStack[$stackPos-(9-4)], ['type' => $this->semStack[$stackPos-(9-1)], 'byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-6)], 'returnType' => $this->semStack[$stackPos-(9-8)], 'stmts' => $this->semStack[$stackPos-(9-9)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
- $this->checkClassMethod($this->semValue, $stackPos-(9-1));
- },
- 263 => function ($stackPos) {
- $this->semValue = new Stmt\TraitUse($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 264 => function ($stackPos) {
- $this->semValue = array();
- },
- 265 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
- },
- 266 => function ($stackPos) {
- $this->semValue = array();
- },
- 267 => function ($stackPos) {
- $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 268 => function ($stackPos) {
- $this->semValue = new Stmt\TraitUseAdaptation\Precedence($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 269 => function ($stackPos) {
- $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(5-1)][0], $this->semStack[$stackPos-(5-1)][1], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-4)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
- },
- 270 => function ($stackPos) {
- $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], $this->semStack[$stackPos-(4-3)], null, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 271 => function ($stackPos) {
- $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 272 => function ($stackPos) {
- $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 273 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
- },
- 274 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 275 => function ($stackPos) {
- $this->semValue = array(null, $this->semStack[$stackPos-(1-1)]);
- },
- 276 => function ($stackPos) {
- $this->semValue = null;
- },
- 277 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
- },
- 278 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 279 => function ($stackPos) {
- $this->semValue = 0;
- },
- 280 => function ($stackPos) {
- $this->semValue = 0;
- },
- 281 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 282 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 283 => function ($stackPos) {
- $this->checkModifier($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $this->semValue = $this->semStack[$stackPos-(2-1)] | $this->semStack[$stackPos-(2-2)];
- },
- 284 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_PUBLIC;
- },
- 285 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_PROTECTED;
- },
- 286 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_PRIVATE;
- },
- 287 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_STATIC;
- },
- 288 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT;
- },
- 289 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_FINAL;
- },
- 290 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 291 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 292 => function ($stackPos) {
- $this->semValue = new Node\VarLikeIdentifier(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 293 => function ($stackPos) {
- $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 294 => function ($stackPos) {
- $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 295 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 296 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 297 => function ($stackPos) {
- $this->semValue = array();
- },
- 298 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 299 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 300 => function ($stackPos) {
- $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 301 => function ($stackPos) {
- $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 302 => function ($stackPos) {
- $this->semValue = new Expr\AssignRef($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 303 => function ($stackPos) {
- $this->semValue = new Expr\AssignRef($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 304 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 305 => function ($stackPos) {
- $this->semValue = new Expr\Clone_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 306 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 307 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 308 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 309 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 310 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 311 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 312 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 313 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 314 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 315 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 316 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 317 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 318 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 319 => function ($stackPos) {
- $this->semValue = new Expr\PostInc($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 320 => function ($stackPos) {
- $this->semValue = new Expr\PreInc($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 321 => function ($stackPos) {
- $this->semValue = new Expr\PostDec($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 322 => function ($stackPos) {
- $this->semValue = new Expr\PreDec($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 323 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\BooleanOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 324 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\BooleanAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 325 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\LogicalOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 326 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\LogicalAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 327 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\LogicalXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 328 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 329 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 330 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 331 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 332 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 333 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 334 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 335 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 336 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 337 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 338 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 339 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 340 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 341 => function ($stackPos) {
- $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 342 => function ($stackPos) {
- $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 343 => function ($stackPos) {
- $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 344 => function ($stackPos) {
- $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 345 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Identical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 346 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\NotIdentical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 347 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Equal($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 348 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\NotEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 349 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Spaceship($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 350 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Smaller($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 351 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\SmallerOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 352 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Greater($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 353 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\GreaterOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 354 => function ($stackPos) {
- $this->semValue = new Expr\Instanceof_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 355 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 356 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
- },
- 357 => function ($stackPos) {
- $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(5-1)], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
- },
- 358 => function ($stackPos) {
- $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(4-1)], null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 359 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 360 => function ($stackPos) {
- $this->semValue = new Expr\Isset_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 361 => function ($stackPos) {
- $this->semValue = new Expr\Empty_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 362 => function ($stackPos) {
- $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 363 => function ($stackPos) {
- $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 364 => function ($stackPos) {
- $this->semValue = new Expr\Eval_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 365 => function ($stackPos) {
- $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 366 => function ($stackPos) {
- $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 367 => function ($stackPos) {
- $this->semValue = new Expr\Cast\Int_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 368 => function ($stackPos) {
- $attrs = $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes;
- $attrs['kind'] = $this->getFloatCastKind($this->semStack[$stackPos-(2-1)]);
- $this->semValue = new Expr\Cast\Double($this->semStack[$stackPos-(2-2)], $attrs);
- },
- 369 => function ($stackPos) {
- $this->semValue = new Expr\Cast\String_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 370 => function ($stackPos) {
- $this->semValue = new Expr\Cast\Array_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 371 => function ($stackPos) {
- $this->semValue = new Expr\Cast\Object_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 372 => function ($stackPos) {
- $this->semValue = new Expr\Cast\Bool_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 373 => function ($stackPos) {
- $this->semValue = new Expr\Cast\Unset_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 374 => function ($stackPos) {
- $attrs = $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes;
- $attrs['kind'] = strtolower($this->semStack[$stackPos-(2-1)]) === 'exit' ? Expr\Exit_::KIND_EXIT : Expr\Exit_::KIND_DIE;
- $this->semValue = new Expr\Exit_($this->semStack[$stackPos-(2-2)], $attrs);
- },
- 375 => function ($stackPos) {
- $this->semValue = new Expr\ErrorSuppress($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 376 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 377 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 378 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 379 => function ($stackPos) {
- $this->semValue = new Expr\ShellExec($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 380 => function ($stackPos) {
- $this->semValue = new Expr\Print_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 381 => function ($stackPos) {
- $this->semValue = new Expr\Yield_(null, null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 382 => function ($stackPos) {
- $this->semValue = new Expr\YieldFrom($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 383 => function ($stackPos) {
- $this->semValue = new Expr\Closure(['static' => false, 'byRef' => $this->semStack[$stackPos-(10-2)], 'params' => $this->semStack[$stackPos-(10-4)], 'uses' => $this->semStack[$stackPos-(10-6)], 'returnType' => $this->semStack[$stackPos-(10-7)], 'stmts' => $this->semStack[$stackPos-(10-9)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes);
- },
- 384 => function ($stackPos) {
- $this->semValue = new Expr\Closure(['static' => true, 'byRef' => $this->semStack[$stackPos-(11-3)], 'params' => $this->semStack[$stackPos-(11-5)], 'uses' => $this->semStack[$stackPos-(11-7)], 'returnType' => $this->semStack[$stackPos-(11-8)], 'stmts' => $this->semStack[$stackPos-(11-10)]], $this->startAttributeStack[$stackPos-(11-1)] + $this->endAttributes);
- },
- 385 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
- },
- 386 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
- },
- 387 => function ($stackPos) {
- $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(2-2)], null, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 388 => function ($stackPos) {
- $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 389 => function ($stackPos) {
- $attrs = $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes; $attrs['kind'] = Expr\Array_::KIND_LONG;
- $this->semValue = new Expr\Array_($this->semStack[$stackPos-(4-3)], $attrs);
- },
- 390 => function ($stackPos) {
- $attrs = $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes; $attrs['kind'] = Expr\Array_::KIND_SHORT;
- $this->semValue = new Expr\Array_($this->semStack[$stackPos-(3-2)], $attrs);
- },
- 391 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 392 => function ($stackPos) {
- $attrs = $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes; $attrs['kind'] = ($this->semStack[$stackPos-(4-1)][0] === "'" || ($this->semStack[$stackPos-(4-1)][1] === "'" && ($this->semStack[$stackPos-(4-1)][0] === 'b' || $this->semStack[$stackPos-(4-1)][0] === 'B')) ? Scalar\String_::KIND_SINGLE_QUOTED : Scalar\String_::KIND_DOUBLE_QUOTED);
- $this->semValue = new Expr\ArrayDimFetch(new Scalar\String_(Scalar\String_::parse($this->semStack[$stackPos-(4-1)]), $attrs), $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 393 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 394 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 395 => function ($stackPos) {
- $this->semValue = array(new Stmt\Class_(null, ['type' => 0, 'extends' => $this->semStack[$stackPos-(7-3)], 'implements' => $this->semStack[$stackPos-(7-4)], 'stmts' => $this->semStack[$stackPos-(7-6)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes), $this->semStack[$stackPos-(7-2)]);
- $this->checkClass($this->semValue[0], -1);
- },
- 396 => function ($stackPos) {
- $this->semValue = new Expr\New_($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 397 => function ($stackPos) {
- list($class, $ctorArgs) = $this->semStack[$stackPos-(2-2)]; $this->semValue = new Expr\New_($class, $ctorArgs, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 398 => function ($stackPos) {
- $this->semValue = array();
- },
- 399 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(4-3)];
- },
- 400 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 401 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 402 => function ($stackPos) {
- $this->semValue = new Expr\ClosureUse($this->semStack[$stackPos-(2-2)], $this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 403 => function ($stackPos) {
- $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 404 => function ($stackPos) {
- $this->semValue = new Expr\StaticCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 405 => function ($stackPos) {
- $this->semValue = new Expr\StaticCall($this->semStack[$stackPos-(6-1)], $this->semStack[$stackPos-(6-4)], $this->semStack[$stackPos-(6-6)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
- },
- 406 => function ($stackPos) {
- $this->semValue = $this->fixupPhp5StaticPropCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 407 => function ($stackPos) {
- $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 408 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 409 => function ($stackPos) {
- $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 410 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 411 => function ($stackPos) {
- $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 412 => function ($stackPos) {
- $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 413 => function ($stackPos) {
- $this->semValue = new Name\FullyQualified(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 414 => function ($stackPos) {
- $this->semValue = new Name\Relative(substr($this->semStack[$stackPos-(1-1)], 10), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 415 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 416 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 417 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 418 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 419 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 420 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 421 => function ($stackPos) {
- $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 422 => function ($stackPos) {
- $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 423 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 424 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 425 => function ($stackPos) {
- $this->semValue = null;
- },
- 426 => function ($stackPos) {
- $this->semValue = null;
- },
- 427 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 428 => function ($stackPos) {
- $this->semValue = array();
- },
- 429 => function ($stackPos) {
- $this->semValue = array(new Scalar\EncapsedStringPart(Scalar\String_::parseEscapeSequences($this->semStack[$stackPos-(1-1)], '`', false), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes));
- },
- 430 => function ($stackPos) {
- foreach ($this->semStack[$stackPos-(1-1)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', false); } }; $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 431 => function ($stackPos) {
- $this->semValue = array();
- },
- 432 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 433 => function ($stackPos) {
- $this->semValue = $this->parseLNumber($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes, true);
- },
- 434 => function ($stackPos) {
- $this->semValue = new Scalar\DNumber(Scalar\DNumber::parse($this->semStack[$stackPos-(1-1)]), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 435 => function ($stackPos) {
- $attrs = $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes; $attrs['kind'] = ($this->semStack[$stackPos-(1-1)][0] === "'" || ($this->semStack[$stackPos-(1-1)][1] === "'" && ($this->semStack[$stackPos-(1-1)][0] === 'b' || $this->semStack[$stackPos-(1-1)][0] === 'B')) ? Scalar\String_::KIND_SINGLE_QUOTED : Scalar\String_::KIND_DOUBLE_QUOTED);
- $this->semValue = new Scalar\String_(Scalar\String_::parse($this->semStack[$stackPos-(1-1)], false), $attrs);
- },
- 436 => function ($stackPos) {
- $this->semValue = new Scalar\MagicConst\Line($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 437 => function ($stackPos) {
- $this->semValue = new Scalar\MagicConst\File($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 438 => function ($stackPos) {
- $this->semValue = new Scalar\MagicConst\Dir($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 439 => function ($stackPos) {
- $this->semValue = new Scalar\MagicConst\Class_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 440 => function ($stackPos) {
- $this->semValue = new Scalar\MagicConst\Trait_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 441 => function ($stackPos) {
- $this->semValue = new Scalar\MagicConst\Method($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 442 => function ($stackPos) {
- $this->semValue = new Scalar\MagicConst\Function_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 443 => function ($stackPos) {
- $this->semValue = new Scalar\MagicConst\Namespace_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 444 => function ($stackPos) {
- $this->semValue = $this->parseDocString($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)], false);
- },
- 445 => function ($stackPos) {
- $this->semValue = $this->parseDocString($this->semStack[$stackPos-(2-1)], '', $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(2-2)] + $this->endAttributeStack[$stackPos-(2-2)], false);
- },
- 446 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 447 => function ($stackPos) {
- $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 448 => function ($stackPos) {
- $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 449 => function ($stackPos) {
- $this->semValue = new Expr\Array_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 450 => function ($stackPos) {
- $this->semValue = new Expr\Array_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 451 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 452 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\BooleanOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 453 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\BooleanAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 454 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\LogicalOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 455 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\LogicalAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 456 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\LogicalXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 457 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 458 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 459 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 460 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 461 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 462 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 463 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 464 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 465 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 466 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 467 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 468 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 469 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 470 => function ($stackPos) {
- $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 471 => function ($stackPos) {
- $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 472 => function ($stackPos) {
- $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 473 => function ($stackPos) {
- $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 474 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Identical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 475 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\NotIdentical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 476 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Equal($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 477 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\NotEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 478 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Smaller($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 479 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\SmallerOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 480 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Greater($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 481 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\GreaterOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 482 => function ($stackPos) {
- $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(5-1)], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
- },
- 483 => function ($stackPos) {
- $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(4-1)], null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 484 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 485 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
- },
- 486 => function ($stackPos) {
- $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 487 => function ($stackPos) {
- $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 488 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 489 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 490 => function ($stackPos) {
- $attrs = $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes; $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED;
- foreach ($this->semStack[$stackPos-(3-2)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '"', true); } }; $this->semValue = new Scalar\Encapsed($this->semStack[$stackPos-(3-2)], $attrs);
- },
- 491 => function ($stackPos) {
- $this->semValue = $this->parseDocString($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)], true);
- },
- 492 => function ($stackPos) {
- $this->semValue = array();
- },
- 493 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 494 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 495 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 496 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 497 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 498 => function ($stackPos) {
- $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 499 => function ($stackPos) {
- $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 500 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 501 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 502 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 503 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 504 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
- },
- 505 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 506 => function ($stackPos) {
- $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 507 => function ($stackPos) {
- $this->semValue = new Expr\MethodCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 508 => function ($stackPos) {
- $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 509 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 510 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 511 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 512 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
- },
- 513 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 514 => function ($stackPos) {
- $this->semValue = new Expr\Variable($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 515 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 516 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 517 => function ($stackPos) {
- $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 518 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 519 => function ($stackPos) {
- $var = substr($this->semStack[$stackPos-(1-1)], 1); $this->semValue = \is_string($var) ? new Node\VarLikeIdentifier($var, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes) : $var;
- },
- 520 => function ($stackPos) {
- $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 521 => function ($stackPos) {
- $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(6-1)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
- },
- 522 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 523 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 524 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 525 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 526 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 527 => function ($stackPos) {
- $this->semValue = new Expr\Variable($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 528 => function ($stackPos) {
- $this->semValue = null;
- },
- 529 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 530 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 531 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
- },
- 532 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 533 => function ($stackPos) {
- $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2;
- },
- 534 => function ($stackPos) {
- $this->semValue = new Expr\List_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 535 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 536 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 537 => function ($stackPos) {
- $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 538 => function ($stackPos) {
- $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 539 => function ($stackPos) {
- $this->semValue = null;
- },
- 540 => function ($stackPos) {
- $this->semValue = array();
- },
- 541 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 542 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 543 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 544 => function ($stackPos) {
- $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 545 => function ($stackPos) {
- $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 546 => function ($stackPos) {
- $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-1)], true, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 547 => function ($stackPos) {
- $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 548 => function ($stackPos) {
- $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, false, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 549 => function ($stackPos) {
- $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 550 => function ($stackPos) {
- $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 551 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 552 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]);
- },
- 553 => function ($stackPos) {
- $this->semValue = new Scalar\EncapsedStringPart($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 554 => function ($stackPos) {
- $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 555 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 556 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 557 => function ($stackPos) {
- $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 558 => function ($stackPos) {
- $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 559 => function ($stackPos) {
- $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 560 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-4)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
- },
- 561 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
- },
- 562 => function ($stackPos) {
- $this->semValue = new Scalar\String_($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 563 => function ($stackPos) {
- $this->semValue = $this->parseNumString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 564 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- ];
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php b/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php
deleted file mode 100644
index 7a0854b3..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php
+++ /dev/null
@@ -1,2804 +0,0 @@
-'",
- "T_IS_GREATER_OR_EQUAL",
- "T_SL",
- "T_SR",
- "'+'",
- "'-'",
- "'.'",
- "'*'",
- "'/'",
- "'%'",
- "'!'",
- "T_INSTANCEOF",
- "'~'",
- "T_INC",
- "T_DEC",
- "T_INT_CAST",
- "T_DOUBLE_CAST",
- "T_STRING_CAST",
- "T_ARRAY_CAST",
- "T_OBJECT_CAST",
- "T_BOOL_CAST",
- "T_UNSET_CAST",
- "'@'",
- "T_POW",
- "'['",
- "T_NEW",
- "T_CLONE",
- "T_EXIT",
- "T_IF",
- "T_ELSEIF",
- "T_ELSE",
- "T_ENDIF",
- "T_LNUMBER",
- "T_DNUMBER",
- "T_STRING",
- "T_STRING_VARNAME",
- "T_VARIABLE",
- "T_NUM_STRING",
- "T_INLINE_HTML",
- "T_ENCAPSED_AND_WHITESPACE",
- "T_CONSTANT_ENCAPSED_STRING",
- "T_ECHO",
- "T_DO",
- "T_WHILE",
- "T_ENDWHILE",
- "T_FOR",
- "T_ENDFOR",
- "T_FOREACH",
- "T_ENDFOREACH",
- "T_DECLARE",
- "T_ENDDECLARE",
- "T_AS",
- "T_SWITCH",
- "T_MATCH",
- "T_ENDSWITCH",
- "T_CASE",
- "T_DEFAULT",
- "T_BREAK",
- "T_CONTINUE",
- "T_GOTO",
- "T_FUNCTION",
- "T_FN",
- "T_CONST",
- "T_RETURN",
- "T_TRY",
- "T_CATCH",
- "T_FINALLY",
- "T_USE",
- "T_INSTEADOF",
- "T_GLOBAL",
- "T_STATIC",
- "T_ABSTRACT",
- "T_FINAL",
- "T_PRIVATE",
- "T_PROTECTED",
- "T_PUBLIC",
- "T_READONLY",
- "T_VAR",
- "T_UNSET",
- "T_ISSET",
- "T_EMPTY",
- "T_HALT_COMPILER",
- "T_CLASS",
- "T_TRAIT",
- "T_INTERFACE",
- "T_ENUM",
- "T_EXTENDS",
- "T_IMPLEMENTS",
- "T_OBJECT_OPERATOR",
- "T_NULLSAFE_OBJECT_OPERATOR",
- "T_LIST",
- "T_ARRAY",
- "T_CALLABLE",
- "T_CLASS_C",
- "T_TRAIT_C",
- "T_METHOD_C",
- "T_FUNC_C",
- "T_LINE",
- "T_FILE",
- "T_START_HEREDOC",
- "T_END_HEREDOC",
- "T_DOLLAR_OPEN_CURLY_BRACES",
- "T_CURLY_OPEN",
- "T_PAAMAYIM_NEKUDOTAYIM",
- "T_NAMESPACE",
- "T_NS_C",
- "T_DIR",
- "T_NS_SEPARATOR",
- "T_ELLIPSIS",
- "T_NAME_FULLY_QUALIFIED",
- "T_NAME_QUALIFIED",
- "T_NAME_RELATIVE",
- "T_ATTRIBUTE",
- "';'",
- "']'",
- "'{'",
- "'}'",
- "'('",
- "')'",
- "'`'",
- "'\"'",
- "'$'"
- );
-
- protected $tokenToSymbol = array(
- 0, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 56, 166, 168, 167, 55, 168, 168,
- 163, 164, 53, 50, 8, 51, 52, 54, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 31, 159,
- 44, 16, 46, 30, 68, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 70, 168, 160, 36, 168, 165, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 161, 35, 162, 58, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 1, 2, 3, 4,
- 5, 6, 7, 9, 10, 11, 12, 13, 14, 15,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 32, 33, 34, 37, 38, 39, 40,
- 41, 42, 43, 45, 47, 48, 49, 57, 59, 60,
- 61, 62, 63, 64, 65, 66, 67, 69, 71, 72,
- 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
- 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
- 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
- 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
- 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
- 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
- 153, 154, 155, 156, 157, 158
- );
-
- protected $action = array(
- 132, 133, 134, 569, 135, 136, 0, 722, 723, 724,
- 137, 37, 834, 911, 835, 469,-32766,-32766,-32766,-32767,
- -32767,-32767,-32767, 101, 102, 103, 104, 105, 1068, 1069,
- 1070, 1067, 1066, 1065, 1071, 716, 715,-32766,-32766,-32766,
- -32766,-32766,-32766,-32766,-32766,-32766,-32767,-32767,-32767,-32767,
- -32767, 545, 546,-32766,-32766, 725,-32766,-32766,-32766, 998,
- 999, 806, 922, 447, 448, 449, 370, 371, 2, 267,
- 138, 396, 729, 730, 731, 732, 414,-32766, 420,-32766,
- -32766,-32766,-32766,-32766, 990, 733, 734, 735, 736, 737,
- 738, 739, 740, 741, 742, 743, 763, 570, 764, 765,
- 766, 767, 755, 756, 336, 337, 758, 759, 744, 745,
- 746, 748, 749, 750, 346, 790, 791, 792, 793, 794,
- 795, 751, 752, 571, 572, 784, 775, 773, 774, 787,
- 770, 771, 283, 420, 573, 574, 769, 575, 576, 577,
- 578, 579, 580, 598, -575, 470, 14, 798, 772, 581,
- 582, -575, 139,-32766,-32766,-32766, 132, 133, 134, 569,
- 135, 136, 1017, 722, 723, 724, 137, 37, 1060,-32766,
- -32766,-32766, 1303, 696,-32766, 1304,-32766,-32766,-32766,-32766,
- -32766,-32766,-32766, 1068, 1069, 1070, 1067, 1066, 1065, 1071,
- -32766, 716, 715, 372, 371, 1258,-32766,-32766,-32766, -572,
- 106, 107, 108, 414, 270, 891, -572, 240, 1193, 1192,
- 1194, 725,-32766,-32766,-32766, 1046, 109,-32766,-32766,-32766,
- -32766, 986, 985, 984, 987, 267, 138, 396, 729, 730,
- 731, 732, 12,-32766, 420,-32766,-32766,-32766,-32766, 998,
- 999, 733, 734, 735, 736, 737, 738, 739, 740, 741,
- 742, 743, 763, 570, 764, 765, 766, 767, 755, 756,
- 336, 337, 758, 759, 744, 745, 746, 748, 749, 750,
- 346, 790, 791, 792, 793, 794, 795, 751, 752, 571,
- 572, 784, 775, 773, 774, 787, 770, 771, 881, 321,
- 573, 574, 769, 575, 576, 577, 578, 579, 580,-32766,
- 82, 83, 84, -575, 772, 581, 582, -575, 148, 747,
- 717, 718, 719, 720, 721, 1278, 722, 723, 724, 760,
- 761, 36, 1277, 85, 86, 87, 88, 89, 90, 91,
- 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
- 102, 103, 104, 105, 106, 107, 108, 996, 270, 150,
- -32766,-32766,-32766, 455, 456, 81, 34, -264, -572, 1016,
- 109, 320, -572, 893, 725, 682, 803, 128, 998, 999,
- 592,-32766, 1044,-32766,-32766,-32766, 809, 151, 726, 727,
- 728, 729, 730, 731, 732, -88, 1198, 796, 278, -526,
- 283,-32766,-32766,-32766, 733, 734, 735, 736, 737, 738,
- 739, 740, 741, 742, 743, 763, 786, 764, 765, 766,
- 767, 755, 756, 757, 785, 758, 759, 744, 745, 746,
- 748, 749, 750, 789, 790, 791, 792, 793, 794, 795,
- 751, 752, 753, 754, 784, 775, 773, 774, 787, 770,
- 771, 144, 804, 762, 768, 769, 776, 777, 779, 778,
- 780, 781, -314, -526, -526, -193, -192, 772, 783, 782,
- 49, 50, 51, 500, 52, 53, 239, 807, -526, -86,
- 54, 55, -111, 56, 996, 253,-32766, -111, 800, -111,
- -526, 541, -532, -352, 300, -352, 304, -111, -111, -111,
- -111, -111, -111, -111, -111, 998, 999, 998, 999, 153,
- -32766,-32766,-32766, 1191, 807, 126, 306, 1293, 57, 58,
- 103, 104, 105, -111, 59, 1218, 60, 246, 247, 61,
- 62, 63, 64, 65, 66, 67, 68, -525, 27, 268,
- 69, 436, 501, -328, 808, -86, 1224, 1225, 502, 1189,
- 807, 1198, 1230, 293, 1222, 41, 24, 503, 74, 504,
- 953, 505, 320, 506, 802, 154, 507, 508, 279, 684,
- 280, 43, 44, 437, 367, 366, 891, 45, 509, 35,
- 249, -16, -566, 358, 332, 318, -566, 1198, 1193, 1192,
- 1194, -527, 510, 511, 512, 333, -524, 1274, 48, 716,
- 715, -525, -525, 334, 513, 514, 807, 1212, 1213, 1214,
- 1215, 1209, 1210, 292, 360, 284, -525, 285, -314, 1216,
- 1211, -193, -192, 1193, 1192, 1194, 293, 891, -525, 364,
- -531, 70, 807, 316, 317, 320, 31, 110, 111, 112,
- 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
- -153, -153, -153, 638, 25, -527, -527, 687, 379, 881,
- -524, -524, 296, 297, 891, -153, 432, -153, 807, -153,
- -527, -153, 716, 715, 433, -524, 798, 363, -111, 1105,
- 1107, 365, -527, 434, 891, 140, 435, -524, 954, 127,
- -524, 320, -111, -111, 688, 813, 381, -529, 11, 834,
- 155, 835, 867, -111, -111, -111, -111, 47, 293,-32766,
- 881, 654, 655, 74, 689, 1191, 1045, 320, 708, 149,
- 399, 157,-32766,-32766,-32766, 32,-32766, -79,-32766, 123,
- -32766, 716, 715,-32766, 893, 891, 682, -153,-32766,-32766,
- -32766, 716, 715, 891,-32766,-32766, 124, 881, 129, 74,
- -32766, 411, 130, 320, -524, -524, 143, 141, -75,-32766,
- 158, -529, -529, 320, 27, 691, 159, 881, 160, -524,
- 161, 294, 295, 698, 368, 369, 807, -73,-32766, -72,
- 1222, -524, 373, 374, 1191, 893, -71, 682, -529, 73,
- -70,-32766,-32766,-32766, -69,-32766, -68,-32766, 125,-32766,
- 630, 631,-32766, -67, -66, -47, -51,-32766,-32766,-32766,
- -18, 147, 271,-32766,-32766, 277, 697, 700, 881,-32766,
- 411, 890, 893, 146, 682, 282, 881, 907,-32766, 281,
- 513, 514, 286, 1212, 1213, 1214, 1215, 1209, 1210, 326,
- 131, 145, 939, 287, 682, 1216, 1211, 109, 270,-32766,
- 798, 807,-32766, 662, 639, 1191, 657, 72, 675, 1075,
- 317, 320,-32766,-32766,-32766, 1305,-32766, 301,-32766, 628,
- -32766, 431, 543,-32766,-32766, 923, 555, 924,-32766,-32766,
- -32766, 1229, 549,-32766,-32766,-32766, -4, 891, -490, 1191,
- -32766, 411, 644, 893, 299, 682,-32766,-32766,-32766,-32766,
- -32766, 893,-32766, 682,-32766, 13, 1231,-32766, 452, 480,
- 645, 909,-32766,-32766,-32766,-32766, 658, -480,-32766,-32766,
- 0, 1191, 0, 0,-32766, 411, 0, 298,-32766,-32766,
- -32766, 305,-32766,-32766,-32766, 0,-32766, 0, 806,-32766,
- 0, 0, 0, 475,-32766,-32766,-32766,-32766, 0, 7,
- -32766,-32766, 16, 1191, 561, 596,-32766, 411, 1219, 891,
- -32766,-32766,-32766, 362,-32766,-32766,-32766, 818,-32766, -267,
- 881,-32766, 39, 293, 0, 0,-32766,-32766,-32766, 40,
- 705, 706,-32766,-32766, 872, 963, 940, 947,-32766, 411,
- 937, 948, 365, 870, 427, 891, 935,-32766, 1049, 291,
- 1244, 1052, 1053, -111, -111, 1050, 1051, 1057, -560, 1262,
- 1296, 633, 0, 826, -111, -111, -111, -111, 33, 315,
- -32766, 361, 683, 686, 690, 692, 1191, 693, 694, 695,
- 699, 685, 320,-32766,-32766,-32766, 9,-32766, 702,-32766,
- 868,-32766, 881, 1300,-32766, 893, 1302, 682, -4,-32766,
- -32766,-32766, 829, 828, 837,-32766,-32766, 916, -242, -242,
- -242,-32766, 411, 955, 365, 27, 836, 1301, 915, 917,
- -32766, 914, 1177, 900, 910, -111, -111, 807, 881, 898,
- 945, 1222, 946, 1299, 1256, 867, -111, -111, -111, -111,
- 1245, 1263, 1269, 1272, -241, -241, -241, -558, -532, -531,
- 365, -530, 1, 28, 29, 38, 42, 46, 71, 0,
- 75, -111, -111, 76, 77, 78, 79, 893, 80, 682,
- -242, 867, -111, -111, -111, -111, 142, 152, 156, 245,
- 322, 347, 514, 348, 1212, 1213, 1214, 1215, 1209, 1210,
- 349, 350, 351, 352, 353, 354, 1216, 1211, 355, 356,
- 357, 359, 428, 893, -265, 682, -241, -264, 72, 0,
- 18, 317, 320, 19, 20, 21, 23, 398, 471, 472,
- 479, 482, 483, 484, 485, 489, 490, 491, 498, 669,
- 1202, 1145, 1220, 1019, 1018, 1181, -269, -103, 17, 22,
- 26, 290, 397, 589, 593, 620, 674, 1149, 1197, 1146,
- 1275, 0, -494, 1162, 0, 1223
- );
-
- protected $actionCheck = array(
- 2, 3, 4, 5, 6, 7, 0, 9, 10, 11,
- 12, 13, 106, 1, 108, 31, 9, 10, 11, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 116, 117,
- 118, 119, 120, 121, 122, 37, 38, 30, 116, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 43, 117, 118, 9, 10, 57, 9, 10, 11, 137,
- 138, 155, 128, 129, 130, 131, 106, 107, 8, 71,
- 72, 73, 74, 75, 76, 77, 116, 30, 80, 32,
- 33, 34, 35, 36, 1, 87, 88, 89, 90, 91,
- 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
- 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 30, 80, 136, 137, 138, 139, 140, 141,
- 142, 143, 144, 51, 1, 161, 101, 80, 150, 151,
- 152, 8, 154, 9, 10, 11, 2, 3, 4, 5,
- 6, 7, 164, 9, 10, 11, 12, 13, 123, 9,
- 10, 11, 80, 161, 30, 83, 32, 33, 34, 35,
- 36, 37, 38, 116, 117, 118, 119, 120, 121, 122,
- 30, 37, 38, 106, 107, 1, 9, 10, 11, 1,
- 53, 54, 55, 116, 57, 1, 8, 14, 155, 156,
- 157, 57, 9, 10, 11, 162, 69, 30, 116, 32,
- 33, 119, 120, 121, 122, 71, 72, 73, 74, 75,
- 76, 77, 8, 30, 80, 32, 33, 34, 35, 137,
- 138, 87, 88, 89, 90, 91, 92, 93, 94, 95,
- 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
- 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
- 126, 127, 128, 129, 130, 131, 132, 133, 84, 70,
- 136, 137, 138, 139, 140, 141, 142, 143, 144, 9,
- 9, 10, 11, 160, 150, 151, 152, 164, 154, 2,
- 3, 4, 5, 6, 7, 1, 9, 10, 11, 12,
- 13, 30, 8, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, 51, 52, 53, 54, 55, 116, 57, 14,
- 9, 10, 11, 134, 135, 161, 8, 164, 160, 1,
- 69, 167, 164, 159, 57, 161, 80, 8, 137, 138,
- 1, 30, 1, 32, 33, 34, 1, 14, 71, 72,
- 73, 74, 75, 76, 77, 31, 1, 80, 30, 70,
- 30, 9, 10, 11, 87, 88, 89, 90, 91, 92,
- 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
- 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
- 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
- 133, 8, 156, 136, 137, 138, 139, 140, 141, 142,
- 143, 144, 8, 134, 135, 8, 8, 150, 151, 152,
- 2, 3, 4, 5, 6, 7, 97, 82, 149, 31,
- 12, 13, 101, 15, 116, 8, 116, 106, 80, 108,
- 161, 85, 163, 106, 113, 108, 8, 116, 117, 118,
- 119, 120, 121, 122, 123, 137, 138, 137, 138, 14,
- 9, 10, 11, 80, 82, 14, 8, 85, 50, 51,
- 50, 51, 52, 128, 56, 1, 58, 59, 60, 61,
- 62, 63, 64, 65, 66, 67, 68, 70, 70, 71,
- 72, 73, 74, 162, 159, 97, 78, 79, 80, 116,
- 82, 1, 146, 158, 86, 87, 88, 89, 163, 91,
- 31, 93, 167, 95, 156, 14, 98, 99, 35, 161,
- 37, 103, 104, 105, 106, 107, 1, 109, 110, 147,
- 148, 31, 160, 115, 116, 8, 164, 1, 155, 156,
- 157, 70, 124, 125, 126, 8, 70, 1, 70, 37,
- 38, 134, 135, 8, 136, 137, 82, 139, 140, 141,
- 142, 143, 144, 145, 8, 35, 149, 37, 164, 151,
- 152, 164, 164, 155, 156, 157, 158, 1, 161, 8,
- 163, 163, 82, 165, 166, 167, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 75, 76, 77, 75, 76, 134, 135, 31, 8, 84,
- 134, 135, 134, 135, 1, 90, 8, 92, 82, 94,
- 149, 96, 37, 38, 8, 149, 80, 149, 128, 59,
- 60, 106, 161, 8, 1, 161, 8, 161, 159, 161,
- 70, 167, 117, 118, 31, 8, 106, 70, 108, 106,
- 14, 108, 127, 128, 129, 130, 131, 70, 158, 74,
- 84, 75, 76, 163, 31, 80, 159, 167, 161, 101,
- 102, 14, 87, 88, 89, 14, 91, 31, 93, 16,
- 95, 37, 38, 98, 159, 1, 161, 162, 103, 104,
- 105, 37, 38, 1, 109, 110, 16, 84, 16, 163,
- 115, 116, 16, 167, 134, 135, 16, 161, 31, 124,
- 16, 134, 135, 167, 70, 31, 16, 84, 16, 149,
- 16, 134, 135, 31, 106, 107, 82, 31, 74, 31,
- 86, 161, 106, 107, 80, 159, 31, 161, 161, 154,
- 31, 87, 88, 89, 31, 91, 31, 93, 161, 95,
- 111, 112, 98, 31, 31, 31, 31, 103, 104, 105,
- 31, 31, 31, 109, 110, 31, 31, 31, 84, 115,
- 116, 31, 159, 31, 161, 37, 84, 38, 124, 35,
- 136, 137, 35, 139, 140, 141, 142, 143, 144, 35,
- 31, 70, 159, 37, 161, 151, 152, 69, 57, 74,
- 80, 82, 85, 77, 90, 80, 94, 163, 92, 82,
- 166, 167, 87, 88, 89, 83, 91, 114, 93, 113,
- 95, 128, 85, 98, 116, 128, 153, 128, 103, 104,
- 105, 146, 89, 74, 109, 110, 0, 1, 149, 80,
- 115, 116, 96, 159, 133, 161, 87, 88, 89, 124,
- 91, 159, 93, 161, 95, 97, 146, 98, 97, 97,
- 100, 154, 103, 104, 105, 74, 100, 149, 109, 110,
- -1, 80, -1, -1, 115, 116, -1, 132, 87, 88,
- 89, 132, 91, 124, 93, -1, 95, -1, 155, 98,
- -1, -1, -1, 102, 103, 104, 105, 74, -1, 149,
- 109, 110, 149, 80, 81, 153, 115, 116, 160, 1,
- 87, 88, 89, 149, 91, 124, 93, 160, 95, 164,
- 84, 98, 159, 158, -1, -1, 103, 104, 105, 159,
- 159, 159, 109, 110, 159, 159, 159, 159, 115, 116,
- 159, 159, 106, 159, 108, 1, 159, 124, 159, 113,
- 160, 159, 159, 117, 118, 159, 159, 159, 163, 160,
- 160, 160, -1, 127, 128, 129, 130, 131, 161, 161,
- 74, 161, 161, 161, 161, 161, 80, 161, 161, 161,
- 161, 161, 167, 87, 88, 89, 150, 91, 162, 93,
- 162, 95, 84, 162, 98, 159, 162, 161, 162, 103,
- 104, 105, 162, 162, 162, 109, 110, 162, 100, 101,
- 102, 115, 116, 162, 106, 70, 162, 162, 162, 162,
- 124, 162, 162, 162, 162, 117, 118, 82, 84, 162,
- 162, 86, 162, 162, 162, 127, 128, 129, 130, 131,
- 162, 162, 162, 162, 100, 101, 102, 163, 163, 163,
- 106, 163, 163, 163, 163, 163, 163, 163, 163, -1,
- 163, 117, 118, 163, 163, 163, 163, 159, 163, 161,
- 162, 127, 128, 129, 130, 131, 163, 163, 163, 163,
- 163, 163, 137, 163, 139, 140, 141, 142, 143, 144,
- 163, 163, 163, 163, 163, 163, 151, 152, 163, 163,
- 163, 163, 163, 159, 164, 161, 162, 164, 163, -1,
- 164, 166, 167, 164, 164, 164, 164, 164, 164, 164,
- 164, 164, 164, 164, 164, 164, 164, 164, 164, 164,
- 164, 164, 164, 164, 164, 164, 164, 164, 164, 164,
- 164, 164, 164, 164, 164, 164, 164, 164, 164, 164,
- 164, -1, 165, 165, -1, 166
- );
-
- protected $actionBase = array(
- 0, -2, 154, 565, 876, 948, 984, 514, 53, 398,
- 837, 307, 307, 67, 307, 307, 307, 653, 724, 724,
- 732, 724, 616, 673, 204, 204, 204, 625, 625, 625,
- 625, 694, 694, 831, 831, 863, 799, 765, 936, 936,
- 936, 936, 936, 936, 936, 936, 936, 936, 936, 936,
- 936, 936, 936, 936, 936, 936, 936, 936, 936, 936,
- 936, 936, 936, 936, 936, 936, 936, 936, 936, 936,
- 936, 936, 936, 936, 936, 936, 936, 936, 936, 936,
- 936, 936, 936, 936, 936, 936, 936, 936, 936, 936,
- 936, 936, 936, 936, 936, 936, 936, 936, 936, 936,
- 936, 936, 936, 936, 936, 936, 936, 936, 936, 936,
- 936, 936, 936, 936, 936, 936, 936, 936, 936, 936,
- 936, 936, 936, 936, 936, 936, 936, 936, 936, 936,
- 936, 936, 936, 936, 936, 936, 936, 936, 936, 936,
- 936, 936, 936, 936, 936, 936, 936, 936, 936, 936,
- 936, 936, 936, 936, 936, 936, 936, 936, 936, 936,
- 936, 936, 375, 519, 369, 701, 1017, 1023, 1019, 1024,
- 1015, 1014, 1018, 1020, 1025, 911, 912, 782, 918, 919,
- 920, 921, 1021, 841, 1016, 1022, 291, 291, 291, 291,
- 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
- 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
- 291, 291, 290, 491, 44, 382, 382, 382, 382, 382,
- 382, 382, 382, 382, 382, 382, 382, 382, 382, 382,
- 382, 382, 382, 382, 382, 160, 160, 160, 187, 684,
- 684, 341, 203, 610, 47, 985, 985, 985, 985, 985,
- 985, 985, 985, 985, 985, 144, 144, 7, 7, 7,
- 7, 7, 371, -25, -25, -25, -25, 540, 385, 102,
- 576, 358, 45, 377, 460, 460, 360, 231, 231, 231,
- 231, 231, 231, -78, -78, -78, -78, -78, -66, 319,
- 457, -94, 396, 423, 586, 586, 586, 586, 423, 423,
- 423, 423, 750, 1029, 423, 423, 423, 511, 516, 516,
- 518, 147, 147, 147, 516, 583, 777, 422, 583, 422,
- 194, 92, 748, -40, 87, 412, 748, 617, 627, 198,
- 143, 773, 658, 773, 1013, 757, 764, 717, 838, 860,
- 1026, 800, 908, 806, 910, 219, 686, 1012, 1012, 1012,
- 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 855, 552,
- 1013, 286, 855, 855, 855, 552, 552, 552, 552, 552,
- 552, 552, 552, 552, 552, 679, 286, 568, 626, 286,
- 794, 552, 375, 758, 375, 375, 375, 375, 958, 375,
- 375, 375, 375, 375, 375, 970, 769, -16, 375, 519,
- 12, 12, 547, 83, 12, 12, 12, 12, 375, 375,
- 375, 658, 781, 713, 666, 792, 448, 781, 781, 781,
- 438, 444, 193, 447, 570, 523, 580, 760, 760, 767,
- 929, 929, 760, 759, 760, 767, 934, 760, 929, 805,
- 359, 648, 577, 611, 656, 929, 478, 760, 760, 760,
- 760, 665, 760, 467, 433, 760, 760, 785, 774, 789,
- 60, 929, 929, 929, 789, 596, 751, 751, 751, 811,
- 812, 746, 771, 567, 498, 677, 348, 779, 771, 771,
- 760, 640, 746, 771, 746, 771, 747, 771, 771, 771,
- 746, 771, 759, 585, 771, 734, 668, 224, 771, 6,
- 935, 937, 354, 940, 932, 941, 979, 942, 943, 851,
- 956, 933, 945, 931, 930, 780, 703, 720, 790, 729,
- 928, 768, 768, 768, 925, 768, 768, 768, 768, 768,
- 768, 768, 768, 703, 788, 804, 733, 783, 960, 722,
- 726, 725, 868, 1027, 1028, 737, 739, 958, 1006, 953,
- 803, 730, 992, 967, 866, 848, 968, 969, 993, 1007,
- 1008, 871, 761, 874, 880, 797, 971, 852, 768, 935,
- 943, 933, 945, 931, 930, 763, 762, 753, 755, 749,
- 745, 736, 738, 770, 1009, 924, 835, 830, 970, 926,
- 703, 839, 986, 847, 994, 995, 850, 801, 772, 840,
- 881, 972, 975, 976, 853, 1010, 810, 989, 795, 996,
- 802, 882, 997, 998, 999, 1000, 885, 854, 856, 857,
- 815, 754, 980, 786, 891, 335, 787, 796, 978, 363,
- 957, 858, 894, 895, 1001, 1002, 1003, 896, 954, 816,
- 990, 752, 991, 983, 817, 818, 485, 784, 778, 541,
- 676, 897, 899, 900, 955, 775, 766, 821, 822, 1011,
- 901, 697, 824, 740, 902, 1005, 742, 744, 756, 859,
- 793, 743, 798, 977, 776, 827, 907, 829, 832, 833,
- 1004, 836, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 458, 458, 458, 458, 458, 458, 307, 307, 307,
- 307, 0, 0, 307, 0, 0, 0, 458, 458, 458,
- 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
- 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
- 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
- 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
- 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
- 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
- 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
- 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
- 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
- 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
- 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
- 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
- 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
- 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
- 458, 458, 291, 291, 291, 291, 291, 291, 291, 291,
- 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
- 291, 291, 291, 291, 291, 291, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 291, 291, 291, 291, 291, 291, 291, 291,
- 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
- 291, 291, 291, 291, 291, 291, 291, 291, 291, 423,
- 423, 291, 291, 0, 291, 423, 423, 423, 423, 423,
- 423, 423, 423, 423, 423, 291, 291, 291, 291, 291,
- 291, 291, 805, 147, 147, 147, 147, 423, 423, 423,
- 423, 423, -88, -88, 147, 147, 423, 423, 423, 423,
- 423, 423, 423, 423, 423, 423, 423, 423, 0, 0,
- 0, 286, 422, 0, 759, 759, 759, 759, 0, 0,
- 0, 0, 422, 422, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 286, 422, 0, 286, 0,
- 759, 759, 423, 805, 805, 314, 423, 0, 0, 0,
- 0, 286, 759, 286, 552, 422, 552, 552, 12, 375,
- 314, 608, 608, 608, 608, 0, 658, 805, 805, 805,
- 805, 805, 805, 805, 805, 805, 805, 805, 759, 0,
- 805, 0, 759, 759, 759, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 759, 0, 0, 929, 0, 0, 0, 0, 760, 0,
- 0, 0, 0, 0, 0, 760, 934, 0, 0, 0,
- 0, 0, 0, 759, 0, 0, 0, 0, 0, 0,
- 0, 0, 768, 801, 0, 801, 0, 768, 768, 768
- );
-
- protected $actionDefault = array(
- 3,32767, 103,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767, 101,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767, 578, 578, 578,
- 578,32767,32767, 246, 103,32767,32767, 454, 372, 372,
- 372,32767,32767, 522, 522, 522, 522, 522, 522,32767,
- 32767,32767,32767,32767,32767, 454,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767, 101,32767,
- 32767,32767, 37, 7, 8, 10, 11, 50, 17, 310,
- 32767,32767,32767,32767, 103,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767, 571,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767, 458, 437, 438, 440,
- 441, 371, 523, 577, 313, 574, 370, 146, 325, 315,
- 234, 316, 250, 459, 251, 460, 463, 464, 211, 279,
- 367, 150, 401, 455, 403, 453, 457, 402, 377, 382,
- 383, 384, 385, 386, 387, 388, 389, 390, 391, 392,
- 393, 394, 375, 376, 456, 434, 433, 432, 399,32767,
- 32767, 400, 404, 374, 407,32767,32767,32767,32767,32767,
- 32767,32767,32767, 103,32767, 405, 406, 423, 424, 421,
- 422, 425,32767, 426, 427, 428, 429,32767,32767, 302,
- 32767,32767, 351, 349, 414, 415, 302,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767, 516,
- 431,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767, 103,32767, 101, 518, 396, 398,
- 486, 409, 410, 408, 378,32767, 493,32767, 103, 495,
- 32767,32767,32767, 112,32767,32767,32767, 517,32767, 524,
- 524,32767, 479, 101, 194,32767, 194, 194,32767,32767,
- 32767,32767,32767,32767,32767, 585, 479, 111, 111, 111,
- 111, 111, 111, 111, 111, 111, 111, 111,32767, 194,
- 111,32767,32767,32767, 101, 194, 194, 194, 194, 194,
- 194, 194, 194, 194, 194, 189,32767, 260, 262, 103,
- 539, 194,32767, 498,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767, 491,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767, 479, 419, 139,32767, 139, 524, 411, 412, 413,
- 481, 524, 524, 524, 298, 281,32767,32767,32767,32767,
- 496, 496, 101, 101, 101, 101, 491,32767,32767, 112,
- 100, 100, 100, 100, 100, 104, 102,32767,32767,32767,
- 32767, 100,32767, 102, 102,32767,32767, 217, 208, 215,
- 102,32767, 543, 544, 215, 102, 219, 219, 219, 239,
- 239, 470, 304, 102, 100, 102, 102, 196, 304, 304,
- 32767, 102, 470, 304, 470, 304, 198, 304, 304, 304,
- 470, 304,32767, 102, 304, 210, 100, 100, 304,32767,
- 32767,32767, 481,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767, 511,32767, 528,
- 541, 417, 418, 420, 526, 442, 443, 444, 445, 446,
- 447, 448, 450, 573,32767, 485,32767,32767,32767,32767,
- 324, 583,32767, 583,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767, 584,32767, 524,32767,32767,32767,32767, 416, 9,
- 76, 43, 44, 52, 58, 502, 503, 504, 505, 499,
- 500, 506, 501,32767,32767, 507, 549,32767,32767, 525,
- 576,32767,32767,32767,32767,32767,32767, 139,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767, 511,32767,
- 137,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767, 524,32767,32767,32767, 300, 301,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767, 524,32767,32767,32767, 283, 284,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767, 278,32767,32767, 366,32767,32767,32767,
- 32767, 345,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767, 152, 152, 3, 3, 327, 152, 152, 152,
- 327, 152, 327, 327, 327, 152, 152, 152, 152, 152,
- 152, 272, 184, 254, 257, 239, 239, 152, 337, 152
- );
-
- protected $goto = array(
- 194, 194, 670, 422, 643, 463, 1264, 1265, 1022, 416,
- 308, 309, 329, 563, 314, 421, 330, 423, 622, 801,
- 678, 637, 586, 651, 652, 653, 165, 165, 165, 165,
- 218, 195, 191, 191, 175, 177, 213, 191, 191, 191,
- 191, 191, 192, 192, 192, 192, 192, 192, 186, 187,
- 188, 189, 190, 215, 213, 216, 521, 522, 412, 523,
- 525, 526, 527, 528, 529, 530, 531, 532, 1091, 166,
- 167, 168, 193, 169, 170, 171, 164, 172, 173, 174,
- 176, 212, 214, 217, 235, 238, 241, 242, 244, 255,
- 256, 257, 258, 259, 260, 261, 263, 264, 265, 266,
- 274, 275, 311, 312, 313, 417, 418, 419, 568, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 178, 234, 179, 196, 197, 198,
- 236, 186, 187, 188, 189, 190, 215, 1091, 199, 180,
- 181, 182, 200, 196, 183, 237, 201, 199, 163, 202,
- 203, 184, 204, 205, 206, 185, 207, 208, 209, 210,
- 211, 323, 323, 323, 323, 827, 608, 608, 824, 547,
- 538, 342, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221,
- 1221, 1221, 1239, 1239, 288, 288, 288, 288, 1239, 1239,
- 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 388, 538,
- 547, 556, 557, 395, 566, 588, 602, 603, 832, 825,
- 880, 875, 876, 889, 15, 833, 877, 830, 878, 879,
- 831, 799, 251, 251, 883, 919, 992, 1000, 1004, 1001,
- 1005, 1237, 1237, 938, 1043, 1039, 1040, 1237, 1237, 1237,
- 1237, 1237, 1237, 1237, 1237, 1237, 1237, 858, 248, 248,
- 248, 248, 250, 252, 533, 533, 533, 533, 487, 590,
- 488, 1190, 1190, 997, 1190, 997, 494, 1290, 1290, 560,
- 997, 997, 997, 997, 997, 997, 997, 997, 997, 997,
- 997, 997, 1261, 1261, 1290, 1261, 340, 1190, 930, 402,
- 677, 1279, 1190, 1190, 1190, 1190, 959, 345, 1190, 1190,
- 1190, 1271, 1271, 1271, 1271, 606, 640, 345, 345, 1273,
- 1273, 1273, 1273, 820, 820, 805, 896, 884, 840, 885,
- 897, 345, 345, 5, 345, 6, 1306, 384, 535, 535,
- 559, 535, 415, 852, 597, 1257, 839, 540, 524, 524,
- 345, 1289, 1289, 642, 524, 524, 524, 524, 524, 524,
- 524, 524, 524, 524, 445, 805, 1140, 805, 1289, 932,
- 932, 932, 932, 1063, 1064, 445, 926, 933, 386, 390,
- 548, 587, 591, 1030, 1292, 331, 554, 1259, 1259, 1030,
- 704, 621, 623, 823, 641, 1250, 319, 303, 660, 664,
- 973, 668, 676, 969, 429, 553, 962, 936, 936, 934,
- 936, 703, 601, 537, 971, 966, 343, 344, 663, 817,
- 595, 609, 612, 613, 614, 615, 634, 635, 636, 680,
- 439, 1186, 845, 454, 454, 439, 439, 1266, 1267, 820,
- 901, 1079, 454, 394, 539, 551, 1183, 605, 540, 539,
- 842, 551, 978, 272, 387, 618, 619, 981, 536, 536,
- 844, 707, 646, 957, 567, 457, 458, 459, 838, 850,
- 254, 254, 1297, 1298, 400, 401, 976, 976, 464, 649,
- 1182, 650, 1028, 404, 405, 406, 1187, 661, 424, 1032,
- 407, 564, 600, 815, 338, 424, 854, 848, 853, 841,
- 1027, 1031, 1009, 1002, 1006, 1003, 1007, 1185, 941, 1188,
- 1247, 1248, 943, 0, 1074, 439, 439, 439, 439, 439,
- 439, 439, 439, 439, 439, 439, 0, 468, 439, 585,
- 1056, 931, 681, 667, 667, 0, 495, 673, 1054, 1171,
- 912, 0, 0, 1172, 1175, 913, 1176, 0, 0, 0,
- 0, 0, 0, 1072, 857
- );
-
- protected $gotoCheck = array(
- 42, 42, 72, 65, 65, 166, 166, 166, 119, 65,
- 65, 65, 65, 65, 65, 65, 65, 65, 65, 7,
- 9, 84, 122, 84, 84, 84, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 23, 23, 23, 23, 15, 104, 104, 26, 75,
- 75, 93, 104, 104, 104, 104, 104, 104, 104, 104,
- 104, 104, 160, 160, 24, 24, 24, 24, 160, 160,
- 160, 160, 160, 160, 160, 160, 160, 160, 75, 75,
- 75, 75, 75, 75, 75, 75, 75, 75, 15, 27,
- 15, 15, 15, 15, 75, 15, 15, 15, 15, 15,
- 15, 6, 5, 5, 15, 87, 87, 87, 87, 87,
- 87, 161, 161, 49, 15, 15, 15, 161, 161, 161,
- 161, 161, 161, 161, 161, 161, 161, 45, 5, 5,
- 5, 5, 5, 5, 103, 103, 103, 103, 147, 103,
- 147, 72, 72, 72, 72, 72, 147, 173, 173, 162,
- 72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
- 72, 72, 122, 122, 173, 122, 169, 72, 89, 89,
- 89, 171, 72, 72, 72, 72, 99, 14, 72, 72,
- 72, 9, 9, 9, 9, 55, 55, 14, 14, 122,
- 122, 122, 122, 22, 22, 12, 72, 64, 35, 64,
- 72, 14, 14, 46, 14, 46, 14, 61, 19, 19,
- 100, 19, 13, 35, 13, 122, 35, 14, 163, 163,
- 14, 172, 172, 63, 163, 163, 163, 163, 163, 163,
- 163, 163, 163, 163, 19, 12, 143, 12, 172, 19,
- 19, 19, 19, 136, 136, 19, 19, 19, 58, 58,
- 58, 58, 58, 122, 172, 29, 48, 122, 122, 122,
- 48, 48, 48, 25, 48, 14, 159, 159, 48, 48,
- 48, 48, 48, 48, 109, 9, 25, 25, 25, 25,
- 25, 25, 9, 25, 25, 25, 93, 93, 14, 18,
- 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
- 23, 20, 39, 141, 141, 23, 23, 168, 168, 22,
- 17, 17, 141, 28, 9, 9, 152, 17, 14, 9,
- 37, 9, 17, 24, 9, 83, 83, 106, 24, 24,
- 17, 95, 17, 17, 9, 9, 9, 9, 17, 9,
- 5, 5, 9, 9, 80, 80, 103, 103, 149, 80,
- 17, 80, 121, 80, 80, 80, 20, 80, 113, 124,
- 80, 2, 2, 20, 80, 113, 41, 9, 16, 16,
- 16, 16, 113, 113, 113, 113, 113, 14, 16, 20,
- 20, 20, 92, -1, 139, 23, 23, 23, 23, 23,
- 23, 23, 23, 23, 23, 23, -1, 82, 23, 8,
- 8, 16, 8, 8, 8, -1, 8, 8, 8, 78,
- 78, -1, -1, 78, 78, 78, 78, -1, -1, -1,
- -1, -1, -1, 16, 16
- );
-
- protected $gotoBase = array(
- 0, 0, -203, 0, 0, 221, 208, 10, 512, 7,
- 0, 0, 24, 1, 5, -174, 47, -23, 105, 61,
- 38, 0, -10, 158, 181, 379, 164, 205, 102, 84,
- 0, 0, 0, 0, 0, -43, 0, 107, 0, 104,
- 0, 54, -1, 0, 0, 235, -384, 0, -307, 210,
- 0, 0, 0, 0, 0, 266, 0, 0, 324, 0,
- 0, 286, 0, 103, 298, -236, 0, 0, 0, 0,
- 0, 0, -6, 0, 0, -167, 0, 0, 129, 62,
- -14, 0, 53, -22, -669, 0, 0, -52, 0, -11,
- 0, 0, 68, -299, 0, 52, 0, 0, 0, 262,
- 288, 0, 0, 227, -73, 0, 87, 0, 0, 118,
- 0, 0, 0, 209, 0, 0, 0, 0, 0, 6,
- 0, 108, 15, 0, 46, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 91, 0, 0, 69,
- 0, 390, 0, 86, 0, 0, 0, -224, 0, 37,
- 0, 0, 77, 0, 0, 0, 0, 0, 0, 70,
- -57, -8, 241, 99, 0, 0, -290, 0, 65, 257,
- 0, 261, 39, -35, 0, 0
- );
-
- protected $gotoDefault = array(
- -32768, 499, 711, 4, 712, 905, 788, 797, 583, 515,
- 679, 339, 610, 413, 1255, 882, 1078, 565, 816, 1199,
- 1207, 446, 819, 324, 701, 864, 865, 866, 391, 376,
- 382, 389, 632, 611, 481, 851, 442, 843, 473, 846,
- 441, 855, 162, 410, 497, 859, 3, 861, 542, 892,
- 377, 869, 378, 656, 871, 550, 873, 874, 385, 392,
- 393, 1083, 558, 607, 886, 243, 552, 887, 375, 888,
- 895, 380, 383, 665, 453, 492, 486, 403, 1058, 594,
- 629, 450, 467, 617, 616, 604, 466, 425, 408, 928,
- 474, 451, 942, 341, 950, 709, 1090, 624, 476, 958,
- 625, 965, 968, 516, 517, 465, 980, 269, 983, 477,
- 1015, 647, 648, 995, 626, 627, 1013, 460, 584, 1021,
- 443, 1029, 1243, 444, 1033, 262, 1036, 276, 409, 426,
- 1041, 1042, 8, 1048, 671, 672, 10, 273, 496, 1073,
- 666, 440, 1089, 430, 1159, 1161, 544, 478, 1179, 1178,
- 659, 493, 1184, 1246, 438, 518, 461, 310, 519, 302,
- 327, 307, 534, 289, 328, 520, 462, 1252, 1260, 325,
- 30, 1280, 1291, 335, 562, 599
- );
-
- protected $ruleToNonTerminal = array(
- 0, 1, 3, 3, 2, 5, 5, 6, 6, 6,
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 6, 6, 6, 6, 6, 7, 7,
- 7, 7, 7, 7, 7, 7, 8, 8, 9, 10,
- 11, 11, 11, 12, 12, 13, 13, 14, 15, 15,
- 16, 16, 17, 17, 18, 18, 21, 21, 22, 23,
- 23, 24, 24, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 29, 29, 30, 30, 32, 34,
- 34, 28, 36, 36, 33, 38, 38, 35, 35, 37,
- 37, 39, 39, 31, 40, 40, 41, 43, 44, 44,
- 45, 46, 46, 48, 47, 47, 47, 47, 49, 49,
- 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
- 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
- 49, 49, 25, 25, 68, 68, 71, 71, 70, 69,
- 69, 62, 74, 74, 75, 75, 76, 76, 77, 77,
- 78, 78, 26, 26, 27, 27, 27, 27, 86, 86,
- 88, 88, 81, 81, 81, 82, 82, 85, 85, 83,
- 83, 89, 90, 90, 56, 56, 64, 64, 67, 67,
- 67, 66, 91, 91, 92, 57, 57, 57, 57, 93,
- 93, 94, 94, 95, 95, 96, 97, 97, 98, 98,
- 99, 99, 54, 54, 50, 50, 101, 52, 52, 102,
- 51, 51, 53, 53, 63, 63, 63, 63, 79, 79,
- 105, 105, 107, 107, 108, 108, 108, 108, 106, 106,
- 106, 110, 110, 110, 110, 87, 87, 113, 113, 113,
- 111, 111, 114, 114, 112, 112, 115, 115, 116, 116,
- 116, 116, 109, 109, 80, 80, 80, 20, 20, 20,
- 118, 117, 117, 119, 119, 119, 119, 59, 120, 120,
- 121, 60, 123, 123, 124, 124, 125, 125, 84, 126,
- 126, 126, 126, 126, 126, 131, 131, 132, 132, 133,
- 133, 133, 133, 133, 134, 135, 135, 130, 130, 127,
- 127, 129, 129, 137, 137, 136, 136, 136, 136, 136,
- 136, 136, 128, 138, 138, 140, 139, 139, 61, 100,
- 141, 141, 55, 55, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 148, 142, 142,
- 147, 147, 150, 151, 151, 152, 153, 153, 153, 19,
- 19, 72, 72, 72, 72, 143, 143, 143, 143, 155,
- 155, 144, 144, 146, 146, 146, 149, 149, 160, 160,
- 160, 160, 160, 160, 160, 160, 160, 161, 161, 104,
- 163, 163, 163, 163, 145, 145, 145, 145, 145, 145,
- 145, 145, 58, 58, 158, 158, 158, 158, 164, 164,
- 154, 154, 154, 165, 165, 165, 165, 165, 165, 73,
- 73, 65, 65, 65, 65, 122, 122, 122, 122, 168,
- 167, 157, 157, 157, 157, 157, 157, 157, 156, 156,
- 156, 166, 166, 166, 166, 103, 162, 170, 170, 169,
- 169, 171, 171, 171, 171, 171, 171, 171, 171, 159,
- 159, 159, 159, 173, 174, 172, 172, 172, 172, 172,
- 172, 172, 172, 175, 175, 175, 175
- );
-
- protected $ruleToLength = array(
- 1, 1, 2, 0, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 0, 1, 0, 1, 1, 2, 1, 3, 4, 1,
- 2, 0, 1, 1, 1, 1, 1, 3, 5, 4,
- 3, 4, 2, 3, 1, 1, 7, 6, 2, 3,
- 1, 2, 3, 1, 2, 3, 1, 1, 3, 1,
- 3, 1, 2, 2, 3, 1, 3, 2, 3, 1,
- 3, 2, 0, 1, 1, 1, 1, 1, 3, 7,
- 10, 5, 7, 9, 5, 3, 3, 3, 3, 3,
- 3, 1, 2, 5, 7, 9, 6, 5, 6, 3,
- 2, 1, 1, 1, 0, 2, 1, 3, 8, 0,
- 4, 2, 1, 3, 0, 1, 0, 1, 0, 1,
- 3, 1, 8, 9, 8, 7, 6, 8, 0, 2,
- 0, 2, 1, 2, 2, 0, 2, 0, 2, 0,
- 2, 2, 1, 3, 1, 4, 1, 4, 1, 1,
- 4, 2, 1, 3, 3, 3, 4, 4, 5, 0,
- 2, 4, 3, 1, 1, 7, 0, 2, 1, 3,
- 3, 4, 1, 4, 0, 2, 5, 0, 2, 6,
- 0, 2, 0, 3, 1, 2, 1, 1, 2, 0,
- 1, 3, 0, 2, 1, 1, 1, 1, 6, 8,
- 6, 1, 2, 1, 1, 1, 1, 1, 1, 1,
- 3, 3, 3, 3, 3, 3, 3, 3, 1, 2,
- 1, 1, 0, 1, 0, 2, 2, 2, 4, 3,
- 1, 1, 3, 1, 2, 2, 3, 2, 3, 1,
- 1, 2, 3, 1, 1, 3, 2, 0, 1, 5,
- 5, 10, 3, 5, 1, 1, 3, 0, 2, 4,
- 5, 4, 4, 4, 3, 1, 1, 1, 1, 1,
- 1, 0, 1, 1, 2, 1, 1, 1, 1, 1,
- 1, 1, 2, 1, 3, 1, 1, 3, 2, 2,
- 3, 1, 0, 1, 1, 3, 3, 3, 4, 1,
- 1, 2, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 2, 2, 2, 2, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 2, 2, 2,
- 2, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 5, 4, 3, 4, 4, 2, 2, 4,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 3, 2, 1, 2, 4, 2, 2, 8,
- 9, 8, 9, 9, 10, 9, 10, 8, 3, 2,
- 0, 4, 2, 1, 3, 2, 2, 2, 4, 1,
- 1, 1, 1, 1, 1, 1, 1, 3, 1, 1,
- 1, 0, 3, 0, 1, 1, 0, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 3, 3, 3,
- 4, 1, 1, 3, 1, 1, 1, 1, 1, 3,
- 2, 3, 0, 1, 1, 3, 1, 1, 1, 1,
- 1, 3, 1, 1, 4, 4, 1, 4, 4, 0,
- 1, 1, 1, 3, 3, 1, 4, 2, 2, 1,
- 3, 1, 4, 4, 3, 3, 3, 3, 1, 3,
- 1, 1, 3, 1, 1, 4, 1, 1, 1, 3,
- 1, 1, 2, 1, 3, 4, 3, 2, 0, 2,
- 2, 1, 2, 1, 1, 1, 4, 3, 3, 3,
- 3, 6, 3, 1, 1, 2, 1
- );
-
- protected function initReduceCallbacks() {
- $this->reduceCallbacks = [
- 0 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 1 => function ($stackPos) {
- $this->semValue = $this->handleNamespaces($this->semStack[$stackPos-(1-1)]);
- },
- 2 => function ($stackPos) {
- if (is_array($this->semStack[$stackPos-(2-2)])) { $this->semValue = array_merge($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]); } else { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; };
- },
- 3 => function ($stackPos) {
- $this->semValue = array();
- },
- 4 => function ($stackPos) {
- $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); } else { $nop = null; };
- if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 5 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 6 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 7 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 8 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 9 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 10 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 11 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 12 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 13 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 14 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 15 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 16 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 17 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 18 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 19 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 20 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 21 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 22 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 23 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 24 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 25 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 26 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 27 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 28 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 29 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 30 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 31 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 32 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 33 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 34 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 35 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 36 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 37 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 38 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 39 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 40 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 41 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 42 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 43 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 44 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 45 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 46 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 47 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 48 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 49 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 50 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 51 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 52 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 53 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 54 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 55 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 56 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 57 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 58 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 59 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 60 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 61 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 62 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 63 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 64 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 65 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 66 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 67 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 68 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 69 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 70 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 71 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 72 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 73 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 74 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 75 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 76 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 77 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 78 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 79 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 80 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 81 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 82 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 83 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 84 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 85 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 86 => function ($stackPos) {
- $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 87 => function ($stackPos) {
- $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 88 => function ($stackPos) {
- $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 89 => function ($stackPos) {
- $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 90 => function ($stackPos) {
- $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 91 => function ($stackPos) {
- $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 92 => function ($stackPos) {
- $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 93 => function ($stackPos) {
- $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 94 => function ($stackPos) {
- $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 95 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 96 => function ($stackPos) {
- $this->semValue = new Name(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 97 => function ($stackPos) {
- $this->semValue = new Expr\Variable(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 98 => function ($stackPos) {
- /* nothing */
- },
- 99 => function ($stackPos) {
- /* nothing */
- },
- 100 => function ($stackPos) {
- /* nothing */
- },
- 101 => function ($stackPos) {
- $this->emitError(new Error('A trailing comma is not allowed here', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes));
- },
- 102 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 103 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 104 => function ($stackPos) {
- $this->semValue = new Node\Attribute($this->semStack[$stackPos-(1-1)], [], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 105 => function ($stackPos) {
- $this->semValue = new Node\Attribute($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 106 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 107 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 108 => function ($stackPos) {
- $this->semValue = new Node\AttributeGroup($this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 109 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 110 => function ($stackPos) {
- $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 111 => function ($stackPos) {
- $this->semValue = [];
- },
- 112 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 113 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 114 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 115 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 116 => function ($stackPos) {
- $this->semValue = new Stmt\HaltCompiler($this->lexer->handleHaltCompiler(), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 117 => function ($stackPos) {
- $this->semValue = new Stmt\Namespace_($this->semStack[$stackPos-(3-2)], null, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- $this->semValue->setAttribute('kind', Stmt\Namespace_::KIND_SEMICOLON);
- $this->checkNamespace($this->semValue);
- },
- 118 => function ($stackPos) {
- $this->semValue = new Stmt\Namespace_($this->semStack[$stackPos-(5-2)], $this->semStack[$stackPos-(5-4)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
- $this->semValue->setAttribute('kind', Stmt\Namespace_::KIND_BRACED);
- $this->checkNamespace($this->semValue);
- },
- 119 => function ($stackPos) {
- $this->semValue = new Stmt\Namespace_(null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- $this->semValue->setAttribute('kind', Stmt\Namespace_::KIND_BRACED);
- $this->checkNamespace($this->semValue);
- },
- 120 => function ($stackPos) {
- $this->semValue = new Stmt\Use_($this->semStack[$stackPos-(3-2)], Stmt\Use_::TYPE_NORMAL, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 121 => function ($stackPos) {
- $this->semValue = new Stmt\Use_($this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 122 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 123 => function ($stackPos) {
- $this->semValue = new Stmt\Const_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 124 => function ($stackPos) {
- $this->semValue = Stmt\Use_::TYPE_FUNCTION;
- },
- 125 => function ($stackPos) {
- $this->semValue = Stmt\Use_::TYPE_CONSTANT;
- },
- 126 => function ($stackPos) {
- $this->semValue = new Stmt\GroupUse($this->semStack[$stackPos-(7-3)], $this->semStack[$stackPos-(7-6)], $this->semStack[$stackPos-(7-2)], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
- },
- 127 => function ($stackPos) {
- $this->semValue = new Stmt\GroupUse($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-5)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
- },
- 128 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 129 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 130 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 131 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 132 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 133 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 134 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 135 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 136 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 137 => function ($stackPos) {
- $this->semValue = new Stmt\UseUse($this->semStack[$stackPos-(1-1)], null, Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->checkUseUse($this->semValue, $stackPos-(1-1));
- },
- 138 => function ($stackPos) {
- $this->semValue = new Stmt\UseUse($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); $this->checkUseUse($this->semValue, $stackPos-(3-3));
- },
- 139 => function ($stackPos) {
- $this->semValue = new Stmt\UseUse($this->semStack[$stackPos-(1-1)], null, Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->checkUseUse($this->semValue, $stackPos-(1-1));
- },
- 140 => function ($stackPos) {
- $this->semValue = new Stmt\UseUse($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); $this->checkUseUse($this->semValue, $stackPos-(3-3));
- },
- 141 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)]; $this->semValue->type = Stmt\Use_::TYPE_NORMAL;
- },
- 142 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-2)]; $this->semValue->type = $this->semStack[$stackPos-(2-1)];
- },
- 143 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 144 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 145 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 146 => function ($stackPos) {
- $this->semValue = new Node\Const_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 147 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 148 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 149 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 150 => function ($stackPos) {
- $this->semValue = new Node\Const_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 151 => function ($stackPos) {
- if (is_array($this->semStack[$stackPos-(2-2)])) { $this->semValue = array_merge($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]); } else { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; };
- },
- 152 => function ($stackPos) {
- $this->semValue = array();
- },
- 153 => function ($stackPos) {
- $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); } else { $nop = null; };
- if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 154 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 155 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 156 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 157 => function ($stackPos) {
- throw new Error('__HALT_COMPILER() can only be used from the outermost scope', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 158 => function ($stackPos) {
-
- if ($this->semStack[$stackPos-(3-2)]) {
- $this->semValue = $this->semStack[$stackPos-(3-2)]; $attrs = $this->startAttributeStack[$stackPos-(3-1)]; $stmts = $this->semValue; if (!empty($attrs['comments'])) {$stmts[0]->setAttribute('comments', array_merge($attrs['comments'], $stmts[0]->getAttribute('comments', []))); };
- } else {
- $startAttributes = $this->startAttributeStack[$stackPos-(3-1)]; if (isset($startAttributes['comments'])) { $this->semValue = new Stmt\Nop($startAttributes + $this->endAttributes); } else { $this->semValue = null; };
- if (null === $this->semValue) { $this->semValue = array(); }
- }
-
- },
- 159 => function ($stackPos) {
- $this->semValue = new Stmt\If_($this->semStack[$stackPos-(7-3)], ['stmts' => is_array($this->semStack[$stackPos-(7-5)]) ? $this->semStack[$stackPos-(7-5)] : array($this->semStack[$stackPos-(7-5)]), 'elseifs' => $this->semStack[$stackPos-(7-6)], 'else' => $this->semStack[$stackPos-(7-7)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
- },
- 160 => function ($stackPos) {
- $this->semValue = new Stmt\If_($this->semStack[$stackPos-(10-3)], ['stmts' => $this->semStack[$stackPos-(10-6)], 'elseifs' => $this->semStack[$stackPos-(10-7)], 'else' => $this->semStack[$stackPos-(10-8)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes);
- },
- 161 => function ($stackPos) {
- $this->semValue = new Stmt\While_($this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
- },
- 162 => function ($stackPos) {
- $this->semValue = new Stmt\Do_($this->semStack[$stackPos-(7-5)], is_array($this->semStack[$stackPos-(7-2)]) ? $this->semStack[$stackPos-(7-2)] : array($this->semStack[$stackPos-(7-2)]), $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
- },
- 163 => function ($stackPos) {
- $this->semValue = new Stmt\For_(['init' => $this->semStack[$stackPos-(9-3)], 'cond' => $this->semStack[$stackPos-(9-5)], 'loop' => $this->semStack[$stackPos-(9-7)], 'stmts' => $this->semStack[$stackPos-(9-9)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
- },
- 164 => function ($stackPos) {
- $this->semValue = new Stmt\Switch_($this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
- },
- 165 => function ($stackPos) {
- $this->semValue = new Stmt\Break_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 166 => function ($stackPos) {
- $this->semValue = new Stmt\Continue_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 167 => function ($stackPos) {
- $this->semValue = new Stmt\Return_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 168 => function ($stackPos) {
- $this->semValue = new Stmt\Global_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 169 => function ($stackPos) {
- $this->semValue = new Stmt\Static_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 170 => function ($stackPos) {
- $this->semValue = new Stmt\Echo_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 171 => function ($stackPos) {
- $this->semValue = new Stmt\InlineHTML($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 172 => function ($stackPos) {
-
- $e = $this->semStack[$stackPos-(2-1)];
- if ($e instanceof Expr\Throw_) {
- // For backwards-compatibility reasons, convert throw in statement position into
- // Stmt\Throw_ rather than Stmt\Expression(Expr\Throw_).
- $this->semValue = new Stmt\Throw_($e->expr, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- } else {
- $this->semValue = new Stmt\Expression($e, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- }
-
- },
- 173 => function ($stackPos) {
- $this->semValue = new Stmt\Unset_($this->semStack[$stackPos-(5-3)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
- },
- 174 => function ($stackPos) {
- $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos-(7-3)], $this->semStack[$stackPos-(7-5)][0], ['keyVar' => null, 'byRef' => $this->semStack[$stackPos-(7-5)][1], 'stmts' => $this->semStack[$stackPos-(7-7)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
- },
- 175 => function ($stackPos) {
- $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos-(9-3)], $this->semStack[$stackPos-(9-7)][0], ['keyVar' => $this->semStack[$stackPos-(9-5)], 'byRef' => $this->semStack[$stackPos-(9-7)][1], 'stmts' => $this->semStack[$stackPos-(9-9)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
- },
- 176 => function ($stackPos) {
- $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos-(6-3)], new Expr\Error($this->startAttributeStack[$stackPos-(6-4)] + $this->endAttributeStack[$stackPos-(6-4)]), ['stmts' => $this->semStack[$stackPos-(6-6)]], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
- },
- 177 => function ($stackPos) {
- $this->semValue = new Stmt\Declare_($this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
- },
- 178 => function ($stackPos) {
- $this->semValue = new Stmt\TryCatch($this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-5)], $this->semStack[$stackPos-(6-6)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); $this->checkTryCatch($this->semValue);
- },
- 179 => function ($stackPos) {
- $this->semValue = new Stmt\Goto_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 180 => function ($stackPos) {
- $this->semValue = new Stmt\Label($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 181 => function ($stackPos) {
- $this->semValue = array(); /* means: no statement */
- },
- 182 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 183 => function ($stackPos) {
- $startAttributes = $this->startAttributeStack[$stackPos-(1-1)]; if (isset($startAttributes['comments'])) { $this->semValue = new Stmt\Nop($startAttributes + $this->endAttributes); } else { $this->semValue = null; };
- if ($this->semValue === null) $this->semValue = array(); /* means: no statement */
- },
- 184 => function ($stackPos) {
- $this->semValue = array();
- },
- 185 => function ($stackPos) {
- $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 186 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 187 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 188 => function ($stackPos) {
- $this->semValue = new Stmt\Catch_($this->semStack[$stackPos-(8-3)], $this->semStack[$stackPos-(8-4)], $this->semStack[$stackPos-(8-7)], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
- },
- 189 => function ($stackPos) {
- $this->semValue = null;
- },
- 190 => function ($stackPos) {
- $this->semValue = new Stmt\Finally_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 191 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 192 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 193 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 194 => function ($stackPos) {
- $this->semValue = false;
- },
- 195 => function ($stackPos) {
- $this->semValue = true;
- },
- 196 => function ($stackPos) {
- $this->semValue = false;
- },
- 197 => function ($stackPos) {
- $this->semValue = true;
- },
- 198 => function ($stackPos) {
- $this->semValue = false;
- },
- 199 => function ($stackPos) {
- $this->semValue = true;
- },
- 200 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
- },
- 201 => function ($stackPos) {
- $this->semValue = [];
- },
- 202 => function ($stackPos) {
- $this->semValue = new Stmt\Function_($this->semStack[$stackPos-(8-3)], ['byRef' => $this->semStack[$stackPos-(8-2)], 'params' => $this->semStack[$stackPos-(8-5)], 'returnType' => $this->semStack[$stackPos-(8-7)], 'stmts' => $this->semStack[$stackPos-(8-8)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
- },
- 203 => function ($stackPos) {
- $this->semValue = new Stmt\Function_($this->semStack[$stackPos-(9-4)], ['byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-6)], 'returnType' => $this->semStack[$stackPos-(9-8)], 'stmts' => $this->semStack[$stackPos-(9-9)], 'attrGroups' => $this->semStack[$stackPos-(9-1)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
- },
- 204 => function ($stackPos) {
- $this->semValue = new Stmt\Class_($this->semStack[$stackPos-(8-3)], ['type' => $this->semStack[$stackPos-(8-2)], 'extends' => $this->semStack[$stackPos-(8-4)], 'implements' => $this->semStack[$stackPos-(8-5)], 'stmts' => $this->semStack[$stackPos-(8-7)], 'attrGroups' => $this->semStack[$stackPos-(8-1)]], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
- $this->checkClass($this->semValue, $stackPos-(8-3));
- },
- 205 => function ($stackPos) {
- $this->semValue = new Stmt\Interface_($this->semStack[$stackPos-(7-3)], ['extends' => $this->semStack[$stackPos-(7-4)], 'stmts' => $this->semStack[$stackPos-(7-6)], 'attrGroups' => $this->semStack[$stackPos-(7-1)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
- $this->checkInterface($this->semValue, $stackPos-(7-3));
- },
- 206 => function ($stackPos) {
- $this->semValue = new Stmt\Trait_($this->semStack[$stackPos-(6-3)], ['stmts' => $this->semStack[$stackPos-(6-5)], 'attrGroups' => $this->semStack[$stackPos-(6-1)]], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
- },
- 207 => function ($stackPos) {
- $this->semValue = new Stmt\Enum_($this->semStack[$stackPos-(8-3)], ['scalarType' => $this->semStack[$stackPos-(8-4)], 'implements' => $this->semStack[$stackPos-(8-5)], 'stmts' => $this->semStack[$stackPos-(8-7)], 'attrGroups' => $this->semStack[$stackPos-(8-1)]], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
- $this->checkEnum($this->semValue, $stackPos-(8-3));
- },
- 208 => function ($stackPos) {
- $this->semValue = null;
- },
- 209 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-2)];
- },
- 210 => function ($stackPos) {
- $this->semValue = null;
- },
- 211 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-2)];
- },
- 212 => function ($stackPos) {
- $this->semValue = 0;
- },
- 213 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT;
- },
- 214 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_FINAL;
- },
- 215 => function ($stackPos) {
- $this->semValue = null;
- },
- 216 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-2)];
- },
- 217 => function ($stackPos) {
- $this->semValue = array();
- },
- 218 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-2)];
- },
- 219 => function ($stackPos) {
- $this->semValue = array();
- },
- 220 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-2)];
- },
- 221 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 222 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 223 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 224 => function ($stackPos) {
- $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
- },
- 225 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(4-2)];
- },
- 226 => function ($stackPos) {
- $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
- },
- 227 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(4-2)];
- },
- 228 => function ($stackPos) {
- $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
- },
- 229 => function ($stackPos) {
- $this->semValue = null;
- },
- 230 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(4-2)];
- },
- 231 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 232 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 233 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 234 => function ($stackPos) {
- $this->semValue = new Stmt\DeclareDeclare($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 235 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
- },
- 236 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(4-3)];
- },
- 237 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(4-2)];
- },
- 238 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(5-3)];
- },
- 239 => function ($stackPos) {
- $this->semValue = array();
- },
- 240 => function ($stackPos) {
- $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 241 => function ($stackPos) {
- $this->semValue = new Stmt\Case_($this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 242 => function ($stackPos) {
- $this->semValue = new Stmt\Case_(null, $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 243 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 244 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 245 => function ($stackPos) {
- $this->semValue = new Expr\Match_($this->semStack[$stackPos-(7-3)], $this->semStack[$stackPos-(7-6)], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
- },
- 246 => function ($stackPos) {
- $this->semValue = [];
- },
- 247 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 248 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 249 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 250 => function ($stackPos) {
- $this->semValue = new Node\MatchArm($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 251 => function ($stackPos) {
- $this->semValue = new Node\MatchArm(null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 252 => function ($stackPos) {
- $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
- },
- 253 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(4-2)];
- },
- 254 => function ($stackPos) {
- $this->semValue = array();
- },
- 255 => function ($stackPos) {
- $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 256 => function ($stackPos) {
- $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos-(5-3)], is_array($this->semStack[$stackPos-(5-5)]) ? $this->semStack[$stackPos-(5-5)] : array($this->semStack[$stackPos-(5-5)]), $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
- },
- 257 => function ($stackPos) {
- $this->semValue = array();
- },
- 258 => function ($stackPos) {
- $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 259 => function ($stackPos) {
- $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-6)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
- },
- 260 => function ($stackPos) {
- $this->semValue = null;
- },
- 261 => function ($stackPos) {
- $this->semValue = new Stmt\Else_(is_array($this->semStack[$stackPos-(2-2)]) ? $this->semStack[$stackPos-(2-2)] : array($this->semStack[$stackPos-(2-2)]), $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 262 => function ($stackPos) {
- $this->semValue = null;
- },
- 263 => function ($stackPos) {
- $this->semValue = new Stmt\Else_($this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 264 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
- },
- 265 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(2-2)], true);
- },
- 266 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
- },
- 267 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
- },
- 268 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 269 => function ($stackPos) {
- $this->semValue = array();
- },
- 270 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 271 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 272 => function ($stackPos) {
- $this->semValue = 0;
- },
- 273 => function ($stackPos) {
- $this->checkModifier($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $this->semValue = $this->semStack[$stackPos-(2-1)] | $this->semStack[$stackPos-(2-2)];
- },
- 274 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_PUBLIC;
- },
- 275 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_PROTECTED;
- },
- 276 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_PRIVATE;
- },
- 277 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_READONLY;
- },
- 278 => function ($stackPos) {
- $this->semValue = new Node\Param($this->semStack[$stackPos-(6-6)], null, $this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-4)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes, $this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-1)]);
- $this->checkParam($this->semValue);
- },
- 279 => function ($stackPos) {
- $this->semValue = new Node\Param($this->semStack[$stackPos-(8-6)], $this->semStack[$stackPos-(8-8)], $this->semStack[$stackPos-(8-3)], $this->semStack[$stackPos-(8-4)], $this->semStack[$stackPos-(8-5)], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes, $this->semStack[$stackPos-(8-2)], $this->semStack[$stackPos-(8-1)]);
- $this->checkParam($this->semValue);
- },
- 280 => function ($stackPos) {
- $this->semValue = new Node\Param(new Expr\Error($this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes), null, $this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-4)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes, $this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-1)]);
- },
- 281 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 282 => function ($stackPos) {
- $this->semValue = new Node\NullableType($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 283 => function ($stackPos) {
- $this->semValue = new Node\UnionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 284 => function ($stackPos) {
- $this->semValue = new Node\IntersectionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 285 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 286 => function ($stackPos) {
- $this->semValue = new Node\Name('static', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 287 => function ($stackPos) {
- $this->semValue = $this->handleBuiltinTypes($this->semStack[$stackPos-(1-1)]);
- },
- 288 => function ($stackPos) {
- $this->semValue = new Node\Identifier('array', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 289 => function ($stackPos) {
- $this->semValue = new Node\Identifier('callable', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 290 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
- },
- 291 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 292 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
- },
- 293 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 294 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
- },
- 295 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 296 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
- },
- 297 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 298 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 299 => function ($stackPos) {
- $this->semValue = new Node\NullableType($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 300 => function ($stackPos) {
- $this->semValue = new Node\UnionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 301 => function ($stackPos) {
- $this->semValue = new Node\IntersectionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 302 => function ($stackPos) {
- $this->semValue = null;
- },
- 303 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 304 => function ($stackPos) {
- $this->semValue = null;
- },
- 305 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-2)];
- },
- 306 => function ($stackPos) {
- $this->semValue = null;
- },
- 307 => function ($stackPos) {
- $this->semValue = array();
- },
- 308 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(4-2)];
- },
- 309 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(3-2)]);
- },
- 310 => function ($stackPos) {
- $this->semValue = new Node\VariadicPlaceholder($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 311 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 312 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 313 => function ($stackPos) {
- $this->semValue = new Node\Arg($this->semStack[$stackPos-(1-1)], false, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 314 => function ($stackPos) {
- $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], true, false, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 315 => function ($stackPos) {
- $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], false, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 316 => function ($stackPos) {
- $this->semValue = new Node\Arg($this->semStack[$stackPos-(3-3)], false, false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->semStack[$stackPos-(3-1)]);
- },
- 317 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 318 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 319 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 320 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 321 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 322 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 323 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 324 => function ($stackPos) {
- $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 325 => function ($stackPos) {
- $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 326 => function ($stackPos) {
- if ($this->semStack[$stackPos-(2-2)] !== null) { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; }
- },
- 327 => function ($stackPos) {
- $this->semValue = array();
- },
- 328 => function ($stackPos) {
- $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); } else { $nop = null; };
- if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 329 => function ($stackPos) {
- $this->semValue = new Stmt\Property($this->semStack[$stackPos-(5-2)], $this->semStack[$stackPos-(5-4)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes, $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-1)]);
- $this->checkProperty($this->semValue, $stackPos-(5-2));
- },
- 330 => function ($stackPos) {
- $this->semValue = new Stmt\ClassConst($this->semStack[$stackPos-(5-4)], $this->semStack[$stackPos-(5-2)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes, $this->semStack[$stackPos-(5-1)]);
- $this->checkClassConst($this->semValue, $stackPos-(5-2));
- },
- 331 => function ($stackPos) {
- $this->semValue = new Stmt\ClassMethod($this->semStack[$stackPos-(10-5)], ['type' => $this->semStack[$stackPos-(10-2)], 'byRef' => $this->semStack[$stackPos-(10-4)], 'params' => $this->semStack[$stackPos-(10-7)], 'returnType' => $this->semStack[$stackPos-(10-9)], 'stmts' => $this->semStack[$stackPos-(10-10)], 'attrGroups' => $this->semStack[$stackPos-(10-1)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes);
- $this->checkClassMethod($this->semValue, $stackPos-(10-2));
- },
- 332 => function ($stackPos) {
- $this->semValue = new Stmt\TraitUse($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 333 => function ($stackPos) {
- $this->semValue = new Stmt\EnumCase($this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-4)], $this->semStack[$stackPos-(5-1)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
- },
- 334 => function ($stackPos) {
- $this->semValue = null; /* will be skipped */
- },
- 335 => function ($stackPos) {
- $this->semValue = array();
- },
- 336 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
- },
- 337 => function ($stackPos) {
- $this->semValue = array();
- },
- 338 => function ($stackPos) {
- $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 339 => function ($stackPos) {
- $this->semValue = new Stmt\TraitUseAdaptation\Precedence($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 340 => function ($stackPos) {
- $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(5-1)][0], $this->semStack[$stackPos-(5-1)][1], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-4)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
- },
- 341 => function ($stackPos) {
- $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], $this->semStack[$stackPos-(4-3)], null, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 342 => function ($stackPos) {
- $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 343 => function ($stackPos) {
- $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 344 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
- },
- 345 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 346 => function ($stackPos) {
- $this->semValue = array(null, $this->semStack[$stackPos-(1-1)]);
- },
- 347 => function ($stackPos) {
- $this->semValue = null;
- },
- 348 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 349 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 350 => function ($stackPos) {
- $this->semValue = 0;
- },
- 351 => function ($stackPos) {
- $this->semValue = 0;
- },
- 352 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 353 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 354 => function ($stackPos) {
- $this->checkModifier($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $this->semValue = $this->semStack[$stackPos-(2-1)] | $this->semStack[$stackPos-(2-2)];
- },
- 355 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_PUBLIC;
- },
- 356 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_PROTECTED;
- },
- 357 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_PRIVATE;
- },
- 358 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_STATIC;
- },
- 359 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT;
- },
- 360 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_FINAL;
- },
- 361 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_READONLY;
- },
- 362 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 363 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 364 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 365 => function ($stackPos) {
- $this->semValue = new Node\VarLikeIdentifier(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 366 => function ($stackPos) {
- $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 367 => function ($stackPos) {
- $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 368 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 369 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 370 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 371 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 372 => function ($stackPos) {
- $this->semValue = array();
- },
- 373 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 374 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 375 => function ($stackPos) {
- $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 376 => function ($stackPos) {
- $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 377 => function ($stackPos) {
- $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 378 => function ($stackPos) {
- $this->semValue = new Expr\AssignRef($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 379 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 380 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 381 => function ($stackPos) {
- $this->semValue = new Expr\Clone_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 382 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 383 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 384 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 385 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 386 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 387 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 388 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 389 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 390 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 391 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 392 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 393 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 394 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 395 => function ($stackPos) {
- $this->semValue = new Expr\PostInc($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 396 => function ($stackPos) {
- $this->semValue = new Expr\PreInc($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 397 => function ($stackPos) {
- $this->semValue = new Expr\PostDec($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 398 => function ($stackPos) {
- $this->semValue = new Expr\PreDec($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 399 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\BooleanOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 400 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\BooleanAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 401 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\LogicalOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 402 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\LogicalAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 403 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\LogicalXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 404 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 405 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 406 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 407 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 408 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 409 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 410 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 411 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 412 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 413 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 414 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 415 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 416 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 417 => function ($stackPos) {
- $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 418 => function ($stackPos) {
- $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 419 => function ($stackPos) {
- $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 420 => function ($stackPos) {
- $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 421 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Identical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 422 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\NotIdentical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 423 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Equal($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 424 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\NotEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 425 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Spaceship($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 426 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Smaller($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 427 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\SmallerOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 428 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Greater($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 429 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\GreaterOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 430 => function ($stackPos) {
- $this->semValue = new Expr\Instanceof_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 431 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
- },
- 432 => function ($stackPos) {
- $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(5-1)], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
- },
- 433 => function ($stackPos) {
- $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(4-1)], null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 434 => function ($stackPos) {
- $this->semValue = new Expr\BinaryOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 435 => function ($stackPos) {
- $this->semValue = new Expr\Isset_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 436 => function ($stackPos) {
- $this->semValue = new Expr\Empty_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 437 => function ($stackPos) {
- $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 438 => function ($stackPos) {
- $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 439 => function ($stackPos) {
- $this->semValue = new Expr\Eval_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 440 => function ($stackPos) {
- $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 441 => function ($stackPos) {
- $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 442 => function ($stackPos) {
- $this->semValue = new Expr\Cast\Int_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 443 => function ($stackPos) {
- $attrs = $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes;
- $attrs['kind'] = $this->getFloatCastKind($this->semStack[$stackPos-(2-1)]);
- $this->semValue = new Expr\Cast\Double($this->semStack[$stackPos-(2-2)], $attrs);
- },
- 444 => function ($stackPos) {
- $this->semValue = new Expr\Cast\String_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 445 => function ($stackPos) {
- $this->semValue = new Expr\Cast\Array_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 446 => function ($stackPos) {
- $this->semValue = new Expr\Cast\Object_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 447 => function ($stackPos) {
- $this->semValue = new Expr\Cast\Bool_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 448 => function ($stackPos) {
- $this->semValue = new Expr\Cast\Unset_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 449 => function ($stackPos) {
- $attrs = $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes;
- $attrs['kind'] = strtolower($this->semStack[$stackPos-(2-1)]) === 'exit' ? Expr\Exit_::KIND_EXIT : Expr\Exit_::KIND_DIE;
- $this->semValue = new Expr\Exit_($this->semStack[$stackPos-(2-2)], $attrs);
- },
- 450 => function ($stackPos) {
- $this->semValue = new Expr\ErrorSuppress($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 451 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 452 => function ($stackPos) {
- $this->semValue = new Expr\ShellExec($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 453 => function ($stackPos) {
- $this->semValue = new Expr\Print_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 454 => function ($stackPos) {
- $this->semValue = new Expr\Yield_(null, null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 455 => function ($stackPos) {
- $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(2-2)], null, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 456 => function ($stackPos) {
- $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 457 => function ($stackPos) {
- $this->semValue = new Expr\YieldFrom($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 458 => function ($stackPos) {
- $this->semValue = new Expr\Throw_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 459 => function ($stackPos) {
- $this->semValue = new Expr\ArrowFunction(['static' => false, 'byRef' => $this->semStack[$stackPos-(8-2)], 'params' => $this->semStack[$stackPos-(8-4)], 'returnType' => $this->semStack[$stackPos-(8-6)], 'expr' => $this->semStack[$stackPos-(8-8)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
- },
- 460 => function ($stackPos) {
- $this->semValue = new Expr\ArrowFunction(['static' => true, 'byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-5)], 'returnType' => $this->semStack[$stackPos-(9-7)], 'expr' => $this->semStack[$stackPos-(9-9)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
- },
- 461 => function ($stackPos) {
- $this->semValue = new Expr\Closure(['static' => false, 'byRef' => $this->semStack[$stackPos-(8-2)], 'params' => $this->semStack[$stackPos-(8-4)], 'uses' => $this->semStack[$stackPos-(8-6)], 'returnType' => $this->semStack[$stackPos-(8-7)], 'stmts' => $this->semStack[$stackPos-(8-8)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
- },
- 462 => function ($stackPos) {
- $this->semValue = new Expr\Closure(['static' => true, 'byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-5)], 'uses' => $this->semStack[$stackPos-(9-7)], 'returnType' => $this->semStack[$stackPos-(9-8)], 'stmts' => $this->semStack[$stackPos-(9-9)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
- },
- 463 => function ($stackPos) {
- $this->semValue = new Expr\ArrowFunction(['static' => false, 'byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-5)], 'returnType' => $this->semStack[$stackPos-(9-7)], 'expr' => $this->semStack[$stackPos-(9-9)], 'attrGroups' => $this->semStack[$stackPos-(9-1)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
- },
- 464 => function ($stackPos) {
- $this->semValue = new Expr\ArrowFunction(['static' => true, 'byRef' => $this->semStack[$stackPos-(10-4)], 'params' => $this->semStack[$stackPos-(10-6)], 'returnType' => $this->semStack[$stackPos-(10-8)], 'expr' => $this->semStack[$stackPos-(10-10)], 'attrGroups' => $this->semStack[$stackPos-(10-1)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes);
- },
- 465 => function ($stackPos) {
- $this->semValue = new Expr\Closure(['static' => false, 'byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-5)], 'uses' => $this->semStack[$stackPos-(9-7)], 'returnType' => $this->semStack[$stackPos-(9-8)], 'stmts' => $this->semStack[$stackPos-(9-9)], 'attrGroups' => $this->semStack[$stackPos-(9-1)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
- },
- 466 => function ($stackPos) {
- $this->semValue = new Expr\Closure(['static' => true, 'byRef' => $this->semStack[$stackPos-(10-4)], 'params' => $this->semStack[$stackPos-(10-6)], 'uses' => $this->semStack[$stackPos-(10-8)], 'returnType' => $this->semStack[$stackPos-(10-9)], 'stmts' => $this->semStack[$stackPos-(10-10)], 'attrGroups' => $this->semStack[$stackPos-(10-1)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes);
- },
- 467 => function ($stackPos) {
- $this->semValue = array(new Stmt\Class_(null, ['type' => 0, 'extends' => $this->semStack[$stackPos-(8-4)], 'implements' => $this->semStack[$stackPos-(8-5)], 'stmts' => $this->semStack[$stackPos-(8-7)], 'attrGroups' => $this->semStack[$stackPos-(8-1)]], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes), $this->semStack[$stackPos-(8-3)]);
- $this->checkClass($this->semValue[0], -1);
- },
- 468 => function ($stackPos) {
- $this->semValue = new Expr\New_($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 469 => function ($stackPos) {
- list($class, $ctorArgs) = $this->semStack[$stackPos-(2-2)]; $this->semValue = new Expr\New_($class, $ctorArgs, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 470 => function ($stackPos) {
- $this->semValue = array();
- },
- 471 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(4-3)];
- },
- 472 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 473 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 474 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 475 => function ($stackPos) {
- $this->semValue = new Expr\ClosureUse($this->semStack[$stackPos-(2-2)], $this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 476 => function ($stackPos) {
- $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 477 => function ($stackPos) {
- $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 478 => function ($stackPos) {
- $this->semValue = new Expr\StaticCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 479 => function ($stackPos) {
- $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 480 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 481 => function ($stackPos) {
- $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 482 => function ($stackPos) {
- $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 483 => function ($stackPos) {
- $this->semValue = new Name\FullyQualified(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 484 => function ($stackPos) {
- $this->semValue = new Name\Relative(substr($this->semStack[$stackPos-(1-1)], 10), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 485 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 486 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 487 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
- },
- 488 => function ($stackPos) {
- $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2;
- },
- 489 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 490 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 491 => function ($stackPos) {
- $this->semValue = null;
- },
- 492 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
- },
- 493 => function ($stackPos) {
- $this->semValue = array();
- },
- 494 => function ($stackPos) {
- $this->semValue = array(new Scalar\EncapsedStringPart(Scalar\String_::parseEscapeSequences($this->semStack[$stackPos-(1-1)], '`'), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes));
- },
- 495 => function ($stackPos) {
- foreach ($this->semStack[$stackPos-(1-1)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', true); } }; $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 496 => function ($stackPos) {
- $this->semValue = array();
- },
- 497 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 498 => function ($stackPos) {
- $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 499 => function ($stackPos) {
- $this->semValue = new Scalar\MagicConst\Line($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 500 => function ($stackPos) {
- $this->semValue = new Scalar\MagicConst\File($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 501 => function ($stackPos) {
- $this->semValue = new Scalar\MagicConst\Dir($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 502 => function ($stackPos) {
- $this->semValue = new Scalar\MagicConst\Class_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 503 => function ($stackPos) {
- $this->semValue = new Scalar\MagicConst\Trait_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 504 => function ($stackPos) {
- $this->semValue = new Scalar\MagicConst\Method($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 505 => function ($stackPos) {
- $this->semValue = new Scalar\MagicConst\Function_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 506 => function ($stackPos) {
- $this->semValue = new Scalar\MagicConst\Namespace_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 507 => function ($stackPos) {
- $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 508 => function ($stackPos) {
- $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], new Expr\Error($this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)]), $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); $this->errorState = 2;
- },
- 509 => function ($stackPos) {
- $attrs = $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes; $attrs['kind'] = Expr\Array_::KIND_SHORT;
- $this->semValue = new Expr\Array_($this->semStack[$stackPos-(3-2)], $attrs);
- },
- 510 => function ($stackPos) {
- $attrs = $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes; $attrs['kind'] = Expr\Array_::KIND_LONG;
- $this->semValue = new Expr\Array_($this->semStack[$stackPos-(4-3)], $attrs);
- },
- 511 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 512 => function ($stackPos) {
- $attrs = $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes; $attrs['kind'] = ($this->semStack[$stackPos-(1-1)][0] === "'" || ($this->semStack[$stackPos-(1-1)][1] === "'" && ($this->semStack[$stackPos-(1-1)][0] === 'b' || $this->semStack[$stackPos-(1-1)][0] === 'B')) ? Scalar\String_::KIND_SINGLE_QUOTED : Scalar\String_::KIND_DOUBLE_QUOTED);
- $this->semValue = new Scalar\String_(Scalar\String_::parse($this->semStack[$stackPos-(1-1)]), $attrs);
- },
- 513 => function ($stackPos) {
- $attrs = $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes; $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED;
- foreach ($this->semStack[$stackPos-(3-2)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '"', true); } }; $this->semValue = new Scalar\Encapsed($this->semStack[$stackPos-(3-2)], $attrs);
- },
- 514 => function ($stackPos) {
- $this->semValue = $this->parseLNumber($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 515 => function ($stackPos) {
- $this->semValue = new Scalar\DNumber(Scalar\DNumber::parse($this->semStack[$stackPos-(1-1)]), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 516 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 517 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 518 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 519 => function ($stackPos) {
- $this->semValue = $this->parseDocString($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)], true);
- },
- 520 => function ($stackPos) {
- $this->semValue = $this->parseDocString($this->semStack[$stackPos-(2-1)], '', $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(2-2)] + $this->endAttributeStack[$stackPos-(2-2)], true);
- },
- 521 => function ($stackPos) {
- $this->semValue = $this->parseDocString($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)], true);
- },
- 522 => function ($stackPos) {
- $this->semValue = null;
- },
- 523 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 524 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 525 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
- },
- 526 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 527 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 528 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 529 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 530 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 531 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
- },
- 532 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 533 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 534 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 535 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 536 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 537 => function ($stackPos) {
- $this->semValue = new Expr\MethodCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 538 => function ($stackPos) {
- $this->semValue = new Expr\NullsafeMethodCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 539 => function ($stackPos) {
- $this->semValue = null;
- },
- 540 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 541 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 542 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 543 => function ($stackPos) {
- $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 544 => function ($stackPos) {
- $this->semValue = new Expr\NullsafePropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 545 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 546 => function ($stackPos) {
- $this->semValue = new Expr\Variable($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 547 => function ($stackPos) {
- $this->semValue = new Expr\Variable($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 548 => function ($stackPos) {
- $this->semValue = new Expr\Variable(new Expr\Error($this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes), $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); $this->errorState = 2;
- },
- 549 => function ($stackPos) {
- $var = $this->semStack[$stackPos-(1-1)]->name; $this->semValue = \is_string($var) ? new Node\VarLikeIdentifier($var, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes) : $var;
- },
- 550 => function ($stackPos) {
- $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 551 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 552 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 553 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 554 => function ($stackPos) {
- $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 555 => function ($stackPos) {
- $this->semValue = new Expr\NullsafePropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 556 => function ($stackPos) {
- $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 557 => function ($stackPos) {
- $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 558 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 559 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
- },
- 560 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 561 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 562 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
- },
- 563 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 564 => function ($stackPos) {
- $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2;
- },
- 565 => function ($stackPos) {
- $this->semValue = new Expr\List_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 566 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)]; $end = count($this->semValue)-1; if ($this->semValue[$end] === null) array_pop($this->semValue);
- },
- 567 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 568 => function ($stackPos) {
- /* do nothing -- prevent default action of $$=$this->semStack[$1]. See $551. */
- },
- 569 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 570 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 571 => function ($stackPos) {
- $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 572 => function ($stackPos) {
- $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 573 => function ($stackPos) {
- $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 574 => function ($stackPos) {
- $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 575 => function ($stackPos) {
- $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-1)], true, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 576 => function ($stackPos) {
- $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 577 => function ($stackPos) {
- $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, false, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 578 => function ($stackPos) {
- $this->semValue = null;
- },
- 579 => function ($stackPos) {
- $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 580 => function ($stackPos) {
- $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 581 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 582 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]);
- },
- 583 => function ($stackPos) {
- $this->semValue = new Scalar\EncapsedStringPart($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 584 => function ($stackPos) {
- $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 585 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 586 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 587 => function ($stackPos) {
- $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 588 => function ($stackPos) {
- $this->semValue = new Expr\NullsafePropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 589 => function ($stackPos) {
- $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 590 => function ($stackPos) {
- $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 591 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-4)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
- },
- 592 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
- },
- 593 => function ($stackPos) {
- $this->semValue = new Scalar\String_($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 594 => function ($stackPos) {
- $this->semValue = $this->parseNumString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 595 => function ($stackPos) {
- $this->semValue = $this->parseNumString('-' . $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 596 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- ];
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Parser/Tokens.php b/vendor/nikic/php-parser/lib/PhpParser/Parser/Tokens.php
deleted file mode 100644
index b76a5d94..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Parser/Tokens.php
+++ /dev/null
@@ -1,148 +0,0 @@
-lexer = $lexer;
-
- if (isset($options['throwOnError'])) {
- throw new \LogicException(
- '"throwOnError" is no longer supported, use "errorHandler" instead');
- }
-
- $this->initReduceCallbacks();
- }
-
- /**
- * Parses PHP code into a node tree.
- *
- * If a non-throwing error handler is used, the parser will continue parsing after an error
- * occurred and attempt to build a partial AST.
- *
- * @param string $code The source code to parse
- * @param ErrorHandler|null $errorHandler Error handler to use for lexer/parser errors, defaults
- * to ErrorHandler\Throwing.
- *
- * @return Node\Stmt[]|null Array of statements (or null non-throwing error handler is used and
- * the parser was unable to recover from an error).
- */
- public function parse(string $code, ErrorHandler $errorHandler = null) {
- $this->errorHandler = $errorHandler ?: new ErrorHandler\Throwing;
-
- $this->lexer->startLexing($code, $this->errorHandler);
- $result = $this->doParse();
-
- // Clear out some of the interior state, so we don't hold onto unnecessary
- // memory between uses of the parser
- $this->startAttributeStack = [];
- $this->endAttributeStack = [];
- $this->semStack = [];
- $this->semValue = null;
-
- return $result;
- }
-
- protected function doParse() {
- // We start off with no lookahead-token
- $symbol = self::SYMBOL_NONE;
-
- // The attributes for a node are taken from the first and last token of the node.
- // From the first token only the startAttributes are taken and from the last only
- // the endAttributes. Both are merged using the array union operator (+).
- $startAttributes = [];
- $endAttributes = [];
- $this->endAttributes = $endAttributes;
-
- // Keep stack of start and end attributes
- $this->startAttributeStack = [];
- $this->endAttributeStack = [$endAttributes];
-
- // Start off in the initial state and keep a stack of previous states
- $state = 0;
- $stateStack = [$state];
-
- // Semantic value stack (contains values of tokens and semantic action results)
- $this->semStack = [];
-
- // Current position in the stack(s)
- $stackPos = 0;
-
- $this->errorState = 0;
-
- for (;;) {
- //$this->traceNewState($state, $symbol);
-
- if ($this->actionBase[$state] === 0) {
- $rule = $this->actionDefault[$state];
- } else {
- if ($symbol === self::SYMBOL_NONE) {
- // Fetch the next token id from the lexer and fetch additional info by-ref.
- // The end attributes are fetched into a temporary variable and only set once the token is really
- // shifted (not during read). Otherwise you would sometimes get off-by-one errors, when a rule is
- // reduced after a token was read but not yet shifted.
- $tokenId = $this->lexer->getNextToken($tokenValue, $startAttributes, $endAttributes);
-
- // map the lexer token id to the internally used symbols
- $symbol = $tokenId >= 0 && $tokenId < $this->tokenToSymbolMapSize
- ? $this->tokenToSymbol[$tokenId]
- : $this->invalidSymbol;
-
- if ($symbol === $this->invalidSymbol) {
- throw new \RangeException(sprintf(
- 'The lexer returned an invalid token (id=%d, value=%s)',
- $tokenId, $tokenValue
- ));
- }
-
- // Allow productions to access the start attributes of the lookahead token.
- $this->lookaheadStartAttributes = $startAttributes;
-
- //$this->traceRead($symbol);
- }
-
- $idx = $this->actionBase[$state] + $symbol;
- if ((($idx >= 0 && $idx < $this->actionTableSize && $this->actionCheck[$idx] === $symbol)
- || ($state < $this->YY2TBLSTATE
- && ($idx = $this->actionBase[$state + $this->numNonLeafStates] + $symbol) >= 0
- && $idx < $this->actionTableSize && $this->actionCheck[$idx] === $symbol))
- && ($action = $this->action[$idx]) !== $this->defaultAction) {
- /*
- * >= numNonLeafStates: shift and reduce
- * > 0: shift
- * = 0: accept
- * < 0: reduce
- * = -YYUNEXPECTED: error
- */
- if ($action > 0) {
- /* shift */
- //$this->traceShift($symbol);
-
- ++$stackPos;
- $stateStack[$stackPos] = $state = $action;
- $this->semStack[$stackPos] = $tokenValue;
- $this->startAttributeStack[$stackPos] = $startAttributes;
- $this->endAttributeStack[$stackPos] = $endAttributes;
- $this->endAttributes = $endAttributes;
- $symbol = self::SYMBOL_NONE;
-
- if ($this->errorState) {
- --$this->errorState;
- }
-
- if ($action < $this->numNonLeafStates) {
- continue;
- }
-
- /* $yyn >= numNonLeafStates means shift-and-reduce */
- $rule = $action - $this->numNonLeafStates;
- } else {
- $rule = -$action;
- }
- } else {
- $rule = $this->actionDefault[$state];
- }
- }
-
- for (;;) {
- if ($rule === 0) {
- /* accept */
- //$this->traceAccept();
- return $this->semValue;
- } elseif ($rule !== $this->unexpectedTokenRule) {
- /* reduce */
- //$this->traceReduce($rule);
-
- try {
- $this->reduceCallbacks[$rule]($stackPos);
- } catch (Error $e) {
- if (-1 === $e->getStartLine() && isset($startAttributes['startLine'])) {
- $e->setStartLine($startAttributes['startLine']);
- }
-
- $this->emitError($e);
- // Can't recover from this type of error
- return null;
- }
-
- /* Goto - shift nonterminal */
- $lastEndAttributes = $this->endAttributeStack[$stackPos];
- $ruleLength = $this->ruleToLength[$rule];
- $stackPos -= $ruleLength;
- $nonTerminal = $this->ruleToNonTerminal[$rule];
- $idx = $this->gotoBase[$nonTerminal] + $stateStack[$stackPos];
- if ($idx >= 0 && $idx < $this->gotoTableSize && $this->gotoCheck[$idx] === $nonTerminal) {
- $state = $this->goto[$idx];
- } else {
- $state = $this->gotoDefault[$nonTerminal];
- }
-
- ++$stackPos;
- $stateStack[$stackPos] = $state;
- $this->semStack[$stackPos] = $this->semValue;
- $this->endAttributeStack[$stackPos] = $lastEndAttributes;
- if ($ruleLength === 0) {
- // Empty productions use the start attributes of the lookahead token.
- $this->startAttributeStack[$stackPos] = $this->lookaheadStartAttributes;
- }
- } else {
- /* error */
- switch ($this->errorState) {
- case 0:
- $msg = $this->getErrorMessage($symbol, $state);
- $this->emitError(new Error($msg, $startAttributes + $endAttributes));
- // Break missing intentionally
- case 1:
- case 2:
- $this->errorState = 3;
-
- // Pop until error-expecting state uncovered
- while (!(
- (($idx = $this->actionBase[$state] + $this->errorSymbol) >= 0
- && $idx < $this->actionTableSize && $this->actionCheck[$idx] === $this->errorSymbol)
- || ($state < $this->YY2TBLSTATE
- && ($idx = $this->actionBase[$state + $this->numNonLeafStates] + $this->errorSymbol) >= 0
- && $idx < $this->actionTableSize && $this->actionCheck[$idx] === $this->errorSymbol)
- ) || ($action = $this->action[$idx]) === $this->defaultAction) { // Not totally sure about this
- if ($stackPos <= 0) {
- // Could not recover from error
- return null;
- }
- $state = $stateStack[--$stackPos];
- //$this->tracePop($state);
- }
-
- //$this->traceShift($this->errorSymbol);
- ++$stackPos;
- $stateStack[$stackPos] = $state = $action;
-
- // We treat the error symbol as being empty, so we reset the end attributes
- // to the end attributes of the last non-error symbol
- $this->startAttributeStack[$stackPos] = $this->lookaheadStartAttributes;
- $this->endAttributeStack[$stackPos] = $this->endAttributeStack[$stackPos - 1];
- $this->endAttributes = $this->endAttributeStack[$stackPos - 1];
- break;
-
- case 3:
- if ($symbol === 0) {
- // Reached EOF without recovering from error
- return null;
- }
-
- //$this->traceDiscard($symbol);
- $symbol = self::SYMBOL_NONE;
- break 2;
- }
- }
-
- if ($state < $this->numNonLeafStates) {
- break;
- }
-
- /* >= numNonLeafStates means shift-and-reduce */
- $rule = $state - $this->numNonLeafStates;
- }
- }
-
- throw new \RuntimeException('Reached end of parser loop');
- }
-
- protected function emitError(Error $error) {
- $this->errorHandler->handleError($error);
- }
-
- /**
- * Format error message including expected tokens.
- *
- * @param int $symbol Unexpected symbol
- * @param int $state State at time of error
- *
- * @return string Formatted error message
- */
- protected function getErrorMessage(int $symbol, int $state) : string {
- $expectedString = '';
- if ($expected = $this->getExpectedTokens($state)) {
- $expectedString = ', expecting ' . implode(' or ', $expected);
- }
-
- return 'Syntax error, unexpected ' . $this->symbolToName[$symbol] . $expectedString;
- }
-
- /**
- * Get limited number of expected tokens in given state.
- *
- * @param int $state State
- *
- * @return string[] Expected tokens. If too many, an empty array is returned.
- */
- protected function getExpectedTokens(int $state) : array {
- $expected = [];
-
- $base = $this->actionBase[$state];
- foreach ($this->symbolToName as $symbol => $name) {
- $idx = $base + $symbol;
- if ($idx >= 0 && $idx < $this->actionTableSize && $this->actionCheck[$idx] === $symbol
- || $state < $this->YY2TBLSTATE
- && ($idx = $this->actionBase[$state + $this->numNonLeafStates] + $symbol) >= 0
- && $idx < $this->actionTableSize && $this->actionCheck[$idx] === $symbol
- ) {
- if ($this->action[$idx] !== $this->unexpectedTokenRule
- && $this->action[$idx] !== $this->defaultAction
- && $symbol !== $this->errorSymbol
- ) {
- if (count($expected) === 4) {
- /* Too many expected tokens */
- return [];
- }
-
- $expected[] = $name;
- }
- }
- }
-
- return $expected;
- }
-
- /*
- * Tracing functions used for debugging the parser.
- */
-
- /*
- protected function traceNewState($state, $symbol) {
- echo '% State ' . $state
- . ', Lookahead ' . ($symbol == self::SYMBOL_NONE ? '--none--' : $this->symbolToName[$symbol]) . "\n";
- }
-
- protected function traceRead($symbol) {
- echo '% Reading ' . $this->symbolToName[$symbol] . "\n";
- }
-
- protected function traceShift($symbol) {
- echo '% Shift ' . $this->symbolToName[$symbol] . "\n";
- }
-
- protected function traceAccept() {
- echo "% Accepted.\n";
- }
-
- protected function traceReduce($n) {
- echo '% Reduce by (' . $n . ') ' . $this->productions[$n] . "\n";
- }
-
- protected function tracePop($state) {
- echo '% Recovering, uncovered state ' . $state . "\n";
- }
-
- protected function traceDiscard($symbol) {
- echo '% Discard ' . $this->symbolToName[$symbol] . "\n";
- }
- */
-
- /*
- * Helper functions invoked by semantic actions
- */
-
- /**
- * Moves statements of semicolon-style namespaces into $ns->stmts and checks various error conditions.
- *
- * @param Node\Stmt[] $stmts
- * @return Node\Stmt[]
- */
- protected function handleNamespaces(array $stmts) : array {
- $hasErrored = false;
- $style = $this->getNamespacingStyle($stmts);
- if (null === $style) {
- // not namespaced, nothing to do
- return $stmts;
- } elseif ('brace' === $style) {
- // For braced namespaces we only have to check that there are no invalid statements between the namespaces
- $afterFirstNamespace = false;
- foreach ($stmts as $stmt) {
- if ($stmt instanceof Node\Stmt\Namespace_) {
- $afterFirstNamespace = true;
- } elseif (!$stmt instanceof Node\Stmt\HaltCompiler
- && !$stmt instanceof Node\Stmt\Nop
- && $afterFirstNamespace && !$hasErrored) {
- $this->emitError(new Error(
- 'No code may exist outside of namespace {}', $stmt->getAttributes()));
- $hasErrored = true; // Avoid one error for every statement
- }
- }
- return $stmts;
- } else {
- // For semicolon namespaces we have to move the statements after a namespace declaration into ->stmts
- $resultStmts = [];
- $targetStmts =& $resultStmts;
- $lastNs = null;
- foreach ($stmts as $stmt) {
- if ($stmt instanceof Node\Stmt\Namespace_) {
- if ($lastNs !== null) {
- $this->fixupNamespaceAttributes($lastNs);
- }
- if ($stmt->stmts === null) {
- $stmt->stmts = [];
- $targetStmts =& $stmt->stmts;
- $resultStmts[] = $stmt;
- } else {
- // This handles the invalid case of mixed style namespaces
- $resultStmts[] = $stmt;
- $targetStmts =& $resultStmts;
- }
- $lastNs = $stmt;
- } elseif ($stmt instanceof Node\Stmt\HaltCompiler) {
- // __halt_compiler() is not moved into the namespace
- $resultStmts[] = $stmt;
- } else {
- $targetStmts[] = $stmt;
- }
- }
- if ($lastNs !== null) {
- $this->fixupNamespaceAttributes($lastNs);
- }
- return $resultStmts;
- }
- }
-
- private function fixupNamespaceAttributes(Node\Stmt\Namespace_ $stmt) {
- // We moved the statements into the namespace node, as such the end of the namespace node
- // needs to be extended to the end of the statements.
- if (empty($stmt->stmts)) {
- return;
- }
-
- // We only move the builtin end attributes here. This is the best we can do with the
- // knowledge we have.
- $endAttributes = ['endLine', 'endFilePos', 'endTokenPos'];
- $lastStmt = $stmt->stmts[count($stmt->stmts) - 1];
- foreach ($endAttributes as $endAttribute) {
- if ($lastStmt->hasAttribute($endAttribute)) {
- $stmt->setAttribute($endAttribute, $lastStmt->getAttribute($endAttribute));
- }
- }
- }
-
- /**
- * Determine namespacing style (semicolon or brace)
- *
- * @param Node[] $stmts Top-level statements.
- *
- * @return null|string One of "semicolon", "brace" or null (no namespaces)
- */
- private function getNamespacingStyle(array $stmts) {
- $style = null;
- $hasNotAllowedStmts = false;
- foreach ($stmts as $i => $stmt) {
- if ($stmt instanceof Node\Stmt\Namespace_) {
- $currentStyle = null === $stmt->stmts ? 'semicolon' : 'brace';
- if (null === $style) {
- $style = $currentStyle;
- if ($hasNotAllowedStmts) {
- $this->emitError(new Error(
- 'Namespace declaration statement has to be the very first statement in the script',
- $stmt->getLine() // Avoid marking the entire namespace as an error
- ));
- }
- } elseif ($style !== $currentStyle) {
- $this->emitError(new Error(
- 'Cannot mix bracketed namespace declarations with unbracketed namespace declarations',
- $stmt->getLine() // Avoid marking the entire namespace as an error
- ));
- // Treat like semicolon style for namespace normalization
- return 'semicolon';
- }
- continue;
- }
-
- /* declare(), __halt_compiler() and nops can be used before a namespace declaration */
- if ($stmt instanceof Node\Stmt\Declare_
- || $stmt instanceof Node\Stmt\HaltCompiler
- || $stmt instanceof Node\Stmt\Nop) {
- continue;
- }
-
- /* There may be a hashbang line at the very start of the file */
- if ($i === 0 && $stmt instanceof Node\Stmt\InlineHTML && preg_match('/\A#!.*\r?\n\z/', $stmt->value)) {
- continue;
- }
-
- /* Everything else if forbidden before namespace declarations */
- $hasNotAllowedStmts = true;
- }
- return $style;
- }
-
- /**
- * Fix up parsing of static property calls in PHP 5.
- *
- * In PHP 5 A::$b[c][d] and A::$b[c][d]() have very different interpretation. The former is
- * interpreted as (A::$b)[c][d], while the latter is the same as A::{$b[c][d]}(). We parse the
- * latter as the former initially and this method fixes the AST into the correct form when we
- * encounter the "()".
- *
- * @param Node\Expr\StaticPropertyFetch|Node\Expr\ArrayDimFetch $prop
- * @param Node\Arg[] $args
- * @param array $attributes
- *
- * @return Expr\StaticCall
- */
- protected function fixupPhp5StaticPropCall($prop, array $args, array $attributes) : Expr\StaticCall {
- if ($prop instanceof Node\Expr\StaticPropertyFetch) {
- $name = $prop->name instanceof VarLikeIdentifier
- ? $prop->name->toString() : $prop->name;
- $var = new Expr\Variable($name, $prop->name->getAttributes());
- return new Expr\StaticCall($prop->class, $var, $args, $attributes);
- } elseif ($prop instanceof Node\Expr\ArrayDimFetch) {
- $tmp = $prop;
- while ($tmp->var instanceof Node\Expr\ArrayDimFetch) {
- $tmp = $tmp->var;
- }
-
- /** @var Expr\StaticPropertyFetch $staticProp */
- $staticProp = $tmp->var;
-
- // Set start attributes to attributes of innermost node
- $tmp = $prop;
- $this->fixupStartAttributes($tmp, $staticProp->name);
- while ($tmp->var instanceof Node\Expr\ArrayDimFetch) {
- $tmp = $tmp->var;
- $this->fixupStartAttributes($tmp, $staticProp->name);
- }
-
- $name = $staticProp->name instanceof VarLikeIdentifier
- ? $staticProp->name->toString() : $staticProp->name;
- $tmp->var = new Expr\Variable($name, $staticProp->name->getAttributes());
- return new Expr\StaticCall($staticProp->class, $prop, $args, $attributes);
- } else {
- throw new \Exception;
- }
- }
-
- protected function fixupStartAttributes(Node $to, Node $from) {
- $startAttributes = ['startLine', 'startFilePos', 'startTokenPos'];
- foreach ($startAttributes as $startAttribute) {
- if ($from->hasAttribute($startAttribute)) {
- $to->setAttribute($startAttribute, $from->getAttribute($startAttribute));
- }
- }
- }
-
- protected function handleBuiltinTypes(Name $name) {
- $builtinTypes = [
- 'bool' => true,
- 'int' => true,
- 'float' => true,
- 'string' => true,
- 'iterable' => true,
- 'void' => true,
- 'object' => true,
- 'null' => true,
- 'false' => true,
- 'mixed' => true,
- 'never' => true,
- ];
-
- if (!$name->isUnqualified()) {
- return $name;
- }
-
- $lowerName = $name->toLowerString();
- if (!isset($builtinTypes[$lowerName])) {
- return $name;
- }
-
- return new Node\Identifier($lowerName, $name->getAttributes());
- }
-
- /**
- * Get combined start and end attributes at a stack location
- *
- * @param int $pos Stack location
- *
- * @return array Combined start and end attributes
- */
- protected function getAttributesAt(int $pos) : array {
- return $this->startAttributeStack[$pos] + $this->endAttributeStack[$pos];
- }
-
- protected function getFloatCastKind(string $cast): int
- {
- $cast = strtolower($cast);
- if (strpos($cast, 'float') !== false) {
- return Double::KIND_FLOAT;
- }
-
- if (strpos($cast, 'real') !== false) {
- return Double::KIND_REAL;
- }
-
- return Double::KIND_DOUBLE;
- }
-
- protected function parseLNumber($str, $attributes, $allowInvalidOctal = false) {
- try {
- return LNumber::fromString($str, $attributes, $allowInvalidOctal);
- } catch (Error $error) {
- $this->emitError($error);
- // Use dummy value
- return new LNumber(0, $attributes);
- }
- }
-
- /**
- * Parse a T_NUM_STRING token into either an integer or string node.
- *
- * @param string $str Number string
- * @param array $attributes Attributes
- *
- * @return LNumber|String_ Integer or string node.
- */
- protected function parseNumString(string $str, array $attributes) {
- if (!preg_match('/^(?:0|-?[1-9][0-9]*)$/', $str)) {
- return new String_($str, $attributes);
- }
-
- $num = +$str;
- if (!is_int($num)) {
- return new String_($str, $attributes);
- }
-
- return new LNumber($num, $attributes);
- }
-
- protected function stripIndentation(
- string $string, int $indentLen, string $indentChar,
- bool $newlineAtStart, bool $newlineAtEnd, array $attributes
- ) {
- if ($indentLen === 0) {
- return $string;
- }
-
- $start = $newlineAtStart ? '(?:(?<=\n)|\A)' : '(?<=\n)';
- $end = $newlineAtEnd ? '(?:(?=[\r\n])|\z)' : '(?=[\r\n])';
- $regex = '/' . $start . '([ \t]*)(' . $end . ')?/';
- return preg_replace_callback(
- $regex,
- function ($matches) use ($indentLen, $indentChar, $attributes) {
- $prefix = substr($matches[1], 0, $indentLen);
- if (false !== strpos($prefix, $indentChar === " " ? "\t" : " ")) {
- $this->emitError(new Error(
- 'Invalid indentation - tabs and spaces cannot be mixed', $attributes
- ));
- } elseif (strlen($prefix) < $indentLen && !isset($matches[2])) {
- $this->emitError(new Error(
- 'Invalid body indentation level ' .
- '(expecting an indentation level of at least ' . $indentLen . ')',
- $attributes
- ));
- }
- return substr($matches[0], strlen($prefix));
- },
- $string
- );
- }
-
- protected function parseDocString(
- string $startToken, $contents, string $endToken,
- array $attributes, array $endTokenAttributes, bool $parseUnicodeEscape
- ) {
- $kind = strpos($startToken, "'") === false
- ? String_::KIND_HEREDOC : String_::KIND_NOWDOC;
-
- $regex = '/\A[bB]?<<<[ \t]*[\'"]?([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)[\'"]?(?:\r\n|\n|\r)\z/';
- $result = preg_match($regex, $startToken, $matches);
- assert($result === 1);
- $label = $matches[1];
-
- $result = preg_match('/\A[ \t]*/', $endToken, $matches);
- assert($result === 1);
- $indentation = $matches[0];
-
- $attributes['kind'] = $kind;
- $attributes['docLabel'] = $label;
- $attributes['docIndentation'] = $indentation;
-
- $indentHasSpaces = false !== strpos($indentation, " ");
- $indentHasTabs = false !== strpos($indentation, "\t");
- if ($indentHasSpaces && $indentHasTabs) {
- $this->emitError(new Error(
- 'Invalid indentation - tabs and spaces cannot be mixed',
- $endTokenAttributes
- ));
-
- // Proceed processing as if this doc string is not indented
- $indentation = '';
- }
-
- $indentLen = \strlen($indentation);
- $indentChar = $indentHasSpaces ? " " : "\t";
-
- if (\is_string($contents)) {
- if ($contents === '') {
- return new String_('', $attributes);
- }
-
- $contents = $this->stripIndentation(
- $contents, $indentLen, $indentChar, true, true, $attributes
- );
- $contents = preg_replace('~(\r\n|\n|\r)\z~', '', $contents);
-
- if ($kind === String_::KIND_HEREDOC) {
- $contents = String_::parseEscapeSequences($contents, null, $parseUnicodeEscape);
- }
-
- return new String_($contents, $attributes);
- } else {
- assert(count($contents) > 0);
- if (!$contents[0] instanceof Node\Scalar\EncapsedStringPart) {
- // If there is no leading encapsed string part, pretend there is an empty one
- $this->stripIndentation(
- '', $indentLen, $indentChar, true, false, $contents[0]->getAttributes()
- );
- }
-
- $newContents = [];
- foreach ($contents as $i => $part) {
- if ($part instanceof Node\Scalar\EncapsedStringPart) {
- $isLast = $i === \count($contents) - 1;
- $part->value = $this->stripIndentation(
- $part->value, $indentLen, $indentChar,
- $i === 0, $isLast, $part->getAttributes()
- );
- $part->value = String_::parseEscapeSequences($part->value, null, $parseUnicodeEscape);
- if ($isLast) {
- $part->value = preg_replace('~(\r\n|\n|\r)\z~', '', $part->value);
- }
- if ('' === $part->value) {
- continue;
- }
- }
- $newContents[] = $part;
- }
- return new Encapsed($newContents, $attributes);
- }
- }
-
- /**
- * Create attributes for a zero-length common-capturing nop.
- *
- * @param Comment[] $comments
- * @return array
- */
- protected function createCommentNopAttributes(array $comments) {
- $comment = $comments[count($comments) - 1];
- $commentEndLine = $comment->getEndLine();
- $commentEndFilePos = $comment->getEndFilePos();
- $commentEndTokenPos = $comment->getEndTokenPos();
-
- $attributes = ['comments' => $comments];
- if (-1 !== $commentEndLine) {
- $attributes['startLine'] = $commentEndLine;
- $attributes['endLine'] = $commentEndLine;
- }
- if (-1 !== $commentEndFilePos) {
- $attributes['startFilePos'] = $commentEndFilePos + 1;
- $attributes['endFilePos'] = $commentEndFilePos;
- }
- if (-1 !== $commentEndTokenPos) {
- $attributes['startTokenPos'] = $commentEndTokenPos + 1;
- $attributes['endTokenPos'] = $commentEndTokenPos;
- }
- return $attributes;
- }
-
- protected function checkModifier($a, $b, $modifierPos) {
- // Jumping through some hoops here because verifyModifier() is also used elsewhere
- try {
- Class_::verifyModifier($a, $b);
- } catch (Error $error) {
- $error->setAttributes($this->getAttributesAt($modifierPos));
- $this->emitError($error);
- }
- }
-
- protected function checkParam(Param $node) {
- if ($node->variadic && null !== $node->default) {
- $this->emitError(new Error(
- 'Variadic parameter cannot have a default value',
- $node->default->getAttributes()
- ));
- }
- }
-
- protected function checkTryCatch(TryCatch $node) {
- if (empty($node->catches) && null === $node->finally) {
- $this->emitError(new Error(
- 'Cannot use try without catch or finally', $node->getAttributes()
- ));
- }
- }
-
- protected function checkNamespace(Namespace_ $node) {
- if (null !== $node->stmts) {
- foreach ($node->stmts as $stmt) {
- if ($stmt instanceof Namespace_) {
- $this->emitError(new Error(
- 'Namespace declarations cannot be nested', $stmt->getAttributes()
- ));
- }
- }
- }
- }
-
- private function checkClassName($name, $namePos) {
- if (null !== $name && $name->isSpecialClassName()) {
- $this->emitError(new Error(
- sprintf('Cannot use \'%s\' as class name as it is reserved', $name),
- $this->getAttributesAt($namePos)
- ));
- }
- }
-
- private function checkImplementedInterfaces(array $interfaces) {
- foreach ($interfaces as $interface) {
- if ($interface->isSpecialClassName()) {
- $this->emitError(new Error(
- sprintf('Cannot use \'%s\' as interface name as it is reserved', $interface),
- $interface->getAttributes()
- ));
- }
- }
- }
-
- protected function checkClass(Class_ $node, $namePos) {
- $this->checkClassName($node->name, $namePos);
-
- if ($node->extends && $node->extends->isSpecialClassName()) {
- $this->emitError(new Error(
- sprintf('Cannot use \'%s\' as class name as it is reserved', $node->extends),
- $node->extends->getAttributes()
- ));
- }
-
- $this->checkImplementedInterfaces($node->implements);
- }
-
- protected function checkInterface(Interface_ $node, $namePos) {
- $this->checkClassName($node->name, $namePos);
- $this->checkImplementedInterfaces($node->extends);
- }
-
- protected function checkEnum(Enum_ $node, $namePos) {
- $this->checkClassName($node->name, $namePos);
- $this->checkImplementedInterfaces($node->implements);
- }
-
- protected function checkClassMethod(ClassMethod $node, $modifierPos) {
- if ($node->flags & Class_::MODIFIER_STATIC) {
- switch ($node->name->toLowerString()) {
- case '__construct':
- $this->emitError(new Error(
- sprintf('Constructor %s() cannot be static', $node->name),
- $this->getAttributesAt($modifierPos)));
- break;
- case '__destruct':
- $this->emitError(new Error(
- sprintf('Destructor %s() cannot be static', $node->name),
- $this->getAttributesAt($modifierPos)));
- break;
- case '__clone':
- $this->emitError(new Error(
- sprintf('Clone method %s() cannot be static', $node->name),
- $this->getAttributesAt($modifierPos)));
- break;
- }
- }
-
- if ($node->flags & Class_::MODIFIER_READONLY) {
- $this->emitError(new Error(
- sprintf('Method %s() cannot be readonly', $node->name),
- $this->getAttributesAt($modifierPos)));
- }
- }
-
- protected function checkClassConst(ClassConst $node, $modifierPos) {
- if ($node->flags & Class_::MODIFIER_STATIC) {
- $this->emitError(new Error(
- "Cannot use 'static' as constant modifier",
- $this->getAttributesAt($modifierPos)));
- }
- if ($node->flags & Class_::MODIFIER_ABSTRACT) {
- $this->emitError(new Error(
- "Cannot use 'abstract' as constant modifier",
- $this->getAttributesAt($modifierPos)));
- }
- if ($node->flags & Class_::MODIFIER_READONLY) {
- $this->emitError(new Error(
- "Cannot use 'readonly' as constant modifier",
- $this->getAttributesAt($modifierPos)));
- }
- }
-
- protected function checkProperty(Property $node, $modifierPos) {
- if ($node->flags & Class_::MODIFIER_ABSTRACT) {
- $this->emitError(new Error('Properties cannot be declared abstract',
- $this->getAttributesAt($modifierPos)));
- }
-
- if ($node->flags & Class_::MODIFIER_FINAL) {
- $this->emitError(new Error('Properties cannot be declared final',
- $this->getAttributesAt($modifierPos)));
- }
- }
-
- protected function checkUseUse(UseUse $node, $namePos) {
- if ($node->alias && $node->alias->isSpecialClassName()) {
- $this->emitError(new Error(
- sprintf(
- 'Cannot use %s as %s because \'%2$s\' is a special class name',
- $node->name, $node->alias
- ),
- $this->getAttributesAt($namePos)
- ));
- }
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php b/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php
deleted file mode 100644
index f041e7ff..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php
+++ /dev/null
@@ -1,44 +0,0 @@
-pAttrGroups($node->attrGroups, true)
- . $this->pModifiers($node->flags)
- . ($node->type ? $this->p($node->type) . ' ' : '')
- . ($node->byRef ? '&' : '')
- . ($node->variadic ? '...' : '')
- . $this->p($node->var)
- . ($node->default ? ' = ' . $this->p($node->default) : '');
- }
-
- protected function pArg(Node\Arg $node) {
- return ($node->name ? $node->name->toString() . ': ' : '')
- . ($node->byRef ? '&' : '') . ($node->unpack ? '...' : '')
- . $this->p($node->value);
- }
-
- protected function pVariadicPlaceholder(Node\VariadicPlaceholder $node) {
- return '...';
- }
-
- protected function pConst(Node\Const_ $node) {
- return $node->name . ' = ' . $this->p($node->value);
- }
-
- protected function pNullableType(Node\NullableType $node) {
- return '?' . $this->p($node->type);
- }
-
- protected function pUnionType(Node\UnionType $node) {
- return $this->pImplode($node->types, '|');
- }
-
- protected function pIntersectionType(Node\IntersectionType $node) {
- return $this->pImplode($node->types, '&');
- }
-
- protected function pIdentifier(Node\Identifier $node) {
- return $node->name;
- }
-
- protected function pVarLikeIdentifier(Node\VarLikeIdentifier $node) {
- return '$' . $node->name;
- }
-
- protected function pAttribute(Node\Attribute $node) {
- return $this->p($node->name)
- . ($node->args ? '(' . $this->pCommaSeparated($node->args) . ')' : '');
- }
-
- protected function pAttributeGroup(Node\AttributeGroup $node) {
- return '#[' . $this->pCommaSeparated($node->attrs) . ']';
- }
-
- // Names
-
- protected function pName(Name $node) {
- return implode('\\', $node->parts);
- }
-
- protected function pName_FullyQualified(Name\FullyQualified $node) {
- return '\\' . implode('\\', $node->parts);
- }
-
- protected function pName_Relative(Name\Relative $node) {
- return 'namespace\\' . implode('\\', $node->parts);
- }
-
- // Magic Constants
-
- protected function pScalar_MagicConst_Class(MagicConst\Class_ $node) {
- return '__CLASS__';
- }
-
- protected function pScalar_MagicConst_Dir(MagicConst\Dir $node) {
- return '__DIR__';
- }
-
- protected function pScalar_MagicConst_File(MagicConst\File $node) {
- return '__FILE__';
- }
-
- protected function pScalar_MagicConst_Function(MagicConst\Function_ $node) {
- return '__FUNCTION__';
- }
-
- protected function pScalar_MagicConst_Line(MagicConst\Line $node) {
- return '__LINE__';
- }
-
- protected function pScalar_MagicConst_Method(MagicConst\Method $node) {
- return '__METHOD__';
- }
-
- protected function pScalar_MagicConst_Namespace(MagicConst\Namespace_ $node) {
- return '__NAMESPACE__';
- }
-
- protected function pScalar_MagicConst_Trait(MagicConst\Trait_ $node) {
- return '__TRAIT__';
- }
-
- // Scalars
-
- protected function pScalar_String(Scalar\String_ $node) {
- $kind = $node->getAttribute('kind', Scalar\String_::KIND_SINGLE_QUOTED);
- switch ($kind) {
- case Scalar\String_::KIND_NOWDOC:
- $label = $node->getAttribute('docLabel');
- if ($label && !$this->containsEndLabel($node->value, $label)) {
- if ($node->value === '') {
- return "<<<'$label'\n$label" . $this->docStringEndToken;
- }
-
- return "<<<'$label'\n$node->value\n$label"
- . $this->docStringEndToken;
- }
- /* break missing intentionally */
- case Scalar\String_::KIND_SINGLE_QUOTED:
- return $this->pSingleQuotedString($node->value);
- case Scalar\String_::KIND_HEREDOC:
- $label = $node->getAttribute('docLabel');
- if ($label && !$this->containsEndLabel($node->value, $label)) {
- if ($node->value === '') {
- return "<<<$label\n$label" . $this->docStringEndToken;
- }
-
- $escaped = $this->escapeString($node->value, null);
- return "<<<$label\n" . $escaped . "\n$label"
- . $this->docStringEndToken;
- }
- /* break missing intentionally */
- case Scalar\String_::KIND_DOUBLE_QUOTED:
- return '"' . $this->escapeString($node->value, '"') . '"';
- }
- throw new \Exception('Invalid string kind');
- }
-
- protected function pScalar_Encapsed(Scalar\Encapsed $node) {
- if ($node->getAttribute('kind') === Scalar\String_::KIND_HEREDOC) {
- $label = $node->getAttribute('docLabel');
- if ($label && !$this->encapsedContainsEndLabel($node->parts, $label)) {
- if (count($node->parts) === 1
- && $node->parts[0] instanceof Scalar\EncapsedStringPart
- && $node->parts[0]->value === ''
- ) {
- return "<<<$label\n$label" . $this->docStringEndToken;
- }
-
- return "<<<$label\n" . $this->pEncapsList($node->parts, null) . "\n$label"
- . $this->docStringEndToken;
- }
- }
- return '"' . $this->pEncapsList($node->parts, '"') . '"';
- }
-
- protected function pScalar_LNumber(Scalar\LNumber $node) {
- if ($node->value === -\PHP_INT_MAX-1) {
- // PHP_INT_MIN cannot be represented as a literal,
- // because the sign is not part of the literal
- return '(-' . \PHP_INT_MAX . '-1)';
- }
-
- $kind = $node->getAttribute('kind', Scalar\LNumber::KIND_DEC);
- if (Scalar\LNumber::KIND_DEC === $kind) {
- return (string) $node->value;
- }
-
- if ($node->value < 0) {
- $sign = '-';
- $str = (string) -$node->value;
- } else {
- $sign = '';
- $str = (string) $node->value;
- }
- switch ($kind) {
- case Scalar\LNumber::KIND_BIN:
- return $sign . '0b' . base_convert($str, 10, 2);
- case Scalar\LNumber::KIND_OCT:
- return $sign . '0' . base_convert($str, 10, 8);
- case Scalar\LNumber::KIND_HEX:
- return $sign . '0x' . base_convert($str, 10, 16);
- }
- throw new \Exception('Invalid number kind');
- }
-
- protected function pScalar_DNumber(Scalar\DNumber $node) {
- if (!is_finite($node->value)) {
- if ($node->value === \INF) {
- return '\INF';
- } elseif ($node->value === -\INF) {
- return '-\INF';
- } else {
- return '\NAN';
- }
- }
-
- // Try to find a short full-precision representation
- $stringValue = sprintf('%.16G', $node->value);
- if ($node->value !== (double) $stringValue) {
- $stringValue = sprintf('%.17G', $node->value);
- }
-
- // %G is locale dependent and there exists no locale-independent alternative. We don't want
- // mess with switching locales here, so let's assume that a comma is the only non-standard
- // decimal separator we may encounter...
- $stringValue = str_replace(',', '.', $stringValue);
-
- // ensure that number is really printed as float
- return preg_match('/^-?[0-9]+$/', $stringValue) ? $stringValue . '.0' : $stringValue;
- }
-
- protected function pScalar_EncapsedStringPart(Scalar\EncapsedStringPart $node) {
- throw new \LogicException('Cannot directly print EncapsedStringPart');
- }
-
- // Assignments
-
- protected function pExpr_Assign(Expr\Assign $node) {
- return $this->pInfixOp(Expr\Assign::class, $node->var, ' = ', $node->expr);
- }
-
- protected function pExpr_AssignRef(Expr\AssignRef $node) {
- return $this->pInfixOp(Expr\AssignRef::class, $node->var, ' =& ', $node->expr);
- }
-
- protected function pExpr_AssignOp_Plus(AssignOp\Plus $node) {
- return $this->pInfixOp(AssignOp\Plus::class, $node->var, ' += ', $node->expr);
- }
-
- protected function pExpr_AssignOp_Minus(AssignOp\Minus $node) {
- return $this->pInfixOp(AssignOp\Minus::class, $node->var, ' -= ', $node->expr);
- }
-
- protected function pExpr_AssignOp_Mul(AssignOp\Mul $node) {
- return $this->pInfixOp(AssignOp\Mul::class, $node->var, ' *= ', $node->expr);
- }
-
- protected function pExpr_AssignOp_Div(AssignOp\Div $node) {
- return $this->pInfixOp(AssignOp\Div::class, $node->var, ' /= ', $node->expr);
- }
-
- protected function pExpr_AssignOp_Concat(AssignOp\Concat $node) {
- return $this->pInfixOp(AssignOp\Concat::class, $node->var, ' .= ', $node->expr);
- }
-
- protected function pExpr_AssignOp_Mod(AssignOp\Mod $node) {
- return $this->pInfixOp(AssignOp\Mod::class, $node->var, ' %= ', $node->expr);
- }
-
- protected function pExpr_AssignOp_BitwiseAnd(AssignOp\BitwiseAnd $node) {
- return $this->pInfixOp(AssignOp\BitwiseAnd::class, $node->var, ' &= ', $node->expr);
- }
-
- protected function pExpr_AssignOp_BitwiseOr(AssignOp\BitwiseOr $node) {
- return $this->pInfixOp(AssignOp\BitwiseOr::class, $node->var, ' |= ', $node->expr);
- }
-
- protected function pExpr_AssignOp_BitwiseXor(AssignOp\BitwiseXor $node) {
- return $this->pInfixOp(AssignOp\BitwiseXor::class, $node->var, ' ^= ', $node->expr);
- }
-
- protected function pExpr_AssignOp_ShiftLeft(AssignOp\ShiftLeft $node) {
- return $this->pInfixOp(AssignOp\ShiftLeft::class, $node->var, ' <<= ', $node->expr);
- }
-
- protected function pExpr_AssignOp_ShiftRight(AssignOp\ShiftRight $node) {
- return $this->pInfixOp(AssignOp\ShiftRight::class, $node->var, ' >>= ', $node->expr);
- }
-
- protected function pExpr_AssignOp_Pow(AssignOp\Pow $node) {
- return $this->pInfixOp(AssignOp\Pow::class, $node->var, ' **= ', $node->expr);
- }
-
- protected function pExpr_AssignOp_Coalesce(AssignOp\Coalesce $node) {
- return $this->pInfixOp(AssignOp\Coalesce::class, $node->var, ' ??= ', $node->expr);
- }
-
- // Binary expressions
-
- protected function pExpr_BinaryOp_Plus(BinaryOp\Plus $node) {
- return $this->pInfixOp(BinaryOp\Plus::class, $node->left, ' + ', $node->right);
- }
-
- protected function pExpr_BinaryOp_Minus(BinaryOp\Minus $node) {
- return $this->pInfixOp(BinaryOp\Minus::class, $node->left, ' - ', $node->right);
- }
-
- protected function pExpr_BinaryOp_Mul(BinaryOp\Mul $node) {
- return $this->pInfixOp(BinaryOp\Mul::class, $node->left, ' * ', $node->right);
- }
-
- protected function pExpr_BinaryOp_Div(BinaryOp\Div $node) {
- return $this->pInfixOp(BinaryOp\Div::class, $node->left, ' / ', $node->right);
- }
-
- protected function pExpr_BinaryOp_Concat(BinaryOp\Concat $node) {
- return $this->pInfixOp(BinaryOp\Concat::class, $node->left, ' . ', $node->right);
- }
-
- protected function pExpr_BinaryOp_Mod(BinaryOp\Mod $node) {
- return $this->pInfixOp(BinaryOp\Mod::class, $node->left, ' % ', $node->right);
- }
-
- protected function pExpr_BinaryOp_BooleanAnd(BinaryOp\BooleanAnd $node) {
- return $this->pInfixOp(BinaryOp\BooleanAnd::class, $node->left, ' && ', $node->right);
- }
-
- protected function pExpr_BinaryOp_BooleanOr(BinaryOp\BooleanOr $node) {
- return $this->pInfixOp(BinaryOp\BooleanOr::class, $node->left, ' || ', $node->right);
- }
-
- protected function pExpr_BinaryOp_BitwiseAnd(BinaryOp\BitwiseAnd $node) {
- return $this->pInfixOp(BinaryOp\BitwiseAnd::class, $node->left, ' & ', $node->right);
- }
-
- protected function pExpr_BinaryOp_BitwiseOr(BinaryOp\BitwiseOr $node) {
- return $this->pInfixOp(BinaryOp\BitwiseOr::class, $node->left, ' | ', $node->right);
- }
-
- protected function pExpr_BinaryOp_BitwiseXor(BinaryOp\BitwiseXor $node) {
- return $this->pInfixOp(BinaryOp\BitwiseXor::class, $node->left, ' ^ ', $node->right);
- }
-
- protected function pExpr_BinaryOp_ShiftLeft(BinaryOp\ShiftLeft $node) {
- return $this->pInfixOp(BinaryOp\ShiftLeft::class, $node->left, ' << ', $node->right);
- }
-
- protected function pExpr_BinaryOp_ShiftRight(BinaryOp\ShiftRight $node) {
- return $this->pInfixOp(BinaryOp\ShiftRight::class, $node->left, ' >> ', $node->right);
- }
-
- protected function pExpr_BinaryOp_Pow(BinaryOp\Pow $node) {
- return $this->pInfixOp(BinaryOp\Pow::class, $node->left, ' ** ', $node->right);
- }
-
- protected function pExpr_BinaryOp_LogicalAnd(BinaryOp\LogicalAnd $node) {
- return $this->pInfixOp(BinaryOp\LogicalAnd::class, $node->left, ' and ', $node->right);
- }
-
- protected function pExpr_BinaryOp_LogicalOr(BinaryOp\LogicalOr $node) {
- return $this->pInfixOp(BinaryOp\LogicalOr::class, $node->left, ' or ', $node->right);
- }
-
- protected function pExpr_BinaryOp_LogicalXor(BinaryOp\LogicalXor $node) {
- return $this->pInfixOp(BinaryOp\LogicalXor::class, $node->left, ' xor ', $node->right);
- }
-
- protected function pExpr_BinaryOp_Equal(BinaryOp\Equal $node) {
- return $this->pInfixOp(BinaryOp\Equal::class, $node->left, ' == ', $node->right);
- }
-
- protected function pExpr_BinaryOp_NotEqual(BinaryOp\NotEqual $node) {
- return $this->pInfixOp(BinaryOp\NotEqual::class, $node->left, ' != ', $node->right);
- }
-
- protected function pExpr_BinaryOp_Identical(BinaryOp\Identical $node) {
- return $this->pInfixOp(BinaryOp\Identical::class, $node->left, ' === ', $node->right);
- }
-
- protected function pExpr_BinaryOp_NotIdentical(BinaryOp\NotIdentical $node) {
- return $this->pInfixOp(BinaryOp\NotIdentical::class, $node->left, ' !== ', $node->right);
- }
-
- protected function pExpr_BinaryOp_Spaceship(BinaryOp\Spaceship $node) {
- return $this->pInfixOp(BinaryOp\Spaceship::class, $node->left, ' <=> ', $node->right);
- }
-
- protected function pExpr_BinaryOp_Greater(BinaryOp\Greater $node) {
- return $this->pInfixOp(BinaryOp\Greater::class, $node->left, ' > ', $node->right);
- }
-
- protected function pExpr_BinaryOp_GreaterOrEqual(BinaryOp\GreaterOrEqual $node) {
- return $this->pInfixOp(BinaryOp\GreaterOrEqual::class, $node->left, ' >= ', $node->right);
- }
-
- protected function pExpr_BinaryOp_Smaller(BinaryOp\Smaller $node) {
- return $this->pInfixOp(BinaryOp\Smaller::class, $node->left, ' < ', $node->right);
- }
-
- protected function pExpr_BinaryOp_SmallerOrEqual(BinaryOp\SmallerOrEqual $node) {
- return $this->pInfixOp(BinaryOp\SmallerOrEqual::class, $node->left, ' <= ', $node->right);
- }
-
- protected function pExpr_BinaryOp_Coalesce(BinaryOp\Coalesce $node) {
- return $this->pInfixOp(BinaryOp\Coalesce::class, $node->left, ' ?? ', $node->right);
- }
-
- protected function pExpr_Instanceof(Expr\Instanceof_ $node) {
- list($precedence, $associativity) = $this->precedenceMap[Expr\Instanceof_::class];
- return $this->pPrec($node->expr, $precedence, $associativity, -1)
- . ' instanceof '
- . $this->pNewVariable($node->class);
- }
-
- // Unary expressions
-
- protected function pExpr_BooleanNot(Expr\BooleanNot $node) {
- return $this->pPrefixOp(Expr\BooleanNot::class, '!', $node->expr);
- }
-
- protected function pExpr_BitwiseNot(Expr\BitwiseNot $node) {
- return $this->pPrefixOp(Expr\BitwiseNot::class, '~', $node->expr);
- }
-
- protected function pExpr_UnaryMinus(Expr\UnaryMinus $node) {
- if ($node->expr instanceof Expr\UnaryMinus || $node->expr instanceof Expr\PreDec) {
- // Enforce -(-$expr) instead of --$expr
- return '-(' . $this->p($node->expr) . ')';
- }
- return $this->pPrefixOp(Expr\UnaryMinus::class, '-', $node->expr);
- }
-
- protected function pExpr_UnaryPlus(Expr\UnaryPlus $node) {
- if ($node->expr instanceof Expr\UnaryPlus || $node->expr instanceof Expr\PreInc) {
- // Enforce +(+$expr) instead of ++$expr
- return '+(' . $this->p($node->expr) . ')';
- }
- return $this->pPrefixOp(Expr\UnaryPlus::class, '+', $node->expr);
- }
-
- protected function pExpr_PreInc(Expr\PreInc $node) {
- return $this->pPrefixOp(Expr\PreInc::class, '++', $node->var);
- }
-
- protected function pExpr_PreDec(Expr\PreDec $node) {
- return $this->pPrefixOp(Expr\PreDec::class, '--', $node->var);
- }
-
- protected function pExpr_PostInc(Expr\PostInc $node) {
- return $this->pPostfixOp(Expr\PostInc::class, $node->var, '++');
- }
-
- protected function pExpr_PostDec(Expr\PostDec $node) {
- return $this->pPostfixOp(Expr\PostDec::class, $node->var, '--');
- }
-
- protected function pExpr_ErrorSuppress(Expr\ErrorSuppress $node) {
- return $this->pPrefixOp(Expr\ErrorSuppress::class, '@', $node->expr);
- }
-
- protected function pExpr_YieldFrom(Expr\YieldFrom $node) {
- return $this->pPrefixOp(Expr\YieldFrom::class, 'yield from ', $node->expr);
- }
-
- protected function pExpr_Print(Expr\Print_ $node) {
- return $this->pPrefixOp(Expr\Print_::class, 'print ', $node->expr);
- }
-
- // Casts
-
- protected function pExpr_Cast_Int(Cast\Int_ $node) {
- return $this->pPrefixOp(Cast\Int_::class, '(int) ', $node->expr);
- }
-
- protected function pExpr_Cast_Double(Cast\Double $node) {
- $kind = $node->getAttribute('kind', Cast\Double::KIND_DOUBLE);
- if ($kind === Cast\Double::KIND_DOUBLE) {
- $cast = '(double)';
- } elseif ($kind === Cast\Double::KIND_FLOAT) {
- $cast = '(float)';
- } elseif ($kind === Cast\Double::KIND_REAL) {
- $cast = '(real)';
- }
- return $this->pPrefixOp(Cast\Double::class, $cast . ' ', $node->expr);
- }
-
- protected function pExpr_Cast_String(Cast\String_ $node) {
- return $this->pPrefixOp(Cast\String_::class, '(string) ', $node->expr);
- }
-
- protected function pExpr_Cast_Array(Cast\Array_ $node) {
- return $this->pPrefixOp(Cast\Array_::class, '(array) ', $node->expr);
- }
-
- protected function pExpr_Cast_Object(Cast\Object_ $node) {
- return $this->pPrefixOp(Cast\Object_::class, '(object) ', $node->expr);
- }
-
- protected function pExpr_Cast_Bool(Cast\Bool_ $node) {
- return $this->pPrefixOp(Cast\Bool_::class, '(bool) ', $node->expr);
- }
-
- protected function pExpr_Cast_Unset(Cast\Unset_ $node) {
- return $this->pPrefixOp(Cast\Unset_::class, '(unset) ', $node->expr);
- }
-
- // Function calls and similar constructs
-
- protected function pExpr_FuncCall(Expr\FuncCall $node) {
- return $this->pCallLhs($node->name)
- . '(' . $this->pMaybeMultiline($node->args) . ')';
- }
-
- protected function pExpr_MethodCall(Expr\MethodCall $node) {
- return $this->pDereferenceLhs($node->var) . '->' . $this->pObjectProperty($node->name)
- . '(' . $this->pMaybeMultiline($node->args) . ')';
- }
-
- protected function pExpr_NullsafeMethodCall(Expr\NullsafeMethodCall $node) {
- return $this->pDereferenceLhs($node->var) . '?->' . $this->pObjectProperty($node->name)
- . '(' . $this->pMaybeMultiline($node->args) . ')';
- }
-
- protected function pExpr_StaticCall(Expr\StaticCall $node) {
- return $this->pDereferenceLhs($node->class) . '::'
- . ($node->name instanceof Expr
- ? ($node->name instanceof Expr\Variable
- ? $this->p($node->name)
- : '{' . $this->p($node->name) . '}')
- : $node->name)
- . '(' . $this->pMaybeMultiline($node->args) . ')';
- }
-
- protected function pExpr_Empty(Expr\Empty_ $node) {
- return 'empty(' . $this->p($node->expr) . ')';
- }
-
- protected function pExpr_Isset(Expr\Isset_ $node) {
- return 'isset(' . $this->pCommaSeparated($node->vars) . ')';
- }
-
- protected function pExpr_Eval(Expr\Eval_ $node) {
- return 'eval(' . $this->p($node->expr) . ')';
- }
-
- protected function pExpr_Include(Expr\Include_ $node) {
- static $map = [
- Expr\Include_::TYPE_INCLUDE => 'include',
- Expr\Include_::TYPE_INCLUDE_ONCE => 'include_once',
- Expr\Include_::TYPE_REQUIRE => 'require',
- Expr\Include_::TYPE_REQUIRE_ONCE => 'require_once',
- ];
-
- return $map[$node->type] . ' ' . $this->p($node->expr);
- }
-
- protected function pExpr_List(Expr\List_ $node) {
- return 'list(' . $this->pCommaSeparated($node->items) . ')';
- }
-
- // Other
-
- protected function pExpr_Error(Expr\Error $node) {
- throw new \LogicException('Cannot pretty-print AST with Error nodes');
- }
-
- protected function pExpr_Variable(Expr\Variable $node) {
- if ($node->name instanceof Expr) {
- return '${' . $this->p($node->name) . '}';
- } else {
- return '$' . $node->name;
- }
- }
-
- protected function pExpr_Array(Expr\Array_ $node) {
- $syntax = $node->getAttribute('kind',
- $this->options['shortArraySyntax'] ? Expr\Array_::KIND_SHORT : Expr\Array_::KIND_LONG);
- if ($syntax === Expr\Array_::KIND_SHORT) {
- return '[' . $this->pMaybeMultiline($node->items, true) . ']';
- } else {
- return 'array(' . $this->pMaybeMultiline($node->items, true) . ')';
- }
- }
-
- protected function pExpr_ArrayItem(Expr\ArrayItem $node) {
- return (null !== $node->key ? $this->p($node->key) . ' => ' : '')
- . ($node->byRef ? '&' : '')
- . ($node->unpack ? '...' : '')
- . $this->p($node->value);
- }
-
- protected function pExpr_ArrayDimFetch(Expr\ArrayDimFetch $node) {
- return $this->pDereferenceLhs($node->var)
- . '[' . (null !== $node->dim ? $this->p($node->dim) : '') . ']';
- }
-
- protected function pExpr_ConstFetch(Expr\ConstFetch $node) {
- return $this->p($node->name);
- }
-
- protected function pExpr_ClassConstFetch(Expr\ClassConstFetch $node) {
- return $this->pDereferenceLhs($node->class) . '::' . $this->p($node->name);
- }
-
- protected function pExpr_PropertyFetch(Expr\PropertyFetch $node) {
- return $this->pDereferenceLhs($node->var) . '->' . $this->pObjectProperty($node->name);
- }
-
- protected function pExpr_NullsafePropertyFetch(Expr\NullsafePropertyFetch $node) {
- return $this->pDereferenceLhs($node->var) . '?->' . $this->pObjectProperty($node->name);
- }
-
- protected function pExpr_StaticPropertyFetch(Expr\StaticPropertyFetch $node) {
- return $this->pDereferenceLhs($node->class) . '::$' . $this->pObjectProperty($node->name);
- }
-
- protected function pExpr_ShellExec(Expr\ShellExec $node) {
- return '`' . $this->pEncapsList($node->parts, '`') . '`';
- }
-
- protected function pExpr_Closure(Expr\Closure $node) {
- return $this->pAttrGroups($node->attrGroups, true)
- . ($node->static ? 'static ' : '')
- . 'function ' . ($node->byRef ? '&' : '')
- . '(' . $this->pCommaSeparated($node->params) . ')'
- . (!empty($node->uses) ? ' use(' . $this->pCommaSeparated($node->uses) . ')' : '')
- . (null !== $node->returnType ? ' : ' . $this->p($node->returnType) : '')
- . ' {' . $this->pStmts($node->stmts) . $this->nl . '}';
- }
-
- protected function pExpr_Match(Expr\Match_ $node) {
- return 'match (' . $this->p($node->cond) . ') {'
- . $this->pCommaSeparatedMultiline($node->arms, true)
- . $this->nl
- . '}';
- }
-
- protected function pMatchArm(Node\MatchArm $node) {
- return ($node->conds ? $this->pCommaSeparated($node->conds) : 'default')
- . ' => ' . $this->p($node->body);
- }
-
- protected function pExpr_ArrowFunction(Expr\ArrowFunction $node) {
- return $this->pAttrGroups($node->attrGroups, true)
- . ($node->static ? 'static ' : '')
- . 'fn' . ($node->byRef ? '&' : '')
- . '(' . $this->pCommaSeparated($node->params) . ')'
- . (null !== $node->returnType ? ': ' . $this->p($node->returnType) : '')
- . ' => '
- . $this->p($node->expr);
- }
-
- protected function pExpr_ClosureUse(Expr\ClosureUse $node) {
- return ($node->byRef ? '&' : '') . $this->p($node->var);
- }
-
- protected function pExpr_New(Expr\New_ $node) {
- if ($node->class instanceof Stmt\Class_) {
- $args = $node->args ? '(' . $this->pMaybeMultiline($node->args) . ')' : '';
- return 'new ' . $this->pClassCommon($node->class, $args);
- }
- return 'new ' . $this->pNewVariable($node->class)
- . '(' . $this->pMaybeMultiline($node->args) . ')';
- }
-
- protected function pExpr_Clone(Expr\Clone_ $node) {
- return 'clone ' . $this->p($node->expr);
- }
-
- protected function pExpr_Ternary(Expr\Ternary $node) {
- // a bit of cheating: we treat the ternary as a binary op where the ?...: part is the operator.
- // this is okay because the part between ? and : never needs parentheses.
- return $this->pInfixOp(Expr\Ternary::class,
- $node->cond, ' ?' . (null !== $node->if ? ' ' . $this->p($node->if) . ' ' : '') . ': ', $node->else
- );
- }
-
- protected function pExpr_Exit(Expr\Exit_ $node) {
- $kind = $node->getAttribute('kind', Expr\Exit_::KIND_DIE);
- return ($kind === Expr\Exit_::KIND_EXIT ? 'exit' : 'die')
- . (null !== $node->expr ? '(' . $this->p($node->expr) . ')' : '');
- }
-
- protected function pExpr_Throw(Expr\Throw_ $node) {
- return 'throw ' . $this->p($node->expr);
- }
-
- protected function pExpr_Yield(Expr\Yield_ $node) {
- if ($node->value === null) {
- return 'yield';
- } else {
- // this is a bit ugly, but currently there is no way to detect whether the parentheses are necessary
- return '(yield '
- . ($node->key !== null ? $this->p($node->key) . ' => ' : '')
- . $this->p($node->value)
- . ')';
- }
- }
-
- // Declarations
-
- protected function pStmt_Namespace(Stmt\Namespace_ $node) {
- if ($this->canUseSemicolonNamespaces) {
- return 'namespace ' . $this->p($node->name) . ';'
- . $this->nl . $this->pStmts($node->stmts, false);
- } else {
- return 'namespace' . (null !== $node->name ? ' ' . $this->p($node->name) : '')
- . ' {' . $this->pStmts($node->stmts) . $this->nl . '}';
- }
- }
-
- protected function pStmt_Use(Stmt\Use_ $node) {
- return 'use ' . $this->pUseType($node->type)
- . $this->pCommaSeparated($node->uses) . ';';
- }
-
- protected function pStmt_GroupUse(Stmt\GroupUse $node) {
- return 'use ' . $this->pUseType($node->type) . $this->pName($node->prefix)
- . '\{' . $this->pCommaSeparated($node->uses) . '};';
- }
-
- protected function pStmt_UseUse(Stmt\UseUse $node) {
- return $this->pUseType($node->type) . $this->p($node->name)
- . (null !== $node->alias ? ' as ' . $node->alias : '');
- }
-
- protected function pUseType($type) {
- return $type === Stmt\Use_::TYPE_FUNCTION ? 'function '
- : ($type === Stmt\Use_::TYPE_CONSTANT ? 'const ' : '');
- }
-
- protected function pStmt_Interface(Stmt\Interface_ $node) {
- return $this->pAttrGroups($node->attrGroups)
- . 'interface ' . $node->name
- . (!empty($node->extends) ? ' extends ' . $this->pCommaSeparated($node->extends) : '')
- . $this->nl . '{' . $this->pStmts($node->stmts) . $this->nl . '}';
- }
-
- protected function pStmt_Enum(Stmt\Enum_ $node) {
- return $this->pAttrGroups($node->attrGroups)
- . 'enum ' . $node->name
- . ($node->scalarType ? " : $node->scalarType" : '')
- . (!empty($node->implements) ? ' implements ' . $this->pCommaSeparated($node->implements) : '')
- . $this->nl . '{' . $this->pStmts($node->stmts) . $this->nl . '}';
- }
-
- protected function pStmt_Class(Stmt\Class_ $node) {
- return $this->pClassCommon($node, ' ' . $node->name);
- }
-
- protected function pStmt_Trait(Stmt\Trait_ $node) {
- return $this->pAttrGroups($node->attrGroups)
- . 'trait ' . $node->name
- . $this->nl . '{' . $this->pStmts($node->stmts) . $this->nl . '}';
- }
-
- protected function pStmt_EnumCase(Stmt\EnumCase $node) {
- return $this->pAttrGroups($node->attrGroups)
- . 'case ' . $node->name
- . ($node->expr ? ' = ' . $this->p($node->expr) : '')
- . ';';
- }
-
- protected function pStmt_TraitUse(Stmt\TraitUse $node) {
- return 'use ' . $this->pCommaSeparated($node->traits)
- . (empty($node->adaptations)
- ? ';'
- : ' {' . $this->pStmts($node->adaptations) . $this->nl . '}');
- }
-
- protected function pStmt_TraitUseAdaptation_Precedence(Stmt\TraitUseAdaptation\Precedence $node) {
- return $this->p($node->trait) . '::' . $node->method
- . ' insteadof ' . $this->pCommaSeparated($node->insteadof) . ';';
- }
-
- protected function pStmt_TraitUseAdaptation_Alias(Stmt\TraitUseAdaptation\Alias $node) {
- return (null !== $node->trait ? $this->p($node->trait) . '::' : '')
- . $node->method . ' as'
- . (null !== $node->newModifier ? ' ' . rtrim($this->pModifiers($node->newModifier), ' ') : '')
- . (null !== $node->newName ? ' ' . $node->newName : '')
- . ';';
- }
-
- protected function pStmt_Property(Stmt\Property $node) {
- return $this->pAttrGroups($node->attrGroups)
- . (0 === $node->flags ? 'var ' : $this->pModifiers($node->flags))
- . ($node->type ? $this->p($node->type) . ' ' : '')
- . $this->pCommaSeparated($node->props) . ';';
- }
-
- protected function pStmt_PropertyProperty(Stmt\PropertyProperty $node) {
- return '$' . $node->name
- . (null !== $node->default ? ' = ' . $this->p($node->default) : '');
- }
-
- protected function pStmt_ClassMethod(Stmt\ClassMethod $node) {
- return $this->pAttrGroups($node->attrGroups)
- . $this->pModifiers($node->flags)
- . 'function ' . ($node->byRef ? '&' : '') . $node->name
- . '(' . $this->pMaybeMultiline($node->params) . ')'
- . (null !== $node->returnType ? ' : ' . $this->p($node->returnType) : '')
- . (null !== $node->stmts
- ? $this->nl . '{' . $this->pStmts($node->stmts) . $this->nl . '}'
- : ';');
- }
-
- protected function pStmt_ClassConst(Stmt\ClassConst $node) {
- return $this->pAttrGroups($node->attrGroups)
- . $this->pModifiers($node->flags)
- . 'const ' . $this->pCommaSeparated($node->consts) . ';';
- }
-
- protected function pStmt_Function(Stmt\Function_ $node) {
- return $this->pAttrGroups($node->attrGroups)
- . 'function ' . ($node->byRef ? '&' : '') . $node->name
- . '(' . $this->pCommaSeparated($node->params) . ')'
- . (null !== $node->returnType ? ' : ' . $this->p($node->returnType) : '')
- . $this->nl . '{' . $this->pStmts($node->stmts) . $this->nl . '}';
- }
-
- protected function pStmt_Const(Stmt\Const_ $node) {
- return 'const ' . $this->pCommaSeparated($node->consts) . ';';
- }
-
- protected function pStmt_Declare(Stmt\Declare_ $node) {
- return 'declare (' . $this->pCommaSeparated($node->declares) . ')'
- . (null !== $node->stmts ? ' {' . $this->pStmts($node->stmts) . $this->nl . '}' : ';');
- }
-
- protected function pStmt_DeclareDeclare(Stmt\DeclareDeclare $node) {
- return $node->key . '=' . $this->p($node->value);
- }
-
- // Control flow
-
- protected function pStmt_If(Stmt\If_ $node) {
- return 'if (' . $this->p($node->cond) . ') {'
- . $this->pStmts($node->stmts) . $this->nl . '}'
- . ($node->elseifs ? ' ' . $this->pImplode($node->elseifs, ' ') : '')
- . (null !== $node->else ? ' ' . $this->p($node->else) : '');
- }
-
- protected function pStmt_ElseIf(Stmt\ElseIf_ $node) {
- return 'elseif (' . $this->p($node->cond) . ') {'
- . $this->pStmts($node->stmts) . $this->nl . '}';
- }
-
- protected function pStmt_Else(Stmt\Else_ $node) {
- return 'else {' . $this->pStmts($node->stmts) . $this->nl . '}';
- }
-
- protected function pStmt_For(Stmt\For_ $node) {
- return 'for ('
- . $this->pCommaSeparated($node->init) . ';' . (!empty($node->cond) ? ' ' : '')
- . $this->pCommaSeparated($node->cond) . ';' . (!empty($node->loop) ? ' ' : '')
- . $this->pCommaSeparated($node->loop)
- . ') {' . $this->pStmts($node->stmts) . $this->nl . '}';
- }
-
- protected function pStmt_Foreach(Stmt\Foreach_ $node) {
- return 'foreach (' . $this->p($node->expr) . ' as '
- . (null !== $node->keyVar ? $this->p($node->keyVar) . ' => ' : '')
- . ($node->byRef ? '&' : '') . $this->p($node->valueVar) . ') {'
- . $this->pStmts($node->stmts) . $this->nl . '}';
- }
-
- protected function pStmt_While(Stmt\While_ $node) {
- return 'while (' . $this->p($node->cond) . ') {'
- . $this->pStmts($node->stmts) . $this->nl . '}';
- }
-
- protected function pStmt_Do(Stmt\Do_ $node) {
- return 'do {' . $this->pStmts($node->stmts) . $this->nl
- . '} while (' . $this->p($node->cond) . ');';
- }
-
- protected function pStmt_Switch(Stmt\Switch_ $node) {
- return 'switch (' . $this->p($node->cond) . ') {'
- . $this->pStmts($node->cases) . $this->nl . '}';
- }
-
- protected function pStmt_Case(Stmt\Case_ $node) {
- return (null !== $node->cond ? 'case ' . $this->p($node->cond) : 'default') . ':'
- . $this->pStmts($node->stmts);
- }
-
- protected function pStmt_TryCatch(Stmt\TryCatch $node) {
- return 'try {' . $this->pStmts($node->stmts) . $this->nl . '}'
- . ($node->catches ? ' ' . $this->pImplode($node->catches, ' ') : '')
- . ($node->finally !== null ? ' ' . $this->p($node->finally) : '');
- }
-
- protected function pStmt_Catch(Stmt\Catch_ $node) {
- return 'catch (' . $this->pImplode($node->types, '|')
- . ($node->var !== null ? ' ' . $this->p($node->var) : '')
- . ') {' . $this->pStmts($node->stmts) . $this->nl . '}';
- }
-
- protected function pStmt_Finally(Stmt\Finally_ $node) {
- return 'finally {' . $this->pStmts($node->stmts) . $this->nl . '}';
- }
-
- protected function pStmt_Break(Stmt\Break_ $node) {
- return 'break' . ($node->num !== null ? ' ' . $this->p($node->num) : '') . ';';
- }
-
- protected function pStmt_Continue(Stmt\Continue_ $node) {
- return 'continue' . ($node->num !== null ? ' ' . $this->p($node->num) : '') . ';';
- }
-
- protected function pStmt_Return(Stmt\Return_ $node) {
- return 'return' . (null !== $node->expr ? ' ' . $this->p($node->expr) : '') . ';';
- }
-
- protected function pStmt_Throw(Stmt\Throw_ $node) {
- return 'throw ' . $this->p($node->expr) . ';';
- }
-
- protected function pStmt_Label(Stmt\Label $node) {
- return $node->name . ':';
- }
-
- protected function pStmt_Goto(Stmt\Goto_ $node) {
- return 'goto ' . $node->name . ';';
- }
-
- // Other
-
- protected function pStmt_Expression(Stmt\Expression $node) {
- return $this->p($node->expr) . ';';
- }
-
- protected function pStmt_Echo(Stmt\Echo_ $node) {
- return 'echo ' . $this->pCommaSeparated($node->exprs) . ';';
- }
-
- protected function pStmt_Static(Stmt\Static_ $node) {
- return 'static ' . $this->pCommaSeparated($node->vars) . ';';
- }
-
- protected function pStmt_Global(Stmt\Global_ $node) {
- return 'global ' . $this->pCommaSeparated($node->vars) . ';';
- }
-
- protected function pStmt_StaticVar(Stmt\StaticVar $node) {
- return $this->p($node->var)
- . (null !== $node->default ? ' = ' . $this->p($node->default) : '');
- }
-
- protected function pStmt_Unset(Stmt\Unset_ $node) {
- return 'unset(' . $this->pCommaSeparated($node->vars) . ');';
- }
-
- protected function pStmt_InlineHTML(Stmt\InlineHTML $node) {
- $newline = $node->getAttribute('hasLeadingNewline', true) ? "\n" : '';
- return '?>' . $newline . $node->value . 'remaining;
- }
-
- protected function pStmt_Nop(Stmt\Nop $node) {
- return '';
- }
-
- // Helpers
-
- protected function pClassCommon(Stmt\Class_ $node, $afterClassToken) {
- return $this->pAttrGroups($node->attrGroups, $node->name === null)
- . $this->pModifiers($node->flags)
- . 'class' . $afterClassToken
- . (null !== $node->extends ? ' extends ' . $this->p($node->extends) : '')
- . (!empty($node->implements) ? ' implements ' . $this->pCommaSeparated($node->implements) : '')
- . $this->nl . '{' . $this->pStmts($node->stmts) . $this->nl . '}';
- }
-
- protected function pObjectProperty($node) {
- if ($node instanceof Expr) {
- return '{' . $this->p($node) . '}';
- } else {
- return $node;
- }
- }
-
- protected function pEncapsList(array $encapsList, $quote) {
- $return = '';
- foreach ($encapsList as $element) {
- if ($element instanceof Scalar\EncapsedStringPart) {
- $return .= $this->escapeString($element->value, $quote);
- } else {
- $return .= '{' . $this->p($element) . '}';
- }
- }
-
- return $return;
- }
-
- protected function pSingleQuotedString(string $string) {
- return '\'' . addcslashes($string, '\'\\') . '\'';
- }
-
- protected function escapeString($string, $quote) {
- if (null === $quote) {
- // For doc strings, don't escape newlines
- $escaped = addcslashes($string, "\t\f\v$\\");
- } else {
- $escaped = addcslashes($string, "\n\r\t\f\v$" . $quote . "\\");
- }
-
- // Escape control characters and non-UTF-8 characters.
- // Regex based on https://stackoverflow.com/a/11709412/385378.
- $regex = '/(
- [\x00-\x08\x0E-\x1F] # Control characters
- | [\xC0-\xC1] # Invalid UTF-8 Bytes
- | [\xF5-\xFF] # Invalid UTF-8 Bytes
- | \xE0(?=[\x80-\x9F]) # Overlong encoding of prior code point
- | \xF0(?=[\x80-\x8F]) # Overlong encoding of prior code point
- | [\xC2-\xDF](?![\x80-\xBF]) # Invalid UTF-8 Sequence Start
- | [\xE0-\xEF](?![\x80-\xBF]{2}) # Invalid UTF-8 Sequence Start
- | [\xF0-\xF4](?![\x80-\xBF]{3}) # Invalid UTF-8 Sequence Start
- | (?<=[\x00-\x7F\xF5-\xFF])[\x80-\xBF] # Invalid UTF-8 Sequence Middle
- | (? $part) {
- $atStart = $i === 0;
- $atEnd = $i === count($parts) - 1;
- if ($part instanceof Scalar\EncapsedStringPart
- && $this->containsEndLabel($part->value, $label, $atStart, $atEnd)
- ) {
- return true;
- }
- }
- return false;
- }
-
- protected function pDereferenceLhs(Node $node) {
- if (!$this->dereferenceLhsRequiresParens($node)) {
- return $this->p($node);
- } else {
- return '(' . $this->p($node) . ')';
- }
- }
-
- protected function pCallLhs(Node $node) {
- if (!$this->callLhsRequiresParens($node)) {
- return $this->p($node);
- } else {
- return '(' . $this->p($node) . ')';
- }
- }
-
- protected function pNewVariable(Node $node) {
- // TODO: This is not fully accurate.
- return $this->pDereferenceLhs($node);
- }
-
- /**
- * @param Node[] $nodes
- * @return bool
- */
- protected function hasNodeWithComments(array $nodes) {
- foreach ($nodes as $node) {
- if ($node && $node->getComments()) {
- return true;
- }
- }
- return false;
- }
-
- protected function pMaybeMultiline(array $nodes, bool $trailingComma = false) {
- if (!$this->hasNodeWithComments($nodes)) {
- return $this->pCommaSeparated($nodes);
- } else {
- return $this->pCommaSeparatedMultiline($nodes, $trailingComma) . $this->nl;
- }
- }
-
- protected function pAttrGroups(array $nodes, bool $inline = false): string {
- $result = '';
- $sep = $inline ? ' ' : $this->nl;
- foreach ($nodes as $node) {
- $result .= $this->p($node) . $sep;
- }
-
- return $result;
- }
-}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php b/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php
deleted file mode 100644
index 2c7fc307..00000000
--- a/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php
+++ /dev/null
@@ -1,1506 +0,0 @@
- [ 0, 1],
- Expr\BitwiseNot::class => [ 10, 1],
- Expr\PreInc::class => [ 10, 1],
- Expr\PreDec::class => [ 10, 1],
- Expr\PostInc::class => [ 10, -1],
- Expr\PostDec::class => [ 10, -1],
- Expr\UnaryPlus::class => [ 10, 1],
- Expr\UnaryMinus::class => [ 10, 1],
- Cast\Int_::class => [ 10, 1],
- Cast\Double::class => [ 10, 1],
- Cast\String_::class => [ 10, 1],
- Cast\Array_::class => [ 10, 1],
- Cast\Object_::class => [ 10, 1],
- Cast\Bool_::class => [ 10, 1],
- Cast\Unset_::class => [ 10, 1],
- Expr\ErrorSuppress::class => [ 10, 1],
- Expr\Instanceof_::class => [ 20, 0],
- Expr\BooleanNot::class => [ 30, 1],
- BinaryOp\Mul::class => [ 40, -1],
- BinaryOp\Div::class => [ 40, -1],
- BinaryOp\Mod::class => [ 40, -1],
- BinaryOp\Plus::class => [ 50, -1],
- BinaryOp\Minus::class => [ 50, -1],
- BinaryOp\Concat::class => [ 50, -1],
- BinaryOp\ShiftLeft::class => [ 60, -1],
- BinaryOp\ShiftRight::class => [ 60, -1],
- BinaryOp\Smaller::class => [ 70, 0],
- BinaryOp\SmallerOrEqual::class => [ 70, 0],
- BinaryOp\Greater::class => [ 70, 0],
- BinaryOp\GreaterOrEqual::class => [ 70, 0],
- BinaryOp\Equal::class => [ 80, 0],
- BinaryOp\NotEqual::class => [ 80, 0],
- BinaryOp\Identical::class => [ 80, 0],
- BinaryOp\NotIdentical::class => [ 80, 0],
- BinaryOp\Spaceship::class => [ 80, 0],
- BinaryOp\BitwiseAnd::class => [ 90, -1],
- BinaryOp\BitwiseXor::class => [100, -1],
- BinaryOp\BitwiseOr::class => [110, -1],
- BinaryOp\BooleanAnd::class => [120, -1],
- BinaryOp\BooleanOr::class => [130, -1],
- BinaryOp\Coalesce::class => [140, 1],
- Expr\Ternary::class => [150, 0],
- // parser uses %left for assignments, but they really behave as %right
- Expr\Assign::class => [160, 1],
- Expr\AssignRef::class => [160, 1],
- AssignOp\Plus::class => [160, 1],
- AssignOp\Minus::class => [160, 1],
- AssignOp\Mul::class => [160, 1],
- AssignOp\Div::class => [160, 1],
- AssignOp\Concat::class => [160, 1],
- AssignOp\Mod::class => [160, 1],
- AssignOp\BitwiseAnd::class => [160, 1],
- AssignOp\BitwiseOr::class => [160, 1],
- AssignOp\BitwiseXor::class => [160, 1],
- AssignOp\ShiftLeft::class => [160, 1],
- AssignOp\ShiftRight::class => [160, 1],
- AssignOp\Pow::class => [160, 1],
- AssignOp\Coalesce::class => [160, 1],
- Expr\YieldFrom::class => [165, 1],
- Expr\Print_::class => [168, 1],
- BinaryOp\LogicalAnd::class => [170, -1],
- BinaryOp\LogicalXor::class => [180, -1],
- BinaryOp\LogicalOr::class => [190, -1],
- Expr\Include_::class => [200, -1],
- ];
-
- /** @var int Current indentation level. */
- protected $indentLevel;
- /** @var string Newline including current indentation. */
- protected $nl;
- /** @var string Token placed at end of doc string to ensure it is followed by a newline. */
- protected $docStringEndToken;
- /** @var bool Whether semicolon namespaces can be used (i.e. no global namespace is used) */
- protected $canUseSemicolonNamespaces;
- /** @var array Pretty printer options */
- protected $options;
-
- /** @var TokenStream Original tokens for use in format-preserving pretty print */
- protected $origTokens;
- /** @var Internal\Differ Differ for node lists */
- protected $nodeListDiffer;
- /** @var bool[] Map determining whether a certain character is a label character */
- protected $labelCharMap;
- /**
- * @var int[][] Map from token classes and subnode names to FIXUP_* constants. This is used
- * during format-preserving prints to place additional parens/braces if necessary.
- */
- protected $fixupMap;
- /**
- * @var int[][] Map from "{$node->getType()}->{$subNode}" to ['left' => $l, 'right' => $r],
- * where $l and $r specify the token type that needs to be stripped when removing
- * this node.
- */
- protected $removalMap;
- /**
- * @var mixed[] Map from "{$node->getType()}->{$subNode}" to [$find, $beforeToken, $extraLeft, $extraRight].
- * $find is an optional token after which the insertion occurs. $extraLeft/Right
- * are optionally added before/after the main insertions.
- */
- protected $insertionMap;
- /**
- * @var string[] Map From "{$node->getType()}->{$subNode}" to string that should be inserted
- * between elements of this list subnode.
- */
- protected $listInsertionMap;
- protected $emptyListInsertionMap;
- /** @var int[] Map from "{$node->getType()}->{$subNode}" to token before which the modifiers
- * should be reprinted. */
- protected $modifierChangeMap;
-
- /**
- * Creates a pretty printer instance using the given options.
- *
- * Supported options:
- * * bool $shortArraySyntax = false: Whether to use [] instead of array() as the default array
- * syntax, if the node does not specify a format.
- *
- * @param array $options Dictionary of formatting options
- */
- public function __construct(array $options = []) {
- $this->docStringEndToken = '_DOC_STRING_END_' . mt_rand();
-
- $defaultOptions = ['shortArraySyntax' => false];
- $this->options = $options + $defaultOptions;
- }
-
- /**
- * Reset pretty printing state.
- */
- protected function resetState() {
- $this->indentLevel = 0;
- $this->nl = "\n";
- $this->origTokens = null;
- }
-
- /**
- * Set indentation level
- *
- * @param int $level Level in number of spaces
- */
- protected function setIndentLevel(int $level) {
- $this->indentLevel = $level;
- $this->nl = "\n" . \str_repeat(' ', $level);
- }
-
- /**
- * Increase indentation level.
- */
- protected function indent() {
- $this->indentLevel += 4;
- $this->nl .= ' ';
- }
-
- /**
- * Decrease indentation level.
- */
- protected function outdent() {
- assert($this->indentLevel >= 4);
- $this->indentLevel -= 4;
- $this->nl = "\n" . str_repeat(' ', $this->indentLevel);
- }
-
- /**
- * Pretty prints an array of statements.
- *
- * @param Node[] $stmts Array of statements
- *
- * @return string Pretty printed statements
- */
- public function prettyPrint(array $stmts) : string {
- $this->resetState();
- $this->preprocessNodes($stmts);
-
- return ltrim($this->handleMagicTokens($this->pStmts($stmts, false)));
- }
-
- /**
- * Pretty prints an expression.
- *
- * @param Expr $node Expression node
- *
- * @return string Pretty printed node
- */
- public function prettyPrintExpr(Expr $node) : string {
- $this->resetState();
- return $this->handleMagicTokens($this->p($node));
- }
-
- /**
- * Pretty prints a file of statements (includes the opening prettyPrint($stmts);
-
- if ($stmts[0] instanceof Stmt\InlineHTML) {
- $p = preg_replace('/^<\?php\s+\?>\n?/', '', $p);
- }
- if ($stmts[count($stmts) - 1] instanceof Stmt\InlineHTML) {
- $p = preg_replace('/<\?php$/', '', rtrim($p));
- }
-
- return $p;
- }
-
- /**
- * Preprocesses the top-level nodes to initialize pretty printer state.
- *
- * @param Node[] $nodes Array of nodes
- */
- protected function preprocessNodes(array $nodes) {
- /* We can use semicolon-namespaces unless there is a global namespace declaration */
- $this->canUseSemicolonNamespaces = true;
- foreach ($nodes as $node) {
- if ($node instanceof Stmt\Namespace_ && null === $node->name) {
- $this->canUseSemicolonNamespaces = false;
- break;
- }
- }
- }
-
- /**
- * Handles (and removes) no-indent and doc-string-end tokens.
- *
- * @param string $str
- * @return string
- */
- protected function handleMagicTokens(string $str) : string {
- // Replace doc-string-end tokens with nothing or a newline
- $str = str_replace($this->docStringEndToken . ";\n", ";\n", $str);
- $str = str_replace($this->docStringEndToken, "\n", $str);
-
- return $str;
- }
-
- /**
- * Pretty prints an array of nodes (statements) and indents them optionally.
- *
- * @param Node[] $nodes Array of nodes
- * @param bool $indent Whether to indent the printed nodes
- *
- * @return string Pretty printed statements
- */
- protected function pStmts(array $nodes, bool $indent = true) : string {
- if ($indent) {
- $this->indent();
- }
-
- $result = '';
- foreach ($nodes as $node) {
- $comments = $node->getComments();
- if ($comments) {
- $result .= $this->nl . $this->pComments($comments);
- if ($node instanceof Stmt\Nop) {
- continue;
- }
- }
-
- $result .= $this->nl . $this->p($node);
- }
-
- if ($indent) {
- $this->outdent();
- }
-
- return $result;
- }
-
- /**
- * Pretty-print an infix operation while taking precedence into account.
- *
- * @param string $class Node class of operator
- * @param Node $leftNode Left-hand side node
- * @param string $operatorString String representation of the operator
- * @param Node $rightNode Right-hand side node
- *
- * @return string Pretty printed infix operation
- */
- protected function pInfixOp(string $class, Node $leftNode, string $operatorString, Node $rightNode) : string {
- list($precedence, $associativity) = $this->precedenceMap[$class];
-
- return $this->pPrec($leftNode, $precedence, $associativity, -1)
- . $operatorString
- . $this->pPrec($rightNode, $precedence, $associativity, 1);
- }
-
- /**
- * Pretty-print a prefix operation while taking precedence into account.
- *
- * @param string $class Node class of operator
- * @param string $operatorString String representation of the operator
- * @param Node $node Node
- *
- * @return string Pretty printed prefix operation
- */
- protected function pPrefixOp(string $class, string $operatorString, Node $node) : string {
- list($precedence, $associativity) = $this->precedenceMap[$class];
- return $operatorString . $this->pPrec($node, $precedence, $associativity, 1);
- }
-
- /**
- * Pretty-print a postfix operation while taking precedence into account.
- *
- * @param string $class Node class of operator
- * @param string $operatorString String representation of the operator
- * @param Node $node Node
- *
- * @return string Pretty printed postfix operation
- */
- protected function pPostfixOp(string $class, Node $node, string $operatorString) : string {
- list($precedence, $associativity) = $this->precedenceMap[$class];
- return $this->pPrec($node, $precedence, $associativity, -1) . $operatorString;
- }
-
- /**
- * Prints an expression node with the least amount of parentheses necessary to preserve the meaning.
- *
- * @param Node $node Node to pretty print
- * @param int $parentPrecedence Precedence of the parent operator
- * @param int $parentAssociativity Associativity of parent operator
- * (-1 is left, 0 is nonassoc, 1 is right)
- * @param int $childPosition Position of the node relative to the operator
- * (-1 is left, 1 is right)
- *
- * @return string The pretty printed node
- */
- protected function pPrec(Node $node, int $parentPrecedence, int $parentAssociativity, int $childPosition) : string {
- $class = \get_class($node);
- if (isset($this->precedenceMap[$class])) {
- $childPrecedence = $this->precedenceMap[$class][0];
- if ($childPrecedence > $parentPrecedence
- || ($parentPrecedence === $childPrecedence && $parentAssociativity !== $childPosition)
- ) {
- return '(' . $this->p($node) . ')';
- }
- }
-
- return $this->p($node);
- }
-
- /**
- * Pretty prints an array of nodes and implodes the printed values.
- *
- * @param Node[] $nodes Array of Nodes to be printed
- * @param string $glue Character to implode with
- *
- * @return string Imploded pretty printed nodes
- */
- protected function pImplode(array $nodes, string $glue = '') : string {
- $pNodes = [];
- foreach ($nodes as $node) {
- if (null === $node) {
- $pNodes[] = '';
- } else {
- $pNodes[] = $this->p($node);
- }
- }
-
- return implode($glue, $pNodes);
- }
-
- /**
- * Pretty prints an array of nodes and implodes the printed values with commas.
- *
- * @param Node[] $nodes Array of Nodes to be printed
- *
- * @return string Comma separated pretty printed nodes
- */
- protected function pCommaSeparated(array $nodes) : string {
- return $this->pImplode($nodes, ', ');
- }
-
- /**
- * Pretty prints a comma-separated list of nodes in multiline style, including comments.
- *
- * The result includes a leading newline and one level of indentation (same as pStmts).
- *
- * @param Node[] $nodes Array of Nodes to be printed
- * @param bool $trailingComma Whether to use a trailing comma
- *
- * @return string Comma separated pretty printed nodes in multiline style
- */
- protected function pCommaSeparatedMultiline(array $nodes, bool $trailingComma) : string {
- $this->indent();
-
- $result = '';
- $lastIdx = count($nodes) - 1;
- foreach ($nodes as $idx => $node) {
- if ($node !== null) {
- $comments = $node->getComments();
- if ($comments) {
- $result .= $this->nl . $this->pComments($comments);
- }
-
- $result .= $this->nl . $this->p($node);
- } else {
- $result .= $this->nl;
- }
- if ($trailingComma || $idx !== $lastIdx) {
- $result .= ',';
- }
- }
-
- $this->outdent();
- return $result;
- }
-
- /**
- * Prints reformatted text of the passed comments.
- *
- * @param Comment[] $comments List of comments
- *
- * @return string Reformatted text of comments
- */
- protected function pComments(array $comments) : string {
- $formattedComments = [];
-
- foreach ($comments as $comment) {
- $formattedComments[] = str_replace("\n", $this->nl, $comment->getReformattedText());
- }
-
- return implode($this->nl, $formattedComments);
- }
-
- /**
- * Perform a format-preserving pretty print of an AST.
- *
- * The format preservation is best effort. For some changes to the AST the formatting will not
- * be preserved (at least not locally).
- *
- * In order to use this method a number of prerequisites must be satisfied:
- * * The startTokenPos and endTokenPos attributes in the lexer must be enabled.
- * * The CloningVisitor must be run on the AST prior to modification.
- * * The original tokens must be provided, using the getTokens() method on the lexer.
- *
- * @param Node[] $stmts Modified AST with links to original AST
- * @param Node[] $origStmts Original AST with token offset information
- * @param array $origTokens Tokens of the original code
- *
- * @return string
- */
- public function printFormatPreserving(array $stmts, array $origStmts, array $origTokens) : string {
- $this->initializeNodeListDiffer();
- $this->initializeLabelCharMap();
- $this->initializeFixupMap();
- $this->initializeRemovalMap();
- $this->initializeInsertionMap();
- $this->initializeListInsertionMap();
- $this->initializeEmptyListInsertionMap();
- $this->initializeModifierChangeMap();
-
- $this->resetState();
- $this->origTokens = new TokenStream($origTokens);
-
- $this->preprocessNodes($stmts);
-
- $pos = 0;
- $result = $this->pArray($stmts, $origStmts, $pos, 0, 'File', 'stmts', null);
- if (null !== $result) {
- $result .= $this->origTokens->getTokenCode($pos, count($origTokens), 0);
- } else {
- // Fallback
- // TODO Add pStmts($stmts, false);
- }
-
- return ltrim($this->handleMagicTokens($result));
- }
-
- protected function pFallback(Node $node) {
- return $this->{'p' . $node->getType()}($node);
- }
-
- /**
- * Pretty prints a node.
- *
- * This method also handles formatting preservation for nodes.
- *
- * @param Node $node Node to be pretty printed
- * @param bool $parentFormatPreserved Whether parent node has preserved formatting
- *
- * @return string Pretty printed node
- */
- protected function p(Node $node, $parentFormatPreserved = false) : string {
- // No orig tokens means this is a normal pretty print without preservation of formatting
- if (!$this->origTokens) {
- return $this->{'p' . $node->getType()}($node);
- }
-
- /** @var Node $origNode */
- $origNode = $node->getAttribute('origNode');
- if (null === $origNode) {
- return $this->pFallback($node);
- }
-
- $class = \get_class($node);
- \assert($class === \get_class($origNode));
-
- $startPos = $origNode->getStartTokenPos();
- $endPos = $origNode->getEndTokenPos();
- \assert($startPos >= 0 && $endPos >= 0);
-
- $fallbackNode = $node;
- if ($node instanceof Expr\New_ && $node->class instanceof Stmt\Class_) {
- // Normalize node structure of anonymous classes
- $node = PrintableNewAnonClassNode::fromNewNode($node);
- $origNode = PrintableNewAnonClassNode::fromNewNode($origNode);
- }
-
- // InlineHTML node does not contain closing and opening PHP tags. If the parent formatting
- // is not preserved, then we need to use the fallback code to make sure the tags are
- // printed.
- if ($node instanceof Stmt\InlineHTML && !$parentFormatPreserved) {
- return $this->pFallback($fallbackNode);
- }
-
- $indentAdjustment = $this->indentLevel - $this->origTokens->getIndentationBefore($startPos);
-
- $type = $node->getType();
- $fixupInfo = $this->fixupMap[$class] ?? null;
-
- $result = '';
- $pos = $startPos;
- foreach ($node->getSubNodeNames() as $subNodeName) {
- $subNode = $node->$subNodeName;
- $origSubNode = $origNode->$subNodeName;
-
- if ((!$subNode instanceof Node && $subNode !== null)
- || (!$origSubNode instanceof Node && $origSubNode !== null)
- ) {
- if ($subNode === $origSubNode) {
- // Unchanged, can reuse old code
- continue;
- }
-
- if (is_array($subNode) && is_array($origSubNode)) {
- // Array subnode changed, we might be able to reconstruct it
- $listResult = $this->pArray(
- $subNode, $origSubNode, $pos, $indentAdjustment, $type, $subNodeName,
- $fixupInfo[$subNodeName] ?? null
- );
- if (null === $listResult) {
- return $this->pFallback($fallbackNode);
- }
-
- $result .= $listResult;
- continue;
- }
-
- if (is_int($subNode) && is_int($origSubNode)) {
- // Check if this is a modifier change
- $key = $type . '->' . $subNodeName;
- if (!isset($this->modifierChangeMap[$key])) {
- return $this->pFallback($fallbackNode);
- }
-
- $findToken = $this->modifierChangeMap[$key];
- $result .= $this->pModifiers($subNode);
- $pos = $this->origTokens->findRight($pos, $findToken);
- continue;
- }
-
- // If a non-node, non-array subnode changed, we don't be able to do a partial
- // reconstructions, as we don't have enough offset information. Pretty print the
- // whole node instead.
- return $this->pFallback($fallbackNode);
- }
-
- $extraLeft = '';
- $extraRight = '';
- if ($origSubNode !== null) {
- $subStartPos = $origSubNode->getStartTokenPos();
- $subEndPos = $origSubNode->getEndTokenPos();
- \assert($subStartPos >= 0 && $subEndPos >= 0);
- } else {
- if ($subNode === null) {
- // Both null, nothing to do
- continue;
- }
-
- // A node has been inserted, check if we have insertion information for it
- $key = $type . '->' . $subNodeName;
- if (!isset($this->insertionMap[$key])) {
- return $this->pFallback($fallbackNode);
- }
-
- list($findToken, $beforeToken, $extraLeft, $extraRight) = $this->insertionMap[$key];
- if (null !== $findToken) {
- $subStartPos = $this->origTokens->findRight($pos, $findToken)
- + (int) !$beforeToken;
- } else {
- $subStartPos = $pos;
- }
-
- if (null === $extraLeft && null !== $extraRight) {
- // If inserting on the right only, skipping whitespace looks better
- $subStartPos = $this->origTokens->skipRightWhitespace($subStartPos);
- }
- $subEndPos = $subStartPos - 1;
- }
-
- if (null === $subNode) {
- // A node has been removed, check if we have removal information for it
- $key = $type . '->' . $subNodeName;
- if (!isset($this->removalMap[$key])) {
- return $this->pFallback($fallbackNode);
- }
-
- // Adjust positions to account for additional tokens that must be skipped
- $removalInfo = $this->removalMap[$key];
- if (isset($removalInfo['left'])) {
- $subStartPos = $this->origTokens->skipLeft($subStartPos - 1, $removalInfo['left']) + 1;
- }
- if (isset($removalInfo['right'])) {
- $subEndPos = $this->origTokens->skipRight($subEndPos + 1, $removalInfo['right']) - 1;
- }
- }
-
- $result .= $this->origTokens->getTokenCode($pos, $subStartPos, $indentAdjustment);
-
- if (null !== $subNode) {
- $result .= $extraLeft;
-
- $origIndentLevel = $this->indentLevel;
- $this->setIndentLevel($this->origTokens->getIndentationBefore($subStartPos) + $indentAdjustment);
-
- // If it's the same node that was previously in this position, it certainly doesn't
- // need fixup. It's important to check this here, because our fixup checks are more
- // conservative than strictly necessary.
- if (isset($fixupInfo[$subNodeName])
- && $subNode->getAttribute('origNode') !== $origSubNode
- ) {
- $fixup = $fixupInfo[$subNodeName];
- $res = $this->pFixup($fixup, $subNode, $class, $subStartPos, $subEndPos);
- } else {
- $res = $this->p($subNode, true);
- }
-
- $this->safeAppend($result, $res);
- $this->setIndentLevel($origIndentLevel);
-
- $result .= $extraRight;
- }
-
- $pos = $subEndPos + 1;
- }
-
- $result .= $this->origTokens->getTokenCode($pos, $endPos + 1, $indentAdjustment);
- return $result;
- }
-
- /**
- * Perform a format-preserving pretty print of an array.
- *
- * @param array $nodes New nodes
- * @param array $origNodes Original nodes
- * @param int $pos Current token position (updated by reference)
- * @param int $indentAdjustment Adjustment for indentation
- * @param string $parentNodeType Type of the containing node.
- * @param string $subNodeName Name of array subnode.
- * @param null|int $fixup Fixup information for array item nodes
- *
- * @return null|string Result of pretty print or null if cannot preserve formatting
- */
- protected function pArray(
- array $nodes, array $origNodes, int &$pos, int $indentAdjustment,
- string $parentNodeType, string $subNodeName, $fixup
- ) {
- $diff = $this->nodeListDiffer->diffWithReplacements($origNodes, $nodes);
-
- $mapKey = $parentNodeType . '->' . $subNodeName;
- $insertStr = $this->listInsertionMap[$mapKey] ?? null;
- $isStmtList = $subNodeName === 'stmts';
-
- $beforeFirstKeepOrReplace = true;
- $skipRemovedNode = false;
- $delayedAdd = [];
- $lastElemIndentLevel = $this->indentLevel;
-
- $insertNewline = false;
- if ($insertStr === "\n") {
- $insertStr = '';
- $insertNewline = true;
- }
-
- if ($isStmtList && \count($origNodes) === 1 && \count($nodes) !== 1) {
- $startPos = $origNodes[0]->getStartTokenPos();
- $endPos = $origNodes[0]->getEndTokenPos();
- \assert($startPos >= 0 && $endPos >= 0);
- if (!$this->origTokens->haveBraces($startPos, $endPos)) {
- // This was a single statement without braces, but either additional statements
- // have been added, or the single statement has been removed. This requires the
- // addition of braces. For now fall back.
- // TODO: Try to preserve formatting
- return null;
- }
- }
-
- $result = '';
- foreach ($diff as $i => $diffElem) {
- $diffType = $diffElem->type;
- /** @var Node|null $arrItem */
- $arrItem = $diffElem->new;
- /** @var Node|null $origArrItem */
- $origArrItem = $diffElem->old;
-
- if ($diffType === DiffElem::TYPE_KEEP || $diffType === DiffElem::TYPE_REPLACE) {
- $beforeFirstKeepOrReplace = false;
-
- if ($origArrItem === null || $arrItem === null) {
- // We can only handle the case where both are null
- if ($origArrItem === $arrItem) {
- continue;
- }
- return null;
- }
-
- if (!$arrItem instanceof Node || !$origArrItem instanceof Node) {
- // We can only deal with nodes. This can occur for Names, which use string arrays.
- return null;
- }
-
- $itemStartPos = $origArrItem->getStartTokenPos();
- $itemEndPos = $origArrItem->getEndTokenPos();
- \assert($itemStartPos >= 0 && $itemEndPos >= 0 && $itemStartPos >= $pos);
-
- $origIndentLevel = $this->indentLevel;
- $lastElemIndentLevel = $this->origTokens->getIndentationBefore($itemStartPos) + $indentAdjustment;
- $this->setIndentLevel($lastElemIndentLevel);
-
- $comments = $arrItem->getComments();
- $origComments = $origArrItem->getComments();
- $commentStartPos = $origComments ? $origComments[0]->getStartTokenPos() : $itemStartPos;
- \assert($commentStartPos >= 0);
-
- if ($commentStartPos < $pos) {
- // Comments may be assigned to multiple nodes if they start at the same position.
- // Make sure we don't try to print them multiple times.
- $commentStartPos = $itemStartPos;
- }
-
- if ($skipRemovedNode) {
- if ($isStmtList && $this->origTokens->haveBracesInRange($pos, $itemStartPos)) {
- // We'd remove the brace of a code block.
- // TODO: Preserve formatting.
- $this->setIndentLevel($origIndentLevel);
- return null;
- }
- } else {
- $result .= $this->origTokens->getTokenCode(
- $pos, $commentStartPos, $indentAdjustment);
- }
-
- if (!empty($delayedAdd)) {
- /** @var Node $delayedAddNode */
- foreach ($delayedAdd as $delayedAddNode) {
- if ($insertNewline) {
- $delayedAddComments = $delayedAddNode->getComments();
- if ($delayedAddComments) {
- $result .= $this->pComments($delayedAddComments) . $this->nl;
- }
- }
-
- $this->safeAppend($result, $this->p($delayedAddNode, true));
-
- if ($insertNewline) {
- $result .= $insertStr . $this->nl;
- } else {
- $result .= $insertStr;
- }
- }
-
- $delayedAdd = [];
- }
-
- if ($comments !== $origComments) {
- if ($comments) {
- $result .= $this->pComments($comments) . $this->nl;
- }
- } else {
- $result .= $this->origTokens->getTokenCode(
- $commentStartPos, $itemStartPos, $indentAdjustment);
- }
-
- // If we had to remove anything, we have done so now.
- $skipRemovedNode = false;
- } elseif ($diffType === DiffElem::TYPE_ADD) {
- if (null === $insertStr) {
- // We don't have insertion information for this list type
- return null;
- }
-
- // We go multiline if the original code was multiline,
- // or if it's an array item with a comment above it.
- if ($insertStr === ', ' &&
- ($this->isMultiline($origNodes) || $arrItem->getComments())
- ) {
- $insertStr = ',';
- $insertNewline = true;
- }
-
- if ($beforeFirstKeepOrReplace) {
- // Will be inserted at the next "replace" or "keep" element
- $delayedAdd[] = $arrItem;
- continue;
- }
-
- $itemStartPos = $pos;
- $itemEndPos = $pos - 1;
-
- $origIndentLevel = $this->indentLevel;
- $this->setIndentLevel($lastElemIndentLevel);
-
- if ($insertNewline) {
- $result .= $insertStr . $this->nl;
- $comments = $arrItem->getComments();
- if ($comments) {
- $result .= $this->pComments($comments) . $this->nl;
- }
- } else {
- $result .= $insertStr;
- }
- } elseif ($diffType === DiffElem::TYPE_REMOVE) {
- if (!$origArrItem instanceof Node) {
- // We only support removal for nodes
- return null;
- }
-
- $itemStartPos = $origArrItem->getStartTokenPos();
- $itemEndPos = $origArrItem->getEndTokenPos();
- \assert($itemStartPos >= 0 && $itemEndPos >= 0);
-
- // Consider comments part of the node.
- $origComments = $origArrItem->getComments();
- if ($origComments) {
- $itemStartPos = $origComments[0]->getStartTokenPos();
- }
-
- if ($i === 0) {
- // If we're removing from the start, keep the tokens before the node and drop those after it,
- // instead of the other way around.
- $result .= $this->origTokens->getTokenCode(
- $pos, $itemStartPos, $indentAdjustment);
- $skipRemovedNode = true;
- } else {
- if ($isStmtList && $this->origTokens->haveBracesInRange($pos, $itemStartPos)) {
- // We'd remove the brace of a code block.
- // TODO: Preserve formatting.
- return null;
- }
- }
-
- $pos = $itemEndPos + 1;
- continue;
- } else {
- throw new \Exception("Shouldn't happen");
- }
-
- if (null !== $fixup && $arrItem->getAttribute('origNode') !== $origArrItem) {
- $res = $this->pFixup($fixup, $arrItem, null, $itemStartPos, $itemEndPos);
- } else {
- $res = $this->p($arrItem, true);
- }
- $this->safeAppend($result, $res);
-
- $this->setIndentLevel($origIndentLevel);
- $pos = $itemEndPos + 1;
- }
-
- if ($skipRemovedNode) {
- // TODO: Support removing single node.
- return null;
- }
-
- if (!empty($delayedAdd)) {
- if (!isset($this->emptyListInsertionMap[$mapKey])) {
- return null;
- }
-
- list($findToken, $extraLeft, $extraRight) = $this->emptyListInsertionMap[$mapKey];
- if (null !== $findToken) {
- $insertPos = $this->origTokens->findRight($pos, $findToken) + 1;
- $result .= $this->origTokens->getTokenCode($pos, $insertPos, $indentAdjustment);
- $pos = $insertPos;
- }
-
- $first = true;
- $result .= $extraLeft;
- foreach ($delayedAdd as $delayedAddNode) {
- if (!$first) {
- $result .= $insertStr;
- }
- $result .= $this->p($delayedAddNode, true);
- $first = false;
- }
- $result .= $extraRight;
- }
-
- return $result;
- }
-
- /**
- * Print node with fixups.
- *
- * Fixups here refer to the addition of extra parentheses, braces or other characters, that
- * are required to preserve program semantics in a certain context (e.g. to maintain precedence
- * or because only certain expressions are allowed in certain places).
- *
- * @param int $fixup Fixup type
- * @param Node $subNode Subnode to print
- * @param string|null $parentClass Class of parent node
- * @param int $subStartPos Original start pos of subnode
- * @param int $subEndPos Original end pos of subnode
- *
- * @return string Result of fixed-up print of subnode
- */
- protected function pFixup(int $fixup, Node $subNode, $parentClass, int $subStartPos, int $subEndPos) : string {
- switch ($fixup) {
- case self::FIXUP_PREC_LEFT:
- case self::FIXUP_PREC_RIGHT:
- if (!$this->origTokens->haveParens($subStartPos, $subEndPos)) {
- list($precedence, $associativity) = $this->precedenceMap[$parentClass];
- return $this->pPrec($subNode, $precedence, $associativity,
- $fixup === self::FIXUP_PREC_LEFT ? -1 : 1);
- }
- break;
- case self::FIXUP_CALL_LHS:
- if ($this->callLhsRequiresParens($subNode)
- && !$this->origTokens->haveParens($subStartPos, $subEndPos)
- ) {
- return '(' . $this->p($subNode) . ')';
- }
- break;
- case self::FIXUP_DEREF_LHS:
- if ($this->dereferenceLhsRequiresParens($subNode)
- && !$this->origTokens->haveParens($subStartPos, $subEndPos)
- ) {
- return '(' . $this->p($subNode) . ')';
- }
- break;
- case self::FIXUP_BRACED_NAME:
- case self::FIXUP_VAR_BRACED_NAME:
- if ($subNode instanceof Expr
- && !$this->origTokens->haveBraces($subStartPos, $subEndPos)
- ) {
- return ($fixup === self::FIXUP_VAR_BRACED_NAME ? '$' : '')
- . '{' . $this->p($subNode) . '}';
- }
- break;
- case self::FIXUP_ENCAPSED:
- if (!$subNode instanceof Scalar\EncapsedStringPart
- && !$this->origTokens->haveBraces($subStartPos, $subEndPos)
- ) {
- return '{' . $this->p($subNode) . '}';
- }
- break;
- default:
- throw new \Exception('Cannot happen');
- }
-
- // Nothing special to do
- return $this->p($subNode);
- }
-
- /**
- * Appends to a string, ensuring whitespace between label characters.
- *
- * Example: "echo" and "$x" result in "echo$x", but "echo" and "x" result in "echo x".
- * Without safeAppend the result would be "echox", which does not preserve semantics.
- *
- * @param string $str
- * @param string $append
- */
- protected function safeAppend(string &$str, string $append) {
- if ($str === "") {
- $str = $append;
- return;
- }
-
- if ($append === "") {
- return;
- }
-
- if (!$this->labelCharMap[$append[0]]
- || !$this->labelCharMap[$str[\strlen($str) - 1]]) {
- $str .= $append;
- } else {
- $str .= " " . $append;
- }
- }
-
- /**
- * Determines whether the LHS of a call must be wrapped in parenthesis.
- *
- * @param Node $node LHS of a call
- *
- * @return bool Whether parentheses are required
- */
- protected function callLhsRequiresParens(Node $node) : bool {
- return !($node instanceof Node\Name
- || $node instanceof Expr\Variable
- || $node instanceof Expr\ArrayDimFetch
- || $node instanceof Expr\FuncCall
- || $node instanceof Expr\MethodCall
- || $node instanceof Expr\NullsafeMethodCall
- || $node instanceof Expr\StaticCall
- || $node instanceof Expr\Array_);
- }
-
- /**
- * Determines whether the LHS of a dereferencing operation must be wrapped in parenthesis.
- *
- * @param Node $node LHS of dereferencing operation
- *
- * @return bool Whether parentheses are required
- */
- protected function dereferenceLhsRequiresParens(Node $node) : bool {
- return !($node instanceof Expr\Variable
- || $node instanceof Node\Name
- || $node instanceof Expr\ArrayDimFetch
- || $node instanceof Expr\PropertyFetch
- || $node instanceof Expr\NullsafePropertyFetch
- || $node instanceof Expr\StaticPropertyFetch
- || $node instanceof Expr\FuncCall
- || $node instanceof Expr\MethodCall
- || $node instanceof Expr\NullsafeMethodCall
- || $node instanceof Expr\StaticCall
- || $node instanceof Expr\Array_
- || $node instanceof Scalar\String_
- || $node instanceof Expr\ConstFetch
- || $node instanceof Expr\ClassConstFetch);
- }
-
- /**
- * Print modifiers, including trailing whitespace.
- *
- * @param int $modifiers Modifier mask to print
- *
- * @return string Printed modifiers
- */
- protected function pModifiers(int $modifiers) {
- return ($modifiers & Stmt\Class_::MODIFIER_PUBLIC ? 'public ' : '')
- . ($modifiers & Stmt\Class_::MODIFIER_PROTECTED ? 'protected ' : '')
- . ($modifiers & Stmt\Class_::MODIFIER_PRIVATE ? 'private ' : '')
- . ($modifiers & Stmt\Class_::MODIFIER_STATIC ? 'static ' : '')
- . ($modifiers & Stmt\Class_::MODIFIER_ABSTRACT ? 'abstract ' : '')
- . ($modifiers & Stmt\Class_::MODIFIER_FINAL ? 'final ' : '')
- . ($modifiers & Stmt\Class_::MODIFIER_READONLY ? 'readonly ' : '');
- }
-
- /**
- * Determine whether a list of nodes uses multiline formatting.
- *
- * @param (Node|null)[] $nodes Node list
- *
- * @return bool Whether multiline formatting is used
- */
- protected function isMultiline(array $nodes) : bool {
- if (\count($nodes) < 2) {
- return false;
- }
-
- $pos = -1;
- foreach ($nodes as $node) {
- if (null === $node) {
- continue;
- }
-
- $endPos = $node->getEndTokenPos() + 1;
- if ($pos >= 0) {
- $text = $this->origTokens->getTokenCode($pos, $endPos, 0);
- if (false === strpos($text, "\n")) {
- // We require that a newline is present between *every* item. If the formatting
- // is inconsistent, with only some items having newlines, we don't consider it
- // as multiline
- return false;
- }
- }
- $pos = $endPos;
- }
-
- return true;
- }
-
- /**
- * Lazily initializes label char map.
- *
- * The label char map determines whether a certain character may occur in a label.
- */
- protected function initializeLabelCharMap() {
- if ($this->labelCharMap) return;
-
- $this->labelCharMap = [];
- for ($i = 0; $i < 256; $i++) {
- // Since PHP 7.1 The lower range is 0x80. However, we also want to support code for
- // older versions.
- $chr = chr($i);
- $this->labelCharMap[$chr] = $i >= 0x7f || ctype_alnum($chr);
- }
- }
-
- /**
- * Lazily initializes node list differ.
- *
- * The node list differ is used to determine differences between two array subnodes.
- */
- protected function initializeNodeListDiffer() {
- if ($this->nodeListDiffer) return;
-
- $this->nodeListDiffer = new Internal\Differ(function ($a, $b) {
- if ($a instanceof Node && $b instanceof Node) {
- return $a === $b->getAttribute('origNode');
- }
- // Can happen for array destructuring
- return $a === null && $b === null;
- });
- }
-
- /**
- * Lazily initializes fixup map.
- *
- * The fixup map is used to determine whether a certain subnode of a certain node may require
- * some kind of "fixup" operation, e.g. the addition of parenthesis or braces.
- */
- protected function initializeFixupMap() {
- if ($this->fixupMap) return;
-
- $this->fixupMap = [
- Expr\PreInc::class => ['var' => self::FIXUP_PREC_RIGHT],
- Expr\PreDec::class => ['var' => self::FIXUP_PREC_RIGHT],
- Expr\PostInc::class => ['var' => self::FIXUP_PREC_LEFT],
- Expr\PostDec::class => ['var' => self::FIXUP_PREC_LEFT],
- Expr\Instanceof_::class => [
- 'expr' => self::FIXUP_PREC_LEFT,
- 'class' => self::FIXUP_PREC_RIGHT, // TODO: FIXUP_NEW_VARIABLE
- ],
- Expr\Ternary::class => [
- 'cond' => self::FIXUP_PREC_LEFT,
- 'else' => self::FIXUP_PREC_RIGHT,
- ],
-
- Expr\FuncCall::class => ['name' => self::FIXUP_CALL_LHS],
- Expr\StaticCall::class => ['class' => self::FIXUP_DEREF_LHS],
- Expr\ArrayDimFetch::class => ['var' => self::FIXUP_DEREF_LHS],
- Expr\ClassConstFetch::class => ['var' => self::FIXUP_DEREF_LHS],
- Expr\New_::class => ['class' => self::FIXUP_DEREF_LHS], // TODO: FIXUP_NEW_VARIABLE
- Expr\MethodCall::class => [
- 'var' => self::FIXUP_DEREF_LHS,
- 'name' => self::FIXUP_BRACED_NAME,
- ],
- Expr\NullsafeMethodCall::class => [
- 'var' => self::FIXUP_DEREF_LHS,
- 'name' => self::FIXUP_BRACED_NAME,
- ],
- Expr\StaticPropertyFetch::class => [
- 'class' => self::FIXUP_DEREF_LHS,
- 'name' => self::FIXUP_VAR_BRACED_NAME,
- ],
- Expr\PropertyFetch::class => [
- 'var' => self::FIXUP_DEREF_LHS,
- 'name' => self::FIXUP_BRACED_NAME,
- ],
- Expr\NullsafePropertyFetch::class => [
- 'var' => self::FIXUP_DEREF_LHS,
- 'name' => self::FIXUP_BRACED_NAME,
- ],
- Scalar\Encapsed::class => [
- 'parts' => self::FIXUP_ENCAPSED,
- ],
- ];
-
- $binaryOps = [
- BinaryOp\Pow::class, BinaryOp\Mul::class, BinaryOp\Div::class, BinaryOp\Mod::class,
- BinaryOp\Plus::class, BinaryOp\Minus::class, BinaryOp\Concat::class,
- BinaryOp\ShiftLeft::class, BinaryOp\ShiftRight::class, BinaryOp\Smaller::class,
- BinaryOp\SmallerOrEqual::class, BinaryOp\Greater::class, BinaryOp\GreaterOrEqual::class,
- BinaryOp\Equal::class, BinaryOp\NotEqual::class, BinaryOp\Identical::class,
- BinaryOp\NotIdentical::class, BinaryOp\Spaceship::class, BinaryOp\BitwiseAnd::class,
- BinaryOp\BitwiseXor::class, BinaryOp\BitwiseOr::class, BinaryOp\BooleanAnd::class,
- BinaryOp\BooleanOr::class, BinaryOp\Coalesce::class, BinaryOp\LogicalAnd::class,
- BinaryOp\LogicalXor::class, BinaryOp\LogicalOr::class,
- ];
- foreach ($binaryOps as $binaryOp) {
- $this->fixupMap[$binaryOp] = [
- 'left' => self::FIXUP_PREC_LEFT,
- 'right' => self::FIXUP_PREC_RIGHT
- ];
- }
-
- $assignOps = [
- Expr\Assign::class, Expr\AssignRef::class, AssignOp\Plus::class, AssignOp\Minus::class,
- AssignOp\Mul::class, AssignOp\Div::class, AssignOp\Concat::class, AssignOp\Mod::class,
- AssignOp\BitwiseAnd::class, AssignOp\BitwiseOr::class, AssignOp\BitwiseXor::class,
- AssignOp\ShiftLeft::class, AssignOp\ShiftRight::class, AssignOp\Pow::class, AssignOp\Coalesce::class
- ];
- foreach ($assignOps as $assignOp) {
- $this->fixupMap[$assignOp] = [
- 'var' => self::FIXUP_PREC_LEFT,
- 'expr' => self::FIXUP_PREC_RIGHT,
- ];
- }
-
- $prefixOps = [
- Expr\BitwiseNot::class, Expr\BooleanNot::class, Expr\UnaryPlus::class, Expr\UnaryMinus::class,
- Cast\Int_::class, Cast\Double::class, Cast\String_::class, Cast\Array_::class,
- Cast\Object_::class, Cast\Bool_::class, Cast\Unset_::class, Expr\ErrorSuppress::class,
- Expr\YieldFrom::class, Expr\Print_::class, Expr\Include_::class,
- ];
- foreach ($prefixOps as $prefixOp) {
- $this->fixupMap[$prefixOp] = ['expr' => self::FIXUP_PREC_RIGHT];
- }
- }
-
- /**
- * Lazily initializes the removal map.
- *
- * The removal map is used to determine which additional tokens should be removed when a
- * certain node is replaced by null.
- */
- protected function initializeRemovalMap() {
- if ($this->removalMap) return;
-
- $stripBoth = ['left' => \T_WHITESPACE, 'right' => \T_WHITESPACE];
- $stripLeft = ['left' => \T_WHITESPACE];
- $stripRight = ['right' => \T_WHITESPACE];
- $stripDoubleArrow = ['right' => \T_DOUBLE_ARROW];
- $stripColon = ['left' => ':'];
- $stripEquals = ['left' => '='];
- $this->removalMap = [
- 'Expr_ArrayDimFetch->dim' => $stripBoth,
- 'Expr_ArrayItem->key' => $stripDoubleArrow,
- 'Expr_ArrowFunction->returnType' => $stripColon,
- 'Expr_Closure->returnType' => $stripColon,
- 'Expr_Exit->expr' => $stripBoth,
- 'Expr_Ternary->if' => $stripBoth,
- 'Expr_Yield->key' => $stripDoubleArrow,
- 'Expr_Yield->value' => $stripBoth,
- 'Param->type' => $stripRight,
- 'Param->default' => $stripEquals,
- 'Stmt_Break->num' => $stripBoth,
- 'Stmt_Catch->var' => $stripLeft,
- 'Stmt_ClassMethod->returnType' => $stripColon,
- 'Stmt_Class->extends' => ['left' => \T_EXTENDS],
- 'Stmt_Enum->scalarType' => $stripColon,
- 'Stmt_EnumCase->expr' => $stripEquals,
- 'Expr_PrintableNewAnonClass->extends' => ['left' => \T_EXTENDS],
- 'Stmt_Continue->num' => $stripBoth,
- 'Stmt_Foreach->keyVar' => $stripDoubleArrow,
- 'Stmt_Function->returnType' => $stripColon,
- 'Stmt_If->else' => $stripLeft,
- 'Stmt_Namespace->name' => $stripLeft,
- 'Stmt_Property->type' => $stripRight,
- 'Stmt_PropertyProperty->default' => $stripEquals,
- 'Stmt_Return->expr' => $stripBoth,
- 'Stmt_StaticVar->default' => $stripEquals,
- 'Stmt_TraitUseAdaptation_Alias->newName' => $stripLeft,
- 'Stmt_TryCatch->finally' => $stripLeft,
- // 'Stmt_Case->cond': Replace with "default"
- // 'Stmt_Class->name': Unclear what to do
- // 'Stmt_Declare->stmts': Not a plain node
- // 'Stmt_TraitUseAdaptation_Alias->newModifier': Not a plain node
- ];
- }
-
- protected function initializeInsertionMap() {
- if ($this->insertionMap) return;
-
- // TODO: "yield" where both key and value are inserted doesn't work
- // [$find, $beforeToken, $extraLeft, $extraRight]
- $this->insertionMap = [
- 'Expr_ArrayDimFetch->dim' => ['[', false, null, null],
- 'Expr_ArrayItem->key' => [null, false, null, ' => '],
- 'Expr_ArrowFunction->returnType' => [')', false, ' : ', null],
- 'Expr_Closure->returnType' => [')', false, ' : ', null],
- 'Expr_Ternary->if' => ['?', false, ' ', ' '],
- 'Expr_Yield->key' => [\T_YIELD, false, null, ' => '],
- 'Expr_Yield->value' => [\T_YIELD, false, ' ', null],
- 'Param->type' => [null, false, null, ' '],
- 'Param->default' => [null, false, ' = ', null],
- 'Stmt_Break->num' => [\T_BREAK, false, ' ', null],
- 'Stmt_Catch->var' => [null, false, ' ', null],
- 'Stmt_ClassMethod->returnType' => [')', false, ' : ', null],
- 'Stmt_Class->extends' => [null, false, ' extends ', null],
- 'Stmt_Enum->scalarType' => [null, false, ' : ', null],
- 'Stmt_EnumCase->expr' => [null, false, ' = ', null],
- 'Expr_PrintableNewAnonClass->extends' => [null, ' extends ', null],
- 'Stmt_Continue->num' => [\T_CONTINUE, false, ' ', null],
- 'Stmt_Foreach->keyVar' => [\T_AS, false, null, ' => '],
- 'Stmt_Function->returnType' => [')', false, ' : ', null],
- 'Stmt_If->else' => [null, false, ' ', null],
- 'Stmt_Namespace->name' => [\T_NAMESPACE, false, ' ', null],
- 'Stmt_Property->type' => [\T_VARIABLE, true, null, ' '],
- 'Stmt_PropertyProperty->default' => [null, false, ' = ', null],
- 'Stmt_Return->expr' => [\T_RETURN, false, ' ', null],
- 'Stmt_StaticVar->default' => [null, false, ' = ', null],
- //'Stmt_TraitUseAdaptation_Alias->newName' => [T_AS, false, ' ', null], // TODO
- 'Stmt_TryCatch->finally' => [null, false, ' ', null],
-
- // 'Expr_Exit->expr': Complicated due to optional ()
- // 'Stmt_Case->cond': Conversion from default to case
- // 'Stmt_Class->name': Unclear
- // 'Stmt_Declare->stmts': Not a proper node
- // 'Stmt_TraitUseAdaptation_Alias->newModifier': Not a proper node
- ];
- }
-
- protected function initializeListInsertionMap() {
- if ($this->listInsertionMap) return;
-
- $this->listInsertionMap = [
- // special
- //'Expr_ShellExec->parts' => '', // TODO These need to be treated more carefully
- //'Scalar_Encapsed->parts' => '',
- 'Stmt_Catch->types' => '|',
- 'UnionType->types' => '|',
- 'IntersectionType->types' => '&',
- 'Stmt_If->elseifs' => ' ',
- 'Stmt_TryCatch->catches' => ' ',
-
- // comma-separated lists
- 'Expr_Array->items' => ', ',
- 'Expr_ArrowFunction->params' => ', ',
- 'Expr_Closure->params' => ', ',
- 'Expr_Closure->uses' => ', ',
- 'Expr_FuncCall->args' => ', ',
- 'Expr_Isset->vars' => ', ',
- 'Expr_List->items' => ', ',
- 'Expr_MethodCall->args' => ', ',
- 'Expr_NullsafeMethodCall->args' => ', ',
- 'Expr_New->args' => ', ',
- 'Expr_PrintableNewAnonClass->args' => ', ',
- 'Expr_StaticCall->args' => ', ',
- 'Stmt_ClassConst->consts' => ', ',
- 'Stmt_ClassMethod->params' => ', ',
- 'Stmt_Class->implements' => ', ',
- 'Stmt_Enum->implements' => ', ',
- 'Expr_PrintableNewAnonClass->implements' => ', ',
- 'Stmt_Const->consts' => ', ',
- 'Stmt_Declare->declares' => ', ',
- 'Stmt_Echo->exprs' => ', ',
- 'Stmt_For->init' => ', ',
- 'Stmt_For->cond' => ', ',
- 'Stmt_For->loop' => ', ',
- 'Stmt_Function->params' => ', ',
- 'Stmt_Global->vars' => ', ',
- 'Stmt_GroupUse->uses' => ', ',
- 'Stmt_Interface->extends' => ', ',
- 'Stmt_Match->arms' => ', ',
- 'Stmt_Property->props' => ', ',
- 'Stmt_StaticVar->vars' => ', ',
- 'Stmt_TraitUse->traits' => ', ',
- 'Stmt_TraitUseAdaptation_Precedence->insteadof' => ', ',
- 'Stmt_Unset->vars' => ', ',
- 'Stmt_Use->uses' => ', ',
- 'MatchArm->conds' => ', ',
- 'AttributeGroup->attrs' => ', ',
-
- // statement lists
- 'Expr_Closure->stmts' => "\n",
- 'Stmt_Case->stmts' => "\n",
- 'Stmt_Catch->stmts' => "\n",
- 'Stmt_Class->stmts' => "\n",
- 'Stmt_Enum->stmts' => "\n",
- 'Expr_PrintableNewAnonClass->stmts' => "\n",
- 'Stmt_Interface->stmts' => "\n",
- 'Stmt_Trait->stmts' => "\n",
- 'Stmt_ClassMethod->stmts' => "\n",
- 'Stmt_Declare->stmts' => "\n",
- 'Stmt_Do->stmts' => "\n",
- 'Stmt_ElseIf->stmts' => "\n",
- 'Stmt_Else->stmts' => "\n",
- 'Stmt_Finally->stmts' => "\n",
- 'Stmt_Foreach->stmts' => "\n",
- 'Stmt_For->stmts' => "\n",
- 'Stmt_Function->stmts' => "\n",
- 'Stmt_If->stmts' => "\n",
- 'Stmt_Namespace->stmts' => "\n",
- 'Stmt_Class->attrGroups' => "\n",
- 'Stmt_Enum->attrGroups' => "\n",
- 'Stmt_EnumCase->attrGroups' => "\n",
- 'Stmt_Interface->attrGroups' => "\n",
- 'Stmt_Trait->attrGroups' => "\n",
- 'Stmt_Function->attrGroups' => "\n",
- 'Stmt_ClassMethod->attrGroups' => "\n",
- 'Stmt_ClassConst->attrGroups' => "\n",
- 'Stmt_Property->attrGroups' => "\n",
- 'Expr_PrintableNewAnonClass->attrGroups' => ' ',
- 'Expr_Closure->attrGroups' => ' ',
- 'Expr_ArrowFunction->attrGroups' => ' ',
- 'Param->attrGroups' => ' ',
- 'Stmt_Switch->cases' => "\n",
- 'Stmt_TraitUse->adaptations' => "\n",
- 'Stmt_TryCatch->stmts' => "\n",
- 'Stmt_While->stmts' => "\n",
-
- // dummy for top-level context
- 'File->stmts' => "\n",
- ];
- }
-
- protected function initializeEmptyListInsertionMap() {
- if ($this->emptyListInsertionMap) return;
-
- // TODO Insertion into empty statement lists.
-
- // [$find, $extraLeft, $extraRight]
- $this->emptyListInsertionMap = [
- 'Expr_ArrowFunction->params' => ['(', '', ''],
- 'Expr_Closure->uses' => [')', ' use(', ')'],
- 'Expr_Closure->params' => ['(', '', ''],
- 'Expr_FuncCall->args' => ['(', '', ''],
- 'Expr_MethodCall->args' => ['(', '', ''],
- 'Expr_NullsafeMethodCall->args' => ['(', '', ''],
- 'Expr_New->args' => ['(', '', ''],
- 'Expr_PrintableNewAnonClass->args' => ['(', '', ''],
- 'Expr_PrintableNewAnonClass->implements' => [null, ' implements ', ''],
- 'Expr_StaticCall->args' => ['(', '', ''],
- 'Stmt_Class->implements' => [null, ' implements ', ''],
- 'Stmt_Enum->implements' => [null, ' implements ', ''],
- 'Stmt_ClassMethod->params' => ['(', '', ''],
- 'Stmt_Interface->extends' => [null, ' extends ', ''],
- 'Stmt_Function->params' => ['(', '', ''],
-
- /* These cannot be empty to start with:
- * Expr_Isset->vars
- * Stmt_Catch->types
- * Stmt_Const->consts
- * Stmt_ClassConst->consts
- * Stmt_Declare->declares
- * Stmt_Echo->exprs
- * Stmt_Global->vars
- * Stmt_GroupUse->uses
- * Stmt_Property->props
- * Stmt_StaticVar->vars
- * Stmt_TraitUse->traits
- * Stmt_TraitUseAdaptation_Precedence->insteadof
- * Stmt_Unset->vars
- * Stmt_Use->uses
- * UnionType->types
- */
-
- /* TODO
- * Stmt_If->elseifs
- * Stmt_TryCatch->catches
- * Expr_Array->items
- * Expr_List->items
- * Stmt_For->init
- * Stmt_For->cond
- * Stmt_For->loop
- */
- ];
- }
-
- protected function initializeModifierChangeMap() {
- if ($this->modifierChangeMap) return;
-
- $this->modifierChangeMap = [
- 'Stmt_ClassConst->flags' => \T_CONST,
- 'Stmt_ClassMethod->flags' => \T_FUNCTION,
- 'Stmt_Class->flags' => \T_CLASS,
- 'Stmt_Property->flags' => \T_VARIABLE,
- 'Param->flags' => \T_VARIABLE,
- //'Stmt_TraitUseAdaptation_Alias->newModifier' => 0, // TODO
- ];
-
- // List of integer subnodes that are not modifiers:
- // Expr_Include->type
- // Stmt_GroupUse->type
- // Stmt_Use->type
- // Stmt_UseUse->type
- }
-}
diff --git a/vendor/pguardiario/phpuri/README.md b/vendor/pguardiario/phpuri/README.md
deleted file mode 100644
index bf4cb63b..00000000
--- a/vendor/pguardiario/phpuri/README.md
+++ /dev/null
@@ -1,18 +0,0 @@
-Phpuri
-=========
-
-A php library for converting relative urls to absolute.
-
-```php
-require 'phpuri.php';
-echo phpUri::parse('https://www.google.com/')->join('foo');
-//==> https://www.google.com/foo
-```
-
-### Benchmark
-
-php test.php
-rel2abs: successes -> 26, failures => 9, elapsed time: 0.001301
-url_to_absolute: successes -> 32, failures => 3, elapsed time: 0.0029089999999999
-phpuri: successes -> 35, failures => 0, elapsed time: 0.002402
-
\ No newline at end of file
diff --git a/vendor/pguardiario/phpuri/composer.json b/vendor/pguardiario/phpuri/composer.json
deleted file mode 100644
index e1d1fbc7..00000000
--- a/vendor/pguardiario/phpuri/composer.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "name": "pguardiario/phpuri",
- "type": "project",
- "version": "1.0",
- "description": "A php library for converting relative urls to absolute.",
- "autoload" : {
- "files": [
- "phpuri.php"
- ]
- }
-}
diff --git a/vendor/pguardiario/phpuri/phpuri.php b/vendor/pguardiario/phpuri/phpuri.php
deleted file mode 100644
index 75c9bf52..00000000
--- a/vendor/pguardiario/phpuri/phpuri.php
+++ /dev/null
@@ -1,197 +0,0 @@
-
- * echo phpUri::parse('https://www.google.com/')->join('foo');
- * //==> https://www.google.com/foo
- *
- *
- * Licensed under The MIT License
- * Redistributions of files must retain the above copyright notice.
- *
- * @author P Guardiario
- * @version 1.0
- */
-
- /**
- * phpUri
- */
- class phpUri
- {
-
- /**
- * http(s)://
- * @var string
- */
- public $scheme;
-
- /**
- * www.example.com
- * @var string
- */
- public $authority;
-
- /**
- * /search
- * @var string
- */
- public $path;
-
- /**
- * ?q=foo
- * @var string
- */
- public $query;
-
- /**
- * #bar
- * @var string
- */
- public $fragment;
-
- private function __construct( $string )
- {
- preg_match_all( '/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/', $string, $m );
- $this->scheme = $m[ 2 ][ 0 ];
- $this->authority = $m[ 4 ][ 0 ];
-
- /**
- * CHANGE:
- * @author Dominik Habichtsberg
- * @since 24 Mai 2015 10:02 Uhr
- *
- * Former code: $this->path = ( empty( $m[ 5 ][ 0 ] ) ) ? '/' : $m[ 5 ][ 0 ];
- * No tests failed, when the path is empty.
- * With the former code, the relative urls //g and #s failed
- */
- $this->path = $m[ 5 ][ 0 ];
- $this->query = $m[ 7 ][ 0 ];
- $this->fragment = $m[ 9 ][ 0 ];
- }
-
- private function to_str()
- {
- $ret = '';
- if ( !empty( $this->scheme ) )
- {
- $ret .= "{$this->scheme}:";
- }
-
- if ( !empty( $this->authority ) )
- {
- $ret .= "//{$this->authority}";
- }
-
- $ret .= $this->normalize_path( $this->path );
-
- if ( !empty( $this->query ) )
- {
- $ret .= "?{$this->query}";
- }
-
- if ( !empty( $this->fragment ) )
- {
- $ret .= "#{$this->fragment}";
- }
-
- return $ret;
- }
-
- private function normalize_path( $path )
- {
- if ( empty( $path ) )
- {
- return '';
- }
-
- $normalized_path = $path;
- $normalized_path = preg_replace( '`//+`', '/', $normalized_path, -1, $c0 );
- $normalized_path = preg_replace( '`^/\\.\\.?/`', '/', $normalized_path, -1, $c1 );
- $normalized_path = preg_replace( '`/\\.(/|$)`', '/', $normalized_path, -1, $c2 );
-
- /**
- * CHANGE:
- * @author Dominik Habichtsberg
- * @since 24 Mai 2015 10:05 Uhr
- * changed limit form -1 to 1, because climbing up the directory-tree failed
- */
- $normalized_path = preg_replace( '`/[^/]*?/\\.\\.(/|$)`', '/', $normalized_path, 1, $c3 );
- $num_matches = $c0 + $c1 + $c2 + $c3;
-
- return ( $num_matches > 0 ) ? $this->normalize_path( $normalized_path ) : $normalized_path;
- }
-
- /**
- * Parse an url string
- *
- * @param string $url the url to parse
- *
- * @return phpUri
- */
- public static function parse( $url )
- {
- $uri = new phpUri( $url );
-
- return $uri;
- }
-
- /**
- * Join with a relative url
- *
- * @param string $relative the relative url to join
- *
- * @return string
- */
- public function join( $relative )
- {
- $uri = new phpUri( $relative );
- switch ( TRUE )
- {
- case !empty( $uri->scheme ):
- break;
-
- case !empty( $uri->authority ):
- break;
-
- case empty( $uri->path ):
- $uri->path = $this->path;
- if ( empty( $uri->query ) )
- {
- $uri->query = $this->query;
- }
- break;
-
- case strpos( $uri->path, '/' ) === 0:
- break;
-
- default:
- $base_path = $this->path;
- if ( strpos( $base_path, '/' ) === FALSE )
- {
- $base_path = '';
- }
- else
- {
- $base_path = preg_replace( '/\/[^\/]+$/', '/', $base_path );
- }
- if ( empty( $base_path ) && empty( $this->authority ) )
- {
- $base_path = '/';
- }
- $uri->path = $base_path . $uri->path;
- }
-
- if ( empty( $uri->scheme ) )
- {
- $uri->scheme = $this->scheme;
- if ( empty( $uri->authority ) )
- {
- $uri->authority = $this->authority;
- }
- }
-
- return $uri->to_str();
- }
- }
\ No newline at end of file
diff --git a/vendor/phan/phan/.azure/job.yml b/vendor/phan/phan/.azure/job.yml
deleted file mode 100644
index db6d680f..00000000
--- a/vendor/phan/phan/.azure/job.yml
+++ /dev/null
@@ -1,52 +0,0 @@
-parameters:
- configurationName: ''
- phpVersion: ''
-
-# A reference for testing PECL extensions using azure can be seen at https://github.com/microsoft/msphpsql/blob/master/azure-pipelines.yml
-# (that extension also runs unit tests on Windows/Macs)
-jobs:
- - job: ${{ parameters.configurationName }}
- # NOTE: This currently does not use containers. Doing so may be useful for testing on php zts/32-bit.
- # Containers need to provide sudo apt-get in order to work, the php:x-cli images don't.
- # Containers are slower to start up than the default vm images
- pool:
- vmImage: ${{ parameters.vmImage }}
- steps:
- - script: |
- VER=${{ parameters.phpVersion }}
- # Refresh the cache for the PPA repository, it can be out of date if it's updated recently
- if [[ ! -f /usr/bin/phpize$VER ]]; then
- sudo add-apt-repository -u ppa:ondrej/php
- fi
- # Silently try to install the php version if it's available.
- # ondrej/php is a minimal install for php 8.0.
- sudo apt-get install -y php$VER php$VER-dev php$VER-xml php$VER-mbstring
- sudo update-alternatives --set php /usr/bin/php$VER
- # Fail the build early if the php version isn't installed on this image
- sudo update-alternatives --set phpize /usr/bin/phpize$VER || exit 1
- sudo update-alternatives --set pecl /usr/bin/pecl$VER
- sudo update-alternatives --set phar /usr/bin/phar$VER
- sudo update-alternatives --set phpdbg /usr/bin/phpdbg$VER
- sudo update-alternatives --set php-cgi /usr/bin/php-cgi$VER
- sudo update-alternatives --set phar.phar /usr/bin/phar.phar$VER
- sudo update-alternatives --set php-config /usr/bin/php-config$VER
- displayName: Use PHP version ${{ parameters.phpVersion }}
- - script: |
- VER=${{ parameters.phpVersion }}
- CONF_DIR=/etc/php/$VER/cli/conf.d
-
- sudo pecl install ast-1.0.14
- php --version
- sudo rm -f $CONF_DIR/*xdebug.ini
- echo 'extension=ast.so' | sudo tee $CONF_DIR/20-ast.ini
- php -m
- php --ini
-
- composer validate
- composer --prefer-dist --classmap-authoritative install
- pushd internal/paratest; composer --prefer-dist --classmap-authoritative install; popd
- displayName: 'Install dependencies'
- - script: |
- tests/run_all_tests || exit 1
- php -d phar.readonly=0 internal/package.php || exit 1
- displayName: 'Test phan'
diff --git a/vendor/phan/phan/.dockerignore b/vendor/phan/phan/.dockerignore
deleted file mode 100644
index 8c458950..00000000
--- a/vendor/phan/phan/.dockerignore
+++ /dev/null
@@ -1,28 +0,0 @@
-.git/
-internal/PHP_CodeSniffer
-tests/docker
-tests/run_all_tests_dockerized
-.git
-vendor
-.phan/data
-composer.phar
-\#*#
-build
-report
-samples
-all_output.*
-.vscode/
-*.joblog
-*.swo
-*.swp
-*.zip
-tags
-.phan/config.local.php
-nohup.out
-*.md.new
-.idea/
-src_copy
-out/
-phpspy.*
-.phpunit.result.cache
-errors.txt
diff --git a/vendor/phan/phan/.phan/baseline.php.example b/vendor/phan/phan/.phan/baseline.php.example
deleted file mode 100644
index 02dae031..00000000
--- a/vendor/phan/phan/.phan/baseline.php.example
+++ /dev/null
@@ -1,21 +0,0 @@
- [
- '.phan/plugins/DuplicateExpressionPlugin.php' => ['PhanTypeMismatchArgumentInternal'],
- ],
- // 'directory_suppressions' => ['src/directory_name' => ['PhanIssueNames']] can be manually added if needed.
- // (directory_suppressions will currently be ignored by subsequent calls to --save-baseline, but may be preserved in future Phan releases)
-];
diff --git a/vendor/phan/phan/.phan/bin/mkfilelist b/vendor/phan/phan/.phan/bin/mkfilelist
deleted file mode 100755
index deb8b018..00000000
--- a/vendor/phan/phan/.phan/bin/mkfilelist
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash
-
-if [[ -z $WORKSPACE ]]
-then
- export WORKSPACE=.
-fi
-cd $WORKSPACE
-
-for dir in \
- src \
- tests/Phan \
- vendor/phpunit/phpunit/src vendor/symfony/console
-do
- if [ -d "$dir" ]; then
- find $dir -name '*.php'
- fi
-done
diff --git a/vendor/phan/phan/.phan/bin/phan b/vendor/phan/phan/.phan/bin/phan
deleted file mode 100755
index b25f6e89..00000000
--- a/vendor/phan/phan/.phan/bin/phan
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/sh
-
-# Root directory of project
-export ROOT=`git rev-parse --show-toplevel`
-
-# Phan's directory for executables
-export BIN=$ROOT/.phan/bin
-
-# Phan's data directory
-export DATA=$ROOT/.phan/data
-mkdir -p $DATA;
-
-# Go to the root of this git repo
-pushd $ROOT > /dev/null
-
- # Get the current hash of HEAD
- export REV=`git rev-parse HEAD`
-
- # Create the data directory for this run if it
- # doesn't exist yet
- export RUN=$DATA/$REV
- mkdir -p $RUN
-
- $BIN/mkfilelist > $RUN/files
-
- # Run the analysis, emitting output to the console
- # and using a previous state file.
- phan \
- --progress-bar \
- --project-root-directory $ROOT \
- --output $RUN/issues && exit $?
-
- # Re-link the latest directory
- rm -f $ROOT/.phan/data/latest
- ln -s $RUN $DATA/latest
-
- # Output any issues that were found
- cat $RUN/issues
-
-popd > /dev/null
diff --git a/vendor/phan/phan/.phan/config.php b/vendor/phan/phan/.phan/config.php
deleted file mode 100644
index bfc393ab..00000000
--- a/vendor/phan/phan/.phan/config.php
+++ /dev/null
@@ -1,679 +0,0 @@
- null,
-
- // The PHP version that will be used for feature/syntax compatibility warnings.
- // Supported values: `'5.6'`, `'7.0'`, `'7.1'`, `'7.2'`, `'7.3'`, `'7.4'`,
- // `'8.0'`, `'8.1'`, `null`.
- // If this is set to `null`, Phan will first attempt to infer the value from
- // the project's composer.json's `{"require": {"php": "version range"}}` if possible.
- // If that could not be determined, then Phan assumes `target_php_version`.
- //
- // For analyzing Phan 3.x, this is determined to be `'7.2'` from `"version": "^7.2.0"`.
- 'minimum_target_php_version' => '7.2',
-
- // Default: true. If this is set to true,
- // and target_php_version is newer than the version used to run Phan,
- // Phan will act as though functions added in newer PHP versions exist.
- //
- // NOTE: Currently, this only affects Closure::fromCallable
- 'pretend_newer_core_functions_exist' => true,
-
- // If true, missing properties will be created when
- // they are first seen. If false, we'll report an
- // error message.
- 'allow_missing_properties' => false,
-
- // Allow null to be cast as any type and for any
- // type to be cast to null.
- 'null_casts_as_any_type' => false,
-
- // Allow null to be cast as any array-like type
- // This is an incremental step in migrating away from null_casts_as_any_type.
- // If null_casts_as_any_type is true, this has no effect.
- 'null_casts_as_array' => false,
-
- // Allow any array-like type to be cast to null.
- // This is an incremental step in migrating away from null_casts_as_any_type.
- // If null_casts_as_any_type is true, this has no effect.
- 'array_casts_as_null' => false,
-
- // If enabled, Phan will warn if **any** type in a method invocation's object
- // is definitely not an object,
- // or if **any** type in an invoked expression is not a callable.
- // Setting this to true will introduce numerous false positives
- // (and reveal some bugs).
- 'strict_method_checking' => true,
-
- // If enabled, Phan will warn if **any** type in the argument's union type
- // cannot be cast to a type in the parameter's expected union type.
- // Setting this to true will introduce numerous false positives
- // (and reveal some bugs).
- 'strict_param_checking' => true,
-
- // If enabled, Phan will warn if **any** type in a property assignment's union type
- // cannot be cast to a type in the property's declared union type.
- // Setting this to true will introduce numerous false positives
- // (and reveal some bugs).
- // (For self-analysis, Phan has a large number of suppressions and file-level suppressions, due to \ast\Node being difficult to type check)
- 'strict_property_checking' => true,
-
- // If enabled, Phan will warn if **any** type in a returned value's union type
- // cannot be cast to the declared return type.
- // Setting this to true will introduce numerous false positives
- // (and reveal some bugs).
- // (For self-analysis, Phan has a large number of suppressions and file-level suppressions, due to \ast\Node being difficult to type check)
- 'strict_return_checking' => true,
-
- // If enabled, Phan will warn if **any** type of the object expression for a property access
- // does not contain that property.
- 'strict_object_checking' => true,
-
- // If enabled, scalars (int, float, bool, string, null)
- // are treated as if they can cast to each other.
- // This does not affect checks of array keys. See `scalar_array_key_cast`.
- 'scalar_implicit_cast' => false,
-
- // If enabled, any scalar array keys (int, string)
- // are treated as if they can cast to each other.
- // E.g. `array` can cast to `array` and vice versa.
- // Normally, a scalar type such as int could only cast to/from int and mixed.
- 'scalar_array_key_cast' => false,
-
- // If this has entries, scalars (int, float, bool, string, null)
- // are allowed to perform the casts listed.
- //
- // E.g. `['int' => ['float', 'string'], 'float' => ['int'], 'string' => ['int'], 'null' => ['string']]`
- // allows casting null to a string, but not vice versa.
- // (subset of `scalar_implicit_cast`)
- 'scalar_implicit_partial' => [],
-
- // If true, Phan will convert the type of a possibly undefined array offset to the nullable, defined equivalent.
- // If false, Phan will convert the type of a possibly undefined array offset to the defined equivalent (without converting to nullable).
- 'convert_possibly_undefined_offset_to_nullable' => false,
-
- // If true, seemingly undeclared variables in the global
- // scope will be ignored.
- //
- // This is useful for projects with complicated cross-file
- // globals that you have no hope of fixing.
- 'ignore_undeclared_variables_in_global_scope' => false,
-
- // Backwards Compatibility Checking (This is very slow)
- 'backward_compatibility_checks' => false,
-
- // If true, check to make sure the return type declared
- // in the doc-block (if any) matches the return type
- // declared in the method signature.
- 'check_docblock_signature_return_type_match' => true,
-
- // If true, check to make sure the param types declared
- // in the doc-block (if any) matches the param types
- // declared in the method signature.
- 'check_docblock_signature_param_type_match' => true,
-
- // If true, make narrowed types from phpdoc params override
- // the real types from the signature, when real types exist.
- // (E.g. allows specifying desired lists of subclasses,
- // or to indicate a preference for non-nullable types over nullable types)
- //
- // Affects analysis of the body of the method and the param types passed in by callers.
- //
- // (*Requires `check_docblock_signature_param_type_match` to be true*)
- 'prefer_narrowed_phpdoc_param_type' => true,
-
- // (*Requires `check_docblock_signature_return_type_match` to be true*)
- //
- // If true, make narrowed types from phpdoc returns override
- // the real types from the signature, when real types exist.
- //
- // (E.g. allows specifying desired lists of subclasses,
- // or to indicate a preference for non-nullable types over nullable types)
- // Affects analysis of return statements in the body of the method and the return types passed in by callers.
- 'prefer_narrowed_phpdoc_return_type' => true,
-
- // If enabled, check all methods that override a
- // parent method to make sure its signature is
- // compatible with the parent's. This check
- // can add quite a bit of time to the analysis.
- // This will also check if final methods are overridden, etc.
- 'analyze_signature_compatibility' => true,
-
- // Set this to true to make Phan guess that undocumented parameter types
- // (for optional parameters) have the same type as default values
- // (Instead of combining that type with `mixed`).
- // E.g. `function($x = 'val')` would make Phan infer that $x had a type of `string`, not `string|mixed`.
- // Phan will not assume it knows specific types if the default value is false or null.
- 'guess_unknown_parameter_type_using_default' => false,
-
- // Allow adding types to vague return types such as @return object, @return ?mixed in function/method/closure union types.
- // Normally, Phan only adds inferred returned types when there is no `@return` type or real return type signature..
- // This setting can be disabled on individual methods by adding `@phan-hardcode-return-type` to the doc comment.
- //
- // Disabled by default. This is more useful with `--analyze-twice`.
- 'allow_overriding_vague_return_types' => true,
-
- // When enabled, infer that the types of the properties of `$this` are equal to their default values at the start of `__construct()`.
- // This will have some false positives due to Phan not checking for setters and initializing helpers.
- // This does not affect inherited properties.
- 'infer_default_properties_in_construct' => true,
-
- // Set this to true to enable the plugins that Phan uses to infer more accurate return types of `implode`, `json_decode`, and many other functions.
- //
- // Phan is slightly faster when these are disabled.
- 'enable_extended_internal_return_type_plugins' => true,
-
- // This setting maps case-insensitive strings to union types.
- //
- // This is useful if a project uses phpdoc that differs from the phpdoc2 standard.
- //
- // If the corresponding value is the empty string,
- // then Phan will ignore that union type (E.g. can ignore 'the' in `@return the value`)
- //
- // If the corresponding value is not empty,
- // then Phan will act as though it saw the corresponding UnionTypes(s)
- // when the keys show up in a UnionType of `@param`, `@return`, `@var`, `@property`, etc.
- //
- // This matches the **entire string**, not parts of the string.
- // (E.g. `@return the|null` will still look for a class with the name `the`, but `@return the` will be ignored with the below setting)
- //
- // (These are not aliases, this setting is ignored outside of doc comments).
- // (Phan does not check if classes with these names exist)
- //
- // Example setting: `['unknown' => '', 'number' => 'int|float', 'char' => 'string', 'long' => 'int', 'the' => '']`
- 'phpdoc_type_mapping' => [ ],
-
- // Set to true in order to attempt to detect dead
- // (unreferenced) code. Keep in mind that the
- // results will only be a guess given that classes,
- // properties, constants and methods can be referenced
- // as variables (like `$class->$property` or
- // `$class->$method()`) in ways that we're unable
- // to make sense of.
- //
- // To more aggressively detect dead code,
- // you may want to set `dead_code_detection_prefer_false_negative` to `false`.
- 'dead_code_detection' => false,
-
- // Set to true in order to attempt to detect unused variables.
- // `dead_code_detection` will also enable unused variable detection.
- //
- // This has a few known false positives, e.g. for loops or branches.
- 'unused_variable_detection' => true,
-
- // Set to true in order to force tracking references to elements
- // (functions/methods/consts/protected).
- // dead_code_detection is another option which also causes references
- // to be tracked.
- 'force_tracking_references' => false,
-
- // Set to true in order to attempt to detect redundant and impossible conditions.
- //
- // This has some false positives involving loops,
- // variables set in branches of loops, and global variables.
- 'redundant_condition_detection' => true,
-
- // Set to true in order to attempt to detect error-prone truthiness/falsiness checks.
- //
- // This is not suitable for all codebases.
- 'error_prone_truthy_condition_detection' => true,
-
- // Enable this to warn about harmless redundant use for classes and namespaces such as `use Foo\bar` in namespace Foo.
- //
- // Note: This does not affect warnings about redundant uses in the global namespace.
- 'warn_about_redundant_use_namespaced_class' => true,
-
- // If true, then run a quick version of checks that takes less time.
- // False by default.
- 'quick_mode' => false,
-
- // If true, then before analysis, try to simplify AST into a form
- // which improves Phan's type inference in edge cases.
- //
- // This may conflict with 'dead_code_detection'.
- // When this is true, this slows down analysis slightly.
- //
- // E.g. rewrites `if ($a = value() && $a > 0) {...}`
- // into $a = value(); if ($a) { if ($a > 0) {...}}`
- 'simplify_ast' => true,
-
- // If true, Phan will read `class_alias` calls in the global scope,
- // then (1) create aliases from the *parsed* files if no class definition was found,
- // and (2) emit issues in the global scope if the source or target class is invalid.
- // (If there are multiple possible valid original classes for an aliased class name,
- // the one which will be created is unspecified.)
- // NOTE: THIS IS EXPERIMENTAL, and the implementation may change.
- 'enable_class_alias_support' => false,
-
- // Enable or disable support for generic templated
- // class types.
- 'generic_types_enabled' => true,
-
- // If enabled, warn about throw statement where the exception types
- // are not documented in the PHPDoc of functions, methods, and closures.
- 'warn_about_undocumented_throw_statements' => true,
-
- // If enabled (and warn_about_undocumented_throw_statements is enabled),
- // warn about function/closure/method calls that have (at)throws
- // without the invoking method documenting that exception.
- 'warn_about_undocumented_exceptions_thrown_by_invoked_functions' => true,
-
- // If this is a list, Phan will not warn about lack of documentation of (at)throws
- // for any of the listed classes or their subclasses.
- // This setting only matters when warn_about_undocumented_throw_statements is true.
- // The default is the empty array (Warn about every kind of Throwable)
- 'exception_classes_with_optional_throws_phpdoc' => [
- 'LogicException',
- 'RuntimeException',
- 'InvalidArgumentException',
- 'AssertionError',
- 'TypeError',
- 'Phan\Exception\IssueException', // TODO: Make Phan aware that some arguments suppress certain issues
- 'Phan\AST\TolerantASTConverter\InvalidNodeException', // This is used internally in TolerantASTConverter
-
- // TODO: Undo the suppressions for the below categories of issues:
- 'Phan\Exception\CodeBaseException',
- // phpunit
- 'PHPUnit\Framework\ExpectationFailedException',
- 'SebastianBergmann\RecursionContext\InvalidArgumentException',
- ],
-
- // Increase this to properly analyze require_once statements
- 'max_literal_string_type_length' => 1000,
-
- // Setting this to true makes the process assignment for file analysis
- // as predictable as possible, using consistent hashing.
- // Even if files are added or removed, or process counts change,
- // relatively few files will move to a different group.
- // (use when the number of files is much larger than the process count)
- // NOTE: If you rely on Phan parsing files/directories in the order
- // that they were provided in this config, don't use this)
- // See https://github.com/phan/phan/wiki/Different-Issue-Sets-On-Different-Numbers-of-CPUs
- 'consistent_hashing_file_order' => false,
-
- // If enabled, Phan will act as though it's certain of real return types of a subset of internal functions,
- // even if those return types aren't available in reflection (real types were taken from php 7.3 or 8.0-dev, depending on target_php_version).
- //
- // Note that with php 7 and earlier, php would return null or false for many internal functions if the argument types or counts were incorrect.
- // As a result, enabling this setting with target_php_version 8.0 may result in false positives for `--redundant-condition-detection` when codebases also support php 7.x.
- 'assume_real_types_for_internal_functions' => true,
-
- // Override to hardcode existence and types of (non-builtin) globals.
- // Class names should be prefixed with '\\'.
- // (E.g. ['_FOO' => '\\FooClass', 'page' => '\\PageClass', 'userId' => 'int'])
- 'globals_type_map' => [],
-
- // The minimum severity level to report on. This can be
- // set to Issue::SEVERITY_LOW, Issue::SEVERITY_NORMAL or
- // Issue::SEVERITY_CRITICAL.
- 'minimum_severity' => Issue::SEVERITY_LOW,
-
- // Add any issue types (such as `'PhanUndeclaredMethod'`)
- // to this list to inhibit them from being reported.
- 'suppress_issue_types' => [
- 'PhanUnreferencedClosure', // False positives seen with closures in arrays, TODO: move closure checks closer to what is done by unused variable plugin
- 'PhanPluginNoCommentOnProtectedMethod',
- 'PhanPluginDescriptionlessCommentOnProtectedMethod',
- 'PhanPluginNoCommentOnPrivateMethod',
- 'PhanPluginDescriptionlessCommentOnPrivateMethod',
- 'PhanPluginDescriptionlessCommentOnPrivateProperty',
- // TODO: Fix edge cases in --automatic-fix for PhanPluginRedundantClosureComment
- 'PhanPluginRedundantClosureComment',
- 'PhanPluginPossiblyStaticPublicMethod',
- 'PhanPluginPossiblyStaticProtectedMethod',
- // The types of ast\Node->children are all possibly unset.
- 'PhanTypePossiblyInvalidDimOffset',
- // TODO: Fix PhanParamNameIndicatingUnusedInClosure instances (low priority)
- 'PhanParamNameIndicatingUnusedInClosure',
- ],
-
- // If this list is empty, no filter against issues types will be applied.
- // If this list is non-empty, only issues within the list
- // will be emitted by Phan.
- //
- // See https://github.com/phan/phan/wiki/Issue-Types-Caught-by-Phan
- // for the full list of issues that Phan detects.
- //
- // Phan is capable of detecting hundreds of types of issues.
- // Projects should almost always use `suppress_issue_types` instead.
- 'whitelist_issue_types' => [
- // 'PhanUndeclaredClass',
- ],
-
- // A list of files to include in analysis
- 'file_list' => [
- 'phan',
- 'phan_client',
- 'plugins/codeclimate/engine',
- 'tool/make_stubs',
- 'tool/pdep',
- 'tool/phantasm',
- 'tool/phoogle',
- 'tool/phan_repl_helpers.php',
- 'internal/dump_fallback_ast.php',
- 'internal/dump_html_styles.php',
- 'internal/emit_signature_map_for_php_version.php',
- 'internal/extract_arg_info.php',
- 'internal/flatten_signature_map.php',
- 'internal/internalsignatures.php',
- 'internal/line_deleter.php',
- 'internal/package.php',
- 'internal/reflection_completeness_check.php',
- 'internal/sanitycheck.php',
- 'internal/sort_signature_map.php',
- 'vendor/phpdocumentor/type-resolver/src/Types/ContextFactory.php',
- 'vendor/phpdocumentor/reflection-docblock/src/DocBlockFactory.php',
- 'vendor/phpdocumentor/reflection-docblock/src/DocBlock.php',
- // 'vendor/phpunit/phpunit/src/Framework/TestCase.php',
- ],
-
- // A regular expression to match files to be excluded
- // from parsing and analysis and will not be read at all.
- //
- // This is useful for excluding groups of test or example
- // directories/files, unanalyzable files, or files that
- // can't be removed for whatever reason.
- // (e.g. '@Test\.php$@', or '@vendor/.*/(tests|Tests)/@')
- 'exclude_file_regex' => '@^vendor/.*/(tests?|Tests?)/@',
-
- // Enable this to enable checks of require/include statements referring to valid paths.
- 'enable_include_path_checks' => true,
-
- // A list of include paths to check when checking if `require_once`, `include`, etc. are valid.
- //
- // To refer to the directory of the file being analyzed, use `'.'`
- // To refer to the project root directory, you must use \Phan\Config::getProjectRootDirectory()
- //
- // (E.g. `['.', \Phan\Config::getProjectRootDirectory() . '/src/folder-added-to-include_path']`)
- 'include_paths' => ['.'],
-
- // Enable this to warn about the use of relative paths in `require_once`, `include`, etc.
- // Relative paths are harder to reason about, and opcache may have issues with relative paths in edge cases.
- 'warn_about_relative_include_statement' => true,
-
- // A list of files that will be excluded from parsing and analysis
- // and will not be read at all.
- //
- // This is useful for excluding hopelessly unanalyzable
- // files that can't be removed for whatever reason.
- 'exclude_file_list' => [
- 'internal/Sniffs/ValidUnderscoreVariableNameSniff.php',
- ],
-
- // The number of processes to fork off during the analysis
- // phase.
- 'processes' => 1,
-
- // A list of directories that should be parsed for class and
- // method information. After excluding the directories
- // defined in exclude_analysis_directory_list, the remaining
- // files will be statically analyzed for errors.
- //
- // Thus, both first-party and third-party code being used by
- // your application should be included in this list.
- 'directory_list' => [
- 'internal/lib',
- 'src',
- 'tests/Phan',
- 'vendor/composer/semver/src',
- 'vendor/composer/xdebug-handler/src',
- 'vendor/felixfbecker/advanced-json-rpc/lib',
- 'vendor/microsoft/tolerant-php-parser/src',
- 'vendor/netresearch/jsonmapper/src',
- 'vendor/phpunit/phpunit/src',
- 'vendor/psr/log/Psr',
- 'vendor/sabre/event/lib',
- 'vendor/symfony/console',
- 'vendor/symfony/polyfill-php80',
- 'vendor/tysonandre/var_representation_polyfill/src',
- '.phan/plugins',
- '.phan/stubs',
- ],
-
- // List of case-insensitive file extensions supported by Phan.
- // (e.g. php, html, htm)
- 'analyzed_file_extensions' => ['php'],
-
- // A directory list that defines files that will be excluded
- // from static analysis, but whose class and method
- // information should be included.
- //
- // Generally, you'll want to include the directories for
- // third-party code (such as 'vendor/') in this list.
- //
- // n.b.: If you'd like to parse but not analyze 3rd
- // party code, directories containing that code
- // should be added to the `directory_list` as
- // to `exclude_analysis_directory_list`.
- 'exclude_analysis_directory_list' => [
- 'vendor/'
- ],
-
- // By default, Phan will log error messages to stdout if PHP is using options that slow the analysis.
- // (e.g. PHP is compiled with `--enable-debug` or when using Xdebug)
- 'skip_slow_php_options_warning' => false,
-
- // You can put paths to internal stubs in this config option.
- // Phan will continue using its detailed type annotations, but load the constants, classes, functions, and classes (and their Reflection types) from these stub files (doubling as valid php files).
- // Use a different extension from php to avoid accidentally loading these.
- // The 'tool/mkstubs' script can be used to generate your own stubs (compatible with php 7.2+ right now)
- //
- // Also see `include_extension_subset` to configure Phan to analyze a codebase as if a certain extension is not available.
- 'autoload_internal_extension_signatures' => [
- 'ast' => '.phan/internal_stubs/ast.phan_php',
- 'ctype' => '.phan/internal_stubs/ctype.phan_php',
- 'igbinary' => '.phan/internal_stubs/igbinary.phan_php',
- 'mbstring' => '.phan/internal_stubs/mbstring.phan_php',
- 'pcntl' => '.phan/internal_stubs/pcntl.phan_php',
- 'phar' => '.phan/internal_stubs/phar.phan_php',
- 'posix' => '.phan/internal_stubs/posix.phan_php',
- 'readline' => '.phan/internal_stubs/readline.phan_php',
- 'simplexml' => '.phan/internal_stubs/simplexml.phan_php',
- 'sysvmsg' => '.phan/internal_stubs/sysvmsg.phan_php',
- 'sysvsem' => '.phan/internal_stubs/sysvsem.phan_php',
- 'sysvshm' => '.phan/internal_stubs/sysvshm.phan_php',
- ],
-
- // This can be set to a list of extensions to limit Phan to using the reflection information of.
- // If this is a list, then Phan will not use the reflection information of extensions outside of this list.
- // The extensions loaded for a given php installation can be seen with `php -m` or `get_loaded_extensions(true)`.
- //
- // Note that this will only prevent Phan from loading reflection information for extensions outside of this set.
- // If you want to add stubs, see `autoload_internal_extension_signatures`.
- //
- // If this is used, 'core', 'date', 'pcre', 'reflection', 'spl', and 'standard' will be automatically added.
- //
- // When this is an array, `ignore_undeclared_functions_with_known_signatures` will always be set to false.
- // (because many of those functions will be outside of the configured list)
- //
- // Also see `ignore_undeclared_functions_with_known_signatures` to warn about using unknown functions.
- // E.g. this is what Phan would use for self-analysis
- /*
- 'included_extension_subset' => [
- 'core',
- 'standard',
- 'filter',
- 'json',
- 'tokenizer', // parsing php code
- 'ast', // parsing php code
-
- 'ctype', // misc uses, also polyfilled
- 'dom', // checkstyle output format
- 'iconv', // symfony mbstring polyfill
- 'igbinary', // serializing/unserializing polyfilled ASTs
- 'libxml', // internal tools for extracting stubs
- 'mbstring', // utf-8 support
- 'pcntl', // daemon/language server and parallel analysis
- 'phar', // packaging
- 'posix', // parallel analysis
- 'readline', // internal debugging utility, rarely used
- 'simplexml', // report generation
- 'sysvmsg', // parallelism
- 'sysvsem',
- 'sysvshm',
- ],
- */
-
- // Set this to false to emit `PhanUndeclaredFunction` issues for internal functions that Phan has signatures for,
- // but aren't available in the codebase, or from Reflection.
- // (may lead to false positives if an extension isn't loaded)
- //
- // If this is true(default), then Phan will not warn.
- //
- // Even when this is false, Phan will still infer return values and check parameters of internal functions
- // if Phan has the signatures.
- 'ignore_undeclared_functions_with_known_signatures' => false,
-
- 'plugin_config' => [
- // A list of 1 or more PHP binaries (Absolute path or program name found in $PATH)
- // to use to analyze your files with PHP's native `--syntax-check`.
- //
- // This can be used to simultaneously run PHP's syntax checks with multiple PHP versions.
- // e.g. `'plugin_config' => ['php_native_syntax_check_binaries' => ['php72', 'php70', 'php56']]`
- // if all of those programs can be found in $PATH
-
- // 'php_native_syntax_check_binaries' => [PHP_BINARY],
-
- // The maximum number of `php --syntax-check` processes to run at any point in time (Minimum: 1).
- // This may be temporarily higher if php_native_syntax_check_binaries has more elements than this process count.
- 'php_native_syntax_check_max_processes' => 4,
-
- // List of methods to suppress warnings about for HasPHPDocPlugin
- 'has_phpdoc_method_ignore_regex' => '@^Phan\\\\Tests\\\\.*::(test.*|.*Provider)$@',
- // Warn about duplicate descriptions for methods and property groups within classes.
- // (This skips over deprecated methods)
- // This may not apply to all code bases,
- // but is useful in avoiding copied and pasted descriptions that may be inapplicable or too vague.
- 'has_phpdoc_check_duplicates' => true,
-
- // If true, then never allow empty statement lists, even if there is a TODO/FIXME/"deliberately empty" comment.
- 'empty_statement_list_ignore_todos' => true,
-
- // Automatically infer which methods are pure (i.e. should have no side effects) in UseReturnValuePlugin.
- 'infer_pure_methods' => true,
-
- // Warn if newline is allowed before end of string for `$` (the default unless the `D` modifier (`PCRE_DOLLAR_ENDONLY`) is passed in).
- // This is specific to coding styles.
- 'regex_warn_if_newline_allowed_at_end' => true,
- ],
-
- // A list of plugin files to execute
- // NOTE: values can be the base name without the extension for plugins bundled with Phan (E.g. 'AlwaysReturnPlugin')
- // or relative/absolute paths to the plugin (Relative to the project root).
- 'plugins' => [
- 'AlwaysReturnPlugin', // i.e. '.phan/plugin/AlwaysReturnPlugin.php' in phan itself
- 'DollarDollarPlugin',
- 'UnreachableCodePlugin',
- 'DuplicateArrayKeyPlugin',
- 'PregRegexCheckerPlugin',
- 'PrintfCheckerPlugin',
- 'PHPUnitAssertionPlugin', // analyze assertSame/assertInstanceof/assertTrue/assertFalse
- 'UseReturnValuePlugin',
-
- // UnknownElementTypePlugin warns about unknown types in element signatures.
- 'UnknownElementTypePlugin',
- 'DuplicateExpressionPlugin',
- // warns about carriage returns("\r"), trailing whitespace, and tabs in PHP files.
- 'WhitespacePlugin',
- // Warn about inline HTML anywhere in the files.
- 'InlineHTMLPlugin',
- ////////////////////////////////////////////////////////////////////////
- // Plugins for Phan's self-analysis
- ////////////////////////////////////////////////////////////////////////
-
- // Warns about the usage of assert() for Phan's self-analysis. See https://github.com/phan/phan/issues/288
- 'NoAssertPlugin',
- 'PossiblyStaticMethodPlugin',
-
- 'HasPHPDocPlugin',
- 'PHPDocToRealTypesPlugin', // suggests replacing (at)return void with `: void` in the declaration, etc.
- 'PHPDocRedundantPlugin',
- 'PreferNamespaceUsePlugin',
- 'EmptyStatementListPlugin',
-
- // Report empty (not overridden or overriding) methods and functions
- // 'EmptyMethodAndFunctionPlugin',
-
- // This should only be enabled if the code being analyzed contains Phan plugins.
- 'PhanSelfCheckPlugin',
- // Warn about using the same loop variable name as a loop variable of an outer loop.
- 'LoopVariableReusePlugin',
- // Warn about assigning the value the variable already had to that variable.
- 'RedundantAssignmentPlugin',
- // These are specific to Phan's coding style
- 'StrictComparisonPlugin',
- // Warn about `$var == SOME_INT_OR_STRING_CONST` due to unintuitive behavior such as `0 == 'a'`
- 'StrictLiteralComparisonPlugin',
- 'ShortArrayPlugin',
- 'SimplifyExpressionPlugin',
- // 'UnknownClassElementAccessPlugin' is more useful with batch analysis than in an editor.
- // It's used in tests/run_test __FakeSelfFallbackTest
-
- // This checks that there are no accidental echos/printfs left inside Phan's code.
- 'RemoveDebugStatementPlugin',
- 'UnsafeCodePlugin',
- 'DeprecateAliasPlugin',
- // Suggest '@return never'
- '.phan/plugins/AddNeverReturnTypePlugin.php',
- // Still have false positives to suppress
- // '.phan/plugins/StaticVariableMisusePlugin.php',
-
- ////////////////////////////////////////////////////////////////////////
- // End plugins for Phan's self-analysis
- ////////////////////////////////////////////////////////////////////////
-
- // 'SleepCheckerPlugin' is useful for projects which heavily use the __sleep() method. Phan doesn't use __sleep().
- // InvokePHPNativeSyntaxCheckPlugin invokes 'php --no-php-ini --syntax-check ${abs_path_to_analyzed_file}.php' and reports any error messages.
- // Using this can cause phan's overall analysis time to more than double.
- // 'InvokePHPNativeSyntaxCheckPlugin',
-
- // 'PHPUnitNotDeadCodePlugin', // Marks PHPUnit test case subclasses and test cases as referenced code. This is only useful for runs when dead code detection is enabled.
-
- // 'PHPDocInWrongCommentPlugin', // Useful to warn about using "/*" instead of ""/**" where phpdoc annotations are used. This is slow due to needing to tokenize files.
-
- // NOTE: This plugin only produces correct results when
- // Phan is run on a single core (-j1).
- // 'UnusedSuppressionPlugin',
- ],
-];
diff --git a/vendor/phan/phan/.phan/internal_stubs/README.md b/vendor/phan/phan/.phan/internal_stubs/README.md
deleted file mode 100644
index 27754acf..00000000
--- a/vendor/phan/phan/.phan/internal_stubs/README.md
+++ /dev/null
@@ -1,4 +0,0 @@
-This folder will eventually contain stubs for the latest versions of various extensions.
-If the extension is loaded in the binary to run phan, then phan will do nothing.
-The plan is to make phan load these files and act as though internal classes, constants,
-and functions existed with the same signatures as these php files.
diff --git a/vendor/phan/phan/.phan/internal_stubs/ast.phan_php b/vendor/phan/phan/.phan/internal_stubs/ast.phan_php
deleted file mode 100644
index 66531bc6..00000000
--- a/vendor/phan/phan/.phan/internal_stubs/ast.phan_php
+++ /dev/null
@@ -1,233 +0,0 @@
-getFQSEN() !== $method->getDefiningFQSEN()) {
- // Check if this was inherited by a descendant class.
- return;
- }
-
- if ($method->getUnionType()->hasType(NeverType::instance(false))) {
- return;
- }
- if ($method->isOverriddenByAnother()) {
- return;
- }
-
- // This modifies the nodes in place, check this last
- if (!BlockExitStatusChecker::willUnconditionallyNeverReturn($stmts_list)) {
- return;
- }
- self::emitIssue(
- $code_base,
- $method->getContext(),
- 'PhanPluginNeverReturnMethod',
- "Method {METHOD} never returns and has a return type of {TYPE}, but phpdoc type {TYPE} could be used instead",
- [$method->getRepresentationForIssue(), $method->getUnionType(), 'never']
- );
- }
-
- /**
- * @param CodeBase $code_base
- * The code base in which the function exists
- *
- * @param Func $function
- * A function or closure being analyzed
- *
- * @override
- */
- public function analyzeFunction(
- CodeBase $code_base,
- Func $function
- ): void {
- $stmts_list = self::getStatementListToAnalyze($function);
- if ($stmts_list === null) {
- // check for abstract methods, generators, etc.
- return;
- }
-
- if ($function->getUnionType()->hasType(NeverType::instance(false))) {
- return;
- }
- // This modifies the nodes in place, check this last
- if (!BlockExitStatusChecker::willUnconditionallyNeverReturn($stmts_list)) {
- return;
- }
- self::emitIssue(
- $code_base,
- $function->getContext(),
- 'PhanPluginNeverReturnFunction',
- "Function {FUNCTION} never returns and has a return type of {TYPE}, but phpdoc type {TYPE} could be used instead",
- [$function->getRepresentationForIssue(), $function->getUnionType(), 'never']
- );
- }
-
- /**
- * @param Func|Method $func
- * @return ?Node - returns null if there's no statement list to analyze
- */
- private static function getStatementListToAnalyze($func): ?Node
- {
- if (!$func->hasNode()) {
- return null;
- } elseif ($func->hasYield()) {
- // generators always return Generator.
- return null;
- }
- $node = $func->getNode();
- if (!$node) {
- return null;
- }
- return $node->children['stmts'];
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new NeverReturnPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/AlwaysReturnPlugin.php b/vendor/phan/phan/.phan/plugins/AlwaysReturnPlugin.php
deleted file mode 100644
index 0264498a..00000000
--- a/vendor/phan/phan/.phan/plugins/AlwaysReturnPlugin.php
+++ /dev/null
@@ -1,165 +0,0 @@
-getFQSEN() !== $method->getDefiningFQSEN()) {
- // Check if this was inherited by a descendant class.
- return;
- }
-
- if (self::returnTypeOfFunctionLikeAllowsNull($method)) {
- return;
- }
- if (!BlockExitStatusChecker::willUnconditionallyThrowOrReturn($stmts_list)) {
- if (!$method->checkHasSuppressIssueAndIncrementCount('PhanPluginAlwaysReturnMethod')) {
- self::emitIssue(
- $code_base,
- $method->getContext(),
- 'PhanPluginAlwaysReturnMethod',
- "Method {METHOD} has a return type of {TYPE}, but may fail to return a value",
- [(string)$method->getFQSEN(), (string)$method->getUnionType()]
- );
- }
- }
- }
-
- /**
- * @param CodeBase $code_base
- * The code base in which the function exists
- *
- * @param Func $function
- * A function or closure being analyzed
- *
- * @override
- */
- public function analyzeFunction(
- CodeBase $code_base,
- Func $function
- ): void {
- $stmts_list = self::getStatementListToAnalyze($function);
- if ($stmts_list === null) {
- // check for abstract methods, generators, etc.
- return;
- }
-
- if (self::returnTypeOfFunctionLikeAllowsNull($function)) {
- return;
- }
- if (!BlockExitStatusChecker::willUnconditionallyThrowOrReturn($stmts_list)) {
- if (!$function->checkHasSuppressIssueAndIncrementCount('PhanPluginAlwaysReturnFunction')) {
- self::emitIssue(
- $code_base,
- $function->getContext(),
- 'PhanPluginAlwaysReturnFunction',
- "Function {FUNCTION} has a return type of {TYPE}, but may fail to return a value",
- [(string)$function->getFQSEN(), (string)$function->getUnionType()]
- );
- }
- }
- }
-
- /**
- * @param Func|Method $func
- * @return ?Node - returns null if there's no statement list to analyze
- */
- private static function getStatementListToAnalyze($func): ?Node
- {
- if (!$func->hasNode()) {
- return null;
- } elseif ($func->hasYield()) {
- // generators always return Generator.
- return null;
- }
- $node = $func->getNode();
- if (!$node) {
- return null;
- }
- return $node->children['stmts'];
- }
-
- /**
- * @param FunctionInterface $func
- * @return bool - Is void(absence of a return type) an acceptable return type.
- * NOTE: projects can customize this as needed.
- */
- private static function returnTypeOfFunctionLikeAllowsNull(FunctionInterface $func): bool
- {
- $real_return_type = $func->getRealReturnType();
- if (!$real_return_type->isEmpty() && !$real_return_type->isType(VoidType::instance(false))) {
- return false;
- }
- $return_type = $func->getUnionType();
- return ($return_type->isEmpty()
- || $return_type->containsNullableLabeled()
- || $return_type->hasType(NeverType::instance(false))
- || $return_type->hasType(VoidType::instance(false))
- || $return_type->hasType(NullType::instance(false)));
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new AlwaysReturnPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/AvoidableGetterPlugin.php b/vendor/phan/phan/.phan/plugins/AvoidableGetterPlugin.php
deleted file mode 100644
index 9f3c190d..00000000
--- a/vendor/phan/phan/.phan/plugins/AvoidableGetterPlugin.php
+++ /dev/null
@@ -1,130 +0,0 @@
-getProperty()` when the property is accessible, and the getter is not overridden.
- */
-class AvoidableGetterPlugin extends PluginV3 implements
- PostAnalyzeNodeCapability
-{
-
- /**
- * @return class-string - name of PluginAwarePostAnalysisVisitor subclass
- */
- public static function getPostAnalyzeNodeVisitorClassName(): string
- {
- return AvoidableGetterVisitor::class;
- }
-}
-
-/**
- * This visitor analyzes node kinds that can be the root of expressions
- * containing duplicate expressions, and is called on nodes in post-order.
- */
-class AvoidableGetterVisitor extends PluginAwarePostAnalysisVisitor
-{
- /**
- * @var array maps getter method names to property names.
- */
- private $getter_to_property_map = [];
-
- public function visitClass(Node $node): void
- {
- if (!$this->context->isInClassScope()) {
- // should be impossible
- return;
- }
- $code_base = $this->code_base;
- $class = $this->context->getClassInScope($code_base);
- $getters = $class->getGettersMap($code_base);
- if (!$getters) {
- return;
- }
- $getter_to_property_map = [];
- foreach ($getters as $prop_name => $methods) {
- $prop_name = (string)$prop_name;
- if (!$class->hasPropertyWithName($code_base, $prop_name)) {
- continue;
- }
- if (!$class->getPropertyByName($code_base, $prop_name)->isAccessibleFromClass($code_base, $class->getFQSEN())) {
- continue;
- }
- foreach ($methods as $method) {
- if ($method->isOverriddenByAnother()) {
- continue;
- }
- $getter_to_property_map[$method->getName()] = $prop_name;
- }
- }
- if (!$getter_to_property_map) {
- return;
- }
- $this->getter_to_property_map = $getter_to_property_map;
- // @phan-suppress-next-line PhanTypeMismatchArgumentNullable
- $this->recursivelyCheck($node->children['stmts']);
- }
-
- private function recursivelyCheck(Node $node): void
- {
- switch ($node->kind) {
- // TODO: Handle phan-closure-scope.
- // case ast\AST_CLOSURE:
- // case ast\AST_ARROW_FUNC:
- case ast\AST_FUNC_DECL:
- case ast\AST_CLASS:
- return;
- // This only supports instance method getters, not static getters (AST_STATIC_CALL)
- case ast\AST_METHOD_CALL:
- if (!ConditionVisitor::isThisVarNode($node->children['expr'])) {
- break;
- }
- $method_name = $node->children['method'];
- if (is_string($method_name)) {
- $property_name = $this->getter_to_property_map[$method_name] ?? null;
- if ($property_name !== null) {
- $this->warnCanReplaceGetterWithProperty($node, $property_name);
- return;
- }
- }
- break;
- }
- foreach ($node->children as $child_node) {
- if ($child_node instanceof Node) {
- $this->recursivelyCheck($child_node);
- }
- }
- }
-
- private function warnCanReplaceGetterWithProperty(Node $node, string $property_name): void
- {
- $class = $this->context->getClassInScope($this->code_base);
- if ($class->isTrait()) {
- $issue_name = 'PhanPluginAvoidableGetterInTrait';
- } else {
- $issue_name = 'PhanPluginAvoidableGetter';
- }
-
- $this->emitPluginIssue(
- $this->code_base,
- (clone $this->context)->withLineNumberStart($node->lineno),
- $issue_name,
- "Can replace {METHOD} with {PROPERTY}",
- [ASTReverter::toShortString($node), '$this->' . $property_name]
- );
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-
-return new AvoidableGetterPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/ConstantVariablePlugin.php b/vendor/phan/phan/.phan/plugins/ConstantVariablePlugin.php
deleted file mode 100644
index 78744513..00000000
--- a/vendor/phan/phan/.phan/plugins/ConstantVariablePlugin.php
+++ /dev/null
@@ -1,97 +0,0 @@
-flags & PhanAnnotationAdder::FLAG_INITIALIZES || isset($node->is_reference)) {
- return;
- }
- $var_name = $node->children['name'];
- if (!is_string($var_name)) {
- return;
- }
- if ($this->context->isInLoop() || $this->context->isInGlobalScope()) {
- return;
- }
- $parent_node = end($this->parent_node_list);
- if ($parent_node instanceof Node) {
- switch ($parent_node->kind) {
- case ast\AST_IF_ELEM:
- // Phan modifies type to match condition before plugins are called.
- // --redundant-condition-detection would warn
- return;
- case ast\AST_ASSIGN_OP:
- if ($parent_node->children['var'] === $node) {
- return;
- }
- break;
- }
- }
- $variable = $this->context->getScope()->getVariableByNameOrNull($var_name);
- if (!$variable) {
- return;
- }
- $type = $variable->getUnionType();
- if ($type->isPossiblyUndefined()) {
- return;
- }
- $value = $type->getRealUnionType()->asSingleScalarValueOrNullOrSelf();
- if (is_object($value)) {
- return;
- }
- // TODO: Account for methods expecting references
- if (is_bool($value)) {
- $issue_type = 'PhanPluginConstantVariableBool';
- } elseif (is_null($value)) {
- $issue_type = 'PhanPluginConstantVariableNull';
- } else {
- $issue_type = 'PhanPluginConstantVariableScalar';
- }
- $this->emitPluginIssue(
- $this->code_base,
- $this->context,
- $issue_type,
- 'Variable ${VARIABLE} is probably constant with a value of {TYPE}',
- [$var_name, $type]
- );
- }
-}
-
-return new ConstantVariablePlugin();
diff --git a/vendor/phan/phan/.phan/plugins/DemoPlugin.php b/vendor/phan/phan/.phan/plugins/DemoPlugin.php
deleted file mode 100644
index 658860c7..00000000
--- a/vendor/phan/phan/.phan/plugins/DemoPlugin.php
+++ /dev/null
@@ -1,228 +0,0 @@
-getName() === 'Class') {
- self::emitIssue(
- $code_base,
- $class->getContext(),
- 'DemoPluginClassName',
- "Class {CLASS} cannot be called `Class`",
- [(string)$class->getFQSEN()]
- );
- }
- }
-
- /**
- * @param CodeBase $code_base
- * The code base in which the method exists
- *
- * @param Method $method
- * A method being analyzed
- *
- * @override
- */
- public function analyzeMethod(
- CodeBase $code_base,
- Method $method
- ): void {
- // As an example, we test to see if the name of the
- // method is `function`, and emit an issue if it is.
- // NOTE: Placeholders can be found in \Phan\Issue::uncolored_format_string_for_replace
- if ($method->getName() === 'function') {
- self::emitIssue(
- $code_base,
- $method->getContext(),
- 'DemoPluginMethodName',
- "Method {METHOD} cannot be called `function`",
- [(string)$method->getFQSEN()]
- );
- }
- }
-
- /**
- * @param CodeBase $code_base
- * The code base in which the function exists
- *
- * @param Func $function
- * A function being analyzed
- *
- * @override
- */
- public function analyzeFunction(
- CodeBase $code_base,
- Func $function
- ): void {
- // As an example, we test to see if the name of the
- // function is `function`, and emit an issue if it is.
- if ($function->getName() === 'function') {
- self::emitIssue(
- $code_base,
- $function->getContext(),
- 'DemoPluginFunctionName',
- "Function {FUNCTION} cannot be called `function`",
- [(string)$function->getFQSEN()]
- );
- }
- }
-
- /**
- * @param CodeBase $code_base
- * The code base in which the property exists
- *
- * @param Property $property
- * A property being analyzed
- *
- * @override
- */
- public function analyzeProperty(
- CodeBase $code_base,
- Property $property
- ): void {
- // As an example, we test to see if the name of the
- // property is `property`, and emit an issue if it is.
- if ($property->getName() === 'property') {
- self::emitIssue(
- $code_base,
- $property->getContext(),
- 'DemoPluginPropertyName',
- "Property {PROPERTY} should not be called `property`",
- [(string)$property->getFQSEN()]
- );
- }
- }
-}
-
-/**
- * When __invoke on this class is called with a node, a method
- * will be dispatched based on the `kind` of the given node.
- *
- * Visitors such as this are useful for defining lots of different
- * checks on a node based on its kind.
- */
-class DemoNodeVisitor extends PluginAwarePostAnalysisVisitor
-{
- // Subclasses should declare protected $parent_node_list as an instance property if they need to know the list.
-
- // @var list - Set after the constructor is called if an instance property with this name is declared
- // protected $parent_node_list;
-
- // A plugin's visitors should NOT implement visit(), unless they need to.
-
- /**
- * @param Node $node
- * A node of kind ast\AST_INSTANCEOF to analyze
- *
- * @override
- */
- public function visitInstanceof(Node $node): void
- {
- // Debug::printNode($node);
-
- $class_name = $node->children['class']->children['name'] ?? null;
-
- // If we can't figure out the name of the class, don't
- // bother continuing.
- if (!is_string($class_name)) {
- return;
- }
-
- // As an example, enforce that we cannot call
- // instanceof against 'object'.
- if ($class_name === 'object') {
- $this->emit(
- 'PhanPluginInstanceOfObject',
- "Cannot call instanceof against `object`"
- );
- }
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new DemoPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/DeprecateAliasPlugin.php b/vendor/phan/phan/.phan/plugins/DeprecateAliasPlugin.php
deleted file mode 100644
index f6b2a274..00000000
--- a/vendor/phan/phan/.phan/plugins/DeprecateAliasPlugin.php
+++ /dev/null
@@ -1,393 +0,0 @@
- 'gettext',
- 'add' => 'swfmovie_add',
- //'add' => 'swfsprite_add and others',
- 'addaction' => 'swfbutton_addAction',
- 'addcolor' => 'swfdisplayitem_addColor',
- 'addentry' => 'swfgradient_addEntry',
- 'addfill' => 'swfshape_addfill',
- 'addshape' => 'swfbutton_addShape',
- 'addstring' => 'swftext_addString and others',
- //'addstring' => 'swftextfield_addString',
- 'align' => 'swftextfield_align',
- 'chop' => 'rtrim',
- 'close' => 'closedir',
- 'com_get' => 'com_propget',
- 'com_propset' => 'com_propput',
- 'com_set' => 'com_propput',
- 'die' => 'exit',
- 'diskfreespace' => 'disk_free_space',
- 'doubleval' => 'floatval',
- 'drawarc' => 'swfshape_drawarc',
- 'drawcircle' => 'swfshape_drawcircle',
- 'drawcubic' => 'swfshape_drawcubic',
- 'drawcubicto' => 'swfshape_drawcubicto',
- 'drawcurve' => 'swfshape_drawcurve',
- 'drawcurveto' => 'swfshape_drawcurveto',
- 'drawglyph' => 'swfshape_drawglyph',
- 'drawline' => 'swfshape_drawline',
- 'drawlineto' => 'swfshape_drawlineto',
- 'fbsql' => 'fbsql_db_query',
- 'fputs' => 'fwrite',
- 'getascent' => 'swffont_getAscent and others',
- //'getascent' => 'swftext_getAscent',
- 'getdescent' => 'swffont_getDescent and others',
- //'getdescent' => 'swftext_getDescent',
- 'getheight' => 'swfbitmap_getHeight',
- 'getleading' => 'swffont_getLeading and others and others',
- //'getleading' => 'swftext_getLeading',
- 'getshape1' => 'swfmorph_getShape1',
- 'getshape2' => 'swfmorph_getShape2',
- 'getwidth' => 'swfbitmap_getWidth and others',
- //'getwidth' => 'swffont_getWidth',
- //'getwidth' => 'swftext_getWidth',
- 'gzputs' => 'gzwrite',
- 'i18n_convert' => 'mb_convert_encoding',
- 'i18n_discover_encoding' => 'mb_detect_encoding',
- 'i18n_http_input' => 'mb_http_input',
- 'i18n_http_output' => 'mb_http_output',
- 'i18n_internal_encoding' => 'mb_internal_encoding',
- 'i18n_ja_jp_hantozen' => 'mb_convert_kana',
- 'i18n_mime_header_decode' => 'mb_decode_mimeheader',
- 'i18n_mime_header_encode' => 'mb_encode_mimeheader',
- 'imap_create' => 'imap_createmailbox',
- 'imap_fetchtext' => 'imap_body',
- 'imap_getmailboxes' => 'imap_list_full',
- 'imap_getsubscribed' => 'imap_lsub_full',
- 'imap_header' => 'imap_headerinfo',
- 'imap_listmailbox' => 'imap_list',
- 'imap_listsubscribed' => 'imap_lsub',
- 'imap_rename' => 'imap_renamemailbox',
- 'imap_scan' => 'imap_listscan',
- 'imap_scanmailbox' => 'imap_listscan',
- 'ini_alter' => 'ini_set',
- 'is_double' => 'is_float',
- 'is_integer' => 'is_int',
- 'is_long' => 'is_int',
- 'is_real' => 'is_float',
- 'is_writeable' => 'is_writable',
- 'join' => 'implode',
- 'key_exists' => 'array_key_exists',
- 'labelframe' => 'swfmovie_labelFrame and others',
- //'labelframe' => 'swfsprite_labelFrame',
- 'ldap_close' => 'ldap_unbind',
- 'magic_quotes_runtime' => 'set_magic_quotes_runtime',
- 'mbstrcut' => 'mb_strcut',
- 'mbstrlen' => 'mb_strlen',
- 'mbstrpos' => 'mb_strpos',
- 'mbstrrpos' => 'mb_strrpos',
- 'mbsubstr' => 'mb_substr',
- 'ming_setcubicthreshold' => 'ming_setCubicThreshold',
- 'ming_setscale' => 'ming_setScale',
- 'move' => 'swfdisplayitem_move',
- 'movepen' => 'swfshape_movepen',
- 'movepento' => 'swfshape_movepento',
- 'moveto' => 'swfdisplayitem_moveTo and others',
- //'moveto' => 'swffill_moveTo',
- //'moveto' => 'swftext_moveTo',
- 'msql' => 'msql_db_query',
- 'msql_createdb' => 'msql_create_db',
- 'msql_dbname' => 'msql_result',
- 'msql_dropdb' => 'msql_drop_db',
- 'msql_fieldflags' => 'msql_field_flags',
- 'msql_fieldlen' => 'msql_field_len',
- 'msql_fieldname' => 'msql_field_name',
- 'msql_fieldtable' => 'msql_field_table',
- 'msql_fieldtype' => 'msql_field_type',
- 'msql_freeresult' => 'msql_free_result',
- 'msql_listdbs' => 'msql_list_dbs',
- 'msql_listfields' => 'msql_list_fields',
- 'msql_listtables' => 'msql_list_tables',
- 'msql_numfields' => 'msql_num_fields',
- 'msql_numrows' => 'msql_num_rows',
- 'msql_regcase' => 'sql_regcase',
- 'msql_selectdb' => 'msql_select_db',
- 'msql_tablename' => 'msql_result',
- 'mssql_affected_rows' => 'sybase_affected_rows',
- 'mssql_close' => 'sybase_close',
- 'mssql_connect' => 'sybase_connect',
- 'mssql_data_seek' => 'sybase_data_seek',
- 'mssql_fetch_array' => 'sybase_fetch_array',
- 'mssql_fetch_field' => 'sybase_fetch_field',
- 'mssql_fetch_object' => 'sybase_fetch_object',
- 'mssql_fetch_row' => 'sybase_fetch_row',
- 'mssql_field_seek' => 'sybase_field_seek',
- 'mssql_free_result' => 'sybase_free_result',
- 'mssql_get_last_message' => 'sybase_get_last_message',
- 'mssql_min_client_severity' => 'sybase_min_client_severity',
- 'mssql_min_error_severity' => 'sybase_min_error_severity',
- 'mssql_min_message_severity' => 'sybase_min_message_severity',
- 'mssql_min_server_severity' => 'sybase_min_server_severity',
- 'mssql_num_fields' => 'sybase_num_fields',
- 'mssql_num_rows' => 'sybase_num_rows',
- 'mssql_pconnect' => 'sybase_pconnect',
- 'mssql_query' => 'sybase_query',
- 'mssql_result' => 'sybase_result',
- 'mssql_select_db' => 'sybase_select_db',
- 'multcolor' => 'swfdisplayitem_multColor',
- 'mysql' => 'mysql_db_query',
- 'mysql_createdb' => 'mysql_create_db',
- 'mysql_db_name' => 'mysql_result',
- 'mysql_dbname' => 'mysql_result',
- 'mysql_dropdb' => 'mysql_drop_db',
- 'mysql_fieldflags' => 'mysql_field_flags',
- 'mysql_fieldlen' => 'mysql_field_len',
- 'mysql_fieldname' => 'mysql_field_name',
- 'mysql_fieldtable' => 'mysql_field_table',
- 'mysql_fieldtype' => 'mysql_field_type',
- 'mysql_freeresult' => 'mysql_free_result',
- 'mysql_listdbs' => 'mysql_list_dbs',
- 'mysql_listfields' => 'mysql_list_fields',
- 'mysql_listtables' => 'mysql_list_tables',
- 'mysql_numfields' => 'mysql_num_fields',
- 'mysql_numrows' => 'mysql_num_rows',
- 'mysql_selectdb' => 'mysql_select_db',
- 'mysql_tablename' => 'mysql_result',
- 'nextframe' => 'swfmovie_nextFrame and others',
- //'nextframe' => 'swfsprite_nextFrame',
- 'ociassignelem' => 'OCI-Collection::assignElem',
- 'ocibindbyname' => 'oci_bind_by_name',
- 'ocicancel' => 'oci_cancel',
- 'ocicloselob' => 'OCI-Lob::close',
- 'ocicollappend' => 'OCI-Collection::append',
- 'ocicollassign' => 'OCI-Collection::assign',
- 'ocicollmax' => 'OCI-Collection::max',
- 'ocicollsize' => 'OCI-Collection::size',
- 'ocicolltrim' => 'OCI-Collection::trim',
- 'ocicolumnisnull' => 'oci_field_is_null',
- 'ocicolumnname' => 'oci_field_name',
- 'ocicolumnprecision' => 'oci_field_precision',
- 'ocicolumnscale' => 'oci_field_scale',
- 'ocicolumnsize' => 'oci_field_size',
- 'ocicolumntype' => 'oci_field_type',
- 'ocicolumntyperaw' => 'oci_field_type_raw',
- 'ocicommit' => 'oci_commit',
- 'ocidefinebyname' => 'oci_define_by_name',
- 'ocierror' => 'oci_error',
- 'ociexecute' => 'oci_execute',
- 'ocifetch' => 'oci_fetch',
- 'ocifetchinto' => 'oci_fetch_array,',
- 'ocifetchstatement' => 'oci_fetch_all',
- 'ocifreecollection' => 'OCI-Collection::free',
- 'ocifreecursor' => 'oci_free_statement',
- 'ocifreedesc' => 'oci_free_descriptor',
- 'ocifreestatement' => 'oci_free_statement',
- 'ocigetelem' => 'OCI-Collection::getElem',
- 'ociinternaldebug' => 'oci_internal_debug',
- 'ociloadlob' => 'OCI-Lob::load',
- 'ocilogon' => 'oci_connect',
- 'ocinewcollection' => 'oci_new_collection',
- 'ocinewcursor' => 'oci_new_cursor',
- 'ocinewdescriptor' => 'oci_new_descriptor',
- 'ocinlogon' => 'oci_new_connect',
- 'ocinumcols' => 'oci_num_fields',
- 'ociparse' => 'oci_parse',
- 'ocipasswordchange' => 'oci_password_change',
- 'ociplogon' => 'oci_pconnect',
- 'ociresult' => 'oci_result',
- 'ocirollback' => 'oci_rollback',
- 'ocisavelob' => 'OCI-Lob::save',
- 'ocisavelobfile' => 'OCI-Lob::import',
- 'ociserverversion' => 'oci_server_version',
- 'ocisetprefetch' => 'oci_set_prefetch',
- 'ocistatementtype' => 'oci_statement_type',
- 'ociwritelobtofile' => 'OCI-Lob::export',
- 'ociwritetemporarylob' => 'OCI-Lob::writeTemporary',
- 'odbc_do' => 'odbc_exec',
- 'odbc_field_precision' => 'odbc_field_len',
- 'output' => 'swfmovie_output',
- 'pdf_add_outline' => 'pdf_add_bookmark',
- 'pg_clientencoding' => 'pg_client_encoding',
- 'pg_setclientencoding' => 'pg_set_client_encoding',
- 'pos' => 'current',
- 'recode' => 'recode_string',
- 'remove' => 'swfmovie_remove and others',
- // 'remove' => 'swfsprite_remove',
- 'rotate' => 'swfdisplayitem_rotate',
- 'rotateto' => 'swfdisplayitem_rotateTo and others',
- // 'rotateto' => 'swffill_rotateTo',
- 'save' => 'swfmovie_save',
- 'savetofile' => 'swfmovie_saveToFile',
- 'scale' => 'swfdisplayitem_scale',
- 'scaleto' => 'swfdisplayitem_scaleTo and others',
- // 'scaleto' => 'swffill_scaleTo',
- 'setaction' => 'swfbutton_setAction',
- 'setbackground' => 'swfmovie_setBackground',
- 'setbounds' => 'swftextfield_setBounds',
- 'setcolor' => 'swftext_setColor and others',
- // 'setcolor' => 'swftextfield_setColor',
- 'setdepth' => 'swfdisplayitem_setDepth',
- 'setdimension' => 'swfmovie_setDimension',
- 'setdown' => 'swfbutton_setDown',
- 'setfont' => 'swftext_setFont and others',
- // 'setfont' => 'swftextfield_setFont',
- 'setframes' => 'swfmovie_setFrames and others',
- // 'setframes' => 'swfsprite_setFrames',
- 'setheight' => 'swftext_setHeight and others',
- // 'setheight' => 'swftextfield_setHeight',
- 'sethit' => 'swfbutton_setHit',
- 'setindentation' => 'swftextfield_setIndentation',
- 'setleftfill' => 'swfshape_setleftfill',
- 'setleftmargin' => 'swftextfield_setLeftMargin',
- 'setline' => 'swfshape_setline',
- 'setlinespacing' => 'swftextfield_setLineSpacing',
- 'setmargins' => 'swftextfield_setMargins',
- 'setmatrix' => 'swfdisplayitem_setMatrix',
- 'setname' => 'swfdisplayitem_setName and others',
- // 'setname' => 'swftextfield_setName',
- 'setover' => 'swfbutton_setOver',
- 'setrate' => 'swfmovie_setRate',
- 'setratio' => 'swfdisplayitem_setRatio',
- 'setrightfill' => 'swfshape_setrightfill',
- 'setrightmargin' => 'swftextfield_setRightMargin',
- 'setspacing' => 'swftext_setSpacing',
- 'setup' => 'swfbutton_setUp',
- 'show_source' => 'highlight_file',
- 'sizeof' => 'count',
- 'skewx' => 'swfdisplayitem_skewX',
- 'skewxto' => 'swfdisplayitem_skewXTo',
- // 'skewxto' => 'swffill_skewXTo',
- 'skewy' => 'swfdisplayitem_skewY and others',
- 'skewyto' => 'swfdisplayitem_skewYTo and others',
- // 'skewyto' => 'swffill_skewYTo',
- 'snmpwalkoid' => 'snmprealwalk',
- 'strchr' => 'strstr',
- 'streammp3' => 'swfmovie_streamMp3',
- 'swfaction' => 'swfaction_init',
- 'swfbitmap' => 'swfbitmap_init',
- 'swfbutton' => 'swfbutton_init',
- 'swffill' => 'swffill_init',
- 'swffont' => 'swffont_init',
- 'swfgradient' => 'swfgradient_init',
- 'swfmorph' => 'swfmorph_init',
- 'swfmovie' => 'swfmovie_init',
- 'swfshape' => 'swfshape_init',
- 'swfsprite' => 'swfsprite_init',
- 'swftext' => 'swftext_init',
- 'swftextfield' => 'swftextfield_init',
- 'xptr_new_context' => 'xpath_new_context',
- // miscellaneous
- 'bzclose' => 'fclose',
- 'bzflush' => 'fflush',
- 'bzwrite' => 'fwrite',
- 'checkdnsrr' => 'dns_check_record',
- 'dir' => 'getdir',
- 'ftp_quit' => 'ftp_close',
- 'getmxrr' => 'dns_get_mx',
- // 'getrandmax' => 'mt_getrandmax', // confusing because rand is not an alias of mt_rand
- 'get_required_files' => 'get_included_files',
- 'gmp_div' => 'gmp_div_q',
- // This may change in the future
- // 'gzclose' => 'fclose',
- // 'gzeof' => 'feof',
- // 'gzgetc' => 'fgetc',
- // 'gzgets' => 'fgets',
- // 'gzpassthru' => 'fpassthru',
- // 'gzread' => 'fread',
- // 'gzrewind' => 'rewind',
- // 'gzseek' => 'fseek',
- // 'gztell' => 'ftell',
- // 'gzwrite' => 'fwrite',
- 'ldap_get_values' => 'ldap_get_values_len',
- 'ldap_modify' => 'ldap_mod_replace',
- 'mysqli_escape_string' => 'mysqli_real_escape_string',
- 'mysqli_execute' => 'mysqli_stmt_execute',
- 'mysqli_set_opt' => 'mysqli_options',
- 'oci_free_cursor' => 'oci_free_statement',
- 'openssl_get_privatekey' => 'openssl_pkey_get_private',
- 'openssl_get_publickey' => 'openssl_pkey_get_public',
- 'pcntl_errno' => 'pcntl_get_last_error',
- 'pg_cmdtuples' => 'pg_affected_rows',
- 'pg_errormessage' => 'pg_last_error',
- 'pg_exec' => 'pg_query',
- 'pg_fieldisnull' => 'pg_field_is_null',
- 'pg_fieldname' => 'pg_field_name',
- 'pg_fieldnum' => 'pg_field_num',
- 'pg_fieldprtlen' => 'pg_field_prtlen',
- 'pg_fieldsize' => 'pg_field_size',
- 'pg_fieldtype' => 'pg_field_type',
- 'pg_freeresult' => 'pg_free_result',
- 'pg_getlastoid' => 'pg_last_oid',
- 'pg_loclose' => 'pg_lo_close',
- 'pg_locreate' => 'pg_lo_create',
- 'pg_loexport' => 'pg_lo_export',
- 'pg_loimport' => 'pg_lo_import',
- 'pg_loopen' => 'pg_lo_open',
- 'pg_loreadall' => 'pg_lo_read_all',
- 'pg_loread' => 'pg_lo_read',
- 'pg_lounlink' => 'pg_lo_unlink',
- 'pg_lowrite' => 'pg_lo_write',
- 'pg_numfields' => 'pg_num_fields',
- 'pg_numrows' => 'pg_num_rows',
- 'pg_result' => 'pg_fetch_result',
- 'posix_errno' => 'posix_get_last_error',
- 'session_commit' => 'session_write_close',
- 'set_file_buffer' => 'stream_set_write_buffer',
- 'snmp_set_oid_numeric_print' => 'snmp_set_oid_output_format',
- 'socket_getopt' => 'socket_get_option',
- 'socket_get_status' => 'stream_get_meta_data',
- 'socket_set_blocking' => 'stream_set_blocking',
- 'socket_setopt' => 'socket_set_option',
- 'socket_set_timeout' => 'stream_set_timeout',
- 'sodium_crypto_scalarmult_base' => 'sodium_crypto_box_publickey_from_secretkey',
- 'srand' => 'mt_srand',
- 'stream_register_wrapper' => 'stream_wrapper_register',
- 'user_error' => 'trigger_error',
- ];
-
- public function beforeAnalyzePhase(CodeBase $code_base): void
- {
- foreach (self::KNOWN_ALIASES as $alias => $original_name) {
- try {
- $fqsen = FullyQualifiedFunctionName::fromFullyQualifiedString($alias);
- } catch (Exception $_) {
- continue;
- }
- if (!$code_base->hasFunctionWithFQSEN($fqsen)) {
- continue;
- }
- $function = $code_base->getFunctionByFQSEN($fqsen);
- if (!$function->isPHPInternal()) {
- continue;
- }
- $function->setIsDeprecated(true);
- if (!$function->getDocComment()) {
- $function->setDocComment('/** @deprecated DeprecateAliasPlugin marked this as an alias of ' .
- $original_name . (strpos($original_name, ' ') === false ? '()' : '') . '*/');
- }
- }
- }
-}
-
-if (Config::isIssueFixingPluginEnabled()) {
- require_once __DIR__ . '/DeprecateAliasPlugin/fixers.php';
-}
-
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new DeprecateAliasPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/DeprecateAliasPlugin/fixers.php b/vendor/phan/phan/.phan/plugins/DeprecateAliasPlugin/fixers.php
deleted file mode 100644
index bc5b5d66..00000000
--- a/vendor/phan/phan/.phan/plugins/DeprecateAliasPlugin/fixers.php
+++ /dev/null
@@ -1,72 +0,0 @@
-getLine();
- $reason = (string)$instance->getTemplateParameters()[1];
- if (!preg_match('/Deprecated because: DeprecateAliasPlugin marked this as an alias of (\w+)\(\)/', $reason, $match)) {
- return null;
- }
- $new_name = (string)$match[1];
-
- $function_repr = (string)$instance->getTemplateParameters()[0];
- if (!preg_match('/\\\\(\w+)\(\)/', $function_repr, $match)) {
- return null;
- }
- $expected_name = $match[1];
- $edits = [];
- foreach ($contents->getNodesAtLine($line) as $node) {
- if (!$node instanceof QualifiedName) {
- continue;
- }
- $is_actual_call = $node->parent instanceof CallExpression;
- if (!$is_actual_call) {
- continue;
- }
- $file_contents = $contents->getContents();
- $actual_name = strtolower((new NodeUtils($file_contents))->phpParserNameToString($node));
- if ($actual_name !== $expected_name) {
- continue;
- }
- //fwrite(STDERR, "name is: " . get_class($node->parent) . "\n");
-
- // They are case-sensitively identical.
- // Generate a fix.
- // @phan-suppress-next-line PhanThrowTypeAbsentForCall
- $start = $node->getStartPosition();
- // @phan-suppress-next-line PhanThrowTypeAbsentForCall
- $end = $node->getEndPosition();
- $edits[] = new FileEdit($start, $end, (($file_contents[$start] ?? '') === '\\' ? '\\' : '') . $new_name);
- }
- if ($edits) {
- return new FileEditSet($edits);
- }
- return null;
- };
- IssueFixer::registerFixerClosure(
- 'PhanDeprecatedFunctionInternal',
- $fix
- );
-});
diff --git a/vendor/phan/phan/.phan/plugins/DollarDollarPlugin.php b/vendor/phan/phan/.phan/plugins/DollarDollarPlugin.php
deleted file mode 100644
index 3564402e..00000000
--- a/vendor/phan/phan/.phan/plugins/DollarDollarPlugin.php
+++ /dev/null
@@ -1,78 +0,0 @@
-children['name'] instanceof Node) {
- $this->emitPluginIssue(
- $this->code_base,
- $this->context,
- 'PhanPluginDollarDollar',
- "$$ Variables are not allowed.",
- []
- );
- }
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new DollarDollarPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/DuplicateArrayKeyPlugin.php b/vendor/phan/phan/.phan/plugins/DuplicateArrayKeyPlugin.php
deleted file mode 100644
index 67961563..00000000
--- a/vendor/phan/phan/.phan/plugins/DuplicateArrayKeyPlugin.php
+++ /dev/null
@@ -1,365 +0,0 @@
- value, with `value,`.
- *
- * @see DollarDollarPlugin for generic plugin documentation.
- */
-class DuplicateArrayKeyPlugin extends PluginV3 implements PostAnalyzeNodeCapability
-{
- /**
- * @return string - name of PluginAwarePostAnalysisVisitor subclass
- * @override
- */
- public static function getPostAnalyzeNodeVisitorClassName(): string
- {
- return DuplicateArrayKeyVisitor::class;
- }
-}
-
-/**
- * This class has visitArray called on all array literals in files to check for potential problems with keys.
- *
- * When __invoke on this class is called with a node, a method
- * will be dispatched based on the `kind` of the given node.
- *
- * Visitors such as this are useful for defining lots of different
- * checks on a node based on its kind.
- */
-class DuplicateArrayKeyVisitor extends PluginAwarePostAnalysisVisitor
-{
- private const HASH_PREFIX = "\x00__phan_dnu_";
-
- // Do not define the visit() method unless a plugin has code and needs to visit most/all node types.
-
- /**
- * @param Node $node
- * A switch statement's case statement(AST_SWITCH_LIST) node to analyze
- * @override
- */
- public function visitSwitchList(Node $node): void
- {
- $children = $node->children;
- if (count($children) <= 1) {
- // This plugin will never emit errors if there are 0 or 1 elements.
- return;
- }
-
- $case_constant_set = [];
- $values_to_check = [];
- foreach ($children as $i => $case_node) {
- if (!$case_node instanceof Node) {
- throw new AssertionError("Switch list must contain nodes");
- }
- $case_cond = $case_node->children['cond'];
- if ($case_cond === null) {
- continue; // This is `default:`. php --syntax-check already checks for duplicates.
- }
- // Skip array entries without literal keys. (Do it before resolving the key value)
- if (!is_scalar($case_cond)) {
- $original_case_cond = $case_cond;
- $case_cond = UnionTypeVisitor::unionTypeFromNode($this->code_base, $this->context, $case_cond)->asSingleScalarValueOrNullOrSelf();
- if (is_object($case_cond)) {
- $case_cond = $original_case_cond;
- }
- }
- if (is_string($case_cond)) {
- $cond_key = "s$case_cond";
- $values_to_check[$i] = $case_cond;
- } elseif (is_int($case_cond)) {
- $cond_key = $case_cond;
- $values_to_check[$i] = $case_cond;
- } elseif (is_bool($case_cond)) {
- $cond_key = $case_cond ? "T" : "F";
- $values_to_check[$i] = $case_cond;
- } else {
- // could be literal null?
- $cond_key = ASTHasher::hash($case_cond);
- if (!is_object($case_cond)) {
- $values_to_check[$i] = $case_cond;
- }
- }
- if (isset($case_constant_set[$cond_key])) {
- $normalized_case_cond = is_object($case_cond) ? ASTReverter::toShortString($case_cond) : self::normalizeSwitchKey($case_cond);
- $this->emitPluginIssue(
- $this->code_base,
- (clone $this->context)->withLineNumberStart($case_node->lineno),
- 'PhanPluginDuplicateSwitchCase',
- "Duplicate/Equivalent switch case({STRING_LITERAL}) detected in switch statement - the later entry will be ignored in favor of case {CODE} at line {LINE}.",
- [$normalized_case_cond, ASTReverter::toShortString($case_constant_set[$cond_key]->children['cond']), $case_constant_set[$cond_key]->lineno],
- Issue::SEVERITY_NORMAL,
- Issue::REMEDIATION_A,
- 15071
- );
- // Add a fake value to indicate loose equality checks are redundant
- $values_to_check[-1] = true;
- }
- $case_constant_set[$cond_key] = $case_node;
- }
- if (!isset($values_to_check[-1]) && count($values_to_check) > 1 && !self::areAllSwitchCasesTheSameType($values_to_check)) {
- // @phan-suppress-next-line PhanPartialTypeMismatchArgument array keys are integers for switch
- $this->extendedLooseEqualityCheck($values_to_check, $children);
- }
- }
-
- /**
- * @param array $values_to_check scalar constant values of case statements
- */
- private static function areAllSwitchCasesTheSameType(array $values_to_check): bool
- {
- $categories = 0;
- foreach ($values_to_check as $value) {
- if (is_int($value)) {
- $categories |= 1;
- if ($categories !== 1) {
- return false;
- }
- } elseif (is_string($value)) {
- if (is_numeric($value)) {
- // This includes float-like strings such as `"1e0"`, which adds ambiguity ("1e0" == "1")
- return false;
- }
- $categories |= 2;
- if ($categories !== 2) {
- return false;
- }
- } else {
- return false;
- }
- }
- return true;
- }
-
- /**
- * Perform a heuristic check if any element is `==` a previous element.
- *
- * This is intended to perform well for large arrays.
- *
- * TODO: Do a better job for small arrays.
- * @param array $values_to_check
- * @param list $children an array of scalars
- */
- private function extendedLooseEqualityCheck(array $values_to_check, array $children): void
- {
- $numeric_set = [];
- $fuzzy_numeric_set = [];
- foreach ($values_to_check as $i => $value) {
- if (is_numeric($value)) {
- // For `"1"`, search for `"1foo"`, `"1bar"`, etc.
- $value = is_float($value) ? $value : filter_var($value, FILTER_VALIDATE_FLOAT);
- $old_index = $numeric_set[$value] ?? $fuzzy_numeric_set[$value] ?? null;
- $numeric_set[$value] = $i;
- } else {
- $value = (float)$value;
- // For `"1foo"`, search for `1` but not `"1bar"`
- $old_index = $numeric_set[$value] ?? null;
- // @phan-suppress-next-line PhanTypeMismatchDimAssignment
- $fuzzy_numeric_set[$value] = $i;
- }
- if ($old_index !== null) {
- $this->emitPluginIssue(
- $this->code_base,
- (clone $this->context)->withLineNumberStart($children[$i]->lineno),
- 'PhanPluginDuplicateSwitchCaseLooseEquality',
- "Switch case({STRING_LITERAL}) is loosely equivalent (==) to an earlier case ({STRING_LITERAL}) in switch statement - the earlier entry may be chosen instead.",
- [self::normalizeSwitchKey($values_to_check[$i]), self::normalizeSwitchKey($values_to_check[$old_index])],
- Issue::SEVERITY_NORMAL,
- Issue::REMEDIATION_A,
- 15072
- );
- }
- }
- }
-
- /**
- * @param Node $node
- * A match expressions's arms list (AST_MATCH_ARM_LIST) node to analyze
- * @override
- * @suppress PhanPossiblyUndeclaredProperty
- */
- public function visitMatchArmList(Node $node): void
- {
- $children = $node->children;
- if (!$children) {
- // This plugin will never emit errors if there are 0 elements.
- return;
- }
-
- $arm_expr_constant_set = [];
- foreach ($children as $arm_node) {
- foreach ($arm_node->children['cond']->children ?? [] as $arm_expr_cond) {
- if ($arm_expr_cond === null) {
- continue; // This is `default:`. php --syntax-check already checks for duplicates.
- }
- $lineno = $arm_expr_cond->lineno ?? $arm_node->lineno;
- // Skip array entries without literal keys. (Do it before resolving the key value)
- if (is_object($arm_expr_cond) && ParseVisitor::isConstExpr($arm_expr_cond, ParseVisitor::CONSTANT_EXPRESSION_FORBID_NEW_EXPRESSION)) {
- // Only infer the value for values not affected by conditions - that will change after the expressions are analyzed
- $original_cond = $arm_expr_cond;
- $arm_expr_cond = UnionTypeVisitor::unionTypeFromNode($this->code_base, $this->context, $arm_expr_cond)->asSingleScalarValueOrNullOrSelf();
- if (is_object($arm_expr_cond)) {
- $arm_expr_cond = $original_cond;
- }
- }
- if (is_string($arm_expr_cond)) {
- $cond_key = "s$arm_expr_cond";
- } elseif (is_int($arm_expr_cond)) {
- $cond_key = $arm_expr_cond;
- } elseif (is_bool($arm_expr_cond)) {
- $cond_key = $arm_expr_cond ? "T" : "F";
- } else {
- // TODO: This seems like it'd be flaky with ast\Node->flags and lineno?
- $cond_key = ASTHasher::hash($arm_expr_cond);
- }
- if (isset($arm_expr_constant_set[$cond_key])) {
- $normalized_arm_expr_cond = ASTReverter::toShortString($arm_expr_cond);
- $this->emitPluginIssue(
- $this->code_base,
- (clone $this->context)->withLineNumberStart($lineno),
- 'PhanPluginDuplicateMatchArmExpression',
- "Duplicate match arm expression({STRING_LITERAL}) detected in match expression - the later entry will be ignored in favor of expression {CODE} at line {LINE}.",
- [$normalized_arm_expr_cond, ASTReverter::toShortString($arm_expr_constant_set[$cond_key][0]), $arm_expr_constant_set[$cond_key][1]],
- Issue::SEVERITY_NORMAL,
- Issue::REMEDIATION_A,
- 15071
- );
- }
- $arm_expr_constant_set[$cond_key] = [$arm_expr_cond, $arm_node->lineno];
- }
- }
- }
-
- /**
- * @param Node $node
- * An array literal(AST_ARRAY) node to analyze
- * @override
- */
- public function visitArray(Node $node): void
- {
- $children = $node->children;
- if (count($children) <= 1) {
- // This plugin will never emit errors if there are 0 or 1 elements.
- return;
- }
-
- $has_entry_without_key = false;
- $key_set = [];
- foreach ($children as $entry) {
- if (!($entry instanceof Node)) {
- continue; // Triggered by code such as `list(, $a) = $expr`. In php 7.1, the array and list() syntax was unified.
- }
- $key = $entry->children['key'] ?? null;
- // Skip array entries without literal keys. (Do it before resolving the key value)
- if (is_null($key)) {
- $has_entry_without_key = true;
- continue;
- }
- if (is_object($key)) {
- $key = UnionTypeVisitor::unionTypeFromNode($this->code_base, $this->context, $key)->asSingleScalarValueOrNullOrSelf();
- if (is_object($key)) {
- $key = self::HASH_PREFIX . ASTHasher::hash($entry->children['key']);
- }
- }
-
- if (isset($key_set[$key])) {
- // @phan-suppress-next-line PhanTypeMismatchDimFetchNullable
- $this->warnAboutDuplicateArrayKey($entry, $key, $key_set[$key]);
- }
- // @phan-suppress-next-line PhanTypeMismatchDimAssignment
- $key_set[$key] = $entry;
- }
- if ($has_entry_without_key && count($key_set) > 0) {
- // This is probably a typo in most codebases. (e.g. ['foo' => 'bar', 'baz'])
- // In phan, InternalFunctionSignatureMap.php does this deliberately with the first parameter being the return type.
- $this->emit(
- 'PhanPluginMixedKeyNoKey',
- "Should not mix array entries of the form [key => value,] with entries of the form [value,].",
- [],
- Issue::SEVERITY_NORMAL,
- Issue::REMEDIATION_A,
- 15071
- );
- }
- }
-
- /**
- * @param int|string|float|bool|null $key
- */
- private function warnAboutDuplicateArrayKey(Node $entry, $key, Node $old_entry): void
- {
- if (is_string($key) && strncmp($key, self::HASH_PREFIX, strlen(self::HASH_PREFIX)) === 0) {
- $this->emitPluginIssue(
- $this->code_base,
- (clone $this->context)->withLineNumberStart($entry->lineno),
- 'PhanPluginDuplicateArrayKeyExpression',
- "Duplicate dynamic array key expression ({CODE}) detected in array - the earlier entry at line {LINE} will be ignored if the expression had the same value.",
- [ASTReverter::toShortString($entry->children['key']), $old_entry->lineno],
- Issue::SEVERITY_NORMAL,
- Issue::REMEDIATION_A,
- 15071
- );
- return;
- }
- $normalized_key = self::normalizeKey($key);
- $this->emitPluginIssue(
- $this->code_base,
- (clone $this->context)->withLineNumberStart($entry->lineno),
- 'PhanPluginDuplicateArrayKey',
- "Duplicate/Equivalent array key value({STRING_LITERAL}) detected in array - the earlier entry {CODE} at line {LINE} will be ignored.",
- [$normalized_key, ASTReverter::toShortString($old_entry->children['key']), $old_entry->lineno],
- Issue::SEVERITY_NORMAL,
- Issue::REMEDIATION_A,
- 15071
- );
- }
-
- /**
- * Converts a key to the value it would be if used as a case.
- * E.g. 0, 0.5, and "0" all become the same value(0) when used as an array key.
- *
- * @param int|string|float|bool|null $key - The array key literal to be normalized.
- * @return string - The normalized representation.
- */
- private static function normalizeSwitchKey($key): string
- {
- if (is_int($key)) {
- return (string)$key;
- } elseif (!is_string($key)) {
- return (string)json_encode($key);
- }
- $tmp = [$key => true];
- return ASTReverter::toShortString(key($tmp));
- }
-
- /**
- * Converts a key to the value it would be if used as an array key.
- * E.g. 0, 0.5, and "0" all become the same value(0) when used as an array key.
- *
- * @param int|string|float|bool|null $key - The array key literal to be normalized.
- * @return string - The normalized representation.
- */
- private static function normalizeKey($key): string
- {
- if (is_int($key)) {
- return (string)$key;
- }
- $tmp = [$key => true];
- return ASTReverter::toShortString(key($tmp));
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new DuplicateArrayKeyPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/DuplicateConstantPlugin.php b/vendor/phan/phan/.phan/plugins/DuplicateConstantPlugin.php
deleted file mode 100644
index 056727ab..00000000
--- a/vendor/phan/phan/.phan/plugins/DuplicateConstantPlugin.php
+++ /dev/null
@@ -1,114 +0,0 @@
-children) <= 1) {
- return;
- }
- $declarations = [];
-
- foreach ($node->children as $child) {
- if (!$child instanceof Node) {
- continue;
- }
- if ($child->kind === ast\AST_CONST_DECL) {
- foreach ($child->children as $const) {
- if (!$const instanceof Node) {
- continue;
- }
- $name = (string) $const->children['name'];
- if (isset($declarations[$name])) {
- $this->warnDuplicateConstant($name, $declarations[$name], $const);
- } else {
- $declarations[$name] = $const;
- }
- }
- } elseif ($child->kind === ast\AST_CALL) {
- $expr = $child->children['expr'];
- if ($expr instanceof Node && $expr->kind === ast\AST_NAME && strcasecmp((string) $expr->children['name'], 'define') === 0) {
- $name = $child->children['args']->children[0] ?? null;
- if (is_string($name)) {
- if (isset($declarations[$name])) {
- $this->warnDuplicateConstant($name, $declarations[$name], $expr);
- } else {
- $declarations[$name] = $expr;
- }
- }
- }
- }
- }
- }
-
- private function warnDuplicateConstant(string $name, Node $original_def, Node $new_def): void
- {
- $this->emitPluginIssue(
- $this->code_base,
- (clone $this->context)->withLineNumberStart($new_def->lineno),
- 'PhanPluginDuplicateConstant',
- 'Constant {CONST} was previously declared at line {LINE} - the previous declaration will be used instead',
- [$name, $original_def->lineno]
- );
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new DuplicateConstantPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/DuplicateExpressionPlugin.php b/vendor/phan/phan/.phan/plugins/DuplicateExpressionPlugin.php
deleted file mode 100644
index 366cc732..00000000
--- a/vendor/phan/phan/.phan/plugins/DuplicateExpressionPlugin.php
+++ /dev/null
@@ -1,572 +0,0 @@
- true,
- flags\BINARY_BOOL_OR => true,
- flags\BINARY_BOOL_XOR => true,
- flags\BINARY_BITWISE_OR => true,
- flags\BINARY_BITWISE_AND => true,
- flags\BINARY_BITWISE_XOR => true,
- flags\BINARY_SUB => true,
- flags\BINARY_DIV => true,
- flags\BINARY_MOD => true,
- flags\BINARY_IS_IDENTICAL => true,
- flags\BINARY_IS_NOT_IDENTICAL => true,
- flags\BINARY_IS_EQUAL => true,
- flags\BINARY_IS_NOT_EQUAL => true,
- flags\BINARY_IS_SMALLER => true,
- flags\BINARY_IS_SMALLER_OR_EQUAL => true,
- flags\BINARY_IS_GREATER => true,
- flags\BINARY_IS_GREATER_OR_EQUAL => true,
- flags\BINARY_SPACESHIP => true,
- flags\BINARY_COALESCE => true,
- ];
-
- /**
- * A subset of REDUNDANT_BINARY_OP_SET.
- *
- * These binary operations will make this plugin warn if both sides are literals.
- */
- private const BINARY_OP_BOTH_LITERAL_WARN_SET = [
- flags\BINARY_BOOL_AND => true,
- flags\BINARY_BOOL_OR => true,
- flags\BINARY_BOOL_XOR => true,
- flags\BINARY_IS_IDENTICAL => true,
- flags\BINARY_IS_NOT_IDENTICAL => true,
- flags\BINARY_IS_EQUAL => true,
- flags\BINARY_IS_NOT_EQUAL => true,
- flags\BINARY_IS_SMALLER => true,
- flags\BINARY_IS_SMALLER_OR_EQUAL => true,
- flags\BINARY_IS_GREATER => true,
- flags\BINARY_IS_GREATER_OR_EQUAL => true,
- flags\BINARY_SPACESHIP => true,
- flags\BINARY_COALESCE => true,
- ];
-
- /**
- * @param Node $node
- * A binary operation node to analyze
- * @override
- * @suppress PhanAccessClassConstantInternal
- */
- public function visitBinaryOp(Node $node): void
- {
- $flags = $node->flags;
- if (!\array_key_exists($flags, self::REDUNDANT_BINARY_OP_SET)) {
- // Nothing to warn about
- return;
- }
- $left = $node->children['left'];
- $right = $node->children['right'];
- if (ASTHasher::hash($left) === ASTHasher::hash($right)) {
- $this->emitPluginIssue(
- $this->code_base,
- $this->context,
- 'PhanPluginDuplicateExpressionBinaryOp',
- 'Both sides of the binary operator {OPERATOR} are the same: {CODE}',
- [
- PostOrderAnalysisVisitor::NAME_FOR_BINARY_OP[$node->flags],
- ASTReverter::toShortString($left),
- ]
- );
- return;
- }
- if (!\array_key_exists($flags, self::BINARY_OP_BOTH_LITERAL_WARN_SET)) {
- return;
- }
- if ($left instanceof Node) {
- $left = self::resolveLiteralValue($left);
- if ($left instanceof Node) {
- return;
- }
- }
- if ($right instanceof Node) {
- $right = self::resolveLiteralValue($right);
- if ($right instanceof Node) {
- return;
- }
- }
- try {
- // @phan-suppress-next-line PhanPartialTypeMismatchArgument TODO: handle
- $result_representation = ASTReverter::toShortString(InferValue::computeBinaryOpResult($left, $right, $flags));
- } catch (Error $_) {
- $result_representation = '(unknown)';
- }
- $this->emitPluginIssue(
- $this->code_base,
- $this->context,
- 'PhanPluginBothLiteralsBinaryOp',
- 'Suspicious usage of a binary operator where both operands are literals. Expression: {CODE} {OPERATOR} {CODE} (result is {CODE})',
- [
- ASTReverter::toShortString($left),
- PostOrderAnalysisVisitor::NAME_FOR_BINARY_OP[$flags],
- ASTReverter::toShortString($right),
- $result_representation,
- ]
- );
- }
-
- /**
- * @param Node $node
- * An assignment operation node to analyze
- * @override
- */
- public function visitAssignRef(Node $node): void
- {
- $this->visitAssign($node);
- }
-
- private const ASSIGN_OP_FLAGS = [
- flags\BINARY_BITWISE_OR => '|',
- flags\BINARY_BITWISE_AND => '&',
- flags\BINARY_BITWISE_XOR => '^',
- flags\BINARY_CONCAT => '.',
- flags\BINARY_ADD => '+',
- flags\BINARY_SUB => '-',
- flags\BINARY_MUL => '*',
- flags\BINARY_DIV => '/',
- flags\BINARY_MOD => '%',
- flags\BINARY_POW => '**',
- flags\BINARY_SHIFT_LEFT => '<<',
- flags\BINARY_SHIFT_RIGHT => '>>',
- flags\BINARY_COALESCE => '??',
- ];
-
- /**
- * @param Node $node
- * An assignment operation node to analyze
- * @override
- */
- public function visitAssign(Node $node): void
- {
- $expr = $node->children['expr'];
- if (!$expr instanceof Node) {
- // Guaranteed not to contain duplicate expressions in valid php assignments.
- return;
- }
- $var = $node->children['var'];
- if ($expr->kind === ast\AST_BINARY_OP) {
- $op_str = self::ASSIGN_OP_FLAGS[$expr->flags] ?? null;
- if (is_string($op_str) && ASTHasher::hash($var) === ASTHasher::hash($expr->children['left'])) {
- $message = 'Can simplify this assignment to {CODE} {OPERATOR} {CODE}';
- if ($expr->flags === ast\flags\BINARY_COALESCE) {
- if (Config::get_closest_minimum_target_php_version_id() < 70400) {
- return;
- }
- $message .= ' (requires php version 7.4 or newer)';
- }
-
- $this->emitPluginIssue(
- $this->code_base,
- $this->context,
- 'PhanPluginDuplicateExpressionAssignmentOperation',
- $message,
- [
- ASTReverter::toShortString($var),
- $op_str . '=',
- ASTReverter::toShortString($expr->children['right']),
- ]
- );
- }
- return;
- }
- if (ASTHasher::hash($var) === ASTHasher::hash($expr)) {
- $this->emitPluginIssue(
- $this->code_base,
- $this->context,
- 'PhanPluginDuplicateExpressionAssignment',
- 'Both sides of the assignment {OPERATOR} are the same: {CODE}',
- [
- $node->kind === ast\AST_ASSIGN_REF ? '=&' : '=',
- ASTReverter::toShortString($var),
- ]
- );
- return;
- }
- }
-
- /**
- * @return bool|null|Node the resolved value of $node, or $node if it could not be resolved
- * This could be more permissive about what constants are allowed (e.g. user-defined constants, real constants like PI, etc.),
- * but that may cause more false positives.
- */
- private static function resolveLiteralValue(Node $node)
- {
- if ($node->kind !== ast\AST_CONST) {
- return $node;
- }
- // @phan-suppress-next-line PhanTypeMismatchArgumentNullableInternal
- switch (\strtolower($node->children['name']->children['name'] ?? null)) {
- case 'false':
- return false;
- case 'true':
- return true;
- case 'null':
- return null;
- default:
- return $node;
- }
- }
-
- /**
- * @param Node $node
- * A binary operation node to analyze
- * @override
- */
- public function visitConditional(Node $node): void
- {
- $cond_node = $node->children['cond'];
- $true_node_hash = ASTHasher::hash($node->children['true']);
-
- if (ASTHasher::hash($cond_node) === $true_node_hash) {
- $this->emitPluginIssue(
- $this->code_base,
- $this->context,
- 'PhanPluginDuplicateConditionalTernaryDuplication',
- '"X ? X : Y" can usually be simplified to "X ?: Y". The duplicated expression X was {CODE}',
- [ASTReverter::toShortString($cond_node)]
- );
- return;
- }
- $false_node_hash = ASTHasher::hash($node->children['false']);
- if ($true_node_hash === $false_node_hash) {
- $this->emitPluginIssue(
- $this->code_base,
- $this->context,
- 'PhanPluginDuplicateConditionalUnnecessary',
- '"X ? Y : Y" results in the same expression Y no matter what X evaluates to. Y was {CODE}',
- [ASTReverter::toShortString($cond_node)]
- );
- return;
- }
-
- if (!$cond_node instanceof Node) {
- return;
- }
- switch ($cond_node->kind) {
- case ast\AST_ISSET:
- if (ASTHasher::hash($cond_node->children['var']) === $true_node_hash) {
- $this->warnDuplicateConditionalNullCoalescing('isset(X) ? X : Y', $node->children['true']);
- }
- break;
- case ast\AST_BINARY_OP:
- $this->checkBinaryOpOfConditional($cond_node, $true_node_hash);
- break;
- case ast\AST_UNARY_OP:
- $this->checkUnaryOpOfConditional($cond_node, $true_node_hash);
- break;
- }
- }
-
- /**
- * @param Node $node
- * A statement list of kind ast\AST_STMT_LIST to analyze.
- * @override
- */
- public function visitStmtList(Node $node): void
- {
- $children = $node->children;
- if (count($children) < 2) {
- return;
- }
- $prev_hash = null;
- foreach ($children as $child) {
- $hash = ASTHasher::hash($child);
- if ($hash === $prev_hash) {
- $this->emitPluginIssue(
- $this->code_base,
- (clone $this->context)->withLineNumberStart($child->lineno ?? $node->lineno),
- 'PhanPluginDuplicateAdjacentStatement',
- "Statement {CODE} is a duplicate of the statement on the above line. Suppress this issue instance if there's a good reason for this.",
- [ASTReverter::toShortString($child)]
- );
- }
- $prev_hash = $hash;
- }
- }
-
- /**
- * @param int|string $true_node_hash
- */
- private function checkBinaryOpOfConditional(Node $cond_node, $true_node_hash): void
- {
- if ($cond_node->flags !== ast\flags\BINARY_IS_NOT_IDENTICAL) {
- return;
- }
- $left_node = $cond_node->children['left'];
- $right_node = $cond_node->children['right'];
- if (self::isNullConstantNode($left_node)) {
- if (ASTHasher::hash($right_node) === $true_node_hash) {
- $this->warnDuplicateConditionalNullCoalescing('null !== X ? X : Y', $right_node);
- }
- } elseif (self::isNullConstantNode($right_node)) {
- if (ASTHasher::hash($left_node) === $true_node_hash) {
- $this->warnDuplicateConditionalNullCoalescing('X !== null ? X : Y', $left_node);
- }
- }
- }
-
- /**
- * @param int|string $true_node_hash
- */
- private function checkUnaryOpOfConditional(Node $cond_node, $true_node_hash): void
- {
- if ($cond_node->flags !== ast\flags\UNARY_BOOL_NOT) {
- return;
- }
- $expr = $cond_node->children['expr'];
- if (!$expr instanceof Node) {
- return;
- }
- if ($expr->kind === ast\AST_CALL) {
- $function = $expr->children['expr'];
- if (!$function instanceof Node ||
- $function->kind !== ast\AST_NAME ||
- strcasecmp((string)($function->children['name'] ?? ''), 'is_null') !== 0
- ) {
- return;
- }
- $args = $expr->children['args']->children;
- if (count($args) !== 1) {
- return;
- }
- if (ASTHasher::hash($args[0]) === $true_node_hash) {
- $this->warnDuplicateConditionalNullCoalescing('!is_null(X) ? X : Y', $args[0]);
- }
- }
- }
-
- /**
- * @param Node|mixed $node
- */
- private static function isNullConstantNode($node): bool
- {
- if (!$node instanceof Node) {
- return false;
- }
- return $node->kind === ast\AST_CONST && strcasecmp((string)($node->children['name']->children['name'] ?? ''), 'null') === 0;
- }
-
- /**
- * @param ?(Node|string|int|float) $x_node
- */
- private function warnDuplicateConditionalNullCoalescing(string $expr, $x_node): void
- {
- $this->emitPluginIssue(
- $this->code_base,
- $this->context,
- 'PhanPluginDuplicateConditionalNullCoalescing',
- '"' . $expr . '" can usually be simplified to "X ?? Y" in PHP 7. The duplicated expression X was {CODE}',
- [ASTReverter::toShortString($x_node)]
- );
- }
-}
-
-/**
- * This visitor analyzes node kinds that can be the root of expressions
- * containing duplicate expressions, and is called on nodes in pre-order.
- */
-class RedundantNodePreAnalysisVisitor extends PluginAwarePreAnalysisVisitor
-{
- /**
- * @override
- */
- public function visitIf(Node $node): void
- {
- if (count($node->children) <= 1) {
- // There can't be any duplicates.
- return;
- }
- // @phan-suppress-next-line PhanUndeclaredProperty
- if (isset($node->is_inside_else)) {
- return;
- }
- $children = self::extractIfElseifChain($node);
- // The checks of visitIf are done in pre-order (parent nodes analyzed before child nodes)
- // so that checked_duplicate_if can be set, to avoid redundant work.
- // @phan-suppress-next-line PhanUndeclaredProperty
- if (isset($node->checked_duplicate_if)) {
- return;
- }
- // @phan-suppress-next-line PhanUndeclaredProperty
- $node->checked_duplicate_if = true;
- ['cond' => $prev_cond /*, 'stmts' => $prev_stmts */] = $children[0]->children;
- // $prev_stmts_hash = ASTHasher::hash($prev_cond);
- $condition_set = [ASTHasher::hash($prev_cond) => true];
- $N = count($children);
- for ($i = 1; $i < $N; $i++) {
- ['cond' => $cond /*, 'stmts' => $stmts */] = $children[$i]->children;
- $cond_hash = ASTHasher::hash($cond);
- if (isset($condition_set[$cond_hash])) {
- $this->emitPluginIssue(
- $this->code_base,
- (clone $this->context)->withLineNumberStart($cond->lineno ?? $children[$i]->lineno),
- 'PhanPluginDuplicateIfCondition',
- 'Saw the same condition {CODE} in an earlier if/elseif statement',
- [ASTReverter::toShortString($cond)]
- );
- } else {
- $condition_set[$cond_hash] = true;
- }
- }
- if (!isset($cond)) {
- $stmts = $children[$N - 1]->children['stmts'];
- if (($stmts->children ?? null) && ASTHasher::hash($stmts) === ASTHasher::hash($children[$N - 2]->children['stmts'])) {
- $this->emitPluginIssue(
- $this->code_base,
- (clone $this->context)->withLineNumberStart($children[$N - 1]->lineno),
- 'PhanPluginDuplicateIfStatements',
- 'The statements of the else duplicate the statements of the previous if/elseif statement with condition {CODE}',
- [ASTReverter::toShortString($children[$N - 2]->children['cond'])]
- );
- }
- }
- }
-
- /**
- * Visit a node of kind ast\AST_TRY, to check for adjacent catch blocks
- *
- * @override
- * @suppress PhanPossiblyUndeclaredProperty
- */
- public function visitTry(Node $node): void
- {
- if (Config::get_closest_target_php_version_id() < 70100) {
- return;
- }
- $catches = $node->children['catches']->children ?? [];
- $n = count($catches);
- if ($n <= 1) {
- // There can't be any duplicates.
- return;
- }
- $prev_hash = ASTHasher::hash($catches[0]->children['stmts']) . ASTHasher::hash($catches[0]->children['var']);
- for ($i = 1; $i < $n; $prev_hash = $cur_hash, $i++) {
- $cur_hash = ASTHasher::hash($catches[$i]->children['stmts']) . ASTHasher::hash($catches[$i]->children['var']);
- if ($prev_hash === $cur_hash) {
- $this->emitPluginIssue(
- $this->code_base,
- (clone $this->context)->withLineNumberStart($catches[$i]->lineno),
- 'PhanPluginDuplicateCatchStatementBody',
- 'The implementation of catch({CODE}) and catch({CODE}) are identical, and can be combined if the application only needs to supports php 7.1 and newer',
- [
- ASTReverter::toShortString($catches[$i - 1]->children['class']),
- ASTReverter::toShortString($catches[$i]->children['class']),
- ]
- );
- }
- }
- }
-
- /**
- * @param Node $node a node of kind ast\AST_IF
- * @return list the list of AST_IF_ELEM nodes making up the chain of if/elseif/else if conditions.
- * @suppress PhanPartialTypeMismatchReturn
- */
- private static function extractIfElseifChain(Node $node): array
- {
- $children = $node->children;
- if (count($children) <= 1) {
- return $children;
- }
- $last_child = \end($children);
- // Loop over the `} else {` blocks.
- // @phan-suppress-next-line PhanPossiblyUndeclaredProperty
- while ($last_child->children['cond'] === null) {
- $first_stmt = $last_child->children['stmts']->children[0] ?? null;
- if (!($first_stmt instanceof Node)) {
- break;
- }
- if ($first_stmt->kind !== ast\AST_IF) {
- break;
- }
- // @phan-suppress-next-line PhanUndeclaredProperty
- $first_stmt->is_inside_else = true;
- \array_pop($children);
- \array_push($children, ...$first_stmt->children);
- $last_child = \end($children);
- }
- return $children;
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-
-return new DuplicateExpressionPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/EmptyMethodAndFunctionPlugin.php b/vendor/phan/phan/.phan/plugins/EmptyMethodAndFunctionPlugin.php
deleted file mode 100644
index bf920bf3..00000000
--- a/vendor/phan/phan/.phan/plugins/EmptyMethodAndFunctionPlugin.php
+++ /dev/null
@@ -1,125 +0,0 @@
-children['stmts'] ?? null;
-
- if (!$stmts_node || $stmts_node->children) {
- return;
- }
- $method = $this->context->getFunctionLikeInScope($this->code_base);
- if (!($method instanceof Method)) {
- throw new AssertionError("Expected $method to be a method");
- }
- if ($method->isNewConstructor()) {
- foreach ($node->children['params']->children as $param) {
- if ($param instanceof Node && ($param->flags & Parameter::PARAM_MODIFIER_VISIBILITY_FLAGS)) {
- // This uses constructor property promotion
- return;
- }
- }
- }
-
- if (!$method->isOverriddenByAnother()
- && !$method->isOverride()
- && !$method->isDeprecated()
- ) {
- $this->emitIssue(
- self::getIssueTypeForEmptyMethod($method),
- $node->lineno,
- $method->getRepresentationForIssue()
- );
- }
- }
-
- public function visitFuncDecl(Node $node): void
- {
- $this->analyzeFunction($node);
- }
-
- public function visitClosure(Node $node): void
- {
- $this->analyzeFunction($node);
- }
-
- // No need for visitArrowFunc.
- // By design, `fn($args) => expr` can't have an empty statement list because it must have an expression.
- // It's always equivalent to `return expr;`
-
- private function analyzeFunction(Node $node): void
- {
- $stmts_node = $node->children['stmts'] ?? null;
-
- if ($stmts_node && !$stmts_node->children) {
- $function = $this->context->getFunctionLikeInScope($this->code_base);
- if (!($function instanceof Func)) {
- throw new AssertionError("Expected $function to be Func\n");
- }
-
- if (!$function->isDeprecated()) {
- $this->emitIssue(
- $function->isClosure() ? Issue::EmptyClosure : Issue::EmptyFunction,
- $node->lineno,
- $function->getRepresentationForIssue()
- );
- }
- }
- }
-
- private static function getIssueTypeForEmptyMethod(FunctionInterface $method): string
- {
- if (!$method instanceof Method) {
- throw new \InvalidArgumentException("\$method is not an instance of Method");
- }
-
- if ($method->isPrivate()) {
- return Issue::EmptyPrivateMethod;
- }
-
- if ($method->isProtected()) {
- return Issue::EmptyProtectedMethod;
- }
-
- return Issue::EmptyPublicMethod;
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new EmptyMethodAndFunctionPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/EmptyStatementListPlugin.php b/vendor/phan/phan/.phan/plugins/EmptyStatementListPlugin.php
deleted file mode 100644
index 73ad8770..00000000
--- a/vendor/phan/phan/.phan/plugins/EmptyStatementListPlugin.php
+++ /dev/null
@@ -1,360 +0,0 @@
- set by plugin framework
- * @suppress PhanReadOnlyProtectedProperty
- */
- protected $parent_node_list;
-
- /**
- * @param Node $node
- * A node to analyze
- * @override
- */
- public function visitIf(Node $node): void
- {
- // @phan-suppress-next-line PhanUndeclaredProperty set by ASTSimplifier
- if (isset($node->is_simplified)) {
- $first_child = end($node->children);
- if (!$first_child instanceof Node || $first_child->children['cond'] === null) {
- return;
- }
- $last_if_elem = reset($node->children);
- } else {
- $last_if_elem = end($node->children);
- }
- if (!$last_if_elem instanceof Node) {
- // probably impossible
- return;
- }
- $stmts_node = $last_if_elem->children['stmts'];
- if (!$stmts_node instanceof Node) {
- // probably impossible
- return;
- }
- if ($stmts_node->children) {
- // the last if element has statements
- return;
- }
- if ($last_if_elem->children['cond'] === null) {
- // Don't bother warning about else
- return;
- }
- if ($this->hasTODOComment($stmts_node->lineno, $node)) {
- // Don't warn if there is a FIXME/TODO comment in/around the empty statement list
- return;
- }
-
- $this->emitPluginIssue(
- $this->code_base,
- (clone $this->context)->withLineNumberStart($last_if_elem->children['stmts']->lineno ?? $last_if_elem->lineno),
- 'PhanPluginEmptyStatementIf',
- 'Empty statement list statement detected for the last if/elseif statement',
- []
- );
- }
-
- private function hasTODOComment(int $lineno, Node $analyzed_node, ?int $end_lineno = null): bool
- {
- if (EmptyStatementListPlugin::$ignore_todos) {
- return false;
- }
- $file = FileCache::getOrReadEntry($this->context->getFile());
- $lines = $file->getLines();
- $end_lineno = max($lineno, $end_lineno ?? $this->findEndLine($lineno, $analyzed_node));
- for ($i = $lineno; $i <= $end_lineno; $i++) {
- $line = $lines[$i] ?? null;
- if (!is_string($line)) {
- break;
- }
- if (preg_match('/todo|fixme|deliberately empty/i', $line) > 0) {
- return true;
- }
- }
- return false;
- }
-
- private function findEndLine(int $lineno, Node $search_node): int
- {
- for ($node_index = count($this->parent_node_list) - 1; $node_index >= 0; $node_index--) {
- $node = $this->parent_node_list[$node_index] ?? null;
- if (!$node) {
- continue;
- }
- if (isset($node->endLineno)) {
- // Return the end line of the function declaration.
- return $node->endLineno;
- }
- if ($node->kind === ast\AST_STMT_LIST) {
- foreach ($node->children as $i => $c) {
- if ($c === $search_node) {
- $next_node = $node->children[$i + 1] ?? null;
- if ($next_node instanceof Node) {
- return $next_node->lineno - 1;
- }
- break;
- }
- }
- }
- $search_node = $node;
- }
- // Give up and guess.
- return $lineno + 5;
- }
-
- /**
- * @param Node $node
- * A node of kind ast\AST_FOR to analyze
- * @override
- */
- public function visitFor(Node $node): void
- {
- $stmts_node = $node->children['stmts'];
- if (!$stmts_node instanceof Node) {
- // impossible
- return;
- }
- if ($stmts_node->children || ($node->children['loop']->children ?? null)) {
- // the for loop has statements, in the body and/or in the loop condition.
- return;
- }
- if ($this->hasTODOComment($stmts_node->lineno, $node)) {
- // Don't warn if there is a FIXME/TODO comment in/around the empty statement list
- return;
- }
- $this->emitPluginIssue(
- $this->code_base,
- (clone $this->context)->withLineNumberStart($stmts_node->lineno ?? $node->lineno),
- 'PhanPluginEmptyStatementForLoop',
- 'Empty statement list statement detected for the for loop',
- []
- );
- }
-
- /**
- * @param Node $node
- * A node to analyze
- * @override
- */
- public function visitWhile(Node $node): void
- {
- $stmts_node = $node->children['stmts'];
- if (!$stmts_node instanceof Node) {
- return; // impossible
- }
- if ($stmts_node->children) {
- // the while loop has statements
- return;
- }
- if ($this->hasTODOComment($stmts_node->lineno, $node)) {
- // Don't warn if there is a FIXME/TODO comment in/around the empty statement list
- return;
- }
- $this->emitPluginIssue(
- $this->code_base,
- (clone $this->context)->withLineNumberStart($stmts_node->lineno ?? $node->lineno),
- 'PhanPluginEmptyStatementWhileLoop',
- 'Empty statement list statement detected for the while loop',
- []
- );
- }
-
- /**
- * @param Node $node
- * A node to analyze
- * @override
- */
- public function visitDoWhile(Node $node): void
- {
- $stmts_node = $node->children['stmts'];
- if (!$stmts_node instanceof Node) {
- return; // impossible
- }
- if ($stmts_node->children ?? null) {
- // the while loop has statements
- return;
- }
- if ($this->hasTODOComment($stmts_node->lineno, $node)) {
- // Don't warn if there is a FIXME/TODO comment in/around the empty statement list
- return;
- }
- $this->emitPluginIssue(
- $this->code_base,
- (clone $this->context)->withLineNumberStart($stmts_node->lineno),
- 'PhanPluginEmptyStatementDoWhileLoop',
- 'Empty statement list statement detected for the do-while loop',
- []
- );
- }
-
- /**
- * @param Node $node
- * A node to analyze
- * @override
- */
- public function visitForeach(Node $node): void
- {
- $stmts_node = $node->children['stmts'];
- if (!$stmts_node instanceof Node) {
- // impossible
- return;
- }
- if ($stmts_node->children) {
- // the while loop has statements
- return;
- }
- if ($this->hasTODOComment($stmts_node->lineno, $node)) {
- // Don't warn if there is a FIXME/TODO comment in/around the empty statement list
- return;
- }
- $this->emitPluginIssue(
- $this->code_base,
- (clone $this->context)->withLineNumberStart($stmts_node->lineno),
- 'PhanPluginEmptyStatementForeachLoop',
- 'Empty statement list statement detected for the foreach loop',
- []
- );
- }
-
- /**
- * @param Node $node
- * A node to analyze
- * @override
- */
- public function visitTry(Node $node): void
- {
- ['try' => $try_node, 'finally' => $finally_node] = $node->children;
- if (!$try_node->children) {
- if (!$this->hasTODOComment($try_node->lineno, $node, $node->children['catches']->children[0]->lineno ?? $finally_node->lineno ?? null)) {
- $this->emitPluginIssue(
- $this->code_base,
- (clone $this->context)->withLineNumberStart($try_node->lineno),
- 'PhanPluginEmptyStatementTryBody',
- 'Empty statement list statement detected for the try statement\'s body',
- []
- );
- }
- }
- if ($finally_node instanceof Node && !$finally_node->children) {
- if (!$this->hasTODOComment($finally_node->lineno, $node)) {
- $this->emitPluginIssue(
- $this->code_base,
- (clone $this->context)->withLineNumberStart($finally_node->lineno),
- 'PhanPluginEmptyStatementTryFinally',
- 'Empty statement list statement detected for the try\'s finally body',
- []
- );
- }
- }
- }
-
- /**
- * @param Node $node
- * A node of kind ast\AST_SWITCH to analyze
- * @override
- */
- public function visitSwitch(Node $node): void
- {
- // Check all case statements and return if something that isn't a no-op is seen.
- foreach ($node->children['stmts']->children ?? [] as $c) {
- if (!$c instanceof Node) {
- // impossible
- continue;
- }
-
- $children = $c->children['stmts']->children ?? null;
- if ($children) {
- if (count($children) > 1) {
- return;
- }
- $only_node = $children[0];
- if ($only_node instanceof Node) {
- if (!in_array($only_node->kind, [ast\AST_CONTINUE, ast\AST_BREAK], true)) {
- return;
- }
- if (($only_node->children['depth'] ?? 1) !== 1) {
- // not a no-op
- return;
- }
- }
- }
- if (!ParseVisitor::isConstExpr($c->children['cond'], ParseVisitor::CONSTANT_EXPRESSION_FORBID_NEW_EXPRESSION)) {
- return;
- }
- }
- $this->emitPluginIssue(
- $this->code_base,
- (clone $this->context)->withLineNumberStart($node->lineno),
- 'PhanPluginEmptyStatementSwitch',
- 'No side effects seen for any cases of this switch statement',
- []
- );
- }
-}
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new EmptyStatementListPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/FFIAnalysisPlugin.php b/vendor/phan/phan/.phan/plugins/FFIAnalysisPlugin.php
deleted file mode 100644
index d6d28f69..00000000
--- a/vendor/phan/phan/.phan/plugins/FFIAnalysisPlugin.php
+++ /dev/null
@@ -1,153 +0,0 @@
-children['var'];
- if (!($left instanceof Node)) {
- return;
- }
- if ($left->kind !== ast\AST_VAR) {
- return;
- }
- $var_name = $left->children['name'];
- if (!is_string($var_name)) {
- return;
- }
- $scope = $this->context->getScope();
- if (!$scope->hasVariableWithName($var_name)) {
- return;
- }
- $var = $scope->getVariableByName($var_name);
- $category = self::containsFFICDataType($var->getUnionType());
- if (!$category) {
- return;
- }
- // @phan-suppress-next-line PhanUndeclaredProperty
- $node->is_ffi = $category;
- }
-
- public const PARTIALLY_FFI_CDATA = 1;
- public const ENTIRELY_FFI_CDATA = 2;
-
- /**
- * Check if the type contains FFI\CData
- */
- private static function containsFFICDataType(UnionType $union_type): int
- {
- foreach ($union_type->getTypeSet() as $type) {
- if (strcasecmp('\FFI', $type->getNamespace()) !== 0) {
- continue;
- }
- if (strcasecmp('CData', $type->getName()) !== 0) {
- continue;
- }
- if ($type->isNullable()) {
- return self::PARTIALLY_FFI_CDATA;
- }
- if ($union_type->typeCount() > 1) {
- return self::PARTIALLY_FFI_CDATA;
- }
- return self::ENTIRELY_FFI_CDATA;
- }
- return 0;
- }
-}
-
-/**
- * This visitor restores FFI\CData types after assignments if the original value was FFI\CData
- */
-class FFIPostAnalysisVisitor extends PluginAwarePostAnalysisVisitor
-{
- /**
- * @override
- */
- public function visitAssign(Node $node): void
- {
- // @phan-suppress-next-line PhanUndeclaredProperty
- if (isset($node->is_ffi)) {
- $this->analyzeFFIAssign($node);
- }
- }
-
- private function analyzeFFIAssign(Node $node): void
- {
- $var_name = $node->children['var']->children['name'] ?? null;
- if (!is_string($var_name)) {
- return;
- }
- $cdata_type = UnionType::fromFullyQualifiedPHPDocString('\FFI\CData');
- $scope = $this->context->getScope();
- // @phan-suppress-next-line PhanUndeclaredProperty
- if ($node->is_ffi !== FFIPreAnalysisVisitor::ENTIRELY_FFI_CDATA) {
- if ($scope->hasVariableWithName($var_name)) {
- $cdata_type = $cdata_type->withUnionType($scope->getVariableByName($var_name)->getUnionType());
- }
- }
- $this->context->getScope()->addVariable(
- new Variable($this->context, $var_name, $cdata_type, 0)
- );
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-
-return new FFIAnalysisPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/HasPHPDocPlugin.php b/vendor/phan/phan/.phan/plugins/HasPHPDocPlugin.php
deleted file mode 100644
index 22f2af20..00000000
--- a/vendor/phan/phan/.phan/plugins/HasPHPDocPlugin.php
+++ /dev/null
@@ -1,402 +0,0 @@
-isAnonymous()) {
- // Probably not useful in many cases to document a short anonymous class.
- return;
- }
- $doc_comment = $class->getDocComment();
- if (!StringUtil::isNonZeroLengthString($doc_comment)) {
- self::emitIssue(
- $code_base,
- $class->getContext(),
- 'PhanPluginNoCommentOnClass',
- 'Class {CLASS} has no doc comment',
- [$class->getFQSEN()]
- );
- return;
- }
- $description = MarkupDescription::extractDescriptionFromDocComment($class);
- if (!StringUtil::isNonZeroLengthString($description)) {
- if (strpos($doc_comment, '@deprecated') !== false) {
- return;
- }
- self::emitIssue(
- $code_base,
- $class->getContext(),
- 'PhanPluginDescriptionlessCommentOnClass',
- 'Class {CLASS} has no readable description: {STRING_LITERAL}',
- [$class->getFQSEN(), self::getDocCommentRepresentation($doc_comment)]
- );
- return;
- }
- }
-
- /**
- * @param CodeBase $code_base
- * The code base in which the function exists
- *
- * @param Func $function
- * A function being analyzed
- * @override
- */
- public function analyzeFunction(
- CodeBase $code_base,
- Func $function
- ): void {
- if ($function->isPHPInternal()) {
- // This isn't user-defined, there's no reason to warn or way to change it.
- return;
- }
- if ($function->isNSInternal($code_base)) {
- // (at)internal are internal to the library, and there's less of a need to document them
- return;
- }
- if ($function->isClosure()) {
- // Probably not useful in many cases to document a short closure passed to array_map, etc.
- return;
- }
- $doc_comment = $function->getDocComment();
- if (!StringUtil::isNonZeroLengthString($doc_comment)) {
- self::emitIssue(
- $code_base,
- $function->getContext(),
- "PhanPluginNoCommentOnFunction",
- "Function {FUNCTION} has no doc comment",
- [$function->getFQSEN()]
- );
- return;
- }
- $description = MarkupDescription::extractDescriptionFromDocComment($function);
- if (!StringUtil::isNonZeroLengthString($description)) {
- self::emitIssue(
- $code_base,
- $function->getContext(),
- "PhanPluginDescriptionlessCommentOnFunction",
- "Function {FUNCTION} has no readable description: {STRING_LITERAL}",
- [$function->getFQSEN(), self::getDocCommentRepresentation($doc_comment)]
- );
- return;
- }
- }
-
- /**
- * Encode the doc comment in a one-line form that can be used in Phan's issue message.
- * @internal
- */
- public static function getDocCommentRepresentation(string $doc_comment): string
- {
- return (string)json_encode(MarkupDescription::getDocCommentWithoutWhitespace($doc_comment), JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
- }
-
- public static function getPostAnalyzeNodeVisitorClassName(): string
- {
- return (bool)(Config::getValue('plugin_config')['has_phpdoc_check_duplicates'] ?? false)
- ? DuplicatePHPDocCheckerPlugin::class
- : BasePHPDocCheckerPlugin::class;
- }
-}
-
-/** Infer property and class doc comments and warn */
-class BasePHPDocCheckerPlugin extends PluginAwarePostAnalysisVisitor
-{
- /** @return array{0:list,1:list} */
- public function visitClass(Node $node): array
- {
- $class = $this->context->getClassInScope($this->code_base);
- $property_descriptions = [];
- $method_descriptions = [];
- foreach ($node->children['stmts']->children ?? [] as $element) {
- if (!($element instanceof Node)) {
- throw new AssertionError("All properties of ast\AST_CLASS's statement list must be nodes, saw " . gettype($element));
- }
- switch ($element->kind) {
- case ast\AST_METHOD:
- $entry = $this->checkMethodDescription($class, $element);
- if ($entry) {
- $method_descriptions[] = $entry;
- }
- break;
- case ast\AST_PROP_GROUP:
- $entry = $this->checkPropGroupDescription($class, $element);
- if ($entry) {
- $property_descriptions[] = $entry;
- }
- break;
- }
- }
- return [$property_descriptions, $method_descriptions];
- }
-
- /**
- * @param Node $node a node of kind ast\AST_METHOD
- */
- private function checkMethodDescription(Clazz $class, Node $node): ?ClassElementEntry
- {
- $method_name = (string)$node->children['name'];
- $method = $class->getMethodByName($this->code_base, $method_name);
- if ($method->isMagic()) {
- // Ignore construct
- return null;
- }
- if ($method->isOverride()) {
- return null;
- }
- $method_filter = HasPHPDocPlugin::$method_filter;
- if (is_string($method_filter)) {
- $fqsen_string = ltrim((string)$method->getFQSEN(), '\\');
- if (preg_match($method_filter, $fqsen_string) > 0) {
- return null;
- }
- }
-
- $doc_comment = $method->getDocComment();
- if (!StringUtil::isNonZeroLengthString($doc_comment)) {
- $visibility_upper = ucfirst($method->getVisibilityName());
- self::emitPluginIssue(
- $this->code_base,
- $method->getContext(),
- "PhanPluginNoCommentOn${visibility_upper}Method",
- "$visibility_upper method {METHOD} has no doc comment",
- [$method->getFQSEN()]
- );
- return null;
- }
- $description = MarkupDescription::extractDescriptionFromDocComment($method);
- if (!StringUtil::isNonZeroLengthString($description)) {
- $visibility_upper = ucfirst($method->getVisibilityName());
- self::emitPluginIssue(
- $this->code_base,
- $method->getContext(),
- "PhanPluginDescriptionlessCommentOn${visibility_upper}Method",
- "$visibility_upper method {METHOD} has no readable description: {STRING_LITERAL}",
- [$method->getFQSEN(), HasPHPDocPlugin::getDocCommentRepresentation($doc_comment)]
- );
- return null;
- }
- return new ClassElementEntry($method, \trim(\preg_replace('/\s+/', ' ', $description)));
- }
-
- /**
- * @param Node $node a node of type ast\AST_PROP_GROUP
- */
- private function checkPropGroupDescription(Clazz $class, Node $node): ?ClassElementEntry
- {
- $property_name = $node->children['props']->children[0]->children['name'] ?? null;
- if (!is_string($property_name)) {
- return null;
- }
- $property = $class->getPropertyByName($this->code_base, $property_name);
- $doc_comment = $property->getDocComment();
- if (!StringUtil::isNonZeroLengthString($doc_comment)) {
- $visibility_upper = ucfirst($property->getVisibilityName());
- self::emitPluginIssue(
- $this->code_base,
- $property->getContext(),
- "PhanPluginNoCommentOn${visibility_upper}Property",
- "$visibility_upper property {PROPERTY} has no doc comment",
- [$property->getRepresentationForIssue()]
- );
- return null;
- }
- // @phan-suppress-next-line PhanAccessMethodInternal
- $description = MarkupDescription::extractDocComment($doc_comment, Comment::ON_PROPERTY, null, true);
- if (!StringUtil::isNonZeroLengthString($description)) {
- $visibility_upper = ucfirst($property->getVisibilityName());
- self::emitPluginIssue(
- $this->code_base,
- $property->getContext(),
- "PhanPluginDescriptionlessCommentOn${visibility_upper}Property",
- "$visibility_upper property {PROPERTY} has no readable description: {STRING_LITERAL}",
- [$property->getRepresentationForIssue(), HasPHPDocPlugin::getDocCommentRepresentation($doc_comment)]
- );
- return null;
- }
- return new ClassElementEntry($property, \trim(\preg_replace('/\s+/', ' ', $description)));
- }
-}
-
-/**
- * Describes a property group or a method node and the associated description
- * @phan-immutable
- * @internal
- */
-final class ClassElementEntry
-{
- /** @var ClassElement the element (or element group) */
- public $element;
- /** @var string the phpdoc description */
- public $description;
-
- public function __construct(ClassElement $element, string $description)
- {
- $this->element = $element;
- $this->description = $description;
- }
-}
-
-/**
- * Check if phpdoc of property groups and methods are duplicated
- * @internal
- */
-final class DuplicatePHPDocCheckerPlugin extends BasePHPDocCheckerPlugin
-{
- /** No-op */
- public function visitClass(Node $node): array
- {
- [$property_descriptions, $method_descriptions] = parent::visitClass($node);
- foreach (self::findGroups($property_descriptions) as $entries) {
- $first_entry = array_shift($entries);
- if (!$first_entry instanceof ClassElementEntry) {
- throw new AssertionError('Expected $entries of $property_descriptions to be a group of 1 or more entries');
- }
- $first_property = $first_entry->element;
- foreach ($entries as $entry) {
- $property = $entry->element;
- self::emitPluginIssue(
- $this->code_base,
- $property->getContext(),
- "PhanPluginDuplicatePropertyDescription",
- "Property {PROPERTY} has the same description as the property \${PROPERTY} on line {LINE}: {COMMENT}",
- [$property->getRepresentationForIssue(), $first_property->getName(), $first_property->getContext()->getLineNumberStart(), $first_entry->description]
- );
- }
- }
- foreach (self::findGroups($method_descriptions) as $entries) {
- $first_entry = array_shift($entries);
- if (!$first_entry instanceof ClassElementEntry) {
- throw new AssertionError('Expected $entries of $property_descriptions to be a group of 1 or more entries');
- }
- $first_method = $first_entry->element;
- foreach ($entries as $entry) {
- $method = $entry->element;
- self::emitPluginIssue(
- $this->code_base,
- $method->getContext(),
- "PhanPluginDuplicateMethodDescription",
- "Method {METHOD} has the same description as the method {METHOD} on line {LINE}: {COMMENT}",
- [$method->getRepresentationForIssue(), $first_method->getName() . '()', $first_method->getContext()->getLineNumberStart(), $first_entry->description]
- );
- }
- }
- return [$property_descriptions, $method_descriptions];
- }
-
- /**
- * @param list $values
- * @return array>
- */
- private static function findGroups(array $values): array
- {
- $result = [];
- foreach ($values as $v) {
- if ($v->element->isDeprecated()) {
- continue;
- }
- $result[$v->description][] = $v;
- }
- foreach ($result as $description => $keys) {
- if (count($keys) <= 1) {
- unset($result[$description]);
- }
- }
- return $result;
- }
-}
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new HasPHPDocPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/InlineHTMLPlugin.php b/vendor/phan/phan/.phan/plugins/InlineHTMLPlugin.php
deleted file mode 100644
index fcab2dcc..00000000
--- a/vendor/phan/phan/.phan/plugins/InlineHTMLPlugin.php
+++ /dev/null
@@ -1,178 +0,0 @@
- set of files that have echo statements */
- public static $file_set_to_analyze = [];
-
- /** @var ?string */
- private $whitelist_regex;
- /** @var ?string */
- private $blacklist_regex;
-
- public function __construct()
- {
- $plugin_config = Config::getValue('plugin_config');
- $this->whitelist_regex = $plugin_config['inline_html_whitelist_regex'] ?? null;
- $this->blacklist_regex = $plugin_config['inline_html_blacklist_regex'] ?? null;
- }
-
- private function shouldCheckFile(string $path): bool
- {
- if (is_string($this->blacklist_regex)) {
- if (CLI::isPathMatchedByRegex($this->blacklist_regex, $path)) {
- return false;
- }
- }
- if (is_string($this->whitelist_regex)) {
- return CLI::isPathMatchedByRegex($this->whitelist_regex, $path);
- }
- return true;
- }
-
- /**
- * @param CodeBase $code_base
- * The code base in which the node exists
- *
- * @param Context $context @phan-unused-param
- * A context with the file name for $file_contents and the scope after analyzing $node.
- *
- * @param string $file_contents the unmodified file contents @phan-unused-param
- * @param Node $node the node @phan-unused-param
- * @override
- * @throws Error if a process fails to shut down
- */
- public function afterAnalyzeFile(
- CodeBase $code_base,
- Context $context,
- string $file_contents,
- Node $node
- ): void {
- $file = $context->getFile();
- if (!isset(self::$file_set_to_analyze[$file])) {
- // token_get_all is noticeably slow when there are a lot of files, so we check for the existence of echo statements in the parsed AST as a heuristic to avoid calling token_get_all.
- return;
- }
- if (!self::shouldCheckFile($file)) {
- return;
- }
- $file_contents = Parser::removeShebang($file_contents);
- $tokens = token_get_all($file_contents);
- foreach ($tokens as $i => $token) {
- if (!is_array($token)) {
- continue;
- }
- if ($token[0] !== T_INLINE_HTML) {
- continue;
- }
- $N = count($tokens);
- $this->warnAboutInlineHTML($code_base, $context, $token, $i, $N);
- if ($i < $N - 1) {
- // Make sure to always check if the last token is inline HTML
- $token = $tokens[$N - 1] ?? null;
- if (!is_array($token)) {
- break;
- }
- if ($token[0] !== T_INLINE_HTML) {
- break;
- }
- $this->warnAboutInlineHTML($code_base, $context, $token, $N - 1, $N);
- }
- break;
- }
- }
-
- /**
- * @param array{0:int,1:string,2:int} $token a token from token_get_all
- */
- private function warnAboutInlineHTML(CodeBase $code_base, Context $context, array $token, int $i, int $n): void
- {
- if ($i === 0) {
- $issue = self::InlineHTMLLeading;
- $message = 'Saw inline HTML at the start of the file: {STRING_LITERAL}';
- } elseif ($i >= $n - 1) {
- $issue = self::InlineHTMLTrailing;
- $message = 'Saw inline HTML at the end of the file: {STRING_LITERAL}';
- } else {
- $issue = self::InlineHTML;
- $message = 'Saw inline HTML between the first and last token: {STRING_LITERAL}';
- }
- $this->emitIssue(
- $code_base,
- (clone $context)->withLineNumberStart($token[2]),
- $issue,
- $message,
- [StringUtil::jsonEncode(self::truncate($token[1]))]
- );
- }
-
- private static function truncate(string $token): string
- {
- if (strlen($token) > 20) {
- return mb_substr($token, 0, 20) . "...";
- }
- return $token;
- }
-
- /**
- * @return string - name of PluginAwarePostAnalysisVisitor subclass
- *
- * @override
- */
- public static function getPostAnalyzeNodeVisitorClassName(): string
- {
- return InlineHTMLVisitor::class;
- }
-}
-
-/**
- * Records existence of AST_ECHO within a file, marking the file as one that should be checked.
- *
- * php-ast (and the underlying AST implementation) doesn't provide a way to distinguish inline HTML from other types of echos.
- */
-class InlineHTMLVisitor extends PluginAwarePostAnalysisVisitor
-{
- /**
- * @override
- * @param Node $node @unused-param
- * @return void
- */
- public function visitEcho(Node $node)
- {
- InlineHTMLPlugin::$file_set_to_analyze[$this->context->getFile()] = true;
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-if (!function_exists('token_get_all')) {
- throw new UnloadablePluginException("InlineHTMLPlugin requires the tokenizer extension, which is not enabled (this plugin uses token_get_all())");
-}
-return new InlineHTMLPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/InvalidVariableIssetPlugin.php b/vendor/phan/phan/.phan/plugins/InvalidVariableIssetPlugin.php
deleted file mode 100644
index 648c73eb..00000000
--- a/vendor/phan/phan/.phan/plugins/InvalidVariableIssetPlugin.php
+++ /dev/null
@@ -1,127 +0,0 @@
-children['var'];
- $variable = $argument;
-
- // get variable name from argument
- while (!isset($variable->children['name'])) {
- if (!$variable instanceof Node) {
- // e.g. 'foo' in `isset('foo'[$i])` or `isset('foo'->bar)`.
- $this->emit(
- 'PhanPluginInvalidVariableIsset',
- "Unexpected expression in isset()",
- []
- );
- return $this->context;
- }
- if (in_array($variable->kind, self::EXPRESSIONS, true)) {
- $variable = $variable->children['expr'];
- } elseif (in_array($variable->kind, self::CLASSES, true)) {
- $variable = $variable->children['class'];
- } else {
- return $this->context;
- }
- }
- if (!$variable instanceof Node) {
- $this->emit(
- 'PhanPluginUnexpectedExpressionIsset',
- "Unexpected expression in isset()",
- []
- );
- return $this->context;
- }
- $name = $variable->children['name'] ?? null;
-
- // emit issue if name is not declared
- // Check for edge cases such as isset($$var)
- if (is_string($name)) {
- if ($variable->kind !== ast\AST_VAR) {
- // e.g. ast\AST_NAME of an ast\AST_CONST
- return $this->context;
- }
- if (!Variable::isHardcodedVariableInScopeWithName($name, $this->context->isInGlobalScope())
- && !$this->context->getScope()->hasVariableWithName($name)
- && !(
- $this->context->isInGlobalScope() && Config::getValue('ignore_undeclared_variables_in_global_scope')
- )
- ) {
- $this->emit(
- 'PhanPluginUndeclaredVariableIsset',
- 'undeclared variable ${VARIABLE} in isset()',
- [$name]
- );
- }
- } elseif ($variable->kind !== ast\AST_VAR) {
- // emit issue if argument is not array access
- $this->emit(
- 'PhanPluginInvalidVariableIsset',
- "non array/property access in isset()",
- []
- );
- return $this->context;
- } elseif (!is_string($name)) {
- // emit issue if argument is not array access
- $this->emit(
- 'PhanPluginComplexVariableInIsset',
- "Unanalyzable complex variable expression in isset",
- []
- );
- }
- return $this->context;
- }
-}
-
-return new InvalidVariableIssetPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/InvokePHPNativeSyntaxCheckPlugin.php b/vendor/phan/phan/.phan/plugins/InvokePHPNativeSyntaxCheckPlugin.php
deleted file mode 100644
index 1ee07197..00000000
--- a/vendor/phan/phan/.phan/plugins/InvokePHPNativeSyntaxCheckPlugin.php
+++ /dev/null
@@ -1,448 +0,0 @@
- ['php_native_syntax_check_binaries' => ['php72', 'php70', 'php56']]
- * Note: This may cause Phan to take over twice as long. This is recommended for use with `--processes N`.
- *
- * Known issues:
- * - short_open_tags may make php --syntax-check --no-php-ini behave differently from php --syntax-check, e.g. for '
- * A list of invoked processes that this plugin created.
- * This plugin creates 0 or more processes(up to a maximum number can run at a time)
- * and then waits for the execution of those processes to finish.
- */
- private $processes = [];
-
- /**
- * @param CodeBase $code_base @phan-unused-param
- * The code base in which the node exists
- *
- * @param Context $context
- * A context with the file name for $file_contents and the scope after analyzing $node.
- *
- * @param string $file_contents the unmodified file contents @phan-unused-param
- * @param Node $node the node @phan-unused-param
- * @override
- */
- public function beforeAnalyzeFile(
- CodeBase $code_base,
- Context $context,
- string $file_contents,
- Node $node
- ): void {
- $php_binaries = (Config::getValue('plugin_config')['php_native_syntax_check_binaries'] ?? null) ?: [PHP_BINARY];
-
- foreach ($php_binaries as $binary) {
- $this->processes[] = new InvokeExecutionPromise($binary, $file_contents, $context);
- }
- }
-
- /**
- * @param CodeBase $code_base
- * The code base in which the node exists
- *
- * @param Context $context @phan-unused-param
- * A context with the file name for $file_contents and the scope after analyzing $node.
- *
- * @param string $file_contents the unmodified file contents @phan-unused-param
- * @param Node $node the node @phan-unused-param
- * @override
- * @throws Error if a process fails to shut down
- */
- public function afterAnalyzeFile(
- CodeBase $code_base,
- Context $context,
- string $file_contents,
- Node $node
- ): void {
- $configured_max_incomplete_processes = (int)(Config::getValue('plugin_config')['php_native_syntax_check_max_processes'] ?? 1) - 1;
- $max_incomplete_processes = max(0, $configured_max_incomplete_processes);
- $this->awaitIncompleteProcesses($code_base, $max_incomplete_processes);
- }
-
- /**
- * @throws Error if a syntax check process fails to shut down
- */
- private function awaitIncompleteProcesses(CodeBase $code_base, int $max_incomplete_processes): void
- {
- foreach ($this->processes as $i => $process) {
- if (!$process->read()) {
- continue;
- }
- unset($this->processes[$i]);
- self::handleError($code_base, $process);
- }
- $max_incomplete_processes = max(0, $max_incomplete_processes);
- while (count($this->processes) > $max_incomplete_processes) {
- $process = array_pop($this->processes);
- if (!$process) {
- throw new AssertionError("Process list should be non-empty");
- }
- $process->blockingRead();
- self::handleError($code_base, $process);
- }
- }
-
- /**
- * @override
- * @throws Error if a syntax check process fails to shut down.
- */
- public function finalizeProcess(CodeBase $code_base): void
- {
- $this->awaitIncompleteProcesses($code_base, 0);
- }
-
- private static function handleError(CodeBase $code_base, InvokeExecutionPromise $process): void
- {
- $check_error_message = $process->getError();
- if (!is_string($check_error_message)) {
- return;
- }
- $context = $process->getContext();
- $binary = $process->getBinary();
- $lineno = 1;
- if (preg_match(self::LINE_NUMBER_REGEX, $check_error_message, $matches)) {
- $lineno = (int)$matches[1];
- $check_error_message = trim(preg_replace(self::LINE_NUMBER_REGEX, '', $check_error_message));
- }
- $check_error_message = preg_replace(self::STDIN_FILENAME_REGEX, '', $check_error_message);
-
- self::emitIssue(
- $code_base,
- (clone $context)->withLineNumberStart($lineno),
- 'PhanNativePHPSyntaxCheckPlugin',
- 'Saw error or notice for {FILE} --syntax-check: {DETAILS}',
- [
- $binary === PHP_BINARY ? 'php' : $binary,
- json_encode($check_error_message),
-
- ],
- Issue::SEVERITY_CRITICAL
- );
- }
-}
-
-/**
- * This wraps a `php --syntax-check` process,
- * and contains methods to start the process and await the result
- * (and check for failures)
- */
-class InvokeExecutionPromise
-{
- /** @var string path to the php binary invoked */
- private $binary;
-
- /** @var bool is the process finished executing */
- private $done = false;
-
- /** @var resource the result of `proc_open()` */
- private $process;
-
- /** @var array{0:resource,1:resource,2:resource} stdin, stdout, stderr */
- private $pipes;
-
- /** @var ?string an error message */
- private $error = null;
-
- /** @var string the raw bytes from stdout with serialized data */
- private $raw_stdout = '';
-
- /** @var string */
- private $fallback_error = '';
-
- /** @var Context has the file name being analyzed */
- private $context;
-
- /** @var ?string the temporary path, if needed for Windows. */
- private $tmp_path;
-
- public function __construct(string $binary, string $file_contents, Context $context)
- {
- $this->context = clone $context;
- $new_file_contents = Parser::removeShebang($file_contents);
- // TODO: Use symfony process
- // Note: We might have invalid utf-8, ensure that the streams are opened in binary mode.
- // I'm not sure if this is necessary.
- if (DIRECTORY_SEPARATOR === "\\") {
- $cmd = escapeshellarg($binary) . ' --syntax-check --no-php-ini';
- $abs_path = $this->getAbsPathForFileContents($new_file_contents, $file_contents !== $new_file_contents);
- if (!is_string($abs_path)) {
- // The helper function has set the error and done flags
- return;
- }
-
- // Possibly https://bugs.php.net/bug.php?id=51800
- // NOTE: Work around this by writing from the original file. This may not work as expected in LSP mode
- $abs_path = str_replace("/", "\\", $abs_path);
-
- $cmd .= ' < ' . escapeshellarg($abs_path);
-
- $descriptorspec = [
- 1 => ['pipe', 'wb'],
- ];
- $this->binary = $binary;
- // https://superuser.com/questions/1213094/how-to-escape-in-cmd-exe-c-parameters/1213100#1213100
- //
- // > Otherwise, old behavior is to see if the first character is
- // > a quote character and if so, strip the leading character and
- // > remove the last quote character on the command line, preserving
- // > any text after the last quote character.
- //
- // e.g. `""C:\php 7.4.3\php.exe" --syntax-check --no-php-ini < "C:\some project\test.php""`
- // gets unescaped as `"C:\php 7.4.3\php.exe" --syntax-check --no-php-ini < "C:\some project\test.php"`
- if (PHP_VERSION_ID < 80000) {
- // In PHP 8.0.0, proc_open started always escaping arguments with additional quotes, so doing it twice would be a bug.
- $cmd = "\"$cmd\"";
- }
- $process = proc_open("$cmd", $descriptorspec, $pipes);
- if (!is_resource($process)) {
- $this->done = true;
- $this->error = "Failed to run proc_open in " . __METHOD__;
- return;
- }
- $this->process = $process;
- } else {
- $cmd = [$binary, '--syntax-check', '--no-php-ini'];
- if (PHP_VERSION_ID < 70400) {
- $cmd = implode(' ', array_map('escapeshellarg', $cmd));
- }
- $descriptorspec = [
- ['pipe', 'rb'],
- ['pipe', 'wb'],
- ];
- $this->binary = $binary;
- // @phan-suppress-next-line PhanPartialTypeMismatchArgumentInternal PHP 7.3 does not accept arrays
- $process = proc_open($cmd, $descriptorspec, $pipes);
- if (!is_resource($process)) {
- $this->done = true;
- $this->error = "Failed to run proc_open in " . __METHOD__;
- return;
- }
- $this->process = $process;
-
- error_clear_last();
- if (!self::streamPutContents($pipes[0], $new_file_contents)) {
- $this->fallback_error = \error_get_last()['message'] ?? '';
- }
- }
- $this->pipes = $pipes;
-
- if (!stream_set_blocking($pipes[1], false)) {
- $this->error = "unable to set read stdout to non-blocking";
- }
- }
-
- private function getAbsPathForFileContents(string $new_file_contents, bool $force_tmp_file): ?string
- {
- $file_name = $this->context->getFile();
- if ($force_tmp_file || CLI::isDaemonOrLanguageServer()) {
- // This is inefficient, but
- // - Windows has problems with using stdio/stdout at the same time
- // - During regular analysis, we won't need to create temporary files.
- $tmp_path = tempnam(sys_get_temp_dir(), 'phan');
- if (!is_string($tmp_path)) {
- $this->done = true;
- $this->error = "Could not create temporary path for $file_name";
- return null;
- }
- file_put_contents($tmp_path, $new_file_contents);
- $this->tmp_path = $tmp_path;
- return $tmp_path;
- }
- $abs_path = Config::projectPath($file_name);
- if (!file_exists($abs_path)) {
- $this->done = true;
- $this->error = "File does not exist";
- return null;
- }
- return $abs_path;
- }
-
- /**
- * @param resource $stream stream to write $file_contents to before fclose()
- * @param string $file_contents
- * See https://bugs.php.net/bug.php?id=39598
- */
- private static function streamPutContents($stream, string $file_contents): bool
- {
- try {
- while (strlen($file_contents) > 0) {
- $bytes_written = with_disabled_phan_error_handler(/** @return int|false */ static function () use ($stream, $file_contents) {
- return @fwrite($stream, $file_contents);
- });
- if ($bytes_written === false) {
- CLI::printWarningToStderr('failed to write in ' . __METHOD__);
- return false;
- }
- if ($bytes_written === 0) {
- $read_streams = [];
- $write_streams = [$stream];
- $except_streams = [];
- // Wait for the stream to be available for write with a timeout of 1 second.
- stream_select($read_streams, $write_streams, $except_streams, 1);
- if (!$write_streams) {
- usleep(1000); // Probably unnecessary, but leaving it in anyway
- // This is blocked?
- continue;
- }
- // $stream is ready to be written to?
- $bytes_written = fwrite($stream, $file_contents);
- if (!$bytes_written) {
- CLI::printToStderr('failed to write in ' . __METHOD__ . ' but the stream should be ready');
- return false;
- }
- }
- if ($bytes_written > 0) {
- $file_contents = \substr($file_contents, $bytes_written);
- }
- }
- } finally {
- fclose($stream);
- }
- return true;
- }
-
- /**
- * @return bool false if an error was encountered when trying to read more output from the syntax check process.
- */
- public function read(): bool
- {
- if ($this->done) {
- return true;
- }
- $stdout = $this->pipes[1];
- while (!feof($stdout)) {
- $bytes = fread($stdout, 4096);
- if ($bytes === false) {
- break;
- }
- if (strlen($bytes) === 0) {
- break;
- }
- $this->raw_stdout .= $bytes;
- }
- if (!feof($stdout)) {
- return false;
- }
- fclose($stdout);
-
- $this->done = true;
-
- $exit_code = proc_close($this->process);
- if ($exit_code === 0) {
- $this->error = null;
- return true;
- }
- $output = str_replace("\r", "", trim($this->raw_stdout));
- $first_line = explode("\n", $output)[0];
- $this->error = $first_line;
- return true;
- }
-
- /**
- * @throws Error if reading failed
- */
- public function blockingRead(): void
- {
- if ($this->done) {
- return;
- }
- if (!stream_set_blocking($this->pipes[1], true)) {
- throw new Error("Unable to make stdout blocking");
- }
- if (!$this->read()) {
- throw new Error("Failed to read");
- }
- }
-
- /**
- * @throws RangeException if this was called before the process finished
- */
- public function getError(): ?string
- {
- if (!$this->done) {
- throw new RangeException("Called " . __METHOD__ . " too early");
- }
- if ($this->error === '') {
- // There was an error running the process, but no output to stdout.
- $result = "No output was detected. Is " . var_representation($this->binary) . " a relative or absolute path to an executable PHP binary?";
- if ($this->fallback_error !== '') {
- $result .= ' Error sending file contents to syntax check: ' . $this->fallback_error;
- }
- return $result;
- }
- return $this->error;
- }
-
- /**
- * Returns the context containing the name of the file being syntax checked
- */
- public function getContext(): Context
- {
- return $this->context;
- }
-
- /**
- * @return string the path to the PHP interpreter binary. (e.g. `/usr/bin/php`)
- */
- public function getBinary(): string
- {
- return $this->binary;
- }
-
- /**
- * @return never
- */
- public function __wakeup()
- {
- $this->tmp_path = null;
- throw new RuntimeException("Cannot unserialize");
- }
-
- public function __destruct()
- {
- // We created a temporary path for Windows
- if (is_string($this->tmp_path)) {
- unlink($this->tmp_path);
- }
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new InvokePHPNativeSyntaxCheckPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/LoopVariableReusePlugin.php b/vendor/phan/phan/.phan/plugins/LoopVariableReusePlugin.php
deleted file mode 100644
index 4105f428..00000000
--- a/vendor/phan/phan/.phan/plugins/LoopVariableReusePlugin.php
+++ /dev/null
@@ -1,7 +0,0 @@
- maps function/method/closure FQSEN to function info and the set of union types they return */
- public static $method_return_types;
-
- /** @var Set the set of function/method/closure FQSENs that don't need to be more specific. */
- public static $method_blacklist;
-
- /**
- * @return class-string - name of PluginAwarePostAnalysisVisitor subclass
- */
- public static function getPostAnalyzeNodeVisitorClassName(): string
- {
- return MoreSpecificElementTypeVisitor::class;
- }
-
- /**
- * Record that $function contains a return statement which returns an expression of type $return_type.
- *
- * This may be called multiple times for the same return statement (Phan recursively analyzes functions with underspecified param types by default)
- */
- public static function recordType(FunctionInterface $function, UnionType $return_type): void
- {
- $fqsen = $function->getFQSEN();
- if (self::$method_blacklist->offsetExists($fqsen)) {
- return;
- }
- if ($return_type->isEmpty()) {
- self::$method_blacklist->attach($fqsen);
- self::$method_return_types->offsetUnset($fqsen);
- return;
- }
- if (self::$method_return_types->offsetExists($fqsen)) {
- self::$method_return_types->offsetGet($fqsen)->types->attach($return_type);
- } else {
- self::$method_return_types->offsetSet($fqsen, new ElementTypeInfo($function, [$return_type]));
- }
- }
-
- private static function shouldWarnAboutMoreSpecificType(CodeBase $code_base, UnionType $actual_type, UnionType $declared_return_type): bool
- {
- if ($declared_return_type->isEmpty()) {
- // There was no phpdoc type declaration, so let UnknownElementTypePlugin warn about that instead of this.
- // This plugin warns about `@return mixed` but not the absence of a declaration because the former normally prevents phan from inferring something more specific.
- return false;
- }
- if ($declared_return_type->containsNullable() && !$actual_type->containsNullable()) {
- // Warn about `Subclass1|Subclass2` being the real return type of `?BaseClass`
- // because the actual returned type is non-null
- return true;
- }
- if ($declared_return_type->typeCount() === 1) {
- if ($declared_return_type->getTypeSet()[0]->hasObjectWithKnownFQSEN()) {
- if ($actual_type->typeCount() >= 2) {
- // Don't warn about Subclass1|Subclass2 being more specific than BaseClass
- return false;
- }
- }
- }
- if ($declared_return_type->isStrictSubtypeOf($code_base, $actual_type)) {
- return false;
- }
- if (!$actual_type->isStrictSubtypeOf($code_base, $declared_return_type)) {
- return false;
- }
- if (!$actual_type->canCastToUnionType($declared_return_type, $code_base)) {
- // Don't warn here about type mismatches such as int->string or object->array, but do warn about SubClass->BaseClass.
- // Phan should warn elsewhere about those mismatches
- return false;
- }
- if ($declared_return_type->hasTopLevelArrayShapeTypeInstances()) {
- return false;
- }
- $real_actual_type = $actual_type->getRealUnionType();
- if (!$real_actual_type->isEmpty() && $declared_return_type->isStrictSubtypeOf($code_base, $real_actual_type)) {
- // TODO: Provide a way to disable this heuristic.
- return false;
- }
- return true;
- }
-
- private static function containsObjectWithKnownFQSEN(UnionType $union_type): bool
- {
- foreach ($union_type->getTypesRecursively() as $type) {
- if ($type->hasObjectWithKnownFQSEN()) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * After all return statements are gathered, suggest a more specific type for the various functions.
- */
- public function finalizeProcess(CodeBase $code_base): void
- {
- foreach (self::$method_return_types as $type_info) {
- $function = $type_info->function;
- $function_context = $function->getContext();
- // TODO: Do a better job for Traversable and iterable
- $actual_type = UnionType::merge($type_info->types->toArray())->withStaticResolvedInContext($function_context)->eraseTemplatesRecursive()->asNormalizedTypes();
- $declared_return_type = $function->getOriginalReturnType()->withStaticResolvedInContext($function_context)->eraseTemplatesRecursive()->asNormalizedTypes();
- if (!self::shouldWarnAboutMoreSpecificType($code_base, $actual_type, $declared_return_type)) {
- continue;
- }
- if (self::containsObjectWithKnownFQSEN($actual_type) && !self::containsObjectWithKnownFQSEN($declared_return_type)) {
- $issue_type = 'PhanPluginMoreSpecificActualReturnTypeContainsFQSEN';
- $issue_message = 'Phan inferred that {FUNCTION} documented to have return type {TYPE} (without an FQSEN) returns the more specific type {TYPE} (with an FQSEN)';
- } else {
- $issue_type = 'PhanPluginMoreSpecificActualReturnType';
- $issue_message = 'Phan inferred that {FUNCTION} documented to have return type {TYPE} returns the more specific type {TYPE}';
- }
-
- $this->emitIssue(
- $code_base,
- $function->getContext(),
- $issue_type,
- $issue_message,
- [
- $function->getRepresentationForIssue(),
- $declared_return_type,
- $actual_type->getDebugRepresentation()
- ]
- );
- }
- }
-}
-
-/**
- * Represents the actual return types seen during analysis
- * (including recursive analysis)
- */
-class ElementTypeInfo
-{
- /** @var FunctionInterface the function with the return values*/
- public $function;
- /** @var Set the set of observed return types */
- public $types;
- /**
- * @param list $return_types
- */
- public function __construct(FunctionInterface $function, array $return_types)
- {
- $this->function = $function;
- $this->types = new Set($return_types);
- }
-}
-MoreSpecificElementTypePlugin::$method_blacklist = new Set();
-MoreSpecificElementTypePlugin::$method_return_types = new Map();
-
-/**
- * This visitor analyzes node kinds that can be the root of expressions
- * containing duplicate expressions, and is called on nodes in post-order.
- */
-class MoreSpecificElementTypeVisitor extends PluginAwarePostAnalysisVisitor
-{
- /**
- * @param Node $node a node of kind ast\AST_RETURN, representing a return statement.
- */
- public function visitReturn(Node $node): void
- {
- if (!$this->context->isInFunctionLikeScope()) {
- return;
- }
- try {
- $function = $this->context->getFunctionLikeInScope($this->code_base);
- } catch (Exception $_) {
- return;
- }
- if ($function->hasYield()) {
- // TODO: Support analyzing yield key/value types of generators?
- return;
- }
- if ($function instanceof Method) {
- // Skip functions that are overrides or are overridden.
- // They may be documenting a less specific return type to deal with the inheritance hierarchy.
- if ($function->isOverride() || $function->isOverriddenByAnother()) {
- return;
- }
- }
- try {
- // Fetch the list of valid classes, and warn about any undefined classes.
- // (We have more specific issue types such as PhanNonClassMethodCall below, don't emit PhanTypeExpected*)
- $union_type = UnionTypeVisitor::unionTypeFromNode($this->code_base, $this->context, $node->children['expr']);
- } catch (Exception $_) {
- // Phan should already throw for this
- return;
- }
- MoreSpecificElementTypePlugin::recordType($function, $union_type->withFlattenedArrayShapeOrLiteralTypeInstances());
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new MoreSpecificElementTypePlugin();
diff --git a/vendor/phan/phan/.phan/plugins/NoAssertPlugin.php b/vendor/phan/phan/.phan/plugins/NoAssertPlugin.php
deleted file mode 100644
index 212e8564..00000000
--- a/vendor/phan/phan/.phan/plugins/NoAssertPlugin.php
+++ /dev/null
@@ -1,85 +0,0 @@
-children['expr']->children['name'] ?? null;
- if (!is_string($name)) {
- return;
- }
- if (strcasecmp($name, 'assert') !== 0) {
- return;
- }
- $this->emitPluginIssue(
- $this->code_base,
- $this->context,
- 'PhanPluginNoAssert',
- // phpcs:ignore Generic.Files.LineLength.MaxExceeded
- 'assert() is discouraged. Although phan supports using assert() for type annotations, PHP\'s documentation recommends assertions only for debugging, and assert() has surprising behaviors.',
- []
- );
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new NoAssertPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/NonBoolBranchPlugin.php b/vendor/phan/phan/.phan/plugins/NonBoolBranchPlugin.php
deleted file mode 100644
index 7ee39e40..00000000
--- a/vendor/phan/phan/.phan/plugins/NonBoolBranchPlugin.php
+++ /dev/null
@@ -1,88 +0,0 @@
-children as $if_node) {
- if (!$if_node instanceof Node) {
- throw new AssertionError("Expected if statement to be a node");
- }
- $condition = $if_node->children['cond'];
-
- // dig nodes to avoid the NOT('!') operation converting its value to a boolean type.
- // Also, use right-hand side of assignments such as `$x = (expr)`
- while (($condition instanceof Node) && (
- ($condition->flags === ast\flags\UNARY_BOOL_NOT && $condition->kind === ast\AST_UNARY_OP)
- || (\in_array($condition->kind, [\ast\AST_ASSIGN, \ast\AST_ASSIGN_REF], true)))
- ) {
- $condition = $condition->children['expr'];
- }
-
- if ($condition === null) {
- // $condition === null will be appeared in else-clause, then avoid them
- continue;
- }
-
- if ($condition instanceof Node) {
- $this->context = $this->context->withLineNumberStart($condition->lineno);
- }
- // evaluate the type of conditional expression
- try {
- $union_type = UnionTypeVisitor::unionTypeFromNode($this->code_base, $this->context, $condition);
- } catch (IssueException $_) {
- return $this->context;
- }
- if (!$union_type->isEmpty() && !$union_type->isExclusivelyBoolTypes()) {
- $this->emit(
- 'PhanPluginNonBoolBranch',
- 'Non bool value of type {TYPE} evaluated in if clause',
- [(string)$union_type]
- );
- }
- }
- return $this->context;
- }
-}
-
-return new NonBoolBranchPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/NonBoolInLogicalArithPlugin.php b/vendor/phan/phan/.phan/plugins/NonBoolInLogicalArithPlugin.php
deleted file mode 100644
index 40a8e4ab..00000000
--- a/vendor/phan/phan/.phan/plugins/NonBoolInLogicalArithPlugin.php
+++ /dev/null
@@ -1,95 +0,0 @@
-flags, self::BINARY_BOOL_OPERATORS, true)) {
- // get left node and parse it
- // (dig nodes to avoid NOT('!') operator's converting its value to boolean type)
- $left_node = $node->children['left'];
- while (isset($left_node->flags) && $left_node->flags === ast\flags\UNARY_BOOL_NOT) {
- $left_node = $left_node->children['expr'];
- }
-
- // get right node and parse it
- $right_node = $node->children['right'];
- while (isset($right_node->flags) && $right_node->flags === ast\flags\UNARY_BOOL_NOT) {
- $right_node = $right_node->children['expr'];
- }
-
- // get the type of two nodes
- $left_type = UnionTypeVisitor::unionTypeFromNode($this->code_base, $this->context, $left_node);
- $right_type = UnionTypeVisitor::unionTypeFromNode($this->code_base, $this->context, $right_node);
-
- // if left or right type is NOT boolean, emit issue
- if (!$left_type->isExclusivelyBoolTypes()) {
- if ($left_node instanceof Node) {
- $this->context = $this->context->withLineNumberStart($left_node->lineno);
- }
- $this->emit(
- 'PhanPluginNonBoolInLogicalArith',
- 'Non bool value of type {TYPE} in logical arithmetic',
- [(string)$left_type]
- );
- }
- if (!$right_type->isExclusivelyBoolTypes()) {
- if ($right_node instanceof Node) {
- $this->context = $this->context->withLineNumberStart($right_node->lineno);
- }
- $this->emit(
- 'PhanPluginNonBoolInLogicalArith',
- 'Non bool value of type {TYPE} in logical arithmetic',
- [(string)$right_type]
- );
- }
- }
- return $this->context;
- }
-}
-
-return new NonBoolInLogicalArithPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/NotFullyQualifiedUsagePlugin.php b/vendor/phan/phan/.phan/plugins/NotFullyQualifiedUsagePlugin.php
deleted file mode 100644
index a5324937..00000000
--- a/vendor/phan/phan/.phan/plugins/NotFullyQualifiedUsagePlugin.php
+++ /dev/null
@@ -1,202 +0,0 @@
- - Set after the constructor is called if an instance property with this name is declared
- // protected $parent_node_list;
-
- // A plugin's visitors should NOT implement visit(), unless they need to.
-
- // phpcs:disable Generic.NamingConventions.UpperCaseConstantName.ClassConstantNotUpperCase
- public const NotFullyQualifiedFunctionCall = 'PhanPluginNotFullyQualifiedFunctionCall';
- public const NotFullyQualifiedOptimizableFunctionCall = 'PhanPluginNotFullyQualifiedOptimizableFunctionCall';
- public const NotFullyQualifiedGlobalConstant = 'PhanPluginNotFullyQualifiedGlobalConstant';
- // phpcs:enable Generic.NamingConventions.UpperCaseConstantName.ClassConstantNotUpperCase
-
- /**
- * Source of functions: `zend_try_compile_special_func` from https://github.com/php/php-src/blob/master/Zend/zend_compile.c
- */
- private const OPTIMIZABLE_FUNCTIONS = [
- 'array_key_exists' => true,
- 'array_slice' => true,
- 'boolval' => true,
- 'call_user_func' => true,
- 'call_user_func_array' => true,
- 'chr' => true,
- 'count' => true,
- 'defined' => true,
- 'doubleval' => true,
- 'floatval' => true,
- 'func_get_args' => true,
- 'func_num_args' => true,
- 'get_called_class' => true,
- 'get_class' => true,
- 'gettype' => true,
- 'in_array' => true,
- 'intval' => true,
- 'is_array' => true,
- 'is_bool' => true,
- 'is_double' => true,
- 'is_float' => true,
- 'is_int' => true,
- 'is_integer' => true,
- 'is_long' => true,
- 'is_null' => true,
- 'is_object' => true,
- 'is_real' => true,
- 'is_resource' => true,
- 'is_string' => true,
- 'ord' => true,
- 'strlen' => true,
- 'strval' => true,
- ];
-
- /**
- * @param Node $node
- * A node to analyze of type ast\AST_CALL (call to a global function)
- * @override
- */
- public function visitCall(Node $node): void
- {
- $expression = $node->children['expr'];
- if (!($expression instanceof Node) || $expression->kind !== ast\AST_NAME) {
- return;
- }
- if (($expression->flags & ast\flags\NAME_NOT_FQ) !== ast\flags\NAME_NOT_FQ) {
- // This is namespace\foo() or \NS\foo()
- return;
- }
- if ($this->context->getNamespace() === '\\') {
- // This is in the global namespace and is always fully qualified
- return;
- }
- $function_name = $expression->children['name'];
- if (!is_string($function_name)) {
- // Possibly redundant.
- return;
- }
- // TODO: Probably wrong for ast\parse_code - should check namespace map of USE_NORMAL for 'ast' there.
- // Same for ContextNode->getFunction()
- if ($this->context->hasNamespaceMapFor(\ast\flags\USE_FUNCTION, $function_name)) {
- return;
- }
- $this->warnNotFullyQualifiedFunctionCall($function_name, $expression);
- }
-
- private function warnNotFullyQualifiedFunctionCall(string $function_name, Node $expression): void
- {
- if (array_key_exists(strtolower($function_name), self::OPTIMIZABLE_FUNCTIONS)) {
- $issue_type = self::NotFullyQualifiedOptimizableFunctionCall;
- $issue_msg = 'Expected function call to {FUNCTION}() to be fully qualified or have a use statement but none were found in namespace {NAMESPACE}'
- . ' (opcache can optimize fully qualified calls to this function in recent php versions)';
- } else {
- $issue_type = self::NotFullyQualifiedFunctionCall;
- $issue_msg = 'Expected function call to {FUNCTION}() to be fully qualified or have a use statement but none were found in namespace {NAMESPACE}';
- }
- $this->emitPluginIssue(
- $this->code_base,
- (clone $this->context)->withLineNumberStart($expression->lineno),
- $issue_type,
- $issue_msg,
- [$function_name, $this->context->getNamespace()]
- );
- }
-
- /**
- * @param Node $node
- * A node to analyze of type ast\AST_CONST (reference to a constant)
- * @override
- */
- public function visitConst(Node $node): void
- {
- $expression = $node->children['name'];
- if (!($expression instanceof Node) || $expression->kind !== ast\AST_NAME) {
- return;
- }
- if (($expression->flags & ast\flags\NAME_NOT_FQ) !== ast\flags\NAME_NOT_FQ) {
- // This is namespace\SOME_CONST or \NS\SOME_CONST
- return;
- }
- if ($this->context->getNamespace() === '\\') {
- // This is in the global namespace and is always fully qualified
- return;
- }
- $constant_name = $expression->children['name'];
- if (!is_string($constant_name)) {
- // Possibly redundant.
- return;
- }
- $constant_name_lower = strtolower($constant_name);
- if ($constant_name_lower === 'true' || $constant_name_lower === 'false' || $constant_name_lower === 'null') {
- // These are treated similarly to keywords and are either
- // 1. the same in any namespace
- // 2. `use somethingelse\true [as false];`
- return;
- }
-
- // TODO: Probably wrong for ast\AST_NAME - should check namespace map of USE_NORMAL for 'ast' there.
- // Same for ContextNode->getConst()
- if ($this->context->hasNamespaceMapFor(\ast\flags\USE_CONST, $constant_name)) {
- return;
- }
- $this->warnNotFullyQualifiedConstantUsage($constant_name, $expression);
- }
-
- private function warnNotFullyQualifiedConstantUsage(string $constant_name, Node $expression): void
- {
- $this->emitPluginIssue(
- $this->code_base,
- (clone $this->context)->withLineNumberStart($expression->lineno),
- self::NotFullyQualifiedGlobalConstant,
- 'Expected usage of {CONST} to be fully qualified or have a use statement but none were found in namespace {NAMESPACE}',
- [$constant_name, $this->context->getNamespace()]
- );
- }
-}
-
-if (Config::isIssueFixingPluginEnabled()) {
- require_once __DIR__ . '/NotFullyQualifiedUsagePlugin/fixers.php';
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new NotFullyQualifiedUsagePlugin();
diff --git a/vendor/phan/phan/.phan/plugins/NotFullyQualifiedUsagePlugin/fixers.php b/vendor/phan/phan/.phan/plugins/NotFullyQualifiedUsagePlugin/fixers.php
deleted file mode 100644
index 764d7e99..00000000
--- a/vendor/phan/phan/.phan/plugins/NotFullyQualifiedUsagePlugin/fixers.php
+++ /dev/null
@@ -1,108 +0,0 @@
-getLine();
- $expected_name = $instance->getTemplateParameters()[0];
- $edits = [];
- foreach ($contents->getNodesAtLine($line) as $node) {
- if ($node instanceof QualifiedName) {
- if ($node->globalSpecifier || $node->relativeSpecifier) {
- IssueFixer::debug("skip already globally or relatively specified\n");
- // This is already qualified
- continue;
- }
- $actual_name = (new NodeUtils($contents->getContents()))->phpParserNameToString($node);
- } elseif ($node instanceof ReservedWord) {
- // A reserved word in other contexts such as 'float'
- $token = $node->children;
- if (!$token instanceof Token) {
- continue;
- }
- $actual_name = (new NodeUtils($contents->getContents()))->tokenToString($token);
- } else {
- IssueFixer::debug("skip wrong node kind " . get_class($node) . "\n");
- continue;
- }
- if ($actual_name !== $expected_name) {
- IssueFixer::debug("skip '$actual_name' !== '$expected_name'\n");
- continue;
- }
- $is_actual_call = $node->parent instanceof CallExpression;
- $is_expected_call = $instance->getIssue()->getType() !== NotFullyQualifiedUsageVisitor::NotFullyQualifiedGlobalConstant;
- if ($is_actual_call !== $is_expected_call) {
- IssueFixer::debug("skip check mismatch actual expected are call vs constants\n");
- // don't warn about constants with the same names as functions or vice-versa
- continue;
- }
- try {
- if ($is_expected_call) {
- // Don't do this if the global function this refers to doesn't exist.
- // TODO: Support namespaced functions
- if (!$code_base->hasFunctionWithFQSEN(FullyQualifiedFunctionName::fromFullyQualifiedString($actual_name))) {
- IssueFixer::debug("skip attempt to fix $actual_name() because function was not found in the global scope\n");
- return null;
- }
- } else {
- // Don't do this if the global function this refers to doesn't exist.
- // TODO: Support namespaced functions
- if (!$code_base->hasGlobalConstantWithFQSEN(FullyQualifiedGlobalConstantName::fromFullyQualifiedString($actual_name)) &&
- !in_array(strtolower($actual_name), ['null', 'true', 'false'], true)) {
- IssueFixer::debug("skip attempt to fix $actual_name because the constant was not found in the global scope\n");
- return null;
- }
- }
- } catch (Exception $_) {
- continue;
- }
- //fwrite(STDERR, "name is: " . get_class($node->parent) . "\n");
-
- // They are case-sensitively identical.
- // Generate a fix.
- // @phan-suppress-next-line PhanThrowTypeAbsentForCall
- $start = $node->getStartPosition();
- $edits[] = new FileEdit($start, $start, '\\');
- }
- if ($edits) {
- return new FileEditSet($edits);
- }
- return null;
- };
- IssueFixer::registerFixerClosure(
- NotFullyQualifiedUsageVisitor::NotFullyQualifiedGlobalConstant,
- $fix
- );
- IssueFixer::registerFixerClosure(
- NotFullyQualifiedUsageVisitor::NotFullyQualifiedFunctionCall,
- $fix
- );
- IssueFixer::registerFixerClosure(
- NotFullyQualifiedUsageVisitor::NotFullyQualifiedOptimizableFunctionCall,
- $fix
- );
-});
diff --git a/vendor/phan/phan/.phan/plugins/NumericalComparisonPlugin.php b/vendor/phan/phan/.phan/plugins/NumericalComparisonPlugin.php
deleted file mode 100644
index db1acce3..00000000
--- a/vendor/phan/phan/.phan/plugins/NumericalComparisonPlugin.php
+++ /dev/null
@@ -1,86 +0,0 @@
-children['left'];
- $left_type = UnionTypeVisitor::unionTypeFromNode($this->code_base, $this->context, $left_node);
- $right_node = $node->children['right'];
- $right_type = UnionTypeVisitor::unionTypeFromNode($this->code_base, $this->context, $right_node);
-
- // non numerical values are not allowed in the operator equal(==, !=)
- if (in_array($node->flags, self::BINARY_EQUAL_OPERATORS, true)) {
- if (!$left_type->isNonNullNumberType() && !$right_type->isNonNullNumberType()) {
- $this->emit(
- 'PhanPluginNumericalComparison',
- "non numerical values compared by the operators '==' or '!='",
- []
- );
- }
- // numerical values are not allowed in the operator identical('===', '!==')
- } elseif (in_array($node->flags, self::BINARY_IDENTICAL_OPERATORS, true)) {
- if ($left_type->isNonNullNumberType() || $right_type->isNonNullNumberType()) {
- // TODO: different name for this issue type?
- $this->emit(
- 'PhanPluginNumericalComparison',
- "numerical values compared by the operators '===' or '!=='",
- []
- );
- }
- }
- return $this->context;
- }
-}
-
-return new NumericalComparisonPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/PHP53CompatibilityPlugin.php b/vendor/phan/phan/.phan/plugins/PHP53CompatibilityPlugin.php
deleted file mode 100644
index 6a66e4c6..00000000
--- a/vendor/phan/phan/.phan/plugins/PHP53CompatibilityPlugin.php
+++ /dev/null
@@ -1,116 +0,0 @@
-flags === ast\flags\ARRAY_SYNTAX_SHORT) {
- $this->emitPluginIssue(
- $this->code_base,
- $this->context,
- 'PhanPluginCompatibilityShortArray',
- "Short arrays ({CODE}) require support for php 5.4+",
- [ASTReverter::toShortString($node)]
- );
- }
- }
-
- /**
- * @param Node $node
- * A node to analyze of kind ast\AST_ARG_LIST
- * @override
- */
- public function visitArgList(Node $node): void
- {
- $lastArg = end($node->children);
- if ($lastArg instanceof Node && $lastArg->kind === ast\AST_UNPACK) {
- $this->emitPluginIssue(
- $this->code_base,
- $this->context,
- 'PhanPluginCompatibilityArgumentUnpacking',
- "Argument unpacking ({CODE}) requires support for php 5.6+",
- [ASTReverter::toShortString($lastArg)]
- );
- }
- }
-
- /**
- * @param Node $node
- * A node to analyze of kind ast\AST_PARAM
- * @override
- */
- public function visitParam(Node $node): void
- {
- if ($node->flags & ast\flags\PARAM_VARIADIC) {
- $this->emitPluginIssue(
- $this->code_base,
- $this->context,
- 'PhanPluginCompatibilityVariadicParam',
- "Variadic functions ({CODE}) require support for php 5.6+",
- [ASTReverter::toShortString($node)]
- );
- }
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new PHP53CompatibilityPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/PHPDocInWrongCommentPlugin.php b/vendor/phan/phan/.phan/plugins/PHPDocInWrongCommentPlugin.php
deleted file mode 100644
index 45f7f8ce..00000000
--- a/vendor/phan/phan/.phan/plugins/PHPDocInWrongCommentPlugin.php
+++ /dev/null
@@ -1,98 +0,0 @@
-emitIssue(
- $code_base,
- (clone $context)->withLineNumberStart($token[2]),
- 'PhanPluginPHPDocHashComment',
- 'Saw comment starting with {COMMENT} in {COMMENT} - consider using {COMMENT} instead to avoid confusion with php 8.0 {COMMENT} attributes',
- ['#', StringUtil::jsonEncode(self::truncate(trim($comment_string))), '//', '#[']
- );
- }
- continue;
- }
- if (strpos($comment_string, '@') === false) {
- continue;
- }
- $lineno = $token[2];
-
- // @phan-suppress-next-line PhanAccessClassConstantInternal
- $comment = Comment::fromStringInContext("/**" . $comment_string, $code_base, $context, $lineno, Comment::ON_ANY);
-
- if ($comment instanceof NullComment) {
- continue;
- }
- $this->emitIssue(
- $code_base,
- (clone $context)->withLineNumberStart($token[2]),
- 'PhanPluginPHPDocInWrongComment',
- 'Saw possible phpdoc annotation in ordinary block comment {COMMENT}. PHPDoc comments should start with "/**" (followed by whitespace), not "/*"',
- [StringUtil::jsonEncode(self::truncate($comment_string))]
- );
- }
- }
-
- private static function truncate(string $token): string
- {
- if (strlen($token) > 200) {
- return mb_substr($token, 0, 200) . "...";
- }
- return $token;
- }
-}
-if (!function_exists('token_get_all')) {
- throw new UnloadablePluginException("PHPDocInWrongCommentPlugin requires the tokenizer extension, which is not enabled (this plugin uses token_get_all())");
-}
-return new PHPDocInWrongCommentPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/PHPDocRedundantPlugin.php b/vendor/phan/phan/.phan/plugins/PHPDocRedundantPlugin.php
deleted file mode 100644
index c22f55c5..00000000
--- a/vendor/phan/phan/.phan/plugins/PHPDocRedundantPlugin.php
+++ /dev/null
@@ -1,235 +0,0 @@
-isMagic() || $method->isPHPInternal()) {
- return;
- }
- if ($method->getFQSEN() !== $method->getDefiningFQSEN()) {
- return;
- }
- self::analyzeFunctionLike($code_base, $method);
- }
-
- /**
- * @suppress PhanAccessClassConstantInternal
- */
- private static function isRedundantFunctionComment(FunctionInterface $method, string $doc_comment): bool
- {
- $lines = explode("\n", $doc_comment);
- foreach ($lines as $line) {
- $line = trim($line, " \r\n\t*/");
- if ($line === '') {
- continue;
- }
- if ($line[0] !== '@') {
- return false;
- }
- if (!preg_match('/^@(phan-)?(param|return)\s/', $line)) {
- return false;
- }
- if (preg_match(Builder::PARAM_COMMENT_REGEX, $line, $matches)) {
- if ($matches[0] !== $line) {
- // There's a description after the (at)param annotation
- return false;
- }
- } elseif (preg_match(Builder::RETURN_COMMENT_REGEX, $line, $matches)) {
- if ($matches[0] !== $line) {
- // There's a description after the (at)return annotation
- return false;
- }
- } else {
- // This is not a valid annotation. It might be documentation.
- return false;
- }
- }
- $comment = $method->getComment();
- if (!$comment) {
- // unparseable?
- return false;
- }
- if ($comment->hasReturnUnionType()) {
- $comment_return_type = $comment->getReturnType();
- if (!$comment_return_type->isEmpty() && !$comment_return_type->asNormalizedTypes()->isEqualTo($method->getRealReturnType())) {
- return false;
- }
- }
- if (count($comment->getParameterList()) > 0) {
- return false;
- }
- foreach ($comment->getParameterMap() as $comment_param_name => $param) {
- $comment_param_type = $param->getUnionType()->asNormalizedTypes();
- if ($comment_param_type->isEmpty()) {
- return false;
- }
- foreach ($method->getRealParameterList() as $real_param) {
- if ($real_param->getName() === $comment_param_name) {
- if ($real_param->getUnionType()->isEqualTo($comment_param_type)) {
- // This is redundant, check remaining parameters.
- continue 2;
- }
- }
- }
- // could not find that comment param, Phan warns elsewhere.
- // Assume this is not redundant.
- return false;
- }
- return true;
- }
-
- private static function analyzeFunctionLike(CodeBase $code_base, FunctionInterface $method): void
- {
- if (Phan::isExcludedAnalysisFile($method->getContext()->getFile())) {
- // This has no side effects, so we can skip files that don't need to be analyzed
- return;
- }
- $comment = $method->getDocComment();
- if (!StringUtil::isNonZeroLengthString($comment)) {
- return;
- }
- if (!self::isRedundantFunctionComment($method, $comment)) {
- self::checkIsRedundantReturn($code_base, $method, $comment);
- return;
- }
- $encoded_comment = StringUtil::encodeValue($comment);
- if ($method instanceof Method) {
- self::emitIssue(
- $code_base,
- $method->getContext(),
- self::RedundantMethodComment,
- 'Redundant doc comment on method {METHOD}(). Either add a description or remove the comment: {COMMENT}',
- [$method->getName(), $encoded_comment]
- );
- } elseif ($method instanceof Func && $method->isClosure()) {
- self::emitIssue(
- $code_base,
- $method->getContext(),
- self::RedundantClosureComment,
- 'Redundant doc comment on closure {FUNCTION}. Either add a description or remove the comment: {COMMENT}',
- [$method->getNameForIssue(), $encoded_comment]
- );
- } else {
- self::emitIssue(
- $code_base,
- $method->getContext(),
- self::RedundantFunctionComment,
- 'Redundant doc comment on function {FUNCTION}(). Either add a description or remove the comment: {COMMENT}',
- [$method->getName(), $encoded_comment]
- );
- }
- }
-
- private static function checkIsRedundantReturn(CodeBase $code_base, FunctionInterface $method, string $doc_comment): void
- {
- if (strpos($doc_comment, '@return') === false) {
- return;
- }
- $comment = $method->getComment();
- if (!$comment) {
- // unparseable?
- return;
- }
- if ($method->getRealReturnType()->isEmpty()) {
- return;
- }
- if (!$comment->hasReturnUnionType()) {
- return;
- }
- $comment_return_type = $comment->getReturnType();
- if (!$comment_return_type->asNormalizedTypes()->isEqualTo($method->getRealReturnType())) {
- return;
- }
- $lines = explode("\n", $doc_comment);
- for ($i = count($lines) - 1; $i >= 0; $i--) {
- $line = $lines[$i];
- $line = trim($line, " \r\n\t*/");
- if ($line === '') {
- continue;
- }
- if ($line[0] !== '@') {
- return;
- }
- if (!preg_match('/^@(phan-)?return\s/', $line)) {
- continue;
- }
- // @phan-suppress-next-line PhanAccessClassConstantInternal
- if (!preg_match(Builder::RETURN_COMMENT_REGEX, $line, $matches)) {
- return;
- }
- if ($matches[0] !== $line) {
- // There's a description after the (at)return annotation
- return;
- }
- self::emitIssue(
- $code_base,
- $method->getContext()->withLineNumberStart($comment->getReturnLineno()),
- self::RedundantReturnComment,
- 'Redundant @return {TYPE} on function {FUNCTION}. Either add a description or remove the @return annotation: {COMMENT}',
- [$comment_return_type, $method->getNameForIssue(), $line]
- );
- return;
- }
- }
-
- /**
- * @return array
- */
- public function getAutomaticFixers(): array
- {
- require_once __DIR__ . '/PHPDocRedundantPlugin/Fixers.php';
- $function_like_fixer = Closure::fromCallable([Fixers::class, 'fixRedundantFunctionLikeComment']);
- return [
- self::RedundantFunctionComment => $function_like_fixer,
- self::RedundantMethodComment => $function_like_fixer,
- self::RedundantClosureComment => $function_like_fixer,
- self::RedundantReturnComment => Closure::fromCallable([Fixers::class, 'fixRedundantReturnComment']),
- ];
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new PHPDocRedundantPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/PHPDocRedundantPlugin/Fixers.php b/vendor/phan/phan/.phan/plugins/PHPDocRedundantPlugin/Fixers.php
deleted file mode 100644
index d861fd91..00000000
--- a/vendor/phan/phan/.phan/plugins/PHPDocRedundantPlugin/Fixers.php
+++ /dev/null
@@ -1,187 +0,0 @@
-getTemplateParameters();
- $name = $params[0];
- $encoded_comment = $params[1];
- // @phan-suppress-next-line PhanPartialTypeMismatchArgument
- $declaration = self::findFunctionLikeDeclaration($contents, $instance->getLine(), $name);
- if (!$declaration) {
- return null;
- }
- return self::computeEditsToRemoveFunctionLikeComment($contents, $declaration, (string)$encoded_comment);
- }
-
- private static function computeEditsToRemoveFunctionLikeComment(FileCacheEntry $contents, FunctionLike $declaration, string $encoded_comment): ?FileEditSet
- {
- if (!$declaration instanceof PhpParser\Node) {
- // impossible
- return null;
- }
- $comment_token = self::getDocCommentToken($declaration);
- if (!$comment_token) {
- return null;
- }
- $file_contents = $contents->getContents();
- $comment = $comment_token->getText($file_contents);
- $actual_encoded_comment = StringUtil::encodeValue($comment);
- if ($actual_encoded_comment !== $encoded_comment) {
- return null;
- }
- return self::computeEditSetToDeleteComment($file_contents, $comment_token);
- }
-
- private static function computeEditSetToDeleteComment(string $file_contents, Token $comment_token): FileEditSet
- {
- // get the byte where the `)` of the argument list ends
- $last_byte_index = $comment_token->getEndPosition();
- $first_byte_index = $comment_token->start;
- // Skip leading whitespace and the previous newline, if those were found
- for (; $first_byte_index > 0; $first_byte_index--) {
- $prev_byte = $file_contents[$first_byte_index - 1];
- switch ($prev_byte) {
- case " ":
- case "\t":
- // keep skipping previous bytes of whitespace
- break;
- case "\n":
- $first_byte_index--;
- if ($first_byte_index > 0 && $file_contents[$first_byte_index - 1] === "\r") {
- $first_byte_index--;
- }
- break 2;
- case "\r":
- $first_byte_index--;
- break 2;
- default:
- // This is not whitespace, so stop.
- break 2;
- }
- }
- $file_edit = new FileEdit($first_byte_index, $last_byte_index, '');
- return new FileEditSet([$file_edit]);
- }
-
- /**
- * Add a missing return type to the real signature
- * @param CodeBase $code_base @unused-param
- */
- public static function fixRedundantReturnComment(
- CodeBase $code_base,
- FileCacheEntry $contents,
- IssueInstance $instance
- ): ?FileEditSet {
- $lineno = $instance->getLine();
- $file_lines = $contents->getLines();
-
- $line = \trim($file_lines[$lineno]);
- // @phan-suppress-next-line PhanAccessClassConstantInternal
- if (!\preg_match(Builder::RETURN_COMMENT_REGEX, $line)) {
- return null;
- }
- $first_deleted_line = $lineno;
- $last_deleted_line = $lineno;
- $is_blank_comment_line = static function (int $i) use ($file_lines): bool {
- return \trim($file_lines[$i] ?? '') === '*';
- };
- while ($is_blank_comment_line($first_deleted_line - 1)) {
- $first_deleted_line--;
- }
- while ($is_blank_comment_line($last_deleted_line + 1)) {
- $last_deleted_line++;
- }
- $start_offset = $contents->getLineOffset($first_deleted_line);
- $end_offset = $contents->getLineOffset($last_deleted_line + 1);
- if (!$start_offset || !$end_offset) {
- return null;
- }
- // Return an edit to delete the `(at)return RedundantType` and the surrounding blank comment lines
- return new FileEditSet([new FileEdit($start_offset, $end_offset, '')]);
- }
-
- /**
- * @suppress PhanThrowTypeAbsentForCall
- * @suppress PhanUndeclaredClassMethod
- * @suppress UnusedSuppression false positive for PhpTokenizer with polyfill due to https://github.com/Microsoft/tolerant-php-parser/issues/292
- */
- private static function getDocCommentToken(PhpParser\Node $node): ?Token
- {
- $leadingTriviaText = $node->getLeadingCommentAndWhitespaceText();
- $leadingTriviaTokens = PhpTokenizer::getTokensArrayFromContent(
- $leadingTriviaText,
- ParseContext::SourceElements,
- $node->getFullStartPosition(),
- false
- );
- for ($i = \count($leadingTriviaTokens) - 1; $i >= 0; $i--) {
- $token = $leadingTriviaTokens[$i];
- if ($token->kind === TokenKind::DocCommentToken) {
- return $token;
- }
- }
- return null;
- }
-
- private static function findFunctionLikeDeclaration(
- FileCacheEntry $contents,
- int $line,
- string $name
- ): ?FunctionLike {
- $candidates = [];
- foreach ($contents->getNodesAtLine($line) as $node) {
- if ($node instanceof FunctionDeclaration || $node instanceof MethodDeclaration) {
- $name_node = $node->name;
- if (!$name_node) {
- continue;
- }
- $declaration_name = (new NodeUtils($contents->getContents()))->tokenToString($name_node);
- if ($declaration_name === $name) {
- $candidates[] = $node;
- }
- } elseif ($node instanceof AnonymousFunctionCreationExpression) {
- if (\preg_match('/^Closure\(/', $name)) {
- $candidates[] = $node;
- }
- }
- }
- if (\count($candidates) === 1) {
- return $candidates[0];
- }
- return null;
- }
-}
diff --git a/vendor/phan/phan/.phan/plugins/PHPDocToRealTypesPlugin.php b/vendor/phan/phan/.phan/plugins/PHPDocToRealTypesPlugin.php
deleted file mode 100644
index e1d3b21a..00000000
--- a/vendor/phan/phan/.phan/plugins/PHPDocToRealTypesPlugin.php
+++ /dev/null
@@ -1,161 +0,0 @@
- */
- private $deferred_analysis_methods = [];
-
- /**
- * @return array
- */
- public function getAutomaticFixers(): array
- {
- require_once __DIR__ . '/PHPDocToRealTypesPlugin/Fixers.php';
- $param_closure = Closure::fromCallable([Fixers::class, 'fixParamType']);
- $return_closure = Closure::fromCallable([Fixers::class, 'fixReturnType']);
- return [
- self::CanUsePHP71Void => $return_closure,
- self::CanUseReturnType => $return_closure,
- self::CanUseNullableReturnType => $return_closure,
- self::CanUseNullableParamType => $param_closure,
- self::CanUseParamType => $param_closure,
- ];
- }
-
- public function analyzeFunction(CodeBase $code_base, Func $function): void
- {
- self::analyzeFunctionLike($code_base, $function);
- }
-
- /**
- * @param CodeBase $code_base @unused-param
- */
- public function analyzeMethod(CodeBase $code_base, Method $method): void
- {
- if ($method->isFromPHPDoc() || $method->isMagic() || $method->isPHPInternal()) {
- return;
- }
- if ($method->getFQSEN() !== $method->getDefiningFQSEN()) {
- return;
- }
- $this->deferred_analysis_methods[$method->getFQSEN()->__toString()] = $method;
- }
-
- public function beforeAnalyzePhase(CodeBase $code_base): void
- {
- $ignore_overrides = (bool)getenv('PHPDOC_TO_REAL_TYPES_IGNORE_INHERITANCE');
- foreach ($this->deferred_analysis_methods as $method) {
- if ($method->isOverride() || $method->isOverriddenByAnother()) {
- if (!$ignore_overrides) {
- continue;
- }
- }
- self::analyzeFunctionLike($code_base, $method);
- }
- }
-
- private static function analyzeFunctionLike(CodeBase $code_base, FunctionInterface $method): void
- {
- if (Phan::isExcludedAnalysisFile($method->getContext()->getFile())) {
- // This has no side effects, so we can skip files that don't need to be analyzed
- return;
- }
- if ($method->getRealReturnType()->isEmpty()) {
- self::analyzeReturnTypeOfFunctionLike($code_base, $method);
- }
- $phpdoc_param_list = $method->getParameterList();
- foreach ($method->getRealParameterList() as $i => $parameter) {
- if (!$parameter->getNonVariadicUnionType()->isEmpty()) {
- continue;
- }
- $phpdoc_param = $phpdoc_param_list[$i];
- if (!$phpdoc_param) {
- continue;
- }
- $union_type = $phpdoc_param->getNonVariadicUnionType()->asNormalizedTypes();
- if ($union_type->typeCount() !== 1) {
- continue;
- }
- $type = $union_type->getTypeSet()[0];
- if (!$type->canUseInRealSignature()) {
- continue;
- }
- self::emitIssue(
- $code_base,
- $method->getContext(),
- $type->isNullable() ? self::CanUseNullableParamType : self::CanUseParamType,
- 'Can use {TYPE} as the type of parameter ${PARAMETER} of {METHOD}',
- [$type->asSignatureType(), $parameter->getName(), $method->getName()]
- );
- }
- }
-
- private static function analyzeReturnTypeOfFunctionLike(CodeBase $code_base, FunctionInterface $method): void
- {
- $union_type = $method->getUnionType();
- if ($union_type->isVoidType()) {
- self::emitIssue(
- $code_base,
- $method->getContext(),
- self::CanUsePHP71Void,
- 'Can use php 7.1\'s {TYPE} as a return type of {METHOD}',
- ['void', $method->getName()]
- );
- return;
- }
- $union_type = $union_type->asNormalizedTypes();
- if ($union_type->typeCount() !== 1) {
- return;
- }
- $type = $union_type->getTypeSet()[0];
- if (!$type->canUseInRealSignature()) {
- return;
- }
- self::emitIssue(
- $code_base,
- $method->getContext(),
- $type->isNullable() ? self::CanUseNullableReturnType : self::CanUseReturnType,
- 'Can use {TYPE} as a return type of {METHOD}',
- [$type->asSignatureType(), $method->getName()]
- );
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new PHPDocToRealTypesPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/PHPDocToRealTypesPlugin/Fixers.php b/vendor/phan/phan/.phan/plugins/PHPDocToRealTypesPlugin/Fixers.php
deleted file mode 100644
index 6d74c90f..00000000
--- a/vendor/phan/phan/.phan/plugins/PHPDocToRealTypesPlugin/Fixers.php
+++ /dev/null
@@ -1,133 +0,0 @@
-getTemplateParameters();
- $return_type = $params[0];
- $name = $params[1];
- // @phan-suppress-next-line PhanPartialTypeMismatchArgument
- $declaration = self::findFunctionLikeDeclaration($contents, $instance->getLine(), $name);
- if (!$declaration) {
- return null;
- }
- return self::computeEditsForReturnTypeDeclaration($declaration, (string)$return_type);
- }
-
- /**
- * Add a missing param type to the real signature
- * @unused-param $code_base
- */
- public static function fixParamType(
- CodeBase $code_base,
- FileCacheEntry $contents,
- IssueInstance $instance
- ): ?FileEditSet {
- $params = $instance->getTemplateParameters();
- $param_type = $params[0];
- $param_name = $params[1];
- $method_name = $params[2];
- // @phan-suppress-next-line PhanPartialTypeMismatchArgument
- $declaration = self::findFunctionLikeDeclaration($contents, $instance->getLine(), $method_name);
- if (!$declaration) {
- return null;
- }
- return self::computeEditsForParamTypeDeclaration($contents, $declaration, (string)$param_name, (string)$param_type);
- }
-
- private static function computeEditsForReturnTypeDeclaration(FunctionLike $declaration, string $return_type): ?FileEditSet
- {
- if ($return_type === '') {
- return null;
- }
- // @phan-suppress-next-line PhanUndeclaredProperty
- $close_bracket = $declaration->anonymousFunctionUseClause->closeParen ?? $declaration->closeParen;
- if (!$close_bracket instanceof Token) {
- return null;
- }
- // get the byte where the `)` of the argument list ends
- $last_byte_index = $close_bracket->getEndPosition();
- $file_edit = new FileEdit($last_byte_index, $last_byte_index, " : $return_type");
- return new FileEditSet([$file_edit]);
- }
-
- private static function computeEditsForParamTypeDeclaration(FileCacheEntry $contents, FunctionLike $declaration, string $param_name, string $param_type): ?FileEditSet
- {
- if ($param_type === '') {
- return null;
- }
- // @phan-suppress-next-line PhanUndeclaredProperty
- $parameter_node_list = $declaration->parameters->children ?? [];
- foreach ($parameter_node_list as $param) {
- if (!$param instanceof PhpParser\Node\Parameter) {
- continue;
- }
- $declaration_name = (new NodeUtils($contents->getContents()))->tokenToString($param->variableName);
- if ($declaration_name !== $param_name) {
- continue;
- }
- $token = $param->byRefToken ?? $param->dotDotDotToken ?? $param->variableName;
- $token_start_index = $token->start;
- $file_edit = new FileEdit($token_start_index, $token_start_index, "$param_type ");
- return new FileEditSet([$file_edit]);
- }
- return null;
- }
-
- private static function findFunctionLikeDeclaration(
- FileCacheEntry $contents,
- int $line,
- string $name
- ): ?FunctionLike {
- $candidates = [];
- foreach ($contents->getNodesAtLine($line) as $node) {
- if ($node instanceof FunctionDeclaration || $node instanceof MethodDeclaration) {
- $name_node = $node->name;
- if (!$name_node) {
- continue;
- }
- $declaration_name = (new NodeUtils($contents->getContents()))->tokenToString($name_node);
- if ($declaration_name === $name) {
- $candidates[] = $node;
- }
- } elseif ($node instanceof AnonymousFunctionCreationExpression) {
- if ($name === '{closure}') {
- $candidates[] = $node;
- }
- }
- }
- if (\count($candidates) === 1) {
- return $candidates[0];
- }
- return null;
- }
-}
diff --git a/vendor/phan/phan/.phan/plugins/PHPUnitAssertionPlugin.php b/vendor/phan/phan/.phan/plugins/PHPUnitAssertionPlugin.php
deleted file mode 100644
index 4b1c88d4..00000000
--- a/vendor/phan/phan/.phan/plugins/PHPUnitAssertionPlugin.php
+++ /dev/null
@@ -1,241 +0,0 @@
-hasClassWithFQSEN($assert_class_fqsen)) {
- if (!getenv('PHAN_PHPUNIT_ASSERTION_PLUGIN_QUIET')) {
- // @phan-suppress-next-line PhanPluginRemoveDebugCall
- fwrite(STDERR, "PHPUnitAssertionPlugin failed to find class PHPUnit\Framework\Assert, giving up (set environment variable PHAN_PHPUNIT_ASSERTION_PLUGIN_QUIET=1 to ignore this)\n");
- }
- return [];
- }
- $result = [];
- foreach ($code_base->getClassByFQSEN($assert_class_fqsen)->getMethodMap($code_base) as $method) {
- $closure = $this->createClosureForMethod($code_base, $method, $method->getName());
- if (!$closure) {
- continue;
- }
- $result[(string)$method->getFQSEN()] = $closure;
- }
- return $result;
- }
-
- /**
- * @return ?Closure(CodeBase, Context, FunctionInterface, array, ?Node):void
- * @suppress PhanAccessClassConstantInternal, PhanAccessMethodInternal
- */
- private function createClosureForMethod(CodeBase $code_base, Method $method, string $name): ?Closure
- {
- // TODO: Add a helper method which will convert a doc comment and a stub php function source code to a closure for a param index (or indices)
- switch (\strtolower($name)) {
- case 'asserttrue':
- case 'assertnotfalse':
- return $method->createClosureForAssertion(
- $code_base,
- new Assertion(UnionType::empty(), 'unusedParamName', Assertion::IS_TRUE),
- 0
- );
- case 'assertfalse':
- case 'assertnottrue':
- return $method->createClosureForAssertion(
- $code_base,
- new Assertion(UnionType::empty(), 'unusedParamName', Assertion::IS_FALSE),
- 0
- );
- // TODO: Rest of https://github.com/sebastianbergmann/phpunit/issues/3368
- case 'assertisstring':
- // TODO: Could convert to real types?
- return $method->createClosureForAssertion(
- $code_base,
- new Assertion(UnionType::fromFullyQualifiedPHPDocString('string'), 'unusedParamName', Assertion::IS_OF_TYPE),
- 0
- );
- case 'assertnull':
- return $method->createClosureForAssertion(
- $code_base,
- new Assertion(UnionType::fromFullyQualifiedPHPDocString('null'), 'unusedParamName', Assertion::IS_OF_TYPE),
- 0
- );
- case 'assertnotnull':
- return $method->createClosureForAssertion(
- $code_base,
- new Assertion(UnionType::fromFullyQualifiedPHPDocString('null'), 'unusedParamName', Assertion::IS_NOT_OF_TYPE),
- 0
- );
- case 'assertsame':
- // Sets the type of $actual to $expected
- //
- // This is equivalent to the side effects of the below doc comment.
- // Note that the doc comment would make phan emit warnings about invalid classes, etc.
- // TODO: Reuse the code for templates here
- //
- // (at)template T
- // (at)param T $expected
- // (at)param mixed $actual
- // (at)phan-assert T $actual
- return $method->createClosureForUnionTypeExtractorAndAssertionType(
- /**
- * @param list $args
- */
- static function (CodeBase $code_base, Context $context, array $args): UnionType {
- if (\count($args) < 2) {
- return UnionType::empty();
- }
- return UnionTypeVisitor::unionTypeFromNode($code_base, $context, $args[0]);
- },
- Assertion::IS_OF_TYPE,
- 1
- );
- case 'assertinternaltype':
- return $method->createClosureForUnionTypeExtractorAndAssertionType(
- /**
- * @param list $args
- */
- function (CodeBase $code_base, Context $context, array $args): UnionType {
- if (\count($args) < 2) {
- return UnionType::empty();
- }
- $string = $args[0];
- if ($string instanceof ast\Node) {
- $string = (UnionTypeVisitor::unionTypeFromNode($code_base, $context, $string))->asSingleScalarValueOrNull();
- }
- if (!is_string($string)) {
- return UnionType::empty();
- }
- $original_type = (UnionTypeVisitor::unionTypeFromNode($code_base, $context, $args[1]));
- switch ($string) {
- case 'numeric':
- return UnionType::fromFullyQualifiedPHPDocString('int|float|string');
- case 'integer':
- case 'int':
- return UnionType::fromFullyQualifiedPHPDocString('int');
-
- case 'double':
- case 'float':
- case 'real':
- return UnionType::fromFullyQualifiedPHPDocString('float');
-
- case 'string':
- return UnionType::fromFullyQualifiedPHPDocString('string');
-
- case 'boolean':
- case 'bool':
- return UnionType::fromFullyQualifiedPHPDocString('bool');
-
- case 'null':
- return UnionType::fromFullyQualifiedPHPDocString('null');
-
- case 'array':
- $result = $original_type->arrayTypes();
- if ($result->isEmpty()) {
- return UnionType::fromFullyQualifiedPHPDocString('array');
- }
- return $result;
- case 'object':
- $result = $original_type->objectTypes();
- if ($result->isEmpty()) {
- return UnionType::fromFullyQualifiedPHPDocString('object');
- }
- return $result;
- case 'resource':
- return UnionType::fromFullyQualifiedPHPDocString('resource');
- case 'scalar':
- $result = $original_type->scalarTypes();
- if ($result->isEmpty()) {
- return UnionType::fromFullyQualifiedPHPDocString('int|string|float|bool');
- }
- return $result;
-
- case 'callable':
- $result = $original_type->callableTypes($code_base);
- if ($result->isEmpty()) {
- return UnionType::fromFullyQualifiedPHPDocString('callable');
- }
- return $result;
- }
- // Warn about possibly invalid assertion
- // NOTE: This is only emitted for variables
- $this->emitPluginIssue(
- $code_base,
- $context,
- 'PhanPluginPHPUnitAssertionInvalidInternalType',
- 'Unknown type {STRING_LITERAL} in call to assertInternalType',
- [$string]
- );
-
- return UnionType::empty();
- },
- Assertion::IS_OF_TYPE,
- 1
- );
- case 'assertinstanceof':
- // This is equivalent to the side effects of the below doc comment.
- // Note that the doc comment would make phan emit warnings about invalid classes, etc.
- // TODO: Reuse the code for class-string here.
- //
- // (at)template T
- // (at)param class-string $expected
- // (at)param mixed $actual
- // (at)phan-assert T $actual
- return $method->createClosureForUnionTypeExtractorAndAssertionType(
- /**
- * @param list $args
- */
- static function (CodeBase $code_base, Context $context, array $args): UnionType {
- if (\count($args) < 2) {
- return UnionType::empty();
- }
- $string = (UnionTypeVisitor::unionTypeFromNode($code_base, $context, $args[0]))->asSingleScalarValueOrNull();
- if (!is_string($string)) {
- return UnionType::empty();
- }
- try {
- return FullyQualifiedClassName::fromFullyQualifiedString($string)->asType()->asPHPDocUnionType();
- } catch (\Exception $_) {
- return UnionType::empty();
- }
- },
- Assertion::IS_OF_TYPE,
- 1
- );
- }
- return null;
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new PHPUnitAssertionPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/PHPUnitNotDeadCodePlugin.php b/vendor/phan/phan/.phan/plugins/PHPUnitNotDeadCodePlugin.php
deleted file mode 100644
index a7858fa6..00000000
--- a/vendor/phan/phan/.phan/plugins/PHPUnitNotDeadCodePlugin.php
+++ /dev/null
@@ -1,154 +0,0 @@
-code_base contains all class definitions
- * @override
- * @unused-param $node
- */
- public function visitClass(Node $node): void
- {
- if (!Config::get_track_references()) {
- return;
- }
- $code_base = $this->code_base;
- if (!$code_base->hasClassWithFQSEN(self::$phpunit_test_case_fqsen)) {
- if (!self::$did_warn_missing_class) {
- // @phan-suppress-next-line PhanPluginRemoveDebugCall
- fprintf(STDERR, "Using plugin %s but could not find PHPUnit\Framework\TestCase\n", self::class);
- self::$did_warn_missing_class = true;
- }
- return;
- }
- // This assumes PreOrderAnalysisVisitor->visitClass is called first.
- $context = $this->context;
- $class = $context->getClassInScope($code_base);
- if (!$class->getFQSEN()->asType()->asExpandedTypes($code_base)->hasType(self::$phpunit_test_case_type)) {
- // This isn't a phpunit test case.
- return;
- }
-
- // Mark subclasses of TestCase as referenced
- $class->addReference($context);
- // Mark all test cases as referenced
- foreach ($class->getMethodMap($code_base) as $method) {
- if (static::isTestCase($method)) {
- // TODO: Parse @dataProvider methodName, check for method existence,
- // then mark method for dataProvider as referenced.
- $method->addReference($context);
- $this->markDataProvidersAsReferenced($class, $method);
- }
- }
- // https://phpunit.de/manual/current/en/fixtures.html (PHPUnit framework checks for this override)
- if ($class->hasPropertyWithName($code_base, 'backupStaticAttributesBlacklist')) {
- $property = $class->getPropertyByName($code_base, 'backupStaticAttributesBlacklist');
- $property->addReference($context);
- $property->setHasReadReference();
- }
- }
-
- /**
- * This regex contains a single pattern, which matches a valid PHP identifier.
- * (e.g. for variable names, magic property names, etc.
- * This does not allow backslashes.
- */
- private const WORD_REGEX = '([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)';
-
- /**
- * Marks all data provider methods as being referenced
- *
- * @param Method $method the Method representing a unit test in a test case subclass
- */
- private function markDataProvidersAsReferenced(Clazz $class, Method $method): void
- {
- if (preg_match('/@dataProvider\s+' . self::WORD_REGEX . '/', $method->getNode()->children['docComment'] ?? '', $match)) {
- $data_provider_name = $match[1];
- if ($class->hasMethodWithName($this->code_base, $data_provider_name, true)) {
- $class->getMethodByName($this->code_base, $data_provider_name)->addReference($this->context);
- }
- }
- }
-
- /**
- * @return bool true if $method is a PHPUnit test case
- */
- protected static function isTestCase(Method $method): bool
- {
- if (!$method->isPublic()) {
- return false;
- }
- if (preg_match('@^test@i', $method->getName())) {
- return true;
- }
- if (preg_match('/@test\b/', $method->getNode()->children['docComment'] ?? '')) {
- return true;
- }
- return false;
- }
-
- /**
- * Static initializer for this plugin - Gets called below before any methods can be used
- * @suppress PhanThrowTypeAbsentForCall this FQSEN is valid
- */
- public static function init(): void
- {
- $fqsen = FullyQualifiedClassName::make('\\PHPUnit\Framework', 'TestCase');
- self::$phpunit_test_case_fqsen = $fqsen;
- self::$phpunit_test_case_type = $fqsen->asType();
- }
-}
-PHPUnitNotDeadPluginVisitor::init();
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new PHPUnitNotDeadCodePlugin();
diff --git a/vendor/phan/phan/.phan/plugins/PhanSelfCheckPlugin.php b/vendor/phan/phan/.phan/plugins/PhanSelfCheckPlugin.php
deleted file mode 100644
index 7563d7fa..00000000
--- a/vendor/phan/phan/.phan/plugins/PhanSelfCheckPlugin.php
+++ /dev/null
@@ -1,271 +0,0 @@
-):void
- */
- $make_array_issue_callback = static function (int $fmt_index, int $arg_index): Closure {
- /**
- * @param list $args the nodes for the arguments to the invocation
- */
- return static function (
- CodeBase $code_base,
- Context $context,
- FunctionInterface $unused_function,
- array $args
- ) use (
- $fmt_index,
- $arg_index
- ): void {
- if (\count($args) <= $fmt_index) {
- return;
- }
- // TODO: Check for AST_UNPACK
- $issue_message_template = $args[$fmt_index];
- if ($issue_message_template instanceof Node) {
- $issue_message_template = (new ContextNode($code_base, $context, $issue_message_template))->getEquivalentPHPScalarValue();
- }
- if (!is_string($issue_message_template)) {
- return;
- }
- $issue_message_arg_count = self::computeArraySize($code_base, $context, $args[$arg_index] ?? null);
- if ($issue_message_arg_count === null) {
- return;
- }
- self::checkIssueTemplateUsage($code_base, $context, $issue_message_template, $issue_message_arg_count);
- };
- };
- /**
- * @param int $type_index the index of a parameter expecting an issue type (e.g. PhanParamTooMany)
- * @param int $arg_index the index of an array parameter expecting sequential arguments. This is >= $type_index.
- * @return Closure(CodeBase, Context, FunctionInterface, list):void
- */
- $make_type_and_parameters_callback = static function (int $type_index, int $arg_index): Closure {
- /**
- * @param list $args the nodes for the arguments to the invocation
- */
- return static function (
- CodeBase $code_base,
- Context $context,
- FunctionInterface $function,
- array $args
- ) use (
- $type_index,
- $arg_index
- ): void {
- if (\count($args) <= $type_index) {
- return;
- }
- // TODO: Check for AST_UNPACK
- $issue_type = $args[$type_index];
- if ($issue_type instanceof Node) {
- $issue_type = (new ContextNode($code_base, $context, $issue_type))->getEquivalentPHPScalarValue();
- }
- if (!is_string($issue_type)) {
- return;
- }
- $issue = self::getIssueOrWarn($code_base, $context, $function, $issue_type);
- if (!$issue) {
- return;
- }
- $issue_message_arg_count = self::computeArraySize($code_base, $context, $args[$arg_index] ?? null);
- if ($issue_message_arg_count === null) {
- return;
- }
- self::checkIssueTemplateUsage($code_base, $context, $issue->getTemplate(), $issue_message_arg_count);
- };
- };
- /**
- * @param int $type_index the index of a parameter expecting an issue type (e.g. PhanParamTooMany)
- * @param int $arg_index the index of an array parameter expecting variable arguments. This is >= $type_index.
- * @return Closure(CodeBase, Context, FunctionInterface, list):void
- */
- $make_type_and_varargs_callback = static function (int $type_index, int $arg_index): Closure {
- /**
- * @param list $args the nodes for the arguments to the invocation
- */
- return static function (
- CodeBase $code_base,
- Context $context,
- FunctionInterface $function,
- array $args
- ) use (
- $type_index,
- $arg_index
- ): void {
- if (\count($args) <= $type_index) {
- return;
- }
- // TODO: Check for AST_UNPACK
- $issue_type = $args[$type_index];
- if ($issue_type instanceof Node) {
- $issue_type = (new ContextNode($code_base, $context, $issue_type))->getEquivalentPHPScalarValue();
- }
- if (!is_string($issue_type)) {
- return;
- }
- $issue = self::getIssueOrWarn($code_base, $context, $function, $issue_type);
- if (!$issue) {
- return;
- }
- if ((\end($args)->kind ?? null) === \ast\AST_UNPACK) {
- // give up
- return;
- }
- // number of args passed to varargs. >= 0 if valid.
- $issue_message_arg_count = count($args) - $arg_index;
- if ($issue_message_arg_count < 0) {
- // should already emit PhanParamTooFew
- return;
- }
- self::checkIssueTemplateUsage($code_base, $context, $issue->getTemplate(), $issue_message_arg_count);
- };
- };
- /**
- * Analyzes a call to plugin->emitIssue($code_base, $context, $issue_type, $issue_message_fmt, $args)
- */
- $short_emit_issue_callback = $make_type_and_varargs_callback(0, 2);
-
- $results = [
- '\Phan\AST\ContextNode::emitIssue' => $short_emit_issue_callback,
- '\Phan\Issue::emit' => $make_type_and_varargs_callback(0, 3),
- '\Phan\Issue::emitWithParameters' => $make_type_and_parameters_callback(0, 3),
- '\Phan\Issue::maybeEmit' => $make_type_and_varargs_callback(2, 4),
- '\Phan\Issue::maybeEmitWithParameters' => $make_type_and_parameters_callback(2, 4),
- '\Phan\Analysis\BinaryOperatorFlagVisitor::emitIssue' => $short_emit_issue_callback,
- '\Phan\Language\Element\Comment\Builder::emitIssue' => $make_type_and_parameters_callback(0, 2),
- ];
- // @phan-suppress-next-line PhanThrowTypeAbsentForCall
- $emit_plugin_issue_fqsen = FullyQualifiedMethodName::fromFullyQualifiedString('\Phan\PluginV3\IssueEmitter::emitPluginIssue');
- // @phan-suppress-next-line PhanThrowTypeAbsentForCall
- $analysis_visitor_fqsen = FullyQualifiedMethodName::fromFullyQualifiedString('\Phan\AST\AnalysisVisitor::emitIssue');
-
- $emit_plugin_issue_callback = $make_array_issue_callback(3, 4);
- foreach ($code_base->getMethodSet() as $method) {
- $real_fqsen = $method->getRealDefiningFQSEN();
- if ($real_fqsen === $emit_plugin_issue_fqsen) {
- $results[(string)$method->getFQSEN()] = $emit_plugin_issue_callback;
- } elseif ($real_fqsen === $analysis_visitor_fqsen) {
- $results[(string)$method->getFQSEN()] = $short_emit_issue_callback;
- }
- }
- return $results;
- }
-
- private static function getIssueOrWarn(CodeBase $code_base, Context $context, FunctionInterface $function, string $issue_type): ?Issue
- {
- // Calling Issue::fromType() would print a backtrace to stderr
- $issue = Issue::issueMap()[$issue_type] ?? null;
- if (!$issue) {
- self::emitIssue(
- $code_base,
- $context,
- self::UnknownIssueType,
- 'Unknown issue type {STRING_LITERAL} in a call to {METHOD}(). (may be a false positive - check if the version of Phan running PhanSelfCheckPlugin is the same version that the analyzed codebase is using)',
- [$issue_type, $function->getFQSEN()]
- );
- return null;
- }
- return $issue;
- }
-
- private static function checkIssueTemplateUsage(CodeBase $code_base, Context $context, string $issue_message_template, int $issue_message_arg_count): void
- {
- $issue_message_format_string = Issue::templateToFormatString($issue_message_template);
- $expected_arg_count = ConversionSpec::computeExpectedArgumentCount($issue_message_format_string);
- if ($expected_arg_count === $issue_message_arg_count) {
- return;
- }
- if ($issue_message_arg_count > $expected_arg_count) {
- self::emitIssue(
- $code_base,
- $context,
- self::TooManyArgumentsForIssue,
- 'Too many arguments for issue {STRING_LITERAL}: expected {COUNT}, got {COUNT}',
- [StringUtil::jsonEncode($issue_message_template), $expected_arg_count, $issue_message_arg_count],
- Issue::SEVERITY_NORMAL
- );
- } else {
- self::emitIssue(
- $code_base,
- $context,
- self::TooFewArgumentsForIssue,
- 'Too few arguments for issue {STRING_LITERAL}: expected {COUNT}, got {COUNT}',
- [StringUtil::jsonEncode($issue_message_template), $expected_arg_count, $issue_message_arg_count],
- Issue::SEVERITY_CRITICAL
- );
- }
- }
-
- /**
- * @param Node|mixed $arg
- */
- private static function computeArraySize(CodeBase $code_base, Context $context, $arg): ?int
- {
- if ($arg === null) {
- return 0;
- }
- $union_type = UnionTypeVisitor::unionTypeFromNode($code_base, $context, $arg);
- if ($union_type->typeCount() !== 1) {
- return null;
- }
- $types = $union_type->getTypeSet();
- $array_shape_type = \reset($types);
- if (!$array_shape_type instanceof ArrayShapeType) {
- return null;
- }
- $field_types = $array_shape_type->getFieldTypes();
- foreach ($field_types as $field_type) {
- if ($field_type->isPossiblyUndefined()) {
- return null;
- }
- }
- return count($field_types);
- }
-}
-
-return new PhanSelfCheckPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/PossiblyStaticMethodPlugin.php b/vendor/phan/phan/.phan/plugins/PossiblyStaticMethodPlugin.php
deleted file mode 100644
index b433a579..00000000
--- a/vendor/phan/phan/.phan/plugins/PossiblyStaticMethodPlugin.php
+++ /dev/null
@@ -1,302 +0,0 @@
- a list of functions and methods where checks were postponed
- */
- private $methods_for_postponed_analysis = [];
-
- /**
- * @param CodeBase $code_base
- * The code base in which the method exists
- *
- * @param FunctionInterface $method
- * A function or method being analyzed
- */
- private static function analyzePostponedMethod(
- CodeBase $code_base,
- FunctionInterface $method
- ): void {
- if ($method instanceof Method) {
- if ($method->isOverride()) {
- // This method can't be static unless its parent is also static.
- return;
- }
- if ($method->isOverriddenByAnother()) {
- // Changing this method causes a fatal error.
- return;
- }
- }
-
- $stmts_list = self::getStatementListToAnalyze($method);
- if ($stmts_list === null) {
- // check for abstract methods, etc.
- return;
- }
- if (self::nodeCanBeStatic($code_base, $method, $stmts_list)) {
- if ($method instanceof Method) {
- $visibility_upper = ucfirst($method->getVisibilityName());
- self::emitIssue(
- $code_base,
- $method->getContext(),
- "PhanPluginPossiblyStatic${visibility_upper}Method",
- "$visibility_upper method {METHOD} can be static",
- [$method->getRepresentationForIssue()]
- );
- } else {
- self::emitIssue(
- $code_base,
- $method->getContext(),
- "PhanPluginPossiblyStaticClosure",
- "{FUNCTION} can be static",
- [$method->getRepresentationForIssue()]
- );
- }
- }
- }
-
- /**
- * @param FunctionInterface $method
- * @return ?Node - returns null if there's no statement list to analyze
- */
- private static function getStatementListToAnalyze(FunctionInterface $method): ?Node
- {
- $node = $method->getNode();
- if (!$node) {
- return null;
- }
- return $node->children['stmts'];
- }
-
- /**
- * @param CodeBase $code_base
- * The code base in which the method exists
- *
- * @param Node|int|string|float|null $node
- * @return bool - returns true if the node allows its method to be static
- */
- private static function nodeCanBeStatic(CodeBase $code_base, FunctionInterface $method, $node): bool
- {
- if (!($node instanceof Node)) {
- if (is_array($node)) {
- foreach ($node as $child_node) {
- if (!self::nodeCanBeStatic($code_base, $method, $child_node)) {
- return false;
- }
- }
- }
- return true;
- }
- switch ($node->kind) {
- case ast\AST_VAR:
- if ($node->children['name'] === 'this') {
- return false;
- }
- // Handle edge cases such as `${$this->varName}`
- break;
- case ast\AST_CLASS:
- case ast\AST_FUNC_DECL:
- return true;
- case ast\AST_STATIC_CALL:
- if (self::isSelfOrParentCallUsingObject($code_base, $method, $node)) {
- return false;
- }
- // Check code such as `static::someMethod($this->prop)`
- break;
- case ast\AST_CLOSURE:
- case ast\AST_ARROW_FUNC:
- if ($node->flags & \ast\flags\MODIFIER_STATIC) {
- return true;
- }
- break;
- }
- foreach ($node->children as $child_node) {
- if (!self::nodeCanBeStatic($code_base, $method, $child_node)) {
- return false;
- }
- }
- return true;
- }
-
- /**
- * @param CodeBase $code_base
- * The code base in which the calling instance method exists
- *
- * @param Node $node a node of kind ast\AST_STATIC_CALL
- * (e.g. SELF::someMethod(), parent::someMethod(), SomeClass::staticMethod())
- *
- * @return bool true if the AST_STATIC_CALL node is really calling an instance method
- */
- private static function isSelfOrParentCallUsingObject(CodeBase $code_base, FunctionInterface $method, Node $node): bool
- {
- $class_node = $node->children['class'];
- if (!($class_node instanceof Node && $class_node->kind === ast\AST_NAME)) {
- return false;
- }
- $class_name = $class_node->children['name'];
- if (!is_string($class_name)) {
- return false;
- }
- if (!in_array(strtolower($class_name), ['self', 'parent'], true)) {
- return false;
- }
- $method_name = $node->children['method'];
- if (!is_string($method_name)) {
- // This is uninferable
- return true;
- }
- if (!$method instanceof AddressableElement) {
- // should be impossible
- return true;
- }
- try {
- $method = (new ContextNode($code_base, new ElementContext($method), $node))->getMethod($method_name, true, false);
- } catch (Exception $_) {
- // This might be an instance method if we don't know what it is
- return true;
- }
- return !$method->isStatic();
- }
-
- /**
- * @param CodeBase $code_base @unused-param
- * The code base in which the method exists
- *
- * @param Method $method
- * A method being analyzed
- *
- * @override
- */
- public function analyzeMethod(
- CodeBase $code_base,
- Method $method
- ): void {
- // 1. Perform any checks that can be done immediately to rule out being able
- // to convert this to a static method
- if ($method->isStatic()) {
- // This is what we want.
- return;
- }
- if ($method->isMagic()) {
- // Magic methods can't be static.
- return;
- }
- if ($method->getFQSEN() !== $method->getRealDefiningFQSEN()) {
- // Only warn once for the original definition of this method.
- // Don't warn about subclasses inheriting this method.
- return;
- }
- $method_filter = Config::getValue('plugin_config')['possibly_static_method_ignore_regex'] ?? null;
- if (is_string($method_filter)) {
- $fqsen_string = ltrim((string)$method->getFQSEN(), '\\');
- if (preg_match($method_filter, $fqsen_string) > 0) {
- return;
- }
- }
- if (!$method->hasNode()) {
- // There's no body to check - This is abstract or can't be checked
- return;
- }
- $fqsen = $method->getFQSEN();
-
- // 2. Defer remaining checks until we have all the necessary information
- // (is this method overridden/an override, is parent::foo() referring to a static or an instance method, etc.)
- $this->methods_for_postponed_analysis[(string) $fqsen] = $method;
- }
-
- /**
- * @param CodeBase $code_base @unused-param
- * The code base in which the function exists
- *
- * @param Func $function
- * A function being analyzed
- * @override
- */
- public function analyzeFunction(
- CodeBase $code_base,
- Func $function
- ): void {
- if (!$function->isClosure()) {
- return;
- }
- if ($function->isStatic()) {
- return;
- }
- if (!$function->hasNode()) {
- // There's no body to check - This is abstract or can't be checked
- return;
- }
- // NOTE: The possibly_static_method_ignore_regex isn't used because there's no way to apply it to closures
- $fqsen = $function->getFQSEN();
-
- // 2. Defer remaining checks until we have all the necessary information
- // (is this method overridden/an override, is parent::foo() referring to a static or an instance method, etc.)
- $this->methods_for_postponed_analysis[(string) $fqsen] = $function;
- }
-
- /**
- * @param CodeBase $code_base
- * The code base being analyzed
- *
- * @override
- */
- public function finalizeProcess(CodeBase $code_base): void
- {
- foreach ($this->methods_for_postponed_analysis as $method) {
- self::analyzePostponedMethod($code_base, $method);
- }
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new PossiblyStaticMethodPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/PreferNamespaceUsePlugin.php b/vendor/phan/phan/.phan/plugins/PreferNamespaceUsePlugin.php
deleted file mode 100644
index 8e8d706e..00000000
--- a/vendor/phan/phan/.phan/plugins/PreferNamespaceUsePlugin.php
+++ /dev/null
@@ -1,183 +0,0 @@
-isMagic() || $method->isPHPInternal()) {
- return;
- }
- if ($method->getFQSEN() !== $method->getDefiningFQSEN()) {
- return;
- }
- self::analyzeFunctionLike($code_base, $method);
- }
-
- private static function analyzeFunctionLike(CodeBase $code_base, FunctionInterface $method): void
- {
- $node = $method->getNode();
- if (!$node) {
- return;
- }
- $return_type = $node->children['returnType'];
- if ($return_type instanceof Node) {
- self::analyzeFunctionLikeReturn($code_base, $method, $return_type);
- }
- foreach ($node->children['params']->children ?? [] as $param_node) {
- if (!($param_node instanceof Node)) {
- // impossible?
- continue;
- }
- self::analyzeFunctionLikeParam($code_base, $method, $param_node);
- }
- }
-
- private static function analyzeFunctionLikeReturn(CodeBase $code_base, FunctionInterface $method, Node $return_type): void
- {
- $is_nullable = false;
- if ($return_type->kind === ast\AST_NULLABLE_TYPE) {
- $return_type = $return_type->children['type'];
- if (!($return_type instanceof Node)) {
- // should not happen
- return;
- }
- $is_nullable = true;
- }
- $shorter_return_type = self::determineShorterType($method->getContext(), $return_type);
- if (is_string($shorter_return_type)) {
- $prefix = $is_nullable ? '?' : '';
- self::emitIssue(
- $code_base,
- $method->getContext(),
- self::PreferNamespaceUseReturnType,
- 'Could write return type of {FUNCTION} as {TYPE} instead of {TYPE}',
- [$method->getName(), $prefix . $shorter_return_type, $prefix . '\\' . $return_type->children['name']]
- );
- }
- }
-
- private static function analyzeFunctionLikeParam(CodeBase $code_base, FunctionInterface $method, Node $param_node): void
- {
- $param_type = $param_node->children['type'];
- if (!$param_type instanceof Node) {
- return;
- }
- $is_nullable = false;
- if ($param_type->kind === ast\AST_NULLABLE_TYPE) {
- $param_type = $param_type->children['type'];
- if (!($param_type instanceof Node)) {
- // should not happen
- return;
- }
- $is_nullable = true;
- }
- $shorter_param_type = self::determineShorterType($method->getContext(), $param_type);
- if (is_string($shorter_param_type)) {
- $param_name = $param_node->children['name'];
- if (!is_string($param_name)) {
- // should be impossible
- return;
- }
-
- $prefix = $is_nullable ? '?' : '';
- self::emitIssue(
- $code_base,
- $method->getContext(),
- self::PreferNamespaceUseParamType,
- 'Could write param type of ${PARAMETER} of {FUNCTION} as {TYPE} instead of {TYPE}',
- [$param_name, $method->getName(), $prefix . $shorter_param_type, $prefix . '\\' . $param_type->children['name']]
- );
- }
- }
-
- /**
- * Given a node with a parameter or return type, return a string with a shorter represented of the type (if possible), or return null if this is not possible.
- *
- * This does not try all possibilities, and only affects fully qualified types.
- */
- private static function determineShorterType(Context $context, Node $type_node): ?string
- {
- if ($type_node->kind !== ast\AST_NAME) {
- return null;
- }
-
- if ($type_node->flags !== ast\flags\NAME_FQ) {
- return null;
- }
- $name = $type_node->children['name'];
- if (!is_string($name)) {
- return null;
- }
- $parts = explode('\\', $name);
- $name_end = (string)array_pop($parts);
- $namespace = implode('\\', $parts);
-
- if ($context->hasNamespaceMapFor(ast\flags\USE_NORMAL, $name_end)) {
- $fqsen = $context->getNamespaceMapFor(ast\flags\USE_NORMAL, $name_end);
- if ($fqsen->getName() === $name_end && strcasecmp(ltrim($fqsen->getNamespace(), '\\'), $namespace) === 0) {
- // found `use Bar\Something` when looking for `\Bar\Something`, so suggest `Something`
- return $name_end;
- }
- // TODO: Could look for `use \Foo\Bar as FB;`
- } elseif (strcasecmp($namespace, ltrim($context->getNamespace(), "\\")) === 0) {
- // Foo\Bar\Baz in Foo\Bar is Baz unless there is another namespace use shadowing it.
- return $name_end;
- }
- return null;
- }
-
- /**
- * @return array
- */
- public function getAutomaticFixers(): array
- {
- require_once __DIR__ . '/PreferNamespaceUsePlugin/Fixers.php';
- return [
- self::PreferNamespaceUseReturnType => Closure::fromCallable([Fixers::class, 'fixReturnType']),
- self::PreferNamespaceUseParamType => Closure::fromCallable([Fixers::class, 'fixParamType']),
- //self::RedundantClosureComment => $function_like_fixer,
- ];
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new PreferNamespaceUsePlugin();
diff --git a/vendor/phan/phan/.phan/plugins/PreferNamespaceUsePlugin/Fixers.php b/vendor/phan/phan/.phan/plugins/PreferNamespaceUsePlugin/Fixers.php
deleted file mode 100644
index d8795a09..00000000
--- a/vendor/phan/phan/.phan/plugins/PreferNamespaceUsePlugin/Fixers.php
+++ /dev/null
@@ -1,149 +0,0 @@
-getTemplateParameters();
- $shorter_return_type = \ltrim((string)$params[1], '?');
- $method_name = $params[0];
- // @phan-suppress-next-line PhanPartialTypeMismatchArgument
- $declaration = self::findFunctionLikeDeclaration($contents, $instance->getLine(), $method_name);
- if (!$declaration) {
- return null;
- }
- return self::computeEditsForReturnTypeDeclaration($declaration, $shorter_return_type);
- }
-
- /**
- * Generate an edit to replace a fully qualified param type with a shorter equivalent representation.
- * @unused-param $code_base
- */
- public static function fixParamType(
- CodeBase $code_base,
- FileCacheEntry $contents,
- IssueInstance $instance
- ): ?FileEditSet {
- $params = $instance->getTemplateParameters();
- $shorter_return_type = \ltrim((string)$params[2], '?');
- $method_name = (string)$params[1];
- $param_name = (string)$params[0];
- $declaration = self::findFunctionLikeDeclaration($contents, $instance->getLine(), $method_name);
- if (!$declaration) {
- return null;
- }
- return self::computeEditsForParamTypeDeclaration($contents, $declaration, $param_name, $shorter_return_type);
- }
-
- /**
- * @suppress PhanThrowTypeAbsentForCall
- */
- private static function computeEditsForReturnTypeDeclaration(
- FunctionLike $declaration,
- string $shorter_return_type
- ): ?FileEditSet {
- // @phan-suppress-next-line PhanUndeclaredProperty
- $return_type_node = $declaration->returnType;
- if (!$return_type_node instanceof PhpParser\Node) {
- return null;
- }
- // Generate an edit to replace the long return type with the shorter return type
- // Long return types are always Nodes instead of Tokens.
- $file_edit = new FileEdit(
- $return_type_node->getStartPosition(),
- $return_type_node->getEndPosition(),
- $shorter_return_type
- );
- return new FileEditSet([$file_edit]);
- }
-
- private static function computeEditsForParamTypeDeclaration(
- FileCacheEntry $contents,
- FunctionLike $declaration,
- string $param_name,
- string $shorter_param_type
- ): ?FileEditSet {
- // @phan-suppress-next-line PhanUndeclaredProperty
- $return_type_node = $declaration->returnType;
- if (!$return_type_node) {
- return null;
- }
- // @phan-suppress-next-line PhanUndeclaredProperty
- $parameter_node_list = $declaration->parameters->children ?? [];
- foreach ($parameter_node_list as $param) {
- if (!$param instanceof PhpParser\Node\Parameter) {
- continue;
- }
- $declaration_name = (new NodeUtils($contents->getContents()))->tokenToString($param->variableName);
- if ($declaration_name !== $param_name) {
- continue;
- }
- $token = $param->typeDeclarationList;
- if (!$token) {
- return null;
- }
- // @phan-suppress-next-line PhanThrowTypeAbsentForCall php-parser is not expected to throw here
- $start = $token->getStartPosition();
- // @phan-suppress-next-line PhanThrowTypeAbsentForCall php-parser is not expected to throw here
- $file_edit = new FileEdit($start, $token->getEndPosition(), $shorter_param_type);
- return new FileEditSet([$file_edit]);
- }
- return null;
- }
-
- // TODO: Move this into a reusable function
- private static function findFunctionLikeDeclaration(
- FileCacheEntry $contents,
- int $line,
- string $name
- ): ?FunctionLike {
- $candidates = [];
- foreach ($contents->getNodesAtLine($line) as $node) {
- if ($node instanceof FunctionDeclaration || $node instanceof MethodDeclaration) {
- $name_node = $node->name;
- if (!$name_node) {
- continue;
- }
- $declaration_name = (new NodeUtils($contents->getContents()))->tokenToString($name_node);
- if ($declaration_name === $name) {
- $candidates[] = $node;
- }
- } elseif ($node instanceof AnonymousFunctionCreationExpression) {
- if ($name === '{closure}') {
- $candidates[] = $node;
- }
- }
- }
- if (\count($candidates) === 1) {
- return $candidates[0];
- }
- return null;
- }
-}
diff --git a/vendor/phan/phan/.phan/plugins/PregRegexCheckerPlugin.php b/vendor/phan/phan/.phan/plugins/PregRegexCheckerPlugin.php
deleted file mode 100644
index e0c25a37..00000000
--- a/vendor/phan/phan/.phan/plugins/PregRegexCheckerPlugin.php
+++ /dev/null
@@ -1,389 +0,0 @@
-
- */
- $err = with_disabled_phan_error_handler(static function () use ($pattern): ?array {
- $old_error_reporting = error_reporting();
- \error_reporting(0);
- \ob_start();
- \error_clear_last();
- try {
- // Annoyingly, preg_match would not warn about the `/e` modifier, removed in php 7.
- // Use `preg_replace` instead (The eval body is empty and phan requires 7.0+ to run)
- $result = @\preg_replace($pattern, '', '');
- if (!\is_string($result)) {
- return \error_get_last() ?? [];
- }
- return null;
- } finally {
- \ob_end_clean();
- \error_reporting($old_error_reporting);
- }
- });
- if ($err !== null) {
- // TODO: scan for 'at offset %d$' and print the corresponding section of the regex. Note: Have to remove delimiters and unescape characters within the delimiters.
- self::emitIssue(
- $code_base,
- $context,
- 'PhanPluginInvalidPregRegex',
- 'Call to {FUNCTION} was passed an invalid regex {STRING_LITERAL}: {DETAILS}',
- [(string)$function->getFQSEN(), StringUtil::encodeValue($pattern), \preg_replace('@^preg_replace\(\): @', '', $err['message'] ?? 'unknown error')]
- );
- return;
- }
- if (strpos($pattern, '$') !== false && (Config::getValue('plugin_config')['regex_warn_if_newline_allowed_at_end'] ?? false)) {
- foreach (self::checkForSuspiciousRegexPatterns($pattern) as [$issue_type, $issue_template]) {
- self::emitIssue(
- $code_base,
- $context,
- $issue_type,
- $issue_template,
- [$function->getFQSEN(), StringUtil::encodeValue($pattern)]
- );
- }
- }
- }
-
- /**
- * @return Generator
- */
- private static function checkForSuspiciousRegexPatterns(string $pattern): Generator
- {
- $pattern = \trim($pattern);
-
- $start_chr = $pattern[0] ?? '/';
- // @phan-suppress-next-line PhanParamSuspiciousOrder this is deliberate
- $i = \strpos('({[', $start_chr);
- if ($i !== false) {
- $end_chr = ')}]'[$i];
- } else {
- $end_chr = $start_chr;
- }
- // TODO: Reject characters that preg_match would reject
- $end_pos = \strrpos($pattern, $end_chr);
- if ($end_pos === false) {
- return;
- }
-
- $inner = (string)\substr($pattern, 1, $end_pos - 1);
- if ($i !== false) {
- // Unescape '/x\/y/' as 'x/y'
- $inner = \str_replace('\\' . $start_chr, $start_chr, $inner);
- }
- foreach (self::tokenizeRegexParts($inner) as $part) {
- // If special handling of newlines is given, don't warn.
- // If PCRE_EXTENDED is given, this was likely a false positive (E.g. # can be a comment)
- if ($part === '$' && !preg_match('/[mDx]/', (string) substr($pattern, $end_pos + 1))) {
- yield ['PhanPluginPregRegexDollarAllowsNewline', 'Call to {FUNCTION} used \'$\' in {STRING_LITERAL}, which allows a newline character \'\n\' before the end of the string. Add D to qualifiers to forbid the newline, m to match any newline, or suppress this issue if this is deliberate'];
- }
- }
- }
-
- /**
- * Tokenize the regex, using imperfect heuristics to split up the parts of a regular expression.
- */
- private static function tokenizeRegexParts(string $inner): Generator
- {
- $inner_len = strlen($inner);
- for ($j = 0; $j < $inner_len;) {
- switch ($c = $inner[$j]) {
- case '\\':
- // TODO: https://www.php.net/manual/en/regexp.reference.escape.php for alphanumeric characters
- yield substr($inner, $j, $j + 2);
- $j += 2;
- break;
- case '[':
- // TODO: Handle escaped ]. This is a heuristic that is usually good enough.
- $end = strpos($inner, ']', $j + 1);
- if ($end === false) {
- yield substr($inner, $j);
- return;
- }
- yield substr($inner, $j, $end);
- $j = $end;
- break;
- case '{':
- $end = strpos($inner, '}', $j + 1);
- if ($end === false) {
- yield substr($inner, $j);
- return;
- }
- yield substr($inner, $j, $end);
- $j = $end;
- break;
- // case '(':
- // case '}':
- // case ')':
- // case ']':
- default:
- yield $c;
- $j++;
- break;
- }
- }
- }
-
- /**
- * @param CodeBase $code_base
- * @param Context $context
- * @param Node|string|int|float $pattern
- * @return array
- */
- private static function extractStringsFromStringOrArray(
- CodeBase $code_base,
- Context $context,
- $pattern
- ): array {
- if (\is_string($pattern)) {
- return [$pattern => $pattern];
- }
- $pattern_union_type = UnionTypeVisitor::unionTypeFromNode($code_base, $context, $pattern);
- $result = [];
- foreach ($pattern_union_type->getTypeSet() as $type) {
- if ($type instanceof LiteralStringType) {
- $value = $type->getValue();
- $result[$value] = $value;
- } elseif ($type instanceof IterableType) {
- $iterable_type = $type->iterableValueUnionType($code_base);
- foreach ($iterable_type ? $iterable_type->getTypeSet() : [] as $element_type) {
- if ($element_type instanceof LiteralStringType) {
- $value = $element_type->getValue();
- $result[$value] = $value;
- }
- }
- }
- }
- return $result;
- }
-
- /**
- * @param non-empty-list $patterns 1 or more regex patterns
- * @return array the set of keys in the pattern
- * @throws InvalidArgumentException if any regex could not be parsed by the heuristics
- */
- private static function computePatternKeys(array $patterns): array
- {
- $result = [];
- foreach ($patterns as $regex) {
- $result += RegexKeyExtractor::getKeys($regex);
- }
- return $result;
- }
-
- /**
- * @return array references to indices in the pattern
- */
- private static function extractTemplateKeys(string $template): array
- {
- $result = [];
- // > replacement may contain references of the form \\n or $n,
- // ...
- // > n can be from 0 to 99, and \\0 or $0 refers to the text matched by the whole pattern.
- preg_match_all('/[$\\\\]([0-9]{1,2}|[^0-9{]|(?<=\$)\{[0-9]{1,2}\})/', $template, $all_matches, PREG_SET_ORDER);
- foreach ($all_matches as $match) {
- $key = $match[1];
- if ($key[0] === '{') {
- $key = (string)\substr($key, 1, -1);
- }
- if ($key[0] >= '0' && $key[0] <= '9') {
- // Edge case: Convert '09' to 9
- $result[(int)$key] = $match[0];
- }
- }
- return $result;
- }
-
- /**
- * @param string[] $patterns 1 or more regex patterns
- * @param Node|string|int|float $replacement_node
- */
- private static function analyzeReplacementTemplate(CodeBase $code_base, Context $context, array $patterns, $replacement_node): void
- {
- $replacement_templates = self::extractStringsFromStringOrArray($code_base, $context, $replacement_node);
- $pattern_keys = null;
-
- // https://secure.php.net/manual/en/function.preg-replace.php#refsect1-function.preg-replace-parameters
- // > $replacement may contain references of the form \\n or $n, with the latter form being the preferred one.
- try {
- foreach ($replacement_templates as $replacement_template) {
- $pattern_keys = $pattern_keys ?? self::computePatternKeys($patterns);
- $regex_group_keys = self::extractTemplateKeys($replacement_template);
- foreach ($regex_group_keys as $key => $reference_string) {
- if (!isset($pattern_keys[$key])) {
- usort($patterns, 'strcmp');
- self::emitIssue(
- $code_base,
- $context,
- 'PhanPluginInvalidPregRegexReplacement',
- 'Call to {FUNCTION} was passed an invalid replacement reference {STRING_LITERAL} to pattern {STRING_LITERAL}',
- ['\preg_replace', StringUtil::encodeValue($reference_string), StringUtil::encodeValueList(' or ', $patterns)]
- );
- }
- }
- }
- } catch (InvalidArgumentException $_) {
- // TODO: Is this warned about elsewhere?
- return;
- }
- }
-
- /**
- * @param CodeBase $code_base @phan-unused-param
- * @return array
- */
- public function getAnalyzeFunctionCallClosures(CodeBase $code_base): array
- {
- /**
- * @param list $args the nodes for the arguments to the invocation
- * @unused-param $node
- */
- $preg_pattern_callback = static function (
- CodeBase $code_base,
- Context $context,
- Func $function,
- array $args,
- ?Node $node = null
- ): void {
- if (count($args) < 1) {
- return;
- }
- $pattern = $args[0];
- if ($pattern instanceof Node) {
- $pattern = (new ContextNode($code_base, $context, $pattern))->getEquivalentPHPScalarValue();
- }
- if (\is_string($pattern)) {
- self::analyzePattern($code_base, $context, $function, $pattern);
- }
- };
-
- /**
- * @param list $args
- * @unused-param $node
- */
- $preg_pattern_or_array_callback = static function (
- CodeBase $code_base,
- Context $context,
- Func $function,
- array $args,
- ?Node $node = null
- ): void {
- if (count($args) < 1) {
- return;
- }
- $pattern_node = $args[0];
- foreach (self::extractStringsFromStringOrArray($code_base, $context, $pattern_node) as $pattern) {
- self::analyzePattern($code_base, $context, $function, $pattern);
- }
- };
-
- /**
- * @param list $args
- * @unused-param $node
- */
- $preg_pattern_and_replacement_callback = static function (
- CodeBase $code_base,
- Context $context,
- Func $function,
- array $args,
- ?Node $node = null
- ): void {
- if (count($args) < 1) {
- return;
- }
- $pattern_node = $args[0];
- $patterns = self::extractStringsFromStringOrArray($code_base, $context, $pattern_node);
- if (count($patterns) === 0) {
- return;
- }
- foreach ($patterns as $pattern) {
- self::analyzePattern($code_base, $context, $function, $pattern);
- }
- if (count($args) < 2) {
- return;
- }
- self::analyzeReplacementTemplate($code_base, $context, $patterns, $args[1]);
- };
-
- /**
- * @param list $args the nodes for the arguments to the invocation
- * @unused-param $node
- */
- $preg_replace_callback_array_callback = static function (
- CodeBase $code_base,
- Context $context,
- Func $function,
- array $args,
- ?Node $node = null
- ): void {
- if (count($args) < 1) {
- return;
- }
- // TODO: Resolve global constants and class constants?
- $pattern = $args[0];
- if ($pattern instanceof Node) {
- $pattern = (new ContextNode($code_base, $context, $pattern))->getEquivalentPHPValue(self::RESOLVE_REGEX_KEY_FLAGS);
- }
- if (\is_array($pattern)) {
- foreach ($pattern as $child_pattern => $_) {
- self::analyzePattern($code_base, $context, $function, (string)$child_pattern);
- }
- return;
- }
- };
-
- // TODO: Check that the callbacks have the right signatures in another PR?
- return [
- // call
- 'preg_filter' => $preg_pattern_or_array_callback,
- 'preg_grep' => $preg_pattern_callback,
- 'preg_match' => $preg_pattern_callback,
- 'preg_match_all' => $preg_pattern_callback,
- 'preg_replace_callback_array' => $preg_replace_callback_array_callback,
- 'preg_replace_callback' => $preg_pattern_or_array_callback,
- 'preg_replace' => $preg_pattern_and_replacement_callback,
- 'preg_split' => $preg_pattern_callback,
- ];
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new PregRegexCheckerPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/PrintfCheckerPlugin.php b/vendor/phan/phan/.phan/plugins/PrintfCheckerPlugin.php
deleted file mode 100644
index 7b9aceec..00000000
--- a/vendor/phan/phan/.phan/plugins/PrintfCheckerPlugin.php
+++ /dev/null
@@ -1,786 +0,0 @@
- 'Bonjour'] for $fmt_str == 'Hello')
- */
- protected static function gettextForAllLocales(string $fmt_str): array
- {
- return [];
- }
-
- /**
- * Convert an expression(a list of tokens) to a primitive.
- * People who have custom such as methods or functions to fetch translations
- * may subclass this plugin and override this method to add checks for AST_CALL (foo()), AST_METHOD_CALL(MyClass::getTranslation($id), etc.)
- *
- * @param CodeBase $code_base
- * @param Context $context
- * @param bool|int|string|float|Node|array|null $ast_node
- */
- protected function astNodeToPrimitive(CodeBase $code_base, Context $context, $ast_node): ?PrimitiveValue
- {
- // Base case: convert primitive tokens such as numbers and strings.
- if (!($ast_node instanceof Node)) {
- return new PrimitiveValue($ast_node);
- }
- switch ($ast_node->kind) {
- // TODO: Resolve class constant access when those are format strings. Same for PregRegexCheckerPlugin.
- case \ast\AST_CALL:
- $name_node = $ast_node->children['expr'];
- if ($name_node instanceof Node && $name_node->kind === \ast\AST_NAME) {
- // TODO: Use Phan's function resolution?
- // TODO: ngettext?
- $name = $name_node->children['name'];
- if (!\is_string($name)) {
- break;
- }
- if ($name === '_' || strcasecmp($name, 'gettext') === 0) {
- $child_arg = $ast_node->children['args']->children[0] ?? null;
- if ($child_arg === null) {
- break;
- }
- $prim = self::astNodeToPrimitive($code_base, $context, $child_arg);
- if ($prim === null) {
- break;
- }
- return new PrimitiveValue($prim->value, true);
- }
- }
- break;
- case \ast\AST_BINARY_OP:
- if ($ast_node->flags !== ast\flags\BINARY_CONCAT) {
- break;
- }
- $left = $this->astNodeToPrimitive($code_base, $context, $ast_node->children['left']);
- if ($left === null) {
- break;
- }
- $right = $this->astNodeToPrimitive($code_base, $context, $ast_node->children['right']);
- if ($right === null) {
- break;
- }
- $result = self::concatenateToPrimitive($left, $right);
- if ($result) {
- return $result;
- }
- break;
- }
- $union_type = UnionTypeVisitor::unionTypeFromNode($code_base, $context, $ast_node);
- $result = $union_type->asSingleScalarValueOrNullOrSelf();
-
- if (!is_object($result)) {
- return new PrimitiveValue($result);
- }
- $scalar_union_types = $union_type->asScalarValues();
- if (!$scalar_union_types) {
- // We don't know how to convert this to a primitive, give up.
- // (Subclasses may add their own logic first, then call self::astNodeToPrimitive)
- return null;
- }
- $known_specs = null;
- $first_str = null;
- foreach ($union_type->getTypeSet() as $type) {
- if (!$type instanceof LiteralStringType || $type->isNullable()) {
- return null;
- }
- $str = $type->getValue();
- $new_specs = ConversionSpec::extractAll($str);
- if (\is_array($known_specs)) {
- if ($known_specs != $new_specs) {
- // We have different specs, e.g. %s and %d, %1$s and %2$s, etc.
- // TODO: Could allow differences in padding or alignment
- return null;
- }
- } else {
- $known_specs = $new_specs;
- $first_str = $str;
- }
- }
- return new PrimitiveValue($first_str);
- }
-
- /**
- * Convert a primitive and a sequence of tokens to a primitive formed by
- * concatenating strings.
- *
- * @param PrimitiveValue $left the value on the left.
- * @param PrimitiveValue $right the value on the right.
- */
- protected static function concatenateToPrimitive(PrimitiveValue $left, PrimitiveValue $right): ?PrimitiveValue
- {
- // Combining untranslated strings with anything will cause problems.
- if ($left->is_translated) {
- return null;
- }
- if ($right->is_translated) {
- return null;
- }
- $str = $left->value . $right->value;
- return new PrimitiveValue($str);
- }
-
- /**
- * @unused-param $code_base
- */
- public function getReturnTypeOverrides(CodeBase $code_base): array
- {
- $string_union_type = StringType::instance(false)->asPHPDocUnionType();
- /**
- * @param list $args the nodes for the arguments to the invocation
- */
- $sprintf_handler = static function (
- CodeBase $code_base,
- Context $context,
- Func $function,
- array $args
- ) use ($string_union_type): UnionType {
- if (count($args) < 1) {
- return FalseType::instance(false)->asRealUnionType();
- }
- $union_type = UnionTypeVisitor::unionTypeFromNode($code_base, $context, $args[0]);
- $format_strings = [];
- foreach ($union_type->getTypeSet() as $type) {
- if (!$type instanceof LiteralStringType) {
- return $string_union_type;
- }
- $format_strings[] = $type->getValue();
- }
- if (count($format_strings) === 0) {
- return $string_union_type;
- }
- $result_union_type = UnionType::empty();
- foreach ($format_strings as $format_string) {
- $min_width = 0;
- foreach (ConversionSpec::extractAll($format_string) as $spec_group) {
- foreach ($spec_group as $spec) {
- $min_width += ($spec->width ?: 0);
- }
- }
- if (!LiteralStringType::canRepresentStringOfLength($min_width)) {
- return $string_union_type;
- }
- $sprintf_args = [];
- for ($i = 1; $i < count($args); $i++) {
- $arg = UnionTypeVisitor::unionTypeFromNode($code_base, $context, $args[$i])->asSingleScalarValueOrNullOrSelf();
- if (is_object($arg)) {
- return $string_union_type;
- }
- $sprintf_args[] = $arg;
- }
- try {
- $result = \with_disabled_phan_error_handler(
- /** @return string|false */
- static function () use ($format_string, $sprintf_args) {
- // @phan-suppress-next-line PhanPluginPrintfVariableFormatString
- return @\vsprintf($format_string, $sprintf_args);
- }
- );
- } catch (Throwable $e) {
- // PHP 8 throws ValueError for too few arguments to vsprintf
- Issue::maybeEmit(
- $code_base,
- $context,
- Issue::TypeErrorInInternalCall,
- $args[0]->lineno ?? $context->getLineNumberStart(),
- $function->getName(),
- $e->getMessage()
- );
- // TODO: When PHP 8.0 stable is out, replace this with string?
- $result = false;
- }
- $result_union_type = $result_union_type->withType(Type::fromObject($result));
- }
- return $result_union_type;
- };
- return [
- 'sprintf' => $sprintf_handler,
- ];
- }
-
- /**
- * @param CodeBase $code_base @phan-unused-param
- * @return \Closure[]
- */
- public function getAnalyzeFunctionCallClosures(CodeBase $code_base): array
- {
- /**
- * Analyzes a printf-like function with a format directive in the first position.
- * @param list $args the nodes for the arguments to the invocation
- */
- $printf_callback = function (
- CodeBase $code_base,
- Context $context,
- Func $function,
- array $args
- ): void {
- // TODO: Resolve global constants and class constants?
- // TODO: Check for AST_UNPACK
- $pattern = $args[0] ?? null;
- if ($pattern === null) {
- return;
- }
- if ($pattern instanceof Node) {
- $pattern = (new ContextNode($code_base, $context, $pattern))->getEquivalentPHPScalarValue();
- }
- $remaining_args = \array_slice($args, 1);
- $this->analyzePrintfPattern($code_base, $context, $function, $pattern, $remaining_args);
- };
- /**
- * Analyzes a printf-like function with a format directive in the first position.
- * @param list $args the nodes for the arguments to the invocation
- */
- $fprintf_callback = function (
- CodeBase $code_base,
- Context $context,
- Func $function,
- array $args
- ): void {
- if (\count($args) < 2) {
- return;
- }
- // TODO: Resolve global constants and class constants?
- // TODO: Check for AST_UNPACK
- $pattern = $args[1];
- if ($pattern instanceof Node) {
- $pattern = (new ContextNode($code_base, $context, $pattern))->getEquivalentPHPScalarValue();
- }
- $remaining_args = \array_slice($args, 2);
- $this->analyzePrintfPattern($code_base, $context, $function, $pattern, $remaining_args);
- };
- /**
- * Analyzes a printf-like function with a format directive in the first position.
- * @param list $args
- */
- $vprintf_callback = function (
- CodeBase $code_base,
- Context $context,
- Func $function,
- array $args
- ): void {
- if (\count($args) < 2) {
- return;
- }
- // TODO: Resolve global constants and class constants?
- // TODO: Check for AST_UNPACK
- $pattern = $args[0];
- if ($pattern instanceof Node) {
- $pattern = (new ContextNode($code_base, $context, $pattern))->getEquivalentPHPScalarValue();
- }
- $format_args_node = $args[1];
- $format_args = (new ContextNode($code_base, $context, $format_args_node))->getEquivalentPHPValue();
- $this->analyzePrintfPattern($code_base, $context, $function, $pattern, \is_array($format_args) ? $format_args : null);
- };
- /**
- * Analyzes a printf-like function with a format directive in the first position.
- * @param list $args the nodes for the arguments to the invocation
- */
- $vfprintf_callback = function (
- CodeBase $code_base,
- Context $context,
- Func $function,
- array $args
- ): void {
- if (\count($args) < 3) {
- return;
- }
- // TODO: Resolve global constants and class constants?
- // TODO: Check for AST_UNPACK
- $pattern = $args[1];
- if ($pattern instanceof Node) {
- $pattern = (new ContextNode($code_base, $context, $pattern))->getEquivalentPHPScalarValue();
- }
- $format_args_node = $args[2];
- $format_args = (new ContextNode($code_base, $context, $format_args_node))->getEquivalentPHPValue();
- $this->analyzePrintfPattern($code_base, $context, $function, $pattern, \is_array($format_args) ? $format_args : null);
- };
- return [
- // call
- 'printf' => $printf_callback,
- 'sprintf' => $printf_callback,
- 'fprintf' => $fprintf_callback,
- 'vprintf' => $vprintf_callback,
- 'vsprintf' => $vprintf_callback,
- 'vfprintf' => $vfprintf_callback,
- ];
- }
-
- protected static function encodeString(string $str): string
- {
- $result = \json_encode($str, \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE);
- if ($result !== false) {
- return $result;
- }
- return var_export($str, true);
- }
-
- /**
- * Analyzes a printf pattern, emitting issues if necessary
- * @param CodeBase $code_base
- * @param Context $context
- * @param FunctionInterface $function
- * @param Node|array|string|float|int|bool|resource|null $pattern_node
- * @param ?(Node|string|int|float)[] $arg_nodes arguments following the format string. Null if the arguments could not be determined.
- * @suppress PhanPartialTypeMismatchArgument TODO: refactor into smaller functions
- */
- protected function analyzePrintfPattern(CodeBase $code_base, Context $context, FunctionInterface $function, $pattern_node, $arg_nodes): void
- {
- // Given a node, extract the printf directive and whether or not it could be translated
- $primitive_for_fmtstr = $this->astNodeToPrimitive($code_base, $context, $pattern_node);
- /**
- * @param string $issue_type
- * A name for the type of issue such as 'PhanPluginMyIssue'
- *
- * @param string $issue_message_format
- * The complete issue message format string to emit such as
- * 'class with fqsen {CLASS} is broken in some fashion' (preferred)
- * or 'class with fqsen %s is broken in some fashion'
- * The list of placeholders for between braces can be found
- * in \Phan\Issue::uncolored_format_string_for_template.
- *
- * @param list $issue_message_args
- * The arguments for this issue format.
- * If this array is empty, $issue_message_args is kept in place
- *
- * @param int $severity
- * A value from the set {Issue::SEVERITY_LOW,
- * Issue::SEVERITY_NORMAL, Issue::SEVERITY_HIGH}.
- *
- * @param int $issue_type_id An issue id for pylint
- */
- $emit_issue = static function (string $issue_type, string $issue_message_format, array $issue_message_args, int $severity, int $issue_type_id) use ($code_base, $context): void {
- self::emitIssue(
- $code_base,
- $context,
- $issue_type,
- $issue_message_format,
- $issue_message_args,
- $severity,
- Issue::REMEDIATION_B,
- $issue_type_id
- );
- };
- if ($primitive_for_fmtstr === null) {
- $emit_issue(
- 'PhanPluginPrintfVariableFormatString',
- 'Code {CODE} has a dynamic format string that could not be inferred by Phan',
- [ASTReverter::toShortString($pattern_node)],
- Issue::SEVERITY_LOW,
- self::ERR_UNTRANSLATED_UNKNOWN_FORMAT_STRING
- );
- if (\is_array($arg_nodes) && count($arg_nodes) === 0) {
- $replacement_function_name = \in_array($function->getName(), ['vprintf', 'fprintf', 'vfprintf'], true) ? 'fwrite' : 'echo';
- $emit_issue(
- "PhanPluginPrintfNoArguments",
- "No format string arguments are given for {STRING_LITERAL}, consider using {FUNCTION} instead",
- ['(unknown)', $replacement_function_name],
- Issue::SEVERITY_LOW,
- self::ERR_UNTRANSLATED_USE_ECHO
- );
- return;
- }
- // TODO: Add a verbose option
- return;
- }
- // Make sure that the untranslated format string is being used correctly.
- // If the format string will be translated, also check the translations.
-
- $fmt_str = $primitive_for_fmtstr->value;
- $is_translated = $primitive_for_fmtstr->is_translated;
- $specs = is_string($fmt_str) ? ConversionSpec::extractAll($fmt_str) : [];
- $fmt_str = (string)$fmt_str;
-
- // Check for extra or missing arguments
- if (\is_array($arg_nodes) && \count($arg_nodes) === 0) {
- if (count($specs) > 0) {
- $largest_positional = \max(\array_keys($specs));
- $examples = [];
- foreach ($specs[$largest_positional] as $example_spec) {
- $examples[] = self::encodeString($example_spec->directive);
- }
- // emit issues with 1-based offsets
- $emit_issue(
- 'PhanPluginPrintfNonexistentArgument',
- 'Format string {STRING_LITERAL} refers to nonexistent argument #{INDEX} in {STRING_LITERAL}. This will be an ArgumentCountError in PHP 8.',
- [self::encodeString($fmt_str), $largest_positional, \implode(',', $examples)],
- Issue::SEVERITY_CRITICAL,
- self::ERR_UNTRANSLATED_NONEXISTENT
- );
- }
- $replacement_function_name = \in_array($function->getName(), ['vprintf', 'fprintf', 'vfprintf'], true) ? 'fwrite' : 'echo';
- $emit_issue(
- "PhanPluginPrintfNoArguments",
- "No format string arguments are given for {STRING_LITERAL}, consider using {FUNCTION} instead",
- [self::encodeString($fmt_str), $replacement_function_name],
- Issue::SEVERITY_LOW,
- self::ERR_UNTRANSLATED_USE_ECHO
- );
- return;
- }
- if (count($specs) === 0) {
- $emit_issue(
- 'PhanPluginPrintfNoSpecifiers',
- 'None of the formatting arguments passed alongside format string {STRING_LITERAL} are used',
- [self::encodeString($fmt_str)],
- Issue::SEVERITY_LOW,
- self::ERR_UNTRANSLATED_NONE_USED
- );
- return;
- }
-
- if (\is_array($arg_nodes)) {
- $largest_positional = \max(\array_keys($specs));
- if ($largest_positional > \count($arg_nodes)) {
- $examples = [];
- foreach ($specs[$largest_positional] as $example_spec) {
- $examples[] = self::encodeString($example_spec->directive);
- }
- // emit issues with 1-based offsets
- $emit_issue(
- 'PhanPluginPrintfNonexistentArgument',
- 'Format string {STRING_LITERAL} refers to nonexistent argument #{INDEX} in {STRING_LITERAL}. This will be an ArgumentCountError in PHP 8.',
- [self::encodeString($fmt_str), $largest_positional, \implode(',', $examples)],
- Issue::SEVERITY_CRITICAL,
- self::ERR_UNTRANSLATED_NONEXISTENT
- );
- } elseif ($largest_positional < count($arg_nodes)) {
- $emit_issue(
- 'PhanPluginPrintfUnusedArgument',
- 'Format string {STRING_LITERAL} does not use provided argument #{INDEX}',
- [self::encodeString($fmt_str), $largest_positional + 1],
- Issue::SEVERITY_NORMAL,
- self::ERR_UNTRANSLATED_UNUSED
- );
- }
- }
-
- /** @var string[][] maps argument position to a list of possible canonical strings (e.g. '%1$d') for that argument */
- $types_of_arg = [];
-
- // Check format string alone for common signs of problems.
- // E.g. "% s", "%1$d %1$s"
- foreach ($specs as $i => $spec_group) {
- $types = [];
- foreach ($spec_group as $spec) {
- $canonical = $spec->toCanonicalString();
- $types[$canonical] = true;
- if ((\strlen($spec->padding_char) > 0 || \strlen($spec->alignment)) && ($spec->width === '' || !$spec->position)) {
- // Warn about "100% dollars" but not about "100%1$ 2dollars" (If both position and width were parsed, assume the padding was intentional)
- $emit_issue(
- 'PhanPluginPrintfNotPercent',
- // phpcs:ignore Generic.Files.LineLength.MaxExceeded
- "Format string {STRING_LITERAL} contains something that is not a percent sign, it will be treated as a format string '{STRING_LITERAL}' with padding of \"{STRING_LITERAL}\" and alignment of '{STRING_LITERAL}' but no width. Use {DETAILS} for a literal percent sign, or '{STRING_LITERAL}' to be less ambiguous",
- [self::encodeString($fmt_str), $spec->directive, $spec->padding_char, $spec->alignment, '%%', $canonical],
- Issue::SEVERITY_NORMAL,
- self::ERR_UNTRANSLATED_NOT_PERCENT
- );
- }
- if ($is_translated && $spec->width &&
- ($spec->padding_char === '' || $spec->padding_char === ' ')
- ) {
- $intended_string = $spec->toCanonicalStringWithWidthAsPosition();
- $emit_issue(
- 'PhanPluginPrintfWidthNotPosition',
- "Format string {STRING_LITERAL} is specifying a width({STRING_LITERAL}) instead of a position({STRING_LITERAL})",
- [self::encodeString($fmt_str), self::encodeString($canonical), self::encodeString($intended_string)],
- Issue::SEVERITY_NORMAL,
- self::ERR_UNTRANSLATED_WIDTH_INSTEAD_OF_POSITION
- );
- }
- }
-
- $types_of_arg[$i] = $types;
- if (count($types) > 1) {
- // May be an off by one error in the format string.
- $emit_issue(
- 'PhanPluginPrintfIncompatibleSpecifier',
- 'Format string {STRING_LITERAL} refers to argument #{INDEX} in different ways: {DETAILS}',
- [self::encodeString($fmt_str), $i, implode(',', \array_keys($types))],
- Issue::SEVERITY_LOW,
- self::ERR_UNTRANSLATED_INCOMPATIBLE_SPECIFIER
- );
- }
- }
-
- if (\is_array($arg_nodes)) {
- foreach ($specs as $i => $spec_group) {
- // $arg_nodes is a 0-based array, $spec_group is 1-based.
- $arg_node = $arg_nodes[$i - 1] ?? null;
- if (!isset($arg_node)) {
- continue;
- }
- $actual_union_type = UnionTypeVisitor::unionTypeFromNode($code_base, $context, $arg_node);
- if ($actual_union_type->isEmpty()) {
- // Nothing to check.
- continue;
- }
-
- $expected_set = [];
- foreach ($spec_group as $spec) {
- $type_name = $spec->getExpectedUnionTypeName();
- $expected_set[$type_name] = true;
- }
- $expected_union_type = UnionType::empty();
- foreach ($expected_set as $type_name => $_) {
- // @phan-suppress-next-line PhanThrowTypeAbsentForCall getExpectedUnionTypeName should only return valid union types
- $expected_union_type = $expected_union_type->withType(Type::fromFullyQualifiedString($type_name));
- }
- if ($actual_union_type->canCastToUnionType($expected_union_type, $code_base)) {
- continue;
- }
- if (isset($expected_set['string'])) {
- $can_cast_to_string = false;
- // Allow passing objects with __toString() to printf whether or not strict types are used in the caller.
- // TODO: Move into a common helper method?
- try {
- foreach ($actual_union_type->asClassList($code_base, $context) as $clazz) {
- if ($clazz->hasMethodWithName($code_base, '__toString', true)) {
- $can_cast_to_string = true;
- break;
- }
- }
- } catch (CodeBaseException $_) {
- // Swallow "Cannot find class", go on to emit issue.
- }
- if ($can_cast_to_string) {
- continue;
- }
- }
-
- $expected_union_type_string = (string)$expected_union_type;
- if (self::canWeakCast($actual_union_type, $expected_set, $code_base)) {
- // This can be resolved by casting the arg to (string) manually in printf.
- $emit_issue(
- 'PhanPluginPrintfIncompatibleArgumentTypeWeak',
- // phpcs:ignore Generic.Files.LineLength.MaxExceeded
- 'Format string {STRING_LITERAL} refers to argument #{INDEX} as {DETAILS}, so type {TYPE} is expected. However, {FUNCTION} was passed the type {TYPE} (which is weaker than {TYPE})',
- [
- self::encodeString($fmt_str),
- $i,
- self::getSpecStringsRepresentation($spec_group),
- $expected_union_type_string,
- $function->getName(),
- (string)$actual_union_type,
- $expected_union_type_string,
- ],
- Issue::SEVERITY_LOW,
- self::ERR_UNTRANSLATED_INCOMPATIBLE_ARGUMENT_WEAK
- );
- } else {
- // This can be resolved by casting the arg to (int) manually in printf.
- $emit_issue(
- 'PhanPluginPrintfIncompatibleArgumentType',
- 'Format string {STRING_LITERAL} refers to argument #{INDEX} as {DETAILS}, so type {TYPE} is expected, but {FUNCTION} was passed incompatible type {TYPE}',
- [
- self::encodeString($fmt_str),
- $i,
- self::getSpecStringsRepresentation($spec_group),
- $expected_union_type_string,
- $function->getName(),
- (string)$actual_union_type,
- ],
- Issue::SEVERITY_LOW,
- self::ERR_UNTRANSLATED_INCOMPATIBLE_ARGUMENT
- );
- }
- }
- }
-
- // Make sure the translations are compatible with this format string.
- // In order to take advantage of the ability to analyze translations, override gettextForAllLocales
- if ($is_translated) {
- $this->validateTranslations($code_base, $context, $fmt_str, $types_of_arg);
- }
- }
-
- /**
- * @param ConversionSpec[] $specs
- */
- private static function getSpecStringsRepresentation(array $specs): string
- {
- return \implode(',', \array_unique(\array_map(static function (ConversionSpec $spec): string {
- return $spec->directive;
- }, $specs)));
- }
-
- /**
- * @param array $expected_set the types being checked for the ability to weakly cast to
- */
- private static function canWeakCast(UnionType $actual_union_type, array $expected_set, CodeBase $code_base): bool
- {
- if (isset($expected_set['string'])) {
- static $string_weak_types;
- if ($string_weak_types === null) {
- $string_weak_types = UnionType::fromFullyQualifiedPHPDocString('int|string|float');
- }
- return $actual_union_type->canCastToUnionType($string_weak_types, $code_base);
- }
- // We already allow int->float conversion
- return false;
- }
-
- /**
- * TODO: Finish testing this.
- *
- * By default, this is a no-op, unless gettextForAllLocales is overridden in a subclass
- *
- * Check that the translations of the format string $fmt_str
- * are compatible with the untranslated format string.
- *
- * In virtually all cases, the conversions specifiers should be
- * identical to the conversion specifier (apart from whether or not
- * position is explicitly stated)
- *
- * Emits issues.
- *
- * @param CodeBase $code_base
- * @param Context $context
- * @param string $fmt_str
- * @param associative-array> $types_of_arg contains array of ConversionSpec for
- * each position in the untranslated format string.
- */
- protected static function validateTranslations(CodeBase $code_base, Context $context, string $fmt_str, array $types_of_arg): void
- {
- $translations = static::gettextForAllLocales($fmt_str);
- foreach ($translations as $locale => $translated_fmt_str) {
- // Skip untranslated or equal strings.
- if ($translated_fmt_str === $fmt_str) {
- continue;
- }
- // Compare the translated specs for a given position to the existing spec.
- $translated_specs = ConversionSpec::extractAll($translated_fmt_str);
- foreach ($translated_specs as $i => $spec_group) {
- $expected = $types_of_arg[$i] ?? [];
- foreach ($spec_group as $spec) {
- $canonical = $spec->toCanonicalString();
- if (!isset($expected[$canonical])) {
- $expected_types = $expected ? implode(',', \array_keys($expected))
- : 'unused';
-
- if ($expected_types !== 'unused') {
- $severity = Issue::SEVERITY_NORMAL;
- $issue_type_id = self::ERR_TRANSLATED_INCOMPATIBLE;
- $issue_type = 'PhanPluginPrintfTranslatedIncompatible';
- } else {
- $severity = Issue::SEVERITY_NORMAL;
- $issue_type_id = self::ERR_TRANSLATED_HAS_MORE_ARGS;
- $issue_type = 'PhanPluginPrintfTranslatedHasMoreArgs';
- }
- self::emitIssue(
- $code_base,
- $context,
- $issue_type,
- // phpcs:ignore Generic.Files.LineLength.MaxExceeded
- 'Translated string {STRING_LITERAL} has local {DETAILS} which refers to argument #{INDEX} as {STRING_LITERAL}, but the original format string treats it as {DETAILS} (ORIGINAL: {STRING_LITERAL}, TRANSLATION: {STRING_LITERAL})',
- [
- self::encodeString($fmt_str),
- $locale,
- $i,
- $canonical,
- $expected_types,
- self::encodeString($fmt_str),
- self::encodeString($translated_fmt_str),
- ],
- $severity,
- Issue::REMEDIATION_B,
- $issue_type_id
- );
- }
- }
- }
- }
- }
-}
-
-/**
- * Represents the information we have about the result of evaluating an expression.
- * Currently, used only for printf arguments.
- */
-class PrimitiveValue
-{
- /** @var array|int|string|float|bool|null The primitive value of the expression if it could be determined. */
- public $value;
- /** @var bool Whether or not the expression value was translated. */
- public $is_translated;
-
- /**
- * @param array|int|string|float|bool|null $value
- */
- public function __construct($value, bool $is_translated = false)
- {
- $this->value = $value;
- $this->is_translated = $is_translated;
- }
-}
-
-return new PrintfCheckerPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/README.md b/vendor/phan/phan/.phan/plugins/README.md
deleted file mode 100644
index b591ac57..00000000
--- a/vendor/phan/phan/.phan/plugins/README.md
+++ /dev/null
@@ -1,643 +0,0 @@
-Plugins
-=======
-
-The plugins in this folder can be used to add additional capabilities to phan.
-Add their relative path (.phan/plugins/...) to the `plugins` entry of .phan/config.php.
-
-Plugin Documentation
---------------------
-
-[Wiki Article: Writing Plugins For Phan](https://github.com/phan/phan/wiki/Writing-Plugins-for-Phan)
-
-Plugin List
------------
-
-This section contains short descriptions of plugin files, and lists the issue types which they emit.
-
-They are grouped into the following sections:
-
-1. Plugins Affecting Phan Analysis
-2. General-Use Plugins
-3. Plugins Specific to Code Styles
-4. Demo Plugins (Plugin authors should base new plugins off of these, if they don't see a similar plugin)
-
-### 1. Plugins Affecting Phan Analysis
-
-(More plugins will be added later, e.g. if they add new methods, add types to Phan's analysis of a return type, etc)
-
-#### UnusedSuppressionPlugin.php
-
-Warns if an `@suppress` annotation is no longer needed to suppress issue types on a function, method, closure, or class.
-(Suppressions may stop being needed if Phan's analysis improves/changes in a release,
-or if the relevant parts of the codebase fixed the bug/added annotations)
-**This must be run with exactly one worker process**
-
-- **UnusedSuppression**: `Element {FUNCTIONLIKE} suppresses issue {ISSUETYPE} but does not use it`
-- **UnusedPluginSuppression**: `Plugin {STRING_LITERAL} suppresses issue {ISSUETYPE} on this line but this suppression is unused or suppressed elsewhere`
-- **UnusedPluginFileSuppression**: `Plugin {STRING_LITERAL} suppresses issue {ISSUETYPE} in this file but this suppression is unused or suppressed elsewhere`
-
-The following settings can be used in `.phan/config.php`:
- - `'plugin_config' => ['unused_suppression_ignore_list' => ['FlakyPluginIssueName']]` will make this plugin avoid emitting `Unused*Suppression` for a list of issue names.
- - `'plugin_config' => ['unused_suppression_whitelisted_only' => true]` will make this plugin report unused suppressions only for issues in `whitelist_issue_types`.
-
-#### FFIAnalysisPlugin.php
-
-This is only necessary if you are using [PHP 7.4's FFI (Foreign Function Interface) support](https://wiki.php.net/rfc/ffi)
-
-This makes Phan infer that assignments to variables that originally contained CData will continue to be CData.
-
-### 2. General-Use Plugins
-
-These plugins are useful across a wide variety of code styles, and should give low false positives.
-Also see [DollarDollarPlugin.php](#dollardollarpluginphp) for a meaningful real-world example.
-
-#### AlwaysReturnPlugin.php
-
-Checks if a function or method with a non-void return type will **unconditionally** return or throw.
-This is stricter than Phan's default checks (Phan accepts a function or method that **may** return something, or functions that unconditionally throw).
-
-#### DuplicateArrayKeyPlugin.php
-
-Warns about common errors in php array keys and switch statements. Has the following checks (This is able to resolve global and class constants to their scalar values).
-
-- **PhanPluginDuplicateArrayKey**: a duplicate or equivalent array key literal.
-
- (E.g `[2 => "value", "other" => "s", "2" => "value2"]` duplicates the key `2`)
-- **PhanPluginDuplicateArrayKeyExpression**: `Duplicate/Equivalent dynamic array key expression ({CODE}) detected in array - the earlier entry will be ignored if the expression had the same value.`
- (E.g. `[$x => 'value', $y => "s", $y => "value2"]`)
-- **PhanPluginDuplicateSwitchCase**: a duplicate or equivalent case statement.
-
- (E.g `switch ($x) { case 2: echo "A\n"; break; case 2: echo "B\n"; break;}` duplicates the key `2`. The later case statements are ignored.)
-- **PhanPluginDuplicateSwitchCaseLooseEquality**: a case statement that is loosely equivalent to an earlier case statement.
-
- (E.g `switch ('foo') { case 0: echo "0\n"; break; case 'foo': echo "foo\n"; break;}` has `0 == 'foo'`, and echoes `0` because of that)
-- **PhanPluginMixedKeyNoKey**: mixing array entries of the form [key => value,] with entries of the form [value,].
-
- (E.g. `['key' => 'value', 'othervalue']` is often found in code because the key for `'othervalue'` was forgotten)
-
-#### PregRegexCheckerPlugin
-
-This plugin checks for invalid regexes.
-This plugin is able to resolve literals, global constants, and class constants as regexes.
-
-- **PhanPluginInvalidPregRegex**: The provided regex is invalid, according to PHP.
-- **PhanPluginInvalidPregRegexReplacement**: The replacement string template of `preg_replace` refers to a match group that doesn't exist. (e.g. `preg_replace('/x(a)/', 'y$2', $strVal)`)
-- **PhanPluginRegexDollarAllowsNewline**: `Call to {FUNCTION} used \'$\' in {STRING_LITERAL}, which allows a newline character \'\n\' before the end of the string. Add D to qualifiers to forbid the newline, m to match any newline, or suppress this issue if this is deliberate`
- (This issue type is specific to coding style, and only checked for when configuration includes `['plugin_config' => ['regex_warn_if_newline_allowed_at_end' => true]]`)
-
-#### PrintfCheckerPlugin
-
-Checks for invalid format strings, incorrect argument counts, and unused arguments in printf calls.
-Additionally, warns about incompatible union types (E.g. passing `string` for the argument corresponding to `%d`)
-This plugin is able to resolve literals, global constants, and class constants as format strings.
-
-
-- **PhanPluginPrintfNonexistentArgument**: `Format string {STRING_LITERAL} refers to nonexistent argument #{INDEX} in {STRING_LITERAL}`
-- **PhanPluginPrintfNoArguments**: `No format string arguments are given for {STRING_LITERAL}, consider using {FUNCTION} instead`
-- **PhanPluginPrintfNoSpecifiers**: `None of the formatting arguments passed alongside format string {STRING_LITERAL} are used`
-- **PhanPluginPrintfUnusedArgument**: `Format string {STRING_LITERAL} does not use provided argument #{INDEX}`
-- **PhanPluginPrintfNotPercent**: `Format string {STRING_LITERAL} contains something that is not a percent sign, it will be treated as a format string '{STRING_LITERAL}' with padding. Use %% for a literal percent sign, or '{STRING_LITERAL}' to be less ambiguous`
- (Usually a typo, e.g. `printf("%s is 20% done", $taskName)` treats `% d` as a second argument)
-- **PhanPluginPrintfWidthNotPosition**: `Format string {STRING_LITERAL} is specifying a width({STRING_LITERAL}) instead of a position({STRING_LITERAL})`
-- **PhanPluginPrintfIncompatibleSpecifier**: `Format string {STRING_LITERAL} refers to argument #{INDEX} in different ways: {DETAILS}` (e.g. `"%1$s of #%1$d"`. May be an off by one error.)
-- **PhanPluginPrintfIncompatibleArgumentTypeWeak**: `Format string {STRING_LITERAL} refers to argument #{INDEX} as {DETAILS}, so type {TYPE} is expected. However, {FUNCTION} was passed the type {TYPE} (which is weaker than {TYPE})`
-- **PhanPluginPrintfIncompatibleArgumentType**: `Format string {STRING_LITERAL} refers to argument #{INDEX} as {DETAILS}, so type {TYPE} is expected, but {FUNCTION} was passed incompatible type {TYPE}`
-- **PhanPluginPrintfVariableFormatString**: `Code {CODE} has a dynamic format string that could not be inferred by Phan`
-
-Note (for projects using `gettext`):
-Subclassing this plugin (and overriding `gettextForAllLocales`) will allow you to analyze translations of a project for compatibility.
-This will require extra work to set up.
-See [PrintfCheckerPlugin's source](./PrintfCheckerPlugin.php) for details.
-
-#### UnreachableCodePlugin.php
-
-Checks for syntactically unreachable statements in the global scope or function bodies.
-(E.g. function calls after unconditional `continue`/`break`/`throw`/`return`/`exit()` statements)
-
-- **PhanPluginUnreachableCode**: `Unreachable statement detected`
-
-#### Unused variable detection
-
-This is now built into Phan itself, and can be enabled via `--unused-variable-detection`.
-
-#### InvokePHPNativeSyntaxCheckPlugin.php
-
-This invokes `php --no-php-ini --syntax-check $analyzed_file_path` for you. (See
-This is useful for cases Phan doesn't cover (e.g. [Issue #449](https://github.com/phan/phan/issues/449) or [Issue #277](https://github.com/phan/phan/issues/277)).
-
-Note: This may double the time Phan takes to analyze a project. This plugin can be safely used along with `--processes N`.
-
-This does not run on files that are parsed but not analyzed.
-
-Configuration settings can be added to `.phan/config.php`:
-
-```php
- 'plugin_config' => [
- // A list of 1 or more PHP binaries (Absolute path or program name found in $PATH)
- // to use to analyze your files with PHP's native `--syntax-check`.
- //
- // This can be used to simultaneously run PHP's syntax checks with multiple PHP versions.
- // e.g. `'plugin_config' => ['php_native_syntax_check_binaries' => ['php72', 'php70', 'php56']]`
- // if all of those programs can be found in $PATH
-
- // 'php_native_syntax_check_binaries' => [PHP_BINARY],
-
- // The maximum number of `php --syntax-check` processes to run at any point in time
- // (Minimum: 1. Default: 1).
- // This may be temporarily higher if php_native_syntax_check_binaries
- // has more elements than this process count.
- 'php_native_syntax_check_max_processes' => 4,
- ],
-```
-
-If you wish to make sure that analyzed files would be accepted by those PHP versions
-(Requires that php72, php70, and php56 be locatable with the `$PATH` environment variable)
-
-As of Phan 2.7.2, it is also possible to locally configure the PHP binary (or binaries) to run syntax checks with.
-e.g. `phan --native-syntax-check php --native-syntax-check /usr/bin/php7.4` would run checks both with `php` (resolved with `$PATH`)
-and the absolute path `/usr/bin/php7.4`. (see `phan --extended-help`)
-
-#### UseReturnValuePlugin.php
-
-This plugin warns when code fails to use the return value of internal functions/methods such as `sprintf` or `array_merge` or `Exception->getCode()`.
-(functions/methods where the return value should almost always be used)
-
-This also warns when using a return value of a function that returns the type `never`.
-
-- **PhanPluginUseReturnValueInternalKnown**: `Expected to use the return value of the internal function/method {FUNCTION}` (and similar issues),
-- **PhanPluginUseReturnValueGenerator**: `Expected to use the return value of the function/method {FUNCTION} returning a generator of type {TYPE}`,
-- **PhanUseReturnValueOfNever**: `Saw use of value of expression {CODE} which likely uses the function {FUNCTIONLIKE} with a return type of '{TYPE}' - this will not return normally`,
-
-`'plugin_config' => ['infer_pure_method' => true]` will make this plugin automatically infer which methods are pure, recursively.
-This is a best-effort heuristic.
-This is done only for the functions and methods that are not excluded from analysis,
-and it isn't done for methods that override or are overridden by other methods.
-
-Note that functions such as `fopen()` are not pure due to side effects.
-UseReturnValuePlugin also warns about those because their results should be used.
-
-* This setting is ignored in the language server or daemon mode,
- due to being extremely slow and memory intensive.
-
-Automatic inference of function purity is done recursively.
-
-This plugin also has a dynamic mode(disabled by default and slow) where it will warn if a function or method's return value is unused.
-This checks if the function/method's return value is used 98% or more of the time, then warns about the remaining places where the return value was unused.
-Note that this prevents the hardcoded checks from working.
-
-- **PhanPluginUseReturnValue**: `Expected to use the return value of the user-defined function/method {FUNCTION} - {SCALAR}%% of calls use it in the rest of the codebase`,
-- **PhanPluginUseReturnValueInternal**: `Expected to use the return value of the internal function/method {FUNCTION} - {SCALAR}%% of calls use it in the rest of the codebase`,
-- **PhanPluginUseReturnValueGenerator**: `Expected to use the return value of the function/method {FUNCTION} returning a generator of type {TYPE}`,
-
-See [UseReturnValuePlugin.php](./UseReturnValuePlugin.php) for configuration options.
-
-#### PHPUnitAssertionPlugin.php
-
-This plugin will make Phan infer side effects from calls to some of the helper methods that PHPUnit provides in test cases.
-
-- Infer that a condition is truthy from `assertTrue()` and `assertNotFalse()` (e.g. `assertTrue($x instanceof MyClass)`)
-- Infer that a condition is null/not null from `assertNull()` and `assertNotNull()`
-- Infer class types from `assertInstanceOf(MyClass::class, $actual)`
-- Infer types from `assertInternalType($expected, $actual)`
-- Infer that $actual has the exact type of $expected after calling `assertSame($expected, $actual)`
-- Other methods aren't supported yet.
-
-#### EmptyStatementListPlugin.php
-
-This file checks for empty statement lists in loops/branches.
-Due to Phan's AST rewriting for easier analysis, this may miss some edge cases for if/elseif.
-
-By default, this plugin won't warn if it can find a TODO/FIXME/"Deliberately empty" comment around the empty statement list (case insensitive).
-(This may miss some TODOs due to `php-ast` not providing the end line numbers)
-The setting `'plugin_config' => ['empty_statement_list_ignore_todos' => true]` can be used to make it unconditionally warn about empty statement lists.
-
-- **PhanPluginEmptyStatementDoWhileLoop** `Empty statement list statement detected for the do-while loop`
-- **PhanPluginEmptyStatementForLoop** `Empty statement list statement detected for the for loop`
-- **PhanPluginEmptyStatementForeachLoop** `Empty statement list statement detected for the foreach loop`
-- **PhanPluginEmptyStatementIf**: `Empty statement list statement detected for the last if/elseif statement`
-- **PhanPluginEmptyStatementSwitch** `No side effects seen for any cases of this switch statement`
-- **PhanPluginEmptyStatementTryBody** `Empty statement list statement detected for the try statement's body`
-- **PhanPluginEmptyStatementTryFinally** `Empty statement list statement detected for the try's finally body`
-- **PhanPluginEmptyStatementWhileLoop** `Empty statement list statement detected for the while loop`
-
-### LoopVariableReusePlugin.php
-
-This plugin detects reuse of loop variables.
-
-- **PhanPluginLoopVariableReuse** `Variable ${VARIABLE} used in loop was also used in an outer loop on line {LINE}`
-
-### RedundantAssignmentPlugin.php
-
-This plugin checks for assignments where the variable already
-has the given value.
-(E.g. `$result = false; if (cond()) { $result = false; }`)
-
-- **PhanPluginRedundantAssignment** `Assigning {TYPE} to variable ${VARIABLE} which already has that value`
-- **PhanPluginRedundantAssignmentInLoop** `Assigning {TYPE} to variable ${VARIABLE} which already has that value`
-- **PhanPluginRedundantAssignmentInGlobalScope** `Assigning {TYPE} to variable ${VARIABLE} which already has that value`
-
-### UnknownClassElementAccessPlugin.php
-
-This plugin checks for accesses to unknown class elements that can't be type checked (which may hide potential runtime errors such as having too few parameters).
-To reduce false positives, this will suppress warnings if at least one recursive analysis could infer class/interface types for the object.
-
-- **PhanPluginUnknownObjectMethodCall**: `Phan could not infer any class/interface types for the object of the method call {CODE} - inferred a type of {TYPE}`
-
-This works best when there is only one analysis process (the default, i.e. `--processes 1`).
-`--analyze-twice` will reduce the number of issues this emits.
-
-### MoreSpecificElementTypePlugin.php
-
-This plugin checks for return types that can be made more specific.
-**This has a large number of false positives - it can be used manually to point out comments that should be made more specific, but is not recommended as part of a build.**
-
-- **PhanPluginMoreSpecificActualReturnType**: `Phan inferred that {FUNCTION} documented to have return type {TYPE} returns the more specific type {TYPE}`
-- **PhanPluginMoreSpecificActualReturnTypeContainsFQSEN**: `Phan inferred that {FUNCTION} documented to have return type {TYPE} (without an FQSEN) returns the more specific type {TYPE} (with an FQSEN)`
-
-It's strongly recommended to use this with a single analysis process (the default, i.e. `--processes 1`).
-
-This uses the following heuristics to reduce the number of false positives.
-
-- Avoids warning about methods that are overrides or are overridden.
-- Avoids checking generators.
-- Flattens array shapes and literals before comparing types
-- Avoids warning when the actual return type contains multiple types and the declared return type is a single FQSEN
- (e.g. don't warn about `Subclass1|Subclass2` being more specific than `BaseClass`)
-
-#### UnsafeCodePlugin.php
-
-This warns about code constructs that may be unsafe and prone to being used incorrectly in general.
-
-- **PhanPluginUnsafeEval**: `eval() is often unsafe and may have better alternatives such as closures and is unanalyzable. Suppress this issue if you are confident that input is properly escaped for this use case and there is no better way to do this.`
-- **PhanPluginUnsafeShellExec**: `This syntax for shell_exec() ({CODE}) is easily confused for a string and does not allow proper exit code/stderr handling. Consider proc_open() instead.`
-- **PhanPluginUnsafeShellExecDynamic**: `This syntax for shell_exec() ({CODE}) is easily confused for a string and does not allow proper exit code/stderr handling, and is used with a non-constant. Consider proc_open() instead.`
-
-### 3. Plugins Specific to Code Styles
-
-These plugins may be useful to enforce certain code styles,
-but may cause false positives in large projects with different code styles.
-
-#### NonBool
-
-##### NonBoolBranchPlugin.php
-
-- **PhanPluginNonBoolBranch** Warns if an expression which has types other than `bool` is used in an if/else if.
-
- (E.g. warns about `if ($x)`, where $x is an integer. Fix by checking `if ($x != 0)`, etc.)
-
-##### NonBoolInLogicalArithPlugin.php
-
-- **PhanPluginNonBoolInLogicalArith** Warns if an expression where the left/right-hand side has types other than `bool` is used in a binary operation.
-
- (E.g. warns about `if ($x && $x->fn())`, where $x is an object. Fix by checking `if (($x instanceof MyClass) && $x->fn())`)
-
-#### HasPHPDocPlugin.php
-
-Checks if an element (class or property) has a PHPDoc comment,
-and that Phan can extract a plaintext summary/description from that comment.
-
-- **PhanPluginNoCommentOnClass**: `Class {CLASS} has no doc comment`
-- **PhanPluginDescriptionlessCommentOnClass**: `Class {CLASS} has no readable description: {STRING_LITERAL}`
-- **PhanPluginNoCommentOnFunction**: `Function {FUNCTION} has no doc comment`
-- **PhanPluginDescriptionlessCommentOnFunction**: `Function {FUNCTION} has no readable description: {STRING_LITERAL}`
-- **PhanPluginNoCommentOnPublicProperty**: `Public property {PROPERTY} has no doc comment` (Also exists for Private and Protected)
-- **PhanPluginDescriptionlessCommentOnPublicProperty**: `Public property {PROPERTY} has no readable description: {STRING_LITERAL}` (Also exists for Private and Protected)
-
-Warnings about method verbosity also exist, many categories may need to be completely disabled due to the large number of method declarations in a typical codebase:
-
-- Warnings are not emitted for `@internal` methods.
-- Warnings are not emitted for methods that override methods in the parent class.
-- Warnings can be suppressed based on the method FQSEN with `plugin_config => [..., 'has_phpdoc_method_ignore_regex' => (a PCRE regex)]`
-
- (e.g. to suppress issues about tests, or about missing documentation about getters and setters, etc.)
-- This can be used to warn about duplicate method/property descriptions with `plugin_config => [..., 'has_phpdoc_check_duplicates' => true]`
- (this skips checking method overrides, magic methods, and deprecated methods/properties)
-
-The warning types for methods are below:
-
-- **PhanPluginNoCommentOnPublicMethod**: `Public method {METHOD} has no doc comment` (Also exists for Private and Protected)
-- **PhanPluginDescriptionlessCommentOnPublicMethod**: `Public method {METHOD} has no readable description: {STRING_LITERAL}` (Also exists for Private and Protected)
-- **PhanPluginDuplicatePropertyDescription**: `Property {PROPERTY} has the same description as the property {PROPERTY} on line {LINE}: {COMMENT}`
-- **PhanPluginDuplicateMethodDescription**: `Method {METHOD} has the same description as the method {METHOD} on line {LINE}: {COMMENT}`
-
-#### PHPDocInWrongCommentPlugin
-
-This plugin warns about using phpdoc annotations such as `@param` in block comments(`/*`) instead of phpdoc comments(`/**`).
-This also warns about using `#` instead of `//` for line comments, because `#[` is used for php 8.0 attributes and will cause confusion.
-
-- **PhanPluginPHPDocInWrongComment**: `Saw possible phpdoc annotation in ordinary block comment {COMMENT}. PHPDoc comments should start with "/**", not "/*"`
-- **PhanPluginPHPDocHashComment**: `Saw comment starting with # in {COMMENT} - consider using // instead to avoid confusion with php 8.0 #[ attributes`
-
-#### InvalidVariableIssetPlugin.php
-
-Warns about invalid uses of `isset`. This README documentation may be inaccurate for this plugin.
-
-- **PhanPluginInvalidVariableIsset** : Forces all uses of `isset` to be on arrays or variables.
-
- E.g. it will warn about `isset(foo()['key'])`, because foo() is not a variable or an array access.
-- **PhanUndeclaredVariable**: Warns if `$array` is undeclared in `isset($array[$key])`
-
-#### NoAssertPlugin.php
-
-Discourages the usage of assert() in the analyzed project.
-See https://secure.php.net/assert
-
-- **PhanPluginNoAssert**: `assert() is discouraged. Although phan supports using assert() for type annotations, PHP's documentation recommends assertions only for debugging, and assert() has surprising behaviors.`
-
-#### NotFullyQualifiedUsagePlugin.php
-
-Encourages the usage of fully qualified global functions and constants (slightly faster, especially for functions such as `strlen`, `count`, etc.)
-
-- **PhanPluginNotFullyQualifiedFunctionCall**: `Expected function call to {FUNCTION}() to be fully qualified or have a use statement but none were found in namespace {NAMESPACE}`
-- **PhanPluginNotFullyQualifiedOptimizableFunctionCall**: `Expected function call to {FUNCTION}() to be fully qualified or have a use statement but none were found in namespace {NAMESPACE} (opcache can optimize fully qualified calls to this function in recent php versions)`
-- **PhanPluginNotFullyQualifiedGlobalConstant**: `Expected usage of {CONST} to be fully qualified or have a use statement but none were found in namespace {NAMESPACE}`
-
-#### NumericalComparisonPlugin.php
-
-Enforces that loose equality is used for numeric operands (e.g. `2 == 2.0`), and that strict equality is used for non-numeric operands (e.g. `"2" === "2e0"` is false).
-
-- **PhanPluginNumericalComparison**: `nonnumerical values compared by the operators '==' or '!=='; numerical values compared by the operators '===' or '!=='`
-
-#### StrictLiteralComparisonPlugin.php
-
-Enforces that strict equality is used for comparisons to constant/literal integers or strings.
-This is used to avoid surprising behaviors such as `0 == 'a'`, `"10" == "1e1"`, etc.
-*Following the advice of this plugin may subtly break existing code (e.g. break implicit null/false checks, or code relying on these unexpected behaviors).*
-
-- **PhanPluginComparisonNotStrictForScalar**: `Expected strict equality check when comparing {TYPE} to {TYPE} in {CODE}`
-
-Also see [`StrictComparisonPlugin`](#StrictComparisonPlugin.php) and [`NumericalComparisonPlugin`](#NumericalComparisonPlugin.php).
-
-#### PHPUnitNotDeadCodePlugin.php
-
-Marks unit tests and dataProviders of subclasses of PHPUnit\Framework\TestCase as referenced.
-Avoids false positives when `--dead-code-detection` is enabled.
-
-(Does not emit any issue types)
-
-#### SleepCheckerPlugin.php
-
-Warn about returning non-arrays in [`__sleep`](https://secure.php.net/__sleep),
-as well as about returning array values with invalid property names in `__sleep`.
-
-- **SleepCheckerInvalidReturnStatement`**: `__sleep must return an array of strings. This is definitely not an array.`
-- **SleepCheckerInvalidReturnType**: `__sleep is returning {TYPE}, expected string[]`
-- **SleepCheckerInvalidPropNameType**: `__sleep is returning an array with a value of type {TYPE}, expected string`
-- **SleepCheckerInvalidPropName**: `__sleep is returning an array that includes {PROPERTY}, which cannot be found`
-- **SleepCheckerMagicPropName**: `__sleep is returning an array that includes {PROPERTY}, which is a magic property`
-- **SleepCheckerDynamicPropName**: `__sleep is returning an array that includes {PROPERTY}, which is a dynamically added property (but not a declared property)`
-- **SleepCheckerPropertyMissingTransient**: `Property {PROPERTY} that is not serialized by __sleep should be annotated with @transient or @phan-transient`,
-
-#### UnknownElementTypePlugin.php
-
-Warns about elements containing unknown types (function/method/closure return types, parameter types)
-
-- **PhanPluginUnknownMethodReturnType**: `Method {METHOD} has no declared or inferred return type`
-- **PhanPluginUnknownMethodParamType**: `Method {METHOD} has no declared or inferred parameter type for ${PARAMETER}`
-- **PhanPluginUnknownFunctionReturnType**: `Function {FUNCTION} has no declared or inferred return type`
-- **PhanPluginUnknownFunctionParamType**: `Function {FUNCTION} has no declared or inferred return type for ${PARAMETER}`
-- **PhanPluginUnknownClosureReturnType**: `Closure {FUNCTION} has no declared or inferred return type`
-- **PhanPluginUnknownClosureParamType**: `Closure {FUNCTION} has no declared or inferred return type for ${PARAMETER}`
-- **PhanPluginUnknownPropertyType**: `Property {PROPERTY} has an initial type that cannot be inferred`
-
-#### DuplicateExpressionPlugin.php
-
-This plugin checks for duplicate expressions in a statement
-that are likely to be a bug. (e.g. `expr1 == expr`)
-
-This will significantly increase the memory used by Phan, but that's rarely an issue in small projects.
-
-- **PhanPluginDuplicateExpressionAssignment**: `Both sides of the assignment {OPERATOR} are the same: {CODE}`
-- **PhanPluginDuplicateExpressionBinaryOp**: `Both sides of the binary operator {OPERATOR} are the same: {CODE}`
-- **PhanPluginDuplicateConditionalTernaryDuplication**: `"X ? X : Y" can usually be simplified to "X ?: Y". The duplicated expression X was {CODE}`
-- **PhanPluginDuplicateConditionalNullCoalescing**: `"isset(X) ? X : Y" can usually be simplified to "X ?? Y" in PHP 7. The duplicated expression X was {CODE}`
-- **PhanPluginBothLiteralsBinaryOp**: `Suspicious usage of a binary operator where both operands are literals. Expression: {CODE} {OPERATOR} {CODE} (result is {CODE})` (e.g. warns about `null == 'a literal` in `$x ?? null == 'a literal'`)
-- **PhanPluginDuplicateConditionalUnnecessary**: `"X ? Y : Y" results in the same expression Y no matter what X evaluates to. Y was {CODE}`
-- **PhanPluginDuplicateCatchStatementBody**: `The implementation of catch({CODE}) and catch({CODE}) are identical, and can be combined if the application only needs to supports php 7.1 and newer`
-- **PhanPluginDuplicateAdjacentStatement**: `Statement {CODE} is a duplicate of the statement on the above line. Suppress this issue instance if there's a good reason for this.`
-
- Note that equivalent catch statements may be deliberate or a coding style choice, and this plugin does not check for TODOs.
-
-#### WhitespacePlugin.php
-
-This plugin checks for unexpected whitespace in PHP files.
-
-- **PhanPluginWhitespaceCarriageReturn**: `The first occurrence of a carriage return ("\r") was seen here. Running "dos2unix" can fix that.`
-- **PhanPluginWhitespaceTab**: `The first occurrence of a tab was seen here. Running "expand" can fix that.`
-- **PhanPluginWhitespaceTrailing**: `The first occurrence of trailing whitespace was seen here.`
-
-#### InlineHTMLPlugin.php
-
-This plugin checks for unexpected inline HTML.
-
-This can be limited to a subset of files with an `inline_html_whitelist_regex` - e.g. `@^(src/|lib/)@`.
-
-Files can be excluded with `inline_html_blacklist_regex`, e.g. `@(^src/templates/)|(\.html$)@`
-
-- **PhanPluginInlineHTML**: `Saw inline HTML between the first and last token: {STRING_LITERAL}`
-- **PhanPluginInlineHTMLLeading**: `Saw inline HTML at the start of the file: {STRING_LITERAL}`
-- **PhanPluginInlineHTMLTrailing**: `Saw inline HTML at the end of the file: {STRING_LITERAL}`
-
-#### SuspiciousParamOrderPlugin.php
-
-This plugin guesses if arguments to a function call are out of order, based on heuristics on the name in the expression (e.g. variable name).
-This will only warn if the argument types are compatible with the alternate parameters being suggested.
-This may be useful when analyzing methods with long parameter lists.
-
-E.g. warns about invoking `function example($first, $second, $third)` as `example($mySecond, $myThird, $myFirst)`
-
-- **PhanPluginSuspiciousParamOrder**: `Suspicious order for arguments named {DETAILS} - These are being passed to parameters {DETAILS} of {FUNCTION} defined at {FILE}:{LINE}`
-- **PhanPluginSuspiciousParamOrderInternal**: `Suspicious order for arguments named {DETAILS} - These are being passed to parameters {DETAILS}`
-
-#### PossiblyStaticMethodPlugin.php
-
-Checks if a method can be made static without causing any errors.
-
-- **PhanPluginPossiblyStaticPublicMethod**: `Public method {METHOD} can be static` (Also exists for Private and Protected)
-- **PhanPluginPossiblyStaticClosure**: `{FUNCTION} can be static`
-
-Warnings may need to be completely disabled due to the large number of method declarations in a typical codebase:
-
-- Warnings are not emitted for methods that override methods in the parent class.
-- Warnings are not emitted for methods that are overridden in child classes.
-- Warnings can be suppressed based on the method FQSEN with `plugin_config => [..., 'possibly_static_method_ignore_regex' => (a PCRE regex)]`
-
-#### PHPDocToRealTypesPlugin.php
-
-This plugin suggests real types that can be used instead of phpdoc types.
-Currently, this just checks param and return types.
-Some of the suggestions made by this plugin will cause inheritance errors.
-
-This doesn't suggest changes if classes have subclasses (but this check doesn't work when inheritance involves traits).
-`PHPDOC_TO_REAL_TYPES_IGNORE_INHERITANCE=1` can be used to force this to check **all** methods and emit issues.
-
-This also supports `--automatic-fix` to add the types to the real type signatures.
-
-- **PhanPluginCanUseReturnType**: `Can use {TYPE} as a return type of {METHOD}`
-- **PhanPluginCanUseNullableReturnType**: `Can use {TYPE} as a return type of {METHOD}` (useful if there is a minimum php version of 7.1)
-- **PhanPluginCanUsePHP71Void**: `Can use php 7.1's void as a return type of {METHOD}` (useful if there is a minimum php version of 7.1)
-
-This supports `--automatic-fix`.
-- `PHPDocRedundantPlugin` will be useful for cleaning up redundant phpdoc after real types were added.
-- `PreferNamespaceUsePlugin` can be used to convert types from fully qualified types back to unqualified types ()
-
-#### PHPDocRedundantPlugin.php
-
-This plugin warns about function/method/closure phpdoc that does nothing but repeat the information in the type signature.
-E.g. this will warn about `/** @return void */ function () : void {}` and `/** */`, but not `/** @return void description of what it does or other annotations */`
-
-This supports `--automatic-fix`
-
-- **PhanPluginRedundantFunctionComment**: `Redundant doc comment on function {FUNCTION}(). Either add a description or remove the comment: {COMMENT}`
-- **PhanPluginRedundantMethodComment**: `Redundant doc comment on method {METHOD}(). Either add a description or remove the comment: {COMMENT}`
-- **PhanPluginRedundantClosureComment**: `Redundant doc comment on closure {FUNCTION}. Either add a description or remove the comment: {COMMENT}`
-- **PhanPluginRedundantReturnComment**: `Redundant @return {TYPE} on function {FUNCTION}. Either add a description or remove the @return annotation: {COMMENT}`
-
-#### PreferNamespaceUsePlugin.php
-
-This plugin suggests using `ClassName` instead of `\My\Ns\ClassName` when there is a `use My\Ns\ClassName` annotation (or for uses in namespace `\My\Ns`)
-Currently, this only checks **real** (not phpdoc) param/return annotations.
-
-- **PhanPluginPreferNamespaceUseParamType**: `Could write param type of ${PARAMETER} of {FUNCTION} as {TYPE} instead of {TYPE}`
-- **PhanPluginPreferNamespaceUseReturnType**: `Could write return type of {FUNCTION} as {TYPE} instead of {TYPE}`
-
-##### StrictComparisonPlugin.php
-
-This plugin warns about non-strict comparisons. It warns about the following issue types:
-
-1. Using `in_array` and `array_search` without explicitly passing true or false to `$strict`.
-2. Using equality or comparison operators when both sides are possible objects.
-
-- **PhanPluginComparisonNotStrictInCall**: `Expected {FUNCTION} to be called with a third argument for {PARAMETER} (either true or false)`
-- **PhanPluginComparisonObjectEqualityNotStrict**: `Saw a weak equality check on possible object types {TYPE} and {TYPE} in {CODE}`
-- **PhanPluginComparisonObjectOrdering**: `Saw a weak equality check on possible object types {TYPE} and {TYPE} in {CODE}`
-
-##### EmptyMethodAndFunctionPlugin.php
-
-This plugin looks for empty methods/functions.
-Note that this is not emitted for empty statement lists in functions or methods that are overrides, are overridden, or are deprecated.
-
-- **PhanEmptyClosure**: `Empty closure`
-- **PhanEmptyFunction**: `Empty function {FUNCTION}`
-- **PhanEmptyPrivateMethod**: `Empty private method {METHOD}`
-- **PhanEmptyProtectedMethod**: `Empty protected method {METHOD}`
-- **PhanEmptyPublicMethod**: `Empty public method {METHOD}`
-
-#### DollarDollarPlugin.php
-
-Checks for complex variable access expressions `$$x`, which may be hard to read, and make the variable accesses hard/impossible to analyze.
-
-- **PhanPluginDollarDollar**: Warns about the use of $$x, ${(expr)}, etc.
-
-### DeprecateAliasPlugin.php
-
-Makes Phan analyze aliases of global functions (e.g. `join()`, `sizeof()`) as if they were deprecated.
-Supports `--automatic-fix`.
-
-#### PHP53CompatibilityPlugin.php
-
-Catches common incompatibilities from PHP 5.3 to 5.6.
-**This plugin does not aim to be comprehensive - read the guides on https://www.php.net/manual/en/appendices.php if you need to migrate from php versions older than 5.6**
-
-`InvokePHPNativeSyntaxCheckPlugin` with `'php_native_syntax_check_binaries' => [PHP_BINARY, '/path/to/php53']` in the `'plugin_config'` is a better but slower way to check that syntax used does not cause errors in PHP 5.3.
-
-`backward_compatibility_checks` should also be enabled if migrating a project from php 5 to php 7.
-
-Emitted issue types:
-
-- **PhanPluginCompatibilityShortArray**: `Short arrays ({CODE}) require support for php 5.4+`
-- **PhanPluginCompatibilityArgumentUnpacking**: `Argument unpacking ({CODE}) requires support for php 5.6+`
-- **PhanPluginCompatibilityVariadicParam**: `Variadic functions ({CODE}) require support for php 5.6+`
-
-#### DuplicateConstantPlugin.php
-
-Checks for duplicate constant names for calls to `define()` or `const X =` within the same statement list.
-
-- **PhanPluginDuplicateConstant**: `Constant {CONST} was previously declared at line {LINE} - the previous declaration will be used instead`
-
-#### AvoidableGetterPlugin.php
-
-This plugin checks for uses of getters on `$this` that can be avoided inside of a class.
-(E.g. calling `$this->getFoo()` when the property `$this->foo` is accessible, and there are no known overrides of the getter)
-
-- **PhanPluginAvoidableGetter**: `Can replace {METHOD} with {PROPERTY}`
-- **PhanPluginAvoidableGetterInTrait**: `Can replace {METHOD} with {PROPERTY}`
-
-Note that switching to properties makes the code slightly faster,
-but may break code outside of the library that overrides those getters,
-or hurt the readability of code.
-
-This will also remove runtime type checks that were enforced by the getter's return type.
-
-#### ConstantVariablePlugin.php
-
-This plugin warns about using variables when they probably have only one possible scalar value (or the only inferred type is `null`).
-This may catch some logic errors such as `echo($result === null ? json_encode($result) : 'default')`, or indicate places where it may or may not be clearer to use the constant itself.
-Most of the reported issues will likely not be worth fixing, or be false positives due to references/loops.
-
-- **PhanPluginConstantVariableBool**: `Variable ${VARIABLE} is probably constant with a value of {TYPE}`
-- **PhanPluginConstantVariableNull**: `Variable ${VARIABLE} is probably constant with a value of {TYPE}`
-- **PhanPluginConstantVariableScalar**: `Variable ${VARIABLE} is probably constant with a value of {TYPE}`
-
-#### ShortArrayPlugin.php
-
-This suggests using shorter array syntaxes if supported by the `minimum_target_php_version`.
-
-- **PhanPluginLongArray**: `Should use [] instead of array()`
-- **PhanPluginLongArrayList**: `Should use [] instead of list()`
-
-#### RemoveDebugStatementPlugin.php
-
-This suggests removing debugging output statements such as `echo`, `print`, `printf`, fwrite(STDERR)`, `var_export()`, inline html, etc.
-This is only useful in applications or libraries that print output in only a few places, as a sanity check that debugging statements are not accidentally left in code.
-
-- **PhanPluginRemoveDebugEcho**: `Saw output expression/statement in {CODE}`
-- **PhanPluginRemoveDebugCall**: `Saw call to {FUNCTION} for debugging`
-
-Suppression comments can use the issue name `PhanPluginRemoveDebugAny` to suppress all issue types emitted by this plugin.
-
-#### AddNeverReturnTypePlugin.php
-
-This plugin checks if a function or method will not return (and has no overrides).
-If the function doesn't have a return type of never.
-then this plugin will emit an issue.
-Closures and short error functions are currently not checked
-
-- **PhanPluginNeverReturnMethod**: `Method {METHOD} never returns and has a return type of {TYPE}, but phpdoc type {TYPE} could be used instead`
-- **PhanPluginNeverReturnFunction**: `Function {FUNCTION} never returns and has a return type of {TYPE}, but phpdoc type {TYPE} could be used instead`
-
-### 4. Demo plugins:
-
-These files demonstrate plugins for Phan.
-
-#### DemoPlugin.php
-
-Look at this class's documentation if you want an example to base your plugin off of.
-Generates the following issue types under the types:
-
-- **DemoPluginClassName**: a declared class isn't called 'Class'
-- **DemoPluginFunctionName**: a declared function isn't called `function`
-- **DemoPluginMethodName**: a declared method isn't called `function`
- PHP's default checks(`php -l` would catch the class/function name types.)
-- **DemoPluginInstanceof**: codebase contains `(expr) instanceof object` (usually invalid, and `is_object()` should be used instead. That would actually be a check for `class object`).
-
-### 5. Third party plugins
-
-- https://github.com/Drenso/PhanExtensions is a third party project with several plugins to do the following:
-
- - Analyze Symfony doc comment annotations.
- - Mark elements in inline doc comments (which Phan doesn't parse) as referencing types from `use statements` as not dead code.
-
-- https://github.com/TysonAndre/PhanTypoCheck checks all tokens of PHP files for typos, including within string literals.
- It is also able to analyze calls to `gettext()`.
-
-### 6. Self-analysis plugins:
-
-#### PhanSelfCheckPlugin.php
-
-This plugin checks for invalid calls to `PluginV2::emitIssue`, `Issue::maybeEmit()`, etc.
-This is useful for developing Phan and Phan plugins.
-
-- **PhanPluginTooFewArgumentsForIssue**: `Too few arguments for issue {STRING_LITERAL}: expected {COUNT}, got {COUNT}`
-- **PhanPluginTooManyArgumentsForIssue**: `Too many arguments for issue {STRING_LITERAL}: expected {COUNT}, got {COUNT}`
-- **PhanPluginUnknownIssueType**: `Unknown issue type {STRING_LITERAL} in a call to {METHOD}(). (may be a false positive - check if the version of Phan running PhanSelfCheckPlugin is the same version that the analyzed codebase is using)`
diff --git a/vendor/phan/phan/.phan/plugins/RedundantAssignmentPlugin.php b/vendor/phan/phan/.phan/plugins/RedundantAssignmentPlugin.php
deleted file mode 100644
index 24ba6034..00000000
--- a/vendor/phan/phan/.phan/plugins/RedundantAssignmentPlugin.php
+++ /dev/null
@@ -1,159 +0,0 @@
-children['var'];
- if (!$var instanceof Node) {
- return;
- }
- if ($var->kind !== ast\AST_VAR) {
- return;
- }
- $var_name = $var->children['name'];
- if (!is_string($var_name)) {
- return;
- }
- $variable = $this->context->getScope()->getVariableByNameOrNull($var_name);
- if (!$variable || $variable instanceof PassByReferenceVariable) {
- return;
- }
- $variable_type = $variable->getUnionType();
- if ($variable_type->isPossiblyUndefined() || count($variable_type->getRealTypeSet()) !== 1) {
- return;
- }
- $old_value = $variable_type->getRealUnionType()->asValueOrNullOrSelf();
- if (is_object($old_value)) {
- return;
- }
- $expr = $node->children['expr'];
- if (!ParseVisitor::isConstExpr($expr, ParseVisitor::CONSTANT_EXPRESSION_FORBID_NEW_EXPRESSION)) {
- return;
- }
- try {
- $expr_type = UnionTypeVisitor::unionTypeFromNode($this->code_base, $this->context, $expr, false);
- } catch (Exception $_) {
- return;
- }
- if (count($expr_type->getRealTypeSet()) !== 1) {
- return;
- }
- $expr_value = $expr_type->getRealUnionType()->asValueOrNullOrSelf();
- if ($expr_value !== $old_value) {
- return;
- }
- if ($this->context->hasSuppressIssue($this->code_base, 'PhanPluginRedundantAssignment')) {
- // Suppressing this suppresses the more specific issues.
- return;
- }
- if ($this->context->isInGlobalScope()) {
- if ($variable->getFileRef()->getFile() !== $this->context->getFile()) {
- // Don't warn if this variable was set by a different file
- return;
- }
- if (Config::getValue('__analyze_twice') && $variable->getFileRef()->getLineNumberStart() === $this->context->getLineNumberStart()) {
- // Don't warn if this variable was set by a different file
- return;
- }
- $issue_name = 'PhanPluginRedundantAssignmentInGlobalScope';
- } elseif ($this->context->isInLoop()) {
- $issue_name = 'PhanPluginRedundantAssignmentInLoop';
- } else {
- $issue_name = 'PhanPluginRedundantAssignment';
- }
- if ($this->context->isInLoop()) {
- $this->context->deferCheckToOutermostLoop(function (Context $context_after_loop) use ($issue_name, $var_name, $variable_type, $var): void {
- $new_variable = $context_after_loop->getScope()->getVariableByNameOrNull($var_name);
- if (!$new_variable) {
- return;
- }
- $new_variable_type = $new_variable->getUnionType();
- if ($new_variable_type->isPossiblyUndefined()) {
- return;
- }
- if ($new_variable_type->getRealTypeSet() !== $variable_type->getRealTypeSet()) {
- return;
- }
- $this->emitPluginIssue(
- $this->code_base,
- (clone $this->context)->withLineNumberStart($var->lineno),
- $issue_name,
- 'Assigning {TYPE} to variable ${VARIABLE} which already has that value',
- [$variable_type, $var_name]
- );
- });
- return;
- }
- $this->emitPluginIssue(
- $this->code_base,
- (clone $this->context)->withLineNumberStart($var->lineno),
- $issue_name,
- 'Assigning {TYPE} to variable ${VARIABLE} which already has that value',
- [$expr_type, $var_name]
- );
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-
-return new RedundantAssignmentPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/RemoveDebugStatementPlugin.php b/vendor/phan/phan/.phan/plugins/RemoveDebugStatementPlugin.php
deleted file mode 100644
index a5daf655..00000000
--- a/vendor/phan/phan/.phan/plugins/RemoveDebugStatementPlugin.php
+++ /dev/null
@@ -1,172 +0,0 @@
-
- */
- public function getAnalyzeFunctionCallClosures(CodeBase $code_base): array
- {
- $warn_remove_debug_call = static function (CodeBase $code_base, Context $context, FunctionInterface $function, ?Node $node): void {
- if ($node) {
- $context = (clone $context)->withLineNumberStart($node->lineno);
- }
- self::emitIssue(
- $code_base,
- $context,
- 'PhanPluginRemoveDebugCall',
- 'Saw call to {FUNCTION} for debugging',
- [(string)$function->getFQSEN()]
- );
- };
- /**
- * @param list $unused_args the nodes for the arguments to the invocation
- */
- $always_debug_callback = static function (
- CodeBase $code_base,
- Context $context,
- Func $function,
- array $unused_args,
- ?Node $node = null
- ) use ($warn_remove_debug_call): void {
- if (self::shouldSuppressDebugIssues($code_base, $context)) {
- return;
- }
- $warn_remove_debug_call($code_base, $context, $function, $node);
- };
- /**
- * @param list $args the nodes for the arguments to the invocation
- * Based on DependentReturnTypeOverridePlugin check
- */
- $var_export_callback = static function (
- CodeBase $code_base,
- Context $context,
- Func $function,
- array $args,
- ?Node $node = null
- ) use ($warn_remove_debug_call): void {
- if (self::shouldSuppressDebugIssues($code_base, $context)) {
- return;
- }
-
- if (count($args) >= 2) {
- $result = (new ContextNode($code_base, $context, $args[1]))->getEquivalentPHPScalarValue();
- // @phan-suppress-next-line PhanSuspiciousTruthyString
- if (is_object($result) || $result) {
- return;
- }
- }
- $warn_remove_debug_call($code_base, $context, $function, $node);
- };
-
- /**
- * @param list $args the nodes for the arguments to the invocation
- */
- $fwrite_callback = static function (
- CodeBase $code_base,
- Context $context,
- Func $function,
- array $args,
- ?Node $node = null
- ) use ($warn_remove_debug_call): void {
- $file = $args[0] ?? null;
- if (!$file instanceof Node || $file->kind !== ast\AST_CONST || !in_array($file->children['name']->children['name'] ?? null, ['STDOUT', 'STDERR'], true)) {
- // Could resolve the constant, but low priority
- return;
- }
- if (self::shouldSuppressDebugIssues($code_base, $context)) {
- return;
- }
-
- $warn_remove_debug_call($code_base, $context, $function, $node);
- };
-
- return [
- 'var_dump' => $always_debug_callback,
- 'printf' => $always_debug_callback,
- 'debug_print_backtrace' => $always_debug_callback,
- 'debug_zval_dump' => $always_debug_callback,
- // Warn for these functions unless the second argument is false
- 'var_export' => $var_export_callback,
- 'print_r' => $var_export_callback,
-
- // check for STDOUT/STDERR
- 'fwrite' => $fwrite_callback,
- 'fprintf' => $fwrite_callback,
- ];
- }
-
- /**
- * Returns true if any debug issue should be suppressed
- */
- public static function shouldSuppressDebugIssues(CodeBase $code_base, Context $context): bool
- {
- return Issue::shouldSuppressIssue($code_base, $context, RemoveDebugStatementPlugin::ISSUE_GROUP, $context->getLineNumberStart(), []);
- }
-}
-
-/**
- * Analyzes node kinds that are associated with debugging
- */
-class RemoveDebugStatementVisitor extends PluginAwarePostAnalysisVisitor
-{
- /**
- * @param Node $node a node of kind ast\AST_ECHO
- */
- public function visitPrint(Node $node): void
- {
- $this->visitEcho($node);
- }
-
- /**
- * @param Node $node a node which echoes or prints
- */
- public function visitEcho(Node $node): void
- {
- if (RemoveDebugStatementPlugin::shouldSuppressDebugIssues($this->code_base, $this->context)) {
- return;
- }
- $this->emitPluginIssue(
- $this->code_base,
- $this->context,
- 'PhanPluginRemoveDebugEcho',
- "Saw output expression/statement in {CODE}",
- [ASTReverter::toShortString($node)]
- );
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new RemoveDebugStatementPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/ShortArrayPlugin.php b/vendor/phan/phan/.phan/plugins/ShortArrayPlugin.php
deleted file mode 100644
index 55c37128..00000000
--- a/vendor/phan/phan/.phan/plugins/ShortArrayPlugin.php
+++ /dev/null
@@ -1,69 +0,0 @@
-flags) {
- case \ast\flags\ARRAY_SYNTAX_LONG:
- $this->emit(
- 'PhanPluginShortArray',
- 'Should use [] instead of array()',
- [],
- Issue::SEVERITY_LOW,
- Issue::REMEDIATION_A
- );
- return;
- case \ast\flags\ARRAY_SYNTAX_LIST:
- if (Config::get_closest_minimum_target_php_version_id() >= 70100) {
- $this->emit(
- 'PhanPluginShortArrayList',
- 'Should use [] instead of list()',
- [],
- Issue::SEVERITY_LOW,
- Issue::REMEDIATION_A
- );
- }
- }
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new ShortArrayPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/SimplifyExpressionPlugin.php b/vendor/phan/phan/.phan/plugins/SimplifyExpressionPlugin.php
deleted file mode 100644
index 5e76cb15..00000000
--- a/vendor/phan/phan/.phan/plugins/SimplifyExpressionPlugin.php
+++ /dev/null
@@ -1,187 +0,0 @@
- 0 ? true : false` can be simplified to `$x > 0`
- *
- * Note that in PHP 7, many functions did not yet have real return types
- *
- * This file demonstrates plugins for Phan. Plugins hook into various events.
- * DuplicateExpressionPlugin hooks into one event:
- *
- * - getPostAnalyzeNodeVisitorClassName
- * This method returns a visitor that is called on every AST node from every
- * file being analyzed in post-order
- *
- * A plugin file must
- *
- * - Contain a class that inherits from \Phan\PluginV3
- *
- * - End by returning an instance of that class.
- *
- * It is assumed without being checked that plugins aren't
- * mangling state within the passed code base or context.
- *
- * Note: When adding new plugins,
- * add them to the corresponding section of README.md
- */
-class SimplifyExpressionPlugin extends PluginV3 implements
- PostAnalyzeNodeCapability
-{
-
- /**
- * @return class-string - name of PluginAwarePostAnalysisVisitor subclass
- * @override
- */
- public static function getPostAnalyzeNodeVisitorClassName(): string
- {
- return SimplifyExpressionVisitor::class;
- }
-}
-
-/**
- * This visitor analyzes node kinds that can be the root of expressions
- * that can be simplified, and is called on nodes in post-order.
- */
-class SimplifyExpressionVisitor extends PluginAwarePostAnalysisVisitor
-{
- /**
- * Returns true if all types are strictly subtypes of `bool`
- */
- protected static function isDefinitelyBool(UnionType $union_type): bool
- {
- $real_type_set = $union_type->getRealTypeSet();
- if (!$real_type_set) {
- return false;
- }
- foreach ($real_type_set as $type) {
- if (!$type->isInBoolFamily() || $type->isNullable()) {
- return false;
- }
- if (count($real_type_set) === 1) {
- // If the expression is `true` or `false`, assume that ExtendedDependentReturnPlugin or some other plugin
- // inferred a literal value instead of the expression being guaranteed to be a boolean.
- // (e.g. `strpos(SOME_CONST, 'val') === false`)
- //
- // TODO: Could check if the expression is a call and what the getRealReturnType is for that function.
- return $type instanceof BoolType;
- }
- }
- return true;
- }
-
- /**
- * @param Node|string|int|float|null $node
- * @return ?bool if this is the name of a boolean, the value. Otherwise, returns null.
- */
- private static function getBoolConst($node): ?bool
- {
- if (!$node instanceof Node) {
- return null;
- }
- if ($node->kind !== ast\AST_CONST) {
- return null;
- }
- // @phan-suppress-next-line PhanPartialTypeMismatchArgumentInternal
- switch (strtolower($node->children['name']->children['name'] ?? '')) {
- case 'false':
- return false;
- case 'true':
- return true;
- }
- return null;
- }
-
- /**
- * @param Node $node
- * A ternary operation node of kind ast\AST_CONDITIONAL to analyze
- * @override
- */
- public function visitConditional(Node $node): void
- {
- // Detect conditions such as`$bool ?: null` or `$bool ? true : false`
- $true_node = $node->children['true'];
- $value_if_true = $true_node !== null ? self::getBoolConst($true_node) : true;
- if (!is_bool($value_if_true)) {
- return;
- }
- $value_if_false = self::getBoolConst($node->children['false']);
- if ($value_if_false !== !$value_if_true) {
- return;
- }
- $this->suggestBoolSimplification($node, $node->children['cond'], !$value_if_true);
- }
-
- /**
- * @param Node|string|int|float $inner_expr
- */
- private function suggestBoolSimplification(Node $node, $inner_expr, bool $negate): void
- {
- if (!self::isDefinitelyBool(UnionTypeVisitor::unionTypeFromNode($this->code_base, $this->context, $inner_expr))) {
- return;
- }
- // TODO: Use redundant condition detection helper methods to handle loops
- $new_inner_repr = ASTReverter::toShortString($inner_expr);
- if ($negate) {
- $new_inner_repr = "!($new_inner_repr)";
- }
- $this->emitPluginIssue(
- $this->code_base,
- $this->context,
- 'PhanPluginSimplifyExpressionBool',
- '{CODE} can probably be simplified to {CODE}',
- [
- ASTReverter::toShortString($node),
- $new_inner_repr,
- ]
- );
- }
-
- /**
- * @param Node $node
- * A binary op node of kind ast\AST_BINARY_OP to analyze
- * @override
- */
- public function visitBinaryOp(Node $node): void
- {
- $is_negated_assertion = false;
- switch ($node->flags) {
- case flags\BINARY_IS_NOT_IDENTICAL:
- case flags\BINARY_IS_NOT_EQUAL:
- case flags\BINARY_BOOL_XOR:
- $is_negated_assertion = true;
- case flags\BINARY_IS_EQUAL:
- case flags\BINARY_IS_IDENTICAL:
- ['left' => $left_node, 'right' => $right_node] = $node->children;
- $left_const = self::getBoolConst($left_node);
- if (is_bool($left_const)) {
- // E.g. `$x === true` can be simplified to `$x`
- $this->suggestBoolSimplification($node, $right_node, $left_const === $is_negated_assertion);
- return;
- }
- $right_const = self::getBoolConst($right_node);
- if (is_bool($right_const)) {
- $this->suggestBoolSimplification($node, $left_node, $right_const === $is_negated_assertion);
- }
- }
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-
-return new SimplifyExpressionPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/SleepCheckerPlugin.php b/vendor/phan/phan/.phan/plugins/SleepCheckerPlugin.php
deleted file mode 100644
index 554e3cc6..00000000
--- a/vendor/phan/phan/.phan/plugins/SleepCheckerPlugin.php
+++ /dev/null
@@ -1,243 +0,0 @@
-children['name']) !== 0) {
- return;
- }
- $sleep_properties = [];
- $this->analyzeStatementsOfSleep($node, $sleep_properties);
- $this->warnAboutTransientSleepProperties($sleep_properties);
- }
-
- /**
- * Warn about instance properties that aren't mentioned in __sleep()
- * and don't have (at)transient or (at)phan-transient
- *
- * @param array $sleep_properties
- */
- private function warnAboutTransientSleepProperties(array $sleep_properties): void
- {
- if (count($sleep_properties) === 0) {
- // Give up, failed to extract property names
- return;
- }
- $class = $this->context->getClassInScope($this->code_base);
- $class_fqsen = $class->getFQSEN();
- foreach ($class->getPropertyMap($this->code_base) as $property_name => $property) {
- if ($property->isStatic()) {
- continue;
- }
- if ($property->isFromPHPDoc()) {
- continue;
- }
- if ($property->isDynamicProperty()) {
- continue;
- }
- if (isset($sleep_properties[$property_name])) {
- continue;
- }
- if ($property->getRealDefiningFQSEN()->getFullyQualifiedClassName() !== $class_fqsen) {
- continue;
- }
- $doc_comment = $property->getDocComment() ?? '';
- $has_transient = preg_match('/@(phan-)?transient\b/', $doc_comment) > 0;
- if (!$has_transient) {
- $regex = Config::getValue('plugin_config')['sleep_transient_warning_blacklist_regex'] ?? null;
- if (is_string($regex) && preg_match($regex, $property_name)) {
- continue;
- }
- $this->emitPluginIssue(
- $this->code_base,
- $property->getContext(),
- 'SleepCheckerPropertyMissingTransient',
- 'Property {PROPERTY} that is not serialized by __sleep should be annotated with @transient or @phan-transient',
- [$property->__toString()]
- );
- }
- }
- }
-
- /**
- * @param Node|int|string|float|null $node
- * @param array $sleep_properties
- */
- private function analyzeStatementsOfSleep($node, array &$sleep_properties = []): void
- {
- if (!($node instanceof Node)) {
- if (is_array($node)) {
- foreach ($node as $child_node) {
- $this->analyzeStatementsOfSleep($child_node, $sleep_properties);
- }
- }
- return;
- }
- switch ($node->kind) {
- case ast\AST_RETURN:
- $this->analyzeReturnValue($node->children['expr'], $node->lineno, $sleep_properties);
- return;
- case ast\AST_CLASS:
- case ast\AST_CLOSURE:
- case ast\AST_FUNC_DECL:
- return;
- default:
- foreach ($node->children as $child_node) {
- $this->analyzeStatementsOfSleep($child_node, $sleep_properties);
- }
- }
- }
-
- private const RESOLVE_SETTINGS =
- ContextNode::RESOLVE_ARRAYS |
- ContextNode::RESOLVE_ARRAY_VALUES |
- ContextNode::RESOLVE_CONSTANTS;
-
- /**
- * @param Node|string|int|float|null $expr_node
- * @param int $lineno
- * @param array $sleep_properties
- */
- private function analyzeReturnValue($expr_node, int $lineno, array &$sleep_properties): void
- {
- $context = (clone $this->context)->withLineNumberStart($lineno);
- if (!($expr_node instanceof Node)) {
- $this->emitPluginIssue(
- $this->code_base,
- $context,
- 'SleepCheckerInvalidReturnStatement',
- '__sleep must return an array of strings. This is definitely not an array.'
- );
- return;
- }
- $code_base = $this->code_base;
-
- $union_type = UnionTypeVisitor::unionTypeFromNode($code_base, $context, $expr_node);
- if (!$union_type->hasArray()) {
- $this->emitPluginIssue(
- $this->code_base,
- $context,
- 'SleepCheckerInvalidReturnType',
- '__sleep is returning {TYPE}, expected {TYPE}',
- [(string)$union_type, 'string[]']
- );
- return;
- }
- if (!$context->isInClassScope()) {
- return;
- }
-
- $kind = $expr_node->kind;
- if (!\in_array($kind, [ast\AST_CONST, ast\AST_ARRAY, ast\AST_CLASS_CONST], true)) {
- return;
- }
-
- $value = (new ContextNode($code_base, $context, $expr_node))->getEquivalentPHPValue(self::RESOLVE_SETTINGS);
- if (!is_array($value)) {
- return;
- }
- $class = $context->getClassInScope($code_base);
-
- foreach ($value as $prop_name) {
- if (!is_string($prop_name)) {
- $prop_type = UnionTypeVisitor::unionTypeFromNode($code_base, $context, $prop_name);
- if (!$prop_type->isType(StringType::instance(false))) {
- $this->emitPluginIssue(
- $this->code_base,
- $context,
- 'SleepCheckerInvalidPropNameType',
- '__sleep is returning an array with a value of type {TYPE}, expected {TYPE}',
- [(string)$prop_type, 'string']
- );
- }
- continue;
- }
- $sleep_properties[$prop_name] = true;
-
- if (!$class->hasPropertyWithName($code_base, $prop_name)) {
- $this->emitPluginIssue(
- $this->code_base,
- $context,
- 'SleepCheckerInvalidPropName',
- '__sleep is returning an array that includes {PROPERTY}, which cannot be found',
- [$prop_name]
- );
- continue;
- }
- $prop = $class->getPropertyByName($code_base, $prop_name);
- if ($prop->isFromPHPDoc()) {
- $this->emitPluginIssue(
- $this->code_base,
- $context,
- 'SleepCheckerMagicPropName',
- '__sleep is returning an array that includes {PROPERTY}, which is a magic property',
- [$prop_name]
- );
- continue;
- }
- if ($prop->isDynamicProperty()) {
- $this->emitPluginIssue(
- $this->code_base,
- $context,
- 'SleepCheckerDynamicPropName',
- '__sleep is returning an array that includes {PROPERTY}, which is a dynamically added property (but not a declared property)',
- [$prop_name]
- );
- continue;
- }
- }
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new SleepCheckerPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/StaticVariableMisusePlugin.php b/vendor/phan/phan/.phan/plugins/StaticVariableMisusePlugin.php
deleted file mode 100644
index f4a44b1e..00000000
--- a/vendor/phan/phan/.phan/plugins/StaticVariableMisusePlugin.php
+++ /dev/null
@@ -1,88 +0,0 @@
-children['name'];
- if ($name !== 'this') {
- return;
- }
- $this->analyzeStaticAccessCommon($node);
- }
-
- /**
- * @override
- */
- public function visitName(Node $node): void
- {
- $context = $this->context;
- if (!$context->isInClassScope() || !$context->isInFunctionLikeScope()) {
- return;
- }
- $name = $node->children['name'];
- if (!is_string($name)) {
- return;
- }
- if (strcasecmp($name, 'static') !== 0) {
- return;
- }
- $this->analyzeStaticAccessCommon($node);
- }
-
- private function analyzeStaticAccessCommon(Node $node): void
- {
- $context = $this->context;
- if (!$context->isInClassScope() || !$context->isInFunctionLikeScope()) {
- return;
- }
- $function = $context->getFunctionLikeInScope($this->code_base);
- if (!$function->hasStaticVariable()) {
- return;
- }
- $class = $context->getClassInScope($this->code_base);
- if ($class->isFinal()) {
- return;
- }
- $this->emitIssue(
- Issue::StaticClassAccessWithStaticVariable,
- $node->lineno,
- ASTReverter::toShortString($node)
- );
- }
-}
-return new StaticVariableMisusePlugin();
diff --git a/vendor/phan/phan/.phan/plugins/StrictComparisonPlugin.php b/vendor/phan/phan/.phan/plugins/StrictComparisonPlugin.php
deleted file mode 100644
index 9d9957b3..00000000
--- a/vendor/phan/phan/.phan/plugins/StrictComparisonPlugin.php
+++ /dev/null
@@ -1,166 +0,0 @@
-
- */
- public function getAnalyzeFunctionCallClosures(CodeBase $code_base): array
- {
- /**
- * @return Closure(CodeBase,Context,Func,array,?Node=):void
- */
- $make_callback = static function (int $index, string $index_name, int $min_args): Closure {
- /**
- * @param list $args the nodes for the arguments to the invocation
- * @unused-param $node
- */
- return static function (
- CodeBase $code_base,
- Context $context,
- Func $func,
- array $args,
- ?Node $node = null
- ) use (
- $index,
- $index_name,
- $min_args
- ): void {
- if (count($args) < $min_args) {
- return;
- }
- $strict_node = $args[$index] ?? null;
- if ($strict_node instanceof Node) {
- $type = UnionTypeVisitor::unionTypeFromNode($code_base, $context, $strict_node)->asSingleScalarValueOrNullOrSelf();
- if ($type === true) {
- return;
- } elseif ($type === false) {
- return;
- }
- }
- self::emitPluginIssue(
- $code_base,
- $context,
- self::ComparisonNotStrictInCall,
- "Expected {FUNCTION} to be called with a $index_name argument for {PARAMETER} (either true or false)",
- [$func->getName(), '$strict']
- );
- };
- };
- // More functions might be added in the future
- $always_warn_third_not_strict = $make_callback(2, 'third', 0);
-
- return [
- 'in_array' => $always_warn_third_not_strict,
- 'array_search' => $always_warn_third_not_strict,
- ];
- }
-
- /**
- * @return string - The name of the visitor that will be called (formerly analyzeNode)
- * @override
- */
- public static function getPostAnalyzeNodeVisitorClassName(): string
- {
- return StrictComparisonVisitor::class;
- }
-}
-
-/**
- * Warns about using weak comparison operators when both sides are possibly objects
- */
-class StrictComparisonVisitor extends PluginAwarePostAnalysisVisitor
-{
- /**
- * @param Node $node
- * A node of kind ast\AST_BINARY_OP to analyze
- *
- * @override
- */
- public function visitBinaryOp(Node $node): void
- {
- switch ($node->flags) {
- case ast\flags\BINARY_IS_EQUAL:
- case ast\flags\BINARY_IS_NOT_EQUAL:
- if ($this->bothSidesArePossiblyObjects($node)) {
- // TODO: Also check arrays of objects?
- $this->emit(
- StrictComparisonPlugin::ComparisonObjectEqualityNotStrict,
- 'Saw a weak equality check on possible object types {TYPE} and {TYPE} in {CODE}',
- [
- UnionTypeVisitor::unionTypeFromNode($this->code_base, $this->context, $node->children['left']),
- UnionTypeVisitor::unionTypeFromNode($this->code_base, $this->context, $node->children['right']),
- ASTReverter::toShortString($node),
- ]
- );
- }
- break;
- case ast\flags\BINARY_IS_GREATER_OR_EQUAL:
- case ast\flags\BINARY_IS_SMALLER_OR_EQUAL:
- case ast\flags\BINARY_IS_GREATER:
- case ast\flags\BINARY_IS_SMALLER:
- case ast\flags\BINARY_SPACESHIP:
- if ($this->bothSidesArePossiblyObjects($node)) {
- $this->emit(
- StrictComparisonPlugin::ComparisonObjectOrdering,
- 'Using comparison operator on possible object types {TYPE} and {TYPE} in {CODE}',
- [
- UnionTypeVisitor::unionTypeFromNode($this->code_base, $this->context, $node->children['left']),
- UnionTypeVisitor::unionTypeFromNode($this->code_base, $this->context, $node->children['right']),
- ASTReverter::toShortString($node),
- ]
- );
- }
- break;
- }
- }
-
- private function bothSidesArePossiblyObjects(Node $node): bool
- {
- ['left' => $left, 'right' => $right] = $node->children;
- if (!($left instanceof Node) || !($right instanceof Node)) {
- return false;
- }
- return UnionTypeVisitor::unionTypeFromNode($this->code_base, $this->context, $left)->hasObjectTypes() &&
- UnionTypeVisitor::unionTypeFromNode($this->code_base, $this->context, $right)->hasObjectTypes();
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new StrictComparisonPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/StrictLiteralComparisonPlugin.php b/vendor/phan/phan/.phan/plugins/StrictLiteralComparisonPlugin.php
deleted file mode 100644
index 7ae56cf1..00000000
--- a/vendor/phan/phan/.phan/plugins/StrictLiteralComparisonPlugin.php
+++ /dev/null
@@ -1,91 +0,0 @@
-flags === ast\flags\BINARY_IS_NOT_EQUAL || $node->flags === ast\flags\BINARY_IS_EQUAL) {
- $this->analyzeEqualityCheck($node);
- }
- }
-
- /**
- * @param Node $node
- * A node of kind ast\AST_BINARY_OP for `==`/`!=` to analyze
- */
- private function analyzeEqualityCheck(Node $node): void
- {
- ['left' => $left, 'right' => $right] = $node->children;
- $left_is_const = ParseVisitor::isConstExpr($left, ParseVisitor::CONSTANT_EXPRESSION_FORBID_NEW_EXPRESSION);
- $right_is_const = ParseVisitor::isConstExpr($right, ParseVisitor::CONSTANT_EXPRESSION_FORBID_NEW_EXPRESSION);
- if ($left_is_const === $right_is_const) {
- return;
- }
- $const_type = UnionTypeVisitor::unionTypeFromNode($this->code_base, $this->context, $left_is_const ? $left : $right);
- if ($const_type->isEmpty()) {
- return;
- }
- foreach ($const_type->getTypeSet() as $type) {
- if (!($type instanceof IntType || $type instanceof StringType)) {
- return;
- }
- }
- self::emitPluginIssue(
- $this->code_base,
- $this->context,
- 'PhanPluginComparisonNotStrictForScalar',
- "Expected strict equality check when comparing {TYPE} to {TYPE} in {CODE}",
- [
- UnionTypeVisitor::unionTypeFromNode($this->code_base, $this->context, $left),
- UnionTypeVisitor::unionTypeFromNode($this->code_base, $this->context, $right),
- ASTReverter::toShortString($node),
- ]
- );
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new StrictLiteralComparisonPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/SuspiciousParamOrderPlugin.php b/vendor/phan/phan/.phan/plugins/SuspiciousParamOrderPlugin.php
deleted file mode 100644
index 93b935c9..00000000
--- a/vendor/phan/phan/.phan/plugins/SuspiciousParamOrderPlugin.php
+++ /dev/null
@@ -1,433 +0,0 @@
-children['args']->children;
- if (count($args) < 1) {
- // Can't have a suspicious param order/position if there are no params
- // (or for AST_CALLABLE_CONVERT)
- return;
- }
- $expression = $node->children['expr'];
- try {
- $function_list_generator = (new ContextNode(
- $this->code_base,
- $this->context,
- $expression
- ))->getFunctionFromNode();
-
- foreach ($function_list_generator as $function) {
- // @phan-suppress-next-line PhanPartialTypeMismatchArgument
- $this->checkCall($function, $args, $node);
- }
- } catch (CodeBaseException $_) {
- }
- }
-
- /**
- * @param Node|string|int|float|null $arg_node
- */
- private static function extractName($arg_node): ?string
- {
- if (!$arg_node instanceof Node) {
- return null;
- }
- switch ($arg_node->kind) {
- case ast\AST_VAR:
- $name = $arg_node->children['name'];
- break;
- /*
- case ast\AST_CONST:
- $name = $arg_node->children['name']->children['name'];
- break;
- */
- case ast\AST_PROP:
- case ast\AST_STATIC_PROP:
- $name = $arg_node->children['prop'];
- break;
- case ast\AST_METHOD_CALL:
- case ast\AST_STATIC_CALL:
- $name = $arg_node->children['method'];
- break;
- case ast\AST_CALL:
- $name = $arg_node->children['expr'];
- break;
- default:
- return null;
- }
- return is_string($name) ? $name : null;
- }
-
- /**
- * Returns a distance in the range 0..1, inclusive.
- *
- * A distance of 0 means they are similar (e.g. foo and getFoo()),
- * and 1 means there are no letters in common (bar and foo)
- */
- private static function computeDistance(string $a, string $b): float
- {
- $la = strlen($a);
- $lb = strlen($b);
- return (levenshtein($a, $b) - abs($la - $lb)) / max(1, min($la, $lb));
- }
-
- /**
- * @param list $args
- */
- private function checkCall(FunctionInterface $function, array $args, Node $node): void
- {
- $arg_names = [];
- foreach ($args as $i => $arg_node) {
- $name = self::extractName($arg_node);
- if (!is_string($name)) {
- continue;
- }
- $arg_names[$i] = strtolower($name);
- }
- if (count($arg_names) < 2) {
- if (count($arg_names) === 1) {
- $this->checkMovedArg($function, $args, $node, $arg_names);
- }
- return;
- }
- $parameters = $function->getParameterList();
- $parameter_names = [];
- foreach ($arg_names as $i => $_) {
- if (!isset($parameters[$i])) {
- unset($arg_names[$i]);
- continue;
- }
- $parameter_names[$i] = strtolower($parameters[$i]->getName());
- }
- if (count($arg_names) < 2) {
- // $arg_names and $parameter_names have the same keys
- $this->checkMovedArg($function, $args, $node, $arg_names);
- return;
- }
- $best_destination_map = [];
- foreach ($arg_names as $i => $name) {
- // To even be considered, the distance metric must be less than 60% (100% would have nothing in common)
- $best_distance = min(
- 0.6,
- self::computeDistance($name, $parameter_names[$i])
- );
- $best_destination = null;
- // echo "Distances for $name to $parameter_names[$i] is $best_distance\n";
-
- foreach ($parameter_names as $j => $parameter_name_j) {
- if ($j === $i) {
- continue;
- }
- $d_swap_j = self::computeDistance($name, $parameter_name_j);
- // echo "Distances for $name to $parameter_name_j is $d_swap_j\n";
- if ($d_swap_j < $best_distance) {
- $best_destination = $j;
- $best_distance = $d_swap_j;
- }
- }
- if ($best_destination !== null) {
- $best_destination_map[$i] = $best_destination;
- }
- }
- if (count($best_destination_map) < 2) {
- $this->checkMovedArg($function, $args, $node, $arg_names);
- return;
- }
- $places_set = [];
- foreach (self::findCycles($best_destination_map) as $cycle) {
- // To reduce false positives, don't warn unless we know the parameter $j would be compatible with what was used at $i
- foreach ($cycle as $array_index => $i) {
- $j = $cycle[($array_index + 1) % count($cycle)];
- $type = UnionTypeVisitor::unionTypeFromNode($this->code_base, $this->context, $args[$i]);
- // echo "Checking if $type can cast to $parameters[$j]\n";
- if (!$type->canCastToUnionType($parameters[$j]->getUnionType(), $this->code_base)) {
- continue 2;
- }
- }
- foreach ($cycle as $i) {
- $places_set[$i] = true;
- }
- $arg_details = implode(' and ', array_map(static function (int $i) use ($args): string {
- return self::extractName($args[$i]) ?? 'unknown';
- }, $cycle));
- $param_details = implode(' and ', array_map(static function (int $i) use ($parameters): string {
- $param = $parameters[$i];
- return '#' . ($i + 1) . ' (' . trim($param->getUnionType() . ' $' . $param->getName()) . ')';
- }, $cycle));
- if ($function->isPHPInternal()) {
- $this->emitPluginIssue(
- $this->code_base,
- (clone $this->context)->withLineNumberStart($node->lineno),
- self::SuspiciousParamOrderInternal,
- 'Suspicious order for arguments named {DETAILS} - These are being passed to parameters {DETAILS} of {FUNCTION}',
- [
- $arg_details,
- $param_details,
- $function->getRepresentationForIssue(true),
- ]
- );
- } else {
- $this->emitPluginIssue(
- $this->code_base,
- (clone $this->context)->withLineNumberStart($node->lineno),
- self::SuspiciousParamOrder,
- 'Suspicious order for arguments named {DETAILS} - These are being passed to parameters {DETAILS} of {FUNCTION} defined at {FILE}:{LINE}',
- [
- $arg_details,
- $param_details,
- $function->getRepresentationForIssue(true),
- $function->getContext()->getFile(),
- $function->getContext()->getLineNumberStart(),
- ]
- );
- }
- }
- $this->checkMovedArg($function, $args, $node, $arg_names, $places_set);
- }
-
- /**
- * @param FunctionInterface $function the function being called
- * @param list $args
- * @param Node $node
- * @param associative-array $arg_names
- * @param associative-array $places_set the places that were already warned about being transposed.
- */
- private function checkMovedArg(FunctionInterface $function, array $args, Node $node, array $arg_names, array $places_set = []): void
- {
- $real_parameters = $function->getRealParameterList();
- $parameters = $function->getParameterList();
- /** @var associative-array maps lowercase param names to their unique index, or null */
- $parameter_names = [];
- foreach ($real_parameters as $i => $param) {
- if (isset($places_set[$i])) {
- continue;
- }
- $name_key = str_replace('_', '', strtolower($param->getName()));
- if (array_key_exists($name_key, $parameter_names)) {
- $parameter_names[$name_key] = null;
- } else {
- $parameter_names[$name_key] = $i;
- }
- }
- foreach ($arg_names as $i => $name) {
- $other_i = $parameter_names[str_replace('_', '', strtolower($name))] ?? null;
- if ($other_i === null || $other_i === $i) {
- continue;
- }
- $real_param = $real_parameters[$other_i];
- if ($real_param->isVariadic()) {
- // Skip warning about signatures such as var_dump($var, ...$args) or array_unshift($values, $arg, $arg2)
- //
- // NOTE: For internal functions, some functions such as implode() have alternate signatures where the real parameter is in a different place,
- // which is why this checks both $real_param and $param
- //
- // For user-defined functions, alternates are not supported.
- continue;
- }
- $param = $parameters[$other_i] ?? null;
- if ($param && $param->getName() === $real_param->getName()) {
- if ($param->isVariadic()) {
- continue;
- }
- $real_param = $param;
- }
- $real_param_details = '#' . ($other_i + 1) . ' (' . trim($real_param->getUnionType() . ' $' . $real_param->getName()) . ')';
- $arg_details = self::extractName($args[$i]) ?? 'unknown';
- if ($function->isPHPInternal()) {
- $this->emitPluginIssue(
- $this->code_base,
- (clone $this->context)->withLineNumberStart($args[$i]->lineno ?? $node->lineno),
- self::SuspiciousParamPositionInternal,
- 'Suspicious order for argument {DETAILS} - This is getting passed to parameter {DETAILS} of {FUNCTION}',
- [
- $arg_details,
- $real_param_details,
- $function->getRepresentationForIssue(true),
- ]
- );
- } else {
- $this->emitPluginIssue(
- $this->code_base,
- (clone $this->context)->withLineNumberStart($args[$i]->lineno ?? $node->lineno),
- self::SuspiciousParamPosition,
- 'Suspicious order for argument {DETAILS} - This is getting passed to parameter {DETAILS} of {FUNCTION} defined at {FILE}:{LINE}',
- [
- $arg_details,
- $real_param_details,
- $function->getRepresentationForIssue(true),
- $function->getContext()->getFile(),
- $function->getContext()->getLineNumberStart(),
- ]
- );
- }
- }
- }
-
- /**
- * @param list $values
- * @return list the same values of the cycle, rearranged to start with the smallest value.
- */
- private static function normalizeCycle(array $values, int $next): array
- {
- $pos = array_search($next, $values, true);
- $values = array_slice($values, $pos ?: 0);
- $min_pos = 0;
- foreach ($values as $i => $value) {
- if ($value < $values[$min_pos]) {
- $min_pos = $values[$i];
- }
- }
- return array_merge(array_slice($values, $min_pos), array_slice($values, 0, $min_pos));
- }
-
- /**
- * Given [1 => 2, 2 => 3, 3 => 1, 4 => 5, 5 => 6, 6 => 5]], return [[1,2,3],[5,6]]
- * @param array $destination_map
- * @return array>
- */
- public static function findCycles(array $destination_map): array
- {
- $result = [];
- while (count($destination_map) > 0) {
- reset($destination_map);
- $key = (int) key($destination_map);
- $values = [];
- while (count($destination_map) > 0) {
- $values[] = $key;
- $next = $destination_map[$key];
- unset($destination_map[$key]);
- if (in_array($next, $values, true)) {
- $values = self::normalizeCycle($values, $next);
- if (count($values) >= 2) {
- $result[] = $values;
- }
- $values = [];
- break;
- }
- if (!isset($destination_map[$next])) {
- break;
- }
- $key = $next;
- }
- }
- return $result;
- }
-
- /**
- * @param Node $node a node of type AST_NULLSAFE_METHOD_CALL
- * @override
- */
- public function visitNullsafeMethodCall(Node $node): void
- {
- $this->visitMethodCall($node);
- }
-
- /**
- * @param Node $node a node of type AST_METHOD_CALL
- * @override
- */
- public function visitMethodCall(Node $node): void
- {
- $args = $node->children['args']->children;
- if (count($args) < 1) {
- // Can't have a suspicious param order/position if there are no params
- // (or for AST_CALLABLE_CONVERT)
- return;
- }
-
- $method_name = $node->children['method'];
-
- if (!\is_string($method_name)) {
- return;
- }
- try {
- $method = (new ContextNode(
- $this->code_base,
- $this->context,
- $node
- ))->getMethod($method_name, false, true);
- } catch (Exception $_) {
- return;
- }
- // @phan-suppress-next-line PhanPartialTypeMismatchArgument
- $this->checkCall($method, $args, $node);
- }
-
- /**
- * @param Node $node a node of type AST_STATIC_CALL
- * @override
- */
- public function visitStaticCall(Node $node): void
- {
- $args = $node->children['args']->children;
- if (count($args) < 1) {
- // Can't have a suspicious param order/position if there are no params
- return;
- }
-
- $method_name = $node->children['method'];
-
- if (!\is_string($method_name)) {
- return;
- }
- try {
- $method = (new ContextNode(
- $this->code_base,
- $this->context,
- $node
- ))->getMethod($method_name, true, true);
- } catch (Exception $_) {
- return;
- }
- // @phan-suppress-next-line PhanPartialTypeMismatchArgument
- $this->checkCall($method, $args, $node);
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new SuspiciousParamOrderPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/UnknownClassElementAccessPlugin.php b/vendor/phan/phan/.phan/plugins/UnknownClassElementAccessPlugin.php
deleted file mode 100644
index 76a23d15..00000000
--- a/vendor/phan/phan/.phan/plugins/UnknownClassElementAccessPlugin.php
+++ /dev/null
@@ -1,160 +0,0 @@
-someMethod(null)`
- *
- * This file demonstrates plugins for Phan. Plugins hook into various events.
- * UnknownClassElementAccessPlugin hooks into two events:
- *
- * - getPostAnalyzeNodeVisitorClassName
- * This method returns a visitor that is called on every AST node from every
- * file being analyzed in post-order
- * - finalizeProcess
- * This is called after the other forms of analysis are finished running.
- *
- * A plugin file must
- *
- * - Contain a class that inherits from \Phan\PluginV3
- *
- * - End by returning an instance of that class.
- *
- * It is assumed without being checked that plugins aren't
- * mangling state within the passed code base or context.
- *
- * Note: When adding new plugins,
- * add them to the corresponding section of README.md
- */
-class UnknownClassElementAccessPlugin extends PluginV3 implements
- PostAnalyzeNodeCapability,
- FinalizeProcessCapability
-{
- public const UnknownObjectMethodCall = 'PhanPluginUnknownObjectMethodCall';
- /**
- * @var array>
- * Map from file name+line+node hash to the union type to a closure to emit the issue
- */
- private static $deferred_unknown_method_issues = [];
-
- /**
- * @var array
- * Set of file name+line+node hashes where the union type is known.
- */
- private static $known_method_set = [];
-
- /**
- * @return class-string - name of PluginAwarePostAnalysisVisitor subclass
- */
- public static function getPostAnalyzeNodeVisitorClassName(): string
- {
- return UnknownClassElementAccessVisitor::class;
- }
-
- private static function generateKey(FileRef $context, int $lineno, string $node_string): string
- {
- // Sadly, the node can either be from the parse phase or any analysis phase, so we can't use spl_object_id.
- return $context->getFile() . ':' . $lineno . ':' . sha1($node_string);
- }
-
- /**
- * Emit an issue if the object of the method call isn't found later/earlier
- */
- public static function deferEmittingMethodIssue(Context $context, Node $node, UnionType $union_type): void
- {
- $node_string = ASTReverter::toShortString($node);
- $key = self::generateKey($context, $node->lineno, $node_string);
- if (isset(self::$known_method_set[$key])) {
- return;
- }
- self::$deferred_unknown_method_issues[$key][] = [(clone $context)->withLineNumberStart($node->lineno), $node_string, $union_type];
- }
-
- /**
- * Prevent this plugin from warning about $node_string at this file and line
- */
- public static function preventMethodIssueWarning(Context $context, Node $node): void
- {
- $node_string = ASTReverter::toShortString($node);
- $key = self::generateKey($context, $node->lineno, $node_string);
- self::$known_method_set[$key] = true;
- unset(self::$deferred_unknown_method_issues[$key]);
- }
-
- public function finalizeProcess(CodeBase $code_base): void
- {
- foreach (self::$deferred_unknown_method_issues as $issues) {
- foreach ($issues as [$context, $node_string, $union_type]) {
- $this->emitIssue(
- $code_base,
- $context,
- self::UnknownObjectMethodCall,
- 'Phan could not infer any class/interface types for the object of the method call {CODE} - inferred a type of {TYPE}',
- [
- $node_string,
- $union_type->isEmpty() ? '(empty union type)' : $union_type
- ]
- );
- }
- }
- }
-}
-
-/**
- * This visitor analyzes node kinds that can be the root of expressions
- * containing duplicate expressions, and is called on nodes in post-order.
- */
-class UnknownClassElementAccessVisitor extends PluginAwarePostAnalysisVisitor
-{
- /**
- * @param Node $node a node of kind ast\AST_NULLSAFE_METHOD_CALL, representing a call to an instance method
- */
- public function visitNullsafeMethodCall(Node $node): void
- {
- $this->visitMethodCall($node);
- }
-
- /**
- * @param Node $node a node of kind ast\AST_METHOD_CALL, representing a call to an instance method
- */
- public function visitMethodCall(Node $node): void
- {
- try {
- // Fetch the list of valid classes, and warn about any undefined classes.
- // (We have more specific issue types such as PhanNonClassMethodCall below, don't emit PhanTypeExpected*)
- $union_type = UnionTypeVisitor::unionTypeFromNode($this->code_base, $this->context, $node->children['expr']);
- } catch (Exception $_) {
- // Phan should already throw for this
- return;
- }
- foreach ($union_type->getTypeSet() as $type) {
- if ($type->hasObjectWithKnownFQSEN()) {
- UnknownClassElementAccessPlugin::preventMethodIssueWarning($this->context, $node);
- return;
- }
- }
- if (Issue::shouldSuppressIssue($this->code_base, $this->context, UnknownClassElementAccessPlugin::UnknownObjectMethodCall, $node->lineno, [])) {
- return;
- }
- UnknownClassElementAccessPlugin::deferEmittingMethodIssue($this->context, $node, $union_type);
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new UnknownClassElementAccessPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/UnknownElementTypePlugin.php b/vendor/phan/phan/.phan/plugins/UnknownElementTypePlugin.php
deleted file mode 100644
index aa23b4fd..00000000
--- a/vendor/phan/phan/.phan/plugins/UnknownElementTypePlugin.php
+++ /dev/null
@@ -1,398 +0,0 @@
-
- */
- private $deferred_checks = [];
-
- /**
- * Returns true for array, ?array, and array|null
- */
- private static function isRegularArray(UnionType $type): bool
- {
- return $type->hasTypeMatchingCallback(static function (Type $type): bool {
- return get_class($type) === ArrayType::class;
- }) && !$type->hasTypeMatchingCallback(static function (Type $type): bool {
- return get_class($type) !== ArrayType::class && !($type instanceof NullType);
- });
- }
-
- /**
- * @param CodeBase $code_base
- * The code base in which the method exists
- *
- * @param Method $method
- * A method being analyzed
- * @override
- */
- public function analyzeMethod(
- CodeBase $code_base,
- Method $method
- ): void {
- if ($method->getFQSEN() !== $method->getRealDefiningFQSEN()) {
- return;
- }
-
- $this->performChecks(
- $method,
- 'PhanPluginUnknownMethodReturnType',
- 'Method {METHOD} has no declared or inferred return type',
- 'PhanPluginUnknownArrayMethodReturnType',
- 'Method {METHOD} has a return type of array, but does not specify any key types or value types'
- );
- // NOTE: Placeholders can be found in \Phan\Issue::uncolored_format_string_for_replace
- $warning_closures = [];
- $inferred_types = [];
- foreach ($method->getParameterList() as $i => $parameter) {
- if ($parameter->getUnionType()->isEmpty()) {
- $warning_closures[$i] = static function () use ($code_base, $parameter, $method, $i, &$inferred_types): void {
- $suggestion = self::suggestionFromUnionType($inferred_types[$i] ?? null);
- self::emitIssueAndSuggestion(
- $code_base,
- $parameter->createContext($method),
- 'PhanPluginUnknownMethodParamType',
- 'Method {METHOD} has no declared or inferred parameter type for ${PARAMETER}',
- [(string)$method->getFQSEN(), $parameter->getName()],
- $suggestion
- );
- };
- } elseif (self::isRegularArray($parameter->getUnionType())) {
- $warning_closures[$i] = static function () use ($code_base, $parameter, $method, $i, &$inferred_types): void {
- $suggestion = self::suggestionFromUnionTypeNotRegularArray($inferred_types[$i] ?? null);
- self::emitIssueAndSuggestion(
- $code_base,
- $parameter->createContext($method),
- 'PhanPluginUnknownArrayMethodParamType',
- 'Method {METHOD} has a parameter type of array for ${PARAMETER}, but does not specify any key types or value types',
- [(string)$method->getFQSEN(), $parameter->getName()],
- $suggestion
- );
- };
- }
- }
- if (!$warning_closures) {
- return;
- }
- $this->deferred_checks[$method->getFQSEN()->__toString()] = static function (CodeBase $_) use ($warning_closures): void {
- foreach ($warning_closures as $cb) {
- $cb();
- }
- };
- $method->addFunctionCallAnalyzer(
- /**
- * @param list $args
- */
- static function (CodeBase $code_base, Context $context, Method $unused_method, array $args, Node $unused_node) use ($warning_closures, &$inferred_types): void {
- foreach ($warning_closures as $i => $_) {
- $parameter = $args[$i] ?? null;
- if ($parameter !== null) {
- $parameter_type = UnionTypeVisitor::unionTypeFromNode($code_base, $context, $parameter);
- if ($parameter_type->isEmpty()) {
- return;
- }
- $combined_type = $inferred_types[$i] ?? null;
- if ($combined_type instanceof UnionType) {
- $combined_type = $combined_type->withUnionType($parameter_type);
- } else {
- $combined_type = $parameter_type;
- }
- $inferred_types[$i] = $combined_type;
- }
- }
- },
- $this
- );
- }
-
- private static function suggestionFromUnionType(?UnionType $type): ?Suggestion
- {
- if (!$type || $type->isEmpty()) {
- return null;
- }
- $type = $type->withFlattenedArrayShapeOrLiteralTypeInstances()->asNormalizedTypes();
- return Suggestion::fromString("Types inferred after analysis: $type");
- }
-
- private static function suggestionFromUnionTypeNotRegularArray(?UnionType $type): ?Suggestion
- {
- if (!$type || $type->isEmpty()) {
- return null;
- }
- if (self::isRegularArray($type)) {
- return null;
- }
- $type = $type->withFlattenedArrayShapeOrLiteralTypeInstances()->asNormalizedTypes();
- return Suggestion::fromString("Types inferred after analysis: $type");
- }
-
- private function performChecks(
- AddressableElement $element,
- string $issue_type_for_empty,
- string $message_for_empty,
- string $issue_type_for_unknown_array,
- string $message_for_unknown_array
- ): void {
- $union_type = $element->getUnionType();
- if ($union_type->isEmpty()) {
- $issue_type = $issue_type_for_empty;
- $message = $message_for_empty;
- } elseif (self::isRegularArray($union_type)) {
- $issue_type = $issue_type_for_unknown_array;
- $message = $message_for_unknown_array;
- } else {
- return;
- }
- $this->deferred_checks[$issue_type . ':' . $element->getFQSEN()->__toString()] = static function (CodeBase $code_base) use ($element, $issue_type, $message, $issue_type_for_unknown_array): void {
- $new_union_type = $element->getUnionType();
- $suggestion = null;
- if (!$new_union_type->isEmpty()) {
- if ($issue_type !== $issue_type_for_unknown_array || !self::isRegularArray($new_union_type)) {
- $suggestion = self::suggestionFromUnionType($new_union_type);
- }
- }
- self::emitIssueAndSuggestion(
- $code_base,
- $element->getContext(),
- $issue_type,
- $message,
- [$element->getRepresentationForIssue()],
- $suggestion
- );
- };
- }
-
- /**
- * @param list $args
- */
- private static function emitIssueAndSuggestion(
- CodeBase $code_base,
- Context $context,
- string $issue_type,
- string $message,
- array $args,
- ?Suggestion $suggestion
- ): void {
- self::emitIssue(
- $code_base,
- $context,
- $issue_type,
- $message,
- $args,
- Issue::SEVERITY_NORMAL,
- Issue::REMEDIATION_B,
- Issue::TYPE_ID_UNKNOWN,
- $suggestion
- );
- }
-
-
- /**
- * @param CodeBase $code_base
- * The code base in which the function exists
- *
- * @param Func $function
- * A function being analyzed
- * @override
- */
- public function analyzeFunction(
- CodeBase $code_base,
- Func $function
- ): void {
- // NOTE: Placeholders can be found in \Phan\Issue::uncolored_format_string_for_replace
- if ($function->getUnionType()->isEmpty()) {
- if ($function->getFQSEN()->isClosure()) {
- $issue = 'PhanPluginUnknownClosureReturnType';
- $message = 'Closure {FUNCTION} has no declared or inferred return type';
- } else {
- $issue = 'PhanPluginUnknownFunctionReturnType';
- $message = 'Function {FUNCTION} has no declared or inferred return type';
- }
- $this->deferred_checks[$issue . ':' . $function->getFQSEN()->__toString()] = static function (CodeBase $code_base) use ($function, $issue, $message): void {
- $new_union_type = $function->getUnionType();
- $suggestion = self::suggestionFromUnionType($new_union_type);
- self::emitIssue(
- $code_base,
- $function->getContext(),
- $issue,
- $message,
- [$function->getRepresentationForIssue()],
- Issue::SEVERITY_NORMAL,
- Issue::REMEDIATION_B,
- Issue::TYPE_ID_UNKNOWN,
- $suggestion
- );
- };
- } elseif (self::isRegularArray($function->getUnionType())) {
- if ($function->getFQSEN()->isClosure()) {
- $issue = 'PhanPluginUnknownArrayClosureReturnType';
- $message = 'Closure {FUNCTION} has a return type of array, but does not specify key or value types';
- } else {
- $issue = 'PhanPluginUnknownArrayFunctionReturnType';
- $message = 'Function {FUNCTION} has a return type of array, but does not specify key or value types';
- }
- $this->deferred_checks[$issue . ':' . $function->getFQSEN()->__toString()] = static function (CodeBase $code_base) use ($function, $issue, $message): void {
- $new_union_type = $function->getUnionType();
- $suggestion = self::suggestionFromUnionTypeNotRegularArray($new_union_type);
- self::emitIssue(
- $code_base,
- $function->getContext(),
- $issue,
- $message,
- [$function->getRepresentationForIssue()],
- Issue::SEVERITY_NORMAL,
- Issue::REMEDIATION_B,
- Issue::TYPE_ID_UNKNOWN,
- $suggestion
- );
- };
- }
- $warning_closures = [];
- $inferred_types = [];
- foreach ($function->getParameterList() as $i => $parameter) {
- if ($parameter->getUnionType()->isEmpty()) {
- if ($function->getFQSEN()->isClosure()) {
- $issue = 'PhanPluginUnknownClosureParamType';
- $message = 'Closure {FUNCTION} has no declared or inferred return type for ${PARAMETER}';
- } else {
- $issue = 'PhanPluginUnknownFunctionParamType';
- $message = 'Function {FUNCTION} has no declared or inferred return type for ${PARAMETER}';
- }
- $warning_closures[$i] = static function () use ($code_base, $issue, $message, $parameter, $function, $i, &$inferred_types): void {
- $suggestion = self::suggestionFromUnionType($inferred_types[$i] ?? null);
- self::emitIssueAndSuggestion(
- $code_base,
- $parameter->createContext($function),
- $issue,
- $message,
- [$function->getNameForIssue(), $parameter->getName()],
- $suggestion
- );
- };
- } elseif (self::isRegularArray($parameter->getUnionType())) {
- if ($function->getFQSEN()->isClosure()) {
- $issue = 'PhanPluginUnknownArrayClosureParamType';
- $message = 'Closure {FUNCTION} has a parameter type of array for ${PARAMETER}, but does not specify any key types or value types';
- } else {
- $issue = 'PhanPluginUnknownArrayFunctionParamType';
- $message = 'Function {FUNCTION} has a parameter type of array for ${PARAMETER}, but does not specify any key types or value types';
- }
- $warning_closures[$i] = static function () use ($code_base, $issue, $message, $parameter, $function, $i, &$inferred_types): void {
- $suggestion = self::suggestionFromUnionType($inferred_types[$i] ?? null);
- self::emitIssueAndSuggestion(
- $code_base,
- $parameter->createContext($function),
- $issue,
- $message,
- [$function->getNameForIssue(), $parameter->getName()],
- $suggestion
- );
- };
- }
- }
- if (!$warning_closures) {
- return;
- }
- $this->deferred_checks[$function->getFQSEN()->__toString()] = static function (CodeBase $_) use ($warning_closures): void {
- foreach ($warning_closures as $cb) {
- $cb();
- }
- };
- $function->addFunctionCallAnalyzer(
- /**
- * @param list $args
- */
- static function (CodeBase $code_base, Context $context, Func $unused_function, array $args, Node $unused_node) use ($warning_closures, &$inferred_types): void {
- foreach ($warning_closures as $i => $_) {
- $parameter = $args[$i] ?? null;
- if ($parameter !== null) {
- $parameter_type = UnionTypeVisitor::unionTypeFromNode($code_base, $context, $parameter);
- if ($parameter_type->isEmpty()) {
- return;
- }
- $combined_type = $inferred_types[$i] ?? null;
- if ($combined_type instanceof UnionType) {
- $combined_type = $combined_type->withUnionType($parameter_type);
- } else {
- $combined_type = $parameter_type;
- }
- $inferred_types[$i] = $combined_type;
- }
- }
- },
- $this
- );
- }
-
- /**
- * @param CodeBase $code_base @unused-param
- * The code base in which the property exists
- *
- * @param Property $property
- * A property being analyzed
- * @override
- */
- public function analyzeProperty(
- CodeBase $code_base,
- Property $property
- ): void {
- if ($property->getFQSEN() !== $property->getRealDefiningFQSEN()) {
- return;
- }
- $this->performChecks(
- $property,
- 'PhanPluginUnknownPropertyType',
- 'Property {PROPERTY} has an initial type that cannot be inferred',
- 'PhanPluginUnknownArrayPropertyType',
- 'Property {PROPERTY} has an array type, but does not specify any key types or value types'
- );
- }
-
- public function finalizeProcess(CodeBase $code_base): void
- {
- try {
- foreach ($this->deferred_checks as $check) {
- $check($code_base);
- }
- } finally {
- // There were errors in unit tests if this wasn't cleared.
- $this->deferred_checks = [];
- }
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new UnknownElementTypePlugin();
diff --git a/vendor/phan/phan/.phan/plugins/UnreachableCodePlugin.php b/vendor/phan/phan/.phan/plugins/UnreachableCodePlugin.php
deleted file mode 100644
index 7c0a22da..00000000
--- a/vendor/phan/phan/.phan/plugins/UnreachableCodePlugin.php
+++ /dev/null
@@ -1,117 +0,0 @@
- true,
- \ast\AST_FUNC_DECL => true,
- \ast\AST_CONST => true,
- ];
-
- /**
- * @param Node $node
- * A node to analyze
- * @override
- */
- public function visitStmtList(Node $node): void
- {
- $child_nodes = $node->children;
-
- $last_node_index = count($child_nodes) - 1;
- foreach ($child_nodes as $i => $node) {
- if (!\is_int($i)) {
- throw new AssertionError("Expected integer index");
- }
- if ($i >= $last_node_index) {
- break;
- }
- if (!($node instanceof Node)) {
- continue;
- }
- if (!BlockExitStatusChecker::willUnconditionallySkipRemainingStatements($node)) {
- continue;
- }
- // Skip over empty statements and scalar statements.
- for ($j = $i + 1; array_key_exists($j, $child_nodes); $j++) {
- $next_node = $child_nodes[$j];
- if (!($next_node instanceof Node && $next_node->lineno > 0)) {
- continue;
- }
- if (array_key_exists($next_node->kind, self::DECL_KIND_SET)) {
- if ($this->context->isInGlobalScope()) {
- continue;
- }
- }
- if ($this->context->isInFunctionLikeScope()) {
- if ($this->context->getFunctionLikeInScope($this->code_base)->checkHasSuppressIssueAndIncrementCount('PhanPluginUnreachableCode')) {
- // don't emit the below issue.
- break;
- }
- }
- $this->emitPluginIssue(
- $this->code_base,
- (clone $this->context)->withLineNumberStart($next_node->lineno),
- 'PhanPluginUnreachableCode',
- 'Unreachable statement detected',
- []
- );
- break;
- }
- break;
- }
- }
-}
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new UnreachableCodePlugin();
diff --git a/vendor/phan/phan/.phan/plugins/UnsafeCodePlugin.php b/vendor/phan/phan/.phan/plugins/UnsafeCodePlugin.php
deleted file mode 100644
index 7d8bdae0..00000000
--- a/vendor/phan/phan/.phan/plugins/UnsafeCodePlugin.php
+++ /dev/null
@@ -1,106 +0,0 @@
-flags !== ast\flags\EXEC_EVAL) {
- return;
- }
- $this->emitPluginIssue(
- $this->code_base,
- $this->context,
- 'PhanPluginUnsafeEval',
- 'eval() is often unsafe and may have better alternatives such as closures and is unanalyzable. Suppress this issue if you are confident that input is properly escaped for this use case and there is no better way to do this.',
- []
- );
- }
-
- /**
- * @param Node $node a
- * A node of kind ast\AST_SHELL_EXEC to analyze
- * @override
- */
- public function visitShellExec(Node $node): void
- {
- if (!ParseVisitor::isConstExpr($node->children['expr'], ParseVisitor::CONSTANT_EXPRESSION_FORBID_NEW_EXPRESSION)) {
- $this->emitPluginIssue(
- $this->code_base,
- $this->context,
- 'PhanPluginUnsafeShellExecDynamic',
- 'This syntax for shell_exec() ({CODE}) is easily confused for a string and does not allow proper exit code/stderr handling, and is used with a non-constant. Consider proc_open() instead.',
- [ASTReverter::toShortString($node)]
- );
- return;
- }
- $this->emitPluginIssue(
- $this->code_base,
- $this->context,
- 'PhanPluginUnsafeShellExec',
- 'This syntax for shell_exec() ({CODE}) is easily confused for a string and does not allow proper exit code/stderr handling. Consider proc_open() instead.',
- [ASTReverter::toShortString($node)]
- );
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new UnsafeCodePlugin();
diff --git a/vendor/phan/phan/.phan/plugins/UnusedSuppressionPlugin.php b/vendor/phan/phan/.phan/plugins/UnusedSuppressionPlugin.php
deleted file mode 100644
index 601e9e94..00000000
--- a/vendor/phan/phan/.phan/plugins/UnusedSuppressionPlugin.php
+++ /dev/null
@@ -1,312 +0,0 @@
-analyze*()` were called,
- * which is why those methods postpone the check until analysis is finished.
- *
- * Also, looping over all elements again would be slow.
- *
- * These are currently unique, even when quick_mode is false.
- */
- private $elements_for_postponed_analysis = [];
-
- /**
- * @var string[] a list of files where checks for unused suppressions was postponed
- * (Because of non-quick mode, we may emit issues in a file after analysis has run on that file)
- */
- private $files_for_postponed_analysis = [];
-
- /**
- * @var array>>> stores the suppressions for active plugins
- * maps plugin class to
- * file name to
- * issue type to
- * unique list of line numbers of suppressions
- */
- private $plugin_active_suppression_list = [];
-
- /**
- * @param CodeBase $code_base
- * The code base in which the element exists
- *
- * @param AddressableElement $element
- * Any element such as function, method, class
- * (which has an FQSEN)
- */
- private static function analyzeAddressableElement(
- CodeBase $code_base,
- AddressableElement $element
- ): void {
- // Get the set of suppressed issues on the element
- $suppress_issue_list =
- $element->getSuppressIssueList();
-
- if (\array_key_exists('UnusedSuppression', $suppress_issue_list)) {
- // The element's doc comment is suppressing everything emitted by this plugin.
- return;
- }
-
- // Check to see if any are unused
- foreach ($suppress_issue_list as $issue_type => $use_count) {
- if (0 !== $use_count) {
- continue;
- }
- if (in_array($issue_type, self::getUnusedSuppressionIgnoreList(), true)) {
- continue;
- }
- self::emitIssue(
- $code_base,
- $element->getContext(),
- 'UnusedSuppression',
- "Element {FUNCTIONLIKE} suppresses issue {ISSUETYPE} but does not use it",
- [(string)$element->getFQSEN(), $issue_type]
- );
- }
- }
-
- private function postponeAnalysisOfElement(AddressableElement $element): void
- {
- if (count($element->getSuppressIssueList()) === 0) {
- // There are no suppressions, so there's no reason to check this
- return;
- }
- $this->elements_for_postponed_analysis[] = $element;
- }
-
- /**
- * @param CodeBase $code_base @unused-param
- * The code base in which the class exists
- *
- * @param Clazz $class
- * A class being analyzed
- * @override
- */
- public function analyzeClass(
- CodeBase $code_base,
- Clazz $class
- ): void {
- $this->postponeAnalysisOfElement($class);
- }
-
- /**
- * @param CodeBase $code_base @unused-param
- * The code base in which the method exists
- *
- * @param Method $method
- * A method being analyzed
- * @override
- */
- public function analyzeMethod(
- CodeBase $code_base,
- Method $method
- ): void {
-
- // Ignore methods inherited by subclasses
- if ($method->getFQSEN() !== $method->getRealDefiningFQSEN()) {
- return;
- }
-
- $this->postponeAnalysisOfElement($method);
- }
-
- /**
- * @param CodeBase $code_base @unused-param
- * The code base in which the function exists
- *
- * @param Func $function
- * A function being analyzed
- * @override
- */
- public function analyzeFunction(
- CodeBase $code_base,
- Func $function
- ): void {
- $this->postponeAnalysisOfElement($function);
- }
-
- /**
- * @param CodeBase $code_base @unused-param
- * The code base in which the property exists
- *
- * @param Property $property
- * A property being analyzed
- * @override
- */
- public function analyzeProperty(
- CodeBase $code_base,
- Property $property
- ): void {
- if ($property->getFQSEN() !== $property->getRealDefiningFQSEN()) {
- return;
- }
- $this->elements_for_postponed_analysis[] = $property;
- }
-
- /**
- * NOTE! This plugin only produces correct results when Phan
- * is run on a single processor (via the `-j1` flag).
- * Putting this hook in finalizeProcess() just minimizes the incorrect result counts.
- * @override
- */
- public function finalizeProcess(CodeBase $code_base): void
- {
- foreach ($this->elements_for_postponed_analysis as $element) {
- self::analyzeAddressableElement($code_base, $element);
- }
- $this->analyzePluginSuppressions($code_base);
- }
-
- private function analyzePluginSuppressions(CodeBase $code_base): void
- {
- $suppression_plugin_set = ConfigPluginSet::instance()->getSuppressionPluginSet();
- if (count($suppression_plugin_set) === 0) {
- return;
- }
-
- foreach ($this->files_for_postponed_analysis as $file_path) {
- foreach ($suppression_plugin_set as $plugin) {
- $this->analyzePluginSuppressionsForFile($code_base, $plugin, $file_path);
- }
- }
- }
-
- /**
- * @return list
- */
- private static function getUnusedSuppressionIgnoreList(): array
- {
- return Config::getValue('plugin_config')['unused_suppression_ignore_list'] ?? [];
- }
-
- private static function getReportOnlyWhitelisted(): bool
- {
- return Config::getValue('plugin_config')['unused_suppression_whitelisted_only'] ?? false;
- }
-
- private static function shouldReportUnusedSuppression(string $issue_type): bool
- {
- $ignore_list = self::getUnusedSuppressionIgnoreList();
- $only_whitelisted = self::getReportOnlyWhitelisted();
- $issue_whitelist = Config::getValue('whitelist_issue_types') ?? [];
-
- return !in_array($issue_type, $ignore_list, true) &&
- (!$only_whitelisted || in_array($issue_type, $issue_whitelist, true));
- }
-
- private function analyzePluginSuppressionsForFile(CodeBase $code_base, SuppressionCapability $plugin, string $relative_file_path): void
- {
- $absolute_file_path = Config::projectPath($relative_file_path);
- $plugin_class = \get_class($plugin);
- $name_pos = \strrpos($plugin_class, '\\');
- if ($name_pos !== false) {
- $plugin_name = \substr($plugin_class, $name_pos + 1);
- } else {
- $plugin_name = $plugin_class;
- }
- $plugin_suppressions = $plugin->getIssueSuppressionList($code_base, $absolute_file_path);
- $plugin_successful_suppressions = $this->plugin_active_suppression_list[$plugin_class][$absolute_file_path] ?? null;
-
- foreach ($plugin_suppressions as $issue_type => $line_list) {
- foreach ($line_list as $lineno => $lineno_of_comment) {
- if (isset($plugin_successful_suppressions[$issue_type][$lineno])) {
- continue;
- }
- // TODO: finish letting plugins suppress UnusedSuppression on other plugins
- $issue_kind = 'UnusedPluginSuppression';
- $message = 'Plugin {STRING_LITERAL} suppresses issue {ISSUETYPE} on this line but this suppression is unused or suppressed elsewhere';
- if ($lineno === 0) {
- $issue_kind = 'UnusedPluginFileSuppression';
- $message = 'Plugin {STRING_LITERAL} suppresses issue {ISSUETYPE} in this file but this suppression is unused or suppressed elsewhere';
- }
- if (isset($plugin_suppressions['UnusedSuppression'][$lineno_of_comment])) {
- continue;
- }
- if (isset($plugin_suppressions[$issue_kind][$lineno_of_comment])) {
- continue;
- }
- if (!self::shouldReportUnusedSuppression($issue_type)) {
- continue;
- }
- self::emitIssue(
- $code_base,
- (new Context())->withFile($relative_file_path)->withLineNumberStart($lineno_of_comment),
- $issue_kind,
- $message,
- [$plugin_name, $issue_type]
- );
- }
- }
- return;
- }
-
- /**
- * @unused-param $code_base
- * @unused-param $file_contents
- * @unused-param $node
- */
- public function beforeAnalyzeFile(
- CodeBase $code_base,
- Context $context,
- string $file_contents,
- Node $node
- ): void {
- $file = $context->getFile();
- $this->files_for_postponed_analysis[$file] = $file;
- }
-
- /**
- * Record the fact that $plugin caused suppressions in $file_path for issue $issue_type due to an annotation around $line
- * @internal
- */
- public function recordPluginSuppression(
- SuppressionCapability $plugin,
- string $file_path,
- string $issue_type,
- int $line
- ): void {
- $file_name = Config::projectPath($file_path);
- $plugin_class = \get_class($plugin);
- $this->plugin_active_suppression_list[$plugin_class][$file_name][$issue_type][$line] = $line;
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new UnusedSuppressionPlugin();
diff --git a/vendor/phan/phan/.phan/plugins/UseReturnValuePlugin.php b/vendor/phan/phan/.phan/plugins/UseReturnValuePlugin.php
deleted file mode 100644
index 43cac72e..00000000
--- a/vendor/phan/phan/.phan/plugins/UseReturnValuePlugin.php
+++ /dev/null
@@ -1,11 +0,0 @@
-withLineNumberStart(self::calculateLine($file_contents, $newline_position)),
- self::CarriageReturn,
- 'The first occurrence of a carriage return ("\r") was seen here. Running "dos2unix" can fix that.'
- );
- }
- $tab_position = strpos($file_contents, "\t");
- if ($tab_position !== false) {
- self::emitIssue(
- $code_base,
- (clone $context)->withLineNumberStart(self::calculateLine($file_contents, $tab_position)),
- self::Tab,
- 'The first occurrence of a tab was seen here. Running "expand" can fix that.'
- );
- }
- if (preg_match('/[ \t]\r?$/mS', $file_contents, $match, PREG_OFFSET_CAPTURE)) {
- self::emitIssue(
- $code_base,
- (clone $context)->withLineNumberStart(self::calculateLine($file_contents, $match[0][1])),
- self::WhitespaceTrailing,
- 'The first occurrence of trailing whitespace was seen here.'
- );
- }
- }
-
- /**
- * @return array
- */
- public function getAutomaticFixers(): array
- {
- return require(__DIR__ . '/WhitespacePlugin/fixers.php');
- }
-}
-
-// Every plugin needs to return an instance of itself at the
-// end of the file in which it's defined.
-return new WhitespacePlugin();
diff --git a/vendor/phan/phan/.phan/plugins/WhitespacePlugin/fixers.php b/vendor/phan/phan/.phan/plugins/WhitespacePlugin/fixers.php
deleted file mode 100644
index e9291b3d..00000000
--- a/vendor/phan/phan/.phan/plugins/WhitespacePlugin/fixers.php
+++ /dev/null
@@ -1,119 +0,0 @@
- static function (CodeBase $unused_code_base, FileCacheEntry $contents, IssueInstance $instance): ?FileEditSet {
- $spaces_per_tab = (int)(Config::getValue('plugin_config')['spaces_per_tab'] ?? 4);
- if ($spaces_per_tab <= 0) {
- $spaces_per_tab = 4;
- }
-
- /**
- * @return Generator
- */
- $compute_edits = static function (string $line_contents, int $byte_offset) use ($spaces_per_tab): Generator {
- preg_match_all('/\t+/', $line_contents, $matches, PREG_OFFSET_CAPTURE);
-
- $effective_space_count = 0;
- $prev_end = 0; // byte offset of previous end of tab sequences
- // run the equivalent of unix's 'unexpand'
- foreach ($matches[0] as $match) {
- $column = $match[1]; // 0-based column
- $effective_space_count += $column - $prev_end;
- $len = strlen($match[0]);
-
- $prev_end = $column + $len;
-
- $replacement_space_count = ($len - 1) * $spaces_per_tab + ($spaces_per_tab - ($effective_space_count % $spaces_per_tab));
-
- $start = $byte_offset + $match[1];
- yield new FileEdit($start, $start + $len, str_repeat(' ', $replacement_space_count));
- }
- };
-
- IssueFixer::debug("Calling tab fixer for {$instance->getFile()}\n");
- $raw_contents = $contents->getContents();
- $byte_offset = 0;
- $edits = [];
- foreach (explode("\n", $raw_contents) as $line_contents) {
- if (strpos($line_contents, "\t") !== false) {
- foreach ($compute_edits(rtrim($line_contents), $byte_offset) as $edit) {
- $edits[] = $edit;
- }
- }
- $byte_offset += strlen($line_contents) + 1;
- }
- if (!$edits) {
- return null;
- }
- IssueFixer::debug("Resulting edits for tab fixes: " . json_encode($edits) . "\n");
- //$line = $instance->getLine();
- return new FileEditSet($edits);
- },
- /**
- * @return ?FileEditSet
- */
- WhitespacePlugin::WhitespaceTrailing => static function (CodeBase $unused_code_base, FileCacheEntry $contents, IssueInstance $instance): ?FileEditSet {
- IssueFixer::debug("Calling trailing whitespace fixer {$instance->getFile()}\n");
- $raw_contents = $contents->getContents();
- $byte_offset = 0;
- $edits = [];
- foreach (explode("\n", $raw_contents) as $line_contents) {
- $new_byte_offset = $byte_offset + strlen($line_contents) + 1;
- $line_contents = rtrim($line_contents, "\r");
- if (preg_match('/\s+$/D', $line_contents, $matches)) {
- $len = strlen($matches[0]);
- $offset = $byte_offset + strlen($line_contents) - $len;
- // Remove 1 or more bytes of trailing whitespace from each line
- $edits[] = new FileEdit($offset, $offset + $len);
- }
- $byte_offset = $new_byte_offset;
- }
- if (!$edits) {
- return null;
- }
- IssueFixer::debug("Resulting edits for trailing whitespace: " . json_encode($edits) . "\n");
- //$line = $instance->getLine();
- return new FileEditSet($edits);
- },
-
- /**
- * @return ?FileEditSet
- */
- WhitespacePlugin::CarriageReturn => static function (CodeBase $unused_code_base, FileCacheEntry $contents, IssueInstance $instance): ?FileEditSet {
- IssueFixer::debug("Calling trailing whitespace fixer {$instance->getFile()}\n");
- $raw_contents = $contents->getContents();
- $byte_offset = 0;
- $edits = [];
- foreach (explode("\n", $raw_contents) as $line_contents) {
- if (substr($line_contents, -1) === "\r") {
- $offset = $byte_offset + strlen($line_contents) - 1;
- // Remove the byte with the carriage return
- $edits[] = new FileEdit($offset, $offset + 1);
- }
- $byte_offset += strlen($line_contents) + 1;
- }
- if (!$edits) {
- return null;
- }
- IssueFixer::debug("Resulting edits for trailing whitespace: " . json_encode($edits) . "\n");
- //$line = $instance->getLine();
- return new FileEditSet($edits);
- },
-];
diff --git a/vendor/phan/phan/.phan/stubs/README.md b/vendor/phan/phan/.phan/stubs/README.md
deleted file mode 100644
index 8e7a4c9f..00000000
--- a/vendor/phan/phan/.phan/stubs/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-Add any stubs to this directory for code that you don't want to parse, but still want
-to expose to phan while analyzing the phan codebase
diff --git a/vendor/phan/phan/.phan/stubs/mbstring.phan_php b/vendor/phan/phan/.phan/stubs/mbstring.phan_php
deleted file mode 100644
index 0a385660..00000000
--- a/vendor/phan/phan/.phan/stubs/mbstring.phan_php
+++ /dev/null
@@ -1,89 +0,0 @@
-
-As a maintainer of Phan, I agree to the [Developer Certificate of Origin](https://github.com/phan/phan/blob/38bf1fd15e39bc668084accb8caab21f09ff75ba/DCO.txt).
-
-**Rasmus Lerdorf**
-As a maintainer of Phan, I agree to the [Developer Certificate of Origin](https://github.com/phan/phan/blob/38bf1fd15e39bc668084accb8caab21f09ff75ba/DCO.txt).
-
-**Tyson Andre**
-As a maintainer of Phan, I agree to the [Developer Certificate of Origin](https://github.com/phan/phan/blob/38bf1fd15e39bc668084accb8caab21f09ff75ba/DCO.txt).
diff --git a/vendor/phan/phan/NEWS.md b/vendor/phan/phan/NEWS.md
deleted file mode 100644
index 539fb67b..00000000
--- a/vendor/phan/phan/NEWS.md
+++ /dev/null
@@ -1,4358 +0,0 @@
-Phan NEWS
-
-Sep 14 2021, Phan 5.2.1
------------------------
-
-New Features:
-- Improve analysis of conditions detecting the empty/non-empty array. (#4523)
- E.g. support `if ($x === []) {...} else {...}`, `if (count($x) > 0) {...} else {...}`, etc.
-- Raise severity of `PhanTypeNonVarPassByRef` to critical. It throws an Error in php 8.0+. (#3830)
-- Infer from conditions such as `in_array($var, $array, true)` that $array is a non-empty array and that $var is of a type found in the elements of $array. (#2511)
-
-Plugins:
-- Emit a proper warning when `InvokePHPNativeSyntaxCheckPlugin` is passed a path to a php binary that is missing or invalid (or if the syntax check crashed). (#4116)
- Previously, Phan would crash with an error such as `fwrite(): write of 8196 bytes failed with errno=32 Broken pipe`
-- Fix false positive `PhanPluginMoreSpecificActualReturnType` for phpdoc array shape return type and returned generic array. (#4531)
-
-Bug fixes:
-- Fix type inference logic that was looking for array specializations rather than array or any array subtype (#4512)
-- Fix false positive `PhanUnreferencedClosure`/`PhanUnreferencedFunction` seen when a closure/function name was passed to a function such as `uasort` that already had a plugin analyzing calls of the closure. (#4090, #4519)
-- Fix false positive/negative `PhanTypeMissingReturn*` instances. (#4537)
-
- The check was wrong and should have been checking for a statement list that throws/exits.
- Return statements can be omitted if a function unconditionally exits.
-
- Also, check for the real `never` return type when emitting issues
-- Fix false positive `PhanPossiblyUndefinedGlobalVariable*` instance when `global $var` is used within a conditional. (#4539)
-- Fix false positive `PhanPluginRedundantAssignmentInLoop` instance when a variable is modified in a catch statement with a break/continue. (#4542)
-- Fix some incorrect line numbers in some plugin issues.
-- Fix crash seen when parsing intersection types containing union types such as `non-empty-array&array<'a'|'b'>` (#4544)
-
-Maintenance:
-- Fix old return type signature for `get_headers` (#3273)
-- Print instructions on how to upgrade php-ast to 1.0.11+ if an outdated version is installed. (#4532)
-
-Aug 26 2021, Phan 5.2.0
------------------------
-
-Plugins:
-- Add `AddNeverReturnTypePlugin`` which will suggest adding a phpdoc return type of `@return never`. (#4468)
-
-Bug fixes:
-- When using the polyfill parser, properly parse nullable class property declarations as nullable. (#4492)
-- Don't emit PhanIncompatibleRealPropertyType for private base property. (#4426)
-- Fix false positive where a method overriding an existing method could be treated as having overrides. (#4502)
-- Consistently support `numeric-string` in all phpdoc
-- Fix false positive `PhanTypeMismatchPropertyDefaultReal` warning for literal integer and `float` typed property. (#4507)
-- Fix false positive warnings such as `PhanImpossibleTypeComparison` about string subtypes not casting to other string subtypes (#4514)
-
-Maintenance:
-- Change internal representation of FunctionSignatureMap delta files.
-- Add a new exit status bit flag to `BlockExitStatusChecker` to indicate that a function will exit or infinitely loop (`STATUS_NORETURN`) (#4468)
-- Internally represent the base function map using php 8.0 signatures instead of php 7.3 - applying deltas backwards has the same result (#4478)
-
-Aug 07 2021, Phan 5.1.0
------------------------
-
-New Features (Analysis):
-- Support running Phan 5 with AST version 80 instead of 85 but warn about php-ast being outdated.
-
-Documentation:
-- Update documentation of `--target-php-version` and `--minimum-target-php-version`
-
-Aug 01 2021, Phan 5.0.0
------------------------
-
-New Features (Analysis):
-- Warn about implicitly nullable parameter intersection types (`function(A&B $paramName = null)`) being a compile error.
- New issue type: `PhanTypeMismatchDefaultIntersection`
-- Emit `PhanTypeMismatchArgumentSuperType` instead of `PhanTypeMismatchArgument` when passing in an object supertype (e.g. ancestor class) of an object instead of a subtype.
- Emit `PhanTypeMismatchReturnSuperType` instead of `PhanTypeMismatchReturn` when returning an object supertype (e.g. ancestor class) of an object instead of a subtype.
-
- Phan 5 starts warning about ancestor classes being incompatible argument or return types in cases where it previously allowed it. (#4413)
-
-Jul 24 2021, Phan 5.0.0a4
--------------------------
-
-New Features (Analysis):
-- Use the enum class declaration type (int, string, or absent) from AST version 85 to check if enum cases are valid. (#4313)
- New issue types: `PhanSyntaxEnumCaseExpectedValue`, `PhanSyntaxEnumCaseUnexpectedValue`, `PhanTypeUnexpectedEnumCaseType`
-
-Backwards incompatible changes:
-- Bump the minimum required AST version from 80 to 85 (Required to analyze php 8.1 enum classes - 'type' was added in AST version 85).
-- In php 8.1, require php-ast 1.0.14 to natively parse AST version 85.
-
-Maintenance:
-- Upgrade tolerant-php-parser from 0.1.0 to 0.1.1 to prepare to support new php syntax in the polyfill/fallback parser. (#4449)
-
-Bug fixes:
-- Fix extraction of reflection attribute target type bitmask from internal attributes such as PHP 8.1's `ReturnTypeWillChange`
-
-Jul 15 2021, Phan 5.0.0a3
--------------------------
-
-New Features (Analysis):
-+ Support parsing php 8.1 intersection types in php-ast 1.0.13+ (#4469)
- (not yet supported in polyfill)
-+ Support parsing php 8.1 first-class callable syntax in unreleased php-ast version (#4464)
-+ Support parsing php 8.1 readonly property modifier (#4463)
-+ Support allowing `new` expressions in php 8.1 readonly property modifier (#4460)
-+ Emit `PhanTypeInvalidArrayKey` and `PhanTypeInvalidArrayKeyValue` for invalid array key literal types or values.
-+ Fix false positive `PhanTypeMissingReturn`/`PhanPluginAlwaysReturnMethod` for method with phpdoc return type of `@return never`
-+ Warn about direct access to static methods or properties on traits (instead of classes using those methods/properties) being deprecated in php 8.1 (#4396)
-+ Add `Stringable` to allowed types for sprintf variadic arguments. This currently requires explicitly implementing Stringable. (#4466)
-
-Bug fixes:
-- Fix a crash when analyzing array literals with invalid key literal values in php 8.1.
-- Fix a crash due to deprecation notices for accessing trait methods/properties directly in php 8.1
-
-Jun 26 2021, Phan 5.0.0a2
--------------------------
-
-New Features (Analysis):
-- Improve accuracy of checks for weak type overlap for redundant condition warnings on `<=`
-- Emit `PhanAccessOverridesFinalConstant` when overriding a final class constant. (#4436)
-- Emit `PhanCompatibleFinalClassConstant` if class constants have the final modifier in codebases supporting a minimum target php version older than 8.1 (#4436)
-- Analyze class constants declared in interfaces as if they were final in php versions prior to 8.1. (#4436)
-- Warn about using $this or superglobals as a parameter or closure use. (#4336)
-
-New Features (CLI)
-- Use `var_representation`/polyfill for generating representations of values in issue messages.
-
-Maintenance:
-- Upgrade tolerant-php-parser from 0.0.23 to 0.1.0 to prepare to support new php syntax in the polyfill/fallback parser. (#4449)
-
-Bug fixes:
-- Properly warn about referencing $this from a `static fn` declared in an instance method. (#4336)
-- Fix a crash getting template parameters of intersection types
-
-May 30 2021, Phan 5.0.0a1
--------------------------
-
-Phan 5 introduces support for intersection types, and improves the accuracy of type casting checks and type inference to catch more issues.
-
-This is the unstable branch for alpha releases of Phan 5. Planned/remaining work is described in https://github.com/phan/phan/issues/4413
-
-If you are migrating from Phan 4, it may be useful to set up or update a Phan [baseline file](https://github.com/phan/phan/wiki/Phan-Config-Settings#baseline_path) to catch issues such as nullable type mismatches.
-https://github.com/phan/phan/wiki/Tutorial-for-Analyzing-a-Large-Sloppy-Code-Base has other advice on setting up suppressions.
-For example, Phan is now more consistently warning about nullable arguments (i.e. both `\X|null` and `?\X`) in a few cases where it may have not warned about passing `\X|null` to a function that expects a non-null type.
-
-If you are using plugins that are not part of Phan itself, they may have issues in Phan 5 due
-to additional required methods being added to many of Phan's methods.
-
-New Features (Analysis):
-+ Support parsing intersection types in phpdoc and checking if intersection types satisfy type comparisons
-+ Support inferring intersection types from conditions such as `instanceof`
-+ Warn about impossible type combinations in phpdoc intersection types.
- New issue types: `PhanImpossibleIntersectionType`
-+ Improve type checking precision for whether a type can cast to another type.
-+ Improve precision of checking if a type is a subtype of another type.
-+ Split out warnings about possibly invalid types for property access (non-object) and possibly invalid classes for property access
- New issue types: `PhanPossiblyUndeclaredPropertyOfClass`
-+ Also check for partially invalid expressions for instance properties during assignment (`PhanPossiblyUndeclaredProperty*`)
-+ Treat `@template-covariant T` as an alias of `@template T` - Previously, that tag was not parsed and `T` would be treated like a (probably undeclared) classlike name. (#4432)
-
-Bug fixes:
-+ Fix wrong expression in issue message for PhanPossiblyNullTypeMismatchProperty (#4427)
-
-Breaking Changes:
-+ Many internal methods now require a mandatory `CodeBase` instance. This will affect third party plugins.
-+ Remove `--language-server-min-diagnostic-delay-ms`.
-
-May 19 2021, Phan 4.0.7 (dev)
------------------------
-
-Language Server/Daemon mode:
-+ Fix an uncaught exception sometimes seen checking for issue suppressions when pcntl is unavailable.
-
-Bug fixes:
-+ Don't emit `PhanCompatibleNonCapturingCatch` when `minimum_target_php_version` is `'8.0'` or newer. (#4433)
-+ Stop ignoring `@return null` and `@param null $paramName` in phpdoc. (#4453)
-
- Stop special casing `@param null` now that Phan allows many other literal types in param types.
-
-May 19 2021, Phan 4.0.6
------------------------
-
-New Features (Analysis):
-+ Partially support php 8.1 enums (#4313)
- (infer the real type is the class type, that they cannot be instantiated, that enum values cannot be reused, and that class constants will exist for enum cases)
-
- New issue types: `PhanReusedEnumCaseValue`, `PhanTypeInstantiateEnum`, `PhanTypeInvalidEnumCaseType`, `PhanSyntaxInconsistentEnum`,
- `PhanInstanceMethodWithNoEnumCases`, `PhanInstanceMethodWithNoEnumCases`, `PhanEnumCannotHaveProperties`, `PhanUnreferencedEnumCase`,
- `PhanEnumForbiddenMagicMethod`.
-+ Support php 7.4 covariant return types and contravariant parameter types when the configured or inferred `minimum_target_php_version` is `'7.4'` or newer (#3795)
-+ Add initial support for the php 8.1 `never` type (in real return types and phpdoc). (#4380)
- Also add support for the phpdoc aliases `no-return`, `never-return`, and `never-returns`
-+ Support casting `iterable` to `Traversable` with `is_object` or `!is_array` checks
-+ Detect more types of expressions that never return when inferring types (e.g. when analyzing `?:`, `??` operators)
-+ Use php 8.1's tentative return types from reflection (`hasTentativeReturnType`, `getTentativeReturnType`) to assume real return types of internal functions/methods (#4400)
-
- This can be disabled by setting `use_tentative_return_type` to `false` (e.g. when using subclasses of internal classes that return incompatible types).
-+ Warn about modifying properties of classes that are immutable at runtime (enums, internal classes such as `\Closure` and `\WeakRef`, etc.) (#4313)
- New issue type: `PhanTypeModifyImmutableObjectProperty`
-
-Dead code detection:
-+ Infer that functions with a return type of `never` (or phpdoc aliases such as `no-return`) are unreachable when performing control flow analysis.
- This can be disabled by setting `dead_code_detection_treat_never_type_as_unreachable` to false
-
- Note that control flow is only affected when `UseReturnValuePlugin` is enabled.
-
-Plugins:
-+ In `UseReturnValuePlugin`, also start warning about when using the result of an expression that evaluates to `never`
- New issue types: `PhanUseReturnValueOfNever`
-
-Bug fixes:
-+ As part of the work on php 7.4 contravariant parameter types,
- don't automatically inherit inferred parameter types from ancestor classlikes when (1) there is no `@param` tag with a type for the parameter on the overriding method and (2) the ancestor parameter types are a subtype of the real parameter types unless
-
- 1. `@inheritDoc` is used.
- 2. This is a generic array type such as `array` that is a specialization of an array type.
- If you want to indicate that the overriding method can be any array type, add `@param array $paramName`.
-+ Change composer.json dependency on `composer/xdebug-handler` from `^2.0` to `^1.1|2.0` to avoid conflicting with other libraries or applications that depend on xdebug-handler 1.x (#4382)
-+ Support parsing multiple declare directives in the polyfill/fallback parser (#4160)
-
-Apr 29 2021, Phan 4.0.5
------------------------
-
-New Features (Analysis):
-+ Fix handling of some redundant condition checks involving `non-null-mixed` and `null` (#4388, #4391)
-+ Emit `PhanCompatibleSerializeInterfaceDeprecated` when a class implements Serializable without also implementing the `__serialize` and `__unserialize` methods as well. (#4387)
- PHP 8.1 deprecates the `Serializable` interface when `__serialize` and `__unserialize` aren't also implemented to be used instead of `serialize`/`unserialize`.
-
-Maintenance:
-+ Warn about running phan with multiple processes without pcntl before the analysis phase starts.
-+ Start implementing `__serialize`/`__unserialize` in Phan itself in places that use `Serializable`.
-+ Use different static variables in different subclasses of `Phan\Language\Type` to account for changes in static variable inheritance in php 8.1. (#4379)
-
-Bug fixes:
-+ Allow `?T` to be used in parameter/property types with `@template T` (#4388)
-
-Apr 14 2021, Phan 4.0.4
------------------------
-
-New Features (CLI, Config):
-+ Support `--doc-comment` flag on `tool/make_stubs` to emit the doc comments Phan
- is using for internal elements along with the stubs.
- (these are the doc comments Phan would use for hover text in the language server)
-+ Allow `target_php_version` and `minimum_target_php_version` to be 8.1 or newer.
-
-New Features (Analysis):
-+ Support the php 8.1 array unpacking with string keys RFC (#4358).
- Don't emit warnings about array unpacking with string keys when `minimum_target_php_version` is '8.1' or newer.
-+ Support php 8.1 `array_is_list(array $array): bool` conditional and its negation. (#4348)
-+ Fix some false positive issues when trying to eagerly evaluate expressions without emitting issues (#4377)
-
-Bug fixes:
-+ Fix crash analyzing union type in trait (#4383)
-
-Maintenance:
-+ Update from xdebug-handler 1.x to 2.0.0 to support Xdebug 3 (#4382)
-
-Plugins:
-+ Cache plugin instances in `ConfigPluginSet`. This is useful for unit testing stateless plugins which declare the plugin class in the same file returning the plugin instance. (#4352)
-
-Jan 29 2021, Phan 4.0.3
------------------------
-
-New Features:
-+ Support inferring iterable value types/keys from `getIterator` returning an ordinary `Iterator` (previously only inferred types for subclasses of Iterator)
-
-Bug fixes:
-+ Fix crash when rendering `[...$x]` in an issue message (#4351)
-+ Infer that `if ($x)` `converts non-null-mixed` to `non-empty-mixed`
-+ Fix false positive warning case for PhanParamSignaturePHPDocMismatchParamType when a phpdoc parameter has a default value (#4357)
-+ Properly warn about accessing a private class constant as `self::CONST_NAME` from inside of a subclass of the constant's declaring class (#4360)
-+ Properly infer `allow_method_param_type_widening` from `minimum_target_php_version` to avoid false positive `PhanParamSignatureRealMismatchHasNoParamType`.
-
-Jan 09 2021, Phan 4.0.2
------------------------
-
-New Features:
-+ Improve suggestions for `PhanUndeclaredThis` inside of static methods/closures (#4336)
-
-Language Server/Daemon mode:
-+ Properly generate code completions for `::` and `->` at the end of a line on files using Windows line endings(`\r\n`) instead of Unix newlines(`\n`) on any OS (#4345)
- Previously, those were not completed.
-
-Bug fixes:
-+ Fix false positive `PhanParamSignatureMismatch` for variadic overriding a function using `func_get_args()` (#4340)
-+ Don't emit PhanTypeNoPropertiesForeach for the Countable interface on its own. (#4342)
-+ Fix false positive type mismatch warning for casts from callable-object/callable-array/callable-string
- to `function(paramtypes):returntype` (#4343)
-
-Dec 31 2020, Phan 4.0.1
------------------------
-
-New Features:
-+ Emit `PhanCompatibleAssertDeclaration` when declaring a function called `assert`. (#4333)
-
-Bug fixes:
-+ Fix false positive `PhanInvalidConstantExpression` for named arguments in attributes (#4334)
-
-Merge changes from Phan 3.2.10
-
-Dec 23 2020, Phan 4.0.0
------------------------
-
-+ Merge changes from Phan 3.2.9.
-+ Relax minimum php-ast restrictions when polyfill is used for Phan 4.
-+ Fix conflicting class constant seen in polyfill when php-ast 1.0.6 was installed.
-
-The Phan v4 release line has the following changes from Phan 3:
-- Bump the minimum required AST version from 70 to 80 (Required to analyze php 8.0 attributes - the rest of the php 8.0 syntax changes are supported in both Phan 3 and Phan 4).
- A few third party plugins may be affected by the increase of the AST version.
-- Supports analyzing whether `#[...]` attributes are used properly when run with PHP 8.0+
-
-Dec 23 2020, Phan 4.0.0-RC2
----------------------------
-
-Merge changes from Phan 3.2.8.
-
-Dec 13 2020, Phan 4.0.0-RC1
----------------------------
-
-Merge changes from Phan 3.2.7.
-
-Nov 27 2020, Phan 4.0.0-alpha5
-------------------------------
-
-Merge changes from Phan 3.2.6.
-
-Nov 26 2020, Phan 4.0.0-alpha4
-------------------------------
-
-Merge changes from Phan 3.2.5.
-
-Nov 12 2020, Phan 4.0.0-alpha3
-------------------------------
-
-Merge changes from Phan 3.2.4.
-
-Oct 12 2020, Phan 4.0.0-alpha2
-------------------------------
-
-Merge changes from Phan 3.2.3.
-
-Sep 19 2020, Phan 4.0.0-alpha1
-------------------------------
-
-New features (Analysis):
-+ Support analyzing PHP 8.0 attributes when Phan is run with php 8.0 or newer.
- Warn if the attribute syntax is likely to be incompatible in php 7.
- Warn if using attributes incorrectly or with incorrect argument lists.
-
- New issue types: `PhanCompatibleAttributeGroupOnSameLine`, `PhanCompatibleAttributeGroupOnMultipleLines`,
- `PhanAttributeNonAttribute`, `PhanAttributeNonClass`, `PhanAttributeNonRepeatable`,
- `PhanUndeclaredClassAttribute`, `PhanAttributeWrongTarget`, `PhanAccessNonPublicAttribute`.
-
-Backwards incompatible changes:
-+ Switch from AST version 70 to AST version 80.
- `php-ast` should be upgraded to version 1.0.10-dev or newer.
-+ Drop the no-op `--polyfill-parse-all-doc-comments` flag.
-
-Miscellaneous:
-+ Make various classes from Phan implement `Stringable`.
-
-Dec 31 2020, Phan 3.2.10 (dev)
------------------------
-
-Bug fixes:
-+ Fix false positive PhanPossiblyFalseTypeReturn with strict type checking for substr when target php version is 8.0+ (#4335)
-
-Dec 26 2020, Phan 3.2.9
------------------------
-
-Bug fixes:
-+ Fix a few parameter names for issue messages (#4316)
-+ Fix bug that could cause Phan not to warn about `SomeClassWithoutConstruct::__construct`
- in some edge cases. (#4323)
-+ Properly infer `self` is referring to the current object context even when the object context is unknown in namespaces. (#4070)
-
-Deprecations:
-+ Emit a deprecation notice when running this in PHP 7 and php-ast < 1.0.7. (#4189)
- This can be suppressed by setting the environment variable `PHAN_SUPPRESS_AST_DEPRECATION=1`.
-
-Dec 23 2020, Phan 3.2.8
------------------------
-
-Bug fixes:
-+ Fix false positive PhanUnusedVariable for variable redefined in loop (#4301)
-+ Fix handling of `-z`/`--signature-compatibility` - that option now enables `analyze_signature_compatibility` instead of disabling it. (#4303)
-+ Fix possible `PhanCoalescingNeverUndefined` for variable defined in catch block (#4305)
-+ Don't emit `PhanCompatibleConstructorPropertyPromotion` when `minimum_target_php_version` is 8.0 or newer. (#4307)
-+ Infer that PHP 8.0 constructor property promotion's properties have write references. (#4308)
- They are written to by the constructor.
-+ Inherit phpdoc parameter types for the property declaration in php 8.0 constructor property promotion (#4311)
-
-Dec 13 2020, Phan 3.2.7
------------------------
-
-New features (Analysis):
-+ Update real parameter names to match php 8.0's parameter names for php's own internal methods (including variadics and those with multiple signatures). (#4263)
- Update real parameter names, types, and return types for some PECL extensions.
-+ Raise the severity of some php 8.0 incompatibility issues to critical.
-+ Fix handling of references after renaming variadic reference parameters of `fscanf`/`scanf`/`mb_convert_variables`
-+ Mention if PhanUndeclaredFunction is potentially caused by the target php version being too old. (#4230)
-+ Improve real type inference for conditionals on literal types (#4288)
-+ Change the way the real type set of array access is inferred for mixes of array shapes and arrays (#4296)
-+ Emit `PhanSuspiciousNamedArgumentVariadicInternal` when using named arguments with variadic parameters of internal functions that are
- not among the few reflection functions known to support named arguments. (#4284)
-+ Don't suggest instance properties as alternatives to undefined variables inside of static methods.
-
-Bug fixes:
-+ Support a `non-null-mixed` type and change the way analysis involving nullability is checked for `mixed` (phpdoc and real). (#4278, #4276)
-
-Nov 27 2020, Phan 3.2.6
------------------------
-
-New features (Analysis):
-+ Update many more real parameter names to match php 8.0's parameter names for php's own internal methods. (#4263)
-+ Infer that an instance property exists for PHP 8.0 constructor property promotion. (#3938)
-+ Infer types of properties from arguments passed into constructor for PHP 8.0 constructor property promotion. (#3938)
-+ Emit `PhanInvalidNode` and `PhanRedefineProperty` when misusing syntax for constructor property promotion. (#3938)
-+ Emit `PhanCompatibleConstructorPropertyPromotion` when constructor property promotion is used. (#3938)
-+ Emit `PhanSuspiciousMagicConstant` when using `__FUNCTION__` inside of a closure. (#4222)
-
-Nov 26 2020, Phan 3.2.5
------------------------
-
-New features (Analysis):
-+ Convert more internal function signature types from resource to the new object types with `target_php_version` of `8.0`+ (#4245, #4246)
-+ Make internal function signature types and counts consistent with PHP 8.0's `.php.stub` files used to generate some reflection information.
-
-Bug fixes
-+ Fix logic error inferring the real key type of lists and arrays
- and infer that the real union type of arrays is `array`
- when all keys have real type int. (#4251)
-+ Fix rendering of processed item count in `--long-progress-bar`.
-
-Miscellaneous:
-+ Rename OCI-Collection and OCI-Lob to OCICollection and OCILob internally to prepare for php 8 support.
- (Previously `OCI_Collection` and `OCI_Lob` were used to be valid fqsens internally)
-
-Nov 12 2020, Phan 3.2.4
------------------------
-
-New features (Analysis):
-+ Partially support `self` and `static` in phpdoc types. (#4226)
- This support is incomplete and may run into issues with inheritance.
-
-Bug fixes:
-+ Properly infer the literal string value of `__FUNCTION__` for global functions in namespaces (#4231)
-+ Fix false positive `PhanPossiblyInfiniteLoop` for `do {} while (false);` that is unchangeably false (#4236)
-+ Infer that array_shift and array_pop return null when the passed in array could be empty, not false. (#4239)
-+ Handle `PhpToken::getAll()` getting renamed to `PhpToken::tokenize()` in PHP 8.0.0RC4. (#4189)
-
-Oct 12 2020, Phan 3.2.3
------------------------
-
-New features (CLI, Config):
-+ Add `light_high_contrast` support for `--color-scheme`. (#4203)
- This may be useful in terminals or CI web pages that use white backgrounds.
-
-New features (Analysis):
-+ Infer that `parent::someMethodReturningStaticType()` is a subtype of the current class, not just the parent class. (#4202)
-+ Support phpdoc `@abstract` or `@phan-abstract` on non-abstract class constants, properties, and methods
- to indicate that the intent is for non-abstract subclasses to override the definition. (#2278, #2285)
- New issue types: `PhanCommentAbstractOnInheritedConstant`, `PhanCommentAbstractOnInheritedProperty`, `PhanCommentOverrideOnNonOverrideProperty`
-
- For example, code using `static::SOME_CONST` or `static::$SOME_PROPERTY` or `$this->someMethod()`
- may declare a placeholder `@abstract` constant/property/method,
- and use this annotation to ensure that all non-abstract subclasses override the constant/property/method
- (if using real abstract methods is not practical for a use case)
-+ Warn about `@override` on properties that do not override an ancestor's property definition.
- New issue type: `PhanCommentOverrideOnNonOverrideProperty`.
- (Phan already warns for constants and methods)
-
-Plugins:
-+ Emit `PhanPluginUseReturnValueGenerator` for calling a function returning a generator without using the returned Generator. (#4013)
-
-Bug fixes:
-+ Properly analyze the right hand side for `$cond || throw ...;` (e.g. emit `PhanCompatibleThrowException`) (#4199)
-+ Don't infer implications of `left || right` on the right hand expression when the right hand side has no side effects. (#4199)
-+ Emit `PhanTypeInvalidThrowStatementNonThrowable` for thrown expressions that definitely aren't `\Throwable`
- even when `warn_about_undocumented_throw_statements` is disabled or the throw expression is in the top level scope. (#4200)
-+ Increase the minimum requirements in composer.json to what Phan actually requires. (#4217)
-
-Sep 19 2020, Phan 3.2.2
------------------------
-
-New features (Analysis):
-+ Improve handling of missing argument info when analyzing calls to functions/methods.
- This will result in better issue detection for inherited methods or methods which Phan does not have type info for.
-
-Bug fixes:
-+ Fix false positive `PhanUnusedVariable` in `for (; $loop; ...) {}` (#4191)
-+ Don't infer defaults of ancestor class properties when analyzing the implementation of `__construct`. (#4195)
- This is only affects projects where the config setting `infer_default_properties_in_construct` is overridden to be enabled.
-+ Check `minimum_target_php_version` for more compatibility warnings about parameter types.
-
-Sep 13 2020, Phan 3.2.1
------------------------
-
-New features (Analysis):
-+ Don't compare parameter types against alternate method signatures which have too many required parameters.
- (e.g. warn about `max([])` but not `max([], [1])`)
-+ Support `/** @unused-param $param_name */` in doc comments as an additional way to support suppressing warnings about individual parameters being unused.
-+ Warn about loop conditions that potentially don't change due to the body of the loop.
- This check uses heuristics and is prone to false positives.
- New issue types: `PhanPossiblyInfiniteLoop`
-+ Treat `unset($x);` as shadowing variable definitions during dead code detection.
-+ Change the way `$i++`, `--$i`, etc. are analyzed during dead code detection
-+ Properly enable `allow_method_param_type_widening` by default when the inferred `minimum_target_php_version` is `'7.2'` or newer. (#4168)
-+ Start preparing for switching to AST version 80 in an upcoming Phan 4 release. (#4167)`
-
-Bug fixes:
-+ Fix various crashes in edge cases.
-+ Fix crash with adjacent named labels for gotos.
-+ Fix false positive unused parameter warning with php 8.0 constructor property promotion.
-
-Plugins:
-+ Warn about `#` comments in `PHPDocInWrongCommentPlugin` if they're not used for the expected `#[` syntax of php 8.0 attributes.
-
-Maintenance:
-+ Update polyfill/fallback parser to properly skip attributes in php 8.0.
- The upcoming Phan 4 release will support analyzing attributes, which requires AST version 80.
-
-Aug 25 2020, Phan 3.2.0
------------------------
-
-New features (CLI, Config):
-+ **Add the `minimum_target_php_version` config setting and `--minimum-target-php-version` CLI flag.** (#3939)
- Phan will use this instead of `target_php_version` for some backwards compatibility checks
- (i.e. to check that the feature in question is supported by the oldest php version the project supports).
-
- If this is not configured, Phan will attempt to use the composer.json version ranges if they are available.
- Otherwise, `target_php_version` will be used.
-
- Phan will use `target_php_version` instead if `minimum_target_php_version` is greater than `target_php_version`.
-
- Update various checks to use `minimum_target_php_version` instead of `target_php_version`.
-+ Add `--always-exit-successfully-after-analysis` flag.
- By default, phan exits with a non-zero exit code if 1 or more unsuppressed issues were reported.
- When this CLI flag is set, phan will instead exit with exit code 0 as long as the analysis completed.
-+ Include the installed php-ast version and the php version used to run Phan in the output of `phan --version`. (#4147)
-
-New features (Analysis):
-+ Emit `PhanCompatibleArrowFunction` if using arrow functions with a minimum target php version older than php 7.4.
-+ Emit `PhanCompatibleMatchExpression` if using match expressions with a minimum target php version older than php 8.0.
-+ Emit `PhanNoopRepeatedSilenceOperator` for `@@expr` or `@(@expr)`.
- This is less efficient and only makes a difference in extremely rare edge cases.
-+ Avoid false positives for bitwise operations on floats such as unsigned 64-bit numbers (#4106)
-+ Incomplete support for analyzing calls with php 8.0's named arguments. (#4037)
- New issue types: `PhanUndeclaredNamedArgument*`, `PhanDuplicateNamedArgument*`,
- `PhanMissingNamedArgument*`,
- `PhanDefinitelyDuplicateNamedArgument`, `PhanPositionalArgumentAfterNamedArgument`, and
- `PhanArgumentUnpackingUsedWithNamedArgument`, `PhanSuspiciousNamedArgumentForVariadic`
-+ Incomplete support for analyzing uses of PHP 8.0's nullsafe operator(`?->`) for property reads and method calls. (#4067)
-+ Warn about using `@var` where `@param` should be used (#1366)
-+ Treat undefined variables as definitely null/undefined in various places
- when they are used outside of loops and the global scope. (#4148)
-+ Don't warn about undeclared global constants after `defined()` conditions. (#3337)
- Phan will infer a broad range of types for these constants that can't be narrowed.
-+ Parse `lowercase-string` and `non-empty-lowercase-string` in phpdoc for compatibility, but treat them like ordinary strings.
-+ Emit `PhanCompatibleTrailingCommaParameterList` and `PhanCompatibleTrailingCommaArgumentList` **when the polyfill is used**. (#2269)
- Trailing commas in argument lists require a minimum target version of php 7.3+,
- and trailing commas in parameters or closure use lists require php 8.0+.
-
- This is only available in the polyfill because the native `php-ast` parser
- exposes the information that php itself tracks internally,
- and php deliberately does not track whether any of these node types have trailing commas.
-
- There are already other ways to detect these backwards compatibility issues,
- such as `--native-syntax-check path/to/php7.x`.
-+ Warn about variable definitions that are unused due to fallthroughs in switch statements. (#4162)
-
-Plugins:
-+ Add more aliases to `DeprecateAliasPlugin`
-
-Miscellaneous:
-+ Raise the severity of `PhanUndeclaredConstant` and `PhanStaticCallToNonStatic` from normal to critical.
- Undeclared constants will become a thrown `Error` at runtime in PHP 8.0+.
-
-Bug fixes:
-+ Suppress `PhanParamNameIndicatingUnused` in files loaded from `autoload_internal_extension_signatures`
-+ Improve compatibility of polyfill/fallback parser with php 8.0
-+ Also try to check against the realpath() of the current working directory when converting absolute paths
- to relative paths.
-+ Generate baseline files with `/` instead of `\` on Windows in `--save-baseline` (#4149)
-
-Jul 31 2020, Phan 3.1.1
------------------------
-
-New features (CLI, Config):
-+ Add `--baseline-summary-type={ordered_by_count,ordered_by_type,none}` to control the generation
- of the summary comment generated by `--save-baseline=path/to/baseline.php` (#4044)
- (overrides the new `baseline_summary_type` config).
- The default comment summary (`ordered_by_count`) is prone to merge conflicts in large projects.
- This does not affect analysis.
-+ Add `tool/phan_repl_helpers.php`, a prototype tool that adds some functionality to `php -a`.
- It can be required by running `require_once 'path/to/phan/tool/phan_repl_helpers.php'` during an interactive session.
-
- - This replaces the readline code completion and adds autocomplete for `->` on global variables.
- This is currently buggy and very limited, and is missing some of the code completion functionality that is available in `php -a`.
- (And it's missing a lot of the code completion functionality from the language server)
- - This adds a global function `help($element_name_or_object)`. Run `help('help')` for usage and examples.
- - Future releases may advantage of Phan's parsing/analysis capabilities in more ways.
- - Several alternatives to the php shell already exist, such as [psysh](https://github.com/bobthecow/psysh).
- `tool/phan_repl_helpers.php` is an experiment in augmenting the interactive php shell, not an alternative shell.
-+ Update progress bar during class analysis phase. (#4099)
-
-New features (Analysis):
-+ Support casting `iterable` to `iterable` (#4089)
-+ Change phrasing for `analyze` phase in `--long-progress-bar` with `--analyze-twice`
-+ Add `PhanParamNameIndicatingUnused` and `PhanParamNameIndicatingUnusedInClosure`
- to indicate that using parameter names(`$unused*`, `$_`) to indicate to Phan that a parameter is unused is no longer recommended. (#4097)
- Suppressions or the `@param [Type] $param_name @unused-param` syntax can be used instead.
- PHP 8.0 will introduce named argument support.
-+ Add a message to `PhanParamSignatureMismatch` indicating the cause of the issue being emitted. (#4103)
- Note that `PhanParamSignaturePHPDocMismatch*` and `PhanParamSignatureReal*` have fewer false positives.
-+ Warn about invalid types in class constants. (#4104)
- Emit `PhanUndeclaredTypeClassConstant` if undeclared types are seen in phpdoc for class constants.
- Emit `PhanCommentObjectInClassConstantType` if object types are seen in phpdoc for class constants.
-+ Warn about `iterable` containing undeclared classes. (#4104)
-
-Language Server/Daemon mode:
-+ Include PHP keywords such as `__FILE__`, `switch`, `function`, etc. in suggestions for code completions.
-
-Plugins:
-+ Make `DuplicateExpressionPlugin` warn if adjacent statements are identical. (#4074)
- New issue types: `PhanPluginDuplicateAdjacentStatement`.
-+ Consistently make `PhanPluginPrintfNonexistentArgument` have critical severity. (#4080)
- Passing too few format string arguments (e.g. `printf("%s %s", "Hello,")`) will be an `ArgumentCountError` in PHP 8.
-
-Bug fixes:
-+ Fix false positive `PhanParamSignatureMismatch` issues (#4103)
-+ Fix false positive `PhanParamSignaturePHPDocMismatchHasParamType` seen for magic method override of a real method with no real signature types. (#4103)
-
-Jul 16 2020, Phan 3.1.0
------------------------
-
-New features (CLI, Config):
-+ Add `--output-mode=verbose` to print the line of code which caused the issue to be emitted after the textual issue output.
- This is only emitted if the line is not whitespace, could be read, and does not exceed the config setting `max_verbose_snippet_length`.
-+ Add `included_extension_subset` to limit Phan to using the reflection information to a subset of available extensions. (#4015)
- This can be used to make Phan warn about using constants/functions/classes that are not in the target environment or dependency list
- of a given PHP project/library.
- Note that this may cause issues if a class from an extension in this list depends on classes from another extension that is outside of this list.
-
-New features (Analysis):
-+ Don't emit `PhanTypeInvalidLeftOperandOfBitwiseOp` and other binary operation warnings for `mixed`
-+ Emit `PhanIncompatibleRealPropertyType` when real property types are incompatible (#4016)
-+ Change the way `PhanIncompatibleCompositionProp` is checked for. (#4024)
- Only emit it when the property was redeclared in an inherited trait.
-+ Emit `PhanProvidingUnusedParameter` when passing an argument to a function with an optional parameter named `$unused*` or `$_`. (#4026)
- This can also be suppressed on the functionlike's declaration, and should be suppressed if this does not match the project's parameter naming.
- This is limited to functions with no overrides.
-+ Emit `PhanParamTooFewInPHPDoc` when a parameter that is marked with `@phan-mandatory-param` is not passed in. (#4026)
- This is useful when needing to preserve method signature compatibility in a method override, or when a parameter will become mandatory in a future backwards incompatible release of a project.
-+ Emit `PhanTypeMismatchArgumentProbablyReal` instead of `PhanTypeMismatchArgument` when the inferred real type of an argument has nothing in common with the phpdoc type of a user-defined function/method.
- This is usually a stronger indicator that the phpdoc parameter type is inaccurate/incomplete or the argument is incorrect.
- (Overall, fixing phpdoc errors may help ensure compatibility long-term if the library/framework being used moves to real types (e.g. php 8.0 union types) in the future.)
-
- **Note that Phan provides many ways to suppress issues (including the `--save-baseline=.phan/baseline.php` and `--load-baseline=.phan/baseline.php` functionality) in case
- the switch to `ProbablyReal` introduces too many new issues in your codebase.**
- (The new `ProbablyReal` issues are more severe than the original issue types.
- When they're suppressed, the original less severe issue types will also be suppressed)
-+ Emit `PhanTypeMismatchReturnProbablyReal` instead of `PhanTypeMismatchReturn` when the inferred real return type has nothing in common with the declared phpdoc return type of a user-defined function/method. (#4028)
-+ Emit `PhanTypeMismatchPropertyProbablyReal` instead of `PhanTypeMismatchProperty` when the inferred assigned property type has nothing in common with a property's declared phpdoc type. (#4029)
-+ Emit `PhanTypeMismatchArgumentInternalProbablyReal` instead of `PhanTypeMismatchArgumentInternal` in a few more cases.
-+ Be stricter about checking if callables/closures have anything in common with other types.
-+ Preserve more specific phpdoc types when the php 8.0 `mixed` type is part of the real type set.
-+ Also emit `PhanPluginUseReturnValueNoopVoid` when a function/method's return type is implicitly void (#4049)
-+ Support `@param MyType $name one line description @unused-param` to suppress warnings about individual unused method parameters.
- This is a new alias of `@phan-unused-param`.
-+ Support analyzing [PHP 8.0's match expression](https://wiki.php.net/rfc/match_expression_v2). (#3970)
-
-Plugins:
-+ Warn and skip checks instead of crashing when running `InlineHTMLPlugin` without the `tokenizer` extension installed. (#3998)
-+ Support throwing `\Phan\PluginV3\UnloadablePluginException` instead of returning a plugin object in plugin files.
-+ When a plugin registers for a method definition with `AnalyzeFunctionCallCapability`, automatically register the same closure for all classlikes using the same inherited definition of that method. (#4021)
-+ Add `UnsafeCodePlugin` to warn about uses of `eval` or the backtick string shorthand for `shell_exec()`.
-+ Add `DeprecateAliasPlugin` to mark known aliases such as `sizeof()` or `join()` as deprecated.
- Implement support for `--automatic-fix`.
-+ Add `PHPDocInWrongCommentPlugin` to warn about using `/*` instead of `/**` with phpdoc annotations supported by Phan.
-
-Miscellaneous
-+ Update more unit tests for php 8.0.
-+ Emit a warning and load an extremely limited polyfill for `filter_var` to parse integers/floats if the `filter` extension is not loaded.
-
-Bug Fixes:
-+ Make suppressions on trait methods/properties consistently apply to the inherited definitions from classes/traits using those traits.
-+ Fix false positive where Phan would think that union types with real types containing `int` and other types had an impossible condition.
- Fix another false positive checking if `?A|?B` can cast to another union type.
-
-Jul 03 2020, Phan 3.0.5
------------------------
-
-New features(CLI, Configs):
-+ Add `-X` as an alias of `--dead-code-detection-prefer-false-positive`.
-
-New features(Analysis):
-+ Emit `PhanTypeInvalidLeftOperandOfBitwiseOp` and `PhanTypeInvalidRightOperandOfBitwiseOp` for argument types to bitwise operations other than `int|string`.
- (affects `^`, `|`, `&`, `^=`, `|=`, `&=`)
-
-Bug fixes:
-+ Fix false positives in php 8.0+ type checking against the real `mixed` type. (#3994)
-+ Fix unintentionally enabling GC when the `pcntl` extension is not enabled. (#4000)
- It should only be enabled when running in daemon mode or as a language server.
-
-Jul 01 2020, Phan 3.0.4
------------------------
-
-New features(Analysis):
-+ Emit `PhanTypeVoidExpression` when using an expression returning `void` in places such as array keys/values.
-+ More accurately infer unspecified types when closures are used with `array_map` (#3973)
-+ Don't flatten array shapes and literal values passed to closures when analyzing closures. (Continue flattening for methods and global functions)
-+ Link to documentation for internal stubs as a suggestion for undeclared class issues when Phan has type information related to the class in its signature files.
- See https://github.com/phan/phan/wiki/Frequently-Asked-Questions#undeclared_element
-+ Properly render the default values if available(`ReflectionParameter->isDefaultValueAvailable()`) in php 8.0+.
-+ Properly set the real union types based on reflection information for functions/methods in more edge cases.
-+ Properly infer that union types containing the empty array shape are possibly empty after sorting (#3980)
-+ Infer a more accurate real type set from unary ops `~`, `+`, and `-` (#3991)
-+ Improve ability to infer assignments within true branch of complex expressions in conditions such as `if (A && complex_expression) { } else { }` (#3992)
-
-Plugins:
-+ Add `ShortArrayPlugin`, to suggest using `[]` instead of `array()` or `list()`
-+ In `DuplicateExpressionPlugin`, emit `PhanPluginDuplicateExpressionAssignmentOperation` if `X = X op Y` is seen and it can be converted to `X op= Y` (#3985)
- (excluding `??=` for now)
-+ Add `SimplifyExpressionPlugin`, to suggest shortening expressions such as `$realBool ? true : false` or `$realBool === false`
-+ Add `RemoveDebugStatementPlugin`, to suggest removing debugging output statements such as `echo`, `print`, `printf`, `fwrite(STDERR, ...)`, `var_export(...)`, inline html, etc.
- This is only useful in applications or libraries that print output in only a few places, as a sanity check that debugging statements are not accidentally left in code.
-
-Bug fixes:
-+ Treat `@method static foo()` as an instance method returning the union type `static` (#3981)
- Previously, Phan treated it like a static method with type `void` based on an earlier phpdoc spec.
-+ Fix the way that Phan inferred the `finally` block's exit status affected the `try` block. (#3987)
-
-Jun 21 2020, Phan 3.0.3
------------------------
-
-New features(Analysis):
-+ Include the most generic types when conditions such as `is_string()` to union types containing `mixed` (#3947)
-+ More aggressively infer that `while` and `for` loop bodies are executed at least once in functions outside of other loops (#3948)
-+ Infer the union type of `!$expr` from the type of `$expr` (#3948)
-+ Re-enable `simplify_ast` by default in `.phan/config.php` (#3944, #3945)
-+ Avoid false positives in `--constant-variable-detection` for `++`/`--`
-+ Make `if (!$nullableValue) { }` remove truthy literal scalar values such as `'value'` and `1` and `1.0` when they're nullable
-+ Emit `PhanTypeVoidArgument` when passing a void return value as a function argument (#3961)
-+ Correctly merge the possible union types of pass-by-reference variables (#3959)
-+ Improve php 8.0-dev shim support. Fix checking for array references and closure use references in php 8.0+.
-+ More aggressively check if expression results should be used for conditionals and binary operators.
-
-Plugins:
-+ Add `ConstantVariablePlugin` to point out places where variables are read when they have only one possible scalar value. (#3953)
- This may help detect logic errors such as `$x === null ? json_encode($x) : 'default'` or code that could be simplified,
- but most issues it emits wouldn't be worth fixing due to hurting readability or being false positives.
-+ Add `MergeVariableInfoCapability` for plugins to hook into ContextMergeVisitor and update data for a variable
- when merging the outcome of different scopes. (#3956)
-+ Make `UseReturnValuePlugin` check if a method is declared as pure before using the dynamic checks based on percentage of
- calls where the return value is used, if that option is enabled.
-+ In `DuplicateArrayKeyPlugin`, properly check for duplicate non-scalar cases.
-
-Language Server/Daemon mode:
-+ Fix bug where the Phan daemon would crash on the next request after analyzing a file outside of the project being analyzed,
- when pcntl was disabled or unavailable (#3954)
-
-Bug fixes:
-+ Fix `PhanDebugAnnotation` output for variables after the first one in `@phan-debug-var $a, $b` (#3943)
-+ Use the correct constant to check if closure use variables are references in php 8.0+
-
-Miscellaneous:
-+ Update function signature stubs for the `memcache` PECL (#3841)
-
-Jun 07 2020, Phan 3.0.2
------------------------
-
-New features(CLI, Configs):
-+ Add `--dead-code-detection-prefer-false-positive` to run dead code detection,
- erring on the side of reporting potentially dead code even when it is possibly not dead.
- (e.g. when methods of unknown objects are invoked, don't mark all methods with the same name as potentially used)
-
-New features(Analysis):
-+ Fix false positive `PhanAbstractStaticMethodCall` (#3935)
- Also, properly emit `PhanAbstractStaticMethodCall` for a variable containing a string class name.
-
-Plugins:
-+ Fix incorrect check and suggestion for `PregRegexCheckerPlugin`'s warning if
- `$` allows an optional newline before the end of the string when the configuration includes
- `['plugin_config' => ['regex_warn_if_newline_allowed_at_end' => true]]`) (#3938)
-+ Add `BeforeLoopBodyAnalysisCapability` for plugins to analyze loop conditions before the body (#3936)
-+ Warn about suspicious param order for `str_contains`, `str_ends_with`, and `str_starts_with` in `SuspiciousParamOrderPlugin` (#3934)
-
-Bug fixes:
-+ Don't report unreferenced class properties of internal stub files during dead code detection
- (i.e. files in `autoload_internal_extension_signatures`).
-+ Don't remove the leading directory separator when attempting to convert a file outside the project to a relative path.
- (in cases where the directory is different but has the project's name as a prefix)
-
-Jun 04 2020, Phan 3.0.1
------------------------
-
-New features(Analysis):
-+ Support analysis of php 8.0's `mixed` type (#3899)
- New issue types: `PhanCompatibleMixedType`, `PhanCompatibleUseMixed`.
-+ Treat `static` and `false` like real types and emit more severe issues in all php versions.
-+ Improve type inferences from negated type assertions (#3923)
- (analyze more expression kinds, infer real types in more places)
-+ Warn about unnecessary use of `expr ?? null`. (#3925)
- New issue types: `PhanCoalescingNeverUndefined`.
-+ Support PHP 8.0 non-capturing catches (#3907)
- New issue types: `PhanCompatibleNonCapturingCatch`.
-+ Infer type of `$x->magicProp` from the signature of `__get`
-+ Treat functions/methods that are only called by themselves as unreferenced during dead code detection.
-+ Warn about `each()` being deprecated when the `target_php_version` is php 7.2+. (#2746)
- This is special cased because PHP does not flag the function itself as deprecated in `ReflectionFunction`.
- (PHP only emits the deprecation notice for `each()` once at runtime)
-
-Miscellaneous:
-+ Check for keys that are too long when computing levenshtein distances (when Phan suggests alternatives).
-
-Plugins:
-+ Add `AnalyzeLiteralStatementCapability` for plugins to analyze no-op string literals (#3911)
-+ In `PregRegexCheckerPlugin`, warn if `$` allows an optional newline before the end of the string
- when configuration includes `['plugin_config' => ['regex_warn_if_newline_allowed_at_end' => true]]`) (#3915)
-+ In `SuspiciousParamOrderPlugin`, warn if an argument has a near-exact name match for a parameter at a different position (#3929)
- E.g. warn about calling `foo($b)` or `foo(true, $this->A)` for `function foo($a = false, $b = false)`.
- New issue types: `PhanPluginSuspiciousParamPosition`, `PhanPluginSuspiciousParamPositionInternal`
-
-Bug fixes:
-+ Fix false positive `PhanTypeMismatchPropertyDefault` involving php 7.4 typed properties with no default
- and generic comments (#3917)
-+ Don't remove leading directory separator when attempting to convert a file outside the project to a relative path.
-
-May 09 2020, Phan 3.0.0
------------------------
-
-New features(CLI, Config):
-+ Support `PHAN_COLOR_PROGRESS_BAR` as an environment variable to set the color of the progress bar.
- Ansi color names (e.g. `light_blue`) or color codes (e.g. `94`) can be used. (See src/Phan/Output/Colorizing.php)
-
-New features(Analysis):
-+ Infer that `foreach` keys and values of possibly empty iterables are possibly undefined after the end of a loop. (#3898)
-+ Allow using the polyfill parser to parse internal stubs. (#3902)
- (To support newer syntax such as union types, trailing commas in parameter lists, etc.)
-
-May 02 2020, Phan 3.0.0-RC2
------------------------
-
-Fix published GitHub release tag (used `master` instead of `v3`).
-
-May 02 2020, Phan 3.0.0-RC1
------------------------
-
-Backwards incompatible changes:
-+ Drop PHP 7.1 support. PHP 7.1 reached its end of life for security support in December 2019.
- Many of Phan's dependencies no longer publish releases supporting php 7.1,
- which will likely become a problem running Phan with future 8.x versions
- (e.g. in the published phar releases).
-+ Drop PluginV2 support (which was deprecated in Phan 2) in favor of PluginV3.
-+ Remove deprecated classes and helper methods.
-
-??? ?? 2020, Phan 2.7.3 (dev)
------------------------
-
-Bug fixes:
-+ Fix handling of windows path separators in `phan_client`
-+ Fix a crash when emitting `PhanCompatibleAnyReturnTypePHP56` or `PhanCompatibleScalarTypePHP56` for methods with no parameters.
-
-May 02 2020, Phan 2.7.2
------------------------
-
-New features(CLI, Config):
-+ Add a `--native-syntax-check=/path/to/php` option to enable `InvokePHPNativeSyntaxCheckPlugin`
- and add that php binary to the `php_native_syntax_check_binaries` array of `plugin_config`
- (treated here as initially being the empty array if not configured).
-
- This CLI flag can be repeated to run PHP's native syntax checks with multiple php binaries.
-
-New features(Analysis):
-+ Emit `PhanTypeInvalidThrowStatementNonThrowable` when throwing expressions that can't cast to `\Throwable`. (#3853)
-+ Include the relevant expression in more issue messages for type errors. (#3844)
-+ Emit `PhanNoopSwitchCases` when a switch statement contains only the default case.
-+ Warn about unreferenced private methods of the same name as methods in ancestor classes, in dead code detection.
-+ Warn about useless loops. Phan considers loops useless when the following conditions hold:
-
- 1. Variables defined within the loop aren't used outside of the loop
- (requires `unused_variable_detection` to be enabled whether or not there are actually variables)
- 2. It's likely that the statements within the loop have no side effects
- (this is only inferred for a subset of expressions in code)
-
- (Enabling the plugin `UseReturnValuePlugin` (and optionally `'plugin_config' => ['infer_pure_methods' = true]`) helps detect if function calls are useless)
- 3. The code is in a functionlike scope.
-
- New issue types: `PhanSideEffectFreeForeachBody`, `PhanSideEffectFreeForBody`, `PhanSideEffectFreeWhileBody`, `PhanSideEffectFreeDoWhileBody`
-+ Infer that previous conditions are negated when analyzing the cases of a switch statement (#3866)
-+ Support using `throw` as an expression, for PHP 8.0 (#3849)
- (e.g. `is_string($arg) || throw new InvalidArgumentException()`)
- Emit `PhanCompatibleThrowException` when `throw` is used as an expression instead of a statement.
-
-Plugins:
-+ Emit `PhanPluginDuplicateCatchStatementBody` in `DuplicateExpressionPlugin` when a catch statement has the same body and variable name as an adjacent catch statement.
- (This should be suppressed in projects that support php 7.0 or older)
-+ Add `PHP53CompatibilityPlugin` as a demo plugin to catch common incompatibilities with PHP 5.3. (#915)
- New issue types: `PhanPluginCompatibilityArgumentUnpacking`, `PhanPluginCompatibilityArgumentUnpacking`, `PhanPluginCompatibilityArgumentUnpacking`
-+ Add `DuplicateConstantPlugin` to warn about duplicate constant names (`define('X', value)` or `const X = value`) in the same statement list.
- This is only recommended in projects with files with too many global constants to track manually.
-
-Bug Fixes:
-+ Fix a bug causing FQSEN names or namespaces to be converted to lowercase even if they were never lowercase in the codebase being analyzed (#3583)
-
-Miscellaneous:
-+ Replace `PhanTypeInvalidPropertyDefaultReal` with `TypeMismatchPropertyDefault` (emitted instead of `TypeMismatchProperty`)
- and `TypeMismatchPropertyDefaultReal` (#3068)
-+ Speed up `ASTHasher` for floats and integers (affects code such as `DuplicateExpressionPlugin`)
-+ Call `uopz_allow_exit(true)` if uopz is enabled when initializing Phan. (#3880)
- Running Phan with `uopz` is recommended against (unless debugging Phan itself), because `uopz` causes unpredictable behavior.
- Use stubs or internal stubs instead.
-
-Apr 11 2020, Phan 2.7.1
------------------------
-
-New features(CLI, Configs):
-+ Improve the output of `tool/make_stubs`. Use better defaults than `null`.
- Render `unknown` for unknown defaults in `tool/make_stubs` and Phan's issue messages.
- (`default` is a reserved keyword used in switch statements)
-
-Bug Fixes:
-+ Work around unintentionally using `symfony/polyfill-72` for `spl_object_id` instead of Phan's polyfill.
- The version used caused issues on 32-bit php 7.1 installations, and a slight slowdown in php 7.1.
-
-Plugins:
-+ PHP 8.0-dev compatibility fixes for `InvokePHPNativeSyntaxCheckPlugin` on Windows.
-+ Infer that some new functions in PHP 8.0-dev should be used in `UseReturnValuePlugin`
-+ Emit the line and expression of the duplicated array key or switch case (#3837)
-
-Apr 01 2020, Phan 2.7.0
------------------------
-
-New features(CLI, Configs):
-+ Sort output of `--dump-ctags=basic` by element type before sorting by file name (#3811)
- (e.g. make class and global function declarations the first tag type for a tag name)
-+ Colorize the output of `phan_client` by default for the default and text output modes. (#3808)
- Add `phan --no-color` option to disable colors.
-+ Warn about invalid CLI flags in `phan_client` (#3776)
-+ Support representing more AST node types in issue messages. (#3783)
-+ Make some issue messages easier to read (#3745, #3636)
-+ Allow using `--minimum-severity=critical` instead of `--minimum-severity=10` (#3715)
-+ Use better placeholders for parameter default types than `null` in issue messages and hover text (#3736)
-+ Release `phantasm`, a prototype tool for assembling information about a codebase and aggressively optimizing it.
- Currently, the only feature is replacing class constants with their values, when safe to do so.
- More features (e.g. inlining methods, aggressively optimizing out getters/setters, etc.) are planned for the future.
- See `tool/phantasm --help` for usage.
-
-New features(Analysis):
-+ Improve analysis of php 7.4 typed properties.
- Support extracting their real union types from Reflection information.
- Infer the existence of properties that are not in `ReflectionClass->getPropertyDefaults()`
- due to being uninitialized by default.
-+ Emit `PhanAbstractStaticMethodCall*` when calling an abstract static method statically. (#3799)
-+ Emit `PhanUndeclaredClassReference` instead of `PhanUndeclaredClassConstant` for `MissingClass::class`.
-
-Language Server/Daemon mode:
-+ Catch exception seen when printing debug info about not being able to parse a file.
-+ Warn when Phan's language server dependencies were installed for php 7.2+
- but the language server gets run in php 7.1. (phpdocumentor/reflection-docblock 5.0 requires php 7.2)
-+ Immediately return cached hover text when the client repeats an identical hover request. (#3252)
-
-Miscellaneous:
-+ PHP 8.0-dev compatibility fixes, analysis for some new functions of PHP 8.0-dev.
-+ Add `symfony/polyfill-php72` dependency so that symfony 5 will work better in php 7.1.
- The next Phan major release will drop support for php 7.1.
-
-Mar 13 2020, Phan 2.6.1
------------------------
-
-New features(CLI, Configs):
-+ Add a `--dump-ctags=basic` flag to dump a `tags` file in the project root directory. (https://linux.die.net/man/1/ctags)
- This is different from `tool/make_ctags_for_phan_project` - it has no external dependencies.
-
-New features(Analysis):
-+ Infer that the real type set of the key in `foreach ($arrayVar as $key => ...)` is definitely an `int|string`
- in places where Phan previously inferred the empty union type, improving redundant condition detection. (#3789)
-
-Bug fixes:
-+ Fix a crash in `phan --dead-code-detection` when a trait defines a real method and phpdoc `@method` of the same name (#3796)
-
-Miscellaneous:
-+ Also allow `netresearch/jsonmapper@^2.0` as a dependency when enforcing the minimum allowed version (#3801)
-
-Mar 07 2020, Phan 2.6.0
------------------------
-
-New features(CLI, Configs):
-+ Show empty union types as `(empty union type)` in issue messages instead of as an empty string.
-+ Add a new CLI option `--analyze-twice` to run the analysis phase twice (#3743)
-
- Phan infers additional type information for properties, return types, etc. while analyzing,
- and this will help it detect more potential errors.
- (on the first run, it would analyze files before some of those types were inferred)
-+ Add a CLI option `--analyze-all-files` to analyze all files, ignoring `exclude_analysis_file_list`.
- This is potentially useful if third party dependencies are missing type information (also see `--analyze-twice`).
-+ Add `--dump-analyzed-file-list` to dump all files Phan would analyze to stdout.
-+ Add `allow_overriding_vague_return_types` to allow Phan to add inferred return types to functions/closures/methods declared with `@return mixed` or `@return object`.
- This is disabled by default.
-
- When this is enabled, it can be disabled for individual methods by adding `@phan-hardcode-return-type` to the comment of the method.
- (if the method has any type declarations such as `@return mixed`)
-
- Previously, Phan would only add inferred return types if there was no return type declaration.
- (also see `--analyze-twice`)
-+ Also emit the code fragment for the argument in question in the `PhanTypeMismatchArgument` family of issue messages (#3779)
-+ Render a few more AST node kinds in code fragments in issue messages.
-
-New features(Analysis):
-+ Support parsing php 8.0 union types (and the static return type) in the polyfill. (#3419, #3634)
-+ Emit `PhanCompatibleUnionType` and `PhanCompatibleStaticType` when the target php version is less than 8.0 and union types or static return types are seen. (#3419, #3634)
-+ Be more consistent when warning about issues in values of class constants, global constants, and property defaults.
-+ Infer key and element types from `iterator_to_array()`
-+ Infer that modification of or reading from static properties all use the same property declaration. (#3760)
- Previously, Phan would track the static property's type separately for each subclass.
- (static properties from traits become different instances, in each class using the trait)
-+ Make assignments to properties of the declaring class affect type inference for those properties when accessed on subclasses (#3760)
-
- Note that Phan is only guaranteed to analyze files once, so if type information is missing,
- the only way to ensure it's available is to add it to phpdoc (`UnknownElementTypePlugin` can help) or use `--analyze-twice`.
-+ Make internal checks if generic array types are strict subtypes of other types more accurate.
- (e.g. `object[]` is not a strict subtype of `stdClass[]`, but `stdClass[]` is a strict subtype of `object[]`)
-
-Plugins:
-+ Add `UnknownClassElementAccessPlugin` to warn about cases where Phan can't infer which class an instance method is being called on.
- (To work correctly, this plugin requires that Phan use a single analysis process)
-+ Add `MoreSpecificElementTypePlugin` to warn about functions/methods where the phpdoc/actual return type is vaguer than the types that are actually returned by a method. (#3751)
- This is a work in progress, and has a lot of false positives.
- (To work correctly, this plugin requires that Phan use a single analysis process)
-+ Fix crash in `PrintfCheckerPlugin` when analyzing code where `fprintf()` was passed an array instead of a format string.
-+ Emit `PhanTypeMissingReturnReal` instead of `PhanTypeMissingReturn` when there is a real return type signature. (#3716)
-+ Fix bug running `InvokePHPNativeSyntaxCheckPlugin` on Windows when PHP binary is in a path containing spaces. (#3766)
-
-Bug fixes:
-+ Fix bug causing Phan to fail to properly recursively analyze parameters of inherited methods (#3740)
- (i.e. when the methods are called on the subclass)
-+ Fix ambiguity in the way `Closure():T[]` and `callable():T[]` are rendered in error messages. (#3731)
- Either render it as `(Closure():T)[]` or `Closure():(T[])`
-+ Don't include both `.` and `vendor/x/y/` when initializing Phan configs with settings such as `--init --init-analyze-dir=.` (#3699)
-+ Be more consistent about resolving `static` in generators and template types.
-+ Infer the iterable value type for `Generator`. It was previously only inferred when there were 2 or more template args in phpdoc.
-+ Don't let less specific type signatures such as `@param object $x` override the real type signature of `MyClass $x` (#3749)
-+ Support PHP 7.4's `??=` null coalescing assignment operator in the polyfill.
-+ Fix crash analyzing invalid nodes such as `2 = $x` in `RedundantAssignmentPlugin`.
-+ Fix crash inferring type of `isset ? 2 : 3` with `--use-fallback-parser` (#3767)
-+ Fix false positive unreferenced method warnings for methods from traits
- when the methods were referenced in base classes or interfaces of classes using those traits.
-
-Language Server/Daemon mode:
-+ Various performance improvements for the language server/daemon with or without pcntl (#3758, #3769, #3771)
-
-Feb 20 2020, Phan 2.5.0
------------------------
-
-New Features(CLI):
-+ Support using `directory_suppressions` in Phan baseline files in `--load-baseline`. (#3698)
-+ Improve error message for warnings about Phan being unable to read files in the analyzed directory.
-
-New Features(Analysis):
-+ Instead of failing to parse intersection types in phpdoc entirely, parse them as if they were union types. (#1629)
- The annotations `@phan-param`, `@phan-return`, `@phan-var`, etc. can be used to override the regular phpdoc in the various cases where this behavior causes problems.
-
- **Future** Phan releases will likely about unsupported phpdoc (e.g. `int&string`) and have actual support for intersection types.
-+ Emit `PhanUndeclaredConstantOfClass` (severity critical) for undeclared class constants instead of `PhanUndeclaredConstant` (severity normal)
- This should not be confused with `PhanUndeclaredClassConstant`, which already exists and refers to accessing class constants of classes that don't exist.
-+ Emit the expression that's an invalid object with issue types such as `PhanTypeExpectedObject*`, `PhanTypeInvalidInstanceof` (#3717)
-+ Emit `PhanCompatibleScalarTypePHP56` and `PhanCompatibleAnyReturnTypePHP56` for function signatures when `target_php_version` is `'5.6'` (#915)
- (This also requires that `backward_compatibility_checks` be enabled.)
-+ Use more accurate line numbers for warnings about function parameters.
-+ When `assume_real_types_for_internal_functions` is on *and* a function has a non-empty return type in Reflection,
- make Phan's known real type signatures override the real reflection return type information (useful when Phan infers `list` and Reflection says `array`).
- Phan previously used the type from Reflection.
-+ Normalize phpdoc parameter and return types when there is a corresponding real type in the signature. (#3725)
- (e.g. convert `bool|false|null` to `?bool`)
-
-Plugins:
-+ Add `SubscribeEmitIssueCapability` to detect or suppress issues immediately before they are emitted. (#3719)
-
-Bug fixes:
-+ Don't include issues that weren't emitted in the file generated by `--save-baseline` (#3719)
-+ Fix incorrect file location for other definition in `PhanRedefinedClassReference` under some circumstances.
-+ Fix incorrect issue name: `PhanCompatibleNullableTypePHP71` should be named `PhanCompatibleObjectTypePHP71`
-+ Fix false positive `PhanPartialTypeMismatchProperty` when a php 7.4 typed property has a default expression value (#3725)
-
-Feb 13 2020, Phan 2.4.9
------------------------
-
-New Features(Analysis):
-+ Infer that `class_exists` implies the first argument is a class-string,
- and that `method_exists` implies the first argument is a class-string or an object. (#2804, #3058)
-
- Note that Phan still does not infer that the class or method actually exists.
-+ Emit `PhanRedefineClass` on **all** occurrences of a duplicate class, not just the ones after the first occurrence of the class. (#511)
-+ Emit `PhanRedefineFunction` on **all** occurrences of a duplicate function/method, not just the ones after the first.
-+ Emit `PhanRedefinedClassReference` for many types of uses of user-defined classes that Phan has parsed multiple definitions of.
- Phan will not warn about internal classes, because the duplicate definition is probably a polyfill.
- (e.g. `new DuplicateClass()`, `DuplicateClass::someMethod()`)
-
-Bug fixes:
-+ Fix false positive `PhanParamSuspiciousOrder` for `preg_replace_callback` (#3680)
-+ Fix false positive `PhanUnanalyzableInheritance` for renamed methods from traits. (#3695)
-+ Fix false positive `PhanUndeclaredConstant` previously seen for inherited class constants in some parse orders. (#3706)
-+ Fix uncaught `TypeError` converting `iterable` to nullable (#3709)
-
-Jan 25 2020, Phan 2.4.8
------------------------
-
-Bug fixes:
-+ Fix bug introduced in 2.4.7 where there were more false positives when `--no-progress-bar` was used. (#3677)
-
-Jan 22 2020, Phan 2.4.7
------------------------
-
-New features(CLI, Configs):
-+ Add an environment variable `PHAN_NO_UTF8=1` to always avoid UTF-8 in progress bars.
- This may help with terminals or logs that have issues with UTF-8 output.
- Error messages will continue to include UTF-8 when part of the error.
-+ Allow `phan --init` to complete even if composer.json has no configured `autoload` directories,
- as long as at least one directory or file was configured.
-+ Add a setting `error_prone_truthy_condition_detection` that can be enabled to warn about error-prone truthiness/falsiness checks. New issue types:
- - `PhanSuspiciousTruthyCondition` (e.g. for `if ($x)` where `$x` is `object|int`)
- - `PhanSuspiciousTruthyString` (e.g. for `?string` - `'0'` is also falsey in PHP)
-+ Limit calculation of max memory usage to the **running** worker processes with `--processes N` (#3606)
-+ Omit options that should almost always be on (e.g. `analyze_signature_compatibility`) from the output of `phan --init` (#3660)
-+ Allow `phan --init` to create config file with `target_php_version` of `'7.4'` or `'8.0'` based on composer.json (#3671)
-
-New Features(Analysis):
-+ Infer that merging defined variables with possibly undefined variables is also possibly undefined. (#1942)
-+ Add a fallback when some types of conditional check results in a empty union type in a loop:
- If all types assigned to the variable in a loop in a function are known,
- then try applying the condition to the union of those types. (#3614)
- (This approach was chosen because it needs to run only once per function)
-+ Infer that assignment operations (e.g. `+=`) create variables if they were undefined.
-+ Properly infer that class constants that weren't literal int/float/strings have real type sets in their union types.
-+ Normalize union types of generic array elements after fetching `$x[$offset]`.
- (e.g. change `bool|false|null` to `?bool`)
-+ Normalize union types of result of `??` operator.
-+ Fix false positives in redundant condition detection for the real types of array accesses. (#3638, #3645, #3650)
-+ Support the `non-empty-string` type in phpdoc comments (neither `''` nor `'0'`).
- Warn about redundant/impossible checks of `non-empty-string`.
-+ Support the `non-zero-int` type in phpdoc comments. Infer it in real types and warn about redundant checks for zero/truthiness.
-+ Support the the `non-empty-mixed` in phpdoc comments and in inferences.
-+ Fix false positives possibly undefined variable warnings after conditions
- such as `if (X || count($x = []))`, `if (X && preg_match(..., $matches))`, etc.
-
-Bug fixes:
-+ Fix a crash analyzing assignment operations on `$GLOBALS` such as `$GLOBALS['var'] += expr;` (#3615)
-+ Fix false positive `Phan[Possibly]UndeclaredGlobalVariable` after conditions such as `assert($var instanceof MyClass` when the variable was not assigned to within the file or previously analyzed files. (#3616)
-+ Fix line number of 0 for some nodes when `simplify_ast` is enabled. (#3649)
-
-Plugins:
-+ Make Phan use the real type set of the return value of the function being analyzed when plugins return a union type without a real type set.
-
-Maintenance:
-+ Infer that `explode()` is possibly the empty list when `$limit` is possibly negative. (#3617)
-+ Make Phan's code follow more PSR-12 style guidelines
- (`` when using `Type::fromFullyQualifiedString()`.
-+ Fix warnings about `password_hash()` algorithm constants with php 7.4 (#3560)
- `PASSWORD_DEFAULT` became null in php 7.4, and other constants became strings.
-
- Note that you will need to run Phan with both php 7.4 and a `target_php_version` of 7.4 to fix the errors.
-+ Fix uncaught `AssertionError` when parsing `@return \\...` (#3573)
-
-Nov 24 2019, Phan 2.4.4
------------------------
-
-New features(CLI, Configs):
-+ When stderr is redirected a file or to another program, show an append-only progress bar by default. (#3514)
- Phan would previously disable the progress bar entirely by default.
-
- The new `--long-progress-bar` CLI flag can be used to choose this progress bar.
-
- (The `--no-progress-bar` CLI flag or the environment variable `PHAN_DISABLE_PROGRESS_BAR=1` can be used to disable this)
-+ Treat `$var = $x['possibly undefined offset']` as creating a definitely defined variable,
- not a possibly undefined variable. (#3534)
-
- The config setting `convert_possibly_undefined_offset_to_nullable` controls
- whether the field type gets cast to the nullable equivalent after removing undefined.
-
-New features(Analysis):
-+ Emit `PhanPossiblyUndefinedArrayOffset` for accesses to array fields that are possibly undefined. (#3534)
-+ Warn about returning/not returning in void/non-void functions.
- New issue types: `PhanSyntaxReturnValueInVoid`, `PhanSyntaxReturnExpectedValue`
-+ Infer that `$var[$offset] = expr;`/`$this->prop[$offset] = expr;` causes that element to be non-null (#3546)
-+ Emit `PhanEmptyForeachBody` when iterating over a type that isn't `Traversable` with an empty statement list.
-+ Warn about computing `array_values` for an array that is already a list. (#3540)
-+ Infer the real type is still an array after assigning to a field of an array.
-
-Plugins:
-+ In `DuplicateExpressionPlugin`, emit `PhanPluginDuplicateIfStatements`
- if the body for `else` is identical to the above body for the `if/elseif`.
-
-Maintenance:
-+ Support native parsing of `AST_TYPE_UNION` (union type) nodes for PHP 8.0.0-dev.
-+ Reduce memory usage after the polyfill/fallback parser parses ASTs
- (when the final AST isn't cached on disk from a previous run)
-+ Make the error message for missing `php-ast` contain more detailed instructions on how to install `php-ast`.
-
-Nov 20 2019, Phan 2.4.3
------------------------
-
-New features(CLI, Configs):
-+ Support `NO_COLOR` environment variable. (https://no-color.org/)
- When this variable is set, Phan's error message and issue text will not be colorized unless the CLI arg `--color` or `-c` is used.
- This overrides the `PHAN_ENABLE_COLOR_OUTPUT` setting.
-+ Add `PHAN_DISABLE_PROGRESS_BAR` environment variable to disable progress bar by default unless the CLI arg `--progress-bar` is used.
-+ Show an extra decimal digit of precision in the progress bar when the terminal is wide enough. (#3514)
-
-New features(Analysis):
-+ Make inferred real types more accurate for equality/identity/instanceof checks.
-+ Combine array shape types into a single union type when merging variable types from multiple branches. (#3506)
- Do a better job of invalidating the real union type of fields of array shape types when the field is only checked/set on some code branches.
-+ Make issue suggestions (and CLI suggestions) for completions of prefixes case-insensitive.
-+ Support `@seal-properties` and `@seal-methods` as aliases of `@phan-forbid-undeclared-magic-properties` and `@phan-forbid-undeclared-magic-methods`
-+ More aggressively infer real types of array destructuring(e.g. `[$x] = expr`) and accesses of array dimensions (e.g. `$x = expr[dim]`) (#3481)
-
- This will result in a few more false positives about potentially real redundant/impossible conditions and real type mismatches.
-+ Fix false positives caused by assuming that the default values of properties are the real types of properties.
-+ Infer that globals used in functions (`global $myGlobal;`) have unknown real types - don't emit warnings about redundant/impossible conditions. (#3521)
-
-Plugins:
-+ Also start checking if closures (and arrow functions) can be static in `PossiblyStaticMethodPlugin`
-+ Add `AvoidableGetterPlugin` to suggest when `$this->prop` can be used instead of `$this->getProp()`.
- (This will suggest using the property instead of the getter method if there are no known method overrides of the getter. This is only checked for instance properties of `$this`)
-+ Increase severity of `PhanPluginPrintfNonexistentArgument` to critical. It will become an ArgumentCountError in PHP 8.
-
-Maintenance:
-+ Bump minimum version of netresearch/jsonmapper to avoid php notices in the language server in php 7.4
-+ Improve worst-case performance when analyzing code that has many possible combinations of array shapes.
-
-Bug fixes:
-+ Properly emit redundant and impossible condition warnings about uses of class constants defined as literal strings/floats/integers.
- (i.e. infer their real union types)
-+ Fix false positive inference that `$x[0]` was `string` for `$x` of types such as `list<\MyClass>|string` (reported in #3483)
-+ Consistently inherit analysis settings from parent classes recursively, instead of only inheriting them from the direct parent class. (#3472)
- (settings include presence of dynamic properties, whether undeclared magic methods are forbidden, etc.)
-+ Don't treat methods that were overridden in one class but inherited by a different class as if they had overrides.
-+ Fix a crash when running in php 8.0.0-dev due to Union Types being found in Reflection. (#3503)
-+ Fix edge case looking up the `extends` class/interface name when the namespace is a `use` alias (#3494)
-
-Nov 08 2019, Phan 2.4.2
------------------------
-
-New features(Analysis):
-+ Emit `PhanTypeInvalidCallExpressionAssignment` when improperly assigning to a function/method's result (or a dimension of that result) (#3455)
-+ Fix an edge case parsing `(0)::class` with the polyfill. (#3454)
-+ Emit `PhanTypeInvalidDimOffset` for accessing any dimension on an empty string or an empty array. (#3385)
-+ Warn about invalid string literal offsets such as `'str'[3]`, `'str'[-4]`, etc. (#3385)
-+ Infer that arrays are non-empty and support array access from `isset($x[$offset])` (#3463)
-+ Make `array_key_exists` imply argument is a `non-empty-array` (or an `object`). (#3465, #3469)
-+ Make `isset($x[$offset])` imply argument is a `non-empty-array`, `object`, or `string`
- Make `isset($x['literal string'])` imply argument is a `non-empty-array` or `object`, and not a `string`.
-+ Make `isset($x->prop)` imply `$x` is an `object`.
-+ Make `isset($this->prop[$x])` imply `$this->prop` is not the empty array shape. (#3467)
-+ Improve worst-case time of deduplicating unique types in a union type (#3477, suggested in #3475)
-
-Maintenance:
-+ Update function signature maps for internal signatures.
-
-Bug fixes:
-+ Fix false positive `PhanSuspiciousWeakTypeComparison` for `in_array`/`array_search`/`array_key_exists` with function arguments defaulting to `[]`
-
-Nov 03 2019, Phan 2.4.1
------------------------
-
-New features(CLI, Configs):
-+ Enable the progress bar by default, if `STDERR` is being rendered directly to a terminal.
- Add a new option `--no-progress-bar`.
-+ Emit warnings about missing files in `file_list`, CLI args, etc. to `STDERR`. (#3434)
-+ Clear the progress bar when emitting many types of warnings to STDERR.
-
-New features(Analysis):
-+ Suggest similarly named static methods and static properties for `PhanUndeclaredConstant` issues on class constants. (#3393)
-+ Support `@mixin` (and an alias `@phan-mixin`) as a way to load public methods and public instance properties
- as magic methods and magic properties from another classlike. (#3237)
-
- Attempts to parse or analyze mixins can be disabled by setting `read_mixin_annotations` to `false` in your Phan config.
-+ Support `@readonly` as an alias of the `@phan-read-only` annotation.
-+ Also emit `PhanImpossibleTypeComparison` for `int === float` checks. (#3106)
-+ Emit `PhanSuspiciousMagicConstant` when using `__METHOD__` in a function instead of a method.
-+ Check return types and parameter types of global functions which Phan has signatures for,
- when `ignore_undeclared_functions_with_known_signatures` is `false` and `PhanUndeclaredFunction` is emitted. (#3441)
-
- Previously, Phan would emit `PhanUndeclaredFunction` without checking param or return types.
-+ Emit `PhanImpossibleTypeComparison*` and `PhanSuspiciousWeakTypeComparison*`
- when `in_array` or `array_search` is used in a way that will always return false.
-+ Emit `PhanImpossibleTypeComparison*` when `array_key_exists` is used in a way that will always return false.
- (e.g. checking for a string literal or negative key in a list, an integer in an array with known string keys, or anything in an empty array)
-+ Add some missing function analyzers: Infer that `shuffle`, `rsort`, `natsort`, etc. convert arrays to lists.
- Same for `arsort`, `krsort`, etc.
-+ Convert to `list` or `associative-array` in `sort`/`asort` in more edge cases.
-+ Infer that `sort`/`asort` on an array (and other internal functions using references) returns a real `list` or `associative-array`.
- Infer that `sort`/`asort` on a non-empty array (and other internal functions using references) returns a real `non-empty-list` or `non-empty-associative-array`.
-+ Infer that some array operations (`array_reduce`, `array_filter`, etc.) result in `array` instead of `non-empty-array` (etc.)
-
-Bug fixes:
-+ Fix a bug where global functions, closures, and arrow functions may have inferred values from previous analysis unintentionally
- left over in the original scope when analyzing that function again. (methods were unaffected)
-
-Maintenance:
-+ Clarify a warning message about "None of the files to analyze in /path/to/project exist"
-
-Plugins:
-+ Add a new plugin `RedundantAssignmentPlugin` to warn about assigning the same value a variable already has to that variable. (#3424)
- New issue types: `PhanPluginRedundantAssignment`, `PhanPluginRedundantAssignmentInLoop`, `PhanPluginRedundantAssignmentInGlobalScope`
-+ Warn about alignment directives and more padding directives (`'x`) without width directive in `PrintfCheckerPlugin` (#3317)
-+ Also emit `PhanPluginPrintfNoArguments` in cases when the format string could not be determined. (#3198)
-
-Oct 26 2019, Phan 2.4.0
------------------------
-
-New features(CLI, Configs):
-+ Support saving and loading baselines with `--save-baseline=.phan/baseline.php` and `--load-baseline=.phan/baseline.php`. (#2000)
- `--save-baseline` will save all pre-existing issues for the provided analysis settings to a file.
- When Phan is invoked later with `--load-baseline`, it will ignore any
- issue kinds in the files from `file_suppressions` in the baseline.
-
- This is useful for setting up analysis with Phan on a new project,
- or when enabling stricter analysis settings.
-
- Different baseline files can be used for different Phan configurations.
- (e.g. `.phan/baseline_deadcode.php` for runs with `--dead-code-detection`)
-
-New features(Analysis):
-+ Fix edge cases in checking if some nullable types were possibly falsey
- (`?true` and literal floats (e.g. `?1.1`))
-+ Emit `PhanCoalescingNeverNull` instead of `PhanCoalescingNeverNullIn*`
- if it's impossible for the node kind to be null. (#3386)
-+ Warn about array destructuring syntax errors (`[] = $arr`, `[$withoutKey, 1 => $withKey] = $arr`)
-+ Return a clone of an existing variable if one already exists in Variable::fromNodeInContext. (#3406)
- This helps analyze `PassByReferenceVariable`s.
-+ Don't emit PhanParamSpecial2 for min/max/implode/join with a single vararg. (#3396)
-+ Properly emit PhanPossiblyInfiniteRecursionSameParams for functions with varargs.
-+ Emit `PhanNoopNew` or `PhanNoopNewNoSideEffects` when an object is created with `new expr(...)` but the result is not used (#3410)
- This can be suppressed for all instances of a class-like by adding the `@phan-constructor-used-for-side-effects` annotation to the class's doc comment.
-+ Emit `PhanPluginUseReturnValueInternalKnown` for unused results of function calls on the right-hand side of control flow operators (`??`/`?:`/`&&`/`||`) (#3408)
-
-Oct 20 2019, Phan 2.3.1
------------------------
-
-New features(CLI, Configs):
-+ Instead of printing the full help when Phan CLI args or configuration is invalid,
- print just the errors/warnings and instructions and `Type ./phan --help (or --extended-help) for usage.`
-+ Add an option `--debug-signal-handler` that can be used to diagnose
- why Phan or a plugin is slow or hanging. (Requires the `pcntl` module)
- This installs a signal handler that response to SIGINT (aka Ctrl-C), SIGUSR1, and SIGUSR2.
-+ Print a single backtrace in the crash reporter with the file, line, and arguments instead of multiple backtraces.
-+ Emit a warning suggesting using `--long-option` instead when `-long-option[=value]` is passed in.
-+ Change colorization of some error messages. Print some warnings to stderr instead of using `error_log()`.
-
-New features(Analysis):
-+ Emit `PhanTypeMismatchPropertyRealByRef` or `PhanTypeMismatchPropertyByRef`
- when potentially assigning an incompatible type to a php 7.4 typed property
- (or a property with a phpdoc type).
-+ Warn about suspicious uses of `+` or `+=` on array shapes or lists. (#3364)
- These operator will prefer the fields from the left hand side,
- and will merge lists instead of concatenate them.
- New issue types: `PhanSuspiciousBinaryAddLists`, `PhanUselessBinaryAddRight`
-+ Improvements to inferred types of `sort`, `array_merge`, etc. (#3354)
-+ Fix bug allowing any array shape type to cast to a list.
-+ Warn about unnecessary branches leading to identical return statements in pure functions, methods, and closures (#3383)
- This check is only run on pure methods.
-
- This requires that `UseReturnValuePlugin` be enabled and works best when `'plugin_config' => ['infer_pure_methods' => true]` is set.
-+ Allow `list` to cast to `array{0:X, 1?:X}` (#3390)
-+ Speed up computing line numbers of diagnostics in the polyfill/fallback parser when there are multiple diagnostics.
-
-Language Server/Daemon mode:
-+ Reduce the CPU usage of the language server's main process when the `pcntl` module is used to fork analysis processes (Unix/Linux).
-+ Speed up serializing large responses in language server mode (e.g. when a string has an unmatched quote).
-
-Oct 13 2019, Phan 2.3.0
------------------------
-
-New features(CLI, Configs):
-+ Limit --debug-emitted-issues to the files that weren't excluded from analysis.
-
-New features(Analysis):
-+ Add support for `list` and `non-empty-list` in phpdoc and in inferred values.
- These represent arrays with consecutive integer keys starting at 0 without any gaps (e.g. `function (string ...$args) {}`)
-+ Add support for `associative-array` and `non-empty-associative-array` in phpdoc and in inferred values. (#3357)
-
- These are the opposite of `list` and `non-empty-associative-list`. `list` cannot cast to `associative-array` and vice-versa.
- These represent arrays that are unlikely to end up with consecutive integer keys starting at 0 without any gaps.
- `associative-array` is inferred after analyzing code such as the following:
-
- - Expressions such as `[$uid1 => $value, $uid2 => $value2]` with unknown keys
- - Unsetting an array key of a variable.
- - Adding an unknown array key to an empty array.
- - Certain built-in functions, such as `array_filter` or `array_unique`,
- which don't preserve all keys and don't renumber array keys.
-
- Note that `array` is always treated like an associative array.
-
- However, `T[]` (i.e. `array`) is not treated like `associative-array` (i.e. `associative-array`).
- Phan will warn about using the latter (`associative-array`) where a list is expected, but not the former (`array`).
-+ Allow omitting keys from array shapes for sequential array elements
- (e.g. `array{stdClass, array}` is equivalent to `array{0:stdClass, 1:array}`).
-+ Add array key of array shapes in the same field order that php would for assignments such as `$x = [10]; $x[1] = 11;`. (#3359)
-+ Infer that arrays are non-empty after analyzing code such as `$x[expr] = expr` or `$x[] = expr`.
-+ Infer that arrays are possibly empty after analyzing code such as `unset($x[expr]);`.
-+ Fix false positives in redundant condition detection when the source union type contains the `mixed` type.
-
-Oct 03 2019, Phan 2.2.13
-------------------------
-
-New features(CLI, Configs):
-+ Always print 100% in `--progress-bar` after completing any phase of analysis.
- This is convenient for tools such as `tool/phoogle` that exit before starting the next phase.
-+ Add GraphML output support to `DependencyGraphPlugin`.
- This allows `tool/pdep` output to be imported by Neo4j, Gephi and yEd
-+ Add json output and import to `tool/pdep`
- For caching large graphs in order to generate multiple sub-graphs without re-scanning
-+ Add setting `infer_default_properties_in_construct`.
- When this is enabled, infer that properties of `$this` are initialized to their default values at the start of `__construct()`. (#3213)
- (this is limited to instance properties which are declared in the current class (i.e. not inherited)).
- Off by default.
-+ Add a config setting `strict_object_checking`. (#3262)
- When enabled, Phan will warn if some of the object types in the union type don't contain a property.
- Additionally, warn about definite non-object types when accessing properties.
- Also add `--strict-object-checking` to enable this setting.
-+ Add CLI option `--debug-emitted-issues={basic,verbose}` to print the stack trace of when Phan emitted the issue to stderr.
- Useful for understanding why Phan emitted an issue.
-
-New features(Analysis):
-+ Disable `simplify_ast` by default.
- Phan's analysis of compound conditions and assignments/negations in conditions has improved enough that it should no longer be necessary.
-+ Import more specific phpdoc/real array return types for internal global functions from opcache.
-+ Emit `PhanUndeclaredVariable` and other warnings about arguments when there are too many parameters for methods. (#3245)
-+ Infer real types of array/iterable keys and values in more cases.
-+ Expose the last compilation warning seen when tokenizing or parsing with the native parser, if possible (#3263)
- New issue types: `PhanSyntaxCompileWarning`
- Additionally, expose the last compilation warning or deprecation notice seen when tokenizing in the polyfill.
-+ Improve inference of when the real result of a binary operation is a float. (#3256)
-+ Emit stricter warnings for more real type mismatches (#3256)
- (e.g. emit `PhanTypeMismatchArgumentReal` for `float->int` when `strict_types=1`, `'literal string'->int`, etc.)
-+ Consistently infer that variadic parameters are arrays with integer keys. (#3294)
-+ Improve types inferred when the config setting `enable_extended_internal_return_type_plugins` is enabled.
-+ Speed up sorting the list of parsed files, and avoid unnecessary work in `--dump-parsed-file-list`.
-+ Emit `PhanEmptyForeach` and `PhanEmptyYieldFrom` when iterating over empty arrays.
-+ Infer that properties of `$this` are initialized to their default values at the start of `__construct()`. (#3213)
- (this is limited to instance properties which are declared in the current class (i.e. not inherited)).
- To disable this, set `infer_default_properties_in_construct` to false.
-+ Improve analysis of conditions on properties of `$this`, such as `if (isset($this->prop['field1']['field2']))` (#3295)
-+ Improve suggestions for `PhanUndeclaredFunction`.
- Properly suggest similar global functions for non-fully qualified calls in namespaces.
- Suggest `new ClassName()` as a suggestion for `ClassName()`.
-+ Improve suggestions for global constants (`PhanUndeclaredConstant`).
- Suggest similar constant names case-insensitively within the same namespace or the global namespace.
-+ Suggest obvious getters and setters for instance properties in `PhanAccessPropertyProtected` and `PhanAccessPropertyPrivate` (#2540)
-+ When `strict_method_checking` is enabled,
- warn if some of the **object** types in the union type don't contain that method. (#3262)
-+ Make stronger assumptions about real types of global constants.
- Assume that constants defined with `define(...)` can have any non-object as its real type,
- to avoid false positives in redundant condition detection.
-+ Properly infer that parameter defaults and global constants will resolve to `null` in some edge cases.
-+ Emit `PhanCompatibleDefaultEqualsNull` when using a different constant that resolves to null as the default of a non-nullable parameter. (#3307)
-+ Emit `PhanPossiblyInfiniteRecursionSameParams` when a function or method calls itself with the same parameter values it was declared with (in a branch). (#2893)
- (This requires unused variable detection to be enabled, when there are 1 or more parameters)
-+ Analyze complex conditions such as `switch (true)`, `if (($x instanceof stdClass) == false)`, etc. (#3315)
-+ Add a `non-empty-array` type, for arrays that have 1 or more elements.
- This gets inferred for checks such as `if ($array)`, `if (!empty($array))` (checks on `count()` are not supported yet)
- (`non-empty-array` and `non-empty-array` can also be used in phpdoc)
-+ Support checking if comparisons of types with more than one possible literal scalar are redundant/impossible.
- Previously, Phan would only warn if both sides had exactly one possible scalar value.
- (e.g. warn about `'string literal' >= $nullableBool`)
-+ Fix edge cases analyzing conditions on superglobals.
-+ Be more consistent about when PhanTypeArraySuspiciousNullable is emitted, e.g. for `?mixed`, `array|null`, etc.
-+ Fix false positive impossible condition for casting mixed to an array.
-
-Language Server/Daemon mode:
-+ Fix logged Error when language server receives `didChangeConfiguration` events. (this is a no-op)
-
-Plugins:
-+ Fix failure to emit `PhanPluginDescriptionlessComment*` when a description
- would be automatically generated from the property or method's return type. (#3265)
-+ Support checking for duplicate phpdoc descriptions of properties or methods within a class in `HasPHPDocPlugin`.
- Set `'plugin_config' => ['has_phpdoc_check_duplicates' => true]` to enable these checks.
- (this skips deprecated methods/properties)
-+ Implement `LoopVariableReusePlugin`, to detect reusing loop variables in nested loops. (#3045)
- (e.g. `for ($i = 0; $i < 10; $i++) { /* various code ... */ foreach ($array as $i => $value) { ... } }`)
-
-Maintenance:
-+ Make `\Phan\Library\None` a singleton in internal uses.
-+ Normalize folders in the config file generated by `phan --init` in the vendor autoload directories.
-+ Update internal element types and documentation maps.
-
-Bug fixes:
-+ Consistently deduplicate the real type set of union types (fixes some false positives in redundant condition detection).
-+ Fix `\Phan\Debug`'s dumping representation of flags for `ast\AST_DIM`, `ast\AST_ARRAY_ELEM`,
- `ast\AST_PARAM`, `ast\AST_ASSIGN_OP` (`??=`), and `ast\AST_CONDITIONAL`.
-
- This affects some crash reporting and tools such as `internal/dump_fallback_ast.php`
-+ Fix some infinite recursion edge cases caused parsing invalid recursive class inheritance. (#3264)
-
-Sep 08 2019, Phan 2.2.12
-------------------------
-
-New features(CLI):
-+ Improve error messages when the `--init-*` flags are provided without passing `--init`. (#3153)
- Previously, Phan would fail with a confusing error message.
-+ New tool `tool/pdep` to visualize project dependencies - see `tool/pdep -h`
- (uses the internal plugin `DependencyGraphPlugin`)
-+ Support running `tool/phoogle` (search for functions/methods by signatures) in Windows.
-+ Add support for `--limit ` and `--progress-bar` to `tool/phoogle`.
-
-New features(Analysis):
-+ Support `@phan-immutable` annotation on class doc comments, to indicate that all instance properties are read-only.
-
- - Phan does not check if object fields of those immutable properties will change. (e.g. `$this->foo->prop = 'x';` is allowed)
- - This annotation does not imply that methods have no side effects (e.g. I/O, modifying global state)
- - This annotation does not imply that methods have deterministic return values or that methods' results should be used.
-
- `@phan-immutable` is an alias of `@phan-read-only`. `@phan-read-only` was previously supported on properties.
-+ Support `@phan-side-effect-free` annotation on class doc comments,
- to indicate that all instances of the class are `@phan-immutable`
- and that methods of the class are free of external side effects. (#3182)
-
- - All instance properties are treated as read-only.
- - Almost all instance methods are treated as `@phan-side-effect-free` - their return values must be used.
- (excluding a few magic methods such as __wakeup, __set, etc.)
- This does not imply that they are deterministic (e.g. `rand()`, `file_get_contents()`, and `microtime()` are allowed)
-+ Add `@phan-side-effect-free` as a clearer name of what `@phan-pure` implied for methods.
-+ Fix false positives for checking for redundant conditions with `iterable` and `is_iterable`.
-+ Properly infer real types for `is_resource` checks and other cases where UnionType::fromFullyQualifiedRealString() was used.
-+ Avoid false positives for the config setting `'assume_real_types_for_internal_functions'`.
- Include all return types for many internal global functions for `--target-php-version` of `7.[0-4]`,
- including those caused by invalid arguments or argument counts.
-+ Warn about division, modulo, and exponentiation by 0 (or by values that would cast to 0).
-+ Fix a bug converting absolute paths to relative paths when the project directory is a substring of a subdirectory (#3158)
-+ Show the real signature of the abstract method in PhanClassContainsAbstractMethod issues. (#3152)
-+ Support analyzing php 7.3's `is_countable()`, and warn when the check is redundant or impossible (#3172)
-+ Don't suggest `$this->prop` as an alternative to the undeclared variable `$prop` from a static method/closure. (#3174)
-+ Make real return types of `Closure::bind()` and other closure helpers more accurate. (#3184)
-+ Include `use($missingVar)` in suggestions for `PhanUndeclaredVariable` if it is defined outside the closure(s) scope.
- Also, suggest *hardcoded* globals such as `$argv`.
-+ Warn about `$this instanceof self` and `$this instanceof static` being redundant.
-+ Fix false positive `PhanInvalidConstantExpression` for php 7.4 argument unpacking (e.g. `function f($x = [1, ...SOME_CONST]) {}`)
-+ Emit `PhanTypeMismatchArgumentInternalProbablyReal` when the real type of an argument doesn't match Phan's signature info for a function (#3199)
- (but there is no Reflection type info for the parameter)
- Continue emitting `PhanTypeMismatchArgumentInternal` when the real type info of the argument is unknown or is permitted to cast to the parameter.
-+ Improve analysis of switch statements for unused variable detection and variable types (#3222, #1811)
-+ Infer the value of `count()` for union types that have a real type with a single array shape.
-+ Fix false positive `PhanSuspiciousValueComparisonInLoop` for value expressions that contain variables.
-+ Warn about redundant condition detection in more cases in loops.
-+ Warn about PHP 4 constructors such as `Foo::Foo()` if the class has no namespace and `__construct()` does not exist. (#740)
- Infer that defining `Foo::Foo()` creates the method alias `Foo::__construct()`.
-+ Don't emit `PhanTypeMismatchArgumentReal` if the only cause of the mismatch is nullability of real types (if phpdoc types were compatible) (#3231)
-
-Language Server/Daemon mode:
-+ Ignore `'plugin_config' => ['infer_pure_methods' => true]` in language server and daemon mode. (#3220)
- That option is extremely slow and memory intensive.
-
-Plugins:
-+ If possible, suggest the types that Phan observed during analysis with `UnknownElementTypePlugin`. (#3146)
-+ Make `InvalidVariableIssetPlugin` respect the `ignore_undeclared_variables_in_global_scope` option (#1403)
-
-Maintenance:
-+ Correctly check for the number of cpus/cores on MacOS in Phan's unit tests (#3143)
-
-Bug fixes:
-+ Don't parse `src/a.php` and `src\a.php` twice if both paths are generated from config or CLI options (#3166)
-
-Aug 18 2019, Phan 2.2.11
-------------------------
-
-New features(Analysis):
-+ Add a `@phan-real-return` annotation for functions/methods/closure (#3099),
- to make Phan act as if that method has the specified union type
- when analyzing callers for redundant conditions, etc. (if there was no real type).
- This can be used for multiple types, e.g. `@phan-real-return string|false`.
-+ Improve union type inferred for clone() - It must be an object if clone() doesn't throw.
- Emit `PhanTypePossiblyInvalidCloneNotObject` for cloning possible non-objects when strict param checking is enabled.
-+ Infer that `new $expr()` has a real type of object in all cases, not just common ones.
-+ Improve real type inferred for `+(expr)`/`-(expr)`/`~(expr)` and warn about redundant conditions.
- This does not attempt to account for custom behavior for objects provided by PECL extensions.
-+ Show argument names and types in issue messages for functions/methods for `PhanParamTooFew` and `PhanParamTooMany`.
-+ Show more accurate columns for `PhanSyntaxError` for unexpected tokens in more cases.
-+ Ignore scalar and null type casting config settings when checking for redundant or impossible conditions. (#3105)
-+ Infer that `empty($x)` implies that the value of $x is null, an empty scalar, or the empty array.
-+ Avoid false positives with `if (empty($x['first']['second']))` - Do not infer any types for the offset 'first' if there weren't any already. (#3112)
-+ Avoid some bad inferences when using the value of expressions of the form `A || B`.
-+ Improve redundant condition detection for empty/falsey/truthy checks, `self`, and internal functions building or processing arrays.
-+ Include strings that are suffixes of variable names, classes, methods, properties, etc. in issue suggestions for undeclared elements. (#2342)
-+ Emit `PhanTypeNonVarReturnByRef` when an invalid expression is returned by a function declared to return a reference.
-+ Support manually annotating that functions/methods/closures are pure with `/** @phan-pure */`.
- This is automatically inherited by overriding methods.
- Also see `UseReturnValuePlugin` and `'plugin_config' => ['infer_pure_methods' => true]`.
-
-Plugins:
-+ In `UseReturnValuePlugin`, support inferring whether closures, functions, and methods are pure
- when `'plugin_config' => ['infer_pure_methods' => true]` is enabled.
- (they're expected to not have side effects and should have their results used)
-
- This is a best-effort heuristic.
- This is done only for the functions and methods that are not excluded from analysis,
- and it isn't done for methods that override or are overridden by other methods.
-
- Note that functions such as `fopen()` are not pure due to side effects.
- UseReturnValuePlugin also warns about those because their results should be used.
-
- Automatic inference of function purity is done recursively.
-+ Add `EmptyMethodAndFunctionPlugin` to warn about functions/methods/closures with empty statement lists. (#3110)
- This does not warn about functions or methods that are deprecated, overrides, or overridden.
-+ Fix false positive in InvalidVariableIssetPlugin for expressions such as `isset(self::$prop['field'])` (#3089)
-
-Maintenance:
-+ Add example vim syntax highlighting snippet for Phan's custom phpdoc annotations to `plugins/vim/syntax/phan.vim`
- This makes it easier to tell if annotations were correctly typed.
-
-Bug fixes:
-+ Don't scan over folders that would be excluded by `'exclude_file_regex'` while parsing. (#3088)
- That adds additional time and may cause unnecessary permissions errors.
-+ Properly parse literal float union types starting with `0.`
-
-Aug 12 2019, Phan 2.2.10
-------------------------
-
-New features(Analysis):
-+ Add support for `@param MyClass &$x @phan-ignore-reference`,
- to make Phan ignore the impact of references on the passed in argument. (#3082)
- This can be used when the result should be treated exactly like the original type for static analysis.
-
-Plugins:
-+ In EmptyStatementListPlugin, warn about switch statements where all cases are no-ops. (#3030)
-
-Bug fixes:
-+ Fix infinite recursion seen when passing `void` to something expecting a non-null type. (#3085)
- This only occurs with some settings, e.g. when `null_casts_as_any_type` is true. (introduced in 2.2.9)
-
-Aug 11 2019, Phan 2.2.9
------------------------
-
-New features(Analysis):
-+ Emit the stricter issue type `PhanTypeMismatchReturnReal` instead of `PhanTypeMismatchReturn`
- when Phan infers that the real type of the returned expression is likely to cause a TypeError (accounting for `strict_types` in the file). (#403)
- See `internal/Issue-Types-Caught-by-Phan.md` for details on when it is thrown.
-+ Emit the stricter issue type `PhanTypeMismatchArgumentReal` instead of `PhanTypeMismatchArgument`
- when Phan infers that the real type of the argument is likely to cause a TypeError at runtime (#403)
-+ Support php 7.4 typed property groups in the polyfill/fallback parser.
-+ Warn about passing properties with incompatible types to reference parameters (#3060)
- New issue types: `PhanTypeMismatchArgumentPropertyReference`, `PhanTypeMismatchArgumentPropertyReferenceReal`
-+ Detect redundant conditions such as `is_array($this->array_prop)` on typed properties.
- Their values will either be a value of the correct type, or unset. (Reading from unset properties will throw an Error at runtime)
-+ Emit `PhanCompatibleTypedProperty` if the target php version is less than 7.4 but typed properties are used.
-+ Emit `PhanTypeMismatchPropertyReal` instead of `PhanTypeMismatchProperty` if the properties have real types that are incompatible with the inferred type of the assignment.
-+ Stop warning about `(float) $int` being redundant - there are small differences in how ints and floats are treated by `serialize`, `var_export`, `is_int`, etc.
-+ Treat all assignments to `$this->prop` in a scope the same way (for real, dynamic, and magic properties)
- Previously, Phan would not track the effects of some assignments to dynamic properties.
-+ Make `unset($this->prop)` make Phan infer that the property is unset in the current scope (and treat it like null) (only affects `$this`). (#3025)
- Emit `PhanPossiblyUnsetPropertyOfThis` if the property is read from without setting it.
-+ Don't emit `PhanTypeArraySuspiciousNull` when array access is used with the null coalescing operator. (#3032)
-+ Don't emit `PhanTypeInvalidDimOffset` when array access is used with the null coalescing operator. (#2123)
-+ Make Phan check for `PhanUndeclaredTypeProperty` suppressions on the property's doc comment, not the class. (#3047)
-+ Make inferred real/phpdoc types for results of division more accurate.
-+ Improve analysis of for loops and while loops.
- Account for the possibility of the loop iteration never occurring. (unless the condition is unconditionally true)
-+ Fix some edge cases that can cause PhanTypeMismatchProperty (#3067, #1867)
- If there was a phpdoc or real type, check against that instead when emitting issues.
-+ Analyze assignments to fields of properties of `$this` (e.g. `$this->prop[] = 'value';`)
- for correctness and for the new type combination. (#3059)
-+ Infer that the `void` should be treated similarly to null
- (in addition to existing checks, it's redundant to compare them to null).
- Don't warn about `return null;` in functions/methods with phpdoc-only `@return void`.
-
-Plugins:
-+ Add `StrictComparisonPlugin`, which warns about the following issue types:
-
- 1. Using `in_array` or `array_search` without specifying `$strict`. (`PhanPluginComparisonNotStrictInCall`)
- 2. Using comparison or weak equality operators when both sides are possibly objects. (`PhanPluginComparisonObjectEqualityNotStrict`, `PhanPluginComparisonObjectOrdering`)
-+ Don't warn in `EmptyStatementListPlugin` if a TODO/FIXME/"Deliberately empty" comment is seen around the empty statement list. (#3036)
- (This may miss some TODOs due to `php-ast` not providing the end line numbers)
- The setting `'plugin_config' => ['empty_statement_list_ignore_todos' => true]` can be used to make it unconditionally warn about empty statement lists.
-+ Improve checks for UseReturnValuePlugin for functions where warning depend on their arg count (`call_user_func`, `trait`/`interface`/`class_exists`, `preg_match`, etc)
-
-Bug fixes:
-+ When a typed property has an incompatible default, don't infer the union type from the default. (#3024)
-+ Don't emit `PhanTypeMismatchProperties` for assignments to dynamic properties. (#3042)
-+ Fix false positive RedundantConditions analyzing properties of `$this` in the local scope. (#3038)
-+ Properly infer that real type is always `int` (or a subtype) after the `is_int($var)` condition.
-+ Emit `TypeMismatchUnpack*` for nullable key types of iterables if the union type didn't contain any int/mixed types. (fix logic error)
-
-Jul 30 2019, Phan 2.2.8
------------------------
-
-New features(CLI):
-+ Add heuristics to `tool/phoogle` to better handle `object`, and to include functions with nullable params in the results of searches for all functions. (#3014)
-
-New features(Analysis):
-+ Emit `PhanCompatibleImplodeOrder` when the glue string is passed as the second instead of the first argument (#2089)
-+ Emit `PhanCompatibleDimAlternativeSyntax` when using array and string array access syntax with curly braces
- when using the polyfill parser or php 7.4+. (#2989)
-+ Emit `PhanCompatibleUnparenthesizedTernary` for expressions such as `a ? b : c ? d : e`. (#2989)
- (when using the polyfill parser or php 7.4+)
-+ Emit `PhanConstructAccessSignatureMismatch` when a constructor is less visible than the parent class's constructor
- and the target php version is 7.1 or older. (#1405)
-
-Plugins:
-+ Make `EmptyStatementListPlugin` check `if` statements with negated conditions (those were previously skipped because they were simplified).
-
-Bug fixes:
-+ Fix a crash analyzing a dynamic property by reference (introduced in 2.2.7) (#3020)
-
-Jul 27 2019, Phan 2.2.7
------------------------
-
-New features(CLI, Configs):
-+ Include columns with most (but not all) occurrences of `PhanSyntaxError`
- (inferred using the polyfill - these may be incorrect a small fraction of the time)
-
- When the error is from the native `php-ast` parser, this is a best guess at the column.
-
- `hide_issue_column` can be used to remove the column from issue messages.
-+ Add `--absolute-path-issue-messages` to emit absolute paths instead of relative paths for the file of an issue. (#1640)
- Note that this does not affect files within the issue message.
-+ Properly render the progress bar when Phan runs with multiple processes (#2928)
-+ Add an HTML output mode to generate an unstyled HTML fragment.
- Example CSS styles can be generated with `internal/dump_html_styles.php`
-+ Add a `light` color scheme for white backgrounds.
-
-New features(Analysis):
-+ Fix failure to infer real types when an invoked function or method had a phpdoc `@return` in addition to the real type.
-+ Infer union type from all classes that an instance method could possibly be, not just the first type seen in the expression's union type. (#2988)
-+ Preserve remaining real union types after negation of `instanceof` checks (e.g. to check for redundant conditions).
-+ Warn about throwing from `__toString()` in php versions prior to php 7.4. (#2805)
-+ Emit `PhanTypeArraySuspiciousNull` for code such as `null['foo']` (#2965)
-+ If a property with no phpdoc type has a default of an empty array, assume that it's type can be any array (when reading it) until the first assignment is seen.
-+ Attempt to analyze modifying dynamic properties by reference (e.g. `$var->$prop` when $prop is a variable with a known string)
-+ For undeclared variables in the global scope, emit `PhanUndeclaredGlobalVariable` instead of `PhanUndeclaredVariable` to distinguish those from undeclared variables within functions/methods. (#1652)
-+ Emit `PhanCompatibleSyntaxNotice` for notices such as the deprecated `(real)` cast in php 7.4, when the real parser is used (#3012)
-
-Language Server/Daemon mode:
-+ When `PhanSyntaxError` is emitted, make the start of the error range
- the column of the error instead of the start of the line.
-
-Plugins:
-+ Add `EmptyStatementListPlugin` to warn about empty statement lists involving if/elseif statements, try statements, and loops.
-+ Properly warn about redundant `@return` annotations followed by other annotation lines in `PHPDocRedundantPlugin`.
-
-Bug fixes:
-+ Treat `Foo::class` as a reference to the class/interface/trait `Foo` (#2945)
-+ Fix crash for `(real)` cast in php 7.4. (#3012)
-+ Work around crash due to deprecation notices in composer dependencies in php 7.4
-
-Jul 17 2019, Phan 2.2.6
------------------------
-
-New features(CLI, Configs):
-+ Include files in completion suggestions for `-P`/`--plugin` in the [completion script for zsh](plugins/zsh/_phan).
-
-Bug fixes:
-+ Fix crash analyzing `&&` and `||` conditions with literals on both sides (#2975)
-+ Properly emit `PhanParamTooFew` when analyzing uses of functions/methods where a required parameter followed an optional parameter. (#2978)
-
-Jul 14 2019, Phan 2.2.5
------------------------
-
-New features(CLI, Configs):
-+ Add `-u` as an alias of `--unused-variable-detection`, and `-t` as an alias of `--redundant-condition-detection`
-+ Added a zsh completion script ([`plugins/zsh/_phan`](plugins/zsh/_phan) has installation instructions).
-+ Added a bash completion script ([`plugins/bash/phan`](plugins/bash/phan) has installation instructions).
-
-New features(Analysis):
-+ Fix false positive `PhanSuspiciousValueComparisonInLoop` when both sides change in a loop. (#2919)
-+ Detect potential infinite loops such as `while (true) { does_not_exit_loop(); }`. (Requires `--redundant-condition-detection`)
- New issue types: `PhanInfiniteRecursion`.
-+ Track that the **real** type of an array variable is an array after adding fields to it (#2932)
- (affects redundant condition detection and unused variable detection)
-+ Warn about adding fields to an unused array variable, if Phan infers the real variable type is an array. (#2933)
-+ Check for `PhanInfiniteLoop` when the condition expression is omitted (e.g. `for (;;) {}`)
-+ Avoid false positives in real condition checks from weak equality checks such as `if ($x == null) { if ($x !== null) {}}` (#2924)
-+ Warn about `X ? Y : Y` and `if (cond1) {...} elseif (cond1) {...}` in DuplicateExpressionPlugin (#2955)
-+ Fix failure to infer type when there is an assignment (or `++$x`, or `$x OP= expr`) in a condition (#2964)
- (e.g. `return ($obj = maybeObj()) instanceof stdClass ? $obj : new stdClass();`)
-+ Warn about no-ops in for loops (e.g. `for ($x; $x < 10, $x < 20; $x + 1) {}`) (#2926)
-+ Treat `compact('var1', ['var2'])` as a usage of $var1 and $var2 in `--unused-variable-detection` (#1812)
-
-Bug fixes:
-+ Fix crash in StringUtil seen in php 7.4-dev due to notice in `hexdec()` (affects polyfill/fallback parser).
-
-Plugins:
-+ Add `InlineHTMLPlugin` to warn about inline HTML anywhere in an analyzed file's contents.
- In the `plugin_config` config array, `inline_html_whitelist_regex` and `inline_html_blacklist_regex` can be used to limit the subset of analyzed files to check for inline HTML.
-+ For `UnusedSuppressionPlugin`: `'plugin_config' => ['unused_suppression_whitelisted_only' => true]` will make this plugin report unused suppressions only for issues in `whitelist_issue_types`. (#2961)
-+ For `UseReturnValuePlugin`: warn about unused results of function calls in loops (#2926)
-+ Provide the `$node` causing the call as a 5th parameter to closures returned by `AnalyzeFunctionCallCapability->getAnalyzeFunctionCallClosuresStatic`
- (this can be used to get the variable/expression for an instance method call, etc.)
-
-Maintenance:
-+ Made `--polyfill-parse-all-element-doc-comments` a no-op, it was only needed for compatibility with running Phan with php 7.0.
-+ Minor updates to CLI help for Phan.
-+ Restart without problematic extensions unless the corresponding `PHAN_ALLOW_$extension` flag is set. (#2900)
- These include uopz and grpc (when Phan would use `pcntl_fork`) - Phan already restarts without Xdebug.
-+ Fix `Debug::nodeToString()` - Make it use a polyfill for `ast\get_kind_name` if the php-ast version is missing or outdated.
-
-Jul 01 2019, Phan 2.2.4
------------------------
-
-New features(CLI, Configs):
-+ Warn if any of the files passed in `--include-analysis-file-list` don't exist.
-
-New features(Analysis):
-+ Reduce false positives inferring the resulting type of `$x++`, `--$x`, etc. (#2877)
-+ Fix false positives analyzing variable modification in `elseif` conditions (#2878, #2860)
- (e.g. no longer emit `PhanRedundantCondition` analyzing `elseif ($offset = (int)$offset)`)
- (e.g. do a better job inferring variables set in complex `if` condition expressions)
-+ Warn about suspicious comparisons (e.g. `new stdClass() <= new ArrayObject`, `2 >= $bool`, etc.) (#2892)
-+ Infer real union types from function/method calls.
-+ Don't emit the specialized `*InLoop` or `*InGlobalScope` issues for `--redundant-condition-detection`
- in more cases where being in a global or loop scope doesn't matter (e.g. `if (new stdClass())`)
-+ Be more accurate about inferring real union types from array destructuring assignments. (#2901)
-+ Be more accurate about inferring real union types from assertions that expressions are non-null. (#2901)
-+ Support dumping Phan's internal representation of a variable's union type (and real union type) with `'@phan-debug-var $varName'` (useful for debugging)
-+ Fix false positive `PhanRedundantCondition` analyzing `if ([$a] = (expr))` (#2904)
-+ Warn about suspicious comparisons that are always true or always false, e.g. the initial check for `for ($i = 100; $i < 20; $i++)` (#2888)
-+ Emit `PhanSuspiciousLoopDirection` when a for loop increases a variable, but the variable is checked against a maximum (or the opposite) (#2888)
- e.g. `for ($i = 0; $i <= 10; $i--)`
-+ Emit critical errors for duplicate use for class/namespace, function, or constant (#2897)
- New issue types: `PhanDuplicateUseNormal`, `PhanDuplicateUseFunction`, `PhanDuplicateUseConstant`
-+ Emit `PhanCompatibleUnsetCast` for uses of the deprecated `(unset)(expr)` cast. (#2871)
-+ Emit `PhanDeprecatedClass`, `PhanDeprecatedTrait`, and `PhanDeprecatedInterface` on the class directly inheriting from the deprecated class, trait, or interface. (#972)
- Stop emitting that issue when constructing a non-deprecated class inheriting from a deprecated class.
-+ Include the deprecation reason for user-defined classes that were deprecated (#2807)
-+ Fix false positives seen when non-template class extends a template class (#2573)
-
-Language Server/Daemon mode:
-+ Fix a crash - always run the language server or daemon with a single analysis process, regardless of CLI or config settings (#2898)
-+ Properly locate the defining class for `MyClass::class` when the polyfill/fallback is used.
-+ Don't emit color in responses from the daemon or language server unless the CLI flag `--color` is passed in.
-
-Maintenance:
-+ Warn if running Phan with php 7.4+ when the installed php-ast version is older than 1.0.2.
-+ Make the AST caches for dev php versions (e.g. 7.4.0-dev, 8.0.0-dev) depend on the date when that PHP version was compiled.
-+ Make the polyfill support PHP 7.4's array spread operator (e.g. `[$a, ...$otherArray]`) (#2786)
-+ Make the polyfill support PHP 7.4's short arrow functions (e.g. `fn($x) => $x*2`)
-+ Fix parsing of `some_call(namespace\func_name())` in the polyfill
-
-Jun 17 2019, Phan 2.2.3
------------------------
-
-New features(Analysis):
-+ Reduce false positives about `float` not casting to `int` introduced in 2.2.2
-
-Jun 17 2019, Phan 2.2.2
------------------------
-
-New features(Analysis):
-+ Support inferring literal float types. Warn about redundant conditions with union types of floats that are always truthy/falsey.
-
-Maintenance:
-+ Support parsing PHP 7.4's numeric literal separator (e.g. `1_000_000`, `0xCAFE_F00d`, `0b0101_1111`) in the polyfill (#2829)
-
-Bug fixes:
-+ Fix a crash in the Phan daemon on Mac/Linux (#2881)
-
-Jun 16 2019, Phan 2.2.1
------------------------
-
-New features(CLI, Configs):
-+ When printing help messages for errors in `phan --init`, print only the related options.
-+ Make `phan --init` enable `redundant_condition_detection` when the strictest init level is requested. (#2849)
-+ Add `--assume-real-types-for-internal-functions` to make stricter assumptions about the real types of internal functions (for use with `--redundant-condition-detection`).
- Note that in PHP 7 and earlier, internal functions would return null/false for incorrect argument types/argument counts, so enabling this option may cause false positives.
-
-New features(Analysis):
-+ Reduce the number of false positives of `--redundant-condition-detection` for variables in loops
-+ Warn about more types of expressions causing redundant conditions (#2534, #822).
-+ Emit `PhanRedundantCondition` and `PhanImpossibleCondition` for `$x instanceof SomeClass` expressions.
-+ Emit `PhanImpossibleCondition` for `is_array` and `is_object` checks.
-
-Bug fixes:
-+ Fix issue that would make Phan infer that a redundant/impossible condition outside a loop was in a loop.
-+ Avoid false positives analyzing expressions within `assert()`.
-+ Fix method signatures for php 7.4's `WeakReference`.
-+ Fix false positives analyzing uses of `__call` and `__callStatic` (#702)
-+ Fix false positive redundant conditions for casting `callable` to object types.
-
-Jun 14 2019, Phan 2.2.0
------------------------
-
-New features(CLI, Configs):
-+ Add `--color-scheme ` for alternative colors of outputted issues (also configurable via environment variable as `PHAN_COLOR_SCHEME=`)
- Supported values: `default`, `vim`, `eclipse_dark`
-+ Be consistent about starting parameter/variable names with `$` in issue messages.
-+ Add `--redundant-condition-detection` to attempt to detect redundant conditions/casts and impossible conditions based on the inferred real expression types.
-
-New features(Analysis):
-+ New issue types: `PhanRedundantCondition[InLoop]`, `PhanImpossibleCondition[InLoop]` (when `--redundant-condition-detection` is enabled)
- (e.g. `is_int(2)` and `boolval(true)` is redundant, `empty(2)` is impossible).
-
- Note: This has many false positives involving loops, variables set in loops, and global variables.
- This will be split into more granular issue types later on.
-
- The real types are inferred separately (and more conservatively) from regular (phpdoc+real) expression types.
-
- (these checks can also be enabled with the config setting `redundant_condition_detection`)
-+ New issue types: `PhanImpossibleTypeComparison[InLoop]` (when `--redundant-condition-detection` is enabled) (#1807)
- (e.g. warns about `$x = new stdClass(); assert($x !== null)`)
-+ New issue types: `PhanCoalescingAlwaysNull[InLoop]`, `PhanCoalescingNeverNull[InLoop]` (when `--redundant-condition-detection` is enabled)
- (e.g. warns about `(null ?? 'other')`, `($a >= $b) ?? 'default'`)
-+ Infer real return types from Reflection of php and the enabled extensions (affects `--redundant-condition-detection`)
-+ Make Phan more accurately infer types for reference parameters set in conditionals.
-+ Make Phan more accurately infer types after try-catch blocks.
-+ Make Phan more accurately check if a loop may be executed 0 times.
-+ Fix issue causing results of previous method analysis to affect subsequent analysis in some edge cases (#2857)
-+ Support the type `callable-object` in phpdoc and infer it from checks such as `is_callable($var) && is_object($var)` (#1336)
-+ Support the type `callable-array` in phpdoc and infer it from checks such as `is_callable($var) && is_array($var)` (#2833)
-+ Fix false positives in more edge cases when analyzing variables with type `static` (e.g. `yield from $this;`) (#2825)
-+ Properly emit `NonStaticCallToStatic` in more edge cases (#2826)
-+ Infer that `<=>` is `-1|0|1` instead of `int`
-+ Infer that eval with backticks is `?string` instead of `string`
-
-Maintenance:
-+ Add updates to the function/method signature map from Psalm and PHPStan.
-
-Bug fixes:
-+ Fix a crash that occurred when an expression containing `class-string` became nullable.
-
-01 Jun 2019, Phan 2.1.0
------------------------
-
-New features(CLI, Configs):
-+ Add more options to configure colorized output. (#2799)
-
- The environment variable `PHAN_ENABLE_COLOR_OUTPUT=1` and the config setting `color_issue_messages_if_supported` can be used to enable colorized output by default
- for the default output mode (`text`) when the terminal supports it.
-
- This can be disabled by setting `PHAN_DISABLE_COLOR_OUTPUT=1` or by passing the flag `--no-color`.
-+ Colorize output of `--help` and `--extended-help` when `--color` is used or the terminal supports it.
- This can be disabled by setting `PHAN_DISABLE_COLOR_OUTPUT=1` or by passing the flag `--no-color`.
-
-New features(Analysis):
-+ Support unary and binary expressions on literals/constants in conditions. (#2812)
- (e.g. `assert($x === -(1))` and `assert($x === 2+2)` now infer that $x is -1 and 4, respectively)
-+ Infer that static variables with no default are `null`.
-+ Improve control flow analysis of unconditionally true/false branches.
-+ Improve analysis of some ways to initialize groups of static variables.
- e.g. `static $a = null; static $b = null; if ($a === null) { $a = $b = rand(0,10); } use($a, $b)`
- will now also infer that $b is non-null.
-+ Infer from `return new static();` and `return $this;` that the return type of a method is `@return static`, not `@return self` (#2797)
- (and propagate that to inherited methods)
-+ Fix some false positives when casting array types containing `static` to types containing the class or its ancestors. (#2797)
-+ Add `PhanTypeInstantiateAbstractStatic` and `PhanTypeInstantiateTraitStaticOrSelf` as lower-severity warnings about `return new self()` and `return new static()` (#2797)
- (emitted in static methods of abstract classes)
-+ Fix false positives passing `static` to other classes. (#2797)
-+ Fix false positive seen when `static` implements `ArrayAccess` (#2797)
-
-Language Server/Daemon mode:
-+ Add `--language-server-min-diagnostics-delay-ms `, to work around race conditions in some language clients.
-
-20 May 2019, Phan 2.0.0
------------------------
-
-New features(Analysis):
-+ Add early support for PHP 7.4's typed properties. (#2314)
- (This is incomplete, and does not support inheritance, assignment, impossible conditions, etc.)
-+ Change warnings about undeclared `$this` into a critical `PhanUndeclaredThis` issue. (#2751)
-+ Fix the check for `PhanUnusedVariableGlobal` (#2768)
-+ Start work on supporting analyzing PHP 7.4's unpacking inside arrays. (e.g. `[1, 2, ...$arr1, 5]`) (#2779)
- NOTE: This does not yet check all types of errors, some code is unmigrated, and the polyfill does not yet support this.
-+ Improve the check for invalid array unpacking in function calls with iterable/Traversable parameters. (#2779)
-
-Plugins:
-+ Improve help messages for `internal/dump_fallback_ast.php` (this tool may be of use when developing plugins)
-
-Bug fixes:
-+ Work around issues parsing binary operators in PHP 7.4-dev.
- Note that the latest version of php-ast (currently 1.0.2-dev) should be installed if you are testing Phan with PHP 7.4-dev.
-
-13 May 2019, Phan 2.0.0-RC2
------------------------
-
-New features(Analysis):
-+ Support analysis of PHP 7.4's short arrow function syntax (`fn ($arg) => expr`) (#2714)
- (requires php-ast 1.0.2dev or newer)
-
- Note that the polyfill does not yet support this syntax.
-+ Infer the return types of PHP 7.4's magic methods `__serialize()` and `__unserialize()`. (#2755)
- Improve analysis of return types of other magic methods such as `__sleep()`.
-+ Support more of PHP 7.4's function signatures (e.g. `WeakReference`) (#2756)
-+ Improve detection of unused variables inside of loops/branches.
-
-Plugins:
-+ Detect some new php 7.3 functions (`array_key_first`, etc.) in `UseReturnValuePlugin`.
-+ Don't emit a `PhanNativePHPSyntaxCheckPlugin` error in `InvokePHPNativeSyntaxCheckPlugin` due to a shebang before `declare(strict_types=1)`
-+ Fix edge cases running `PhanNativePHPSyntaxCheckPlugin` on Windows (in language server/daemon mode)
-
-Bug fixes:
-+ Analyze the remaining expressions in a statement after emitting `PhanTraitParentReference` (#2750)
-+ Don't emit `PhanUndeclaredVariable` within a closure if a `use` variable was undefined outside of it. (#2716)
-
-09 May 2019, Phan 2.0.0-RC1
------------------------
-
-New features(CLI, Configs):
-+ Enable language server features by default. (#2358)
- `--language-server-disable-go-to-definition`, `--language-server-disable-hover`, and `--language-server-disable-completion`
- can be used to disable those features.
-
-Backwards Incompatible Changes:
-+ Drop support for running Phan with PHP 7.0. (PHP 7.0 reached its end of life in December 2018)
- Analyzing codebases with `--target-php-version 7.0` continues to be supported.
-+ Require php-ast 1.0.1 or newer (or the absence of php-ast with `--allow-polyfill-parser`)
- Phan switched from using [AST version 50 to version 70](https://github.com/nikic/php-ast#ast-versioning).
-
-Plugins:
-+ Change `PluginV2` to `PluginV3`
- `PluginV2` and its capabilities will continue to work to make migrating to Phan 2.x easier, but `PluginV2` is deprecated and will be removed in Phan 3.
-
- `PluginV3` has the same APIs and capabilities as PluginV2, but uses PHP 7.1 signatures (`void`, `?MyClass`, etc.)
-+ Third party plugins may need to be upgraded to support changes in AST version 70, e.g. the new node kinds `AST_PROP_GROUP` and `AST_CLASS_NAME`
-+ Add `PHPDocToRealTypesPlugin` to suggest real types to replace (or use alongside) phpdoc return types.
- This does not check that the phpdoc types are correct.
-
- `--automatic-fix` can be used to automate making these changes for issues that are not suppressed.
-+ Add `PHPDocRedundantPlugin` to detect functions/methods/closures where the doc comment just repeats the types in the signature.
- (or when other parts don't just repeat information, but the `@return void` at the end is redundant)
-+ Add a `BeforeAnalyzePhaseCapability`. Unlike `BeforeAnalyzeCapability`, this will run after methods are analyzed, not before.
-
-09 May 2019, Phan 1.3.4
------------------------
-
-Bug fixes:
-+ Fix bug in Phan 1.3.3 causing polyfill parser to be used if the installed version of php-ast was older than 1.0.1.
-
-08 May 2019, Phan 1.3.3
------------------------
-
-New features(CLI, Configs):
-+ Make the progress bar guaranteed to display 100% at the end of the analysis phase (#2694)
- Print a newline to stderr once Phan is done updating the progress bar.
-+ Add `maximum_recursion_depth` - This setting specifies the maximum recursion depth that
- can be reached during re-analysis.
- Default is 2.
-+ Add `--constant-variable-detection` - This checks for variables that can be replaced with literals or constants. (#2704)
- This is almost entirely false positives in most coding styles, but may catch some dead code.
-+ Add `--language-server-disable-go-to-definition`, `--language-server-disable-hover`, and `--language-server-disable-completion`
- (These are already disabled by default, but will be enabled by default in Phan 2.0)
-
-New features(Analysis):
-+ Emit `PhanDeprecatedClassConstant` for code using a constant marked with `@deprecated`.
-+ When recursively inferring the return type of `BaseClass::method()` from its return statements,
- make that also affect the inherited copies of that method (`SubClass::method()`). (#2718)
- This change is limited to methods with no return type in the phpdoc or real signature.
-+ Improve unused variable detection: Detect more unused variables for expressions such as `$x++` and `$x -= 2` (#2715)
-+ Fix false positive `PhanUnusedVariable` after assignment by reference (#2730)
-+ Warn about references, static variables, and uses of global variables that are probably unnecessary (never used/assigned to afterwards) (#2733)
- New issue types: `PhanUnusedVariableReference`, `PhanUnusedVariableGlobal`, `PhanUnusedVariableStatic`
-+ Warn about invalid AST nodes for defaults of properties and static variables. (#2732)
-+ Warn about union types on properties that might have an incomplete suffix. (e.g. `/** @var arrayprop` inside of function scopes. (#805, #204)
-
- This supports only one level of nesting. (i.e. Phan will not track `$this->prop->subProp` or `$this->prop['field']`)
-
- Properties are deliberately tracked for just the variable `$this` (which can't be reassigned), and not other variables.
-+ Fix false positives with dead code detection for internal stubs in `autoload_internal_extension_signatures`. (#2605)
-+ Add a way to escape/unescape array shape keys (newlines, binary data, etc) (#1664)
-
- e.g. `@return array{\n\r\t\x01\\:true}` in phpdoc would correspond to `return ["\n\r\t\x01\\" => true];`
-
-Plugins:
-+ Add `FFIAnalysisPlugin` to avoid false positives in uses of PHP 7.4's `FFI\CData` (#2659)
- (C data of scalar types may be read and assigned as regular PHP data. `$x = FFI::new(“int”); $x = 42;`)
-
- Note that this is only implemented for variables right now.
-
-20 Apr 2019, Phan 1.3.1
------------------------
-
-New features(Analysis):
-+ Fix false positive `PhanTypeMismatchReturnNullable` and `PhanTypeMismatchArgumentNullable` introduced in 1.3.0 (#2667)
-+ Emit `PhanPossiblyNullTypeMismatchProperty` instead of `PhanTypeMismatchProperty` when assigning `?T`
- to a property expecting a compatible but non-nullable type.
-
- (The same issue was already emitted when the internal union type representation was `T|null` (not `?T`) and strict property type checking was enabled)
-
-Plugins:
-+ Add `PossiblyStaticMethodPlugin` to detect instance methods that can be changed to static methods (#2609)
-+ Fix edge cases checking if left/right-hand side of binary operations are numbers in `NumericalComparisonPlugin`
-
-19 Apr 2019, Phan 1.3.0
------------------------
-
-New features(Analysis):
-+ Fix false positive `UnusedSuppression` when a doc comment suppresses an issue about itself. (#2571)
-+ Improve analysis of argument unpacking with reference parameters, fix false positive `PhanTypeNonVarPassByRef` (#2646)
-+ In issue descriptions and suggestions, replace invalid utf-8 (and literal newlines) with placeholders (#2645)
-+ Suggest typo fixes in `PhanMisspelledAnnotation` for `@phan-*` annotations. (#2640)
-+ Emit `PhanUnreferencedClass` when the only references to a class or its elements are within that class.
- Previously, it would fail to be emitted when a class referenced itself.
-+ Emit `PhanUnusedPublicNoOverrideMethodParameter` for method parameters that are not overridden and are not overrides. (#2539)
-
- This is expected to have a lower false positive rate than `PhanUnusedPublicMethodParameter` because parameters
- might be unused by some of the classes overriding/implementing a method.
-
- Setting `unused_variable_detection_assume_override_exists` to true in `.phan/config.php` can be used to continue emitting the old issue names instead of `*NoOverride*` equivalents.
-+ Warn about more numeric operations(+, /, etc) on unknown strings and non-numeric literal strings (#2656)
- The settings `scalar_implicit_cast` and `scalar_implicit_partial` affect this for the `string` union type but not for literals.
-+ Improve types inferred from checks such as `if (is_array($var['field'])) { use($var['field']); }` and `if ($var['field'] instanceof stdClass) {...}` (#2601)
-+ Infer that $varName is non-null and an object for conditions such as `if (isset($varName->field['prop']))`
-+ Be more consistent about warning when passing `?SomeClass` to a parameter expecting non-null `SomeClass`.
-+ Add `PhanTypeMismatchArgumentNullable*` and `PhanTypeMismatchReturnNullable` when the main reason the type check failed was nullability
-
- Previously, Phan would fail to detect that some nullable class instances were incompatible with the non-null expected types in some cases.
-+ Improve analysis of negation of `instanceof` checks on nullable types. (#2663)
-
-Language Server/Daemon mode:
-+ Analyze new but unsaved files, if they would be analyzed by Phan once they actually were saved to disk.
-
-Plugins:
-+ Warn about assignments where the left-hand and right-hand side are the same expression in `DuplicateExpressionPlugin` (#2641)
- New issue type: `PhanPluginDuplicateExpressionAssignment`
-
-Deprecations:
-+ Print a message to stderr if the installed php-ast version is older than 1.0.1.
- A future major Phan version of Phan will probably depend on AST version 70 to support new syntax found in PHP 7.4.
-+ Print a message to stderr if the installed PHP version is 7.0.
- A future major version of Phan will require PHP 7.1+ to run.
-
- Phan will still continue to support setting `target_php_version` to `'7.0'` and `--target-php-version 7.0` in that release.
-
-Bug fixes:
-+ Fix edge cases in how Phan checks if files are in `exclude_analysis_directory_list` (#2651)
-+ Fix crash parsing comma in string literal in array shape (#2597)
- (e.g. `@param array{0:'test,other'} $x`)
-
-06 Apr 2019, Phan 1.2.8
------------------------
-
-New features(CLI):
-+ Fix edge cases initializing directory list and target versions of config files (#2629, #2160)
-
-New features(Analysis):
-+ Support analyzing `if (false !== is_string($var))` and similar complex conditions. (#2613)
-+ Emit `PhanUnusedGotoLabel` for labels without a corresponding `goto` in the same function scope. (#2617)
- (note that Phan does not understand the effects of goto on control flow)
-+ Don't emit `PhanUnreferencedClass` for anonymous classes. (#2604)
-+ Detect undeclared types in phpdoc callables and closures. (#2562)
-+ Warn about unreferenced PHPDoc `@property`/`@property-read`/`@property-write` annotations in `--dead-code-detection`.
- New issue types: `PhanWriteOnlyPHPDocProperty`, `PhanReadOnlyPHPDocProperty`, `PhanUnreferencedPHPDocProperty`.
-
-Maintenance:
-+ Make escaped string arguments fit on a single line for more issue types.
-+ Rename `UseContantNoEffect` to `UseConstantNoEffect`.
-+ Rename `AddressableElement::isStrictlyMoreVisibileThan()` to `isStrictlyMoreVisibleThan`.
-
-Plugins:
-+ Fix edge case where `WhitespacePlugin` would not detect trailing whitespace.
-+ Detect `PhanPluginDuplicateSwitchCaseLooseEquality` in `DuplicateArrayKeyPlugin`. (#2310)
- Warn about cases of switch cases that are loosely equivalent to earlier cases, and which might get unexpectedly missed because of that. (e.g. `0` and `'foo'`)
-
-Bug fixes:
-+ Catch and handle "Cannot access parent when not in object context" when parsing global functions incorrectly using `parent` parameter type. (#2619)
-+ Improve the performance of `--progress-bar` when the terminal width can't be computed by symfony. (#2634)
-
-22 Mar 2019, Phan 1.2.7
------------------------
-
-New features(CLI,Configs)
-+ Use a progress bar for `--progress-bar` on Windows instead of printing dots. (#2572)
- Use ASCII characters for the progress bar instead of UTF-8 if the code page isn't utf-8 or if Phan can't infer the terminal's code page (e.g. in PHP < 7.1)
-
-Language Server/Daemon mode:
-+ Make "Go to Definition" work when the constructor of a user-defined class is inherited from an internal class. (#2598)
-
-Maintenance:
-+ Update tolerant-php-parser version to 0.0.17
- (fix parsing of some edge cases, minor performance improvement, prepare to support php 7.4 in polyfill)
-+ Use paratest for phpunit tests in Travis/Appveyor
-
-Bug fixes:
-+ Make the codeclimate plugin analyze the correct directory. Update the dependencies of the codeclimate plugin. (#2139)
-+ Fix false positive checking for undefined offset with `$foo['strVal']` when strings are in the union type of `$foo` (#2541)
-+ Fix crash in analysis of `call_user_func` (#2576)
-+ Fix a false positive PhanTypeInvalidDimOffset for `unset` on array fields in conditional branches. (#2591)
-+ Fix edge cases where types for variables inferred in one branch affect unrelated branches (#2593)
-
-09 Mar 2019, Phan 1.2.6
------------------------
-
-New features(CLI,Configs)
-+ Add config `enable_extended_internal_return_type_plugins` to more aggressively
- infer literal values for functions such as `json_decode`, `strtolower`, `implode`, etc. (disabled by default),
-+ Make `--dead-code-detection` load `UnreachableCodePlugin` if that plugin isn't already loaded (#1824)
-+ Add `--automatic-fix` to fix any issues Phan is capable of fixing
- (currently a prototype. Fixes are guessed based on line numbers).
- This is currently limited to:
- - unreferenced use statements on their own line (requires `--dead-code-detection`).
- - issues emitted by `WhitespacePlugin` (#2523)
- - unqualified global function calls/constant uses from namespaces (requires `NotFullyQualifiedUsagePlugin`)
- (will do the wrong thing for functions that are both global and in the same namespace)
-
-New features(Analysis):
-+ Make Phan infer more precise literal types for internal constants such as `PHP_EOF`.
- These depend on the PHP binary used to run Phan.
-
- In most cases, that shouldn't matter.
-+ Emit `PhanPluginPrintfVariableFormatString` in `PrintfCheckerPlugin` if the inferred format string isn't a single literal (#2431)
-+ Don't emit `PhanWriteOnlyPrivateProperty` with dead code detection when at least one assignment is by reference (#1658)
-+ Allow a single hyphen between words in `@suppress issue-name` annotations (and `@phan-suppress-next-line issue-name`, etc.) (#2515)
- Note that CamelCase issue names are conventional for Phan and its plugins.
-+ Emit `PhanCompatibleAutoload` when using `function __autoload() {}` instead of `spl_autoload_register() {}` (#2528)
-+ Be more aggressive about inferring that the result is `null` when accessing array offsets that don't exist. (#2541)
-+ Fix a false positive analyzing `array_map` when the closure has a dependent return type. (#2554)
-+ Emit `PhanNoopArrayAccess` when an array field is fetched but not used (#2538)
-
-Language Server/Daemon mode:
-+ Fix an error in the language server on didChangeConfiguration
-+ Show hover text of ancestors for class elements (methods, constants, and properties) when no summary is available for the class element. (#1945)
-
-Maintenance
-+ Don't exit if the AST version Phan uses (currently version 50) is deprecated by php-ast (#1134)
-
-Plugins:
-+ Write `PhanSelfCheckPlugin` for self-analysis of Phan and plugins for Phan. (#1576)
- This warns if too many/too few arguments are provided for the issue template when emitting an issue.
-+ Add `AutomaticFixCapability` for plugins to provide fixes for issues for `--automatic-fix` (#2549)
-+ Change issue messages for closures in `UnknownElementTypePlugin` (#2543)
-
-Bug fixes:
-+ Fix bug: `--ignore-undeclared` failed to properly ignore undeclared elements since 1.2.3 (#2502)
-+ Fix false positive `PhanTypeInvalidDimOffset` for functions nested within other functions.
-+ Support commas in the union types of parameters of magic methods (#2507)
-+ Fix parsing `?(A|B|C)` (#2551)
-
-27 Feb 2019, Phan 1.2.5
------------------------
-
-New features(Analysis):
-+ Cache ASTs generated by the polyfill to disk by default, improving performance of the polyfill parser.
- (e.g. affects use cases where `php-ast` is not installed and `--use-polyfill-parser` is enabled).
-
- ASTs generated by the native parser (`php-ast`) are not cached.
-
- (For the language server/daemon mode, Phan stops reading from/writing to the cache after it finishes initializing)
-+ Be more consistent warning about invalid callables passed to internal functions such as `register_shutdown_function` (#2046)
-+ Add `@phan-suppress-next-next-line` to suppress issues on the line 2 lines below the comment. This is useful in block comments/doc comments. (#2470)
-+ Add `@phan-suppress-previous-line` to suppress issues on the line above the comment. (#2470)
-+ Detect `PhanRedefineClassConstant` and `PhanRedefineProperty` when class constants and properties are redefined. (#2492)
-
-New features(CLI):
-+ Add `--disable-cache` to disable the disk cache of ASTs generated by the polyfill.
-
-Language Server/Daemon mode:
-+ Show plaintext summaries of internal classes, functions, methods, constants, and properties when hover text is requested.
-+ Show descriptions of superglobals and function parameters when hovering over a variable.
-
-Maintenance
-+ Render the constants in `PhanUndeclaredMagicConstant` as `__METHOD__` instead of `MAGIC_METHOD`
-
-Plugins:
-+ Add `WhitespacePlugin` to check for trailing whitespace, tabs, and carriage returns in PHP files.
-+ Add `HandleLazyLoadInternalFunctionCapability` so that plugins can modify Phan's information about internal global functions when those functions are loaded after analysis starts.
-+ Add `SuspiciousParamOrderPlugin` which guesses if arguments to functions are out of order based on the names used in the argument expressions.
-
- E.g. warns about invoking `function example($first, $second, $third)` as `example($mySecond, $myThird, $myFirst)`
-+ Warn if too many arguments are passed to `emitIssue`, `emitPluginIssue`, etc. (#2481)
-
-Bug fixes:
-+ Support parsing nullable template types in PHPDoc (e.g. `@return ?T`)
-+ Allow casting `null` to `?\MyClass<\Something>`.
-+ Fix false positive PhanUndeclaredMagicConstant for `__METHOD__` and `__FUNCTION__` in function/method parameters (#2490)
-+ More consistently emit `PhanParamReqAfterOpt` in methods (#1843).
-
-18 Feb 2019, Phan 1.2.4
------------------------
-
-New features(Analysis):
-+ Inherit more specific phpdoc template types even when there are real types in the signature. (#2447)
- e.g. inherit `@param MyClass` and `@return MyClass` from the
- ancestor class of `function someMethod(MyClass $x) : MyClass {}`.
-
- This is only done when each phpdoc type is compatible with the real signature type.
-+ Warn about `@var Type` without a variable name in doc comments of function-likes (#2445)
-+ Infer side effects of `array_push` and `array_unshift` on complex expressions such as properties. (#2365)
-+ Warn when a non-string is used as a property name for a dynamic property access (#1402)
-+ Don't emit `PhanAccessMethodProtected` for `if ($this instanceof OtherClasslike) { $this->protectedMethod(); }` (#2372)
- (This only applies to uses of the variable `$this`, e.g. in closures or when checking interfaces)
-
-Plugins:
-+ Warn about unspecialized array types of elements in UnknownElementTypePlugin. `mixed[]` can be used when absolutely nothing is known about the array's key or value types.
-+ Warn about failing to use the return value of `var_export($value, true)` (and `print_r`) in `UseReturnValuePlugin` (#2391)
-+ Fix plugin causing `InvalidVariableIssetPlugin` to go into an infinite loop for `isset(self::CONST['offset'])` (#2446)
-
-Maintenance
-+ Limit frames of stack traces in crash reports to 1000 bytes of encoded data. (#2444)
-+ Support analysis of the upcoming php 7.4 `??=` operator (#2369)
-+ Add a `target_php_version` option for PHP 7.4.
- This only affects inferred function signatures, and does not allow parsing newer syntax.
-
-Bug fixes:
-+ Fix a crash seen when parsing return typehint for `Closure` in a different case (e.g. `closure`) (#2438)
-+ Fix an issue loading the autoloader multiple times when the `vendor` folder is not lowercase on case-sensitive filesystems (#2440)
-+ Fix bug causing template types on methods to not work properly when inherited from a trait method.
-+ Catch and warn when declaring a constant that would conflict with built in keywords (true/false/null) and prevent it from affecting inferences. (#1642)
-
-10 Feb 2019, Phan 1.2.3
------------------------
-
-New features(CLI):
-+ Add `-I ` as an alias of `--include-analysis-file-list `.
-+ Support repeating the include option (`-I -I `)
- and the exclude option (`-3 -3 `).
-
-New features(Analysis):
-+ Inherit more specific phpdoc types even when there are real types in the signature. (#2409)
- e.g. inherit `@param array` and `@return MyClass[]` from the
- ancestor class of `function someMethod(array $x) : array {}`.
-
- This is only done when each phpdoc type is compatible with the real signature type.
-+ Detect more expressions without side effects: `PhanNoopEmpty` and `PhanNoopIsset` (for `isset(expr)` and `empty(expr)`) (#2389)
-+ Also emit `PhanNoopBinaryOperator` for the `??`, `||`, and `&&` operators,
- but only when the result is unused and the right-hand side has no obvious side effects. (#2389)
-+ Properly analyze effects of a property/field access expression as the key of a `foreach` statement. (#1601)
-+ Emit `PhanTypeInstantiateTrait` when calling `new TraitName()` (#2379)
-+ Emit `PhanTemplateTypeConstant` when using `@var T` on a class constant's doc comment. (#2402)
-+ Warn for invalid operands of a wider variety of binary operators (`/`, `/=`, `>>`, `<<=`, `-`, `%`, `**`, etc) (#2410)
- New issue types: `PhanTypeInvalidRightOperandOfIntegerOp` and `PhanTypeInvalidLeftOperandOfIntegerOp`.
- Also, mention the operator name in the issue message.
-
-Language Server/Daemon mode:
-+ Attempted fixes for bugs with issue filtering in the language server on Windows.
-+ Add `--language-server-disable-output-filter`, which disables the language server filter to limit outputted issues
- to those in files currently open in the IDE.
-
-Maintenance
-+ Don't emit a warning to stderr when `--language-server-completion-vscode` is used.
-+ Catch the rare RecursionDepthException in more places, improve readability of its exception message. (#2386)
-+ Warn that php-ast 1.0.0 and older always crash with PHP 7.4-dev or newer.
-
-Bug fixes:
-+ Fix edge cases in checking if properties/methods are accessible from a trait (#2371)
-+ Fix edge cases checking for `PhanTypeInstantiateInterface` and `PhanTypeInstantiateAbstract` (#2379)
-
-Plugins:
-+ Infer a literal string return value when calling `sprintf` on known literal scalar types in `PrintfCheckerPlugin`. (#2131)
-+ Infer that `;@foo();` is not a usage of `foo()` in `UseReturnValuePlugin`. (#2412)
-+ Implement `NotFullyQualifiedUsagePlugin` to warn about uses of global functions and constants that aren't fully qualified. (#857)
-
-02 Feb 2019, Phan 1.2.2
------------------------
-
-New features(CLI):
-+ Emit a warning to stderr if no files were parsed when Phan is invoked. (#2289)
-
-New features(Analysis):
-+ Add `@phan-extends` and `@extends` as an alias of `@inherits` (#2351)
-+ Make checks such as `$x !== 'a literal'` (and `!=`) remove the literal string/int type from the union type. (#1789)
-
-Language Server/Daemon mode:
-+ Limit analysis results of the language server to only the currently open files. (#1722)
-+ Limit analysis results of Phan daemon to just the requested files in **all** output formats (#2374)
- (not just when `phan_client` post-processes the output)
-+ Make code completion immediately after typing `->` and `::` behave more consistently (#2343)
- Note: this fix only applies at the very last character of a line
-+ Be more consistent about including types in hover text for properties (#2348)
-+ Make "Go to Definition" on `new MyClass` go to `MyClass::__construct` if it exists. (#2276)
-+ Support "Go to Definition" for references to global functions and global constants in comments and literal strings.
- Previously, Phan would only look for class definitions in comments and literal strings.
-+ Fix a crash requesting completion results for some class names/global constants.
-
-Maintenance:
-+ Warn and exit immediately if any plugins are missing or invalid (instead of crashing after parsing all files) (#2099)
-+ Emit warnings to stderr if any config settings seem to be the wrong type (#2376)
-+ Standardize on logging to stderr.
-+ Add more details about the call that crashed to the crash report.
-
-Bug fixes:
-+ Emit a warning and exit if `--config-file ` does not exist (#2271)
-+ Fix inferences about `foreach ($arr as [[$nested]]) {...}` (#2362)
-+ Properly analyze accesses of `@internal` elements of the root namespace from other parts of the root namespace. (#2366)
-+ Consistently emit `UseNormalNoEffect` (etc.) when using names/functions/constants of the global scrope from the global scope.
-+ Fix a bug causing incorrect warnings due to uses of global/class constants.
-
-Plugins:
-+ Add `UseReturnValuePlugin`, which will warn about code that calls a function/method such as `sprintf` or `array_merge` without using the return value.
-
- The list it uses is not comprehensive; it is a small subset of commonly used functions.
-
- This plugin can also be configured to automatically warn about failing to use a return value of **any** user-defined or internal function-like,
- when over 98% of the other calls in the codebase did use the return value.
-
-18 Jan 2019, Phan 1.2.1
------------------------
-
-New features(CLI):
-+ Add short flags: `-S` for `--strict-type-checking`, `-C` for `--color`, `-P` for `--plugin `
-
-New features(Analysis):
-+ Infer that the result of `array_map` has integer keys when passed two or more arrays (#2277)
-+ Improve inferences about the left-hand side of `&&` statements such as `$leftVar && (other_expression);` (#2300)
-+ Warn about passing an undefined variable to a function expecting a reference parameter with a real, non-nullable type (#1344)
-+ Include variables in scope as alternative suggestions for undeclared properties (#1680)
-+ Infer a string literal when analyzing calls to `basename` or `dirname` on an expression that evaluates to a string literal. (#2323)
-+ Be stricter about warning when literal int/string values are passed to incompatible scalar types when `scalar_implicit_cast` or `scalar_implicit_partial` are used. (#2340)
-
-Maintenance:
-+ End the output for `--output-mode ` with a newline.
-+ Upgrade tolerant-php-parser, making the polyfill/fallback properly parse `$a && $b = $c` (#2180)
-+ Add updates to the function/method signature map from Psalm and PHPStan.
-
-Language Server/Daemon mode:
-+ Add `--output-mode ` to `phan_client`. (#1568)
-
- Supported formats: `phan_client` (default), `text`, `json`, `csv`, `codeclimate`, `checkstyle`, or `pylint`
-+ Add `--color` to `phan_client` (e.g. for use with `--output-mode text`)
-+ Add `--language-server-completion-vscode`. This is a workaround to make completion of variables and static properties work in [the Phan plugin for VS Code](https://github.com/tysonandre/vscode-php-phan)
-+ Include Phan's signature types in hover text for internal and user-defined methods (instead of just the real types) (#2309)
- Also, show defaults of non-nullable parameters as `= default` instead of `= null`
-+ Properly return a result set when requesting variable completion of `$` followed by nothing.
-+ Fix code completion when `--language-server-analyze-only-on-save` is on. (#2327)
-
-Plugins:
-+ Add a new issue type to `DuplicateExpressionPlugin`: `PhanPluginBothLiteralsBinaryOp`. (#2297)
-
- (warns about suspicious expressions such as `null == 'a literal` in `$x ?? null == 'a literal'`)
-+ Support `assertInternalType` in `PHPUnitAssertionPlugin` (#2290)
-+ Warn when identical dynamic expressions (e.g. variables, function calls) are used as array keys in `DuplicateArrayKeyPlugin`
-+ Allow plugins to include a `Suggestion` when calling `$this->emitIssue()`
-
-05 Jan 2019, Phan 1.2.0
------------------------
-
-New features(Analysis):
-+ Infer match keys of `$matches` for a wider range of regexes (e.g. non-capturing groups, named subgroups) (#2294)
-+ Improve detection of invalid arguments in code implicitly calling `__invoke`.
-+ Support extracting template types from more forms of `callable` types. (#2264)
-+ Support `@phan-assert`, `@phan-assert-true-condition`, and `@phan-assert-false-condition`.
- Examples of side effects when this annotation is used on a function/method declaration:
-
- - `@phan-assert int $x` will assert that the argument to the parameter `$x` is of type `int`.
- - `@phan-assert !false $x` will assert that the argument to the parameter `$x` is not false.
- - `@phan-assert !\Traversable $x` will assert that the argument to the parameter `$x` is not `Traversable` (or a subclass)
- - `@phan-assert-true-condition $x` will make Phan infer that the argument to parameter `$x` is truthy if the function returned successfully.
- - `@phan-assert-false-condition $x` will make Phan infer that the argument to parameter `$x` is falsey if the function returned successfully.
- - This can be used in combination with Phan's template support.
-
- See [tests/plugin_test/src/072_custom_assertions.php](tests/plugin_test/src/072_custom_assertions.php) for example uses of these annotations.
-+ Suggest typo fixes when emitting `PhanUnusedVariable`, if only one definition was seen. (#2281)
-+ Infer that `new $x` is of the template type `T` if `$x` is `class-string` (#2257)
-
-Plugins:
-- Add `PHPUnitAssertionPlugin`.
- This plugin will make Phan infer side effects of some of the helper methods PHPUnit provides within test cases.
-
- - Infer that a condition is truthy from `assertTrue()` and `assertNotFalse()` (e.g. `assertTrue($x instanceof MyClass)`)
- - Infer that a condition is null/not null from `assertNull()` and `assertNotNull()`
- - Infer class type of `$actual` from `assertInstanceOf(MyClass::class, $actual)`
- - Infer that `$actual` has the exact type of `$expected` after calling `assertSame($expected, $actual)`
- - Other methods aren't supported yet.
-
-Bug fixes:
-- Infer that some internal classes' properties (such as `\Exception->message`) are protected (#2283)
-- Fix a crash running Phan without php-ast when no files were parsed (#2287)
-
-30 Dec 2018, Phan 1.1.10
-------------------------
-
-New features(Analysis):
-+ Add suggestions if to `PhanUndeclaredConstant` issue messages about undeclared global constants, if possible. (#2240)
- Suggestions include other global constants, variables, class constants, properties, and function names.
-+ Warn about `continue` and `break` with no matching loop/switch scope. (#1869)
- New issue types: `PhanContinueOrBreakTooManyLevels`, `PhanContinueOrBreakNotInLoop`
-+ Warn about `continue` statements targeting `switch` control structures (doing the same thing as a `break`) (#1869)
- New issue types: `PhanContinueTargetingSwitch`
-+ Support inferring template types from array keys.
- int/string/mixed can be inferred from `array` when `@template TKey` is in the class/function-like scope.
-+ Phan can now infer template types from even more categories of parameter types in constructors and regular functions/methods. (#522)
-
- - infer `T` from `Closure(T):\OtherClass` and `callable(T):\OtherClass`
- - infer `T` from `array{keyName:T}`
- - infer `TKey` from `array` (as int, string, or mixed)
-
-Bug fixes:
-+ Refactor the way `@template` annotations are parsed on classes and function-likes to avoid various edge cases (#2253)
-+ Fix a bug causing Phan to fail to analyze closures/uses of closures when used inline (e.g. in function calls)
-
-27 Dec 2018, Phan 1.1.9
------------------------
-
-New features(Analysis):
-+ Warn about `split` and other functions that were removed in PHP 7.0 by default. (#2235, #2236)
- (`target_php_version` can now be set to `'5.6'` if you have a PHP 5.6 project that uses those)
-+ Fix a false positive `PhanUnreferencedConstant` seen when calling `define()` with a dynamic name. (#2245)
-+ Support analyzing `@template` in PHPDoc of closures, functions and methods. (#522)
-
- Phan currently requires the template type to be part of the parameter type(s) as well as the return type.
-
- New issue types: `PhanTemplateTypeNotUsedInFunctionReturn`, `PhanTemplateTypeNotDeclaredInFunctionParams`
-+ Make `@template` on classes behave more consistently. (#522)
-
- Phan will now check the union types of parameters instead of assuming that arguments will always occur in the same order and positions as `@template`.
-+ Phan can now infer template types from more categories of parameter types in constructors and regular functions/methods. (#522)
- - `@param T[]`
- - `@param Closure():T`
- - `@param OtherClass<\stdClass,T>`
-
- - Note that this implementation is currently incomplete - Phan is not yet able to extract `T` from types not mentioned here (e.g. `array{0:T}`, `Generator