cogsbox-state 0.5.478 → 0.5.479

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/plugins.ts CHANGED
@@ -259,10 +259,11 @@ export type CogsPlugin<
259
259
  TPluginMetaData,
260
260
  TFieldMetaData,
261
261
  TChainMethods extends ChainMethodDefinitions = {},
262
+ TInitialState extends Record<string, unknown> = {},
262
263
  > = {
263
264
  name: TName;
264
265
 
265
- initialState?: () => Record<string, unknown>;
266
+ initialState?: () => TInitialState;
266
267
 
267
268
  useHook?: (
268
269
  params: UseHookParams<TOptions, TPluginMetaData, TFieldMetaData, any>
@@ -541,151 +542,407 @@ const createMethodsBuilderParams = (): MethodsBuilderParams => {
541
542
  field: createMethodDefinition('any'),
542
543
  };
543
544
  };
545
+ // --- EXTRACTED BUILDER TYPES (Solves TS7056 Serialization Error) ---
546
+
547
+ export type PluginTransformFn<
548
+ TOptions,
549
+ THookReturn,
550
+ TPluginMetaData,
551
+ TFieldMetaData,
552
+ > = (
553
+ params: TransformStateParams<
554
+ TOptions,
555
+ THookReturn,
556
+ TPluginMetaData,
557
+ TFieldMetaData,
558
+ any
559
+ >
560
+ ) => void;
561
+
562
+ export type PluginUpdateFn<
563
+ TOptions,
564
+ THookReturn,
565
+ TPluginMetaData,
566
+ TFieldMetaData,
567
+ > = (
568
+ params: OnUpdateParams<
569
+ TOptions,
570
+ THookReturn,
571
+ TPluginMetaData,
572
+ TFieldMetaData,
573
+ any
574
+ >
575
+ ) => void;
576
+
577
+ export type PluginFormUpdateFn<
578
+ TOptions,
579
+ THookReturn,
580
+ TPluginMetaData,
581
+ TFieldMetaData,
582
+ > = (
583
+ params: OnFormUpdateParams<
584
+ TOptions,
585
+ THookReturn,
586
+ TPluginMetaData,
587
+ TFieldMetaData,
588
+ any
589
+ >
590
+ ) => void;
591
+
592
+ export type PluginFormWrapperFn<
593
+ TOptions,
594
+ THookReturn,
595
+ TPluginMetaData,
596
+ TFieldMetaData,
597
+ > = (
598
+ params: FormWrapperParams<
599
+ TOptions,
600
+ THookReturn,
601
+ TPluginMetaData,
602
+ TFieldMetaData,
603
+ any
604
+ >
605
+ ) => React.ReactNode;
606
+
607
+ export type CogsPluginBuilder<
608
+ TName extends string,
609
+ TOptions,
610
+ TPluginMetaData,
611
+ TFieldMetaData,
612
+ THookReturn,
613
+ TChainMethods extends ChainMethodDefinitions,
614
+ HasTransform extends boolean,
615
+ HasUpdate extends boolean,
616
+ HasFormUpdate extends boolean,
617
+ HasMethods extends boolean,
618
+ HasWrapper extends boolean,
619
+ HasInitialState extends boolean,
620
+ TInitialState extends Record<string, unknown> = {},
621
+ > = Prettify<
622
+ CogsPlugin<
623
+ TName,
624
+ TOptions,
625
+ THookReturn,
626
+ TPluginMetaData,
627
+ TFieldMetaData,
628
+ TChainMethods,
629
+ TInitialState
630
+ >
631
+ > &
632
+ (HasTransform extends true
633
+ ? {}
634
+ : {
635
+ transformState(
636
+ fn: PluginTransformFn<
637
+ TOptions,
638
+ THookReturn,
639
+ TPluginMetaData,
640
+ TFieldMetaData
641
+ >
642
+ ): CogsPluginBuilder<
643
+ TName,
644
+ TOptions,
645
+ TPluginMetaData,
646
+ TFieldMetaData,
647
+ THookReturn,
648
+ TChainMethods,
649
+ true,
650
+ HasUpdate,
651
+ HasFormUpdate,
652
+ HasMethods,
653
+ HasWrapper,
654
+ HasInitialState,
655
+ TInitialState
656
+ >;
657
+ }) &
658
+ (HasUpdate extends true
659
+ ? {}
660
+ : {
661
+ onUpdate(
662
+ fn: PluginUpdateFn<
663
+ TOptions,
664
+ THookReturn,
665
+ TPluginMetaData,
666
+ TFieldMetaData
667
+ >
668
+ ): CogsPluginBuilder<
669
+ TName,
670
+ TOptions,
671
+ TPluginMetaData,
672
+ TFieldMetaData,
673
+ THookReturn,
674
+ TChainMethods,
675
+ HasTransform,
676
+ true,
677
+ HasFormUpdate,
678
+ HasMethods,
679
+ HasWrapper,
680
+ HasInitialState,
681
+ TInitialState
682
+ >;
683
+ }) &
684
+ (HasFormUpdate extends true
685
+ ? {}
686
+ : {
687
+ onFormUpdate(
688
+ fn: PluginFormUpdateFn<
689
+ TOptions,
690
+ THookReturn,
691
+ TPluginMetaData,
692
+ TFieldMetaData
693
+ >
694
+ ): CogsPluginBuilder<
695
+ TName,
696
+ TOptions,
697
+ TPluginMetaData,
698
+ TFieldMetaData,
699
+ THookReturn,
700
+ TChainMethods,
701
+ HasTransform,
702
+ HasUpdate,
703
+ true,
704
+ HasMethods,
705
+ HasWrapper,
706
+ HasInitialState,
707
+ TInitialState
708
+ >;
709
+ }) &
710
+ (HasMethods extends true
711
+ ? {}
712
+ : {
713
+ methods<TNextMethods extends ChainMethodDefinitions>(
714
+ fn: (helpers: MethodsBuilderParams) => TNextMethods
715
+ ): CogsPluginBuilder<
716
+ TName,
717
+ TOptions,
718
+ TPluginMetaData,
719
+ TFieldMetaData,
720
+ THookReturn,
721
+ TNextMethods,
722
+ HasTransform,
723
+ HasUpdate,
724
+ HasFormUpdate,
725
+ true,
726
+ HasWrapper,
727
+ HasInitialState,
728
+ TInitialState
729
+ >;
730
+ }) &
731
+ (HasWrapper extends true
732
+ ? {}
733
+ : {
734
+ formWrapper(
735
+ fn: PluginFormWrapperFn<
736
+ TOptions,
737
+ THookReturn,
738
+ TPluginMetaData,
739
+ TFieldMetaData
740
+ >
741
+ ): CogsPluginBuilder<
742
+ TName,
743
+ TOptions,
744
+ TPluginMetaData,
745
+ TFieldMetaData,
746
+ THookReturn,
747
+ TChainMethods,
748
+ HasTransform,
749
+ HasUpdate,
750
+ HasFormUpdate,
751
+ HasMethods,
752
+ true,
753
+ HasInitialState,
754
+ TInitialState
755
+ >;
756
+ }) &
757
+ (HasInitialState extends true
758
+ ? {}
759
+ : {
760
+ initialState<TNewState extends Record<string, unknown>>(
761
+ fn: () => TNewState
762
+ ): CogsPluginBuilder<
763
+ TName,
764
+ TOptions,
765
+ TPluginMetaData,
766
+ TFieldMetaData,
767
+ THookReturn,
768
+ TChainMethods,
769
+ HasTransform,
770
+ HasUpdate,
771
+ HasFormUpdate,
772
+ HasMethods,
773
+ HasWrapper,
774
+ true,
775
+ TNewState
776
+ >;
777
+ });
778
+
779
+ export type CreatePluginStart<
780
+ TName extends string,
781
+ TOptions,
782
+ TPluginMetaData,
783
+ TFieldMetaData,
784
+ > = CogsPluginBuilder<
785
+ TName,
786
+ TOptions,
787
+ TPluginMetaData,
788
+ TFieldMetaData,
789
+ never,
790
+ {},
791
+ false,
792
+ false,
793
+ false,
794
+ false,
795
+ false,
796
+ false,
797
+ {}
798
+ > & {
799
+ useHook<THookReturn>(
800
+ hookFn: (
801
+ params: UseHookParams<TOptions, TPluginMetaData, TFieldMetaData, any>
802
+ ) => THookReturn
803
+ ): CogsPluginBuilder<
804
+ TName,
805
+ TOptions,
806
+ TPluginMetaData,
807
+ TFieldMetaData,
808
+ THookReturn,
809
+ {},
810
+ false,
811
+ false,
812
+ false,
813
+ false,
814
+ false,
815
+ false,
816
+ {}
817
+ >;
818
+ initialState<TNewState extends Record<string, unknown>>(
819
+ fn: () => TNewState
820
+ ): CogsPluginBuilder<
821
+ TName,
822
+ TOptions,
823
+ TPluginMetaData,
824
+ TFieldMetaData,
825
+ never,
826
+ {},
827
+ false,
828
+ false,
829
+ false,
830
+ false,
831
+ false,
832
+ true,
833
+ TNewState
834
+ >;
835
+ };
836
+
837
+ // --- UPDATED EXPLICIT CONTEXT ---
544
838
 
545
839
  export function createPluginContext<
546
840
  O extends z.ZodTypeAny | undefined = undefined,
547
841
  PM extends z.ZodTypeAny | undefined = undefined,
548
842
  FM extends z.ZodTypeAny | undefined = undefined,
549
- >(schemas?: { options?: O; pluginMetaData?: PM; fieldMetaData?: FM }) {
550
- // Crucial: compute from the generic params, not from an object-indexed optional type
843
+ >(schemas?: {
844
+ options?: O;
845
+ pluginMetaData?: PM;
846
+ fieldMetaData?: FM;
847
+ }): {
848
+ // EXPLICIT RETURN ANNOTATION STOPS TS FROM SERIALIZING
849
+ createPlugin: <TName extends string>(
850
+ name: TName
851
+ ) => CreatePluginStart<
852
+ TName,
853
+ O extends z.ZodTypeAny ? OutputOf<O> : undefined,
854
+ PM extends z.ZodTypeAny ? OutputOf<PM> : unknown,
855
+ FM extends z.ZodTypeAny ? OutputOf<FM> : unknown
856
+ >;
857
+ } {
551
858
  type Options = O extends z.ZodTypeAny ? OutputOf<O> : undefined;
552
859
  type PluginMetaData = PM extends z.ZodTypeAny ? OutputOf<PM> : unknown;
553
860
  type FieldMetaData = FM extends z.ZodTypeAny ? OutputOf<FM> : unknown;
554
861
 
555
862
  function createPlugin<TName extends string>(name: TName) {
556
- type TransformFn<THookReturn> = (
557
- params: TransformStateParams<
863
+ type Builder<
864
+ THookReturn,
865
+ TChainMethods extends ChainMethodDefinitions,
866
+ HT extends boolean,
867
+ HU extends boolean,
868
+ HFU extends boolean,
869
+ HM extends boolean,
870
+ HW extends boolean,
871
+ HI extends boolean,
872
+ TInitialState extends Record<string, unknown> = {},
873
+ > = CogsPluginBuilder<
874
+ TName,
875
+ Options,
876
+ PluginMetaData,
877
+ FieldMetaData,
878
+ THookReturn,
879
+ TChainMethods,
880
+ HT,
881
+ HU,
882
+ HFU,
883
+ HM,
884
+ HW,
885
+ HI,
886
+ TInitialState
887
+ >;
888
+
889
+ const createPluginObject = <
890
+ THookReturn = never,
891
+ TChainMethods extends ChainMethodDefinitions = {},
892
+ TInitialState extends Record<string, unknown> = {},
893
+ >(
894
+ hookFn?: (
895
+ params: UseHookParams<Options, PluginMetaData, FieldMetaData, any>
896
+ ) => THookReturn,
897
+ transformFn?: PluginTransformFn<
558
898
  Options,
559
899
  THookReturn,
560
900
  PluginMetaData,
561
901
  FieldMetaData
562
- >
563
- ) => void;
564
-
565
- type UpdateFn<THookReturn> = (
566
- params: OnUpdateParams<
902
+ >,
903
+ updateHandler?: PluginUpdateFn<
567
904
  Options,
568
905
  THookReturn,
569
906
  PluginMetaData,
570
907
  FieldMetaData
571
- >
572
- ) => void;
573
-
574
- type FormUpdateFn<THookReturn> = (
575
- params: OnFormUpdateParams<
908
+ >,
909
+ formUpdateHandler?: PluginFormUpdateFn<
910
+ Options,
911
+ THookReturn,
912
+ PluginMetaData,
913
+ FieldMetaData
914
+ >,
915
+ chainMethods?: TChainMethods,
916
+ initialStateFn?: () => TInitialState,
917
+ wrapperFn?: PluginFormWrapperFn<
576
918
  Options,
577
919
  THookReturn,
578
920
  PluginMetaData,
579
921
  FieldMetaData
580
922
  >
581
- ) => void;
582
-
583
- type Plugin<
584
- THookReturn,
585
- TChainMethods extends ChainMethodDefinitions = {},
586
- > = Prettify<
923
+ ): Prettify<
587
924
  CogsPlugin<
588
925
  TName,
589
926
  Options,
590
927
  THookReturn,
591
928
  PluginMetaData,
592
929
  FieldMetaData,
593
- TChainMethods
930
+ TChainMethods,
931
+ TInitialState
594
932
  >
595
- >;
596
-
597
- const createPluginObject = <
598
- THookReturn = never,
599
- TChainMethods extends ChainMethodDefinitions = {},
600
- >(
601
- hookFn?: (
602
- params: UseHookParams<Options, PluginMetaData, FieldMetaData>
603
- ) => THookReturn,
604
- transformFn?: TransformFn<THookReturn>,
605
- updateHandler?: UpdateFn<THookReturn>,
606
- formUpdateHandler?: FormUpdateFn<THookReturn>,
607
- chainMethods?: TChainMethods
608
- ): Plugin<THookReturn, TChainMethods> => {
933
+ > => {
609
934
  return {
610
935
  name,
936
+ initialState: initialStateFn,
611
937
  useHook: hookFn as any,
612
938
  transformState: transformFn as any,
613
939
  onUpdate: updateHandler as any,
614
940
  onFormUpdate: formUpdateHandler as any,
941
+ formWrapper: wrapperFn as any,
615
942
  chainMethods,
616
943
  };
617
944
  };
618
945
 
619
- type BuildRet<
620
- THookReturn,
621
- TChainMethods extends ChainMethodDefinitions,
622
- HasTransform extends boolean,
623
- HasUpdate extends boolean,
624
- HasFormUpdate extends boolean,
625
- HasMethods extends boolean,
626
- HasWrapper extends boolean,
627
- > = Plugin<THookReturn, TChainMethods> &
628
- (HasTransform extends true
629
- ? {}
630
- : {
631
- transformState(
632
- fn: TransformFn<THookReturn>
633
- ): BuildRet<
634
- THookReturn,
635
- TChainMethods,
636
- true,
637
- HasUpdate,
638
- HasFormUpdate,
639
- HasMethods,
640
- HasWrapper
641
- >;
642
- }) &
643
- (HasUpdate extends true
644
- ? {}
645
- : {
646
- onUpdate(
647
- fn: UpdateFn<THookReturn>
648
- ): BuildRet<
649
- THookReturn,
650
- TChainMethods,
651
- HasTransform,
652
- true,
653
- HasFormUpdate,
654
- HasMethods,
655
- HasWrapper
656
- >;
657
- }) &
658
- (HasFormUpdate extends true
659
- ? {}
660
- : {
661
- onFormUpdate(
662
- fn: FormUpdateFn<THookReturn>
663
- ): BuildRet<
664
- THookReturn,
665
- TChainMethods,
666
- HasTransform,
667
- HasUpdate,
668
- true,
669
- HasMethods,
670
- HasWrapper
671
- >;
672
- }) &
673
- (HasMethods extends true
674
- ? {}
675
- : {
676
- methods<TNextMethods extends ChainMethodDefinitions>(
677
- fn: (helpers: MethodsBuilderParams) => TNextMethods
678
- ): BuildRet<
679
- THookReturn,
680
- TNextMethods,
681
- HasTransform,
682
- HasUpdate,
683
- HasFormUpdate,
684
- true,
685
- HasWrapper
686
- >;
687
- });
688
-
689
946
  function createBuilder<
690
947
  THookReturn = never,
691
948
  TChainMethods extends ChainMethodDefinitions = {},
@@ -694,45 +951,82 @@ export function createPluginContext<
694
951
  HasFormUpdate extends boolean = false,
695
952
  HasMethods extends boolean = false,
696
953
  HasWrapper extends boolean = false,
954
+ HasInitialState extends boolean = false,
955
+ TInitialState extends Record<string, unknown> = {},
697
956
  >(
698
957
  hookFn?: (
699
- params: UseHookParams<Options, PluginMetaData, FieldMetaData>
958
+ params: UseHookParams<Options, PluginMetaData, FieldMetaData, any>
700
959
  ) => THookReturn,
701
- transformFn?: TransformFn<THookReturn>,
702
- updateHandler?: UpdateFn<THookReturn>,
703
- formUpdateHandler?: FormUpdateFn<THookReturn>,
704
- chainMethods?: TChainMethods
705
- ): BuildRet<
960
+ transformFn?: PluginTransformFn<
961
+ Options,
962
+ THookReturn,
963
+ PluginMetaData,
964
+ FieldMetaData
965
+ >,
966
+ updateHandler?: PluginUpdateFn<
967
+ Options,
968
+ THookReturn,
969
+ PluginMetaData,
970
+ FieldMetaData
971
+ >,
972
+ formUpdateHandler?: PluginFormUpdateFn<
973
+ Options,
974
+ THookReturn,
975
+ PluginMetaData,
976
+ FieldMetaData
977
+ >,
978
+ chainMethods?: TChainMethods,
979
+ initialStateFn?: () => TInitialState,
980
+ wrapperFn?: PluginFormWrapperFn<
981
+ Options,
982
+ THookReturn,
983
+ PluginMetaData,
984
+ FieldMetaData
985
+ >
986
+ ): Builder<
706
987
  THookReturn,
707
988
  TChainMethods,
708
989
  HasTransform,
709
990
  HasUpdate,
710
991
  HasFormUpdate,
711
992
  HasMethods,
712
- HasWrapper
993
+ HasWrapper,
994
+ HasInitialState,
995
+ TInitialState
713
996
  > {
714
- const plugin = createPluginObject<THookReturn, TChainMethods>(
997
+ const plugin = createPluginObject<THookReturn, TChainMethods, TInitialState>(
715
998
  hookFn,
716
999
  transformFn,
717
1000
  updateHandler,
718
1001
  formUpdateHandler,
719
- chainMethods
1002
+ chainMethods,
1003
+ initialStateFn,
1004
+ wrapperFn
720
1005
  );
721
1006
 
722
1007
  const methods = {} as Partial<
723
- BuildRet<
1008
+ Builder<
724
1009
  THookReturn,
725
1010
  TChainMethods,
726
1011
  HasTransform,
727
1012
  HasUpdate,
728
1013
  HasFormUpdate,
729
1014
  HasMethods,
730
- HasWrapper
1015
+ HasWrapper,
1016
+ HasInitialState,
1017
+ TInitialState
731
1018
  >
732
1019
  >;
733
1020
 
734
1021
  if (!transformFn) {
735
- (methods as any).transformState = (fn: TransformFn<THookReturn>) =>
1022
+ (methods as any).transformState = (
1023
+ fn: PluginTransformFn<
1024
+ Options,
1025
+ THookReturn,
1026
+ PluginMetaData,
1027
+ FieldMetaData
1028
+ >
1029
+ ) =>
736
1030
  createBuilder<
737
1031
  THookReturn,
738
1032
  TChainMethods,
@@ -740,11 +1034,28 @@ export function createPluginContext<
740
1034
  HasUpdate,
741
1035
  HasFormUpdate,
742
1036
  HasMethods,
743
- HasWrapper
744
- >(hookFn, fn, updateHandler, formUpdateHandler, chainMethods);
1037
+ HasWrapper,
1038
+ HasInitialState,
1039
+ TInitialState
1040
+ >(
1041
+ hookFn,
1042
+ fn,
1043
+ updateHandler,
1044
+ formUpdateHandler,
1045
+ chainMethods,
1046
+ initialStateFn,
1047
+ wrapperFn
1048
+ );
745
1049
  }
746
1050
  if (!updateHandler) {
747
- (methods as any).onUpdate = (fn: UpdateFn<THookReturn>) =>
1051
+ (methods as any).onUpdate = (
1052
+ fn: PluginUpdateFn<
1053
+ Options,
1054
+ THookReturn,
1055
+ PluginMetaData,
1056
+ FieldMetaData
1057
+ >
1058
+ ) =>
748
1059
  createBuilder<
749
1060
  THookReturn,
750
1061
  TChainMethods,
@@ -752,11 +1063,28 @@ export function createPluginContext<
752
1063
  true,
753
1064
  HasFormUpdate,
754
1065
  HasMethods,
755
- HasWrapper
756
- >(hookFn, transformFn, fn, formUpdateHandler, chainMethods);
1066
+ HasWrapper,
1067
+ HasInitialState,
1068
+ TInitialState
1069
+ >(
1070
+ hookFn,
1071
+ transformFn,
1072
+ fn,
1073
+ formUpdateHandler,
1074
+ chainMethods,
1075
+ initialStateFn,
1076
+ wrapperFn
1077
+ );
757
1078
  }
758
1079
  if (!formUpdateHandler) {
759
- (methods as any).onFormUpdate = (fn: FormUpdateFn<THookReturn>) =>
1080
+ (methods as any).onFormUpdate = (
1081
+ fn: PluginFormUpdateFn<
1082
+ Options,
1083
+ THookReturn,
1084
+ PluginMetaData,
1085
+ FieldMetaData
1086
+ >
1087
+ ) =>
760
1088
  createBuilder<
761
1089
  THookReturn,
762
1090
  TChainMethods,
@@ -764,8 +1092,18 @@ export function createPluginContext<
764
1092
  HasUpdate,
765
1093
  true,
766
1094
  HasMethods,
767
- HasWrapper
768
- >(hookFn, transformFn, updateHandler, fn, chainMethods);
1095
+ HasWrapper,
1096
+ HasInitialState,
1097
+ TInitialState
1098
+ >(
1099
+ hookFn,
1100
+ transformFn,
1101
+ updateHandler,
1102
+ fn,
1103
+ chainMethods,
1104
+ initialStateFn,
1105
+ wrapperFn
1106
+ );
769
1107
  }
770
1108
  if (!chainMethods) {
771
1109
  (methods as any).methods = <
@@ -780,33 +1118,90 @@ export function createPluginContext<
780
1118
  HasUpdate,
781
1119
  HasFormUpdate,
782
1120
  true,
783
- HasWrapper
1121
+ HasWrapper,
1122
+ HasInitialState,
1123
+ TInitialState
1124
+ >(
1125
+ hookFn,
1126
+ transformFn,
1127
+ updateHandler,
1128
+ formUpdateHandler,
1129
+ fn(createMethodsBuilderParams()),
1130
+ initialStateFn,
1131
+ wrapperFn
1132
+ );
1133
+ }
1134
+ if (!initialStateFn) {
1135
+ (methods as any).initialState = <TNewState extends Record<string, unknown>>(fn: () => TNewState) =>
1136
+ createBuilder<
1137
+ THookReturn,
1138
+ TChainMethods,
1139
+ HasTransform,
1140
+ HasUpdate,
1141
+ HasFormUpdate,
1142
+ HasMethods,
1143
+ HasWrapper,
1144
+ true,
1145
+ TNewState
784
1146
  >(
785
1147
  hookFn,
786
1148
  transformFn,
787
1149
  updateHandler,
788
1150
  formUpdateHandler,
789
- fn(createMethodsBuilderParams())
1151
+ chainMethods,
1152
+ fn,
1153
+ wrapperFn
1154
+ );
1155
+ }
1156
+ if (!wrapperFn) {
1157
+ (methods as any).formWrapper = (
1158
+ fn: PluginFormWrapperFn<
1159
+ Options,
1160
+ THookReturn,
1161
+ PluginMetaData,
1162
+ FieldMetaData
1163
+ >
1164
+ ) =>
1165
+ createBuilder<
1166
+ THookReturn,
1167
+ TChainMethods,
1168
+ HasTransform,
1169
+ HasUpdate,
1170
+ HasFormUpdate,
1171
+ HasMethods,
1172
+ true,
1173
+ HasInitialState,
1174
+ TInitialState
1175
+ >(
1176
+ hookFn,
1177
+ transformFn,
1178
+ updateHandler,
1179
+ formUpdateHandler,
1180
+ chainMethods,
1181
+ initialStateFn,
1182
+ fn
790
1183
  );
791
1184
  }
792
1185
 
793
- return Object.assign(plugin, methods) as BuildRet<
1186
+ return Object.assign(plugin, methods) as Builder<
794
1187
  THookReturn,
795
1188
  TChainMethods,
796
1189
  HasTransform,
797
1190
  HasUpdate,
798
1191
  HasFormUpdate,
799
1192
  HasMethods,
800
- HasWrapper
1193
+ HasWrapper,
1194
+ HasInitialState,
1195
+ TInitialState
801
1196
  >;
802
1197
  }
803
1198
 
804
1199
  const start = Object.assign(
805
- createBuilder<never, {}, false, false, false, false, false>(),
1200
+ createBuilder<never, {}, false, false, false, false, false, false, {}>(),
806
1201
  {
807
1202
  useHook<THookReturn>(
808
1203
  hookFn: (
809
- params: UseHookParams<Options, PluginMetaData, FieldMetaData>
1204
+ params: UseHookParams<Options, PluginMetaData, FieldMetaData, any>
810
1205
  ) => THookReturn
811
1206
  ) {
812
1207
  return createBuilder<
@@ -816,17 +1211,26 @@ export function createPluginContext<
816
1211
  false,
817
1212
  false,
818
1213
  false,
819
- false
1214
+ false,
1215
+ false,
1216
+ {}
820
1217
  >(hookFn);
821
1218
  },
1219
+ initialState<TNewState extends Record<string, unknown>>(fn: () => TNewState) {
1220
+ return createBuilder<
1221
+ never,
1222
+ {},
1223
+ false,
1224
+ false,
1225
+ false,
1226
+ false,
1227
+ false,
1228
+ true,
1229
+ TNewState
1230
+ >(undefined, undefined, undefined, undefined, undefined, fn);
1231
+ },
822
1232
  }
823
- ) as BuildRet<never, {}, false, false, false, false, false> & {
824
- useHook<THookReturn>(
825
- hookFn: (
826
- params: UseHookParams<Options, PluginMetaData, FieldMetaData>
827
- ) => THookReturn
828
- ): BuildRet<THookReturn, {}, false, false, false, false, false>;
829
- };
1233
+ ) as CreatePluginStart<TName, Options, PluginMetaData, FieldMetaData>;
830
1234
 
831
1235
  return start;
832
1236
  }