diff --git a/.github/workflows/psalm.yml b/.github/workflows/psalm.yml
new file mode 100644
index 0000000..4c1f9dd
--- /dev/null
+++ b/.github/workflows/psalm.yml
@@ -0,0 +1,15 @@
+on:
+ pull_request: null
+ push:
+ branches:
+ - master
+ - '*.*'
+
+name: static analysis
+
+jobs:
+ psalm:
+ uses: spiral/gh-actions/.github/workflows/psalm.yml@master
+ with:
+ os: >-
+ ['ubuntu-latest']
diff --git a/psalm-baseline.xml b/psalm-baseline.xml
new file mode 100644
index 0000000..ba8fe60
--- /dev/null
+++ b/psalm-baseline.xml
@@ -0,0 +1,477 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ eventDispatcher?->dispatch($event)]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ scope)($handler, $bindings)]]>
+
+
+
+
+
+
+
+
+
+
+
+ binder]]>
+
+
+
+
+
+
+
+
+
+ container->get(Http::class)]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ response->getBody(),
+ true,
+ )]]>
+
+
+ cookies]]>
+ ]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ]]>
+
+
+ jobs]]>
+
+
+
+
+
+
+
+ connections[$name]]]>
+
+
+ connections[$name]]]>
+
+
+
+
+
+
+
+
+ connections]]>
+
+
+ connections[$name] = $this->container->make(FakeQueue::class, $config)]]>
+
+
+
+
+
+
+
+ data[$name] ?? []]]>
+
+
+
+ id)]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ data[$this->name][$name]]]>
+
+
+
+
+
+ get($offset)]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ bootloaders !== null
+ ? $this->bootloaders
+ : parent::defineBootloaders()]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ defineBootloaders()]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ app]]>
+
+
+ makeApp($env, $container)]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ defaultVerbosityLevel]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ getRegisteredBootloaders()]]>
+ getRegisteredBootloaders()]]>
+
+
+ ]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ]]>
+
+
+ ]]>
+
+
+
+
+
+
+
+
+
+
+ getContainer()->get(KernelInterface::class)->getRegisteredDispatchers()]]>
+
+
+
+
+
+
+
+
+
+
+
+
+ []]]>
+
+
+
+
+
+
+
+ getContainer()->make(
+ FakeEventDispatcher::class,
+ ['eventsToFake' => $eventsToFake],
+ )]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >]]>
+
+
+
+
+
+
+
+
+
+ >]]>
+
+
+
diff --git a/psalm.xml b/psalm.xml
new file mode 100644
index 0000000..61df208
--- /dev/null
+++ b/psalm.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+