diff --git a/.github/workflows/psalm.yml b/.github/workflows/psalm.yml
new file mode 100644
index 0000000..9618ed1
--- /dev/null
+++ b/.github/workflows/psalm.yml
@@ -0,0 +1,35 @@
+name: Psalm
+
+on:
+ push:
+ paths:
+ - '**.php'
+ - 'psalm*'
+
+jobs:
+ psalm:
+ name: psalm
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Setup PHP
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: '8.2'
+ extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl
+ coverage: none
+
+ - name: Cache composer dependencies
+ uses: actions/cache@v3
+ with:
+ path: vendor
+ key: composer-${{ hashFiles('composer.lock') }}
+
+ - name: Run composer install
+ run: |
+ composer config "http-basic.nova.laravel.com" "${{ secrets.NOVA_USERNAME }}" "${{ secrets.NOVA_4_LICENSE_KEY }}"
+ composer install -n --prefer-dist
+
+ - name: Run Psalm
+ run: ./vendor/bin/psalm --shepherd
diff --git a/composer.json b/composer.json
index eca6ed9..2a004f3 100644
--- a/composer.json
+++ b/composer.json
@@ -12,11 +12,12 @@
"license": "MIT",
"require": {
"php": ">=8.0",
- "laravel/nova": "^4.0"
+ "laravel/nova": "^4.20"
},
"require-dev": {
"orchestra/testbench": "^7.0",
- "phpunit/phpunit": "^9.5"
+ "phpunit/phpunit": "^9.6 || ^10.0",
+ "vimeo/psalm": "^5.6"
},
"repositories": [
{
diff --git a/psalm-baseline.xml b/psalm-baseline.xml
new file mode 100644
index 0000000..7b648e0
--- /dev/null
+++ b/psalm-baseline.xml
@@ -0,0 +1,17 @@
+
+
+
+
+ $htmlContent
+
+
+ $htmlContent
+
+
+ render
+
+
+ HtmlCard
+
+
+
diff --git a/psalm.xml b/psalm.xml
new file mode 100644
index 0000000..4f1ad3a
--- /dev/null
+++ b/psalm.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/HtmlCard.php b/src/HtmlCard.php
index bf21ccf..82cfa59 100644
--- a/src/HtmlCard.php
+++ b/src/HtmlCard.php
@@ -44,7 +44,10 @@ public function html(string $htmlContent): static
/** Set Markdown code to display in a card (converted into HTML). */
public function markdown(string $markdownContent): static
{
- $htmlContent = App::make(MarkdownConverter::class)::parse($markdownContent)->toHtml();
+ /** @var \InteractionDesignFoundation\HtmlCard\MarkdownConverter $converter */
+ $converter = App::make(MarkdownConverter::class);
+
+ $htmlContent = $converter::parse($markdownContent)->toHtml();
return $this->html($htmlContent);
}