From 58d1b880f87577a50c1be55a9deed432206df9c1 Mon Sep 17 00:00:00 2001 From: Roj Vroemen Date: Sun, 23 Mar 2025 15:44:10 +0100 Subject: [PATCH] Add strict Laravel stubs --- stubs/cast.inbound.stub | 19 +++++++++ stubs/cast.stub | 27 ++++++++++++ stubs/class.invokable.stub | 24 +++++++++++ stubs/class.stub | 16 ++++++++ stubs/console.stub | 19 +++++++++ stubs/controller.api.stub | 36 ++++++++++++++++ stubs/controller.invokable.stub | 16 ++++++++ stubs/controller.model.api.stub | 37 +++++++++++++++++ stubs/controller.model.stub | 47 +++++++++++++++++++++ stubs/controller.nested.api.stub | 38 +++++++++++++++++ stubs/controller.nested.singleton.api.stub | 33 +++++++++++++++ stubs/controller.nested.singleton.stub | 43 +++++++++++++++++++ stubs/controller.nested.stub | 48 ++++++++++++++++++++++ stubs/controller.plain.stub | 13 ++++++ stubs/controller.singleton.api.stub | 31 ++++++++++++++ stubs/controller.singleton.stub | 41 ++++++++++++++++++ stubs/controller.stub | 46 +++++++++++++++++++++ stubs/enum.backed.stub | 10 +++++ stubs/enum.stub | 10 +++++ stubs/event.stub | 33 +++++++++++++++ stubs/factory.stub | 23 +++++++++++ stubs/job.queued.stub | 23 +++++++++++ stubs/job.stub | 22 ++++++++++ stubs/listener.queued.stub | 29 +++++++++++++ stubs/listener.stub | 27 ++++++++++++ stubs/listener.typed.queued.stub | 30 ++++++++++++++ stubs/listener.typed.stub | 28 +++++++++++++ stubs/mail.stub | 44 ++++++++++++++++++++ stubs/markdown-mail.stub | 44 ++++++++++++++++++++ stubs/markdown-notification.stub | 43 +++++++++++++++++++ stubs/middleware.stub | 20 +++++++++ stubs/migration.create.stub | 23 +++++++++++ stubs/migration.stub | 20 +++++++++ stubs/migration.update.stub | 24 +++++++++++ stubs/model.pivot.stub | 12 ++++++ stubs/model.stub | 13 ++++++ stubs/notification.stub | 46 +++++++++++++++++++++ stubs/observer.plain.stub | 10 +++++ stubs/observer.stub | 35 ++++++++++++++++ stubs/pest.stub | 7 ++++ stubs/pest.unit.stub | 5 +++ stubs/policy.plain.stub | 15 +++++++ stubs/policy.stub | 47 +++++++++++++++++++++ stubs/provider.stub | 20 +++++++++ stubs/request.stub | 25 +++++++++++ stubs/resource-collection.stub | 19 +++++++++ stubs/resource.stub | 19 +++++++++ stubs/rule.stub | 19 +++++++++ stubs/scope.stub | 17 ++++++++ stubs/seeder.stub | 16 ++++++++ stubs/test.stub | 19 +++++++++ stubs/test.unit.stub | 15 +++++++ stubs/trait.stub | 10 +++++ stubs/view-component.stub | 22 ++++++++++ 54 files changed, 1378 insertions(+) create mode 100644 stubs/cast.inbound.stub create mode 100644 stubs/cast.stub create mode 100644 stubs/class.invokable.stub create mode 100644 stubs/class.stub create mode 100644 stubs/console.stub create mode 100644 stubs/controller.api.stub create mode 100644 stubs/controller.invokable.stub create mode 100644 stubs/controller.model.api.stub create mode 100644 stubs/controller.model.stub create mode 100644 stubs/controller.nested.api.stub create mode 100644 stubs/controller.nested.singleton.api.stub create mode 100644 stubs/controller.nested.singleton.stub create mode 100644 stubs/controller.nested.stub create mode 100644 stubs/controller.plain.stub create mode 100644 stubs/controller.singleton.api.stub create mode 100644 stubs/controller.singleton.stub create mode 100644 stubs/controller.stub create mode 100644 stubs/enum.backed.stub create mode 100644 stubs/enum.stub create mode 100644 stubs/event.stub create mode 100644 stubs/factory.stub create mode 100644 stubs/job.queued.stub create mode 100644 stubs/job.stub create mode 100644 stubs/listener.queued.stub create mode 100644 stubs/listener.stub create mode 100644 stubs/listener.typed.queued.stub create mode 100644 stubs/listener.typed.stub create mode 100644 stubs/mail.stub create mode 100644 stubs/markdown-mail.stub create mode 100644 stubs/markdown-notification.stub create mode 100644 stubs/middleware.stub create mode 100644 stubs/migration.create.stub create mode 100644 stubs/migration.stub create mode 100644 stubs/migration.update.stub create mode 100644 stubs/model.pivot.stub create mode 100644 stubs/model.stub create mode 100644 stubs/notification.stub create mode 100644 stubs/observer.plain.stub create mode 100644 stubs/observer.stub create mode 100644 stubs/pest.stub create mode 100644 stubs/pest.unit.stub create mode 100644 stubs/policy.plain.stub create mode 100644 stubs/policy.stub create mode 100644 stubs/provider.stub create mode 100644 stubs/request.stub create mode 100644 stubs/resource-collection.stub create mode 100644 stubs/resource.stub create mode 100644 stubs/rule.stub create mode 100644 stubs/scope.stub create mode 100644 stubs/seeder.stub create mode 100644 stubs/test.stub create mode 100644 stubs/test.unit.stub create mode 100644 stubs/trait.stub create mode 100644 stubs/view-component.stub diff --git a/stubs/cast.inbound.stub b/stubs/cast.inbound.stub new file mode 100644 index 0000000..5db752d --- /dev/null +++ b/stubs/cast.inbound.stub @@ -0,0 +1,19 @@ + $attributes + */ + public function set(Model $model, string $key, mixed $value, array $attributes): mixed + { + return $value; + } +} diff --git a/stubs/cast.stub b/stubs/cast.stub new file mode 100644 index 0000000..3db6de5 --- /dev/null +++ b/stubs/cast.stub @@ -0,0 +1,27 @@ + $attributes + */ + public function get(Model $model, string $key, mixed $value, array $attributes): mixed + { + return $value; + } + + /** + * @param array $attributes + */ + public function set(Model $model, string $key, mixed $value, array $attributes): mixed + { + return $value; + } +} diff --git a/stubs/class.invokable.stub b/stubs/class.invokable.stub new file mode 100644 index 0000000..ee693c0 --- /dev/null +++ b/stubs/class.invokable.stub @@ -0,0 +1,24 @@ + + */ + public function broadcastOn(): array + { + return [ + new PrivateChannel('channel-name'), + ]; + } +} diff --git a/stubs/factory.stub b/stubs/factory.stub new file mode 100644 index 0000000..823cb03 --- /dev/null +++ b/stubs/factory.stub @@ -0,0 +1,23 @@ + + */ +final class {{ factory }}Factory extends Factory +{ + /** + * @return array + */ + public function definition(): array + { + return [ + // + ]; + } +} diff --git a/stubs/job.queued.stub b/stubs/job.queued.stub new file mode 100644 index 0000000..bb0b0e7 --- /dev/null +++ b/stubs/job.queued.stub @@ -0,0 +1,23 @@ + + */ + public function attachments(): array + { + return []; + } +} diff --git a/stubs/markdown-mail.stub b/stubs/markdown-mail.stub new file mode 100644 index 0000000..8ae53dd --- /dev/null +++ b/stubs/markdown-mail.stub @@ -0,0 +1,44 @@ + + */ + public function attachments(): array + { + return []; + } +} diff --git a/stubs/markdown-notification.stub b/stubs/markdown-notification.stub new file mode 100644 index 0000000..8a7aae3 --- /dev/null +++ b/stubs/markdown-notification.stub @@ -0,0 +1,43 @@ + + */ + public function via(object $notifiable): array + { + return ['mail']; + } + + public function toMail(object $notifiable): MailMessage + { + return (new MailMessage)->markdown('{{ view }}'); + } + + /** + * @return array + */ + public function toArray(object $notifiable): array + { + return [ + // + ]; + } +} diff --git a/stubs/middleware.stub b/stubs/middleware.stub new file mode 100644 index 0000000..4b689df --- /dev/null +++ b/stubs/middleware.stub @@ -0,0 +1,20 @@ +id(); + $table->timestamps(); + }); + } + + public function down(): void + { + Schema::dropIfExists('{{ table }}'); + } +}; diff --git a/stubs/migration.stub b/stubs/migration.stub new file mode 100644 index 0000000..df6efca --- /dev/null +++ b/stubs/migration.stub @@ -0,0 +1,20 @@ + + */ + public function via(object $notifiable): array + { + return ['mail']; + } + + public function toMail(object $notifiable): MailMessage + { + return (new MailMessage) + ->line('The introduction to the notification.') + ->action('Notification Action', url('/')) + ->line('Thank you for using our application!'); + } + + /** + * @return array + */ + public function toArray(object $notifiable): array + { + return [ + // + ]; + } +} diff --git a/stubs/observer.plain.stub b/stubs/observer.plain.stub new file mode 100644 index 0000000..61270dd --- /dev/null +++ b/stubs/observer.plain.stub @@ -0,0 +1,10 @@ +get('/'); + + $response->assertStatus(200); +}); diff --git a/stubs/pest.unit.stub b/stubs/pest.unit.stub new file mode 100644 index 0000000..61cd84c --- /dev/null +++ b/stubs/pest.unit.stub @@ -0,0 +1,5 @@ +toBeTrue(); +}); diff --git a/stubs/policy.plain.stub b/stubs/policy.plain.stub new file mode 100644 index 0000000..fb1f672 --- /dev/null +++ b/stubs/policy.plain.stub @@ -0,0 +1,15 @@ +|string> + */ + public function rules(): array + { + return [ + // + ]; + } +} diff --git a/stubs/resource-collection.stub b/stubs/resource-collection.stub new file mode 100644 index 0000000..0835429 --- /dev/null +++ b/stubs/resource-collection.stub @@ -0,0 +1,19 @@ + + */ + public function toArray(Request $request): array + { + return parent::toArray($request); + } +} diff --git a/stubs/resource.stub b/stubs/resource.stub new file mode 100644 index 0000000..d9d7c0a --- /dev/null +++ b/stubs/resource.stub @@ -0,0 +1,19 @@ + + */ + public function toArray(Request $request): array + { + return parent::toArray($request); + } +} diff --git a/stubs/rule.stub b/stubs/rule.stub new file mode 100644 index 0000000..1977c92 --- /dev/null +++ b/stubs/rule.stub @@ -0,0 +1,19 @@ +get('/'); + + $response->assertStatus(200); + } +} diff --git a/stubs/test.unit.stub b/stubs/test.unit.stub new file mode 100644 index 0000000..6334573 --- /dev/null +++ b/stubs/test.unit.stub @@ -0,0 +1,15 @@ +assertTrue(true); + } +} diff --git a/stubs/trait.stub b/stubs/trait.stub new file mode 100644 index 0000000..20922d4 --- /dev/null +++ b/stubs/trait.stub @@ -0,0 +1,10 @@ +