From 93fabfb2b1e0a5ccc51b302ec9a86339cd32a0d5 Mon Sep 17 00:00:00 2001 From: Ignatius Bagus Date: Thu, 21 Oct 2021 11:57:02 +0700 Subject: [PATCH 1/7] add type to data and return function --- .../templates/default/src/routes/todos/_api.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 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 2319c187df76..9970df248510 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,4 @@ -import type { Request } from '@sveltejs/kit'; +import type { Request, RequestHandler } from '@sveltejs/kit'; import type { Locals } from '$lib/types'; /* @@ -14,7 +14,13 @@ import type { Locals } from '$lib/types'; const base = 'https://api.svelte.dev'; -export async function api(request: Request, resource: string, data?: {}) { +type Fulfil

= P extends Promise ? T : P; + +export async function api( + request: Request, + resource: string, + data?: Record +): Promise>, void>> { // user must have a cookie set if (!request.locals.userid) { return { status: 401 }; From fecc8b6cff5b1072b97ceafac1ae09a9bb278ead Mon Sep 17 00:00:00 2001 From: Ignatius Bagus Date: Thu, 21 Oct 2021 12:04:46 +0700 Subject: [PATCH 2/7] simplify type, use built-in utilities --- .../create-svelte/templates/default/src/routes/todos/_api.ts | 5 +++-- 1 file changed, 3 insertions(+), 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 9970df248510..f791e0bfc8f1 100644 --- a/packages/create-svelte/templates/default/src/routes/todos/_api.ts +++ b/packages/create-svelte/templates/default/src/routes/todos/_api.ts @@ -14,13 +14,14 @@ import type { Locals } from '$lib/types'; const base = 'https://api.svelte.dev'; -type Fulfil

= P extends Promise ? T : P; +type MaybeHandle = Exclude, Promise>; +type Handler = Promise>; export async function api( request: Request, resource: string, data?: Record -): Promise>, void>> { +): Handler { // user must have a cookie set if (!request.locals.userid) { return { status: 401 }; From 7b661fc83e4c775dc60b38e1da70aafabebb27db Mon Sep 17 00:00:00 2001 From: Ignatius Bagus Date: Thu, 21 Oct 2021 12:06:54 +0700 Subject: [PATCH 3/7] explanation --- .../create-svelte/templates/default/src/routes/todos/_api.ts | 3 +++ 1 file changed, 3 insertions(+) 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 f791e0bfc8f1..29f4afee3c5f 100644 --- a/packages/create-svelte/templates/default/src/routes/todos/_api.ts +++ b/packages/create-svelte/templates/default/src/routes/todos/_api.ts @@ -14,7 +14,10 @@ import type { Locals } from '$lib/types'; const base = 'https://api.svelte.dev'; +// unwrap possible handlers from RequestHandler return types type MaybeHandle = Exclude, Promise>; +// remove void since api will always return a handler +// re-promisify to satisfy async function constraints type Handler = Promise>; export async function api( From df07b7bb9023708316b4ea4fb4bf053367f96ba8 Mon Sep 17 00:00:00 2001 From: Ignatius Bagus Date: Thu, 21 Oct 2021 12:11:25 +0700 Subject: [PATCH 4/7] changeset --- .changeset/poor-cameras-kick.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/poor-cameras-kick.md diff --git a/.changeset/poor-cameras-kick.md b/.changeset/poor-cameras-kick.md new file mode 100644 index 000000000000..493cd6123bb3 --- /dev/null +++ b/.changeset/poor-cameras-kick.md @@ -0,0 +1,5 @@ +--- +'create-svelte': patch +--- + +Add explicit types in `_api.ts` for TypeScript and ESLint integration example From 8148b7da4ac3234625af95d8df2fddd31dc5b2f6 Mon Sep 17 00:00:00 2001 From: Ignatius Bagus Date: Thu, 21 Oct 2021 16:33:45 +0700 Subject: [PATCH 5/7] oops, just use EndpointOutput instead --- .../templates/default/src/routes/todos/_api.ts | 10 ++-------- 1 file changed, 2 insertions(+), 8 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 29f4afee3c5f..2fd3385d1ed8 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,4 @@ -import type { Request, RequestHandler } from '@sveltejs/kit'; +import type { EndpointOutput, Request } from '@sveltejs/kit'; import type { Locals } from '$lib/types'; /* @@ -14,17 +14,11 @@ import type { Locals } from '$lib/types'; const base = 'https://api.svelte.dev'; -// unwrap possible handlers from RequestHandler return types -type MaybeHandle = Exclude, Promise>; -// remove void since api will always return a handler -// re-promisify to satisfy async function constraints -type Handler = Promise>; - export async function api( request: Request, resource: string, data?: Record -): Handler { +): Promise { // user must have a cookie set if (!request.locals.userid) { return { status: 401 }; From 44264eaf77ac57c786626d435efad4a994191f84 Mon Sep 17 00:00:00 2001 From: Ignatius Bagus Date: Thu, 21 Oct 2021 16:34:04 +0700 Subject: [PATCH 6/7] fix eslint errors in form.ts as well --- packages/create-svelte/templates/default/src/lib/form.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/create-svelte/templates/default/src/lib/form.ts b/packages/create-svelte/templates/default/src/lib/form.ts index c52e92308830..67b6df704317 100644 --- a/packages/create-svelte/templates/default/src/lib/form.ts +++ b/packages/create-svelte/templates/default/src/lib/form.ts @@ -11,8 +11,8 @@ export function enhance( error?: (res: Response, error: Error, form: HTMLFormElement) => void; result: (res: Response, form: HTMLFormElement) => void; } -) { - let current_token: {}; +): { destroy: () => void } { + let current_token: unknown; async function handle_submit(e: Event) { const token = (current_token = {}); From 471c23b1bf2fb4fe974121e4afda4849e78f5bcd Mon Sep 17 00:00:00 2001 From: Ignatius Bagus Date: Thu, 21 Oct 2021 16:36:02 +0700 Subject: [PATCH 7/7] mention form changes in changeset Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com> --- .changeset/poor-cameras-kick.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/poor-cameras-kick.md b/.changeset/poor-cameras-kick.md index 493cd6123bb3..60bd545ebc43 100644 --- a/.changeset/poor-cameras-kick.md +++ b/.changeset/poor-cameras-kick.md @@ -2,4 +2,4 @@ 'create-svelte': patch --- -Add explicit types in `_api.ts` for TypeScript and ESLint integration example +Add explicit types in `_api.ts` and `form.ts` for TypeScript and ESLint integration example