New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

sk-form-data

Package Overview
Dependencies
Maintainers
0
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

sk-form-data

A hook / middleware to automatically parse form data in Svelte Kit.

latest
npmnpm
Version
2.0.2
Version published
Maintainers
0
Created
Source

SvelteKit Form Data

install size

A middleware that automatically parses your SvelteKit form data for use with SvelteKit form actions.

Why?

This reduces boilerplate within SvelteKit form actions where the developer is tasked with parsing individual values from FormData or manually looping over entities via formData.entries().

Setup

Install

You can use a package manager of your choice but npm is used by default.

npm i sk-form-data

Note to pnpm users: pnpm doesn't automatically install peer dependencies, so you might have to include @remix-run/web-file yourself with pnpm i @remix-run/web-file.

Add Middleware

Add form_data to your other hooks inside hooks.server.ts. If you have existing hooks you can use sequence from SvelteKit to add more hooks.

// hooks.server.ts

import { sequence } from '@sveltejs/kit/hooks'
import { form_data } from 'sk-form-data'

export const handle = sequence(form_data)

Add Types

If you're using TypeScript add these types inside src/app.d.ts.

// app.d.ts

declare namespace App {
  interface Locals {
    form_data: Record<string, any>
  }
}

Use Inside Actions

Your form actions will have a new form_data property in locals.

// +page.server.ts

export const actions = {
	default: async function ({ locals }) {
		console.log(locals.form_data); // whatever you sent from your form
		// do rest of your stuff...
	},
}

Example

Use a form as you would in SvelteKit but keep in mind you can only use the POST method.

<!-- +page.svelte -->

<script lang="ts">
	import { enhance } from '$app/forms'
</script>

<form method="POST" use:enhance>
	<label for="title">Title: </label>
	<input name="title" id="title" type="text" value="Scott" />
</form>

Inside your form actions you have access to the parsed form data inside locals.form_data you can pass to a function that transforms values based on your Zod schema for example.

// +page.server.ts

export const actions = {
	default: async function ({ locals }) {
		console.log(locals.form_data); // whatever you sent from your form
		// do rest of your stuff...
	},
}

Support My Work

https://syntax.fm

A Tasty Treats Podcast for Web Developers.

Keywords

svelte

FAQs

Package last updated on 03 Jul 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts