Skip to content

Commit 9bb39fc

Browse files
author
Harry Whorlow
committed
fix react-form build 2
1 parent bc0785b commit 9bb39fc

File tree

5 files changed

+161
-44
lines changed

5 files changed

+161
-44
lines changed

packages/form-core/src/FieldApi.ts

+96-32
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,17 @@ export type FieldValidateFn<
3030
| Validator<TParentData, unknown>
3131
| undefined = undefined,
3232
TData extends DeepValue<TParentData, TName> = DeepValue<TParentData, TName>,
33+
TParentMetaExtension extends object = never,
3334
> = (props: {
3435
value: TData
35-
fieldApi: FieldApi<TParentData, TName, TFieldValidator, TFormValidator, TData>
36+
fieldApi: FieldApi<
37+
TParentData,
38+
TName,
39+
TFieldValidator,
40+
TFormValidator,
41+
TData,
42+
TParentMetaExtension
43+
>
3644
}) => ValidationError
3745

3846
/**
@@ -48,10 +56,18 @@ export type FieldValidateOrFn<
4856
| Validator<TParentData, unknown>
4957
| undefined = undefined,
5058
TData extends DeepValue<TParentData, TName> = DeepValue<TParentData, TName>,
59+
TParentMetaExtension extends object = never,
5160
> =
5261
| (TFieldValidator extends Validator<TData, infer TFN> ? TFN : never)
5362
| (TFormValidator extends Validator<TParentData, infer FFN> ? FFN : never)
54-
| FieldValidateFn<TParentData, TName, TFieldValidator, TFormValidator, TData>
63+
| FieldValidateFn<
64+
TParentData,
65+
TName,
66+
TFieldValidator,
67+
TFormValidator,
68+
TData,
69+
TParentMetaExtension
70+
>
5571
| StandardSchemaV1<TData, unknown>
5672

5773
/**
@@ -67,9 +83,17 @@ export type FieldValidateAsyncFn<
6783
| Validator<TParentData, unknown>
6884
| undefined = undefined,
6985
TData extends DeepValue<TParentData, TName> = DeepValue<TParentData, TName>,
86+
TParentMetaExtension extends object = never,
7087
> = (options: {
7188
value: TData
72-
fieldApi: FieldApi<TParentData, TName, TFieldValidator, TFormValidator, TData>
89+
fieldApi: FieldApi<
90+
TParentData,
91+
TName,
92+
TFieldValidator,
93+
TFormValidator,
94+
TData,
95+
TParentMetaExtension
96+
>
7397
signal: AbortSignal
7498
}) => ValidationError | Promise<ValidationError>
7599

@@ -86,6 +110,7 @@ export type FieldAsyncValidateOrFn<
86110
| Validator<TParentData, unknown>
87111
| undefined = undefined,
88112
TData extends DeepValue<TParentData, TName> = DeepValue<TParentData, TName>,
113+
TParentMetaExtension extends object = never,
89114
> =
90115
| (TFieldValidator extends Validator<TData, infer TFN> ? TFN : never)
91116
| (TFormValidator extends Validator<TParentData, infer FFN> ? FFN : never)
@@ -94,7 +119,8 @@ export type FieldAsyncValidateOrFn<
94119
TName,
95120
TFieldValidator,
96121
TFormValidator,
97-
TData
122+
TData,
123+
TParentMetaExtension
98124
>
99125
| StandardSchemaV1<TData, unknown>
100126

@@ -111,9 +137,17 @@ export type FieldListenerFn<
111137
| Validator<TParentData, unknown>
112138
| undefined = undefined,
113139
TData extends DeepValue<TParentData, TName> = DeepValue<TParentData, TName>,
140+
TParentMetaExtension extends object = never,
114141
> = (props: {
115142
value: TData
116-
fieldApi: FieldApi<TParentData, TName, TFieldValidator, TFormValidator, TData>
143+
fieldApi: FieldApi<
144+
TParentData,
145+
TName,
146+
TFieldValidator,
147+
TFormValidator,
148+
TData,
149+
TParentMetaExtension
150+
>
117151
}) => void
118152

119153
export interface FieldValidators<
@@ -126,6 +160,7 @@ export interface FieldValidators<
126160
| Validator<TParentData, unknown>
127161
| undefined = undefined,
128162
TData extends DeepValue<TParentData, TName> = DeepValue<TParentData, TName>,
163+
TParentMetaExtension extends object = never,
129164
> {
130165
/**
131166
* An optional function that takes a param of `formApi` which is a generic type of `TData` and `TParentData`
@@ -161,7 +196,8 @@ export interface FieldValidators<
161196
TName,
162197
TFieldValidator,
163198
TFormValidator,
164-
TData
199+
TData,
200+
TParentMetaExtension
165201
>
166202
/**
167203
* An optional number to represent how long the `onChangeAsync` should wait before running
@@ -197,7 +233,8 @@ export interface FieldValidators<
197233
TName,
198234
TFieldValidator,
199235
TFormValidator,
200-
TData
236+
TData,
237+
TParentMetaExtension
201238
>
202239

203240
/**
@@ -234,7 +271,8 @@ export interface FieldValidators<
234271
TName,
235272
TFieldValidator,
236273
TFormValidator,
237-
TData
274+
TData,
275+
TParentMetaExtension
238276
>
239277
}
240278

@@ -248,34 +286,39 @@ export interface FieldListeners<
248286
| Validator<TParentData, unknown>
249287
| undefined = undefined,
250288
TData extends DeepValue<TParentData, TName> = DeepValue<TParentData, TName>,
289+
TParentMetaExtension extends object = never,
251290
> {
252291
onChange?: FieldListenerFn<
253292
TParentData,
254293
TName,
255294
TFieldValidator,
256295
TFormValidator,
257-
TData
296+
TData,
297+
TParentMetaExtension
258298
>
259299
onBlur?: FieldListenerFn<
260300
TParentData,
261301
TName,
262302
TFieldValidator,
263303
TFormValidator,
264-
TData
304+
TData,
305+
TParentMetaExtension
265306
>
266307
onMount?: FieldListenerFn<
267308
TParentData,
268309
TName,
269310
TFieldValidator,
270311
TFormValidator,
271-
TData
312+
TData,
313+
TParentMetaExtension
272314
>
273315
onSubmit?: FieldListenerFn<
274316
TParentData,
275317
TName,
276318
TFieldValidator,
277319
TFormValidator,
278-
TData
320+
TData,
321+
TParentMetaExtension
279322
>
280323
}
281324

@@ -292,6 +335,7 @@ export interface FieldOptions<
292335
| Validator<TParentData, unknown>
293336
| undefined = undefined,
294337
TData extends DeepValue<TParentData, TName> = DeepValue<TParentData, TName>,
338+
TParentMetaExtension extends object = never,
295339
> {
296340
/**
297341
* The field name. The type will be `DeepKeys<TParentData>` to ensure your name is a deep key of the parent dataset.
@@ -321,7 +365,8 @@ export interface FieldOptions<
321365
TName,
322366
TFieldValidator,
323367
TFormValidator,
324-
TData
368+
TData,
369+
TParentMetaExtension
325370
>
326371
/**
327372
* An optional object with default metadata for the field.
@@ -335,7 +380,8 @@ export interface FieldOptions<
335380
TName,
336381
TFieldValidator,
337382
TFormValidator,
338-
TData
383+
TData,
384+
TParentMetaExtension
339385
>
340386
}
341387

@@ -352,14 +398,16 @@ export interface FieldApiOptions<
352398
| Validator<TParentData, unknown>
353399
| undefined = undefined,
354400
TData extends DeepValue<TParentData, TName> = DeepValue<TParentData, TName>,
401+
TParentMetaExtension extends object = never,
355402
> extends FieldOptions<
356403
TParentData,
357404
TName,
358405
TFieldValidator,
359406
TFormValidator,
360-
TData
407+
TData,
408+
TParentMetaExtension
361409
> {
362-
form: FormApi<TParentData, TFormValidator>
410+
form: FormApi<TParentData, TFormValidator, TParentMetaExtension>
363411
}
364412

365413
export type FieldMetaBase = {
@@ -434,6 +482,7 @@ export class FieldApi<
434482
| Validator<TParentData, unknown>
435483
| undefined = undefined,
436484
TData extends DeepValue<TParentData, TName> = DeepValue<TParentData, TName>,
485+
TParentMetaExtension extends object = never,
437486
> {
438487
/**
439488
* A reference to the form API instance.
@@ -443,7 +492,8 @@ export class FieldApi<
443492
TName,
444493
TFieldValidator,
445494
TFormValidator,
446-
TData
495+
TData,
496+
TParentMetaExtension
447497
>['form']
448498
/**
449499
* The field name.
@@ -457,7 +507,8 @@ export class FieldApi<
457507
TName,
458508
TFieldValidator,
459509
TFormValidator,
460-
TData
510+
TData,
511+
TParentMetaExtension
461512
> = {} as any
462513
/**
463514
* The field state store.
@@ -480,7 +531,8 @@ export class FieldApi<
480531
TName,
481532
TFieldValidator,
482533
TFormValidator,
483-
TData
534+
TData,
535+
TParentMetaExtension
484536
>,
485537
) {
486538
this.form = opts.form as never
@@ -523,14 +575,14 @@ export class FieldApi<
523575
runValidator<
524576
TValue extends {
525577
value: TData
526-
fieldApi: FieldApi<any, any, any, any>
578+
fieldApi: FieldApi<any, any, any, any, any, any>
527579
validationSource: ValidationSource
528580
},
529581
TType extends 'validate' | 'validateAsync',
530582
>(props: {
531583
validate: TType extends 'validate'
532-
? FieldValidateOrFn<any, any, any, any>
533-
: FieldAsyncValidateOrFn<any, any, any, any>
584+
? FieldValidateOrFn<any, any, any, any, any, any>
585+
: FieldAsyncValidateOrFn<any, any, any, any, any, any>
534586
value: TValue
535587
type: TType
536588
// When `api` is 'field', the return type cannot be `FormValidationError`
@@ -558,7 +610,9 @@ export class FieldApi<
558610
) as never
559611
}
560612

561-
return (props.validate as FieldValidateFn<any, any>)(props.value) as never
613+
return (props.validate as FieldValidateFn<any, any, any, any, any, any>)(
614+
props.value,
615+
) as never
562616
}
563617

564618
/**
@@ -578,7 +632,7 @@ export class FieldApi<
578632
validate: onMount,
579633
value: {
580634
value: this.state.value,
581-
fieldApi: this,
635+
fieldApi: this as FieldApi<any, any, any, any, any, any>,
582636
validationSource: 'field',
583637
},
584638
type: 'validate',
@@ -594,7 +648,7 @@ export class FieldApi<
594648

595649
this.options.listeners?.onMount?.({
596650
value: this.state.value,
597-
fieldApi: this,
651+
fieldApi: this as FieldApi<any, any, any, any, any, any>,
598652
})
599653

600654
return cleanup
@@ -609,7 +663,8 @@ export class FieldApi<
609663
TName,
610664
TFieldValidator,
611665
TFormValidator,
612-
TData
666+
TData,
667+
TParentMetaExtension
613668
>,
614669
) => {
615670
// Default Value
@@ -762,15 +817,17 @@ export class FieldApi<
762817
})
763818
return acc.concat(fieldValidates as never)
764819
},
765-
[] as Array<SyncValidator<any> & { field: FieldApi<any, any, any, any> }>,
820+
[] as Array<
821+
SyncValidator<any> & { field: FieldApi<any, any, any, any, any, any> }
822+
>,
766823
)
767824

768825
// Needs type cast as eslint errantly believes this is always falsy
769826
let hasErrored = false as boolean
770827

771828
batch(() => {
772829
const validateFieldFn = (
773-
field: FieldApi<any, any, any, any>,
830+
field: FieldApi<any, any, any, any, any, any>,
774831
validateObj: SyncValidator<any>,
775832
) => {
776833
const errorMapKey = getErrorMapKey(validateObj.cause)
@@ -813,7 +870,10 @@ export class FieldApi<
813870
}
814871

815872
for (const validateObj of validates) {
816-
validateFieldFn(this, validateObj)
873+
validateFieldFn(
874+
this as FieldApi<any, any, any, any, any, any>,
875+
validateObj,
876+
)
817877
}
818878
for (const fieldValitateObj of linkedFieldValidates) {
819879
if (!fieldValitateObj.validate) continue
@@ -868,7 +928,7 @@ export class FieldApi<
868928
return acc.concat(fieldValidates as never)
869929
},
870930
[] as Array<
871-
AsyncValidator<any> & { field: FieldApi<any, any, any, any> }
931+
AsyncValidator<any> & { field: FieldApi<any, any, any, any, any, any> }
872932
>,
873933
)
874934

@@ -888,7 +948,7 @@ export class FieldApi<
888948
const linkedPromises: Promise<ValidationError | undefined>[] = []
889949

890950
const validateFieldAsyncFn = (
891-
field: FieldApi<any, any, any, any>,
951+
field: FieldApi<any, any, any, any, any, any>,
892952
validateObj: AsyncValidator<any>,
893953
promises: Promise<ValidationError | undefined>[],
894954
) => {
@@ -958,7 +1018,11 @@ export class FieldApi<
9581018
// TODO: Dedupe this logic to reduce bundle size
9591019
for (const validateObj of validates) {
9601020
if (!validateObj.validate) continue
961-
validateFieldAsyncFn(this, validateObj, validatesPromises)
1021+
validateFieldAsyncFn(
1022+
this as FieldApi<any, any, any, any, any, any>,
1023+
validateObj,
1024+
validatesPromises,
1025+
)
9621026
}
9631027
for (const fieldValitateObj of linkedFieldValidates) {
9641028
if (!fieldValitateObj.validate) continue

0 commit comments

Comments
 (0)