diff --git a/src/Sender/Frontend/Event.php b/src/Sender/Frontend/Event.php index 48d56434..bd2f68ea 100644 --- a/src/Sender/Frontend/Event.php +++ b/src/Sender/Frontend/Event.php @@ -21,7 +21,7 @@ public function __construct( public readonly string $type, public readonly array $payload, public readonly float $timestamp, - public readonly ?string $projectId = null, + public readonly ?string $project = null, public readonly ?\ArrayAccess $assets = null, ) {} @@ -32,7 +32,7 @@ public function jsonSerialize(): array 'type' => $this->type, 'payload' => $this->payload, 'timestamp' => $this->timestamp, - 'project_id' => $this->projectId, + 'project' => $this->project, ]; } } diff --git a/src/Sender/Frontend/Mapper/VarDump.php b/src/Sender/Frontend/Mapper/VarDump.php index 2564f800..aa3d779f 100644 --- a/src/Sender/Frontend/Mapper/VarDump.php +++ b/src/Sender/Frontend/Mapper/VarDump.php @@ -18,18 +18,34 @@ final class VarDump { public function map(VarDumperFrame $frame): Event { - $payload = $this->parse($frame->dump); + $parsed = $this->parse($frame->dump); + + $dataContext = $parsed[0]->getContext(); + + $payload = [ + 'type' => $parsed[0]->getType(), + 'value' => $this->convertToPrimitive($parsed[0]), + 'label' => $dataContext['label'] ?? null, + ]; + + if (\array_key_exists('language', $dataContext) && \is_string($dataContext['language'])) { + $payload['type'] = 'code'; + $payload['language'] = $dataContext['language']; + } + + $project = \array_key_exists('project', $dataContext) && \is_scalar($dataContext['project']) + ? (string) $dataContext['project'] + : null; + return new Event( uuid: Uuid::generate(), type: 'var-dump', payload: [ - 'payload' => [ - 'type' => $payload[0]->getType(), - 'value' => $this->convertToPrimitive($payload[0]), - ], - 'context' => $payload[1], + 'payload' => $payload, + 'context' => $parsed[1], ], timestamp: (float) $frame->time->format('U.u'), + project: $project, ); } @@ -38,7 +54,7 @@ public function map(VarDumperFrame $frame): Event */ private function parse(string $message): array { - $payload = @\unserialize(\base64_decode($message), ['allowed_classes' => [Data::class, Stub::class]]); + $payload = @\unserialize(\base64_decode($message, true), ['allowed_classes' => [Data::class, Stub::class]]); // Impossible to decode the message, give up. if ($payload === false) { @@ -59,7 +75,7 @@ private function parse(string $message): array private function convertToPrimitive(Data $data): string|null { - if (\in_array($data->getType(), ['string', 'boolean'])) { + if (\in_array($data->getType(), ['string', 'boolean'], true)) { /** @psalm-suppress PossiblyInvalidCast */ return (string) $data->getValue(); }