From 966286064c2ca61384287bc0b6b0df1ddb7001b8 Mon Sep 17 00:00:00 2001 From: Naoya Miyagawa <38244632+NaoyaMiyagawa@users.noreply.github.com> Date: Mon, 16 Sep 2024 13:28:55 +0800 Subject: [PATCH] style: Add formatter rule & apply (#41) --- biome.json | 45 +- .../.laravel-typegen-tmp/History.json | 112 +- .../.laravel-typegen-tmp/Job.json | 184 +- .../.laravel-typegen-tmp/Post.json | 188 +- .../.laravel-typegen-tmp/User.json | 290 +- .../.laravel-typegen-tmp/UserContact.json | 140 +- .../.laravel-typegen-tmp/route.json | 474 +- examples/laravel10-app/jsconfig.json | 14 +- examples/laravel10-app/package-lock.json | 4480 ++++++++--------- examples/laravel10-app/package.json | 52 +- examples/laravel10-app/postcss.config.js | 8 +- .../resources/js/Components/Checkbox.vue | 26 +- .../resources/js/Components/DangerButton.vue | 2 +- .../resources/js/Components/Dropdown.vue | 44 +- .../resources/js/Components/Modal.vue | 70 +- .../resources/js/Components/NavLink.vue | 6 +- .../resources/js/Components/PrimaryButton.vue | 2 +- .../js/Components/ResponsiveNavLink.vue | 6 +- .../js/Components/SecondaryButton.vue | 2 +- .../resources/js/Components/TextInput.vue | 6 +- .../js/Layouts/AuthenticatedLayout.vue | 6 +- .../js/Pages/Auth/ConfirmPassword.vue | 8 +- .../js/Pages/Auth/ForgotPassword.vue | 6 +- .../resources/js/Pages/Auth/Login.vue | 16 +- .../resources/js/Pages/Auth/Register.vue | 16 +- .../resources/js/Pages/Auth/ResetPassword.vue | 18 +- .../resources/js/Pages/Auth/VerifyEmail.vue | 6 +- .../resources/js/Pages/Profile/Edit.vue | 4 +- .../Pages/Profile/Partials/DeleteUserForm.vue | 22 +- .../Profile/Partials/UpdatePasswordForm.vue | 34 +- .../Partials/UpdateProfileInformationForm.vue | 14 +- .../resources/js/Pages/Welcome.vue | 14 +- examples/laravel10-app/resources/js/app.ts | 30 +- .../resources/js/types/route.d.ts | 44 +- examples/laravel10-app/tailwind.config.js | 28 +- examples/laravel10-app/tsconfig.json | 40 +- examples/laravel10-app/vite.config.ts | 28 +- package.json | 76 +- src/cli.ts | 84 +- src/formRequests/createFormRequestTypes.ts | 154 +- src/generate.ts | 420 +- src/models/createEnumTypes.ts | 90 +- src/models/createLarvelEnumTypes.ts | 92 +- src/models/createSource.ts | 62 +- src/models/createTypes.ts | 258 +- src/print.ts | 16 +- src/routes/createSource.ts | 48 +- src/routes/createTypes.ts | 92 +- src/types/index.ts | 118 +- src/types/inertia.ts | 32 +- src/utils.ts | 34 +- templates/route.d.ts | 44 +- tsconfig.json | 30 +- 53 files changed, 4071 insertions(+), 4064 deletions(-) diff --git a/biome.json b/biome.json index 809b527..30fc7fb 100644 --- a/biome.json +++ b/biome.json @@ -1,22 +1,27 @@ { - "$schema": "https://biomejs.dev/schemas/1.7.3/schema.json", - "organizeImports": { - "enabled": true - }, - "files": { - "ignore": [ - "dist", - "examples/laravel10-app/resources/js/types", - "examples/laravel10-app/resources/js/ziggy.js", - "examples/laravel10-app/public", - "examples/laravel10-app/composer.json", - "vendor" - ] - }, - "linter": { - "enabled": true, - "rules": { - "recommended": true - } - } + "$schema": "https://biomejs.dev/schemas/1.7.3/schema.json", + "organizeImports": { + "enabled": true + }, + "files": { + "ignore": [ + "dist", + "examples/laravel10-app/resources/js/types", + "examples/laravel10-app/resources/js/ziggy.js", + "examples/laravel10-app/public", + "examples/laravel10-app/composer.json", + "vendor" + ] + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true + } + }, + "formatter": { + "enabled": true, + "indentStyle": "space", + "indentWidth": 2 + } } diff --git a/examples/laravel10-app/.laravel-typegen-tmp/History.json b/examples/laravel10-app/.laravel-typegen-tmp/History.json index fc328a6..b9d9e16 100644 --- a/examples/laravel10-app/.laravel-typegen-tmp/History.json +++ b/examples/laravel10-app/.laravel-typegen-tmp/History.json @@ -1,58 +1,58 @@ { - "class": "App\\Models\\Common\\History", - "database": "mysql", - "table": "histories", - "policy": null, - "attributes": [ - { - "name": "id", - "type": "bigint unsigned", - "increments": true, - "nullable": false, - "default": null, - "unique": true, - "fillable": false, - "hidden": false, - "appended": null, - "cast": "int" - }, - { - "name": "log", - "type": "string(255)", - "increments": false, - "nullable": false, - "default": null, - "unique": false, - "fillable": false, - "hidden": false, - "appended": null, - "cast": null - }, - { - "name": "created_at", - "type": "datetime", - "increments": false, - "nullable": true, - "default": null, - "unique": false, - "fillable": false, - "hidden": false, - "appended": null, - "cast": "datetime" - }, - { - "name": "updated_at", - "type": "datetime", - "increments": false, - "nullable": true, - "default": null, - "unique": false, - "fillable": false, - "hidden": false, - "appended": null, - "cast": "datetime" - } - ], - "relations": [], - "observers": [] + "class": "App\\Models\\Common\\History", + "database": "mysql", + "table": "histories", + "policy": null, + "attributes": [ + { + "name": "id", + "type": "bigint unsigned", + "increments": true, + "nullable": false, + "default": null, + "unique": true, + "fillable": false, + "hidden": false, + "appended": null, + "cast": "int" + }, + { + "name": "log", + "type": "string(255)", + "increments": false, + "nullable": false, + "default": null, + "unique": false, + "fillable": false, + "hidden": false, + "appended": null, + "cast": null + }, + { + "name": "created_at", + "type": "datetime", + "increments": false, + "nullable": true, + "default": null, + "unique": false, + "fillable": false, + "hidden": false, + "appended": null, + "cast": "datetime" + }, + { + "name": "updated_at", + "type": "datetime", + "increments": false, + "nullable": true, + "default": null, + "unique": false, + "fillable": false, + "hidden": false, + "appended": null, + "cast": "datetime" + } + ], + "relations": [], + "observers": [] } diff --git a/examples/laravel10-app/.laravel-typegen-tmp/Job.json b/examples/laravel10-app/.laravel-typegen-tmp/Job.json index 022152e..bfcc84f 100644 --- a/examples/laravel10-app/.laravel-typegen-tmp/Job.json +++ b/examples/laravel10-app/.laravel-typegen-tmp/Job.json @@ -1,94 +1,94 @@ { - "class": "App\\Models\\Job", - "database": "mysql", - "table": "jobs", - "policy": null, - "attributes": [ - { - "name": "id", - "type": "bigint unsigned", - "increments": true, - "nullable": false, - "default": null, - "unique": true, - "fillable": false, - "hidden": false, - "appended": null, - "cast": "int" - }, - { - "name": "queue", - "type": "string(255)", - "increments": false, - "nullable": false, - "default": null, - "unique": false, - "fillable": false, - "hidden": false, - "appended": null, - "cast": null - }, - { - "name": "payload", - "type": "text", - "increments": false, - "nullable": false, - "default": null, - "unique": false, - "fillable": false, - "hidden": false, - "appended": null, - "cast": null - }, - { - "name": "attempts", - "type": "boolean unsigned", - "increments": false, - "nullable": false, - "default": null, - "unique": false, - "fillable": false, - "hidden": false, - "appended": null, - "cast": null - }, - { - "name": "reserved_at", - "type": "integer unsigned", - "increments": false, - "nullable": true, - "default": null, - "unique": false, - "fillable": false, - "hidden": false, - "appended": null, - "cast": null - }, - { - "name": "available_at", - "type": "integer unsigned", - "increments": false, - "nullable": false, - "default": null, - "unique": false, - "fillable": false, - "hidden": false, - "appended": null, - "cast": null - }, - { - "name": "created_at", - "type": "integer unsigned", - "increments": false, - "nullable": false, - "default": null, - "unique": false, - "fillable": false, - "hidden": false, - "appended": null, - "cast": "datetime" - } - ], - "relations": [], - "observers": [] + "class": "App\\Models\\Job", + "database": "mysql", + "table": "jobs", + "policy": null, + "attributes": [ + { + "name": "id", + "type": "bigint unsigned", + "increments": true, + "nullable": false, + "default": null, + "unique": true, + "fillable": false, + "hidden": false, + "appended": null, + "cast": "int" + }, + { + "name": "queue", + "type": "string(255)", + "increments": false, + "nullable": false, + "default": null, + "unique": false, + "fillable": false, + "hidden": false, + "appended": null, + "cast": null + }, + { + "name": "payload", + "type": "text", + "increments": false, + "nullable": false, + "default": null, + "unique": false, + "fillable": false, + "hidden": false, + "appended": null, + "cast": null + }, + { + "name": "attempts", + "type": "boolean unsigned", + "increments": false, + "nullable": false, + "default": null, + "unique": false, + "fillable": false, + "hidden": false, + "appended": null, + "cast": null + }, + { + "name": "reserved_at", + "type": "integer unsigned", + "increments": false, + "nullable": true, + "default": null, + "unique": false, + "fillable": false, + "hidden": false, + "appended": null, + "cast": null + }, + { + "name": "available_at", + "type": "integer unsigned", + "increments": false, + "nullable": false, + "default": null, + "unique": false, + "fillable": false, + "hidden": false, + "appended": null, + "cast": null + }, + { + "name": "created_at", + "type": "integer unsigned", + "increments": false, + "nullable": false, + "default": null, + "unique": false, + "fillable": false, + "hidden": false, + "appended": null, + "cast": "datetime" + } + ], + "relations": [], + "observers": [] } diff --git a/examples/laravel10-app/.laravel-typegen-tmp/Post.json b/examples/laravel10-app/.laravel-typegen-tmp/Post.json index 7cff79d..239d2d1 100644 --- a/examples/laravel10-app/.laravel-typegen-tmp/Post.json +++ b/examples/laravel10-app/.laravel-typegen-tmp/Post.json @@ -1,96 +1,96 @@ { - "class": "App\\Models\\Post", - "database": "mysql", - "table": "posts", - "policy": null, - "attributes": [ - { - "name": "id", - "type": "bigint unsigned", - "increments": true, - "nullable": false, - "default": null, - "unique": true, - "fillable": false, - "hidden": false, - "appended": null, - "cast": "int" - }, - { - "name": "title", - "type": "string(255)", - "increments": false, - "nullable": false, - "default": null, - "unique": false, - "fillable": false, - "hidden": false, - "appended": null, - "cast": null - }, - { - "name": "body", - "type": "string(255)", - "increments": false, - "nullable": false, - "default": null, - "unique": false, - "fillable": false, - "hidden": false, - "appended": null, - "cast": null - }, - { - "name": "type", - "type": "string", - "increments": false, - "nullable": false, - "default": null, - "unique": false, - "fillable": false, - "hidden": false, - "appended": null, - "cast": "App\\Enums\\PostType" - }, - { - "name": "user_id", - "type": "bigint unsigned", - "increments": false, - "nullable": false, - "default": null, - "unique": false, - "fillable": false, - "hidden": false, - "appended": null, - "cast": null - }, - { - "name": "created_at", - "type": "datetime", - "increments": false, - "nullable": true, - "default": null, - "unique": false, - "fillable": false, - "hidden": false, - "appended": null, - "cast": "datetime" - }, - { - "name": "updated_at", - "type": "datetime", - "increments": false, - "nullable": true, - "default": null, - "unique": false, - "fillable": false, - "hidden": false, - "appended": null, - "cast": "datetime" - } - ], - "relations": [ - { "name": "author", "type": "BelongsTo", "related": "App\\Models\\User" } - ], - "observers": [] + "class": "App\\Models\\Post", + "database": "mysql", + "table": "posts", + "policy": null, + "attributes": [ + { + "name": "id", + "type": "bigint unsigned", + "increments": true, + "nullable": false, + "default": null, + "unique": true, + "fillable": false, + "hidden": false, + "appended": null, + "cast": "int" + }, + { + "name": "title", + "type": "string(255)", + "increments": false, + "nullable": false, + "default": null, + "unique": false, + "fillable": false, + "hidden": false, + "appended": null, + "cast": null + }, + { + "name": "body", + "type": "string(255)", + "increments": false, + "nullable": false, + "default": null, + "unique": false, + "fillable": false, + "hidden": false, + "appended": null, + "cast": null + }, + { + "name": "type", + "type": "string", + "increments": false, + "nullable": false, + "default": null, + "unique": false, + "fillable": false, + "hidden": false, + "appended": null, + "cast": "App\\Enums\\PostType" + }, + { + "name": "user_id", + "type": "bigint unsigned", + "increments": false, + "nullable": false, + "default": null, + "unique": false, + "fillable": false, + "hidden": false, + "appended": null, + "cast": null + }, + { + "name": "created_at", + "type": "datetime", + "increments": false, + "nullable": true, + "default": null, + "unique": false, + "fillable": false, + "hidden": false, + "appended": null, + "cast": "datetime" + }, + { + "name": "updated_at", + "type": "datetime", + "increments": false, + "nullable": true, + "default": null, + "unique": false, + "fillable": false, + "hidden": false, + "appended": null, + "cast": "datetime" + } + ], + "relations": [ + { "name": "author", "type": "BelongsTo", "related": "App\\Models\\User" } + ], + "observers": [] } diff --git a/examples/laravel10-app/.laravel-typegen-tmp/User.json b/examples/laravel10-app/.laravel-typegen-tmp/User.json index 8fee873..fac0f32 100644 --- a/examples/laravel10-app/.laravel-typegen-tmp/User.json +++ b/examples/laravel10-app/.laravel-typegen-tmp/User.json @@ -1,147 +1,147 @@ { - "class": "App\\Models\\User", - "database": "mysql", - "table": "users", - "policy": null, - "attributes": [ - { - "name": "id", - "type": "bigint unsigned", - "increments": true, - "nullable": false, - "default": null, - "unique": true, - "fillable": false, - "hidden": false, - "appended": null, - "cast": "int" - }, - { - "name": "name", - "type": "string(255)", - "increments": false, - "nullable": false, - "default": null, - "unique": false, - "fillable": true, - "hidden": false, - "appended": null, - "cast": null - }, - { - "name": "email", - "type": "string(255)", - "increments": false, - "nullable": false, - "default": null, - "unique": true, - "fillable": true, - "hidden": false, - "appended": null, - "cast": null - }, - { - "name": "gender", - "type": "string", - "increments": false, - "nullable": false, - "default": null, - "unique": false, - "fillable": false, - "hidden": false, - "appended": null, - "cast": "App\\Enums\\GenderType" - }, - { - "name": "email_verified_at", - "type": "datetime", - "increments": false, - "nullable": true, - "default": null, - "unique": false, - "fillable": false, - "hidden": false, - "appended": null, - "cast": "datetime" - }, - { - "name": "password", - "type": "string(255)", - "increments": false, - "nullable": false, - "default": null, - "unique": false, - "fillable": true, - "hidden": true, - "appended": null, - "cast": null - }, - { - "name": "bio", - "type": "text(65535)", - "increments": false, - "nullable": true, - "default": null, - "unique": false, - "fillable": false, - "hidden": false, - "appended": null, - "cast": null - }, - { - "name": "remember_token", - "type": "string(100)", - "increments": false, - "nullable": true, - "default": null, - "unique": false, - "fillable": false, - "hidden": true, - "appended": null, - "cast": null - }, - { - "name": "created_at", - "type": "datetime", - "increments": false, - "nullable": true, - "default": null, - "unique": false, - "fillable": false, - "hidden": false, - "appended": null, - "cast": "datetime" - }, - { - "name": "updated_at", - "type": "datetime", - "increments": false, - "nullable": true, - "default": null, - "unique": false, - "fillable": false, - "hidden": false, - "appended": null, - "cast": "datetime" - } - ], - "relations": [ - { "name": "posts", "type": "HasMany", "related": "App\\Models\\Post" }, - { - "name": "userContacts", - "type": "HasMany", - "related": "App\\Models\\UserContact" - }, - { - "name": "tokens", - "type": "MorphMany", - "related": "Laravel\\Sanctum\\PersonalAccessToken" - }, - { - "name": "notifications", - "type": "MorphMany", - "related": "Illuminate\\Notifications\\DatabaseNotification" - } - ], - "observers": [] + "class": "App\\Models\\User", + "database": "mysql", + "table": "users", + "policy": null, + "attributes": [ + { + "name": "id", + "type": "bigint unsigned", + "increments": true, + "nullable": false, + "default": null, + "unique": true, + "fillable": false, + "hidden": false, + "appended": null, + "cast": "int" + }, + { + "name": "name", + "type": "string(255)", + "increments": false, + "nullable": false, + "default": null, + "unique": false, + "fillable": true, + "hidden": false, + "appended": null, + "cast": null + }, + { + "name": "email", + "type": "string(255)", + "increments": false, + "nullable": false, + "default": null, + "unique": true, + "fillable": true, + "hidden": false, + "appended": null, + "cast": null + }, + { + "name": "gender", + "type": "string", + "increments": false, + "nullable": false, + "default": null, + "unique": false, + "fillable": false, + "hidden": false, + "appended": null, + "cast": "App\\Enums\\GenderType" + }, + { + "name": "email_verified_at", + "type": "datetime", + "increments": false, + "nullable": true, + "default": null, + "unique": false, + "fillable": false, + "hidden": false, + "appended": null, + "cast": "datetime" + }, + { + "name": "password", + "type": "string(255)", + "increments": false, + "nullable": false, + "default": null, + "unique": false, + "fillable": true, + "hidden": true, + "appended": null, + "cast": null + }, + { + "name": "bio", + "type": "text(65535)", + "increments": false, + "nullable": true, + "default": null, + "unique": false, + "fillable": false, + "hidden": false, + "appended": null, + "cast": null + }, + { + "name": "remember_token", + "type": "string(100)", + "increments": false, + "nullable": true, + "default": null, + "unique": false, + "fillable": false, + "hidden": true, + "appended": null, + "cast": null + }, + { + "name": "created_at", + "type": "datetime", + "increments": false, + "nullable": true, + "default": null, + "unique": false, + "fillable": false, + "hidden": false, + "appended": null, + "cast": "datetime" + }, + { + "name": "updated_at", + "type": "datetime", + "increments": false, + "nullable": true, + "default": null, + "unique": false, + "fillable": false, + "hidden": false, + "appended": null, + "cast": "datetime" + } + ], + "relations": [ + { "name": "posts", "type": "HasMany", "related": "App\\Models\\Post" }, + { + "name": "userContacts", + "type": "HasMany", + "related": "App\\Models\\UserContact" + }, + { + "name": "tokens", + "type": "MorphMany", + "related": "Laravel\\Sanctum\\PersonalAccessToken" + }, + { + "name": "notifications", + "type": "MorphMany", + "related": "Illuminate\\Notifications\\DatabaseNotification" + } + ], + "observers": [] } diff --git a/examples/laravel10-app/.laravel-typegen-tmp/UserContact.json b/examples/laravel10-app/.laravel-typegen-tmp/UserContact.json index 34d60d3..1814bf8 100644 --- a/examples/laravel10-app/.laravel-typegen-tmp/UserContact.json +++ b/examples/laravel10-app/.laravel-typegen-tmp/UserContact.json @@ -1,72 +1,72 @@ { - "class": "App\\Models\\UserContact", - "database": "mysql", - "table": "user_contacts", - "policy": null, - "attributes": [ - { - "name": "id", - "type": "bigint unsigned", - "increments": true, - "nullable": false, - "default": null, - "unique": true, - "fillable": false, - "hidden": false, - "appended": null, - "cast": "int" - }, - { - "name": "phone_number", - "type": "string(255)", - "increments": false, - "nullable": false, - "default": null, - "unique": false, - "fillable": false, - "hidden": false, - "appended": null, - "cast": null - }, - { - "name": "user_id", - "type": "bigint unsigned", - "increments": false, - "nullable": false, - "default": null, - "unique": false, - "fillable": false, - "hidden": false, - "appended": null, - "cast": null - }, - { - "name": "created_at", - "type": "datetime", - "increments": false, - "nullable": true, - "default": null, - "unique": false, - "fillable": false, - "hidden": false, - "appended": null, - "cast": "datetime" - }, - { - "name": "updated_at", - "type": "datetime", - "increments": false, - "nullable": true, - "default": null, - "unique": false, - "fillable": false, - "hidden": false, - "appended": null, - "cast": "datetime" - } - ], - "relations": [ - { "name": "user", "type": "BelongsTo", "related": "App\\Models\\User" } - ], - "observers": [] + "class": "App\\Models\\UserContact", + "database": "mysql", + "table": "user_contacts", + "policy": null, + "attributes": [ + { + "name": "id", + "type": "bigint unsigned", + "increments": true, + "nullable": false, + "default": null, + "unique": true, + "fillable": false, + "hidden": false, + "appended": null, + "cast": "int" + }, + { + "name": "phone_number", + "type": "string(255)", + "increments": false, + "nullable": false, + "default": null, + "unique": false, + "fillable": false, + "hidden": false, + "appended": null, + "cast": null + }, + { + "name": "user_id", + "type": "bigint unsigned", + "increments": false, + "nullable": false, + "default": null, + "unique": false, + "fillable": false, + "hidden": false, + "appended": null, + "cast": null + }, + { + "name": "created_at", + "type": "datetime", + "increments": false, + "nullable": true, + "default": null, + "unique": false, + "fillable": false, + "hidden": false, + "appended": null, + "cast": "datetime" + }, + { + "name": "updated_at", + "type": "datetime", + "increments": false, + "nullable": true, + "default": null, + "unique": false, + "fillable": false, + "hidden": false, + "appended": null, + "cast": "datetime" + } + ], + "relations": [ + { "name": "user", "type": "BelongsTo", "related": "App\\Models\\User" } + ], + "observers": [] } diff --git a/examples/laravel10-app/.laravel-typegen-tmp/route.json b/examples/laravel10-app/.laravel-typegen-tmp/route.json index 0ebc672..6327b23 100644 --- a/examples/laravel10-app/.laravel-typegen-tmp/route.json +++ b/examples/laravel10-app/.laravel-typegen-tmp/route.json @@ -1,239 +1,239 @@ [ - { - "domain": null, - "method": "GET|HEAD", - "uri": "/", - "name": null, - "action": "Closure", - "middleware": ["web"] - }, - { - "domain": null, - "method": "GET|HEAD", - "uri": "api/user", - "name": null, - "action": "Closure", - "middleware": ["api", "App\\Http\\Middleware\\Authenticate:sanctum"] - }, - { - "domain": null, - "method": "GET|HEAD", - "uri": "confirm-password", - "name": "password.confirm", - "action": "App\\Http\\Controllers\\Auth\\ConfirmablePasswordController@show", - "middleware": ["web", "App\\Http\\Middleware\\Authenticate"] - }, - { - "domain": null, - "method": "POST", - "uri": "confirm-password", - "name": null, - "action": "App\\Http\\Controllers\\Auth\\ConfirmablePasswordController@store", - "middleware": ["web", "App\\Http\\Middleware\\Authenticate"] - }, - { - "domain": null, - "method": "GET|HEAD", - "uri": "dashboard", - "name": "dashboard", - "action": "App\\Http\\Controllers\\DashboardController", - "middleware": [ - "web", - "App\\Http\\Middleware\\Authenticate", - "Illuminate\\Auth\\Middleware\\EnsureEmailIsVerified" - ] - }, - { - "domain": null, - "method": "POST", - "uri": "email/verification-notification", - "name": "verification.send", - "action": "App\\Http\\Controllers\\Auth\\EmailVerificationNotificationController@store", - "middleware": [ - "web", - "App\\Http\\Middleware\\Authenticate", - "Illuminate\\Routing\\Middleware\\ThrottleRequests:6,1" - ] - }, - { - "domain": null, - "method": "GET|HEAD", - "uri": "forgot-password", - "name": "password.request", - "action": "App\\Http\\Controllers\\Auth\\PasswordResetLinkController@create", - "middleware": ["web", "App\\Http\\Middleware\\RedirectIfAuthenticated"] - }, - { - "domain": null, - "method": "POST", - "uri": "forgot-password", - "name": "password.email", - "action": "App\\Http\\Controllers\\Auth\\PasswordResetLinkController@store", - "middleware": ["web", "App\\Http\\Middleware\\RedirectIfAuthenticated"] - }, - { - "domain": null, - "method": "GET|HEAD", - "uri": "login", - "name": "login", - "action": "App\\Http\\Controllers\\Auth\\AuthenticatedSessionController@create", - "middleware": ["web", "App\\Http\\Middleware\\RedirectIfAuthenticated"] - }, - { - "domain": null, - "method": "POST", - "uri": "login", - "name": null, - "action": "App\\Http\\Controllers\\Auth\\AuthenticatedSessionController@store", - "middleware": ["web", "App\\Http\\Middleware\\RedirectIfAuthenticated"] - }, - { - "domain": null, - "method": "POST", - "uri": "logout", - "name": "logout", - "action": "App\\Http\\Controllers\\Auth\\AuthenticatedSessionController@destroy", - "middleware": ["web", "App\\Http\\Middleware\\Authenticate"] - }, - { - "domain": null, - "method": "PUT", - "uri": "password", - "name": "password.update", - "action": "App\\Http\\Controllers\\Auth\\PasswordController@update", - "middleware": ["web", "App\\Http\\Middleware\\Authenticate"] - }, - { - "domain": null, - "method": "GET|HEAD", - "uri": "posts", - "name": "posts.index", - "action": "App\\Http\\Controllers\\PostsController@index", - "middleware": ["web"] - }, - { - "domain": null, - "method": "POST", - "uri": "posts", - "name": "posts.store", - "action": "App\\Http\\Controllers\\PostsController@store", - "middleware": ["web"] - }, - { - "domain": null, - "method": "GET|HEAD", - "uri": "posts/create", - "name": "posts.create", - "action": "App\\Http\\Controllers\\PostsController@create", - "middleware": ["web"] - }, - { - "domain": null, - "method": "GET|HEAD", - "uri": "posts/{post}", - "name": "posts.show", - "action": "App\\Http\\Controllers\\PostsController@show", - "middleware": ["web"] - }, - { - "domain": null, - "method": "PUT|PATCH", - "uri": "posts/{post}", - "name": "posts.update", - "action": "App\\Http\\Controllers\\PostsController@update", - "middleware": ["web"] - }, - { - "domain": null, - "method": "DELETE", - "uri": "posts/{post}", - "name": "posts.destroy", - "action": "App\\Http\\Controllers\\PostsController@destroy", - "middleware": ["web"] - }, - { - "domain": null, - "method": "GET|HEAD", - "uri": "posts/{post}/edit", - "name": "posts.edit", - "action": "App\\Http\\Controllers\\PostsController@edit", - "middleware": ["web"] - }, - { - "domain": null, - "method": "GET|HEAD", - "uri": "profile", - "name": "profile.edit", - "action": "App\\Http\\Controllers\\ProfileController@edit", - "middleware": ["web", "App\\Http\\Middleware\\Authenticate"] - }, - { - "domain": null, - "method": "PATCH", - "uri": "profile", - "name": "profile.update", - "action": "App\\Http\\Controllers\\ProfileController@update", - "middleware": ["web", "App\\Http\\Middleware\\Authenticate"] - }, - { - "domain": null, - "method": "DELETE", - "uri": "profile", - "name": "profile.destroy", - "action": "App\\Http\\Controllers\\ProfileController@destroy", - "middleware": ["web", "App\\Http\\Middleware\\Authenticate"] - }, - { - "domain": null, - "method": "GET|HEAD", - "uri": "register", - "name": "register", - "action": "App\\Http\\Controllers\\Auth\\RegisteredUserController@create", - "middleware": ["web", "App\\Http\\Middleware\\RedirectIfAuthenticated"] - }, - { - "domain": null, - "method": "POST", - "uri": "register", - "name": null, - "action": "App\\Http\\Controllers\\Auth\\RegisteredUserController@store", - "middleware": ["web", "App\\Http\\Middleware\\RedirectIfAuthenticated"] - }, - { - "domain": null, - "method": "POST", - "uri": "reset-password", - "name": "password.store", - "action": "App\\Http\\Controllers\\Auth\\NewPasswordController@store", - "middleware": ["web", "App\\Http\\Middleware\\RedirectIfAuthenticated"] - }, - { - "domain": null, - "method": "GET|HEAD", - "uri": "reset-password/{token}", - "name": "password.reset", - "action": "App\\Http\\Controllers\\Auth\\NewPasswordController@create", - "middleware": ["web", "App\\Http\\Middleware\\RedirectIfAuthenticated"] - }, - { - "domain": null, - "method": "GET|HEAD", - "uri": "verify-email", - "name": "verification.notice", - "action": "App\\Http\\Controllers\\Auth\\EmailVerificationPromptController@__invoke", - "middleware": ["web", "App\\Http\\Middleware\\Authenticate"] - }, - { - "domain": null, - "method": "GET|HEAD", - "uri": "verify-email/{id}/{hash}", - "name": "verification.verify", - "action": "App\\Http\\Controllers\\Auth\\VerifyEmailController@__invoke", - "middleware": [ - "web", - "App\\Http\\Middleware\\Authenticate", - "App\\Http\\Middleware\\ValidateSignature", - "Illuminate\\Routing\\Middleware\\ThrottleRequests:6,1" - ] - } + { + "domain": null, + "method": "GET|HEAD", + "uri": "/", + "name": null, + "action": "Closure", + "middleware": ["web"] + }, + { + "domain": null, + "method": "GET|HEAD", + "uri": "api/user", + "name": null, + "action": "Closure", + "middleware": ["api", "App\\Http\\Middleware\\Authenticate:sanctum"] + }, + { + "domain": null, + "method": "GET|HEAD", + "uri": "confirm-password", + "name": "password.confirm", + "action": "App\\Http\\Controllers\\Auth\\ConfirmablePasswordController@show", + "middleware": ["web", "App\\Http\\Middleware\\Authenticate"] + }, + { + "domain": null, + "method": "POST", + "uri": "confirm-password", + "name": null, + "action": "App\\Http\\Controllers\\Auth\\ConfirmablePasswordController@store", + "middleware": ["web", "App\\Http\\Middleware\\Authenticate"] + }, + { + "domain": null, + "method": "GET|HEAD", + "uri": "dashboard", + "name": "dashboard", + "action": "App\\Http\\Controllers\\DashboardController", + "middleware": [ + "web", + "App\\Http\\Middleware\\Authenticate", + "Illuminate\\Auth\\Middleware\\EnsureEmailIsVerified" + ] + }, + { + "domain": null, + "method": "POST", + "uri": "email/verification-notification", + "name": "verification.send", + "action": "App\\Http\\Controllers\\Auth\\EmailVerificationNotificationController@store", + "middleware": [ + "web", + "App\\Http\\Middleware\\Authenticate", + "Illuminate\\Routing\\Middleware\\ThrottleRequests:6,1" + ] + }, + { + "domain": null, + "method": "GET|HEAD", + "uri": "forgot-password", + "name": "password.request", + "action": "App\\Http\\Controllers\\Auth\\PasswordResetLinkController@create", + "middleware": ["web", "App\\Http\\Middleware\\RedirectIfAuthenticated"] + }, + { + "domain": null, + "method": "POST", + "uri": "forgot-password", + "name": "password.email", + "action": "App\\Http\\Controllers\\Auth\\PasswordResetLinkController@store", + "middleware": ["web", "App\\Http\\Middleware\\RedirectIfAuthenticated"] + }, + { + "domain": null, + "method": "GET|HEAD", + "uri": "login", + "name": "login", + "action": "App\\Http\\Controllers\\Auth\\AuthenticatedSessionController@create", + "middleware": ["web", "App\\Http\\Middleware\\RedirectIfAuthenticated"] + }, + { + "domain": null, + "method": "POST", + "uri": "login", + "name": null, + "action": "App\\Http\\Controllers\\Auth\\AuthenticatedSessionController@store", + "middleware": ["web", "App\\Http\\Middleware\\RedirectIfAuthenticated"] + }, + { + "domain": null, + "method": "POST", + "uri": "logout", + "name": "logout", + "action": "App\\Http\\Controllers\\Auth\\AuthenticatedSessionController@destroy", + "middleware": ["web", "App\\Http\\Middleware\\Authenticate"] + }, + { + "domain": null, + "method": "PUT", + "uri": "password", + "name": "password.update", + "action": "App\\Http\\Controllers\\Auth\\PasswordController@update", + "middleware": ["web", "App\\Http\\Middleware\\Authenticate"] + }, + { + "domain": null, + "method": "GET|HEAD", + "uri": "posts", + "name": "posts.index", + "action": "App\\Http\\Controllers\\PostsController@index", + "middleware": ["web"] + }, + { + "domain": null, + "method": "POST", + "uri": "posts", + "name": "posts.store", + "action": "App\\Http\\Controllers\\PostsController@store", + "middleware": ["web"] + }, + { + "domain": null, + "method": "GET|HEAD", + "uri": "posts/create", + "name": "posts.create", + "action": "App\\Http\\Controllers\\PostsController@create", + "middleware": ["web"] + }, + { + "domain": null, + "method": "GET|HEAD", + "uri": "posts/{post}", + "name": "posts.show", + "action": "App\\Http\\Controllers\\PostsController@show", + "middleware": ["web"] + }, + { + "domain": null, + "method": "PUT|PATCH", + "uri": "posts/{post}", + "name": "posts.update", + "action": "App\\Http\\Controllers\\PostsController@update", + "middleware": ["web"] + }, + { + "domain": null, + "method": "DELETE", + "uri": "posts/{post}", + "name": "posts.destroy", + "action": "App\\Http\\Controllers\\PostsController@destroy", + "middleware": ["web"] + }, + { + "domain": null, + "method": "GET|HEAD", + "uri": "posts/{post}/edit", + "name": "posts.edit", + "action": "App\\Http\\Controllers\\PostsController@edit", + "middleware": ["web"] + }, + { + "domain": null, + "method": "GET|HEAD", + "uri": "profile", + "name": "profile.edit", + "action": "App\\Http\\Controllers\\ProfileController@edit", + "middleware": ["web", "App\\Http\\Middleware\\Authenticate"] + }, + { + "domain": null, + "method": "PATCH", + "uri": "profile", + "name": "profile.update", + "action": "App\\Http\\Controllers\\ProfileController@update", + "middleware": ["web", "App\\Http\\Middleware\\Authenticate"] + }, + { + "domain": null, + "method": "DELETE", + "uri": "profile", + "name": "profile.destroy", + "action": "App\\Http\\Controllers\\ProfileController@destroy", + "middleware": ["web", "App\\Http\\Middleware\\Authenticate"] + }, + { + "domain": null, + "method": "GET|HEAD", + "uri": "register", + "name": "register", + "action": "App\\Http\\Controllers\\Auth\\RegisteredUserController@create", + "middleware": ["web", "App\\Http\\Middleware\\RedirectIfAuthenticated"] + }, + { + "domain": null, + "method": "POST", + "uri": "register", + "name": null, + "action": "App\\Http\\Controllers\\Auth\\RegisteredUserController@store", + "middleware": ["web", "App\\Http\\Middleware\\RedirectIfAuthenticated"] + }, + { + "domain": null, + "method": "POST", + "uri": "reset-password", + "name": "password.store", + "action": "App\\Http\\Controllers\\Auth\\NewPasswordController@store", + "middleware": ["web", "App\\Http\\Middleware\\RedirectIfAuthenticated"] + }, + { + "domain": null, + "method": "GET|HEAD", + "uri": "reset-password/{token}", + "name": "password.reset", + "action": "App\\Http\\Controllers\\Auth\\NewPasswordController@create", + "middleware": ["web", "App\\Http\\Middleware\\RedirectIfAuthenticated"] + }, + { + "domain": null, + "method": "GET|HEAD", + "uri": "verify-email", + "name": "verification.notice", + "action": "App\\Http\\Controllers\\Auth\\EmailVerificationPromptController@__invoke", + "middleware": ["web", "App\\Http\\Middleware\\Authenticate"] + }, + { + "domain": null, + "method": "GET|HEAD", + "uri": "verify-email/{id}/{hash}", + "name": "verification.verify", + "action": "App\\Http\\Controllers\\Auth\\VerifyEmailController@__invoke", + "middleware": [ + "web", + "App\\Http\\Middleware\\Authenticate", + "App\\Http\\Middleware\\ValidateSignature", + "Illuminate\\Routing\\Middleware\\ThrottleRequests:6,1" + ] + } ] diff --git a/examples/laravel10-app/jsconfig.json b/examples/laravel10-app/jsconfig.json index d08a1ac..766de86 100644 --- a/examples/laravel10-app/jsconfig.json +++ b/examples/laravel10-app/jsconfig.json @@ -1,9 +1,9 @@ { - "compilerOptions": { - "baseUrl": ".", - "paths": { - "@/*": ["resources/js/*"] - } - }, - "exclude": ["node_modules", "public"] + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/*": ["resources/js/*"] + } + }, + "exclude": ["node_modules", "public"] } diff --git a/examples/laravel10-app/package-lock.json b/examples/laravel10-app/package-lock.json index 65f1243..de2fa84 100644 --- a/examples/laravel10-app/package-lock.json +++ b/examples/laravel10-app/package-lock.json @@ -1,2242 +1,2242 @@ { - "name": "html", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "devDependencies": { - "@7nohe/laravel-typegen": "file:../../../laravel-typegen", - "@7nohe/laravel-zodgen": "^0.1.5", - "@inertiajs/vue3": "^1.0.8", - "@tailwindcss/forms": "^0.5.3", - "@types/ziggy-js": "^1.3.2", - "@vitejs/plugin-vue": "^4.1.0", - "autoprefixer": "^10.4.14", - "axios": "^1.3.4", - "laravel-vite-plugin": "^0.7.4", - "lodash": "^4.17.21", - "postcss": "^8.4.21", - "tailwindcss": "^3.2.7", - "vite": "^4.2.1", - "vue": "^3.2.47", - "vue-tsc": "^1.2.0", - "ziggy-js": "^1.5.0" - } - }, - "../../../laravel-typegen": { - "version": "0.6.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@7nohe/laravel-zodgen": "^0.1.6", - "commander": "^12.0.0", - "consola": "^3.2.3", - "glob": "^10.3.12", - "php-parser": "^3.1.5", - "typescript": "^5.4.5" - }, - "bin": { - "laravel-typegen": "dist/src/cli.js" - }, - "devDependencies": { - "@biomejs/biome": "1.7.3", - "@types/node": "^20.11.16", - "lefthook": "^1.6.12" - } - }, - "node_modules/@7nohe/laravel-typegen": { - "resolved": "../../../laravel-typegen", - "link": true - }, - "node_modules/@7nohe/laravel-zodgen": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@7nohe/laravel-zodgen/-/laravel-zodgen-0.1.5.tgz", - "integrity": "sha512-DqayU8j0g4u7O+gHLiKaeoJNXg1cz2AVaV6mGgvpIZJfzcIQbCc2JIc39BU1GcZsJ4eyddbzbKBxLcKCO2bxhw==", - "dev": true, - "dependencies": { - "commander": "^10.0.0", - "glob": "^9.3.2", - "php-parser": "^3.1.4", - "typescript": "^5.0.2", - "zod": "^3.21.4" - }, - "bin": { - "laravel-zodgen": "dist/cli.js" - } - }, - "node_modules/@7nohe/laravel-zodgen/node_modules/glob": { - "version": "9.3.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", - "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "minimatch": "^8.0.2", - "minipass": "^4.2.4", - "path-scurry": "^1.6.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@7nohe/laravel-zodgen/node_modules/minimatch": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", - "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@7nohe/laravel-zodgen/node_modules/typescript": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", - "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=12.20" - } - }, - "node_modules/@babel/parser": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz", - "integrity": "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.12.tgz", - "integrity": "sha512-E/sgkvwoIfj4aMAPL2e35VnUJspzVYl7+M1B2cqeubdBhADV4uPon0KCc8p2G+LqSJ6i8ocYPCqY3A4GGq0zkQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.12.tgz", - "integrity": "sha512-WQ9p5oiXXYJ33F2EkE3r0FRDFVpEdcDiwNX3u7Xaibxfx6vQE0Sb8ytrfQsA5WO6kDn6mDfKLh6KrPBjvkk7xA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.12.tgz", - "integrity": "sha512-m4OsaCr5gT+se25rFPHKQXARMyAehHTQAz4XX1Vk3d27VtqiX0ALMBPoXZsGaB6JYryCLfgGwUslMqTfqeLU0w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.12.tgz", - "integrity": "sha512-O3GCZghRIx+RAN0NDPhyyhRgwa19MoKlzGonIb5hgTj78krqp9XZbYCvFr9N1eUxg0ZQEpiiZ4QvsOQwBpP+lg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.12.tgz", - "integrity": "sha512-5D48jM3tW27h1qjaD9UNRuN+4v0zvksqZSPZqeSWggfMlsVdAhH3pwSfQIFJwcs9QJ9BRibPS4ViZgs3d2wsCA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.12.tgz", - "integrity": "sha512-OWvHzmLNTdF1erSvrfoEBGlN94IE6vCEaGEkEH29uo/VoONqPnoDFfShi41Ew+yKimx4vrmmAJEGNoyyP+OgOQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.12.tgz", - "integrity": "sha512-A0Xg5CZv8MU9xh4a+7NUpi5VHBKh1RaGJKqjxe4KG87X+mTjDE6ZvlJqpWoeJxgfXHT7IMP9tDFu7IZ03OtJAw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.12.tgz", - "integrity": "sha512-WsHyJ7b7vzHdJ1fv67Yf++2dz3D726oO3QCu8iNYik4fb5YuuReOI9OtA+n7Mk0xyQivNTPbl181s+5oZ38gyA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.12.tgz", - "integrity": "sha512-cK3AjkEc+8v8YG02hYLQIQlOznW+v9N+OI9BAFuyqkfQFR+DnDLhEM5N8QRxAUz99cJTo1rLNXqRrvY15gbQUg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.12.tgz", - "integrity": "sha512-jdOBXJqcgHlah/nYHnj3Hrnl9l63RjtQ4vn9+bohjQPI2QafASB5MtHAoEv0JQHVb/xYQTFOeuHnNYE1zF7tYw==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.12.tgz", - "integrity": "sha512-GTOEtj8h9qPKXCyiBBnHconSCV9LwFyx/gv3Phw0pa25qPYjVuuGZ4Dk14bGCfGX3qKF0+ceeQvwmtI+aYBbVA==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.12.tgz", - "integrity": "sha512-o8CIhfBwKcxmEENOH9RwmUejs5jFiNoDw7YgS0EJTF6kgPgcqLFjgoc5kDey5cMHRVCIWc6kK2ShUePOcc7RbA==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.12.tgz", - "integrity": "sha512-biMLH6NR/GR4z+ap0oJYb877LdBpGac8KfZoEnDiBKd7MD/xt8eaw1SFfYRUeMVx519kVkAOL2GExdFmYnZx3A==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.12.tgz", - "integrity": "sha512-jkphYUiO38wZGeWlfIBMB72auOllNA2sLfiZPGDtOBb1ELN8lmqBrlMiucgL8awBw1zBXN69PmZM6g4yTX84TA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.12.tgz", - "integrity": "sha512-j3ucLdeY9HBcvODhCY4b+Ds3hWGO8t+SAidtmWu/ukfLLG/oYDMaA+dnugTVAg5fnUOGNbIYL9TOjhWgQB8W5g==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.12.tgz", - "integrity": "sha512-uo5JL3cgaEGotaqSaJdRfFNSCUJOIliKLnDGWaVCgIKkHxwhYMm95pfMbWZ9l7GeW9kDg0tSxcy9NYdEtjwwmA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.12.tgz", - "integrity": "sha512-DNdoRg8JX+gGsbqt2gPgkgb00mqOgOO27KnrWZtdABl6yWTST30aibGJ6geBq3WM2TIeW6COs5AScnC7GwtGPg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.12.tgz", - "integrity": "sha512-aVsENlr7B64w8I1lhHShND5o8cW6sB9n9MUtLumFlPhG3elhNWtE7M1TFpj3m7lT3sKQUMkGFjTQBrvDDO1YWA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.12.tgz", - "integrity": "sha512-qbHGVQdKSwi0JQJuZznS4SyY27tYXYF0mrgthbxXrZI3AHKuRvU+Eqbg/F0rmLDpW/jkIZBlCO1XfHUBMNJ1pg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.12.tgz", - "integrity": "sha512-zsCp8Ql+96xXTVTmm6ffvoTSZSV2B/LzzkUXAY33F/76EajNw1m+jZ9zPfNJlJ3Rh4EzOszNDHsmG/fZOhtqDg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.12.tgz", - "integrity": "sha512-FfrFjR4id7wcFYOdqbDfDET3tjxCozUgbqdkOABsSFzoZGFC92UK7mg4JKRc/B3NNEf1s2WHxJ7VfTdVDPN3ng==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.12.tgz", - "integrity": "sha512-JOOxw49BVZx2/5tW3FqkdjSD/5gXYeVGPDcB0lvap0gLQshkh1Nyel1QazC+wNxus3xPlsYAgqU1BUmrmCvWtw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@inertiajs/core": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@inertiajs/core/-/core-1.0.8.tgz", - "integrity": "sha512-8nr1C76bE9Pfb5OwDGtjtSsiy2g6EG5J7w/w4dWHmoQdY9g01F+VnN3+QYtf/fsFkd8l7A6HoCBgUEZHkwdhXg==", - "dev": true, - "dependencies": { - "axios": "^1.2.0", - "deepmerge": "^4.0.0", - "nprogress": "^0.2.0", - "qs": "^6.9.0" - } - }, - "node_modules/@inertiajs/vue3": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@inertiajs/vue3/-/vue3-1.0.8.tgz", - "integrity": "sha512-vWCMCCUFGYGtqHKTbwsg4cV0hbbZXoKGcDLxGtnV+OGD4sULmXvRzlc5ZuZrjn5gmhpGKWHnW6yY8ifNPLdoMg==", - "dev": true, - "dependencies": { - "@inertiajs/core": "1.0.8", - "lodash.clonedeep": "^4.5.0", - "lodash.isequal": "^4.5.0" - }, - "peerDependencies": { - "vue": "^3.0.0" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@tailwindcss/forms": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.3.tgz", - "integrity": "sha512-y5mb86JUoiUgBjY/o6FJSFZSEttfb3Q5gllE4xoKjAAD+vBrnIhE4dViwUuow3va8mpH4s9jyUbUbrRGoRdc2Q==", - "dev": true, - "dependencies": { - "mini-svg-data-uri": "^1.2.3" - }, - "peerDependencies": { - "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1" - } - }, - "node_modules/@types/history": { - "version": "4.7.11", - "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", - "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==", - "dev": true - }, - "node_modules/@types/ziggy-js": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/ziggy-js/-/ziggy-js-1.3.2.tgz", - "integrity": "sha512-hwnsR3tEy3jyW+akw5kwfyZ9+/MZ+jN659G6LoGKBL9LvOUv07fiMsZL3vaK8IfTo2OXVMa4elsX8r/nU/x9hw==", - "dev": true, - "dependencies": { - "@types/history": "^4.7.11" - } - }, - "node_modules/@vitejs/plugin-vue": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.1.0.tgz", - "integrity": "sha512-++9JOAFdcXI3lyer9UKUV4rfoQ3T1RN8yDqoCLar86s0xQct5yblxAE+yWgRnU5/0FOlVCpTZpYSBV/bGWrSrQ==", - "dev": true, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "vite": "^4.0.0", - "vue": "^3.2.25" - } - }, - "node_modules/@volar/language-core": { - "version": "1.3.0-alpha.0", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.3.0-alpha.0.tgz", - "integrity": "sha512-W3uMzecHPcbwddPu4SJpUcPakRBK/y/BP+U0U6NiPpUX1tONLC4yCawt+QBJqtgJ+sfD6ztf5PyvPL3hQRqfOA==", - "dev": true, - "dependencies": { - "@volar/source-map": "1.3.0-alpha.0" - } - }, - "node_modules/@volar/source-map": { - "version": "1.3.0-alpha.0", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.3.0-alpha.0.tgz", - "integrity": "sha512-jSdizxWFvDTvkPYZnO6ew3sBZUnS0abKCbuopkc0JrIlFbznWC/fPH3iPFIMS8/IIkRxq1Jh9VVG60SmtsdaMQ==", - "dev": true, - "dependencies": { - "muggle-string": "^0.2.2" - } - }, - "node_modules/@volar/typescript": { - "version": "1.3.0-alpha.0", - "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.3.0-alpha.0.tgz", - "integrity": "sha512-5UItyW2cdH2mBLu4RrECRNJRgtvvzKrSCn2y3v/D61QwIDkGx4aeil6x8RFuUL5TFtV6QvVHXnsOHxNgd+sCow==", - "dev": true, - "dependencies": { - "@volar/language-core": "1.3.0-alpha.0" - } - }, - "node_modules/@volar/vue-language-core": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@volar/vue-language-core/-/vue-language-core-1.2.0.tgz", - "integrity": "sha512-w7yEiaITh2WzKe6u8ZdeLKCUz43wdmY/OqAmsB/PGDvvhTcVhCJ6f0W/RprZL1IhqH8wALoWiwEh/Wer7ZviMQ==", - "dev": true, - "dependencies": { - "@volar/language-core": "1.3.0-alpha.0", - "@volar/source-map": "1.3.0-alpha.0", - "@vue/compiler-dom": "^3.2.47", - "@vue/compiler-sfc": "^3.2.47", - "@vue/reactivity": "^3.2.47", - "@vue/shared": "^3.2.47", - "minimatch": "^6.1.6", - "muggle-string": "^0.2.2", - "vue-template-compiler": "^2.7.14" - } - }, - "node_modules/@volar/vue-language-core/node_modules/minimatch": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", - "integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@volar/vue-typescript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@volar/vue-typescript/-/vue-typescript-1.2.0.tgz", - "integrity": "sha512-zjmRi9y3J1EkG+pfuHp8IbHmibihrKK485cfzsHjiuvJMGrpkWvlO5WVEk8oslMxxeGC5XwBFE9AOlvh378EPA==", - "dev": true, - "dependencies": { - "@volar/typescript": "1.3.0-alpha.0", - "@volar/vue-language-core": "1.2.0" - } - }, - "node_modules/@vue/compiler-core": { - "version": "3.2.47", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.47.tgz", - "integrity": "sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.16.4", - "@vue/shared": "3.2.47", - "estree-walker": "^2.0.2", - "source-map": "^0.6.1" - } - }, - "node_modules/@vue/compiler-dom": { - "version": "3.2.47", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz", - "integrity": "sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==", - "dev": true, - "dependencies": { - "@vue/compiler-core": "3.2.47", - "@vue/shared": "3.2.47" - } - }, - "node_modules/@vue/compiler-sfc": { - "version": "3.2.47", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz", - "integrity": "sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.47", - "@vue/compiler-dom": "3.2.47", - "@vue/compiler-ssr": "3.2.47", - "@vue/reactivity-transform": "3.2.47", - "@vue/shared": "3.2.47", - "estree-walker": "^2.0.2", - "magic-string": "^0.25.7", - "postcss": "^8.1.10", - "source-map": "^0.6.1" - } - }, - "node_modules/@vue/compiler-ssr": { - "version": "3.2.47", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz", - "integrity": "sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==", - "dev": true, - "dependencies": { - "@vue/compiler-dom": "3.2.47", - "@vue/shared": "3.2.47" - } - }, - "node_modules/@vue/reactivity": { - "version": "3.2.47", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.47.tgz", - "integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==", - "dev": true, - "dependencies": { - "@vue/shared": "3.2.47" - } - }, - "node_modules/@vue/reactivity-transform": { - "version": "3.2.47", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz", - "integrity": "sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.47", - "@vue/shared": "3.2.47", - "estree-walker": "^2.0.2", - "magic-string": "^0.25.7" - } - }, - "node_modules/@vue/runtime-core": { - "version": "3.2.47", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.47.tgz", - "integrity": "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==", - "dev": true, - "dependencies": { - "@vue/reactivity": "3.2.47", - "@vue/shared": "3.2.47" - } - }, - "node_modules/@vue/runtime-dom": { - "version": "3.2.47", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz", - "integrity": "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==", - "dev": true, - "dependencies": { - "@vue/runtime-core": "3.2.47", - "@vue/shared": "3.2.47", - "csstype": "^2.6.8" - } - }, - "node_modules/@vue/server-renderer": { - "version": "3.2.47", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.47.tgz", - "integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==", - "dev": true, - "dependencies": { - "@vue/compiler-ssr": "3.2.47", - "@vue/shared": "3.2.47" - }, - "peerDependencies": { - "vue": "3.2.47" - } - }, - "node_modules/@vue/shared": { - "version": "3.2.47", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz", - "integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==", - "dev": true - }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dev": true, - "dependencies": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - } - }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "node_modules/autoprefixer": { - "version": "10.4.14", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", - "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - } - ], - "dependencies": { - "browserslist": "^4.21.5", - "caniuse-lite": "^1.0.30001464", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/axios": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz", - "integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==", - "dev": true, - "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001468", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001468.tgz", - "integrity": "sha512-zgAo8D5kbOyUcRAgSmgyuvBkjrGk5CGYG5TYgFdpQv+ywcyEpo1LOWoG8YmoflGnh+V+UsNuKYedsoYs0hzV5A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.0.tgz", - "integrity": "sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==", - "dev": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/csstype": { - "version": "2.6.21", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", - "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", - "dev": true - }, - "node_modules/de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/defined": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", - "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/detective": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", - "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", - "dev": true, - "dependencies": { - "acorn-node": "^1.8.2", - "defined": "^1.0.0", - "minimist": "^1.2.6" - }, - "bin": { - "detective": "bin/detective.js" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.334", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.334.tgz", - "integrity": "sha512-laZ1odk+TRen6q0GeyQx/JEkpD3iSZT7ewopCpKqg9bTjP1l8XRfU3Bg20CFjNPZkp5+NDBl3iqd4o/kPO+Vew==", - "dev": true - }, - "node_modules/esbuild": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.12.tgz", - "integrity": "sha512-bX/zHl7Gn2CpQwcMtRogTTBf9l1nl+H6R8nUbjk+RuKqAE3+8FDulLA+pHvX7aA7Xe07Iwa+CWvy9I8Y2qqPKQ==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.17.12", - "@esbuild/android-arm64": "0.17.12", - "@esbuild/android-x64": "0.17.12", - "@esbuild/darwin-arm64": "0.17.12", - "@esbuild/darwin-x64": "0.17.12", - "@esbuild/freebsd-arm64": "0.17.12", - "@esbuild/freebsd-x64": "0.17.12", - "@esbuild/linux-arm": "0.17.12", - "@esbuild/linux-arm64": "0.17.12", - "@esbuild/linux-ia32": "0.17.12", - "@esbuild/linux-loong64": "0.17.12", - "@esbuild/linux-mips64el": "0.17.12", - "@esbuild/linux-ppc64": "0.17.12", - "@esbuild/linux-riscv64": "0.17.12", - "@esbuild/linux-s390x": "0.17.12", - "@esbuild/linux-x64": "0.17.12", - "@esbuild/netbsd-x64": "0.17.12", - "@esbuild/openbsd-x64": "0.17.12", - "@esbuild/sunos-x64": "0.17.12", - "@esbuild/win32-arm64": "0.17.12", - "@esbuild/win32-ia32": "0.17.12", - "@esbuild/win32-x64": "0.17.12" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true, - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/laravel-vite-plugin": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-0.7.4.tgz", - "integrity": "sha512-NlIuXbeuI+4NZzRpWNpGHRVTwuFWessvD7QoD+o2MlyAi7qyUS4J8r4/yTlu1dl9lxcR7iKoYUmHQqZDcrw2KA==", - "dev": true, - "dependencies": { - "picocolors": "^1.0.0", - "vite-plugin-full-reload": "^1.0.5" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0" - } - }, - "node_modules/lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", - "dev": true - }, - "node_modules/lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", - "dev": true - }, - "node_modules/lru-cache": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.1.tgz", - "integrity": "sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mini-svg-data-uri": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", - "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", - "dev": true, - "bin": { - "mini-svg-data-uri": "cli.js" - } - }, - "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", - "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/muggle-string": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.2.2.tgz", - "integrity": "sha512-YVE1mIJ4VpUMqZObFndk9CJu6DBJR/GB13p3tXuNbwD4XExaI5EOuRl6BHeIDxIqXZVxSfAC+y6U1Z/IxCfKUg==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nprogress": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", - "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==", - "dev": true - }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-scurry": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.7.0.tgz", - "integrity": "sha512-UkZUeDjczjYRE495+9thsgcVgsaCPkaw80slmfVFgllxY+IO8ubTsOpFVjDPROBqJdHfVPUFRHPBV/WciOVfWg==", - "dev": true, - "dependencies": { - "lru-cache": "^9.0.0", - "minipass": "^5.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/php-parser": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/php-parser/-/php-parser-3.1.4.tgz", - "integrity": "sha512-WUEfH4FWsVItqgOknM67msDdcUAfgPJsHhPNl6EPXzWtX+PfdY282m4i8YIJ9ALUEhf+qGDajdmW+VYqSd7Deg==", - "dev": true - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-import": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", - "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-js": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", - "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", - "dev": true, - "dependencies": { - "camelcase-css": "^2.0.1" - }, - "engines": { - "node": "^12 || ^14 || >= 16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.3.3" - } - }, - "node_modules/postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", - "dev": true, - "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" - }, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-nested": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz", - "integrity": "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", - "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, - "node_modules/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, - "dependencies": { - "pify": "^2.3.0" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rollup": { - "version": "3.20.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.20.0.tgz", - "integrity": "sha512-YsIfrk80NqUDrxrjWPXUa7PWvAfegZEXHuPsEZg58fGCdjL1I9C1i/NaG+L+27kxxwkrG/QEDEQc8s/ynXWWGQ==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "deprecated": "Please use @jridgewell/sourcemap-codec instead", - "dev": true - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tailwindcss": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.7.tgz", - "integrity": "sha512-B6DLqJzc21x7wntlH/GsZwEXTBttVSl1FtCzC8WP4oBc/NKef7kaax5jeihkkCEWc831/5NDJ9gRNDK6NEioQQ==", - "dev": true, - "dependencies": { - "arg": "^5.0.2", - "chokidar": "^3.5.3", - "color-name": "^1.1.4", - "detective": "^5.2.1", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.2.12", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "lilconfig": "^2.0.6", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.0.9", - "postcss-import": "^14.1.0", - "postcss-js": "^4.0.0", - "postcss-load-config": "^3.1.4", - "postcss-nested": "6.0.0", - "postcss-selector-parser": "^6.0.11", - "postcss-value-parser": "^4.2.0", - "quick-lru": "^5.1.1", - "resolve": "^1.22.1" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "postcss": "^8.0.9" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/typescript": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", - "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", - "dev": true, - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/vite": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.2.1.tgz", - "integrity": "sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==", - "dev": true, - "dependencies": { - "esbuild": "^0.17.5", - "postcss": "^8.4.21", - "resolve": "^1.22.1", - "rollup": "^3.18.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/vite-plugin-full-reload": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/vite-plugin-full-reload/-/vite-plugin-full-reload-1.0.5.tgz", - "integrity": "sha512-kVZFDFWr0DxiHn6MuDVTQf7gnWIdETGlZh0hvTiMXzRN80vgF4PKbONSq8U1d0WtHsKaFODTQgJeakLacoPZEQ==", - "dev": true, - "dependencies": { - "picocolors": "^1.0.0", - "picomatch": "^2.3.1" - }, - "peerDependencies": { - "vite": "^2 || ^3 || ^4" - } - }, - "node_modules/vue": { - "version": "3.2.47", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.47.tgz", - "integrity": "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==", - "dev": true, - "dependencies": { - "@vue/compiler-dom": "3.2.47", - "@vue/compiler-sfc": "3.2.47", - "@vue/runtime-dom": "3.2.47", - "@vue/server-renderer": "3.2.47", - "@vue/shared": "3.2.47" - } - }, - "node_modules/vue-template-compiler": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz", - "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==", - "dev": true, - "dependencies": { - "de-indent": "^1.0.2", - "he": "^1.2.0" - } - }, - "node_modules/vue-tsc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.2.0.tgz", - "integrity": "sha512-rIlzqdrhyPYyLG9zxsVRa+JEseeS9s8F2BbVVVWRRsTZvJO2BbhLEb2HW3MY+DFma0378tnIqs+vfTzbcQtRFw==", - "dev": true, - "dependencies": { - "@volar/vue-language-core": "1.2.0", - "@volar/vue-typescript": "1.2.0" - }, - "bin": { - "vue-tsc": "bin/vue-tsc.js" - }, - "peerDependencies": { - "typescript": "*" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/ziggy-js": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/ziggy-js/-/ziggy-js-1.5.0.tgz", - "integrity": "sha512-whzY4H/EMEKrXbbqQbncrSy9WN8N6sjzbVPdBjhQMauvODWtNUTDMq6Po55hPDx43GRFtIF22zrs/m2Z3qOi4g==", - "dev": true, - "dependencies": { - "qs": "~6.9.7" - } - }, - "node_modules/ziggy-js/node_modules/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", - "dev": true, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/zod": { - "version": "3.21.4", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", - "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - } - } + "name": "html", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "devDependencies": { + "@7nohe/laravel-typegen": "file:../../../laravel-typegen", + "@7nohe/laravel-zodgen": "^0.1.5", + "@inertiajs/vue3": "^1.0.8", + "@tailwindcss/forms": "^0.5.3", + "@types/ziggy-js": "^1.3.2", + "@vitejs/plugin-vue": "^4.1.0", + "autoprefixer": "^10.4.14", + "axios": "^1.3.4", + "laravel-vite-plugin": "^0.7.4", + "lodash": "^4.17.21", + "postcss": "^8.4.21", + "tailwindcss": "^3.2.7", + "vite": "^4.2.1", + "vue": "^3.2.47", + "vue-tsc": "^1.2.0", + "ziggy-js": "^1.5.0" + } + }, + "../../../laravel-typegen": { + "version": "0.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@7nohe/laravel-zodgen": "^0.1.6", + "commander": "^12.0.0", + "consola": "^3.2.3", + "glob": "^10.3.12", + "php-parser": "^3.1.5", + "typescript": "^5.4.5" + }, + "bin": { + "laravel-typegen": "dist/src/cli.js" + }, + "devDependencies": { + "@biomejs/biome": "1.7.3", + "@types/node": "^20.11.16", + "lefthook": "^1.6.12" + } + }, + "node_modules/@7nohe/laravel-typegen": { + "resolved": "../../../laravel-typegen", + "link": true + }, + "node_modules/@7nohe/laravel-zodgen": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@7nohe/laravel-zodgen/-/laravel-zodgen-0.1.5.tgz", + "integrity": "sha512-DqayU8j0g4u7O+gHLiKaeoJNXg1cz2AVaV6mGgvpIZJfzcIQbCc2JIc39BU1GcZsJ4eyddbzbKBxLcKCO2bxhw==", + "dev": true, + "dependencies": { + "commander": "^10.0.0", + "glob": "^9.3.2", + "php-parser": "^3.1.4", + "typescript": "^5.0.2", + "zod": "^3.21.4" + }, + "bin": { + "laravel-zodgen": "dist/cli.js" + } + }, + "node_modules/@7nohe/laravel-zodgen/node_modules/glob": { + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "minimatch": "^8.0.2", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@7nohe/laravel-zodgen/node_modules/minimatch": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", + "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@7nohe/laravel-zodgen/node_modules/typescript": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=12.20" + } + }, + "node_modules/@babel/parser": { + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz", + "integrity": "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.12.tgz", + "integrity": "sha512-E/sgkvwoIfj4aMAPL2e35VnUJspzVYl7+M1B2cqeubdBhADV4uPon0KCc8p2G+LqSJ6i8ocYPCqY3A4GGq0zkQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.12.tgz", + "integrity": "sha512-WQ9p5oiXXYJ33F2EkE3r0FRDFVpEdcDiwNX3u7Xaibxfx6vQE0Sb8ytrfQsA5WO6kDn6mDfKLh6KrPBjvkk7xA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.12.tgz", + "integrity": "sha512-m4OsaCr5gT+se25rFPHKQXARMyAehHTQAz4XX1Vk3d27VtqiX0ALMBPoXZsGaB6JYryCLfgGwUslMqTfqeLU0w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.12.tgz", + "integrity": "sha512-O3GCZghRIx+RAN0NDPhyyhRgwa19MoKlzGonIb5hgTj78krqp9XZbYCvFr9N1eUxg0ZQEpiiZ4QvsOQwBpP+lg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.12.tgz", + "integrity": "sha512-5D48jM3tW27h1qjaD9UNRuN+4v0zvksqZSPZqeSWggfMlsVdAhH3pwSfQIFJwcs9QJ9BRibPS4ViZgs3d2wsCA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.12.tgz", + "integrity": "sha512-OWvHzmLNTdF1erSvrfoEBGlN94IE6vCEaGEkEH29uo/VoONqPnoDFfShi41Ew+yKimx4vrmmAJEGNoyyP+OgOQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.12.tgz", + "integrity": "sha512-A0Xg5CZv8MU9xh4a+7NUpi5VHBKh1RaGJKqjxe4KG87X+mTjDE6ZvlJqpWoeJxgfXHT7IMP9tDFu7IZ03OtJAw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.12.tgz", + "integrity": "sha512-WsHyJ7b7vzHdJ1fv67Yf++2dz3D726oO3QCu8iNYik4fb5YuuReOI9OtA+n7Mk0xyQivNTPbl181s+5oZ38gyA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.12.tgz", + "integrity": "sha512-cK3AjkEc+8v8YG02hYLQIQlOznW+v9N+OI9BAFuyqkfQFR+DnDLhEM5N8QRxAUz99cJTo1rLNXqRrvY15gbQUg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.12.tgz", + "integrity": "sha512-jdOBXJqcgHlah/nYHnj3Hrnl9l63RjtQ4vn9+bohjQPI2QafASB5MtHAoEv0JQHVb/xYQTFOeuHnNYE1zF7tYw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.12.tgz", + "integrity": "sha512-GTOEtj8h9qPKXCyiBBnHconSCV9LwFyx/gv3Phw0pa25qPYjVuuGZ4Dk14bGCfGX3qKF0+ceeQvwmtI+aYBbVA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.12.tgz", + "integrity": "sha512-o8CIhfBwKcxmEENOH9RwmUejs5jFiNoDw7YgS0EJTF6kgPgcqLFjgoc5kDey5cMHRVCIWc6kK2ShUePOcc7RbA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.12.tgz", + "integrity": "sha512-biMLH6NR/GR4z+ap0oJYb877LdBpGac8KfZoEnDiBKd7MD/xt8eaw1SFfYRUeMVx519kVkAOL2GExdFmYnZx3A==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.12.tgz", + "integrity": "sha512-jkphYUiO38wZGeWlfIBMB72auOllNA2sLfiZPGDtOBb1ELN8lmqBrlMiucgL8awBw1zBXN69PmZM6g4yTX84TA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.12.tgz", + "integrity": "sha512-j3ucLdeY9HBcvODhCY4b+Ds3hWGO8t+SAidtmWu/ukfLLG/oYDMaA+dnugTVAg5fnUOGNbIYL9TOjhWgQB8W5g==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.12.tgz", + "integrity": "sha512-uo5JL3cgaEGotaqSaJdRfFNSCUJOIliKLnDGWaVCgIKkHxwhYMm95pfMbWZ9l7GeW9kDg0tSxcy9NYdEtjwwmA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.12.tgz", + "integrity": "sha512-DNdoRg8JX+gGsbqt2gPgkgb00mqOgOO27KnrWZtdABl6yWTST30aibGJ6geBq3WM2TIeW6COs5AScnC7GwtGPg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.12.tgz", + "integrity": "sha512-aVsENlr7B64w8I1lhHShND5o8cW6sB9n9MUtLumFlPhG3elhNWtE7M1TFpj3m7lT3sKQUMkGFjTQBrvDDO1YWA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.12.tgz", + "integrity": "sha512-qbHGVQdKSwi0JQJuZznS4SyY27tYXYF0mrgthbxXrZI3AHKuRvU+Eqbg/F0rmLDpW/jkIZBlCO1XfHUBMNJ1pg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.12.tgz", + "integrity": "sha512-zsCp8Ql+96xXTVTmm6ffvoTSZSV2B/LzzkUXAY33F/76EajNw1m+jZ9zPfNJlJ3Rh4EzOszNDHsmG/fZOhtqDg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.12.tgz", + "integrity": "sha512-FfrFjR4id7wcFYOdqbDfDET3tjxCozUgbqdkOABsSFzoZGFC92UK7mg4JKRc/B3NNEf1s2WHxJ7VfTdVDPN3ng==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.12.tgz", + "integrity": "sha512-JOOxw49BVZx2/5tW3FqkdjSD/5gXYeVGPDcB0lvap0gLQshkh1Nyel1QazC+wNxus3xPlsYAgqU1BUmrmCvWtw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@inertiajs/core": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@inertiajs/core/-/core-1.0.8.tgz", + "integrity": "sha512-8nr1C76bE9Pfb5OwDGtjtSsiy2g6EG5J7w/w4dWHmoQdY9g01F+VnN3+QYtf/fsFkd8l7A6HoCBgUEZHkwdhXg==", + "dev": true, + "dependencies": { + "axios": "^1.2.0", + "deepmerge": "^4.0.0", + "nprogress": "^0.2.0", + "qs": "^6.9.0" + } + }, + "node_modules/@inertiajs/vue3": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@inertiajs/vue3/-/vue3-1.0.8.tgz", + "integrity": "sha512-vWCMCCUFGYGtqHKTbwsg4cV0hbbZXoKGcDLxGtnV+OGD4sULmXvRzlc5ZuZrjn5gmhpGKWHnW6yY8ifNPLdoMg==", + "dev": true, + "dependencies": { + "@inertiajs/core": "1.0.8", + "lodash.clonedeep": "^4.5.0", + "lodash.isequal": "^4.5.0" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@tailwindcss/forms": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.3.tgz", + "integrity": "sha512-y5mb86JUoiUgBjY/o6FJSFZSEttfb3Q5gllE4xoKjAAD+vBrnIhE4dViwUuow3va8mpH4s9jyUbUbrRGoRdc2Q==", + "dev": true, + "dependencies": { + "mini-svg-data-uri": "^1.2.3" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1" + } + }, + "node_modules/@types/history": { + "version": "4.7.11", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", + "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==", + "dev": true + }, + "node_modules/@types/ziggy-js": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/ziggy-js/-/ziggy-js-1.3.2.tgz", + "integrity": "sha512-hwnsR3tEy3jyW+akw5kwfyZ9+/MZ+jN659G6LoGKBL9LvOUv07fiMsZL3vaK8IfTo2OXVMa4elsX8r/nU/x9hw==", + "dev": true, + "dependencies": { + "@types/history": "^4.7.11" + } + }, + "node_modules/@vitejs/plugin-vue": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.1.0.tgz", + "integrity": "sha512-++9JOAFdcXI3lyer9UKUV4rfoQ3T1RN8yDqoCLar86s0xQct5yblxAE+yWgRnU5/0FOlVCpTZpYSBV/bGWrSrQ==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@volar/language-core": { + "version": "1.3.0-alpha.0", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.3.0-alpha.0.tgz", + "integrity": "sha512-W3uMzecHPcbwddPu4SJpUcPakRBK/y/BP+U0U6NiPpUX1tONLC4yCawt+QBJqtgJ+sfD6ztf5PyvPL3hQRqfOA==", + "dev": true, + "dependencies": { + "@volar/source-map": "1.3.0-alpha.0" + } + }, + "node_modules/@volar/source-map": { + "version": "1.3.0-alpha.0", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.3.0-alpha.0.tgz", + "integrity": "sha512-jSdizxWFvDTvkPYZnO6ew3sBZUnS0abKCbuopkc0JrIlFbznWC/fPH3iPFIMS8/IIkRxq1Jh9VVG60SmtsdaMQ==", + "dev": true, + "dependencies": { + "muggle-string": "^0.2.2" + } + }, + "node_modules/@volar/typescript": { + "version": "1.3.0-alpha.0", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.3.0-alpha.0.tgz", + "integrity": "sha512-5UItyW2cdH2mBLu4RrECRNJRgtvvzKrSCn2y3v/D61QwIDkGx4aeil6x8RFuUL5TFtV6QvVHXnsOHxNgd+sCow==", + "dev": true, + "dependencies": { + "@volar/language-core": "1.3.0-alpha.0" + } + }, + "node_modules/@volar/vue-language-core": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@volar/vue-language-core/-/vue-language-core-1.2.0.tgz", + "integrity": "sha512-w7yEiaITh2WzKe6u8ZdeLKCUz43wdmY/OqAmsB/PGDvvhTcVhCJ6f0W/RprZL1IhqH8wALoWiwEh/Wer7ZviMQ==", + "dev": true, + "dependencies": { + "@volar/language-core": "1.3.0-alpha.0", + "@volar/source-map": "1.3.0-alpha.0", + "@vue/compiler-dom": "^3.2.47", + "@vue/compiler-sfc": "^3.2.47", + "@vue/reactivity": "^3.2.47", + "@vue/shared": "^3.2.47", + "minimatch": "^6.1.6", + "muggle-string": "^0.2.2", + "vue-template-compiler": "^2.7.14" + } + }, + "node_modules/@volar/vue-language-core/node_modules/minimatch": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", + "integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@volar/vue-typescript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@volar/vue-typescript/-/vue-typescript-1.2.0.tgz", + "integrity": "sha512-zjmRi9y3J1EkG+pfuHp8IbHmibihrKK485cfzsHjiuvJMGrpkWvlO5WVEk8oslMxxeGC5XwBFE9AOlvh378EPA==", + "dev": true, + "dependencies": { + "@volar/typescript": "1.3.0-alpha.0", + "@volar/vue-language-core": "1.2.0" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.47.tgz", + "integrity": "sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/shared": "3.2.47", + "estree-walker": "^2.0.2", + "source-map": "^0.6.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz", + "integrity": "sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==", + "dev": true, + "dependencies": { + "@vue/compiler-core": "3.2.47", + "@vue/shared": "3.2.47" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz", + "integrity": "sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.47", + "@vue/compiler-dom": "3.2.47", + "@vue/compiler-ssr": "3.2.47", + "@vue/reactivity-transform": "3.2.47", + "@vue/shared": "3.2.47", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7", + "postcss": "^8.1.10", + "source-map": "^0.6.1" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz", + "integrity": "sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==", + "dev": true, + "dependencies": { + "@vue/compiler-dom": "3.2.47", + "@vue/shared": "3.2.47" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.47.tgz", + "integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==", + "dev": true, + "dependencies": { + "@vue/shared": "3.2.47" + } + }, + "node_modules/@vue/reactivity-transform": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz", + "integrity": "sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.47", + "@vue/shared": "3.2.47", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.47.tgz", + "integrity": "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==", + "dev": true, + "dependencies": { + "@vue/reactivity": "3.2.47", + "@vue/shared": "3.2.47" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz", + "integrity": "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==", + "dev": true, + "dependencies": { + "@vue/runtime-core": "3.2.47", + "@vue/shared": "3.2.47", + "csstype": "^2.6.8" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.47.tgz", + "integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==", + "dev": true, + "dependencies": { + "@vue/compiler-ssr": "3.2.47", + "@vue/shared": "3.2.47" + }, + "peerDependencies": { + "vue": "3.2.47" + } + }, + "node_modules/@vue/shared": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz", + "integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==", + "dev": true + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "dev": true, + "dependencies": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/autoprefixer": { + "version": "10.4.14", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", + "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.21.5", + "caniuse-lite": "^1.0.30001464", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axios": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz", + "integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001468", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001468.tgz", + "integrity": "sha512-zgAo8D5kbOyUcRAgSmgyuvBkjrGk5CGYG5TYgFdpQv+ywcyEpo1LOWoG8YmoflGnh+V+UsNuKYedsoYs0hzV5A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.0.tgz", + "integrity": "sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "2.6.21", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", + "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", + "dev": true + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defined": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", + "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detective": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", + "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", + "dev": true, + "dependencies": { + "acorn-node": "^1.8.2", + "defined": "^1.0.0", + "minimist": "^1.2.6" + }, + "bin": { + "detective": "bin/detective.js" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.334", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.334.tgz", + "integrity": "sha512-laZ1odk+TRen6q0GeyQx/JEkpD3iSZT7ewopCpKqg9bTjP1l8XRfU3Bg20CFjNPZkp5+NDBl3iqd4o/kPO+Vew==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.12.tgz", + "integrity": "sha512-bX/zHl7Gn2CpQwcMtRogTTBf9l1nl+H6R8nUbjk+RuKqAE3+8FDulLA+pHvX7aA7Xe07Iwa+CWvy9I8Y2qqPKQ==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.17.12", + "@esbuild/android-arm64": "0.17.12", + "@esbuild/android-x64": "0.17.12", + "@esbuild/darwin-arm64": "0.17.12", + "@esbuild/darwin-x64": "0.17.12", + "@esbuild/freebsd-arm64": "0.17.12", + "@esbuild/freebsd-x64": "0.17.12", + "@esbuild/linux-arm": "0.17.12", + "@esbuild/linux-arm64": "0.17.12", + "@esbuild/linux-ia32": "0.17.12", + "@esbuild/linux-loong64": "0.17.12", + "@esbuild/linux-mips64el": "0.17.12", + "@esbuild/linux-ppc64": "0.17.12", + "@esbuild/linux-riscv64": "0.17.12", + "@esbuild/linux-s390x": "0.17.12", + "@esbuild/linux-x64": "0.17.12", + "@esbuild/netbsd-x64": "0.17.12", + "@esbuild/openbsd-x64": "0.17.12", + "@esbuild/sunos-x64": "0.17.12", + "@esbuild/win32-arm64": "0.17.12", + "@esbuild/win32-ia32": "0.17.12", + "@esbuild/win32-x64": "0.17.12" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/laravel-vite-plugin": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-0.7.4.tgz", + "integrity": "sha512-NlIuXbeuI+4NZzRpWNpGHRVTwuFWessvD7QoD+o2MlyAi7qyUS4J8r4/yTlu1dl9lxcR7iKoYUmHQqZDcrw2KA==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "vite-plugin-full-reload": "^1.0.5" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0" + } + }, + "node_modules/lilconfig": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", + "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "dev": true + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.1.tgz", + "integrity": "sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mini-svg-data-uri": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", + "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", + "dev": true, + "bin": { + "mini-svg-data-uri": "cli.js" + } + }, + "node_modules/minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/muggle-string": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.2.2.tgz", + "integrity": "sha512-YVE1mIJ4VpUMqZObFndk9CJu6DBJR/GB13p3tXuNbwD4XExaI5EOuRl6BHeIDxIqXZVxSfAC+y6U1Z/IxCfKUg==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==", + "dev": true + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.7.0.tgz", + "integrity": "sha512-UkZUeDjczjYRE495+9thsgcVgsaCPkaw80slmfVFgllxY+IO8ubTsOpFVjDPROBqJdHfVPUFRHPBV/WciOVfWg==", + "dev": true, + "dependencies": { + "lru-cache": "^9.0.0", + "minipass": "^5.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/php-parser": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/php-parser/-/php-parser-3.1.4.tgz", + "integrity": "sha512-WUEfH4FWsVItqgOknM67msDdcUAfgPJsHhPNl6EPXzWtX+PfdY282m4i8YIJ9ALUEhf+qGDajdmW+VYqSd7Deg==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss": { + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", + "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", + "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.3.3" + } + }, + "node_modules/postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dev": true, + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz", + "integrity": "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.20.0.tgz", + "integrity": "sha512-YsIfrk80NqUDrxrjWPXUa7PWvAfegZEXHuPsEZg58fGCdjL1I9C1i/NaG+L+27kxxwkrG/QEDEQc8s/ynXWWGQ==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", + "dev": true + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwindcss": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.7.tgz", + "integrity": "sha512-B6DLqJzc21x7wntlH/GsZwEXTBttVSl1FtCzC8WP4oBc/NKef7kaax5jeihkkCEWc831/5NDJ9gRNDK6NEioQQ==", + "dev": true, + "dependencies": { + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "color-name": "^1.1.4", + "detective": "^5.2.1", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.2.12", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "lilconfig": "^2.0.6", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.0.9", + "postcss-import": "^14.1.0", + "postcss-js": "^4.0.0", + "postcss-load-config": "^3.1.4", + "postcss-nested": "6.0.0", + "postcss-selector-parser": "^6.0.11", + "postcss-value-parser": "^4.2.0", + "quick-lru": "^5.1.1", + "resolve": "^1.22.1" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/typescript": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", + "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", + "dev": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/vite": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.2.1.tgz", + "integrity": "sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==", + "dev": true, + "dependencies": { + "esbuild": "^0.17.5", + "postcss": "^8.4.21", + "resolve": "^1.22.1", + "rollup": "^3.18.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-full-reload": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/vite-plugin-full-reload/-/vite-plugin-full-reload-1.0.5.tgz", + "integrity": "sha512-kVZFDFWr0DxiHn6MuDVTQf7gnWIdETGlZh0hvTiMXzRN80vgF4PKbONSq8U1d0WtHsKaFODTQgJeakLacoPZEQ==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "picomatch": "^2.3.1" + }, + "peerDependencies": { + "vite": "^2 || ^3 || ^4" + } + }, + "node_modules/vue": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.47.tgz", + "integrity": "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==", + "dev": true, + "dependencies": { + "@vue/compiler-dom": "3.2.47", + "@vue/compiler-sfc": "3.2.47", + "@vue/runtime-dom": "3.2.47", + "@vue/server-renderer": "3.2.47", + "@vue/shared": "3.2.47" + } + }, + "node_modules/vue-template-compiler": { + "version": "2.7.14", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz", + "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==", + "dev": true, + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/vue-tsc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.2.0.tgz", + "integrity": "sha512-rIlzqdrhyPYyLG9zxsVRa+JEseeS9s8F2BbVVVWRRsTZvJO2BbhLEb2HW3MY+DFma0378tnIqs+vfTzbcQtRFw==", + "dev": true, + "dependencies": { + "@volar/vue-language-core": "1.2.0", + "@volar/vue-typescript": "1.2.0" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ziggy-js": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/ziggy-js/-/ziggy-js-1.5.0.tgz", + "integrity": "sha512-whzY4H/EMEKrXbbqQbncrSy9WN8N6sjzbVPdBjhQMauvODWtNUTDMq6Po55hPDx43GRFtIF22zrs/m2Z3qOi4g==", + "dev": true, + "dependencies": { + "qs": "~6.9.7" + } + }, + "node_modules/ziggy-js/node_modules/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "dev": true, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/zod": { + "version": "3.21.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", + "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } } diff --git a/examples/laravel10-app/package.json b/examples/laravel10-app/package.json index 781e698..f9b6847 100644 --- a/examples/laravel10-app/package.json +++ b/examples/laravel10-app/package.json @@ -1,28 +1,28 @@ { - "private": true, - "scripts": { - "dev": "vite", - "build": "vite build", - "type:check": "vue-tsc --noEmit", - "typegen": "KEEP_LARAVEL_JSON=true node node_modules/@7nohe/laravel-typegen/dist/src/cli.js --ziggy --form-request", - "typegen:laravel-enum": "node node_modules/@7nohe/laravel-typegen/dist/src/cli.js --enum-path 'app/LaravelEnums' --laravel-enum" - }, - "devDependencies": { - "@7nohe/laravel-typegen": "file:../../../laravel-typegen", - "@7nohe/laravel-zodgen": "^0.1.5", - "@inertiajs/vue3": "^1.0.8", - "@tailwindcss/forms": "^0.5.3", - "@types/ziggy-js": "^1.3.2", - "@vitejs/plugin-vue": "^4.1.0", - "autoprefixer": "^10.4.14", - "axios": "^1.3.4", - "laravel-vite-plugin": "^0.7.4", - "lodash": "^4.17.21", - "postcss": "^8.4.21", - "tailwindcss": "^3.2.7", - "vite": "^4.2.1", - "vue": "^3.2.47", - "vue-tsc": "^1.2.0", - "ziggy-js": "^1.5.0" - } + "private": true, + "scripts": { + "dev": "vite", + "build": "vite build", + "type:check": "vue-tsc --noEmit", + "typegen": "KEEP_LARAVEL_JSON=true node node_modules/@7nohe/laravel-typegen/dist/src/cli.js --ziggy --form-request", + "typegen:laravel-enum": "node node_modules/@7nohe/laravel-typegen/dist/src/cli.js --enum-path 'app/LaravelEnums' --laravel-enum" + }, + "devDependencies": { + "@7nohe/laravel-typegen": "file:../../../laravel-typegen", + "@7nohe/laravel-zodgen": "^0.1.5", + "@inertiajs/vue3": "^1.0.8", + "@tailwindcss/forms": "^0.5.3", + "@types/ziggy-js": "^1.3.2", + "@vitejs/plugin-vue": "^4.1.0", + "autoprefixer": "^10.4.14", + "axios": "^1.3.4", + "laravel-vite-plugin": "^0.7.4", + "lodash": "^4.17.21", + "postcss": "^8.4.21", + "tailwindcss": "^3.2.7", + "vite": "^4.2.1", + "vue": "^3.2.47", + "vue-tsc": "^1.2.0", + "ziggy-js": "^1.5.0" + } } diff --git a/examples/laravel10-app/postcss.config.js b/examples/laravel10-app/postcss.config.js index e873f1a..12a703d 100644 --- a/examples/laravel10-app/postcss.config.js +++ b/examples/laravel10-app/postcss.config.js @@ -1,6 +1,6 @@ module.exports = { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, }; diff --git a/examples/laravel10-app/resources/js/Components/Checkbox.vue b/examples/laravel10-app/resources/js/Components/Checkbox.vue index 92211a5..5caf23f 100644 --- a/examples/laravel10-app/resources/js/Components/Checkbox.vue +++ b/examples/laravel10-app/resources/js/Components/Checkbox.vue @@ -4,23 +4,23 @@ import { computed } from "vue"; const emit = defineEmits(["update:checked"]); const props = defineProps({ - checked: { - type: [Array, Boolean], - default: false, - }, - value: { - default: null, - }, + checked: { + type: [Array, Boolean], + default: false, + }, + value: { + default: null, + }, }); const proxyChecked = computed({ - get() { - return props.checked; - }, + get() { + return props.checked; + }, - set(val) { - emit("update:checked", val); - }, + set(val) { + emit("update:checked", val); + }, }); diff --git a/examples/laravel10-app/resources/js/Components/DangerButton.vue b/examples/laravel10-app/resources/js/Components/DangerButton.vue index 290555c..f0260f1 100644 --- a/examples/laravel10-app/resources/js/Components/DangerButton.vue +++ b/examples/laravel10-app/resources/js/Components/DangerButton.vue @@ -1,6 +1,6 @@ diff --git a/examples/laravel10-app/resources/js/Components/Dropdown.vue b/examples/laravel10-app/resources/js/Components/Dropdown.vue index b12a3bf..40b01f5 100644 --- a/examples/laravel10-app/resources/js/Components/Dropdown.vue +++ b/examples/laravel10-app/resources/js/Components/Dropdown.vue @@ -2,40 +2,40 @@ import { computed, onMounted, onUnmounted, ref } from "vue"; const props = defineProps({ - align: { - default: "right", - }, - width: { - default: "48", - }, - contentClasses: { - default: () => ["py-1", "bg-white"], - }, + align: { + default: "right", + }, + width: { + default: "48", + }, + contentClasses: { + default: () => ["py-1", "bg-white"], + }, }); const closeOnEscape = (e: KeyboardEvent) => { - if (open.value && e.key === "Escape") { - open.value = false; - } + if (open.value && e.key === "Escape") { + open.value = false; + } }; onMounted(() => document.addEventListener("keydown", closeOnEscape)); onUnmounted(() => document.removeEventListener("keydown", closeOnEscape)); const widthClass = computed(() => { - return { - 48: "w-48", - }[props.width.toString()]; + return { + 48: "w-48", + }[props.width.toString()]; }); const alignmentClasses = computed(() => { - if (props.align === "left") { - return "origin-top-left left-0"; - } - if (props.align === "right") { - return "origin-top-right right-0"; - } - return "origin-top"; + if (props.align === "left") { + return "origin-top-left left-0"; + } + if (props.align === "right") { + return "origin-top-right right-0"; + } + return "origin-top"; }); const open = ref(false); diff --git a/examples/laravel10-app/resources/js/Components/Modal.vue b/examples/laravel10-app/resources/js/Components/Modal.vue index 9a7103c..5918b6b 100644 --- a/examples/laravel10-app/resources/js/Components/Modal.vue +++ b/examples/laravel10-app/resources/js/Components/Modal.vue @@ -2,60 +2,60 @@ import { computed, onMounted, onUnmounted, watch } from "vue"; const props = defineProps({ - show: { - type: Boolean, - default: false, - }, - maxWidth: { - type: String, - default: "2xl", - }, - closeable: { - type: Boolean, - default: true, - }, + show: { + type: Boolean, + default: false, + }, + maxWidth: { + type: String, + default: "2xl", + }, + closeable: { + type: Boolean, + default: true, + }, }); const emit = defineEmits(["close"]); watch( - () => props.show, - () => { - if (props.show) { - document.body.style.overflow = "hidden"; - } else { - document.body.style.overflow = ""; - } - }, + () => props.show, + () => { + if (props.show) { + document.body.style.overflow = "hidden"; + } else { + document.body.style.overflow = ""; + } + }, ); const close = () => { - if (props.closeable) { - emit("close"); - } + if (props.closeable) { + emit("close"); + } }; const closeOnEscape = (e: KeyboardEvent) => { - if (e.key === "Escape" && props.show) { - close(); - } + if (e.key === "Escape" && props.show) { + close(); + } }; onMounted(() => document.addEventListener("keydown", closeOnEscape)); onUnmounted(() => { - document.removeEventListener("keydown", closeOnEscape); - document.body.style.overflow = ""; + document.removeEventListener("keydown", closeOnEscape); + document.body.style.overflow = ""; }); const maxWidthClass = computed(() => { - return { - sm: "sm:max-w-sm", - md: "sm:max-w-md", - lg: "sm:max-w-lg", - xl: "sm:max-w-xl", - "2xl": "sm:max-w-2xl", - }[props.maxWidth]; + return { + sm: "sm:max-w-sm", + md: "sm:max-w-md", + lg: "sm:max-w-lg", + xl: "sm:max-w-xl", + "2xl": "sm:max-w-2xl", + }[props.maxWidth]; }); diff --git a/examples/laravel10-app/resources/js/Components/NavLink.vue b/examples/laravel10-app/resources/js/Components/NavLink.vue index b344ef7..88d975d 100644 --- a/examples/laravel10-app/resources/js/Components/NavLink.vue +++ b/examples/laravel10-app/resources/js/Components/NavLink.vue @@ -5,9 +5,9 @@ import { computed } from "vue"; const props = defineProps(["href", "active"]); const classes = computed(() => - props.active - ? "inline-flex items-center px-1 pt-1 border-b-2 border-indigo-400 text-sm font-medium leading-5 text-gray-900 focus:outline-none focus:border-indigo-700 transition duration-150 ease-in-out" - : "inline-flex items-center px-1 pt-1 border-b-2 border-transparent text-sm font-medium leading-5 text-gray-500 hover:text-gray-700 hover:border-gray-300 focus:outline-none focus:text-gray-700 focus:border-gray-300 transition duration-150 ease-in-out", + props.active + ? "inline-flex items-center px-1 pt-1 border-b-2 border-indigo-400 text-sm font-medium leading-5 text-gray-900 focus:outline-none focus:border-indigo-700 transition duration-150 ease-in-out" + : "inline-flex items-center px-1 pt-1 border-b-2 border-transparent text-sm font-medium leading-5 text-gray-500 hover:text-gray-700 hover:border-gray-300 focus:outline-none focus:text-gray-700 focus:border-gray-300 transition duration-150 ease-in-out", ); diff --git a/examples/laravel10-app/resources/js/Components/PrimaryButton.vue b/examples/laravel10-app/resources/js/Components/PrimaryButton.vue index 5311385..4567bbd 100644 --- a/examples/laravel10-app/resources/js/Components/PrimaryButton.vue +++ b/examples/laravel10-app/resources/js/Components/PrimaryButton.vue @@ -1,6 +1,6 @@ diff --git a/examples/laravel10-app/resources/js/Components/ResponsiveNavLink.vue b/examples/laravel10-app/resources/js/Components/ResponsiveNavLink.vue index 24d7f48..2c75ee8 100644 --- a/examples/laravel10-app/resources/js/Components/ResponsiveNavLink.vue +++ b/examples/laravel10-app/resources/js/Components/ResponsiveNavLink.vue @@ -5,9 +5,9 @@ import { computed } from "vue"; const props = defineProps(["href", "active"]); const classes = computed(() => - props.active - ? "block w-full pl-3 pr-4 py-2 border-l-4 border-indigo-400 text-left text-base font-medium text-indigo-700 bg-indigo-50 focus:outline-none focus:text-indigo-800 focus:bg-indigo-100 focus:border-indigo-700 transition duration-150 ease-in-out" - : "block w-full pl-3 pr-4 py-2 border-l-4 border-transparent text-left text-base font-medium text-gray-600 hover:text-gray-800 hover:bg-gray-50 hover:border-gray-300 focus:outline-none focus:text-gray-800 focus:bg-gray-50 focus:border-gray-300 transition duration-150 ease-in-out", + props.active + ? "block w-full pl-3 pr-4 py-2 border-l-4 border-indigo-400 text-left text-base font-medium text-indigo-700 bg-indigo-50 focus:outline-none focus:text-indigo-800 focus:bg-indigo-100 focus:border-indigo-700 transition duration-150 ease-in-out" + : "block w-full pl-3 pr-4 py-2 border-l-4 border-transparent text-left text-base font-medium text-gray-600 hover:text-gray-800 hover:bg-gray-50 hover:border-gray-300 focus:outline-none focus:text-gray-800 focus:bg-gray-50 focus:border-gray-300 transition duration-150 ease-in-out", ); diff --git a/examples/laravel10-app/resources/js/Components/SecondaryButton.vue b/examples/laravel10-app/resources/js/Components/SecondaryButton.vue index 6af8368..95859ad 100644 --- a/examples/laravel10-app/resources/js/Components/SecondaryButton.vue +++ b/examples/laravel10-app/resources/js/Components/SecondaryButton.vue @@ -1,6 +1,6 @@ diff --git a/examples/laravel10-app/resources/js/Components/TextInput.vue b/examples/laravel10-app/resources/js/Components/TextInput.vue index 919948b..5a6350a 100644 --- a/examples/laravel10-app/resources/js/Components/TextInput.vue +++ b/examples/laravel10-app/resources/js/Components/TextInput.vue @@ -8,9 +8,9 @@ defineEmits(["update:modelValue"]); const input = ref(null); onMounted(() => { - if (input?.value?.hasAttribute("autofocus")) { - input.value.focus(); - } + if (input?.value?.hasAttribute("autofocus")) { + input.value.focus(); + } }); defineExpose({ focus: () => input?.value?.focus() }); diff --git a/examples/laravel10-app/resources/js/Layouts/AuthenticatedLayout.vue b/examples/laravel10-app/resources/js/Layouts/AuthenticatedLayout.vue index d3ab34e..1a7f453 100644 --- a/examples/laravel10-app/resources/js/Layouts/AuthenticatedLayout.vue +++ b/examples/laravel10-app/resources/js/Layouts/AuthenticatedLayout.vue @@ -11,9 +11,9 @@ import { ref } from "vue"; const showingNavigationDropdown = ref(false); const page = usePage<{ - auth: { - user: User; - }; + auth: { + user: User; + }; }>(); diff --git a/examples/laravel10-app/resources/js/Pages/Auth/ConfirmPassword.vue b/examples/laravel10-app/resources/js/Pages/Auth/ConfirmPassword.vue index 4ae1461..3cb6878 100644 --- a/examples/laravel10-app/resources/js/Pages/Auth/ConfirmPassword.vue +++ b/examples/laravel10-app/resources/js/Pages/Auth/ConfirmPassword.vue @@ -7,13 +7,13 @@ import GuestLayout from "@/Layouts/GuestLayout.vue"; import { Head, useForm } from "@inertiajs/vue3"; const form = useForm({ - password: "", + password: "", }); const submit = () => { - form.post(route("password.confirm"), { - onFinish: () => form.reset(), - }); + form.post(route("password.confirm"), { + onFinish: () => form.reset(), + }); }; diff --git a/examples/laravel10-app/resources/js/Pages/Auth/ForgotPassword.vue b/examples/laravel10-app/resources/js/Pages/Auth/ForgotPassword.vue index 4f29c5b..f851d31 100644 --- a/examples/laravel10-app/resources/js/Pages/Auth/ForgotPassword.vue +++ b/examples/laravel10-app/resources/js/Pages/Auth/ForgotPassword.vue @@ -7,15 +7,15 @@ import GuestLayout from "@/Layouts/GuestLayout.vue"; import { Head, useForm } from "@inertiajs/vue3"; defineProps({ - status: String, + status: String, }); const form = useForm({ - email: "", + email: "", }); const submit = () => { - form.post(route("password.email")); + form.post(route("password.email")); }; diff --git a/examples/laravel10-app/resources/js/Pages/Auth/Login.vue b/examples/laravel10-app/resources/js/Pages/Auth/Login.vue index a790031..c8c6628 100644 --- a/examples/laravel10-app/resources/js/Pages/Auth/Login.vue +++ b/examples/laravel10-app/resources/js/Pages/Auth/Login.vue @@ -8,20 +8,20 @@ import GuestLayout from "@/Layouts/GuestLayout.vue"; import { Head, Link, useForm } from "@inertiajs/vue3"; defineProps({ - canResetPassword: Boolean, - status: String, + canResetPassword: Boolean, + status: String, }); const form = useForm({ - email: "", - password: "", - remember: false, + email: "", + password: "", + remember: false, }); const submit = () => { - form.post(route("login"), { - onFinish: () => form.reset("password"), - }); + form.post(route("login"), { + onFinish: () => form.reset("password"), + }); }; diff --git a/examples/laravel10-app/resources/js/Pages/Auth/Register.vue b/examples/laravel10-app/resources/js/Pages/Auth/Register.vue index 59d36f4..dc04fed 100644 --- a/examples/laravel10-app/resources/js/Pages/Auth/Register.vue +++ b/examples/laravel10-app/resources/js/Pages/Auth/Register.vue @@ -7,17 +7,17 @@ import GuestLayout from "@/Layouts/GuestLayout.vue"; import { Head, Link, useForm } from "@inertiajs/vue3"; const form = useForm({ - name: "", - email: "", - password: "", - password_confirmation: "", - terms: false, + name: "", + email: "", + password: "", + password_confirmation: "", + terms: false, }); const submit = () => { - form.post(route("register"), { - onFinish: () => form.reset("password", "password_confirmation"), - }); + form.post(route("register"), { + onFinish: () => form.reset("password", "password_confirmation"), + }); }; diff --git a/examples/laravel10-app/resources/js/Pages/Auth/ResetPassword.vue b/examples/laravel10-app/resources/js/Pages/Auth/ResetPassword.vue index ec057d9..b2ad123 100644 --- a/examples/laravel10-app/resources/js/Pages/Auth/ResetPassword.vue +++ b/examples/laravel10-app/resources/js/Pages/Auth/ResetPassword.vue @@ -7,21 +7,21 @@ import GuestLayout from "@/Layouts/GuestLayout.vue"; import { Head, useForm } from "@inertiajs/vue3"; const props = defineProps({ - email: String, - token: String, + email: String, + token: String, }); const form = useForm({ - token: props.token, - email: props.email, - password: "", - password_confirmation: "", + token: props.token, + email: props.email, + password: "", + password_confirmation: "", }); const submit = () => { - form.post(route("password.store"), { - onFinish: () => form.reset("password", "password_confirmation"), - }); + form.post(route("password.store"), { + onFinish: () => form.reset("password", "password_confirmation"), + }); }; diff --git a/examples/laravel10-app/resources/js/Pages/Auth/VerifyEmail.vue b/examples/laravel10-app/resources/js/Pages/Auth/VerifyEmail.vue index 025a09c..6aa624c 100644 --- a/examples/laravel10-app/resources/js/Pages/Auth/VerifyEmail.vue +++ b/examples/laravel10-app/resources/js/Pages/Auth/VerifyEmail.vue @@ -5,17 +5,17 @@ import { Head, Link, useForm } from "@inertiajs/vue3"; import { computed } from "vue"; const props = defineProps({ - status: String, + status: String, }); const form = useForm({}); const submit = () => { - form.post(route("verification.send")); + form.post(route("verification.send")); }; const verificationLinkSent = computed( - () => props.status === "verification-link-sent", + () => props.status === "verification-link-sent", ); diff --git a/examples/laravel10-app/resources/js/Pages/Profile/Edit.vue b/examples/laravel10-app/resources/js/Pages/Profile/Edit.vue index 9fd0db1..62ec031 100644 --- a/examples/laravel10-app/resources/js/Pages/Profile/Edit.vue +++ b/examples/laravel10-app/resources/js/Pages/Profile/Edit.vue @@ -6,8 +6,8 @@ import UpdatePasswordForm from "./Partials/UpdatePasswordForm.vue"; import UpdateProfileInformationForm from "./Partials/UpdateProfileInformationForm.vue"; defineProps({ - mustVerifyEmail: Boolean, - status: String, + mustVerifyEmail: Boolean, + status: String, }); diff --git a/examples/laravel10-app/resources/js/Pages/Profile/Partials/DeleteUserForm.vue b/examples/laravel10-app/resources/js/Pages/Profile/Partials/DeleteUserForm.vue index f18d9a3..9767e31 100644 --- a/examples/laravel10-app/resources/js/Pages/Profile/Partials/DeleteUserForm.vue +++ b/examples/laravel10-app/resources/js/Pages/Profile/Partials/DeleteUserForm.vue @@ -12,28 +12,28 @@ const confirmingUserDeletion = ref(false); const passwordInput = ref(null); const form = useForm({ - password: "", + password: "", }); const confirmUserDeletion = () => { - confirmingUserDeletion.value = true; + confirmingUserDeletion.value = true; - nextTick(() => passwordInput?.value?.focus()); + nextTick(() => passwordInput?.value?.focus()); }; const deleteUser = () => { - form.delete(route("profile.destroy"), { - preserveScroll: true, - onSuccess: () => closeModal(), - onError: () => passwordInput?.value?.focus(), - onFinish: () => form.reset(), - }); + form.delete(route("profile.destroy"), { + preserveScroll: true, + onSuccess: () => closeModal(), + onError: () => passwordInput?.value?.focus(), + onFinish: () => form.reset(), + }); }; const closeModal = () => { - confirmingUserDeletion.value = false; + confirmingUserDeletion.value = false; - form.reset(); + form.reset(); }; diff --git a/examples/laravel10-app/resources/js/Pages/Profile/Partials/UpdatePasswordForm.vue b/examples/laravel10-app/resources/js/Pages/Profile/Partials/UpdatePasswordForm.vue index ee7d2b9..5352046 100644 --- a/examples/laravel10-app/resources/js/Pages/Profile/Partials/UpdatePasswordForm.vue +++ b/examples/laravel10-app/resources/js/Pages/Profile/Partials/UpdatePasswordForm.vue @@ -10,26 +10,26 @@ const passwordInput = ref(null); const currentPasswordInput = ref(null); const form = useForm({ - current_password: "", - password: "", - password_confirmation: "", + current_password: "", + password: "", + password_confirmation: "", }); const updatePassword = () => { - form.put(route("password.update"), { - preserveScroll: true, - onSuccess: () => form.reset(), - onError: () => { - if (form.errors.password) { - form.reset("password", "password_confirmation"); - passwordInput?.value?.focus(); - } - if (form.errors.current_password) { - form.reset("current_password"); - currentPasswordInput?.value?.focus(); - } - }, - }); + form.put(route("password.update"), { + preserveScroll: true, + onSuccess: () => form.reset(), + onError: () => { + if (form.errors.password) { + form.reset("password", "password_confirmation"); + passwordInput?.value?.focus(); + } + if (form.errors.current_password) { + form.reset("current_password"); + currentPasswordInput?.value?.focus(); + } + }, + }); }; diff --git a/examples/laravel10-app/resources/js/Pages/Profile/Partials/UpdateProfileInformationForm.vue b/examples/laravel10-app/resources/js/Pages/Profile/Partials/UpdateProfileInformationForm.vue index 613af45..bfee1c2 100644 --- a/examples/laravel10-app/resources/js/Pages/Profile/Partials/UpdateProfileInformationForm.vue +++ b/examples/laravel10-app/resources/js/Pages/Profile/Partials/UpdateProfileInformationForm.vue @@ -7,19 +7,19 @@ import type { User } from "@/types/model"; import { Link, useForm, usePage } from "@inertiajs/vue3"; const props = defineProps({ - mustVerifyEmail: Boolean, - status: String, + mustVerifyEmail: Boolean, + status: String, }); const user = usePage<{ - auth: { - user: User; - }; + auth: { + user: User; + }; }>().props.auth.user; const form = useForm({ - name: user.name, - email: user.email, + name: user.name, + email: user.email, }); diff --git a/examples/laravel10-app/resources/js/Pages/Welcome.vue b/examples/laravel10-app/resources/js/Pages/Welcome.vue index 1bf5de3..350d9a4 100644 --- a/examples/laravel10-app/resources/js/Pages/Welcome.vue +++ b/examples/laravel10-app/resources/js/Pages/Welcome.vue @@ -3,16 +3,16 @@ import type { User } from "@/types/model"; import { Head, Link, usePage } from "@inertiajs/vue3"; defineProps({ - canLogin: Boolean, - canRegister: Boolean, - laravelVersion: String, - phpVersion: String, + canLogin: Boolean, + canRegister: Boolean, + laravelVersion: String, + phpVersion: String, }); const page = usePage<{ - auth: { - user: User; - }; + auth: { + user: User; + }; }>(); diff --git a/examples/laravel10-app/resources/js/app.ts b/examples/laravel10-app/resources/js/app.ts index 26dff06..8d0e661 100644 --- a/examples/laravel10-app/resources/js/app.ts +++ b/examples/laravel10-app/resources/js/app.ts @@ -8,21 +8,21 @@ import { ZiggyVue } from "../../vendor/tightenco/ziggy/dist/vue.m"; import { Ziggy } from "./ziggy"; const appName = - window.document.getElementsByTagName("title")[0]?.innerText || "Laravel"; + window.document.getElementsByTagName("title")[0]?.innerText || "Laravel"; createInertiaApp({ - progress: { color: "#4B5563" }, - title: (title) => `${title} - ${appName}`, - resolve: (name) => - resolvePageComponent( - `./Pages/${name}.vue`, - // biome-ignore lint/suspicious/noExplicitAny: for example purposes - import.meta.glob("../js/Pages/**/*.vue") as any, - ), - setup({ el, App, props, plugin }) { - createApp({ render: () => h(App, props) }) - .use(plugin) - .use(ZiggyVue, Ziggy) - .mount(el); - }, + progress: { color: "#4B5563" }, + title: (title) => `${title} - ${appName}`, + resolve: (name) => + resolvePageComponent( + `./Pages/${name}.vue`, + // biome-ignore lint/suspicious/noExplicitAny: for example purposes + import.meta.glob("../js/Pages/**/*.vue") as any, + ), + setup({ el, App, props, plugin }) { + createApp({ render: () => h(App, props) }) + .use(plugin) + .use(ZiggyVue, Ziggy) + .mount(el); + }, }); diff --git a/examples/laravel10-app/resources/js/types/route.d.ts b/examples/laravel10-app/resources/js/types/route.d.ts index b38817e..4e3fac1 100644 --- a/examples/laravel10-app/resources/js/types/route.d.ts +++ b/examples/laravel10-app/resources/js/types/route.d.ts @@ -1,30 +1,30 @@ import type { Config, Router } from "ziggy-js"; import type { RouteParams } from "./param"; type CustomRouter = { - get params(): RouteParams[T]; - current(): Extract | undefined; - current( - name: Extract, - params?: RouteParams[T], - ): boolean; + get params(): RouteParams[T]; + current(): Extract | undefined; + current( + name: Extract, + params?: RouteParams[T], + ): boolean; } & Router; declare global { - declare function route(): CustomRouter; - declare function route( - name: T, - params?: RouteParams[T], - absolute?: boolean, - config?: Config, - ): string; + declare function route(): CustomRouter; + declare function route( + name: T, + params?: RouteParams[T], + absolute?: boolean, + config?: Config, + ): string; } declare module "vue" { - interface ComponentCustomProperties { - route: (() => CustomRouter) & - (( - name: T, - params?: RouteParams[T], - absolute?: boolean, - config?: Config, - ) => string); - } + interface ComponentCustomProperties { + route: (() => CustomRouter) & + (( + name: T, + params?: RouteParams[T], + absolute?: boolean, + config?: Config, + ) => string); + } } diff --git a/examples/laravel10-app/tailwind.config.js b/examples/laravel10-app/tailwind.config.js index 28181a0..cfc1f58 100644 --- a/examples/laravel10-app/tailwind.config.js +++ b/examples/laravel10-app/tailwind.config.js @@ -2,20 +2,20 @@ const defaultTheme = require("tailwindcss/defaultTheme"); /** @type {import('tailwindcss').Config} */ module.exports = { - content: [ - "./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php", - "./storage/framework/views/*.php", - "./resources/views/**/*.blade.php", - "./resources/js/**/*.vue", - ], + content: [ + "./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php", + "./storage/framework/views/*.php", + "./resources/views/**/*.blade.php", + "./resources/js/**/*.vue", + ], - theme: { - extend: { - fontFamily: { - sans: ["Nunito", ...defaultTheme.fontFamily.sans], - }, - }, - }, + theme: { + extend: { + fontFamily: { + sans: ["Nunito", ...defaultTheme.fontFamily.sans], + }, + }, + }, - plugins: [require("@tailwindcss/forms")], + plugins: [require("@tailwindcss/forms")], }; diff --git a/examples/laravel10-app/tsconfig.json b/examples/laravel10-app/tsconfig.json index a7f12e3..f92330d 100644 --- a/examples/laravel10-app/tsconfig.json +++ b/examples/laravel10-app/tsconfig.json @@ -1,22 +1,22 @@ { - "compilerOptions": { - "target": "esnext", - "module": "esnext", - "strict": true, - "jsx": "preserve", - "moduleResolution": "node", - "baseUrl": "./", - "skipLibCheck": true, - "paths": { - "@/*": ["resources/js/*"], - "@/types/*": ["resources/js/types/*"], - "ziggy": ["vendor/tightenco/ziggy/dist/vue.es.js"] - }, - "types": ["vite/client"], - "lib": ["esnext", "dom"], - "allowJs": true, - "strictFunctionTypes": false - }, - "include": ["resources/js/**/*"], - "exclude": ["node_modules", "public"] + "compilerOptions": { + "target": "esnext", + "module": "esnext", + "strict": true, + "jsx": "preserve", + "moduleResolution": "node", + "baseUrl": "./", + "skipLibCheck": true, + "paths": { + "@/*": ["resources/js/*"], + "@/types/*": ["resources/js/types/*"], + "ziggy": ["vendor/tightenco/ziggy/dist/vue.es.js"] + }, + "types": ["vite/client"], + "lib": ["esnext", "dom"], + "allowJs": true, + "strictFunctionTypes": false + }, + "include": ["resources/js/**/*"], + "exclude": ["node_modules", "public"] } diff --git a/examples/laravel10-app/vite.config.ts b/examples/laravel10-app/vite.config.ts index 8ac1b77..83653f1 100644 --- a/examples/laravel10-app/vite.config.ts +++ b/examples/laravel10-app/vite.config.ts @@ -3,18 +3,18 @@ import laravel from "laravel-vite-plugin"; import { defineConfig } from "vite"; export default defineConfig({ - plugins: [ - laravel({ - input: "resources/js/app.ts", - refresh: true, - }), - vue({ - template: { - transformAssetUrls: { - base: null, - includeAbsolute: false, - }, - }, - }), - ], + plugins: [ + laravel({ + input: "resources/js/app.ts", + refresh: true, + }), + vue({ + template: { + transformAssetUrls: { + base: null, + includeAbsolute: false, + }, + }, + }), + ], }); diff --git a/package.json b/package.json index 23a664b..a5fb691 100644 --- a/package.json +++ b/package.json @@ -1,39 +1,41 @@ { - "name": "@7nohe/laravel-typegen", - "version": "0.6.1", - "description": "The library lets you generate TypeScript types from your Laravel code.", - "bin": { - "laravel-typegen": "dist/src/cli.js" - }, - "exports": "./dist/src/index.js", - "types": "./dist/src/index.d.ts", - "scripts": { - "build": "rm -rf dist && tsc -p tsconfig.json && cp -R templates ./dist", - "prepublishOnly": "pnpm run build", - "release": "npx git-ensure -a && npx bumpp --commit --tag --push", - "typecheck": "tsc --noEmit" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/7nohe/laravel-typegen.git" - }, - "homepage": "https://github.com/7nohe/laravel-typegen", - "bugs": "https://github.com/7nohe/laravel-typegen/issues", - "files": ["dist"], - "keywords": ["laravel", "typegen", "typescript"], - "author": "Daiki Urata (@7nohe)", - "license": "MIT", - "devDependencies": { - "@biomejs/biome": "1.7.3", - "@types/node": "^20.11.16", - "lefthook": "^1.6.12" - }, - "dependencies": { - "@7nohe/laravel-zodgen": "^0.1.6", - "commander": "^12.0.0", - "consola": "^3.2.3", - "glob": "^10.3.12", - "php-parser": "^3.1.5", - "typescript": "^5.4.5" - } + "name": "@7nohe/laravel-typegen", + "version": "0.6.1", + "description": "The library lets you generate TypeScript types from your Laravel code.", + "bin": { + "laravel-typegen": "dist/src/cli.js" + }, + "exports": "./dist/src/index.js", + "types": "./dist/src/index.d.ts", + "scripts": { + "build": "rm -rf dist && tsc -p tsconfig.json && cp -R templates ./dist", + "lint": "biome check .", + "lint:fix": "biome check --apply .", + "prepublishOnly": "pnpm run build", + "release": "npx git-ensure -a && npx bumpp --commit --tag --push", + "typecheck": "tsc --noEmit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/7nohe/laravel-typegen.git" + }, + "homepage": "https://github.com/7nohe/laravel-typegen", + "bugs": "https://github.com/7nohe/laravel-typegen/issues", + "files": ["dist"], + "keywords": ["laravel", "typegen", "typescript"], + "author": "Daiki Urata (@7nohe)", + "license": "MIT", + "devDependencies": { + "@biomejs/biome": "1.7.3", + "@types/node": "^20.11.16", + "lefthook": "^1.6.12" + }, + "dependencies": { + "@7nohe/laravel-zodgen": "^0.1.6", + "commander": "^12.0.0", + "consola": "^3.2.3", + "glob": "^10.3.12", + "php-parser": "^3.1.5", + "typescript": "^5.4.5" + } } diff --git a/src/cli.ts b/src/cli.ts index 50e57fd..99897a3 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -7,45 +7,45 @@ import { consola } from "consola"; import { colors } from "consola/utils"; import packageJson from "../package.json"; import { - defaultEnumPath, - defaultModelPath, - defaultOutputPath, - tmpDir, + defaultEnumPath, + defaultModelPath, + defaultOutputPath, + tmpDir, } from "./constants"; import { generate } from "./generate"; export type CLIOptions = { - output: string; - laravelEnum: boolean; - enumPath: string; - modelPath: string; - ziggy: boolean; - vendorRoutes: boolean; - ignoreRouteDts: boolean; - formRequest: boolean; - formRequestPath: string; + output: string; + laravelEnum: boolean; + enumPath: string; + modelPath: string; + ziggy: boolean; + vendorRoutes: boolean; + ignoreRouteDts: boolean; + formRequest: boolean; + formRequestPath: string; }; const program = new Command(); program - .name("laravel-typegen") - .version(packageJson.version) - .description("Generate TypeScript types from your Laravel code") - .option("-o, --output ", "Output directory", defaultOutputPath) - .option("--laravel-enum", "Use Laravel Enum", false) - .option("--enum-path ", "Path to enum files", defaultEnumPath) - .option("--model-path ", "Path to model files", defaultModelPath) - .option("-z, --ziggy", "Generate types for ziggy", false) - .option("--vendor-routes", "Include routes defined by vendor packages", false) - .option("--ignore-route-dts", "Ignore generating route.d.ts", false) - .option("--form-request", "Generate types for FormRequests", false) - .option( - "--form-request-path ", - "Path to FormRequest files", - defaultFormRequestPath, - ) - .parse(); + .name("laravel-typegen") + .version(packageJson.version) + .description("Generate TypeScript types from your Laravel code") + .option("-o, --output ", "Output directory", defaultOutputPath) + .option("--laravel-enum", "Use Laravel Enum", false) + .option("--enum-path ", "Path to enum files", defaultEnumPath) + .option("--model-path ", "Path to model files", defaultModelPath) + .option("-z, --ziggy", "Generate types for ziggy", false) + .option("--vendor-routes", "Include routes defined by vendor packages", false) + .option("--ignore-route-dts", "Ignore generating route.d.ts", false) + .option("--form-request", "Generate types for FormRequests", false) + .option( + "--form-request-path ", + "Path to FormRequest files", + defaultFormRequestPath, + ) + .parse(); const options = program.opts(); @@ -53,20 +53,20 @@ consola.box(`${colors.bgBlueBright(`Laravel Typegen v${packageJson.version}`)} [Options] ${Object.entries(options) - .map(([key, value]) => `${key}: ${value}`) - .join("\n")} + .map(([key, value]) => `${key}: ${value}`) + .join("\n")} `); try { - generate(options).then(() => { - consola.success( - `Done! Generated types are available in ${path.resolve(options.output)}`, - ); - }); + generate(options).then(() => { + consola.success( + `Done! Generated types are available in ${path.resolve(options.output)}`, + ); + }); } catch { - consola.error("Failed to generate types."); - if (fs.existsSync(tmpDir) && process.env.KEEP_LARAVEL_JSON !== "true") { - // Clean up - fs.rmSync(tmpDir, { recursive: true }); - } + consola.error("Failed to generate types."); + if (fs.existsSync(tmpDir) && process.env.KEEP_LARAVEL_JSON !== "true") { + // Clean up + fs.rmSync(tmpDir, { recursive: true }); + } } diff --git a/src/formRequests/createFormRequestTypes.ts b/src/formRequests/createFormRequestTypes.ts index 7e9ad90..f112294 100644 --- a/src/formRequests/createFormRequestTypes.ts +++ b/src/formRequests/createFormRequestTypes.ts @@ -1,110 +1,110 @@ import ts from "typescript"; type FieldValue = - | { name: string; isRequired: boolean; "*"?: FieldValue } - | object; + | { name: string; isRequired: boolean; "*"?: FieldValue } + | object; type Fields = - | { - [key: string]: FieldValue; - } - | FieldValue; + | { + [key: string]: FieldValue; + } + | FieldValue; function getKeyword(name: string): ts.KeywordTypeSyntaxKind { - switch (name) { - case "string": - return ts.SyntaxKind.StringKeyword; - case "number": - return ts.SyntaxKind.NumberKeyword; - case "boolean": - return ts.SyntaxKind.BooleanKeyword; - case "undefined": - return ts.SyntaxKind.UndefinedKeyword; - default: - return ts.SyntaxKind.AnyKeyword; - } + switch (name) { + case "string": + return ts.SyntaxKind.StringKeyword; + case "number": + return ts.SyntaxKind.NumberKeyword; + case "boolean": + return ts.SyntaxKind.BooleanKeyword; + case "undefined": + return ts.SyntaxKind.UndefinedKeyword; + default: + return ts.SyntaxKind.AnyKeyword; + } } function isArrayOfPrimitives(arrayValue: FieldValue) { - return ( - typeof arrayValue === "object" && - "name" in arrayValue && - typeof arrayValue.name === "string" - ); + return ( + typeof arrayValue === "object" && + "name" in arrayValue && + typeof arrayValue.name === "string" + ); } function createArrayTypeNode(arrayValue: FieldValue): ts.TypeNode { - if (isArrayOfPrimitives(arrayValue)) { - const arrayPrimitiveType = ts.factory.createKeywordTypeNode( - getKeyword((arrayValue as { name: string; isRequired: boolean }).name), - ); - return ts.factory.createArrayTypeNode(arrayPrimitiveType); - } - const arrayElementType = createTypeNodeFromFields(arrayValue); - return ts.factory.createArrayTypeNode(arrayElementType); + if (isArrayOfPrimitives(arrayValue)) { + const arrayPrimitiveType = ts.factory.createKeywordTypeNode( + getKeyword((arrayValue as { name: string; isRequired: boolean }).name), + ); + return ts.factory.createArrayTypeNode(arrayPrimitiveType); + } + const arrayElementType = createTypeNodeFromFields(arrayValue); + return ts.factory.createArrayTypeNode(arrayElementType); } function createTypeNodeForValue(value: FieldValue): ts.TypeNode { - if (typeof value === "object" && !("name" in value)) { - return createTypeNodeFromFields(value); - } + if (typeof value === "object" && !("name" in value)) { + return createTypeNodeFromFields(value); + } - if (typeof value === "object" && "*" in value && value["*"]) { - return createArrayTypeNode(value["*"]); - } + if (typeof value === "object" && "*" in value && value["*"]) { + return createArrayTypeNode(value["*"]); + } - return ts.factory.createKeywordTypeNode(getKeyword(value.name as string)); + return ts.factory.createKeywordTypeNode(getKeyword(value.name as string)); } function createTypeNodeFromFields(fields: Fields): ts.TypeNode { - if ("*" in fields && fields["*"]) { - return createArrayTypeNode(fields["*"]); - } - const members = Object.entries(fields).flatMap< - ts.PropertySignature | ts.TypeNode - >(([name, value]) => { - const typeNode = createTypeNodeForValue(value); + if ("*" in fields && fields["*"]) { + return createArrayTypeNode(fields["*"]); + } + const members = Object.entries(fields).flatMap< + ts.PropertySignature | ts.TypeNode + >(([name, value]) => { + const typeNode = createTypeNodeForValue(value); - const isRequired = !("name" in value) || value.isRequired; + const isRequired = !("name" in value) || value.isRequired; - return [ - ts.factory.createPropertySignature( - undefined, - name, - isRequired - ? undefined - : ts.factory.createToken(ts.SyntaxKind.QuestionToken), - typeNode, - ), - ]; - }); + return [ + ts.factory.createPropertySignature( + undefined, + name, + isRequired + ? undefined + : ts.factory.createToken(ts.SyntaxKind.QuestionToken), + typeNode, + ), + ]; + }); - return ts.factory.createTypeLiteralNode( - members.filter(Boolean) as ts.TypeElement[], - ); + return ts.factory.createTypeLiteralNode( + members.filter(Boolean) as ts.TypeElement[], + ); } function createTypeAliasDeclaration( - typeName: string, - fields: Fields, + typeName: string, + fields: Fields, ): ts.TypeAliasDeclaration { - return ts.factory.createTypeAliasDeclaration( - [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)], - typeName, - undefined, - createTypeNodeFromFields(fields), - ); + return ts.factory.createTypeAliasDeclaration( + [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)], + typeName, + undefined, + createTypeNodeFromFields(fields), + ); } export function createFormRequestTypes(rules: Fields) { - const sourceFile = ts.factory.createSourceFile( - Object.entries(rules).map(([key, value]) => - createTypeAliasDeclaration(key, value), - ), - ts.factory.createToken(ts.SyntaxKind.EndOfFileToken), - ts.NodeFlags.None, - ); + const sourceFile = ts.factory.createSourceFile( + Object.entries(rules).map(([key, value]) => + createTypeAliasDeclaration(key, value), + ), + ts.factory.createToken(ts.SyntaxKind.EndOfFileToken), + ts.NodeFlags.None, + ); - const printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed }); - return printer.printNode(ts.EmitHint.Unspecified, sourceFile, sourceFile); + const printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed }); + return printer.printNode(ts.EmitHint.Unspecified, sourceFile, sourceFile); } diff --git a/src/generate.ts b/src/generate.ts index 2288519..a926ea7 100644 --- a/src/generate.ts +++ b/src/generate.ts @@ -7,12 +7,12 @@ import { colors } from "consola/utils"; import { sync } from "glob"; import type { CLIOptions } from "./cli"; import { - defaultOutputPath, - formRequestsFileName, - indexDeclarationFileName, - modelFileName, - routeParamsFileName, - tmpDir, + defaultOutputPath, + formRequestsFileName, + indexDeclarationFileName, + modelFileName, + routeParamsFileName, + tmpDir, } from "./constants"; import { createFormRequestTypes } from "./formRequests/createFormRequestTypes"; import { createSource as createModelSource } from "./models/createSource"; @@ -26,204 +26,204 @@ const routeLogPrefix = colors.bgGreenBright("[Route]"); const formRequestLogPrefix = colors.bgYellowBright("[FormRequest]"); export async function generate(options: CLIOptions) { - consola.info( - modelLogPrefix, - colors.blueBright("Start generating model types..."), - ); - - const parsedModelPath = path - .join(options.modelPath, "**", "*.php") - .replace(/\\/g, "/"); - const modelPaths = sync(parsedModelPath).sort(); - - const modelData: LaravelModelType[] = []; - const parsedEnumPath = path - .join(options.enumPath, "**", "*.php") - .replace(/\\/g, "/"); - const enums = sync(parsedEnumPath).sort(); - if (!fs.existsSync(tmpDir)) { - fs.mkdirSync(tmpDir); - } - // Generate models - for (const modelPath of modelPaths) { - const modelName = - modelPath - .replace(/\\/g, "/") - .replace(`${options.modelPath.replace(/\\/g, "/")}/`, "") - .replace(path.extname(modelPath), "") // remove .php extension - .split("/") - .at(-1) ?? ""; // get only model name without directory - - createModelDirectory(modelName); - - const namespacedModel = `${getNamespaceForCommand(modelPath)}/${modelName}`; - const outputPath = path.join(tmpDir, `${modelName}.json`); - - const modelShowCommand = `php artisan model:show ${namespacedModel} --json`; - - // Run artisan command to get model data - try { - if (process.env.SKIP_ARTISAN_COMMAND !== "true") { - consola.start( - modelLogPrefix, - `Running '${colors.blueBright(modelShowCommand)}'`, - ); - const json = execSync(modelShowCommand).toString(); - const dir = path.dirname(outputPath); - if (!fs.existsSync(dir)) { - fs.mkdirSync(dir, { recursive: true }); - } - fs.writeFileSync(outputPath, json); - consola.success(modelLogPrefix, `Saved ${modelName} to ${outputPath}`); - } else { - consola.info(modelLogPrefix, `Skipping ${modelShowCommand}`); - } - } catch (e) { - consola.info( - modelLogPrefix, - `Failed to get model data for ${modelName}'. You still can generate types by running ${modelShowCommand} manually and then run 'laravel-typegen' with SKIP_ARTISAN_COMMAND=true environment variable.`, - ); - consola.error(modelLogPrefix, e); - } - - // Read model data from JSON file - try { - const jsonPath = path.resolve(tmpDir, `${modelName}.json`); - consola.start(modelLogPrefix, `Reading ${jsonPath}`); - const modelJson = JSON.parse( - fs.readFileSync(jsonPath, "utf8"), - ) as LaravelModelType; - modelData.push(modelJson); - } catch { - consola.warn( - modelLogPrefix, - `Failed to generate ${modelName}. Skipping...`, - ); - } - } - - const modelSource = createModelSource( - modelFileName, - modelData, - enums, - options, - ); - print(modelFileName, modelSource, options.output ?? defaultOutputPath); - - consola.success( - modelLogPrefix, - colors.blueBright("Model types generated successfully."), - ); - - // Generate types for ziggy - if (options.ziggy) { - consola.info( - routeLogPrefix, - colors.greenBright("Start generating route types..."), - ); - - const vendorOption = options.vendorRoutes ? "" : "--except-vendor"; - const routeListCommand = `php artisan route:list ${vendorOption} --json`; - - if (process.env.SKIP_ARTISAN_COMMAND !== "true") { - consola.start( - routeLogPrefix, - `Running '${colors.greenBright(routeListCommand)}'`, - ); - const json = execSync(routeListCommand).toString(); - const dir = path.dirname(path.resolve(tmpDir, "route.json")); - if (!fs.existsSync(dir)) { - fs.mkdirSync(dir, { - recursive: true, - }); - } - fs.writeFileSync(path.resolve(tmpDir, "route.json"), json); - consola.success( - routeLogPrefix, - `Saved route.json to ${path.resolve(tmpDir, "route.json")}`, - ); - } else { - consola.warn(routeLogPrefix, "Failed to get route data. Skipping..."); - } - - consola.start(routeLogPrefix, "Reading route.json"); - const routeJson = JSON.parse( - fs.readFileSync(path.resolve(tmpDir, "route.json"), "utf8"), - ) as LaravelRouteListType[]; - - const routeSource = createRouteParamsSource( - routeParamsFileName, - routeJson, - options, - ); - - print( - routeParamsFileName, - routeSource, - options.output ?? defaultOutputPath, - ); - - consola.start(routeLogPrefix, "Copying route.d.ts..."); - - // Copy route.d.ts - if (!options.ignoreRouteDts) { - fs.copyFileSync( - path.resolve(__dirname, "..", "templates", indexDeclarationFileName), - path.resolve( - options.output ?? defaultOutputPath, - indexDeclarationFileName, - ), - ); - } - - consola.success( - routeLogPrefix, - colors.greenBright("Route types generated successfully."), - ); - } - - if (options.formRequest) { - consola.start( - formRequestLogPrefix, - colors.yellowBright("Start generating form request types..."), - ); - consola.start( - formRequestLogPrefix, - `Parsing form requests from ${options.formRequestPath}...`, - ); - // Generate types for form requests - const rules = parseFormRequests(options.formRequestPath, true); - consola.success(formRequestLogPrefix, "Form requests parsed successfully."); - - const formRequestSource = createFormRequestTypes(rules); - print( - formRequestsFileName, - formRequestSource, - options.output ?? defaultOutputPath, - ); - - consola.success( - formRequestLogPrefix, - colors.yellowBright("Form request types generated successfully."), - ); - } - - if (fs.existsSync(tmpDir) && process.env.KEEP_LARAVEL_JSON !== "true") { - consola.start("Removing temporary files..."); - fs.rmSync(tmpDir, { recursive: true }); - consola.success("Temporary files removed."); - } + consola.info( + modelLogPrefix, + colors.blueBright("Start generating model types..."), + ); + + const parsedModelPath = path + .join(options.modelPath, "**", "*.php") + .replace(/\\/g, "/"); + const modelPaths = sync(parsedModelPath).sort(); + + const modelData: LaravelModelType[] = []; + const parsedEnumPath = path + .join(options.enumPath, "**", "*.php") + .replace(/\\/g, "/"); + const enums = sync(parsedEnumPath).sort(); + if (!fs.existsSync(tmpDir)) { + fs.mkdirSync(tmpDir); + } + // Generate models + for (const modelPath of modelPaths) { + const modelName = + modelPath + .replace(/\\/g, "/") + .replace(`${options.modelPath.replace(/\\/g, "/")}/`, "") + .replace(path.extname(modelPath), "") // remove .php extension + .split("/") + .at(-1) ?? ""; // get only model name without directory + + createModelDirectory(modelName); + + const namespacedModel = `${getNamespaceForCommand(modelPath)}/${modelName}`; + const outputPath = path.join(tmpDir, `${modelName}.json`); + + const modelShowCommand = `php artisan model:show ${namespacedModel} --json`; + + // Run artisan command to get model data + try { + if (process.env.SKIP_ARTISAN_COMMAND !== "true") { + consola.start( + modelLogPrefix, + `Running '${colors.blueBright(modelShowCommand)}'`, + ); + const json = execSync(modelShowCommand).toString(); + const dir = path.dirname(outputPath); + if (!fs.existsSync(dir)) { + fs.mkdirSync(dir, { recursive: true }); + } + fs.writeFileSync(outputPath, json); + consola.success(modelLogPrefix, `Saved ${modelName} to ${outputPath}`); + } else { + consola.info(modelLogPrefix, `Skipping ${modelShowCommand}`); + } + } catch (e) { + consola.info( + modelLogPrefix, + `Failed to get model data for ${modelName}'. You still can generate types by running ${modelShowCommand} manually and then run 'laravel-typegen' with SKIP_ARTISAN_COMMAND=true environment variable.`, + ); + consola.error(modelLogPrefix, e); + } + + // Read model data from JSON file + try { + const jsonPath = path.resolve(tmpDir, `${modelName}.json`); + consola.start(modelLogPrefix, `Reading ${jsonPath}`); + const modelJson = JSON.parse( + fs.readFileSync(jsonPath, "utf8"), + ) as LaravelModelType; + modelData.push(modelJson); + } catch { + consola.warn( + modelLogPrefix, + `Failed to generate ${modelName}. Skipping...`, + ); + } + } + + const modelSource = createModelSource( + modelFileName, + modelData, + enums, + options, + ); + print(modelFileName, modelSource, options.output ?? defaultOutputPath); + + consola.success( + modelLogPrefix, + colors.blueBright("Model types generated successfully."), + ); + + // Generate types for ziggy + if (options.ziggy) { + consola.info( + routeLogPrefix, + colors.greenBright("Start generating route types..."), + ); + + const vendorOption = options.vendorRoutes ? "" : "--except-vendor"; + const routeListCommand = `php artisan route:list ${vendorOption} --json`; + + if (process.env.SKIP_ARTISAN_COMMAND !== "true") { + consola.start( + routeLogPrefix, + `Running '${colors.greenBright(routeListCommand)}'`, + ); + const json = execSync(routeListCommand).toString(); + const dir = path.dirname(path.resolve(tmpDir, "route.json")); + if (!fs.existsSync(dir)) { + fs.mkdirSync(dir, { + recursive: true, + }); + } + fs.writeFileSync(path.resolve(tmpDir, "route.json"), json); + consola.success( + routeLogPrefix, + `Saved route.json to ${path.resolve(tmpDir, "route.json")}`, + ); + } else { + consola.warn(routeLogPrefix, "Failed to get route data. Skipping..."); + } + + consola.start(routeLogPrefix, "Reading route.json"); + const routeJson = JSON.parse( + fs.readFileSync(path.resolve(tmpDir, "route.json"), "utf8"), + ) as LaravelRouteListType[]; + + const routeSource = createRouteParamsSource( + routeParamsFileName, + routeJson, + options, + ); + + print( + routeParamsFileName, + routeSource, + options.output ?? defaultOutputPath, + ); + + consola.start(routeLogPrefix, "Copying route.d.ts..."); + + // Copy route.d.ts + if (!options.ignoreRouteDts) { + fs.copyFileSync( + path.resolve(__dirname, "..", "templates", indexDeclarationFileName), + path.resolve( + options.output ?? defaultOutputPath, + indexDeclarationFileName, + ), + ); + } + + consola.success( + routeLogPrefix, + colors.greenBright("Route types generated successfully."), + ); + } + + if (options.formRequest) { + consola.start( + formRequestLogPrefix, + colors.yellowBright("Start generating form request types..."), + ); + consola.start( + formRequestLogPrefix, + `Parsing form requests from ${options.formRequestPath}...`, + ); + // Generate types for form requests + const rules = parseFormRequests(options.formRequestPath, true); + consola.success(formRequestLogPrefix, "Form requests parsed successfully."); + + const formRequestSource = createFormRequestTypes(rules); + print( + formRequestsFileName, + formRequestSource, + options.output ?? defaultOutputPath, + ); + + consola.success( + formRequestLogPrefix, + colors.yellowBright("Form request types generated successfully."), + ); + } + + if (fs.existsSync(tmpDir) && process.env.KEEP_LARAVEL_JSON !== "true") { + consola.start("Removing temporary files..."); + fs.rmSync(tmpDir, { recursive: true }); + consola.success("Temporary files removed."); + } } const createModelDirectory = (modelName: string) => { - const modelNameArray = modelName.split("/"); - modelNameArray.pop(); - if ( - modelNameArray.length > 0 && - !fs.existsSync(path.join(tmpDir, ...modelNameArray)) - ) { - fs.mkdirSync(path.join(tmpDir, ...modelNameArray)); - } + const modelNameArray = modelName.split("/"); + modelNameArray.pop(); + if ( + modelNameArray.length > 0 && + !fs.existsSync(path.join(tmpDir, ...modelNameArray)) + ) { + fs.mkdirSync(path.join(tmpDir, ...modelNameArray)); + } }; /** @@ -233,16 +233,16 @@ const createModelDirectory = (modelName: string) => { const namespaceDictByDir: { [key: string]: string } = {}; export const getNamespaceForCommand = (phpFilepath: string) => { - const dir = path.dirname(phpFilepath); + const dir = path.dirname(phpFilepath); - if (namespaceDictByDir[dir]) { - return namespaceDictByDir[dir]; - } + if (namespaceDictByDir[dir]) { + return namespaceDictByDir[dir]; + } - const ast = getPhpAst(phpFilepath); - const namespace = getPhpNamespace(ast).name; - const namespaceForCommand = formatNamespaceForCommand(namespace); - namespaceDictByDir[dir] = namespaceForCommand; + const ast = getPhpAst(phpFilepath); + const namespace = getPhpNamespace(ast).name; + const namespaceForCommand = formatNamespaceForCommand(namespace); + namespaceDictByDir[dir] = namespaceForCommand; - return namespaceForCommand; + return namespaceForCommand; }; diff --git a/src/models/createEnumTypes.ts b/src/models/createEnumTypes.ts index 7bbc983..7dfcc03 100644 --- a/src/models/createEnumTypes.ts +++ b/src/models/createEnumTypes.ts @@ -1,66 +1,66 @@ import fs from "node:fs"; import { - type Class, - Engine, - type EnumCase, - type Identifier, - type Namespace, - type Number as NumberType, - type String as StringType, + type Class, + Engine, + type EnumCase, + type Identifier, + type Namespace, + type Number as NumberType, + type String as StringType, } from "php-parser"; import ts from "typescript"; const parser = new Engine({}); const getInitializer = (enumcase: EnumCase) => { - const numberValue = enumcase.value as unknown as NumberType; - if (numberValue.kind === "number") { - return ts.factory.createNumericLiteral(numberValue.value); - } + const numberValue = enumcase.value as unknown as NumberType; + if (numberValue.kind === "number") { + return ts.factory.createNumericLiteral(numberValue.value); + } - return ts.factory.createStringLiteral( - (enumcase.value as unknown as StringType).value, - ); + return ts.factory.createStringLiteral( + (enumcase.value as unknown as StringType).value, + ); }; export const createEnumType = (enumFilePath: string) => { - const phpFile = fs.readFileSync(enumFilePath); - const ast = parser.parseCode( - phpFile.toString(), - enumFilePath.split("/").at(-1) ?? "", - ); + const phpFile = fs.readFileSync(enumFilePath); + const ast = parser.parseCode( + phpFile.toString(), + enumFilePath.split("/").at(-1) ?? "", + ); - // find Namespace - const namespace = ast.children.find( - (child) => child.kind === "namespace", - ) as Namespace; + // find Namespace + const namespace = ast.children.find( + (child) => child.kind === "namespace", + ) as Namespace; - // find enum Block - const enumBlock = namespace.children.find( - (child) => child.kind === "enum", - ) as Class; + // find enum Block + const enumBlock = namespace.children.find( + (child) => child.kind === "enum", + ) as Class; - const enumName = (enumBlock.name as Identifier).name; + const enumName = (enumBlock.name as Identifier).name; - // get EnumCases - const enumcases = enumBlock.body.filter( - (declaration) => declaration.kind === "enumcase", - ) as unknown as EnumCase[]; + // get EnumCases + const enumcases = enumBlock.body.filter( + (declaration) => declaration.kind === "enumcase", + ) as unknown as EnumCase[]; - return ts.factory.createEnumDeclaration( - [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)], - ts.factory.createIdentifier(enumName), - enumcases.map((enumcase) => - ts.factory.createEnumMember( - ts.factory.createIdentifier( - (enumcase.name as unknown as Identifier).name, - ), - getInitializer(enumcase), - ), - ), - ); + return ts.factory.createEnumDeclaration( + [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)], + ts.factory.createIdentifier(enumName), + enumcases.map((enumcase) => + ts.factory.createEnumMember( + ts.factory.createIdentifier( + (enumcase.name as unknown as Identifier).name, + ), + getInitializer(enumcase), + ), + ), + ); }; export const createEnumTypes = (enumFilePaths: string[]) => { - return enumFilePaths.map((path) => createEnumType(path)); + return enumFilePaths.map((path) => createEnumType(path)); }; diff --git a/src/models/createLarvelEnumTypes.ts b/src/models/createLarvelEnumTypes.ts index c331033..bf7856d 100644 --- a/src/models/createLarvelEnumTypes.ts +++ b/src/models/createLarvelEnumTypes.ts @@ -1,67 +1,67 @@ import fs from "node:fs"; import { - type Class, - type ClassConstant, - type Constant, - Engine, - type Identifier, - type Namespace, - type Number as NumberType, - type String as StringType, + type Class, + type ClassConstant, + type Constant, + Engine, + type Identifier, + type Namespace, + type Number as NumberType, + type String as StringType, } from "php-parser"; import ts from "typescript"; const parser = new Engine({}); const getInitializer = (constant: Constant) => { - const numberValue = constant.value as NumberType; - if (numberValue.kind === "number") { - return ts.factory.createNumericLiteral(numberValue.value); - } + const numberValue = constant.value as NumberType; + if (numberValue.kind === "number") { + return ts.factory.createNumericLiteral(numberValue.value); + } - return ts.factory.createStringLiteral((constant.value as StringType).value); + return ts.factory.createStringLiteral((constant.value as StringType).value); }; export const createEnumType = (enumFilePath: string) => { - const phpFile = fs.readFileSync(enumFilePath); - const ast = parser.parseCode( - phpFile.toString(), - enumFilePath.split("/").at(-1) ?? "", - ); + const phpFile = fs.readFileSync(enumFilePath); + const ast = parser.parseCode( + phpFile.toString(), + enumFilePath.split("/").at(-1) ?? "", + ); - // find Namespace - const namespace = ast.children.find( - (child) => child.kind === "namespace", - ) as Namespace; + // find Namespace + const namespace = ast.children.find( + (child) => child.kind === "namespace", + ) as Namespace; - // find Class Block - const classBlock = namespace.children.find( - (child) => child.kind === "class", - ) as Class; + // find Class Block + const classBlock = namespace.children.find( + (child) => child.kind === "class", + ) as Class; - const className = (classBlock.name as Identifier).name; + const className = (classBlock.name as Identifier).name; - // get Constants - const constants = ( - classBlock.body.filter( - (declaration) => declaration.kind === "classconstant", - ) as unknown as ClassConstant[] - ).map((declaration) => declaration.constants.at(0)) as Constant[]; + // get Constants + const constants = ( + classBlock.body.filter( + (declaration) => declaration.kind === "classconstant", + ) as unknown as ClassConstant[] + ).map((declaration) => declaration.constants.at(0)) as Constant[]; - return ts.factory.createEnumDeclaration( - undefined, - ts.factory.createIdentifier(className), - constants.map((constant) => - ts.factory.createEnumMember( - ts.factory.createIdentifier( - (constant.name as unknown as Identifier).name, - ), - getInitializer(constant), - ), - ), - ); + return ts.factory.createEnumDeclaration( + undefined, + ts.factory.createIdentifier(className), + constants.map((constant) => + ts.factory.createEnumMember( + ts.factory.createIdentifier( + (constant.name as unknown as Identifier).name, + ), + getInitializer(constant), + ), + ), + ); }; export const createLaravelEnumTypes = (enumFilePaths: string[]) => { - return enumFilePaths.map((path) => createEnumType(path)); + return enumFilePaths.map((path) => createEnumType(path)); }; diff --git a/src/models/createSource.ts b/src/models/createSource.ts index d5f980c..d0c193e 100644 --- a/src/models/createSource.ts +++ b/src/models/createSource.ts @@ -5,42 +5,42 @@ import { createEnumTypes } from "./createEnumTypes"; import { createLaravelEnumTypes } from "./createLarvelEnumTypes"; import { createTypes } from "./createTypes"; const createSourceFile = ( - modelData: LaravelModelType[], - enums: string[], - options: CLIOptions, + modelData: LaravelModelType[], + enums: string[], + options: CLIOptions, ) => { - return ts.factory.createSourceFile( - [ - ...createTypes(modelData), - ...(options.laravelEnum - ? createLaravelEnumTypes(enums) - : createEnumTypes(enums)), - ], - ts.factory.createToken(ts.SyntaxKind.EndOfFileToken), - ts.NodeFlags.None, - ); + return ts.factory.createSourceFile( + [ + ...createTypes(modelData), + ...(options.laravelEnum + ? createLaravelEnumTypes(enums) + : createEnumTypes(enums)), + ], + ts.factory.createToken(ts.SyntaxKind.EndOfFileToken), + ts.NodeFlags.None, + ); }; export const createSource = ( - filename: string, - modelData: LaravelModelType[], - enums: string[], - options: CLIOptions, + filename: string, + modelData: LaravelModelType[], + enums: string[], + options: CLIOptions, ) => { - const resultFile = ts.createSourceFile( - filename, - "", - ts.ScriptTarget.Latest, - false, - ts.ScriptKind.TS, - ); - const printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed }); + const resultFile = ts.createSourceFile( + filename, + "", + ts.ScriptTarget.Latest, + false, + ts.ScriptKind.TS, + ); + const printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed }); - const result = printer.printNode( - ts.EmitHint.Unspecified, - createSourceFile(modelData, enums, options), - resultFile, - ); + const result = printer.printNode( + ts.EmitHint.Unspecified, + createSourceFile(modelData, enums, options), + resultFile, + ); - return result; + return result; }; diff --git a/src/models/createTypes.ts b/src/models/createTypes.ts index d7d84de..cbb7b6e 100644 --- a/src/models/createTypes.ts +++ b/src/models/createTypes.ts @@ -1,160 +1,160 @@ import ts, { type TypeNode } from "typescript"; import type { - Attribute, - ColumnType, - LaravelModelType, - Relation, + Attribute, + ColumnType, + LaravelModelType, + Relation, } from "../types"; import { convertCamelToSnake, isEnum } from "../utils"; type TSModelKeyword = - | ts.SyntaxKind.NumberKeyword - | ts.SyntaxKind.StringKeyword - | ts.SyntaxKind.BooleanKeyword; + | ts.SyntaxKind.NumberKeyword + | ts.SyntaxKind.StringKeyword + | ts.SyntaxKind.BooleanKeyword; const keywordTypeDictionary: Record = { - "bigint unsigned": ts.SyntaxKind.NumberKeyword, - "integer unsigned": ts.SyntaxKind.NumberKeyword, - bigint: ts.SyntaxKind.NumberKeyword, - integer: ts.SyntaxKind.NumberKeyword, - smallint: ts.SyntaxKind.NumberKeyword, - boolean: ts.SyntaxKind.BooleanKeyword, - datetime: ts.SyntaxKind.StringKeyword, - date: ts.SyntaxKind.StringKeyword, - text: ts.SyntaxKind.StringKeyword, - string: ts.SyntaxKind.StringKeyword, - char: ts.SyntaxKind.StringKeyword, - varchar: ts.SyntaxKind.StringKeyword, + "bigint unsigned": ts.SyntaxKind.NumberKeyword, + "integer unsigned": ts.SyntaxKind.NumberKeyword, + bigint: ts.SyntaxKind.NumberKeyword, + integer: ts.SyntaxKind.NumberKeyword, + smallint: ts.SyntaxKind.NumberKeyword, + boolean: ts.SyntaxKind.BooleanKeyword, + datetime: ts.SyntaxKind.StringKeyword, + date: ts.SyntaxKind.StringKeyword, + text: ts.SyntaxKind.StringKeyword, + string: ts.SyntaxKind.StringKeyword, + char: ts.SyntaxKind.StringKeyword, + varchar: ts.SyntaxKind.StringKeyword, }; const getKeywordType = (columnType: ColumnType | null) => { - if (!columnType) { - return ts.SyntaxKind.AnyKeyword; - } - const keywordType = keywordTypeDictionary[columnType]; - if (keywordType) return keywordType; + if (!columnType) { + return ts.SyntaxKind.AnyKeyword; + } + const keywordType = keywordTypeDictionary[columnType]; + if (keywordType) return keywordType; - if (columnType.match(/string|text|char.*|varchar.*/)) { - return ts.SyntaxKind.StringKeyword; - } + if (columnType.match(/string|text|char.*|varchar.*/)) { + return ts.SyntaxKind.StringKeyword; + } - return ts.SyntaxKind.AnyKeyword; + return ts.SyntaxKind.AnyKeyword; }; const manyRelations: Relation["type"][] = [ - "HasMany", - "MorphMany", - "HasManyThrough", - "BelongsToMany", + "HasMany", + "MorphMany", + "HasManyThrough", + "BelongsToMany", ]; const oneRlations: Relation["type"][] = [ - "HasOne", - "MorphOne", - "HasOneThrough", - "BelongsTo", + "HasOne", + "MorphOne", + "HasOneThrough", + "BelongsTo", ]; const getRelationNode = (relation: Relation) => { - // many relation - if (manyRelations.includes(relation.type)) { - return ts.factory.createArrayTypeNode( - ts.factory.createTypeReferenceNode( - ts.factory.createIdentifier(getClassName(relation.related) ?? ""), - undefined, - ), - ); - } - - // one relation - if (oneRlations.includes(relation.type)) { - return ts.factory.createTypeReferenceNode( - ts.factory.createIdentifier(getClassName(relation.related) ?? ""), - undefined, - ); - } - - return ts.factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword); + // many relation + if (manyRelations.includes(relation.type)) { + return ts.factory.createArrayTypeNode( + ts.factory.createTypeReferenceNode( + ts.factory.createIdentifier(getClassName(relation.related) ?? ""), + undefined, + ), + ); + } + + // one relation + if (oneRlations.includes(relation.type)) { + return ts.factory.createTypeReferenceNode( + ts.factory.createIdentifier(getClassName(relation.related) ?? ""), + undefined, + ); + } + + return ts.factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword); }; const getClassName = (namespace: string) => { - return namespace.split("\\").at(-1); + return namespace.split("\\").at(-1); }; const createAttributeType = (attribute: Attribute) => { - let node: TypeNode = ts.factory.createKeywordTypeNode( - getKeywordType(attribute.type), - ); - - // Blob type - if (attribute.type === "blob") { - node = ts.factory.createTypeReferenceNode( - ts.factory.createIdentifier("Blob"), - undefined, - ); - } - - // Date, DateTime cast - if (attribute.cast && ["date", "datetime"].includes(attribute.cast)) { - node = ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword); - } - - // Json type - if (attribute.type === "json") { - if (attribute.cast === "array") { - node = ts.factory.createArrayTypeNode( - ts.factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword), - ); - } - - if (attribute.cast === "object") { - node = ts.factory.createTypeReferenceNode("Record", [ - ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword), - ts.factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword), - ]); - } - } - - // Enum type - if (attribute.cast && isEnum(attribute)) { - // Create enum type node - node = ts.factory.createTypeReferenceNode( - ts.factory.createIdentifier(attribute.cast.split("\\").at(-1) ?? ""), - undefined, - ); - } - - return ts.factory.createPropertySignature( - undefined, - ts.factory.createIdentifier(attribute.name), - attribute.nullable - ? ts.factory.createToken(ts.SyntaxKind.QuestionToken) - : undefined, - node, - ); + let node: TypeNode = ts.factory.createKeywordTypeNode( + getKeywordType(attribute.type), + ); + + // Blob type + if (attribute.type === "blob") { + node = ts.factory.createTypeReferenceNode( + ts.factory.createIdentifier("Blob"), + undefined, + ); + } + + // Date, DateTime cast + if (attribute.cast && ["date", "datetime"].includes(attribute.cast)) { + node = ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword); + } + + // Json type + if (attribute.type === "json") { + if (attribute.cast === "array") { + node = ts.factory.createArrayTypeNode( + ts.factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword), + ); + } + + if (attribute.cast === "object") { + node = ts.factory.createTypeReferenceNode("Record", [ + ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword), + ts.factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword), + ]); + } + } + + // Enum type + if (attribute.cast && isEnum(attribute)) { + // Create enum type node + node = ts.factory.createTypeReferenceNode( + ts.factory.createIdentifier(attribute.cast.split("\\").at(-1) ?? ""), + undefined, + ); + } + + return ts.factory.createPropertySignature( + undefined, + ts.factory.createIdentifier(attribute.name), + attribute.nullable + ? ts.factory.createToken(ts.SyntaxKind.QuestionToken) + : undefined, + node, + ); }; export const createTypes = (modelData: LaravelModelType[]) => { - const modelNames = modelData.map((data) => data.class); - return modelData.map((model) => - ts.factory.createTypeAliasDeclaration( - [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)], - ts.factory.createIdentifier(getClassName(model.class) ?? ""), - undefined, - ts.factory.createTypeLiteralNode([ - ...model.attributes - .filter((attribute) => !attribute.hidden) - .map((attribute) => createAttributeType(attribute)), - ...model.relations - .filter((relation) => modelNames.includes(relation.related)) - .map((relation) => - ts.factory.createPropertySignature( - undefined, - ts.factory.createIdentifier(convertCamelToSnake(relation.name)), - ts.factory.createToken(ts.SyntaxKind.QuestionToken), - getRelationNode(relation), - ), - ), - ]), - ), - ); + const modelNames = modelData.map((data) => data.class); + return modelData.map((model) => + ts.factory.createTypeAliasDeclaration( + [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)], + ts.factory.createIdentifier(getClassName(model.class) ?? ""), + undefined, + ts.factory.createTypeLiteralNode([ + ...model.attributes + .filter((attribute) => !attribute.hidden) + .map((attribute) => createAttributeType(attribute)), + ...model.relations + .filter((relation) => modelNames.includes(relation.related)) + .map((relation) => + ts.factory.createPropertySignature( + undefined, + ts.factory.createIdentifier(convertCamelToSnake(relation.name)), + ts.factory.createToken(ts.SyntaxKind.QuestionToken), + getRelationNode(relation), + ), + ), + ]), + ), + ); }; diff --git a/src/print.ts b/src/print.ts index 70232e3..94520ef 100644 --- a/src/print.ts +++ b/src/print.ts @@ -2,17 +2,17 @@ import fs from "node:fs"; import path from "node:path"; function printGeneratedTS( - filename: string, - result: string, - outputPath: string, + filename: string, + result: string, + outputPath: string, ) { - fs.writeFileSync(path.join(outputPath, filename), result); + fs.writeFileSync(path.join(outputPath, filename), result); } export function print(filename: string, result: string, outputPath: string) { - if (!fs.existsSync(outputPath)) { - fs.mkdirSync(outputPath, { recursive: true }); - } + if (!fs.existsSync(outputPath)) { + fs.mkdirSync(outputPath, { recursive: true }); + } - printGeneratedTS(filename, result, outputPath); + printGeneratedTS(filename, result, outputPath); } diff --git a/src/routes/createSource.ts b/src/routes/createSource.ts index 67e52d5..cd9436c 100644 --- a/src/routes/createSource.ts +++ b/src/routes/createSource.ts @@ -4,35 +4,35 @@ import type { LaravelRouteListType } from "../types"; import { createTypes } from "./createTypes"; const createSourceFile = ( - routeListData: LaravelRouteListType[], - options: CLIOptions, + routeListData: LaravelRouteListType[], + options: CLIOptions, ) => { - return ts.factory.createSourceFile( - [...createTypes(routeListData)], - ts.factory.createToken(ts.SyntaxKind.EndOfFileToken), - ts.NodeFlags.None, - ); + return ts.factory.createSourceFile( + [...createTypes(routeListData)], + ts.factory.createToken(ts.SyntaxKind.EndOfFileToken), + ts.NodeFlags.None, + ); }; export const createRouteParamsSource = ( - filename: string, - routeListData: LaravelRouteListType[], - options: CLIOptions, + filename: string, + routeListData: LaravelRouteListType[], + options: CLIOptions, ) => { - const resultFile = ts.createSourceFile( - filename, - "", - ts.ScriptTarget.Latest, - false, - ts.ScriptKind.TS, - ); - const printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed }); + const resultFile = ts.createSourceFile( + filename, + "", + ts.ScriptTarget.Latest, + false, + ts.ScriptKind.TS, + ); + const printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed }); - const result = printer.printNode( - ts.EmitHint.Unspecified, - createSourceFile(routeListData, options), - resultFile, - ); + const result = printer.printNode( + ts.EmitHint.Unspecified, + createSourceFile(routeListData, options), + resultFile, + ); - return result; + return result; }; diff --git a/src/routes/createTypes.ts b/src/routes/createTypes.ts index e74f2a9..e388187 100644 --- a/src/routes/createTypes.ts +++ b/src/routes/createTypes.ts @@ -3,59 +3,59 @@ import ts from "typescript"; import type { LaravelRouteListType } from "../types"; export const createTypes = (routeListData: LaravelRouteListType[]) => { - const keys: string[] = []; - return [ - ts.factory.createTypeAliasDeclaration( - [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)], - ts.factory.createIdentifier("RouteParams"), - undefined, - ts.factory.createTypeLiteralNode( - routeListData - .filter((route) => { - if (!route.name) { - consola.warn(`Route definitions must have a name for type generation. + const keys: string[] = []; + return [ + ts.factory.createTypeAliasDeclaration( + [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)], + ts.factory.createIdentifier("RouteParams"), + undefined, + ts.factory.createTypeLiteralNode( + routeListData + .filter((route) => { + if (!route.name) { + consola.warn(`Route definitions must have a name for type generation. Skipping the following route: Method: ${route.method} Uri: ${route.uri} Action: ${route.action}`); - return false; - } - if (keys.includes(route.name)) { - consola.warn(`Duplicate route name found in route definitions. + return false; + } + if (keys.includes(route.name)) { + consola.warn(`Duplicate route name found in route definitions. Skipping the following route: Name: ${route.name} Method: ${route.method} Uri: ${route.uri} Action: ${route.action}`); - return false; - } - keys.push(route.name); - return true; - }) - .map((route) => { - const params = Array.from( - route.uri.matchAll(/\{(.*?)\}/g), - (param) => param[1], - ); - return ts.factory.createPropertySignature( - undefined, - ts.factory.createStringLiteral(route.name ?? ""), - undefined, - ts.factory.createTypeLiteralNode( - params?.map((param) => - ts.factory.createPropertySignature( - undefined, - ts.factory.createIdentifier(param), - undefined, - ts.factory.createKeywordTypeNode( - ts.SyntaxKind.StringKeyword, - ), - ), - ), - ), - ); - }), - ), - ), - ]; + return false; + } + keys.push(route.name); + return true; + }) + .map((route) => { + const params = Array.from( + route.uri.matchAll(/\{(.*?)\}/g), + (param) => param[1], + ); + return ts.factory.createPropertySignature( + undefined, + ts.factory.createStringLiteral(route.name ?? ""), + undefined, + ts.factory.createTypeLiteralNode( + params?.map((param) => + ts.factory.createPropertySignature( + undefined, + ts.factory.createIdentifier(param), + undefined, + ts.factory.createKeywordTypeNode( + ts.SyntaxKind.StringKeyword, + ), + ), + ), + ), + ); + }), + ), + ), + ]; }; diff --git a/src/types/index.ts b/src/types/index.ts index b5baedf..b76f098 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -1,74 +1,74 @@ export type Relation = { - name: string; - type: - | "MorphMany" - | "HasMany" - | "BelongsToMany" - | "HasManyThrough" - | "BelongsTo" - | "HasOne" - | "MorphOne" - | "HasOneThrough"; - related: string; + name: string; + type: + | "MorphMany" + | "HasMany" + | "BelongsToMany" + | "HasManyThrough" + | "BelongsTo" + | "HasOne" + | "MorphOne" + | "HasOneThrough"; + related: string; }; export type ColumnType = - | "bigint unsigned" - | "bigint" - | "datetime" - | "date" - | string; // "string(n)" + | "bigint unsigned" + | "bigint" + | "datetime" + | "date" + | string; // "string(n)" type CastType = - | "array" - | "AsStringable::class" - | "boolean" - | "collection" - | "date" - | "datetime" - | "immutable_date" - | "immutable_datetime" - | "double" - | "encrypted" - | "encrypted:array" - | "encrypted:collection" - | "encrypted:object" - | "float" - | "integer" - | "object" - | "real" - | "string" - | "timestamp" - | null - | string; // "decimal:" + | "array" + | "AsStringable::class" + | "boolean" + | "collection" + | "date" + | "datetime" + | "immutable_date" + | "immutable_datetime" + | "double" + | "encrypted" + | "encrypted:array" + | "encrypted:collection" + | "encrypted:object" + | "float" + | "integer" + | "object" + | "real" + | "string" + | "timestamp" + | null + | string; // "decimal:" export type Attribute = { - name: string; - type: ColumnType; - increments: boolean; - nullable: boolean; - default: null; - unique: boolean; - fillable: boolean; - hidden: boolean; - appended: null; - cast: CastType; + name: string; + type: ColumnType; + increments: boolean; + nullable: boolean; + default: null; + unique: boolean; + fillable: boolean; + hidden: boolean; + appended: null; + cast: CastType; }; export type LaravelModelType = { - class: string; - database: "mysql" | "sqlite" | "pgsql"; - table: string; - attributes: Attribute[]; - relations: Relation[]; - observers: unknown[]; + class: string; + database: "mysql" | "sqlite" | "pgsql"; + table: string; + attributes: Attribute[]; + relations: Relation[]; + observers: unknown[]; }; export type LaravelRouteListType = { - domain: string | null; - method: "GET|HEAD" | "POST" | "PUT|PATCH" | "DELETE"; - uri: string; - name: string | null; - action: string; - middleware: string[]; + domain: string | null; + method: "GET|HEAD" | "POST" | "PUT|PATCH" | "DELETE"; + uri: string; + name: string | null; + action: string; + middleware: string[]; }; diff --git a/src/types/inertia.ts b/src/types/inertia.ts index cbec567..9b74068 100644 --- a/src/types/inertia.ts +++ b/src/types/inertia.ts @@ -1,21 +1,21 @@ export type PaginationLink = { - active: boolean; - label: string; - url: string | null; + active: boolean; + label: string; + url: string | null; }; export type Paginate = { - current_page: number; - data: T[]; - first_page_url: string; - from: number; - last_page: number; - last_page_url: string; - links: PaginationLink[]; - next_page_url: string | null; - path: string; - per_page: number; - prev_page_url: string | null; - to: number; - total: number; + current_page: number; + data: T[]; + first_page_url: string; + from: number; + last_page: number; + last_page_url: string; + links: PaginationLink[]; + next_page_url: string | null; + path: string; + per_page: number; + prev_page_url: string | null; + to: number; + total: number; }; diff --git a/src/utils.ts b/src/utils.ts index 8a13e7f..35a664c 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -5,38 +5,38 @@ import type { Attribute } from "./types"; // "app/Enums" -> "App-Enums" const enumPath = defaultEnumPath - .split("/") - .map((name) => name.charAt(0).toUpperCase() + name.substring(1).toLowerCase()) - .join("-"); + .split("/") + .map((name) => name.charAt(0).toUpperCase() + name.substring(1).toLowerCase()) + .join("-"); export const isEnum = (attribute: Attribute, customEnumPath?: string) => { - return attribute.cast - ?.replaceAll("\\", "-") - .match(new RegExp(customEnumPath ?? enumPath)); + return attribute.cast + ?.replaceAll("\\", "-") + .match(new RegExp(customEnumPath ?? enumPath)); }; export const convertCamelToSnake = (camelCaseString: string): string => { - return camelCaseString.replace(/[A-Z]/g, (str) => `_${str.toLowerCase()}`); + return camelCaseString.replace(/[A-Z]/g, (str) => `_${str.toLowerCase()}`); }; export const formatNamespaceForCommand = (namespace: string): string => { - return namespace.replaceAll(/\\/g, "/"); + return namespace.replaceAll(/\\/g, "/"); }; export const getPhpAst = (phpFilePath: string): Program => { - const parser = new Engine({}); + const parser = new Engine({}); - const file = fs.readFileSync(phpFilePath); - const fileName = phpFilePath.split("/").at(-1) ?? ""; - const ast = parser.parseCode(file.toString(), fileName); + const file = fs.readFileSync(phpFilePath); + const fileName = phpFilePath.split("/").at(-1) ?? ""; + const ast = parser.parseCode(file.toString(), fileName); - return ast; + return ast; }; export const getPhpNamespace = (phpAst: Program): Namespace => { - const namespaceObj = phpAst.children.find( - (child) => child.kind === "namespace", - ) as Namespace; + const namespaceObj = phpAst.children.find( + (child) => child.kind === "namespace", + ) as Namespace; - return namespaceObj; + return namespaceObj; }; diff --git a/templates/route.d.ts b/templates/route.d.ts index b38817e..4e3fac1 100644 --- a/templates/route.d.ts +++ b/templates/route.d.ts @@ -1,30 +1,30 @@ import type { Config, Router } from "ziggy-js"; import type { RouteParams } from "./param"; type CustomRouter = { - get params(): RouteParams[T]; - current(): Extract | undefined; - current( - name: Extract, - params?: RouteParams[T], - ): boolean; + get params(): RouteParams[T]; + current(): Extract | undefined; + current( + name: Extract, + params?: RouteParams[T], + ): boolean; } & Router; declare global { - declare function route(): CustomRouter; - declare function route( - name: T, - params?: RouteParams[T], - absolute?: boolean, - config?: Config, - ): string; + declare function route(): CustomRouter; + declare function route( + name: T, + params?: RouteParams[T], + absolute?: boolean, + config?: Config, + ): string; } declare module "vue" { - interface ComponentCustomProperties { - route: (() => CustomRouter) & - (( - name: T, - params?: RouteParams[T], - absolute?: boolean, - config?: Config, - ) => string); - } + interface ComponentCustomProperties { + route: (() => CustomRouter) & + (( + name: T, + params?: RouteParams[T], + absolute?: boolean, + config?: Config, + ) => string); + } } diff --git a/tsconfig.json b/tsconfig.json index a58c0d8..36ef417 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,17 +1,17 @@ { - "compilerOptions": { - "module": "commonjs", - "moduleResolution": "node", - "allowSyntheticDefaultImports": true, - "strict": true, - "esModuleInterop": true, - "noImplicitAny": true, - "downlevelIteration": true, - "resolveJsonModule": true, - "outDir": "dist", - "lib": ["ESNext", "DOM"], - "declaration": true, - "target": "ESNext" - }, - "include": ["src"] + "compilerOptions": { + "module": "commonjs", + "moduleResolution": "node", + "allowSyntheticDefaultImports": true, + "strict": true, + "esModuleInterop": true, + "noImplicitAny": true, + "downlevelIteration": true, + "resolveJsonModule": true, + "outDir": "dist", + "lib": ["ESNext", "DOM"], + "declaration": true, + "target": "ESNext" + }, + "include": ["src"] }