From 208dc27609a095c4cba2dff9235c892bde2f68e8 Mon Sep 17 00:00:00 2001 From: Ignatius Bagus Date: Wed, 5 May 2021 17:28:55 +0700 Subject: [PATCH 1/9] fix: change context -> locals --- .../templates/default/src/routes/todos/[uid].json.ts | 4 ++-- .../create-svelte/templates/default/src/routes/todos/_api.ts | 2 +- .../templates/default/src/routes/todos/index.json.ts | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/create-svelte/templates/default/src/routes/todos/[uid].json.ts b/packages/create-svelte/templates/default/src/routes/todos/[uid].json.ts index 4b16ef0c9ba4..4373f2031f1d 100644 --- a/packages/create-svelte/templates/default/src/routes/todos/[uid].json.ts +++ b/packages/create-svelte/templates/default/src/routes/todos/[uid].json.ts @@ -2,7 +2,7 @@ import { api } from './_api'; // PATCH /todos/:uid.json export const patch = async (request) => { - return api(request, `todos/${request.context.userid}/${request.params.uid}`, { + return api(request, `todos/${request.locals.userid}/${request.params.uid}`, { text: request.body.get('text'), done: request.body.has('done') ? !!request.body.get('done') : undefined }); @@ -10,5 +10,5 @@ export const patch = async (request) => { // DELETE /todos/:uid.json export const del = async (request) => { - return api(request, `todos/${request.context.userid}/${request.params.uid}`); + return api(request, `todos/${request.locals.userid}/${request.params.uid}`); }; diff --git a/packages/create-svelte/templates/default/src/routes/todos/_api.ts b/packages/create-svelte/templates/default/src/routes/todos/_api.ts index 33eca61966f5..2173cb8e8a5d 100644 --- a/packages/create-svelte/templates/default/src/routes/todos/_api.ts +++ b/packages/create-svelte/templates/default/src/routes/todos/_api.ts @@ -15,7 +15,7 @@ const base = 'https://api.svelte.dev'; export async function api(request: Request, resource: string, data?: {}) { // user must have a cookie set - if (!request.context.userid) { + if (!request.locals.userid) { return { status: 401 }; } diff --git a/packages/create-svelte/templates/default/src/routes/todos/index.json.ts b/packages/create-svelte/templates/default/src/routes/todos/index.json.ts index 35b62f382c92..440590d7ccb2 100644 --- a/packages/create-svelte/templates/default/src/routes/todos/index.json.ts +++ b/packages/create-svelte/templates/default/src/routes/todos/index.json.ts @@ -4,7 +4,7 @@ import type { RequestHandler } from '@sveltejs/kit'; // GET /todos.json export const get: RequestHandler = async (request) => { // request.context.userid comes from src/hooks.js - const response = await api(request, `todos/${request.context.userid}`); + const response = await api(request, `todos/${request.locals.userid}`); if (response.status === 404) { // user hasn't created a todo list. @@ -17,7 +17,7 @@ export const get: RequestHandler = async (request) => { // POST /todos.json export const post: RequestHandler = async (request) => { - const response = await api(request, `todos/${request.context.userid}`, { + const response = await api(request, `todos/${request.locals.userid}`, { // because index.svelte posts a FormData object, // request.body is _also_ a (readonly) FormData // object, which allows us to get form data From d6a7ebbc0e82b79d8d9a16cecd6abb641444f1f1 Mon Sep 17 00:00:00 2001 From: Ignatius Bagus Date: Wed, 5 May 2021 17:29:54 +0700 Subject: [PATCH 2/9] add Locals global interface --- packages/create-svelte/templates/default/src/global.d.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/create-svelte/templates/default/src/global.d.ts b/packages/create-svelte/templates/default/src/global.d.ts index 79d7d7faa607..4de9e2f6f832 100644 --- a/packages/create-svelte/templates/default/src/global.d.ts +++ b/packages/create-svelte/templates/default/src/global.d.ts @@ -1,3 +1,7 @@ /// /// /// + +interface Locals { + userid: string; +} From 9674e33a291932943f30491bfbf896e97b71fbf7 Mon Sep 17 00:00:00 2001 From: Ignatius Bagus Date: Wed, 5 May 2021 17:30:15 +0700 Subject: [PATCH 3/9] fix endpoint lint errors --- .../templates/default/src/routes/todos/[uid].json.ts | 5 +++-- .../templates/default/src/routes/todos/index.json.ts | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/create-svelte/templates/default/src/routes/todos/[uid].json.ts b/packages/create-svelte/templates/default/src/routes/todos/[uid].json.ts index 4373f2031f1d..58ef60ae7a5b 100644 --- a/packages/create-svelte/templates/default/src/routes/todos/[uid].json.ts +++ b/packages/create-svelte/templates/default/src/routes/todos/[uid].json.ts @@ -1,7 +1,8 @@ import { api } from './_api'; +import type { RequestHandler } from '@sveltejs/kit'; // PATCH /todos/:uid.json -export const patch = async (request) => { +export const patch: RequestHandler = async (request) => { return api(request, `todos/${request.locals.userid}/${request.params.uid}`, { text: request.body.get('text'), done: request.body.has('done') ? !!request.body.get('done') : undefined @@ -9,6 +10,6 @@ export const patch = async (request) => { }; // DELETE /todos/:uid.json -export const del = async (request) => { +export const del: RequestHandler = async (request) => { return api(request, `todos/${request.locals.userid}/${request.params.uid}`); }; diff --git a/packages/create-svelte/templates/default/src/routes/todos/index.json.ts b/packages/create-svelte/templates/default/src/routes/todos/index.json.ts index 440590d7ccb2..0a0ba5864e20 100644 --- a/packages/create-svelte/templates/default/src/routes/todos/index.json.ts +++ b/packages/create-svelte/templates/default/src/routes/todos/index.json.ts @@ -2,7 +2,7 @@ import { api } from './_api'; import type { RequestHandler } from '@sveltejs/kit'; // GET /todos.json -export const get: RequestHandler = async (request) => { +export const get: RequestHandler = async (request) => { // request.context.userid comes from src/hooks.js const response = await api(request, `todos/${request.locals.userid}`); @@ -16,7 +16,7 @@ export const get: RequestHandler = async (request) => { }; // POST /todos.json -export const post: RequestHandler = async (request) => { +export const post: RequestHandler = async (request) => { const response = await api(request, `todos/${request.locals.userid}`, { // because index.svelte posts a FormData object, // request.body is _also_ a (readonly) FormData From 5e069123276002dae516617d2d3ecd2323381b5d Mon Sep 17 00:00:00 2001 From: Ignatius Bagus Date: Wed, 5 May 2021 17:34:02 +0700 Subject: [PATCH 4/9] fix comment typo --- .../templates/default/src/routes/todos/index.json.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/create-svelte/templates/default/src/routes/todos/index.json.ts b/packages/create-svelte/templates/default/src/routes/todos/index.json.ts index 0a0ba5864e20..db68cbca24f4 100644 --- a/packages/create-svelte/templates/default/src/routes/todos/index.json.ts +++ b/packages/create-svelte/templates/default/src/routes/todos/index.json.ts @@ -3,7 +3,7 @@ import type { RequestHandler } from '@sveltejs/kit'; // GET /todos.json export const get: RequestHandler = async (request) => { - // request.context.userid comes from src/hooks.js + // request.locals.userid comes from src/hooks.js const response = await api(request, `todos/${request.locals.userid}`); if (response.status === 404) { From d1224633c45e9c284474faee0ba6c60de9b50b28 Mon Sep 17 00:00:00 2001 From: Ignatius Bagus Date: Wed, 5 May 2021 17:47:17 +0700 Subject: [PATCH 5/9] pass Locals to Request in api function --- .../create-svelte/templates/default/src/routes/todos/_api.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/create-svelte/templates/default/src/routes/todos/_api.ts b/packages/create-svelte/templates/default/src/routes/todos/_api.ts index 2173cb8e8a5d..76de5a9129dd 100644 --- a/packages/create-svelte/templates/default/src/routes/todos/_api.ts +++ b/packages/create-svelte/templates/default/src/routes/todos/_api.ts @@ -13,7 +13,7 @@ import type { Request } from '@sveltejs/kit'; const base = 'https://api.svelte.dev'; -export async function api(request: Request, resource: string, data?: {}) { +export async function api(request: Request, resource: string, data?: {}) { // user must have a cookie set if (!request.locals.userid) { return { status: 401 }; From 5862459bf7aa2d0c7cc52d1080ccc6766201bb7b Mon Sep 17 00:00:00 2001 From: Ignatius Bagus Date: Wed, 5 May 2021 17:48:04 +0700 Subject: [PATCH 6/9] remove resolved TODO --- .../create-svelte/templates/default/src/routes/todos/_api.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/create-svelte/templates/default/src/routes/todos/_api.ts b/packages/create-svelte/templates/default/src/routes/todos/_api.ts index 76de5a9129dd..025ab77ff622 100644 --- a/packages/create-svelte/templates/default/src/routes/todos/_api.ts +++ b/packages/create-svelte/templates/default/src/routes/todos/_api.ts @@ -36,8 +36,7 @@ export async function api(request: Request, resource: string, data?: {}) status: 303, headers: { location: '/todos' - }, - body: '' // TODO https://github.com/sveltejs/kit/issues/1047 + } }; } From 36b93a1f25ad3923312587f23cb4aca4969d7193 Mon Sep 17 00:00:00 2001 From: Ignatius Bagus Date: Wed, 5 May 2021 21:51:56 +0700 Subject: [PATCH 7/9] move global Locals -> $lib/types --- packages/create-svelte/templates/default/src/global.d.ts | 4 ---- packages/create-svelte/templates/default/src/lib/types.d.ts | 3 +++ .../templates/default/src/routes/todos/[uid].json.ts | 1 + .../create-svelte/templates/default/src/routes/todos/_api.ts | 1 + .../templates/default/src/routes/todos/index.json.ts | 1 + 5 files changed, 6 insertions(+), 4 deletions(-) create mode 100644 packages/create-svelte/templates/default/src/lib/types.d.ts diff --git a/packages/create-svelte/templates/default/src/global.d.ts b/packages/create-svelte/templates/default/src/global.d.ts index 4de9e2f6f832..79d7d7faa607 100644 --- a/packages/create-svelte/templates/default/src/global.d.ts +++ b/packages/create-svelte/templates/default/src/global.d.ts @@ -1,7 +1,3 @@ /// /// /// - -interface Locals { - userid: string; -} diff --git a/packages/create-svelte/templates/default/src/lib/types.d.ts b/packages/create-svelte/templates/default/src/lib/types.d.ts new file mode 100644 index 000000000000..54f573f30c17 --- /dev/null +++ b/packages/create-svelte/templates/default/src/lib/types.d.ts @@ -0,0 +1,3 @@ +export interface Locals { + userid: string; +} diff --git a/packages/create-svelte/templates/default/src/routes/todos/[uid].json.ts b/packages/create-svelte/templates/default/src/routes/todos/[uid].json.ts index 58ef60ae7a5b..17891faf5979 100644 --- a/packages/create-svelte/templates/default/src/routes/todos/[uid].json.ts +++ b/packages/create-svelte/templates/default/src/routes/todos/[uid].json.ts @@ -1,5 +1,6 @@ import { api } from './_api'; import type { RequestHandler } from '@sveltejs/kit'; +import type { Locals } from '$lib/types'; // PATCH /todos/:uid.json export const patch: RequestHandler = async (request) => { diff --git a/packages/create-svelte/templates/default/src/routes/todos/_api.ts b/packages/create-svelte/templates/default/src/routes/todos/_api.ts index 025ab77ff622..2319c187df76 100644 --- a/packages/create-svelte/templates/default/src/routes/todos/_api.ts +++ b/packages/create-svelte/templates/default/src/routes/todos/_api.ts @@ -1,4 +1,5 @@ import type { Request } from '@sveltejs/kit'; +import type { Locals } from '$lib/types'; /* This module is used by the /todos.json and /todos/[uid].json diff --git a/packages/create-svelte/templates/default/src/routes/todos/index.json.ts b/packages/create-svelte/templates/default/src/routes/todos/index.json.ts index db68cbca24f4..57d68a91dc2f 100644 --- a/packages/create-svelte/templates/default/src/routes/todos/index.json.ts +++ b/packages/create-svelte/templates/default/src/routes/todos/index.json.ts @@ -1,5 +1,6 @@ import { api } from './_api'; import type { RequestHandler } from '@sveltejs/kit'; +import type { Locals } from '$lib/types'; // GET /todos.json export const get: RequestHandler = async (request) => { From d3383be3fb9754f22e72c145a8193034f46dc028 Mon Sep 17 00:00:00 2001 From: Ignatius Bagus Date: Wed, 5 May 2021 21:54:10 +0700 Subject: [PATCH 8/9] add comment on how to make it global --- packages/create-svelte/templates/default/src/lib/types.d.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/create-svelte/templates/default/src/lib/types.d.ts b/packages/create-svelte/templates/default/src/lib/types.d.ts index 54f573f30c17..6edddd1d6fb6 100644 --- a/packages/create-svelte/templates/default/src/lib/types.d.ts +++ b/packages/create-svelte/templates/default/src/lib/types.d.ts @@ -1,3 +1,7 @@ +/** + * Can be made globally available by placing this + * inside `global.d.ts` and removing `export` keyword + */ export interface Locals { userid: string; } From bd365d42e89ba28cb438d0f60babcc289e32c072 Mon Sep 17 00:00:00 2001 From: Conduitry Date: Wed, 5 May 2021 14:37:30 -0400 Subject: [PATCH 9/9] add changeset --- .changeset/bright-cherries-hug.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/bright-cherries-hug.md diff --git a/.changeset/bright-cherries-hug.md b/.changeset/bright-cherries-hug.md new file mode 100644 index 000000000000..03296d67d333 --- /dev/null +++ b/.changeset/bright-cherries-hug.md @@ -0,0 +1,5 @@ +--- +'create-svelte': patch +--- + +Fix usage of request.locals in starter project