diff --git a/composer.json b/composer.json index 6ff2145d1..ed978ffcc 100644 --- a/composer.json +++ b/composer.json @@ -21,7 +21,7 @@ "blade-ui-kit/blade-icons": "^1.6", "code16/laravel-content-renderer": "^1.1", "enshrined/svg-sanitize": "^0.22.0", - "inertiajs/inertia-laravel": "^2.0", + "inertiajs/inertia-laravel": "^3.0", "intervention/image": "^3.4", "laravel/framework": "^11.0|^12.0|^13.0", "laravel/prompts": "0.*", diff --git a/demo/composer.json b/demo/composer.json index 9f4df6f65..fbe396ff6 100644 --- a/demo/composer.json +++ b/demo/composer.json @@ -8,7 +8,7 @@ "code16/laravel-content-renderer": "^1.5", "enshrined/svg-sanitize": "^0.22.0", "guzzlehttp/guzzle": "^7.2", - "inertiajs/inertia-laravel": "^2.0", + "inertiajs/inertia-laravel": "^3.1", "intervention/image": "^3.4", "intervention/image-laravel": "^1.2", "laravel/framework": "^13.0", diff --git a/demo/composer.lock b/demo/composer.lock index 884e28db3..52841f428 100644 --- a/demo/composer.lock +++ b/demo/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "b7d5c71c9fed55cf367da4f828439458", + "content-hash": "151091fe77f6f97938a1f43b834d5607", "packages": [ { "name": "bacon/bacon-qr-code", @@ -1397,23 +1397,23 @@ }, { "name": "inertiajs/inertia-laravel", - "version": "v2.0.22", + "version": "v3.1.0", "source": { "type": "git", "url": "https://github.com/inertiajs/inertia-laravel.git", - "reference": "4d5849328d4c64231f886d1422fdc945882f9094" + "reference": "f588ce4a5beb25d166f4e372bac0c7f46a4f52ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/inertiajs/inertia-laravel/zipball/4d5849328d4c64231f886d1422fdc945882f9094", - "reference": "4d5849328d4c64231f886d1422fdc945882f9094", + "url": "https://api.github.com/repos/inertiajs/inertia-laravel/zipball/f588ce4a5beb25d166f4e372bac0c7f46a4f52ac", + "reference": "f588ce4a5beb25d166f4e372bac0c7f46a4f52ac", "shasum": "" }, "require": { "ext-json": "*", - "laravel/framework": "^10.0|^11.0|^12.0|^13.0", - "php": "^8.1.0", - "symfony/console": "^6.2|^7.0|^8.0" + "laravel/framework": "^11.0|^12.0|^13.0", + "php": "^8.2.0", + "symfony/console": "^7.0|^8.0" }, "conflict": { "laravel/boost": "<2.2.0" @@ -1423,8 +1423,8 @@ "larastan/larastan": "^3.0", "laravel/pint": "^1.16", "mockery/mockery": "^1.3.3", - "orchestra/testbench": "^8.0|^9.2|^10.0|^11.0", - "phpunit/phpunit": "^10.4|^11.5|^12.0", + "orchestra/testbench": "^9.2|^10.0|^11.0", + "phpunit/phpunit": "^11.5|^12.0", "roave/security-advisories": "dev-master" }, "suggest": { @@ -1464,9 +1464,9 @@ ], "support": { "issues": "https://github.com/inertiajs/inertia-laravel/issues", - "source": "https://github.com/inertiajs/inertia-laravel/tree/v2.0.22" + "source": "https://github.com/inertiajs/inertia-laravel/tree/v3.1.0" }, - "time": "2026-03-11T15:51:16+00:00" + "time": "2026-04-30T15:30:29+00:00" }, { "name": "intervention/gif", diff --git a/package-lock.json b/package-lock.json index 5fd8c5597..6c6c7ea15 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ ], "dependencies": { "@googlemaps/js-api-loader": "^1.16.8", - "@inertiajs/vue3": "^2.2.20", + "@inertiajs/vue3": "^3.5.0", "@simplewebauthn/browser": "^13.1.0", "@tiptap/core": "^3.3.0", "@tiptap/extension-character-count": "^3.3.0", @@ -63,6 +63,7 @@ }, "devDependencies": { "@babel/preset-env": "^7.23.9", + "@inertiajs/vite": "^3.5.0", "@tailwindcss/vite": "^4.2.4", "@types/google.maps": "^3.54.3", "@types/leaflet": "^1.9.6", @@ -2094,41 +2095,47 @@ "integrity": "sha512-CROqqwfKotdO6EBjZO/gQGVTbeDps5V7Mt9+8+5Q+jTg5CRMi3Ii/L9PmV3USROrt2uWxtGzJHORmByxyo9pSQ==" }, "node_modules/@inertiajs/core": { - "version": "2.2.20", - "resolved": "https://registry.npmjs.org/@inertiajs/core/-/core-2.2.20.tgz", - "integrity": "sha512-sfMlbutO2/bP9e5swUFo/shu/+QsDisXXXyRIQ1dJeBAawcDZGT7rSTBGFuzE2fdF6UYDBvY9QHMAbzAOlVf0A==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@inertiajs/core/-/core-3.5.0.tgz", + "integrity": "sha512-k0RpPULYD6d+FsYUIaSkUbvLbMGBRkzMc+qHhwfTVrMwCvXd6FyQ+O99PT5AN4j3BKy96XT45AKDwBhhti8Tgg==", "license": "MIT", "dependencies": { - "@types/lodash-es": "^4.17.12", - "axios": "^1.13.2", - "lodash-es": "^4.17.21", - "qs": "^6.14.0" + "@jridgewell/trace-mapping": "^0.3.31", + "es-toolkit": "^1.33.0", + "laravel-precognition": "^2.0.0" + }, + "peerDependencies": { + "axios": "^1.15.2" + }, + "peerDependenciesMeta": { + "axios": { + "optional": true + } } }, - "node_modules/@inertiajs/core/node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", - "license": "BSD-3-Clause", + "node_modules/@inertiajs/vite": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@inertiajs/vite/-/vite-3.5.0.tgz", + "integrity": "sha512-3SgnCTU8KgBoD3DWZi/qwJ5WJ6GkA8TmjnsIMYQCH7oStUPk4qsqQdH/ncj5baDXHj/6LsI1EXgS9tQxNL3Mzw==", + "dev": true, + "license": "MIT", "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" + "@inertiajs/core": "3.5.0", + "tinyglobby": "^0.2.15" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "vite": "^7.0.0 || ^8.0.0" } }, "node_modules/@inertiajs/vue3": { - "version": "2.2.20", - "resolved": "https://registry.npmjs.org/@inertiajs/vue3/-/vue3-2.2.20.tgz", - "integrity": "sha512-KK4cbNNfu7rZqG8Q+u2HmbKTNub7a2oJvPsScOXYDYBf+8dEagJXZ69HY3GCVNrWv6E5u2hTZsNOjVCw8b6Lkw==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@inertiajs/vue3/-/vue3-3.5.0.tgz", + "integrity": "sha512-QhwjmUG32uDtaSoBfWpOZl5krwK+nqua+hPqNOlahOiRPan+TKtMri5fdhZxOfjdPjbjNX1zL1Oi3ileZWvpvw==", "license": "MIT", "dependencies": { - "@inertiajs/core": "2.2.20", - "@types/lodash-es": "^4.17.12", - "lodash-es": "^4.17.21" + "@inertiajs/core": "3.5.0", + "es-toolkit": "^1.33.0", + "laravel-precognition": "^2.0.0" }, "peerDependencies": { "vue": "^3.0.0" @@ -4026,16 +4033,8 @@ "node_modules/@types/lodash": { "version": "4.17.13", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.13.tgz", - "integrity": "sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==" - }, - "node_modules/@types/lodash-es": { - "version": "4.17.12", - "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz", - "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", - "license": "MIT", - "dependencies": { - "@types/lodash": "*" - } + "integrity": "sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==", + "dev": true }, "node_modules/@types/mapbox__point-geometry": { "version": "0.1.4", @@ -5454,6 +5453,18 @@ "node": ">=0.4.0" } }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -5751,14 +5762,15 @@ } }, "node_modules/axios": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", - "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.18.1.tgz", + "integrity": "sha512-3nTvFlvpn9Zu/RkHUqtc7/+al4UpRW5az71ap5zccp6e8RAYEzhMTecX8Dz1wWDYrPpUoB1HAQEGEAEvUr7S9g==", "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.4", - "proxy-from-env": "^1.1.0" + "follow-redirects": "^1.16.0", + "form-data": "^4.0.5", + "https-proxy-agent": "^5.0.1", + "proxy-from-env": "^2.1.0" } }, "node_modules/babel-code-frame": { @@ -6450,6 +6462,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", @@ -8581,6 +8594,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-toolkit": { + "version": "1.49.0", + "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.49.0.tgz", + "integrity": "sha512-G5iZ6Pc/FNRY/soKZHC+TxGDD83rHUDXxzaWhGCX44vAv/tMs56WMusnm/KMNK+luUPsgA9U28cGr4RDlSzL2g==", + "license": "MIT", + "workspaces": [ + "docs", + "benchmarks" + ] + }, "node_modules/es6-templates": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/es6-templates/-/es6-templates-0.2.3.tgz", @@ -9280,15 +9303,16 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -10050,6 +10074,19 @@ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", "dev": true }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -10995,6 +11032,23 @@ "node": ">=0.10.0" } }, + "node_modules/laravel-precognition": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/laravel-precognition/-/laravel-precognition-2.0.0.tgz", + "integrity": "sha512-dmA4HGc9m+TsVNsJs9/XQBI8u6j7coilN+qKkBuhuXQzH3HypwS/c5dFQ4UqUGjBbcxIM7zdk91kM/SRZwIvWQ==", + "license": "MIT", + "dependencies": { + "es-toolkit": "^1.32.0" + }, + "peerDependencies": { + "axios": "^1.4.0" + }, + "peerDependenciesMeta": { + "axios": { + "optional": true + } + } + }, "node_modules/laravel-vite-plugin": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-3.0.1.tgz", @@ -12255,6 +12309,7 @@ "version": "1.13.4", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -13391,9 +13446,13 @@ } }, "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==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } }, "node_modules/prr": { "version": "1.0.1", @@ -14343,6 +14402,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -14362,6 +14422,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -14378,6 +14439,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -14396,6 +14458,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -22090,34 +22153,33 @@ "integrity": "sha512-CROqqwfKotdO6EBjZO/gQGVTbeDps5V7Mt9+8+5Q+jTg5CRMi3Ii/L9PmV3USROrt2uWxtGzJHORmByxyo9pSQ==" }, "@inertiajs/core": { - "version": "2.2.20", - "resolved": "https://registry.npmjs.org/@inertiajs/core/-/core-2.2.20.tgz", - "integrity": "sha512-sfMlbutO2/bP9e5swUFo/shu/+QsDisXXXyRIQ1dJeBAawcDZGT7rSTBGFuzE2fdF6UYDBvY9QHMAbzAOlVf0A==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@inertiajs/core/-/core-3.5.0.tgz", + "integrity": "sha512-k0RpPULYD6d+FsYUIaSkUbvLbMGBRkzMc+qHhwfTVrMwCvXd6FyQ+O99PT5AN4j3BKy96XT45AKDwBhhti8Tgg==", "requires": { - "@types/lodash-es": "^4.17.12", - "axios": "^1.13.2", - "lodash-es": "^4.17.21", - "qs": "^6.14.0" - }, - "dependencies": { - "qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", - "requires": { - "side-channel": "^1.1.0" - } - } + "@jridgewell/trace-mapping": "^0.3.31", + "es-toolkit": "^1.33.0", + "laravel-precognition": "^2.0.0" + } + }, + "@inertiajs/vite": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@inertiajs/vite/-/vite-3.5.0.tgz", + "integrity": "sha512-3SgnCTU8KgBoD3DWZi/qwJ5WJ6GkA8TmjnsIMYQCH7oStUPk4qsqQdH/ncj5baDXHj/6LsI1EXgS9tQxNL3Mzw==", + "dev": true, + "requires": { + "@inertiajs/core": "3.5.0", + "tinyglobby": "^0.2.15" } }, "@inertiajs/vue3": { - "version": "2.2.20", - "resolved": "https://registry.npmjs.org/@inertiajs/vue3/-/vue3-2.2.20.tgz", - "integrity": "sha512-KK4cbNNfu7rZqG8Q+u2HmbKTNub7a2oJvPsScOXYDYBf+8dEagJXZ69HY3GCVNrWv6E5u2hTZsNOjVCw8b6Lkw==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@inertiajs/vue3/-/vue3-3.5.0.tgz", + "integrity": "sha512-QhwjmUG32uDtaSoBfWpOZl5krwK+nqua+hPqNOlahOiRPan+TKtMri5fdhZxOfjdPjbjNX1zL1Oi3ileZWvpvw==", "requires": { - "@inertiajs/core": "2.2.20", - "@types/lodash-es": "^4.17.12", - "lodash-es": "^4.17.21" + "@inertiajs/core": "3.5.0", + "es-toolkit": "^1.33.0", + "laravel-precognition": "^2.0.0" } }, "@internationalized/date": { @@ -23289,15 +23351,8 @@ "@types/lodash": { "version": "4.17.13", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.13.tgz", - "integrity": "sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==" - }, - "@types/lodash-es": { - "version": "4.17.12", - "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz", - "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", - "requires": { - "@types/lodash": "*" - } + "integrity": "sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==", + "dev": true }, "@types/mapbox__point-geometry": { "version": "0.1.4", @@ -24512,6 +24567,14 @@ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + } + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -24754,13 +24817,14 @@ "dev": true }, "axios": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", - "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.18.1.tgz", + "integrity": "sha512-3nTvFlvpn9Zu/RkHUqtc7/+al4UpRW5az71ap5zccp6e8RAYEzhMTecX8Dz1wWDYrPpUoB1HAQEGEAEvUr7S9g==", "requires": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.4", - "proxy-from-env": "^1.1.0" + "follow-redirects": "^1.16.0", + "form-data": "^4.0.5", + "https-proxy-agent": "^5.0.1", + "proxy-from-env": "^2.1.0" } }, "babel-code-frame": { @@ -25335,6 +25399,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, "requires": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" @@ -26952,6 +27017,11 @@ "is-symbol": "^1.0.2" } }, + "es-toolkit": { + "version": "1.49.0", + "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.49.0.tgz", + "integrity": "sha512-G5iZ6Pc/FNRY/soKZHC+TxGDD83rHUDXxzaWhGCX44vAv/tMs56WMusnm/KMNK+luUPsgA9U28cGr4RDlSzL2g==" + }, "es6-templates": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/es6-templates/-/es6-templates-0.2.3.tgz", @@ -27499,9 +27569,9 @@ } }, "follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==" + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==" }, "for-in": { "version": "1.0.2", @@ -28094,6 +28164,15 @@ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", "dev": true }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "requires": { + "agent-base": "6", + "debug": "4" + } + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -28788,6 +28867,14 @@ "is-buffer": "^1.1.5" } }, + "laravel-precognition": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/laravel-precognition/-/laravel-precognition-2.0.0.tgz", + "integrity": "sha512-dmA4HGc9m+TsVNsJs9/XQBI8u6j7coilN+qKkBuhuXQzH3HypwS/c5dFQ4UqUGjBbcxIM7zdk91kM/SRZwIvWQ==", + "requires": { + "es-toolkit": "^1.32.0" + } + }, "laravel-vite-plugin": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-3.0.1.tgz", @@ -29680,7 +29767,8 @@ "object-inspect": { "version": "1.13.4", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==" + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true }, "object-is": { "version": "1.1.5", @@ -30552,9 +30640,9 @@ } }, "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==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==" }, "prr": { "version": "1.0.1", @@ -34082,6 +34170,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, "requires": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", @@ -34094,6 +34183,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, "requires": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" @@ -34103,6 +34193,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, "requires": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -34114,6 +34205,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, "requires": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", diff --git a/package.json b/package.json index d096c1ba4..473d70743 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ }, "devDependencies": { "@babel/preset-env": "^7.23.9", + "@inertiajs/vite": "^3.5.0", "@tailwindcss/vite": "^4.2.4", "@types/google.maps": "^3.54.3", "@types/leaflet": "^1.9.6", @@ -38,7 +39,7 @@ }, "dependencies": { "@googlemaps/js-api-loader": "^1.16.8", - "@inertiajs/vue3": "^2.2.20", + "@inertiajs/vue3": "^3.5.0", "@simplewebauthn/browser": "^13.1.0", "@tiptap/core": "^3.3.0", "@tiptap/extension-character-count": "^3.3.0", diff --git a/resources/js/router.ts b/resources/js/router.ts index 2a0ad25c7..d05f1a784 100644 --- a/resources/js/router.ts +++ b/resources/js/router.ts @@ -1,5 +1,5 @@ import { router, useRemember as inertiaUseRemember } from "@inertiajs/vue3"; -import { VisitOptions, Page } from "@inertiajs/core"; +import type { VisitOptions, Page } from "@inertiajs/core"; import { Ref } from "vue"; const state = { @@ -43,7 +43,7 @@ export function initRouter() { // console.timeEnd('prefetching'); // }, onSuccess(e) { - router.flush(url); + // router.flush(url); // const url = new URL(location.href); // url.searchParams.delete('popstate'); // router.replace({ @@ -56,18 +56,10 @@ export function initRouter() { }, }; - document.addEventListener('inertia:navigate', () => { + document.addEventListener('inertia:navigate', (e) => { state.hasPoppedState = false; document.body.style.minHeight = `${document.body.clientHeight}px`; router.visit(url, params); }, { once: true }); }); - -// on server error (e.g. 500) we want to visit errored page for debugging purposes - router.on('invalid', event => { - const response = event.detail.response; - if(response.config.method.toLowerCase() === 'get') { - location.href = event.detail.response.config.url; - } - }); } diff --git a/resources/js/sharp.ts b/resources/js/sharp.ts index a57232811..d119be8c7 100644 --- a/resources/js/sharp.ts +++ b/resources/js/sharp.ts @@ -17,7 +17,11 @@ lucideIconsDefaultAttributes['aria-hidden'] = 'true' initRouter(); createInertiaApp({ - resolve: name => resolvePageComponent(`./Pages/${name}.vue`, import.meta.glob('./Pages/**/*.vue')), + pages: { + path: './Pages', + extension: '.vue', + lazy: true, + }, setup({ el, App, props, plugin }) { const app = createApp({ render: () => h(App, props), diff --git a/resources/js/utils/config.ts b/resources/js/utils/config.ts index 19aacaf25..3f4327a4c 100644 --- a/resources/js/utils/config.ts +++ b/resources/js/utils/config.ts @@ -1,7 +1,9 @@ -import {usePage} from "@inertiajs/vue3"; +import { getInitialPageFromDOM } from "@inertiajs/core"; +import type { Page} from "@inertiajs/core"; +import { usePage } from "@inertiajs/vue3"; export function config(key: string): any { - const props = usePage()?.props ?? JSON.parse(document.querySelector('#app').dataset.page).props; + const props = usePage()?.props ?? getInitialPageFromDOM('app').props; return props.config[key]; } diff --git a/src/Exceptions/SharpException.php b/src/Exceptions/SharpException.php index 385607bc4..df2b36a65 100644 --- a/src/Exceptions/SharpException.php +++ b/src/Exceptions/SharpException.php @@ -2,11 +2,9 @@ namespace Code16\Sharp\Exceptions; -use Illuminate\Http\JsonResponse; -use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; -use Illuminate\Http\Response; use Inertia\Inertia; +use Symfony\Component\HttpFoundation\Response as SymfonyResponse; use Throwable; class SharpException extends \Exception @@ -19,9 +17,14 @@ public function __construct( parent::__construct($message, 0, $previous); } - public function render(Request $request): Response|RedirectResponse|JsonResponse|bool + public function render(Request $request): SymfonyResponse|bool { if ($this->getStatusCode() >= 500 && config('app.debug')) { + // for debugging purposes, redirect to the errored page + if ($request->inertia() && $request->method() === 'GET') { + return Inertia::location($request->fullUrl()); + } + return false; } diff --git a/src/Http/Middleware/HandleInertiaRequests.php b/src/Http/Middleware/HandleInertiaRequests.php index 5f84b21ec..fe290f8a0 100644 --- a/src/Http/Middleware/HandleInertiaRequests.php +++ b/src/Http/Middleware/HandleInertiaRequests.php @@ -41,6 +41,9 @@ public function handle(Request $request, Closure $next) 'query' => (object) $request->query(), ]); + config()->set('inertia.pages.ensure_pages_exist', true); + config()->set('inertia.pages.paths', [__DIR__.'/../../../resources/js/Pages']); + $inertiaRequest = SharpInertiaRequest::createFrom($request); app()->instance('request', $inertiaRequest); diff --git a/src/Http/Requests/SharpInertiaRequest.php b/src/Http/Requests/SharpInertiaRequest.php index 85962b736..960adbc89 100644 --- a/src/Http/Requests/SharpInertiaRequest.php +++ b/src/Http/Requests/SharpInertiaRequest.php @@ -13,10 +13,10 @@ public function initialize(array $query = [], array $request = [], array $attrib { parent::initialize($query, $request, $attributes, $cookies, $files, $server, $content); - $this->cleanFlashQueryParameters(); + $this->cleanTemporaryQueryParameters(); } - protected function cleanFlashQueryParameters(): void + protected function cleanTemporaryQueryParameters(): void { $this->query->remove('highlighted_entity_key'); $this->query->remove('highlighted_instance_id'); diff --git a/tests-e2e/site/composer.json b/tests-e2e/site/composer.json index a87c706d0..2e32b5f6d 100644 --- a/tests-e2e/site/composer.json +++ b/tests-e2e/site/composer.json @@ -11,7 +11,7 @@ "blade-ui-kit/blade-icons": "^1.7", "code16/laravel-content-renderer": "^1.2", "enshrined/svg-sanitize": "^0.22.0", - "inertiajs/inertia-laravel": "^2.0", + "inertiajs/inertia-laravel": "^3.1", "intervention/image": "^3.9", "intervention/image-laravel": "^1.3", "laravel/framework": "^12.0", diff --git a/tests-e2e/site/composer.lock b/tests-e2e/site/composer.lock index c9473bc05..bd4c2732b 100644 --- a/tests-e2e/site/composer.lock +++ b/tests-e2e/site/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "cdcf9b39d21cf7b2b576cb85a3076ecf", + "content-hash": "ae3d28b2018ff505baff7b1c9e7838fc", "packages": [ { "name": "blade-ui-kit/blade-icons", @@ -1292,23 +1292,23 @@ }, { "name": "inertiajs/inertia-laravel", - "version": "v2.0.24", + "version": "v3.1.0", "source": { "type": "git", "url": "https://github.com/inertiajs/inertia-laravel.git", - "reference": "ea345adad12f110edbbc4bef03b69c2374a535d4" + "reference": "f588ce4a5beb25d166f4e372bac0c7f46a4f52ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/inertiajs/inertia-laravel/zipball/ea345adad12f110edbbc4bef03b69c2374a535d4", - "reference": "ea345adad12f110edbbc4bef03b69c2374a535d4", + "url": "https://api.github.com/repos/inertiajs/inertia-laravel/zipball/f588ce4a5beb25d166f4e372bac0c7f46a4f52ac", + "reference": "f588ce4a5beb25d166f4e372bac0c7f46a4f52ac", "shasum": "" }, "require": { "ext-json": "*", - "laravel/framework": "^10.0|^11.0|^12.0|^13.0", - "php": "^8.1.0", - "symfony/console": "^6.2|^7.0|^8.0" + "laravel/framework": "^11.0|^12.0|^13.0", + "php": "^8.2.0", + "symfony/console": "^7.0|^8.0" }, "conflict": { "laravel/boost": "<2.2.0" @@ -1318,8 +1318,8 @@ "larastan/larastan": "^3.0", "laravel/pint": "^1.16", "mockery/mockery": "^1.3.3", - "orchestra/testbench": "^8.0|^9.2|^10.0|^11.0", - "phpunit/phpunit": "^10.4|^11.5|^12.0", + "orchestra/testbench": "^9.2|^10.0|^11.0", + "phpunit/phpunit": "^11.5|^12.0", "roave/security-advisories": "dev-master" }, "suggest": { @@ -1359,9 +1359,9 @@ ], "support": { "issues": "https://github.com/inertiajs/inertia-laravel/issues", - "source": "https://github.com/inertiajs/inertia-laravel/tree/v2.0.24" + "source": "https://github.com/inertiajs/inertia-laravel/tree/v3.1.0" }, - "time": "2026-04-10T14:36:44+00:00" + "time": "2026-04-30T15:30:29+00:00" }, { "name": "intervention/gif", diff --git a/vite.config.ts b/vite.config.ts index 60adb4a21..f5191a0fa 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -5,6 +5,7 @@ import * as path from 'node:path'; import legacy from '@vitejs/plugin-legacy' import svgLoader from 'vite-svg-loader'; import tailwindcss from "@tailwindcss/vite"; +import inertia from "@inertiajs/vite"; export default defineConfig(({ mode, command }) => { @@ -59,6 +60,7 @@ export default defineConfig(({ mode, command }) => { ? env.APP_URL.replace('https://', '') : false, }), + inertia(), vue({ template: { transformAssetUrls: {