From ba7de2adf5523b6cfd2da71da62b99b2c25ca44a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20S=C3=B6derlund?= Date: Fri, 15 Nov 2024 09:37:05 +0100 Subject: [PATCH] Support for Vine 2.0. --- CHANGELOG.md | 6 +++ package.json | 4 +- pnpm-lock.yaml | 10 ++--- src/routes/(v2)/v2/vine/+page.server.ts | 25 ++++++++++++ src/routes/(v2)/v2/vine/+page.svelte | 54 +++++++++++++++++++++++++ src/routes/(v2)/v2/vine/schema.ts | 6 +++ 6 files changed, 98 insertions(+), 7 deletions(-) create mode 100644 src/routes/(v2)/v2/vine/+page.server.ts create mode 100644 src/routes/(v2)/v2/vine/+page.svelte create mode 100644 src/routes/(v2)/v2/vine/schema.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index a747b111..8f227714 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ Headlines: Added, Changed, Deprecated, Removed, Fixed, Security The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] + +### Added + +- Support for Vine 2.0. + ## [2.20.0] - 2024-10-18 ### Added diff --git a/package.json b/package.json index 17d314a7..767211ec 100644 --- a/package.json +++ b/package.json @@ -107,7 +107,7 @@ "@sinclair/typebox": ">=0.32.30 <1", "@sveltejs/kit": "1.x || 2.x", "@typeschema/class-validator": "^0.3.0", - "@vinejs/vine": "^1.8.0", + "@vinejs/vine": "^1.8.0 || ^2.0.0", "arktype": ">=2.0.0-rc.8", "class-validator": "^0.14.1", "effect": "^3.8.2", @@ -165,7 +165,7 @@ "@gcornut/valibot-json-schema": "^0.31.0", "@sinclair/typebox": "^0.32.35", "@typeschema/class-validator": "^0.3.0", - "@vinejs/vine": "^1.8.0", + "@vinejs/vine": "^2.0.0", "arktype": "2.0.0-rc.8", "class-validator": "^0.14.1", "effect": "^3.9.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index de79a1aa..22ace8ec 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -37,8 +37,8 @@ importers: specifier: ^0.3.0 version: 0.3.0(@types/json-schema@7.0.15)(class-validator@0.14.1) '@vinejs/vine': - specifier: ^1.8.0 - version: 1.8.0 + specifier: ^2.0.0 + version: 2.1.0 arktype: specifier: 2.0.0-rc.8 version: 2.0.0-rc.8 @@ -806,8 +806,8 @@ packages: resolution: {integrity: sha512-hg4ekaB5Y2zh+IWzBiC/WCDWrIfpVnKu/ubUvelKlidc/VbulsexoFRw5kJGHZenPVI5YzNnDeTdYSALkTV7jQ==} engines: {node: '>=18.0.0'} - '@vinejs/vine@1.8.0': - resolution: {integrity: sha512-Qq3XxbA26jzqS9ICifkqzT399lMQZ2fWtqeV3luI2as+UIK7qDifJFU2Q4W3q3IB5VXoWxgwAZSZEO0em9I/qQ==} + '@vinejs/vine@2.1.0': + resolution: {integrity: sha512-09aJ2OauxpblqiNqd8qC9RAzzm5SV6fTqZhE4e25j4cM7fmNoXRTjM7Oo8llFADMO4eSA44HqYEO3mkRRYdbYw==} engines: {node: '>=18.16.0'} '@vitest/expect@1.6.0': @@ -2529,7 +2529,7 @@ snapshots: '@vinejs/compiler@2.5.0': optional: true - '@vinejs/vine@1.8.0': + '@vinejs/vine@2.1.0': dependencies: '@poppinss/macroable': 1.0.3 '@types/validator': 13.12.2 diff --git a/src/routes/(v2)/v2/vine/+page.server.ts b/src/routes/(v2)/v2/vine/+page.server.ts new file mode 100644 index 00000000..d656acc6 --- /dev/null +++ b/src/routes/(v2)/v2/vine/+page.server.ts @@ -0,0 +1,25 @@ +import { vine } from '$lib/adapters/vine.js'; +import { message, superValidate } from '$lib/server/index.js'; +import { schema } from './schema.js'; +import { fail } from '@sveltejs/kit'; + +const defaults = { name: '', email: '' }; + +export const load = async () => { + const form = await superValidate(vine(schema, { defaults })); + return { form }; +}; + +export const actions = { + default: async ({ request }) => { + const formData = await request.formData(); + console.log(formData); + + const form = await superValidate(formData, vine(schema, { defaults })); + console.log(form); + + if (!form.valid) return fail(400, { form }); + + return message(form, 'Posted OK!'); + } +}; diff --git a/src/routes/(v2)/v2/vine/+page.svelte b/src/routes/(v2)/v2/vine/+page.svelte new file mode 100644 index 00000000..6e5d3c31 --- /dev/null +++ b/src/routes/(v2)/v2/vine/+page.svelte @@ -0,0 +1,54 @@ + + + + +{#if $message}

{$message}

{/if} + +
+ + +
+ +
+
+ + diff --git a/src/routes/(v2)/v2/vine/schema.ts b/src/routes/(v2)/v2/vine/schema.ts new file mode 100644 index 00000000..f1d1cb10 --- /dev/null +++ b/src/routes/(v2)/v2/vine/schema.ts @@ -0,0 +1,6 @@ +import Vine from '@vinejs/vine'; + +export const schema = Vine.object({ + name: Vine.string().minLength(2), + email: Vine.string().email() +});