From b116105a0dcbfad2c895bbed04a15765519f2d0a Mon Sep 17 00:00:00 2001 From: Conduitry Date: Fri, 19 Aug 2022 16:52:47 -0400 Subject: [PATCH 1/3] use enumerable: false for temporary no-longer-exists getters --- packages/kit/src/runtime/app/stores.js | 36 ++++++++++------ packages/kit/src/runtime/client/client.js | 43 ++++++++++++------- .../kit/src/runtime/server/page/load_data.js | 22 +++++++--- 3 files changed, 65 insertions(+), 36 deletions(-) diff --git a/packages/kit/src/runtime/app/stores.js b/packages/kit/src/runtime/app/stores.js index d98e71715b12..8c385f9b5ae9 100644 --- a/packages/kit/src/runtime/app/stores.js +++ b/packages/kit/src/runtime/app/stores.js @@ -17,27 +17,37 @@ export function stores() { export const getStores = () => { const stores = getContext('__svelte__'); - return { + const readonly_stores = { page: { subscribe: stores.page.subscribe }, navigating: { subscribe: stores.navigating.subscribe }, - // TODO remove this (for 1.0? after 1.0?) - // @ts-expect-error - deprecated, not part of type definitions, but still callable - get preloading() { - console.error('stores.preloading is deprecated; use stores.navigating instead'); - return { - subscribe: stores.navigating.subscribe - }; - }, - get session() { - removed_session(); - return {}; - }, updated: stores.updated }; + + // TODO remove this for 1.0 + Object.defineProperties(readonly_stores, { + preloading: { + get() { + console.error('stores.preloading is deprecated; use stores.navigating instead'); + return { + subscribe: stores.navigating.subscribe + }; + }, + enumerable: false + }, + session: { + get() { + removed_session(); + return {}; + }, + enumerable: false + } + }); + + return readonly_stores; }; /** @type {typeof import('$app/stores').page} */ diff --git a/packages/kit/src/runtime/client/client.js b/packages/kit/src/runtime/client/client.js index 806214c2f64a..7b8e83287d4f 100644 --- a/packages/kit/src/runtime/client/client.js +++ b/packages/kit/src/runtime/client/client.js @@ -583,25 +583,36 @@ export function create_client({ target, base, trailing_slash }) { // does await parent() inside an if branch which wasn't executed yet. uses.parent = true; return parent; + } + }; + + // TODO remove this for 1.0 + Object.defineProperties(load_input, { + props: { + get() { + throw new Error( + '@migration task: Replace `props` with `data` stuff https://github.com/sveltejs/kit/discussions/5774#discussioncomment-3292693' + ); + }, + enumerable: false }, - // @ts-expect-error - get props() { - throw new Error( - '@migration task: Replace `props` with `data` stuff https://github.com/sveltejs/kit/discussions/5774#discussioncomment-3292693' - ); - }, - get session() { - // TODO remove this for 1.0 - throw new Error( - 'session is no longer available. See https://github.com/sveltejs/kit/discussions/5883' - ); + session: { + get() { + throw new Error( + 'session is no longer available. See https://github.com/sveltejs/kit/discussions/5883' + ); + }, + enumerable: false }, - get stuff() { - throw new Error( - '@migration task: Remove stuff https://github.com/sveltejs/kit/discussions/5774#discussioncomment-3292693' - ); + stuff: { + get() { + throw new Error( + '@migration task: Remove stuff https://github.com/sveltejs/kit/discussions/5774#discussioncomment-3292693' + ); + }, + enumerable: false } - }; + }); if (import.meta.env.DEV) { try { diff --git a/packages/kit/src/runtime/server/page/load_data.js b/packages/kit/src/runtime/server/page/load_data.js index 2562356fd0c3..03422217c864 100644 --- a/packages/kit/src/runtime/server/page/load_data.js +++ b/packages/kit/src/runtime/server/page/load_data.js @@ -55,23 +55,31 @@ export async function load_data({ event, fetcher, node, parent, server_data_prom return server_data; } - const data = await node.shared.load.call(null, { + const load_input = { url: state.prerendering ? new PrerenderingURL(event.url) : new LoadURL(event.url), params: event.params, data: server_data, routeId: event.routeId, - get session() { - // TODO remove for 1.0 - throw new Error( - 'session is no longer available. See https://github.com/sveltejs/kit/discussions/5883' - ); - }, fetch: fetcher, setHeaders: event.setHeaders, depends: () => {}, parent + }; + + // TODO remove this for 1.0 + Object.defineProperties(load_input, { + session: { + get() { + throw new Error( + 'session is no longer available. See https://github.com/sveltejs/kit/discussions/5883' + ); + }, + enumerable: false + } }); + const data = await node.shared.load.call(null, load_input); + return data ? unwrap_promises(data) : null; } From d6ac1990c90f0c85a4dba764eaea8a74298cd1ab Mon Sep 17 00:00:00 2001 From: Conduitry Date: Fri, 19 Aug 2022 16:54:35 -0400 Subject: [PATCH 2/3] add changeset --- .changeset/ninety-walls-heal.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/ninety-walls-heal.md diff --git a/.changeset/ninety-walls-heal.md b/.changeset/ninety-walls-heal.md new file mode 100644 index 000000000000..f427a11470c5 --- /dev/null +++ b/.changeset/ninety-walls-heal.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +use `enumerable: false` on "[x] no longer exists" getters so that they are triggered by spreading From 1991257f2d6ac8fd38eb86736c762a6459e4b8df Mon Sep 17 00:00:00 2001 From: Conduitry Date: Fri, 19 Aug 2022 17:01:43 -0400 Subject: [PATCH 3/3] typo --- .changeset/ninety-walls-heal.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/ninety-walls-heal.md b/.changeset/ninety-walls-heal.md index f427a11470c5..3c270bbb0a80 100644 --- a/.changeset/ninety-walls-heal.md +++ b/.changeset/ninety-walls-heal.md @@ -2,4 +2,4 @@ '@sveltejs/kit': patch --- -use `enumerable: false` on "[x] no longer exists" getters so that they are triggered by spreading +use `enumerable: false` on "[x] no longer exists" getters so that they are not triggered by spreading