diff --git a/.changeset/olive-ducks-talk.md b/.changeset/olive-ducks-talk.md new file mode 100644 index 000000000000..e5787dec39c2 --- /dev/null +++ b/.changeset/olive-ducks-talk.md @@ -0,0 +1,5 @@ +--- +'svelte-migrate': patch +--- + +Handle Error without message, handle status 200, handle missing body diff --git a/packages/migrate/migrations/routes/migrate_page_js/index.js b/packages/migrate/migrations/routes/migrate_page_js/index.js index 308a9b9d08fb..a4947f475378 100644 --- a/packages/migrate/migrations/routes/migrate_page_js/index.js +++ b/packages/migrate/migrations/routes/migrate_page_js/index.js @@ -61,8 +61,12 @@ export function migrate_page(content, filename) { return; // nothing to do } - if (keys === 'props') { - automigration(value, file.code, dedent(nodes.props.getText())); + if ( + keys === 'props' || + ((keys === 'status' || keys === 'props status') && + Number(nodes.status.getText()) === 200) + ) { + automigration(value, file.code, dedent(nodes.props?.getText() || '')); return; } @@ -85,10 +89,16 @@ export function migrate_page(content, filename) { if (nodes.error) { const message = is_string_like(nodes.error) ? nodes.error.getText() - : is_new(nodes.error, 'Error') && nodes.error.arguments[0].getText(); - - if (message) { - automigration(node, file.code, `throw error(${status || 500}, ${message});`); + : is_new(nodes.error, 'Error') + ? /** @type {string | undefined} */ (nodes.error.arguments[0]?.getText()) + : false; + + if (message !== false) { + automigration( + node, + file.code, + `throw error(${status || 500}${message ? `, ${message}` : ''});` + ); imports.add('error'); return; } diff --git a/packages/migrate/migrations/routes/migrate_page_js/samples.md b/packages/migrate/migrations/routes/migrate_page_js/samples.md index 3f72c848a3a5..c38874cb297f 100644 --- a/packages/migrate/migrations/routes/migrate_page_js/samples.md +++ b/packages/migrate/migrations/routes/migrate_page_js/samples.md @@ -157,6 +157,29 @@ export function load({ session }) { } ``` +## Error constructor with no arguments + +```js before +export function load({ session }) { + if (!session.user?.admin) { + return { + status: 403, + error: new Error() + }; + } +} +``` + +```js after +import { error } from '@sveltejs/kit'; + +export function load({ session }) { + if (!session.user?.admin) { + throw error(403); + } +} +``` + ## Error status with no error ```js before @@ -322,3 +345,36 @@ export function load() { return; } ``` + +## A load function that returns props and status 200 + +```js before +export function load() { + return { + status: 200, + props: {} + }; +} +``` + +```js after +export function load() { + return {}; +} +``` + +## A load function that returns status 200 + +```js before +export function load() { + return { + status: 200 + }; +} +``` + +```js after +export function load() { + return ; +} +``` diff --git a/packages/migrate/migrations/routes/migrate_page_server/index.js b/packages/migrate/migrations/routes/migrate_page_server/index.js index 15f550728c2f..f33c4000275e 100644 --- a/packages/migrate/migrations/routes/migrate_page_server/index.js +++ b/packages/migrate/migrations/routes/migrate_page_server/index.js @@ -58,7 +58,7 @@ export function migrate_page_server(content, filename) { return; } - automigration(value, file.code, dedent(nodes.body.getText())); + automigration(value, file.code, dedent(nodes.body?.getText() || '')); }); } diff --git a/packages/migrate/migrations/routes/migrate_page_server/samples.md b/packages/migrate/migrations/routes/migrate_page_server/samples.md index 3d717164d45e..4d61b46d90a7 100644 --- a/packages/migrate/migrations/routes/migrate_page_server/samples.md +++ b/packages/migrate/migrations/routes/migrate_page_server/samples.md @@ -137,3 +137,19 @@ export function load() { return; } ``` + +## A function that wrongfully has no body + +```js before +export function GET() { + return { + status: 200 + }; +} +``` + +```js after +export function load() { + return ; +} +```