Skip to content

Commit 6d01353

Browse files
committed
chore: use es-toolkit for deepClone and isEqual utilities
1 parent cf715b3 commit 6d01353

10 files changed

+42
-52
lines changed

package-lock.json

+15-22
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/react/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
"react": "^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
6060
},
6161
"dependencies": {
62-
"@gilbarbara/deep-equal": "^0.3.1",
63-
"@inertiajs/core": "2.0.5"
62+
"@inertiajs/core": "2.0.5",
63+
"es-toolkit": "^1.33.0"
6464
}
6565
}

packages/react/src/useForm.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { FormDataConvertible, Method, Progress, router, VisitOptions } from '@inertiajs/core'
2-
import isDeepEqual from '@gilbarbara/deep-equal'
2+
import { isEqual } from 'es-toolkit'
33
import { useCallback, useEffect, useRef, useState } from 'react'
44
import useRemember from './useRemember'
55

@@ -270,7 +270,7 @@ export default function useForm<TForm extends FormDataType>(
270270
return {
271271
data,
272272
setData: setDataFunction,
273-
isDirty: !isDeepEqual(data, defaults),
273+
isDirty: !isEqual(data, defaults),
274274
errors,
275275
hasErrors,
276276
processing,

packages/react/tsconfig.json

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"moduleResolution": "Node",
1616
"resolveJsonModule": true,
1717
"allowSyntheticDefaultImports": true,
18+
"skipLibCheck": true,
1819

1920
"noImplicitThis": false,
2021
"noUnusedLocals": true,

packages/svelte/package.json

+2-3
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,9 @@
4343
"svelte": "^4.0.0 || ^5.0.0 || ^5.0.0-next.244"
4444
},
4545
"dependencies": {
46-
"@gilbarbara/deep-equal": "^0.3.1",
4746
"@inertiajs/core": "2.0.5",
48-
"html-escape": "^2.0.0",
49-
"klona": "^2.0.5"
47+
"es-toolkit": "^1.33.0",
48+
"html-escape": "^2.0.0"
5049
},
5150
"devDependencies": {
5251
"@sveltejs/adapter-auto": "^3.2.0",

packages/svelte/src/useForm.ts

+6-7
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@ import type {
1111
} from '@inertiajs/core'
1212
import { router } from '@inertiajs/core'
1313
import type { AxiosProgressEvent } from 'axios'
14-
import { klona } from 'klona/full'
15-
import isDeepEqual from '@gilbarbara/deep-equal'
14+
import { cloneDeep, isEqual } from 'es-toolkit'
1615
import { writable, type Writable } from 'svelte/store'
1716

1817
type FormDataType = Record<string, FormDataConvertible>
@@ -63,7 +62,7 @@ export default function useForm<TForm extends FormDataType>(
6362
const restored = rememberKey
6463
? (router.restore(rememberKey) as { data: TForm; errors: Record<keyof TForm, string> } | null)
6564
: null
66-
let defaults = klona(data)
65+
let defaults = cloneDeep(data)
6766
let cancelToken: { cancel: () => void } | null = null
6867
let recentlySuccessfulTimeoutId: ReturnType<typeof setTimeout> | null = null
6968
let transform = (data: TForm) => data as object
@@ -95,16 +94,16 @@ export default function useForm<TForm extends FormDataType>(
9594
defaults(fieldOrFields?: keyof TForm | Partial<TForm>, maybeValue?: FormDataConvertible) {
9695
defaults =
9796
typeof fieldOrFields === 'undefined'
98-
? klona(this.data())
97+
? cloneDeep(this.data())
9998
: Object.assign(
100-
klona(defaults),
99+
cloneDeep(defaults),
101100
typeof fieldOrFields === 'string' ? { [fieldOrFields]: maybeValue } : fieldOrFields,
102101
)
103102

104103
return this
105104
},
106105
reset(...fields) {
107-
const clonedData = klona(defaults)
106+
const clonedData = cloneDeep(defaults)
108107
if (fields.length === 0) {
109108
this.setStore(clonedData)
110109
} else {
@@ -244,7 +243,7 @@ export default function useForm<TForm extends FormDataType>(
244243
} as InertiaForm<TForm>)
245244

246245
store.subscribe((form) => {
247-
if (form.isDirty === isDeepEqual(form.data(), defaults)) {
246+
if (form.isDirty === isEqual(form.data(), defaults)) {
248247
form.setStore('isDirty', !form.isDirty)
249248
}
250249

packages/vue3/package.json

+1-2
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,7 @@
5858
"vue": "^3.0.0"
5959
},
6060
"dependencies": {
61-
"@gilbarbara/deep-equal": "^0.3.1",
6261
"@inertiajs/core": "2.0.5",
63-
"klona": "^2.0.5"
62+
"es-toolkit": "^1.33.0"
6463
}
6564
}

packages/vue3/src/remember.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { router } from '@inertiajs/core'
2-
import { klona } from 'klona/full'
2+
import { cloneDeep } from 'es-toolkit'
33
import { ComponentOptions } from 'vue'
44

55
const remember: ComponentOptions = {
@@ -52,7 +52,7 @@ const remember: ComponentOptions = {
5252
rememberable.reduce(
5353
(data, key) => ({
5454
...data,
55-
[key]: klona(hasCallbacks(key) ? this[key].__remember() : this[key]),
55+
[key]: cloneDeep(hasCallbacks(key) ? this[key].__remember() : this[key]),
5656
}),
5757
{},
5858
),

packages/vue3/src/useForm.ts

+9-10
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { FormDataConvertible, Method, Progress, router, VisitOptions } from '@inertiajs/core'
2-
import { klona } from 'klona/full'
3-
import isDeepEqual from '@gilbarbara/deep-equal'
2+
import { cloneDeep, isEqual } from 'es-toolkit'
43
import { reactive, watch } from 'vue'
54

65
type FormDataType = Record<string, FormDataConvertible>
@@ -48,13 +47,13 @@ export default function useForm<TForm extends FormDataType>(
4847
const restored = rememberKey
4948
? (router.restore(rememberKey) as { data: TForm; errors: Record<keyof TForm, string> })
5049
: null
51-
let defaults = typeof data === 'function' ? klona(data()) : klona(data)
50+
let defaults = typeof data === 'function' ? cloneDeep(data()) : cloneDeep(data)
5251
let cancelToken = null
5352
let recentlySuccessfulTimeoutId = null
5453
let transform = (data) => data
5554

5655
const form = reactive({
57-
...(restored ? restored.data : klona(defaults)),
56+
...(restored ? restored.data : cloneDeep(defaults)),
5857
isDirty: false,
5958
errors: restored ? restored.errors : {},
6059
hasErrors: false,
@@ -84,16 +83,16 @@ export default function useForm<TForm extends FormDataType>(
8483
} else {
8584
defaults = Object.assign(
8685
{},
87-
klona(defaults),
86+
cloneDeep(defaults),
8887
typeof fieldOrFields === 'string' ? { [fieldOrFields]: maybeValue } : fieldOrFields,
8988
)
9089
}
9190

9291
return this
9392
},
9493
reset(...fields) {
95-
const resolvedData = typeof data === 'function' ? klona(data()) : klona(defaults)
96-
const clonedData = klona(resolvedData)
94+
const resolvedData = typeof data === 'function' ? cloneDeep(data()) : cloneDeep(defaults)
95+
const clonedData = cloneDeep(resolvedData)
9796
if (fields.length === 0) {
9897
defaults = clonedData
9998
Object.assign(this, resolvedData)
@@ -171,7 +170,7 @@ export default function useForm<TForm extends FormDataType>(
171170
recentlySuccessfulTimeoutId = setTimeout(() => (this.recentlySuccessful = false), 2000)
172171

173172
const onSuccess = options.onSuccess ? await options.onSuccess(page) : null
174-
defaults = klona(this.data())
173+
defaults = cloneDeep(this.data())
175174
this.isDirty = false
176175
return onSuccess
177176
},
@@ -242,9 +241,9 @@ export default function useForm<TForm extends FormDataType>(
242241
watch(
243242
form,
244243
(newValue) => {
245-
form.isDirty = !isDeepEqual(form.data(), defaults)
244+
form.isDirty = !isEqual(form.data(), defaults)
246245
if (rememberKey) {
247-
router.remember(klona(newValue.__remember()), rememberKey)
246+
router.remember(cloneDeep(newValue.__remember()), rememberKey)
248247
}
249248
},
250249
{ immediate: true, deep: true },

packages/vue3/src/useRemember.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { router } from '@inertiajs/core'
2-
import { klona } from 'klona/full'
2+
import { cloneDeep } from 'es-toolkit'
33
import { isReactive, reactive, ref, Ref, watch } from 'vue'
44

55
export default function useRemember<T extends object>(
@@ -18,7 +18,7 @@ export default function useRemember<T extends object>(
1818
watch(
1919
remembered,
2020
(newValue) => {
21-
router.remember(klona(hasCallbacks ? data.__remember() : newValue), key)
21+
router.remember(cloneDeep(hasCallbacks ? data.__remember() : newValue), key)
2222
},
2323
{ immediate: true, deep: true },
2424
)

0 commit comments

Comments
 (0)