Compare 316bca4 ... +21 ... 3bee38f

Coverage Reach
Auth/SignIn/GuzzleHandler.php Auth/SignIn/FailedToSignIn.php Auth/IdTokenVerifier.php Auth/ApiClient.php Auth/ActionCodeSettings/ValidatedActionCodeSettings.php Auth/ActionCodeSettings/RawActionCodeSettings.php Auth/CreateActionLink/GuzzleApiClientHandler.php Auth/CreateActionLink/FailedToCreateActionLink.php Auth/CreateActionLink/ApiRequest.php Auth/UserRecord.php Auth/SendActionLink/FailedToSendActionLink.php Auth/SendActionLink/ApiRequest.php Auth/SendActionLink/GuzzleApiClientHandler.php Auth/SignInResult.php Auth/CustomTokenViaGoogleIam.php Auth/SignInWithIdpCredentials.php Auth/SendActionLink.php Auth/CreateActionLink.php Auth/UserMetaData.php Auth/UserInfo.php Auth/SignInWithEmailAndOobCode.php Auth/SignInWithEmailAndPassword.php Auth/SignInWithRefreshToken.php Auth/SignInWithCustomToken.php Auth/DisabledLegacyIdTokenVerifier.php Auth/DisabledLegacyCustomTokenGenerator.php Auth/SignInAnonymously.php Messaging/CloudMessage.php Messaging/MulticastSendReport.php Messaging/Notification.php Messaging/Http/Request/SendMessages.php Messaging/Http/Request/SendMessageToTokens.php Messaging/Http/Request/ValidateMessage.php Messaging/Http/Request/SendMessage.php Messaging/SendReport.php Messaging/RegistrationTokens.php Messaging/AppInstance.php Messaging/MessageTarget.php Messaging/MessageData.php Messaging/AppInstanceApiClient.php Messaging/Condition.php Messaging/TopicSubscription.php Messaging/Topic.php Messaging/FcmOptions.php Messaging/ApiClient.php Messaging/RegistrationToken.php Messaging/ApnsConfig.php Messaging/AndroidConfig.php Messaging/WebPushConfig.php Messaging/TopicSubscriptions.php Messaging/Messages.php Messaging/RawMessageFromArray.php DynamicLink/AnalyticsInfo/GooglePlayAnalytics.php DynamicLink/AnalyticsInfo/ITunesConnectAnalytics.php DynamicLink/CreateDynamicLink.php DynamicLink/IOSInfo.php DynamicLink/EventStatistics.php DynamicLink/CreateDynamicLink/FailedToCreateDynamicLink.php DynamicLink/CreateDynamicLink/GuzzleApiClientHandler.php DynamicLink/CreateDynamicLink/ApiRequest.php DynamicLink/ShortenLongDynamicLink/FailedToShortenLongDynamicLink.php DynamicLink/ShortenLongDynamicLink/GuzzleApiClientHandler.php DynamicLink/ShortenLongDynamicLink/ApiRequest.php DynamicLink/GetStatisticsForDynamicLink/GuzzleApiClientHandler.php DynamicLink/GetStatisticsForDynamicLink/FailedToGetStatisticsForDynamicLink.php DynamicLink/GetStatisticsForDynamicLink/ApiRequest.php DynamicLink/SocialMetaTagInfo.php DynamicLink/AndroidInfo.php DynamicLink/ShortenLongDynamicLink.php DynamicLink/AnalyticsInfo.php DynamicLink/NavigationInfo.php DynamicLink/GetStatisticsForDynamicLink.php DynamicLink/DynamicLinkStatistics.php RemoteConfig/Parameter.php RemoteConfig/Template.php RemoteConfig/FindVersions.php RemoteConfig/ApiClient.php RemoteConfig/Version.php RemoteConfig/Condition.php RemoteConfig/ConditionalValue.php RemoteConfig/VersionNumber.php RemoteConfig/DefaultValue.php RemoteConfig/User.php RemoteConfig/TagColor.php RemoteConfig/UpdateType.php RemoteConfig/UpdateOrigin.php Database/Reference.php Database/Query/Filter/EndAt.php Database/Query/Filter/EqualTo.php Database/Query/Filter/StartAt.php Database/Query/Filter/LimitToLast.php Database/Query/Filter/LimitToFirst.php Database/Query/Filter/Shallow.php Database/Query/Sorter/OrderByChild.php Database/Query/Sorter/OrderByKey.php Database/Query/Sorter/OrderByValue.php Database/Query.php Database/ApiClient.php Database/Reference/Validator.php Database/Snapshot.php Database/Transaction.php Database/RuleSet.php Factory.php Auth.php Exception/AuthApiExceptionConverter.php Exception/MessagingApiExceptionConverter.php Exception/Database/TransactionFailed.php Exception/Database/ReferenceHasNotBeenSnapshotted.php Exception/Database/UnsupportedQuery.php Exception/Messaging/ServerUnavailable.php Exception/Messaging/AuthenticationError.php Exception/Messaging/InvalidMessage.php Exception/Messaging/MessagingError.php Exception/Messaging/NotFound.php Exception/Messaging/ServerError.php Exception/RemoteConfigApiExceptionConverter.php Exception/DatabaseApiExceptionConverter.php Exception/Auth/RevokedIdToken.php Exception/RemoteConfig/VersionNotFound.php Http/ResponseWithSubResponses.php Http/Middleware.php Http/RequestWithSubRequests.php Http/ErrorResponseParser.php Http/Requests.php Http/Responses.php Request/UpdateUser.php Request/CreateUser.php Messaging.php Value/Url.php Value/PhoneNumber.php Value/Email.php Value/ClearTextPassword.php Value/Uid.php Value/Provider.php DynamicLinks.php Util/DT.php Util/JSON.php Util/Deprecation.php ServiceAccount.php RemoteConfig.php Database.php DynamicLink.php Storage.php Project/ProjectId.php Firestore.php Util.php

Flags

Flags have been temporarily removed from this view while the flagging feature is refactored for better performance and user experience.

You can still use flags when viewing individual files. Flag-level thresholds will also remain on pull and merge requests in your repository provider.

More information can be found in our documentation.


@@ -15,6 +15,9 @@
Loading
15 15
    /** @var DateTimeImmutable|null */
16 16
    public $lastLoginAt;
17 17
18 +
    /** @var DateTimeImmutable|null */
19 +
    public $passwordUpdatedAt;
20 +
18 21
    /**
19 22
     * @param array<string, mixed> $data
20 23
     */
@@ -27,6 +30,10 @@
Loading
27 30
            $metadata->lastLoginAt = DT::toUTCDateTimeImmutable($data['lastLoginAt']);
28 31
        }
29 32
33 +
        if ($data['passwordUpdatedAt'] ?? null) {
34 +
            $metadata->passwordUpdatedAt = DT::toUTCDateTimeImmutable($data['passwordUpdatedAt']);
35 +
        }
36 +
30 37
        return $metadata;
31 38
    }
32 39

@@ -27,6 +27,13 @@
Loading
27 27
                throw new InvalidArgumentException('Message data must be a one-dimensional array of string(able) keys and values.');
28 28
            }
29 29
30 +
            if (self::isBinary((string) $value)) {
31 +
                throw new InvalidArgumentException(
32 +
                    "The message data field '{$key}' seems to contain binary data. As this can lead to broken messages, "
33 +
                    .'please convert it to a string representation first, e.g. with bin2hex() or base64encode().'
34 +
                );
35 +
            }
36 +
30 37
            $messageData->data[(string) $key] = (string) $value;
31 38
        }
32 39
@@ -48,4 +55,9 @@
Loading
48 55
    {
49 56
        return \is_null($value) || \is_scalar($value) || (\is_object($value) && \method_exists($value, '__toString'));
50 57
    }
58 +
59 +
    private static function isBinary(string $value): bool
60 +
    {
61 +
        return \mb_detect_encoding($value) === false;
62 +
    }
51 63
}

@@ -36,7 +36,10 @@
Loading
36 36
    /** @var array<int, array<string, string>> */
37 37
    private $events;
38 38
39 -
    private function __construct(array ...$events)
39 +
    /**
40 +
     * @param array<int, array<string, string>> $events
41 +
     */
42 +
    private function __construct(array $events)
40 43
    {
41 44
        $this->events = $events;
42 45
    }
@@ -46,7 +49,7 @@
Loading
46 49
     */
47 50
    public static function fromArray(array $events): self
48 51
    {
49 -
        return new self(...$events);
52 +
        return new self($events);
50 53
    }
51 54
52 55
    public function onAndroid(): self
@@ -105,7 +108,7 @@
Loading
105 108
106 109
    public function filter(callable $filter): self
107 110
    {
108 -
        return new self(...\array_filter($this->events, $filter));
111 +
        return new self(\array_filter($this->events, $filter));
109 112
    }
110 113
111 114
    /**

@@ -66,7 +66,7 @@
Loading
66 66
    private $signInHandler;
67 67
68 68
    /**
69 -
     * @param array<int, ApiClient|TokenGenerator|Verifier|SignInHandler> $x
69 +
     * @param iterable<ApiClient|TokenGenerator|Verifier|SignInHandler>|ApiClient|TokenGenerator|Verifier|SignInHandler $x
70 70
     *
71 71
     * @internal
72 72
     */

@@ -29,6 +29,14 @@
Loading
29 29
        return new self($value);
30 30
    }
31 31
32 +
    /**
33 +
     * @return string|bool
34 +
     */
35 +
    public function value()
36 +
    {
37 +
        return $this->value;
38 +
    }
39 +
32 40
    /**
33 41
     * @param array<string, string|null> $data
34 42
     */

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Everything is accounted for!

No changes detected that need to be reviewed.
What changes does Codecov check for?
Lines, not adjusted in diff, that have changed coverage data.
Files that introduced coverage data that had none before.
Files that have missing coverage data that once were tracked.

23 Commits

Hiding 3 contexual commits
+2
+2
Hiding 1 contexual commits
+12
+2
+10
Hiding 1 contexual commits
-6
-1
-5
+2
+2
+6
+6
+32
+33
-1
Files Complexity Coverage
src/Firebase ø -0.06% 95.89%
Project Totals (146 files) 1382 95.89%
Loading