`.
+ // No clue right now how we do that
+ extendedApi.Field = Field
+ extendedApi.createField = (props) =>
+ createField(() => {
+ return { ...props(), form: api }
+ })
+
+ onMount(api.mount)
+
+ // TODO (43081j): does this actually work? we don't use any observed
+ // data, so maybe svelte won't re-run this effect?
+ $effect(() => api.update(opts?.()))
+
+ return extendedApi
+}
diff --git a/packages/svelte-form/src/index.ts b/packages/svelte-form/src/index.ts
new file mode 100644
index 000000000..2f308b888
--- /dev/null
+++ b/packages/svelte-form/src/index.ts
@@ -0,0 +1,6 @@
+export * from '@tanstack/form-core'
+
+export { createForm, type SvelteFormApi } from './createForm.js'
+
+export type { Field } from './Field.js'
+export { createField } from './createField.js'
diff --git a/packages/svelte-form/tests/simple.svelte b/packages/svelte-form/tests/simple.svelte
new file mode 100644
index 000000000..38a510ac1
--- /dev/null
+++ b/packages/svelte-form/tests/simple.svelte
@@ -0,0 +1,175 @@
+
+
+ value.length < 3 ? 'Not long enough' : undefined,
+ }}
+ >
+ {#snippet children(field)}
+
+
+ field.handleBlur()}
+ on:input={(e: Event) => {
+ const target = e.target as HTMLInputElement
+ field.handleChange(target.value)
+ }}
+ />
+
+ {/snippet}
+
+
+ value.length < 3 ? 'Not long enough' : undefined,
+ }}
+ >
+ {#snippet children(field)}
+
+
+ field.handleBlur()}
+ on:input={(e: Event) => {
+ const target = e.target as HTMLInputElement
+ field.handleChange(target.value)
+ }}
+ />
+
+ {/snippet}
+
+
+ {#snippet children(field)}
+
+
+
+
+ {/snippet}
+
+
+ {#snippet children(field)}
+
+
+ field.handleChange(!field.state.value)}
+ checked={field.state.value}
+ on:blur={() => field.handleBlur()}
+ id="employed"
+ type="checkbox"
+ />
+
+ {#if field.state.value}
+
+ value.length === 0
+ ? 'Needs to have a job here'
+ : null,
+ }}
+ >
+ {#snippet children(field)}
+
+
+ subField.handleBlur()}
+ on:input={(e: Event) => {
+ const target = e.target as HTMLInputElement
+ subField.handleChange(target.value)
+ }}
+ />
+
+ {/snippet}
+
+ {/if}
+ {/snippet}
+
+
+
+
+
+
+{JSON.stringify(form.api.state, null, 2)}
diff --git a/packages/svelte-form/tests/simple.test.ts b/packages/svelte-form/tests/simple.test.ts
new file mode 100644
index 000000000..586643e51
--- /dev/null
+++ b/packages/svelte-form/tests/simple.test.ts
@@ -0,0 +1,76 @@
+///
+import { afterEach, beforeEach, describe, expect, it } from 'vitest'
+import '@testing-library/jest-dom'
+import { userEvent } from '@testing-library/user-event'
+import { mount } from 'svelte'
+import TestForm from './simple'
+
+describe('Svelte Tests', () => {
+ let element: TestForm
+ beforeEach(async () => {
+ element = document.createElement('div')
+ document.body.appendChild(element)
+ mount(TestForm, {
+ target: element,
+ props: {},
+ })
+ })
+
+ afterEach(() => {
+ element.remove()
+ })
+
+ it('should have initial values', async () => {
+ expect(
+ await element.shadowRoot!.querySelector('#firstName'),
+ ).toHaveValue(sampleData.firstName)
+ expect(
+ await element.shadowRoot!.querySelector('#lastName'),
+ ).toHaveValue('')
+ const form = element.form!
+ expect(form.api.getFieldValue('firstName')).toBe('Bob')
+ expect(form.api.getFieldMeta('firstName')?.isTouched).toBeFalsy()
+ expect(form.api.getFieldValue('lastName')).toBe('')
+ expect(form.api.getFieldMeta('lastName')?.isTouched).toBeFalsy()
+ })
+ it('should mirror user input', async () => {
+ const lastName =
+ await element.shadowRoot!.querySelector('#lastName')!
+ const lastNameValue = 'Jobs'
+ await userEvent.type(lastName, lastNameValue)
+
+ const form = element.form!
+ expect(form.api.getFieldValue('lastName')).toBe(lastNameValue)
+ expect(form.api.getFieldMeta('lastName')?.isTouched).toBeTruthy()
+ })
+ it('Reset form to initial value', async () => {
+ const firstName =
+ await element.shadowRoot!.querySelector('#firstName')!
+ await userEvent.type(firstName, '-Joseph')
+
+ expect(firstName).toHaveValue('Christian-Joseph')
+
+ const form = element.form
+ await element
+ .shadowRoot!.querySelector('#reset')
+ ?.click()
+ expect(form.api.getFieldValue('firstName')).toBe('Bob')
+ })
+
+ it('should display validation', async () => {
+ const lastName =
+ await element.shadowRoot!.querySelector('#lastName')!
+ const lastNameValue = 'Jo'
+ await userEvent.type(lastName, lastNameValue)
+ expect(lastName).toHaveValue('Jo')
+ const form = element.form
+ expect(form.api.getFieldMeta('lastName')?.errors[0]).toBe('Not long enough')
+
+ await userEvent.type(lastName, lastNameValue)
+
+ expect(await lastName.getAttribute('error-text')).toBeFalsy()
+ expect(form.api.getFieldValue('lastName')).toBe('JoJo')
+ expect(form.api.getFieldMeta('lastName')?.isTouched).toBeTruthy()
+ expect(form.api.getFieldMeta('lastName')?.errors.length).toBeFalsy()
+ })
+})
diff --git a/packages/svelte-form/tsconfig.build.json b/packages/svelte-form/tsconfig.build.json
new file mode 100644
index 000000000..25a44d38f
--- /dev/null
+++ b/packages/svelte-form/tsconfig.build.json
@@ -0,0 +1,12 @@
+{
+ "extends": "../../tsconfig.json",
+ "compilerOptions": {
+ "moduleResolution": "node16",
+ "rootDir": "./src",
+ "outDir": "./dist",
+ "noEmit": false,
+ "declaration": true,
+ "sourceMap": true
+ },
+ "include": ["src"]
+}
diff --git a/packages/svelte-form/tsconfig.docs.json b/packages/svelte-form/tsconfig.docs.json
new file mode 100644
index 000000000..2c9444e16
--- /dev/null
+++ b/packages/svelte-form/tsconfig.docs.json
@@ -0,0 +1,9 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "paths": {
+ "@tanstack/form-core": ["../form-core/src"]
+ }
+ },
+ "exclude": ["tests", "eslint.config.js", "vite.config.ts"]
+}
diff --git a/packages/svelte-form/tsconfig.json b/packages/svelte-form/tsconfig.json
new file mode 100644
index 000000000..c7651b3dc
--- /dev/null
+++ b/packages/svelte-form/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "extends": "../../tsconfig.json",
+ "compilerOptions": {
+ "moduleResolution": "node16"
+ },
+ "include": ["src", "tests", "eslint.config.js", "vite.config.ts"]
+}
diff --git a/packages/svelte-form/vite.config.ts b/packages/svelte-form/vite.config.ts
new file mode 100644
index 000000000..8de48919a
--- /dev/null
+++ b/packages/svelte-form/vite.config.ts
@@ -0,0 +1,14 @@
+import { defineConfig } from 'vitest/config'
+import packageJson from './package.json'
+
+export default defineConfig({
+ test: {
+ name: packageJson.name,
+ dir: './tests',
+ watch: false,
+ environment: 'jsdom',
+ globals: true,
+ coverage: { enabled: true, provider: 'istanbul', include: ['src/**/*'] },
+ typecheck: { enabled: true },
+ },
+})
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 3b5b642c9..15ea96f6b 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1229,6 +1229,19 @@ importers:
specifier: ^2.11.0
version: 2.11.0(@testing-library/jest-dom@6.6.3)(solid-js@1.9.3)(vite@5.4.11(@types/node@22.10.1)(less@4.2.0)(sass@1.80.7)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0))
+ packages/svelte-form:
+ dependencies:
+ '@tanstack/form-core':
+ specifier: workspace:*
+ version: link:../form-core
+ devDependencies:
+ premove:
+ specifier: ^4.0.0
+ version: 4.0.0
+ svelte:
+ specifier: ^5.16.1
+ version: 5.16.1
+
packages/valibot-form-adapter:
dependencies:
'@tanstack/form-core':
@@ -5204,6 +5217,10 @@ packages:
axios@1.7.7:
resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==}
+ axobject-query@4.1.0:
+ resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
+ engines: {node: '>= 0.4'}
+
b4a@1.6.7:
resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==}
@@ -6249,6 +6266,9 @@ packages:
jiti:
optional: true
+ esm-env@1.2.1:
+ resolution: {integrity: sha512-U9JedYYjCnadUlXk7e1Kr+aENQhtUaoaV9+gZm1T8LC/YBAPJx3NSPIAurFOC0U5vrdSevnUJS2/wUVxGwPhng==}
+
espree@10.3.0:
resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -6262,6 +6282,9 @@ packages:
resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
engines: {node: '>=0.10'}
+ esrap@1.3.2:
+ resolution: {integrity: sha512-C4PXusxYhFT98GjLSmb20k9PREuUdporer50dhzGuJu9IJXktbMddVCMLAERl5dAHyAi73GWWCE4FVHGP1794g==}
+
esrecurse@4.3.0:
resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
engines: {node: '>=4.0'}
@@ -7467,6 +7490,9 @@ packages:
resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==}
engines: {node: '>=14'}
+ locate-character@3.0.0:
+ resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==}
+
locate-path@5.0.0:
resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
engines: {node: '>=8'}
@@ -8597,6 +8623,11 @@ packages:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
+ premove@4.0.0:
+ resolution: {integrity: sha512-zim/Hr4+FVdCIM7zL9b9Z0Wfd5Ya3mnKtiuDv7L5lzYzanSq6cOcVJ7EFcgK4I0pt28l8H0jX/x3nyog380XgQ==}
+ engines: {node: '>=6'}
+ hasBin: true
+
prettier@2.8.8:
resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
engines: {node: '>=10.13.0'}
@@ -9510,6 +9541,10 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
+ svelte@5.16.1:
+ resolution: {integrity: sha512-FsA1OjAKMAFSDob6j/Tv2ZV9rY4SeqPd1WXQlQkFkePAozSHLp6tbkU9qa1xJ+uTRzMSM2Vx3USdsYZBXd3H3g==}
+ engines: {node: '>=18'}
+
symbol-observable@4.0.0:
resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==}
engines: {node: '>=0.10'}
@@ -10546,6 +10581,9 @@ packages:
yup@1.5.0:
resolution: {integrity: sha512-NJfBIHnp1QbqZwxcgl6irnDMIsb/7d1prNhFx02f1kp8h+orpi4xs3w90szNpOh68a/iHPdMsYvhZWoDmUvXBQ==}
+ zimmerframe@1.1.2:
+ resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==}
+
zip-stream@6.0.1:
resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==}
engines: {node: '>= 14'}
@@ -14850,6 +14888,8 @@ snapshots:
transitivePeerDependencies:
- debug
+ axobject-query@4.1.0: {}
+
b4a@1.6.7: {}
babel-dead-code-elimination@1.0.6:
@@ -16155,6 +16195,8 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ esm-env@1.2.1: {}
+
espree@10.3.0:
dependencies:
acorn: 8.14.0
@@ -16167,6 +16209,10 @@ snapshots:
dependencies:
estraverse: 5.3.0
+ esrap@1.3.2:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.0
+
esrecurse@4.3.0:
dependencies:
estraverse: 5.3.0
@@ -17508,6 +17554,8 @@ snapshots:
mlly: 1.7.3
pkg-types: 1.2.1
+ locate-character@3.0.0: {}
+
locate-path@5.0.0:
dependencies:
p-locate: 4.1.0
@@ -19014,6 +19062,8 @@ snapshots:
prelude-ls@1.2.1: {}
+ premove@4.0.0: {}
+
prettier@2.8.8: {}
prettier@3.4.2: {}
@@ -19981,6 +20031,23 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
+ svelte@5.16.1:
+ dependencies:
+ '@ampproject/remapping': 2.3.0
+ '@jridgewell/sourcemap-codec': 1.5.0
+ '@types/estree': 1.0.6
+ acorn: 8.14.0
+ acorn-typescript: 1.4.13(acorn@8.14.0)
+ aria-query: 5.3.2
+ axobject-query: 4.1.0
+ clsx: 2.1.1
+ esm-env: 1.2.1
+ esrap: 1.3.2
+ is-reference: 3.0.3
+ locate-character: 3.0.0
+ magic-string: 0.30.12
+ zimmerframe: 1.1.2
+
symbol-observable@4.0.0: {}
symbol-tree@3.2.4: {}
@@ -21112,6 +21179,8 @@ snapshots:
toposort: 2.0.2
type-fest: 2.19.0
+ zimmerframe@1.1.2: {}
+
zip-stream@6.0.1:
dependencies:
archiver-utils: 5.0.2
From 4e53bdb0e6527889cb745e962d2749682690aa21 Mon Sep 17 00:00:00 2001
From: James Garbutt <43081j@users.noreply.github.com>
Date: Mon, 6 Jan 2025 11:08:22 +0000
Subject: [PATCH 2/8] wip: add vite and fix some types
---
packages/svelte-form/package.json | 3 +-
packages/svelte-form/src/createField.ts | 36 +++++++-
packages/svelte-form/src/createForm.ts | 6 +-
packages/svelte-form/src/index.ts | 2 +-
packages/svelte-form/tsconfig.build.json | 2 +-
packages/svelte-form/vite.config.ts | 5 ++
pnpm-lock.yaml | 106 ++++++++++++++++++-----
7 files changed, 130 insertions(+), 30 deletions(-)
diff --git a/packages/svelte-form/package.json b/packages/svelte-form/package.json
index 892f427f0..7c0fddc92 100644
--- a/packages/svelte-form/package.json
+++ b/packages/svelte-form/package.json
@@ -48,7 +48,8 @@
},
"devDependencies": {
"svelte": "^5.16.1",
- "premove": "^4.0.0"
+ "premove": "^4.0.0",
+ "@sveltejs/vite-plugin-svelte": "^4.0.4"
},
"peerDependencies": {
"svelte": "^5.16.1"
diff --git a/packages/svelte-form/src/createField.ts b/packages/svelte-form/src/createField.ts
index 21880ba66..adfff9f6a 100644
--- a/packages/svelte-form/src/createField.ts
+++ b/packages/svelte-form/src/createField.ts
@@ -1,11 +1,12 @@
import { FieldApi } from '@tanstack/form-core'
import { onDestroy, onMount } from 'svelte'
-import Field from './Field.js'
+import Field from './Field.svelte'
import type {
DeepKeys,
DeepValue,
FieldApiOptions,
+ Narrow,
Validator,
} from '@tanstack/form-core'
@@ -18,6 +19,37 @@ interface SvelteFieldApi<
Field: Field
}
+export type CreateField<
+ TParentData,
+ TFormValidator extends
+ | Validator
+ | undefined = undefined,
+> = <
+ TName extends DeepKeys,
+ TFieldValidator extends
+ | Validator, unknown>
+ | undefined = undefined,
+ TData extends DeepValue = DeepValue,
+>(
+ opts: () => { name: Narrow } & Omit<
+ FieldApiOptions<
+ TParentData,
+ TName,
+ TFieldValidator,
+ TFormValidator,
+ TData
+ >,
+ 'form'
+ >,
+) => () => FieldApi<
+ TParentData,
+ TName,
+ TFieldValidator,
+ TFormValidator,
+ TData
+> &
+ SvelteFieldApi
+
export function createField<
TParentData,
TName extends DeepKeys,
@@ -64,5 +96,5 @@ export function createField<
api.update(opts())
})
- return extendedApi
+ return () => extendedApi
}
diff --git a/packages/svelte-form/src/createForm.ts b/packages/svelte-form/src/createForm.ts
index 3259ac141..6abce87ad 100644
--- a/packages/svelte-form/src/createForm.ts
+++ b/packages/svelte-form/src/createForm.ts
@@ -1,14 +1,16 @@
import { FormApi } from '@tanstack/form-core'
import { onMount } from 'svelte'
-import { Field, createField } from './createField'
+import { createField } from './createField.js'
+import Field from './Field.svelte';
import type { FormOptions, Validator } from '@tanstack/form-core'
+import type { CreateField } from './createField.js';
export interface SvelteFormApi<
TFormData,
TFormValidator extends Validator | undefined = undefined,
> {
Field: Field
- createField: typeof createField
+ createField: CreateField
}
export function createForm<
diff --git a/packages/svelte-form/src/index.ts b/packages/svelte-form/src/index.ts
index 2f308b888..51faab167 100644
--- a/packages/svelte-form/src/index.ts
+++ b/packages/svelte-form/src/index.ts
@@ -2,5 +2,5 @@ export * from '@tanstack/form-core'
export { createForm, type SvelteFormApi } from './createForm.js'
-export type { Field } from './Field.js'
+export type { Field } from './Field.svelte'
export { createField } from './createField.js'
diff --git a/packages/svelte-form/tsconfig.build.json b/packages/svelte-form/tsconfig.build.json
index 25a44d38f..3832dfb1a 100644
--- a/packages/svelte-form/tsconfig.build.json
+++ b/packages/svelte-form/tsconfig.build.json
@@ -1,7 +1,7 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
- "moduleResolution": "node16",
+ "moduleResolution": "bundler",
"rootDir": "./src",
"outDir": "./dist",
"noEmit": false,
diff --git a/packages/svelte-form/vite.config.ts b/packages/svelte-form/vite.config.ts
index 8de48919a..3ec4909d6 100644
--- a/packages/svelte-form/vite.config.ts
+++ b/packages/svelte-form/vite.config.ts
@@ -1,4 +1,5 @@
import { defineConfig } from 'vitest/config'
+import { svelte } from '@sveltejs/vite-plugin-svelte';
import packageJson from './package.json'
export default defineConfig({
@@ -11,4 +12,8 @@ export default defineConfig({
coverage: { enabled: true, provider: 'istanbul', include: ['src/**/*'] },
typecheck: { enabled: true },
},
+ plugins: [
+ svelte({
+ })
+ ]
})
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 15ea96f6b..12e353efd 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1235,6 +1235,9 @@ importers:
specifier: workspace:*
version: link:../form-core
devDependencies:
+ '@sveltejs/vite-plugin-svelte':
+ specifier: ^4.0.4
+ version: 4.0.4(svelte@5.16.1)(vite@5.4.11(@types/node@22.10.1)(less@4.2.0)(sass@1.80.7)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0))
premove:
specifier: ^4.0.0
version: 4.0.0
@@ -4271,6 +4274,21 @@ packages:
peerDependencies:
eslint: '>=8.40.0'
+ '@sveltejs/vite-plugin-svelte-inspector@3.0.1':
+ resolution: {integrity: sha512-2CKypmj1sM4GE7HjllT7UKmo4Q6L5xFRd7VMGEWhYnZ+wc6AUVU01IBd7yUi6WnFndEwWoMNOd6e8UjoN0nbvQ==}
+ engines: {node: ^18.0.0 || ^20.0.0 || >=22}
+ peerDependencies:
+ '@sveltejs/vite-plugin-svelte': ^4.0.0-next.0||^4.0.0
+ svelte: ^5.0.0-next.96 || ^5.0.0
+ vite: ^5.0.0
+
+ '@sveltejs/vite-plugin-svelte@4.0.4':
+ resolution: {integrity: sha512-0ba1RQ/PHen5FGpdSrW7Y3fAMQjrXantECALeOiOdBdzR5+5vPP6HVZRLmZaQL+W8m++o+haIAKq5qT+MiZ7VA==}
+ engines: {node: ^18.0.0 || ^20.0.0 || >=22}
+ peerDependencies:
+ svelte: ^5.0.0-next.96 || ^5.0.0
+ vite: ^5.0.0
+
'@swc/core-darwin-arm64@1.7.42':
resolution: {integrity: sha512-fWhaCs2+8GDRIcjExVDEIfbptVrxDqG8oHkESnXgymmvqTWzWei5SOnPNMS8Q+MYsn/b++Y2bDxkcwmq35Bvxg==}
engines: {node: '>=10'}
@@ -5810,6 +5828,15 @@ packages:
supports-color:
optional: true
+ debug@4.4.0:
+ resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
decimal.js@10.4.3:
resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==}
@@ -7572,6 +7599,9 @@ packages:
magic-string@0.30.12:
resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==}
+ magic-string@0.30.17:
+ resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
+
magicast@0.2.11:
resolution: {integrity: sha512-6saXbRDA1HMkqbsvHOU6HBjCVgZT460qheRkLhJQHWAbhXoWESI3Kn/dGGXyKs15FFKR85jsUqFx2sMK0wy/5g==}
@@ -10964,7 +10994,7 @@ snapshots:
'@babel/core': 7.26.0
'@babel/helper-compilation-targets': 7.25.9
'@babel/helper-plugin-utils': 7.25.9
- debug: 4.3.7
+ debug: 4.4.0
lodash.debounce: 4.0.8
resolve: 1.22.8
transitivePeerDependencies:
@@ -12590,7 +12620,7 @@ snapshots:
'@kwsites/file-exists@1.1.1':
dependencies:
- debug: 4.3.7
+ debug: 4.4.0
transitivePeerDependencies:
- supports-color
@@ -13355,7 +13385,7 @@ snapshots:
estree-walker: 2.0.2
glob: 8.1.0
is-reference: 1.2.1
- magic-string: 0.30.12
+ magic-string: 0.30.17
optionalDependencies:
rollup: 4.26.0
@@ -13363,7 +13393,7 @@ snapshots:
dependencies:
'@rollup/pluginutils': 5.1.3(rollup@4.26.0)
estree-walker: 2.0.2
- magic-string: 0.30.12
+ magic-string: 0.30.17
optionalDependencies:
rollup: 4.26.0
@@ -13386,7 +13416,7 @@ snapshots:
'@rollup/plugin-replace@5.0.7(rollup@4.26.0)':
dependencies:
'@rollup/pluginutils': 5.1.3(rollup@4.26.0)
- magic-string: 0.30.12
+ magic-string: 0.30.17
optionalDependencies:
rollup: 4.26.0
@@ -13578,6 +13608,28 @@ snapshots:
eslint-visitor-keys: 4.2.0
espree: 10.3.0
+ '@sveltejs/vite-plugin-svelte-inspector@3.0.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.16.1)(vite@5.4.11(@types/node@22.10.1)(less@4.2.0)(sass@1.80.7)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0)))(svelte@5.16.1)(vite@5.4.11(@types/node@22.10.1)(less@4.2.0)(sass@1.80.7)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0))':
+ dependencies:
+ '@sveltejs/vite-plugin-svelte': 4.0.4(svelte@5.16.1)(vite@5.4.11(@types/node@22.10.1)(less@4.2.0)(sass@1.80.7)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0))
+ debug: 4.4.0
+ svelte: 5.16.1
+ vite: 5.4.11(@types/node@22.10.1)(less@4.2.0)(sass@1.80.7)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.16.1)(vite@5.4.11(@types/node@22.10.1)(less@4.2.0)(sass@1.80.7)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0))':
+ dependencies:
+ '@sveltejs/vite-plugin-svelte-inspector': 3.0.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.16.1)(vite@5.4.11(@types/node@22.10.1)(less@4.2.0)(sass@1.80.7)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0)))(svelte@5.16.1)(vite@5.4.11(@types/node@22.10.1)(less@4.2.0)(sass@1.80.7)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0))
+ debug: 4.4.0
+ deepmerge: 4.3.1
+ kleur: 4.1.5
+ magic-string: 0.30.17
+ svelte: 5.16.1
+ vite: 5.4.11(@types/node@22.10.1)(less@4.2.0)(sass@1.80.7)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0)
+ vitefu: 1.0.4(vite@5.4.11(@types/node@22.10.1)(less@4.2.0)(sass@1.80.7)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0))
+ transitivePeerDependencies:
+ - supports-color
+
'@swc/core-darwin-arm64@1.7.42':
optional: true
@@ -14141,7 +14193,7 @@ snapshots:
'@typescript-eslint/types': 8.17.0
'@typescript-eslint/typescript-estree': 8.17.0(typescript@5.6.3)
'@typescript-eslint/visitor-keys': 8.17.0
- debug: 4.3.7
+ debug: 4.4.0
eslint: 9.16.0(jiti@2.4.0)
optionalDependencies:
typescript: 5.6.3
@@ -14171,7 +14223,7 @@ snapshots:
dependencies:
'@typescript-eslint/types': 8.17.0
'@typescript-eslint/visitor-keys': 8.17.0
- debug: 4.3.7
+ debug: 4.4.0
fast-glob: 3.3.2
is-glob: 4.0.3
minimatch: 9.0.5
@@ -14405,7 +14457,7 @@ snapshots:
dependencies:
'@vitest/spy': 2.1.4
estree-walker: 3.0.3
- magic-string: 0.30.12
+ magic-string: 0.30.17
optionalDependencies:
vite: 5.4.11(@types/node@22.10.1)(less@4.2.0)(sass@1.80.7)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0)
@@ -14421,7 +14473,7 @@ snapshots:
'@vitest/snapshot@2.1.4':
dependencies:
'@vitest/pretty-format': 2.1.4
- magic-string: 0.30.12
+ magic-string: 0.30.17
pathe: 1.1.2
'@vitest/spy@2.1.4':
@@ -14686,13 +14738,13 @@ snapshots:
agent-base@6.0.2:
dependencies:
- debug: 4.3.7
+ debug: 4.4.0
transitivePeerDependencies:
- supports-color
agent-base@7.1.1:
dependencies:
- debug: 4.3.7
+ debug: 4.4.0
transitivePeerDependencies:
- supports-color
@@ -15523,6 +15575,10 @@ snapshots:
dependencies:
ms: 2.1.3
+ debug@4.4.0:
+ dependencies:
+ ms: 2.1.3
+
decimal.js@10.4.3: {}
decode-formdata@0.8.0: {}
@@ -16849,7 +16905,7 @@ snapshots:
http-proxy-agent@7.0.2:
dependencies:
agent-base: 7.1.1
- debug: 4.3.7
+ debug: 4.4.0
transitivePeerDependencies:
- supports-color
@@ -16889,14 +16945,14 @@ snapshots:
https-proxy-agent@5.0.1:
dependencies:
agent-base: 6.0.2
- debug: 4.3.7
+ debug: 4.4.0
transitivePeerDependencies:
- supports-color
https-proxy-agent@7.0.5:
dependencies:
agent-base: 7.1.1
- debug: 4.3.7
+ debug: 4.4.0
transitivePeerDependencies:
- supports-color
@@ -16985,7 +17041,7 @@ snapshots:
dependencies:
'@ioredis/commands': 1.2.0
cluster-key-slot: 1.1.2
- debug: 4.3.7
+ debug: 4.4.0
denque: 2.1.0
lodash.defaults: 4.2.0
lodash.isarguments: 3.1.0
@@ -17628,6 +17684,10 @@ snapshots:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.0
+ magic-string@0.30.17:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.0
+
magicast@0.2.11:
dependencies:
'@babel/parser': 7.26.2
@@ -18030,7 +18090,7 @@ snapshots:
micromark@3.2.0:
dependencies:
'@types/debug': 4.1.12
- debug: 4.3.7
+ debug: 4.4.0
decode-named-character-reference: 1.0.2
micromark-core-commonmark: 1.1.0
micromark-factory-space: 1.1.0
@@ -19807,7 +19867,7 @@ snapshots:
socks-proxy-agent@8.0.4:
dependencies:
agent-base: 7.1.1
- debug: 4.3.7
+ debug: 4.4.0
socks: 2.8.3
transitivePeerDependencies:
- supports-color
@@ -19869,7 +19929,7 @@ snapshots:
spdy-transport@3.0.0:
dependencies:
- debug: 4.3.7
+ debug: 4.4.0
detect-node: 2.1.0
hpack.js: 2.1.6
obuf: 1.1.2
@@ -19880,7 +19940,7 @@ snapshots:
spdy@4.0.2:
dependencies:
- debug: 4.3.7
+ debug: 4.4.0
handle-thing: 2.0.1
http-deceiver: 1.2.7
select-hose: 2.0.0
@@ -20235,7 +20295,7 @@ snapshots:
tuf-js@3.0.1:
dependencies:
'@tufjs/models': 3.0.1
- debug: 4.3.7
+ debug: 4.4.0
make-fetch-happen: 14.0.3
transitivePeerDependencies:
- supports-color
@@ -20381,7 +20441,7 @@ snapshots:
estree-walker: 3.0.3
fast-glob: 3.3.2
local-pkg: 0.5.1
- magic-string: 0.30.12
+ magic-string: 0.30.17
mlly: 1.7.3
pathe: 1.1.2
pkg-types: 1.2.1
@@ -20485,7 +20545,7 @@ snapshots:
unwasm@0.3.9(webpack-sources@3.2.3):
dependencies:
knitwork: 1.1.0
- magic-string: 0.30.12
+ magic-string: 0.30.17
mlly: 1.7.3
pathe: 1.1.2
pkg-types: 1.2.1
@@ -20711,7 +20771,7 @@ snapshots:
vite-node@2.1.4(@types/node@22.10.1)(less@4.2.0)(sass@1.80.7)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0):
dependencies:
cac: 6.7.14
- debug: 4.3.7
+ debug: 4.4.0
pathe: 1.1.2
vite: 5.4.11(@types/node@22.10.1)(less@4.2.0)(sass@1.80.7)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0)
transitivePeerDependencies:
From a105341e533b7986dffe3698e79705791f8db812 Mon Sep 17 00:00:00 2001
From: James Garbutt <43081j@users.noreply.github.com>
Date: Fri, 10 Jan 2025 10:45:16 +0000
Subject: [PATCH 3/8] fix: correct language attribute
---
packages/svelte-form/src/Field.svelte | 2 +-
packages/svelte-form/tests/simple.svelte | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/packages/svelte-form/src/Field.svelte b/packages/svelte-form/src/Field.svelte
index fa4194300..852f2ba67 100644
--- a/packages/svelte-form/src/Field.svelte
+++ b/packages/svelte-form/src/Field.svelte
@@ -1,5 +1,5 @@
-
+